@specs-feup/alpakka
Version:
A Smali/APK source-to-source compiler written in Typescript
725 lines • 19.6 kB
TypeScript
import { LaraJoinPoint } from "@specs-feup/lara/api/LaraJoinPoint.js";
type PrivateMapper = {
"Joinpoint": typeof Joinpoint;
"ClassNode": typeof ClassNode;
"Expression": typeof Expression;
"FieldNode": typeof FieldNode;
"FieldReference": typeof FieldReference;
"LabelReference": typeof LabelReference;
"Literal": typeof Literal;
"Manifest": typeof Manifest;
"MethodNode": typeof MethodNode;
"MethodPrototype": typeof MethodPrototype;
"MethodReference": typeof MethodReference;
"Placeholder": typeof Placeholder;
"PrimitiveLiteral": typeof PrimitiveLiteral;
"Program": typeof Program;
"RegisterList": typeof RegisterList;
"RegisterRange": typeof RegisterRange;
"RegisterReference": typeof RegisterReference;
"ResourceNode": typeof ResourceNode;
"SparseSwitchElement": typeof SparseSwitchElement;
"Statement": typeof Statement;
"TypeDescriptor": typeof TypeDescriptor;
"ArrayType": typeof ArrayType;
"Catch": typeof Catch;
"ClassType": typeof ClassType;
"Instruction": typeof Instruction;
"Label": typeof Label;
"LineDirective": typeof LineDirective;
"PackedSwitch": typeof PackedSwitch;
"PrimitiveType": typeof PrimitiveType;
"RegistersDirective": typeof RegistersDirective;
"ReturnStatement": typeof ReturnStatement;
"SparseSwitch": typeof SparseSwitch;
"Switch": typeof Switch;
"ThrowStatement": typeof ThrowStatement;
"Goto": typeof Goto;
"IfComparison": typeof IfComparison;
"IfComparisonWithZero": typeof IfComparisonWithZero;
};
type DefaultAttributeMap = {};
export declare class Joinpoint extends LaraJoinPoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* String representation of the ast
*/
get ast(): string;
/**
* Returns an array with the children of the node, ignoring null nodes
*/
get children(): Joinpoint[];
/**
* String with the code represented by this node
*/
get code(): string;
/**
* Retrieves all descendants of the join point
*/
get descendants(): Joinpoint[];
/**
* The id of the node
*/
get id(): string;
/**
* Returns the parent node in the AST, or undefined if it is the root node
*/
get parent(): Joinpoint;
/**
* Returns the 'program' joinpoint
*/
get root(): Program;
/**
* Looks for an ancestor joinpoint name, walking back on the AST
*/
getAncestor(type: string): Joinpoint;
/**
* Returns the child of the node at the given index, ignoring null nodes
*/
getChild(index: number): Joinpoint;
/**
* Retrieves the descendants of the given type
*/
getDescendants(type: string): Joinpoint[];
/**
* Retrieves the descendants of the given type, including the node itself
*/
getDescendantsAndSelf(type: string): Joinpoint[];
/**
* Removes the node associated to this joinpoint from the AST
*/
detach(): Joinpoint;
/**
* Inserts the given join point after this join point
*/
insertAfter(node: Joinpoint): Joinpoint;
/**
* Overload which accepts a string
*/
insertAfter(code: string): Joinpoint;
/**
* Inserts the given join point before this join point
*/
insertBefore(node: Joinpoint): Joinpoint;
/**
* Overload which accepts a string
*/
insertBefore(node: string): Joinpoint;
/**
* Replaces this node with the given node
*/
replaceWith(node: Joinpoint): Joinpoint;
/**
* Overload which accepts a string
*/
replaceWith(node: string): Joinpoint;
/**
* Overload which accepts a list of join points
*/
replaceWith(node: Joinpoint[]): Joinpoint;
/**
* Overload which accepts a list of strings
*/
replaceWithStrings(node: string[]): Joinpoint;
}
/**
* Class definition
*/
export declare class ClassNode extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get classDescriptor(): ClassType;
get fields(): FieldNode[];
get methods(): MethodNode[];
get superClassDescriptor(): ClassType;
}
/**
* Expression
*/
export declare class Expression extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Field definition
*/
export declare class FieldNode extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get isStatic(): boolean;
get name(): string;
get referenceName(): string;
}
/**
* Field reference
*/
export declare class FieldReference extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Label reference
*/
export declare class LabelReference extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get decl(): Label;
}
/**
* Literal
*/
export declare class Literal extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* The application's manifest
*/
export declare class Manifest extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get activities(): string[];
get packageName(): string;
get services(): string[];
}
/**
* Method definition
*/
export declare class MethodNode extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get isStatic(): boolean;
get name(): string;
get prototype(): MethodPrototype;
get referenceName(): string;
get registersDirective(): RegistersDirective;
}
/**
* Method prototype
*/
export declare class MethodPrototype extends Literal {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get parameters(): TypeDescriptor[];
get returnType(): TypeDescriptor;
}
/**
* Method reference
*/
export declare class MethodReference extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get name(): string;
get parentClassDescriptor(): TypeDescriptor;
get prototype(): MethodPrototype;
}
/**
* Placeholder node
*/
export declare class Placeholder extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get kind(): string;
}
/**
* Primitive literal
*/
export declare class PrimitiveLiteral extends Literal {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
setValue(value: string): string;
}
/**
* App node
*/
export declare class Program extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get classes(): ClassNode[];
get manifest(): Manifest;
buildApk(outputName: string): void;
}
/**
* Register list
*/
export declare class RegisterList extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Register range
*/
export declare class RegisterRange extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Register reference
*/
export declare class RegisterReference extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Resource nodes, like xml files are not being handled for now
*/
export declare class ResourceNode extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Sparse switch element
*/
export declare class SparseSwitchElement extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get label(): LabelReference;
}
/**
* Statement
*/
export declare class Statement extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get line(): LineDirective;
get nextStatement(): Statement;
get prevStatement(): Statement;
}
/**
* Type descriptor
*/
export declare class TypeDescriptor extends Literal {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Array descriptor
*/
export declare class ArrayType extends TypeDescriptor {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Catch directive
*/
export declare class Catch extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get catch(): LabelReference;
get exception(): TypeDescriptor;
get tryEnd(): LabelReference;
get tryStart(): LabelReference;
}
/**
* Class descriptor
*/
export declare class ClassType extends TypeDescriptor {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get className(): string;
get decl(): ClassNode;
get packageName(): string;
}
/**
* Instruction
*/
export declare class Instruction extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get canThrow(): boolean;
get opCodeName(): string;
get setsRegister(): boolean;
get setsResult(): boolean;
}
/**
* Label declaration
*/
export declare class Label extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get name(): string;
}
/**
* Line directive
*/
export declare class LineDirective extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get value(): Literal;
}
/**
* Packed switch directive
*/
export declare class PackedSwitch extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Primitive descriptor
*/
export declare class PrimitiveType extends TypeDescriptor {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Registers directive
*/
export declare class RegistersDirective extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get type(): string;
get value(): PrimitiveLiteral;
}
/**
* Smali instruction formats 10x, 11x
*/
export declare class ReturnStatement extends Instruction {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Sparse switch directive
*/
export declare class SparseSwitch extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Smali instruction format 31t
*/
export declare class Switch extends Instruction {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Smali instruction format 11x
*/
export declare class ThrowStatement extends Instruction {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Smali instruction formats 10t, 20t, 30t
*/
export declare class Goto extends Instruction {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get label(): LabelReference;
}
/**
* Smali instruction format 22t
*/
export declare class IfComparison extends Instruction {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get label(): LabelReference;
}
/**
* Smali instruction format 21t
*/
export declare class IfComparisonWithZero extends Instruction {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get label(): LabelReference;
}
declare const JoinpointMapper: {
joinpoint: typeof Joinpoint;
classNode: typeof ClassNode;
expression: typeof Expression;
fieldNode: typeof FieldNode;
fieldReference: typeof FieldReference;
labelReference: typeof LabelReference;
literal: typeof Literal;
manifest: typeof Manifest;
methodNode: typeof MethodNode;
methodPrototype: typeof MethodPrototype;
methodReference: typeof MethodReference;
placeholder: typeof Placeholder;
primitiveLiteral: typeof PrimitiveLiteral;
program: typeof Program;
registerList: typeof RegisterList;
registerRange: typeof RegisterRange;
registerReference: typeof RegisterReference;
resourceNode: typeof ResourceNode;
sparseSwitchElement: typeof SparseSwitchElement;
statement: typeof Statement;
typeDescriptor: typeof TypeDescriptor;
arrayType: typeof ArrayType;
catch: typeof Catch;
classType: typeof ClassType;
instruction: typeof Instruction;
label: typeof Label;
lineDirective: typeof LineDirective;
packedSwitch: typeof PackedSwitch;
primitiveType: typeof PrimitiveType;
registersDirective: typeof RegistersDirective;
returnStatement: typeof ReturnStatement;
sparseSwitch: typeof SparseSwitch;
switch: typeof Switch;
throwStatement: typeof ThrowStatement;
goto: typeof Goto;
ifComparison: typeof IfComparison;
ifComparisonWithZero: typeof IfComparisonWithZero;
};
export {};
//# sourceMappingURL=Joinpoints.d.ts.map