@specs-feup/kadabra
Version:
A Java source-to-source compiler written in Typescript
1,275 lines • 37.7 kB
TypeScript
import { LaraJoinPoint } from "@specs-feup/lara/api/LaraJoinPoint.js";
type PrivateMapper = {
"Joinpoint": typeof Joinpoint;
"NamedType": typeof NamedType;
"App": typeof App;
"Catch": typeof Catch;
"Declaration": typeof Declaration;
"Executable": typeof Executable;
"Expression": typeof Expression;
"Field": typeof Field;
"FileJp": typeof FileJp;
"LibClass": typeof LibClass;
"LibMethod": typeof LibMethod;
"Literal": typeof Literal;
"Method": typeof Method;
"New": typeof New;
"Reference": typeof Reference;
"SnippetExpr": typeof SnippetExpr;
"Statement": typeof Statement;
"Switch": typeof Switch;
"Ternary": typeof Ternary;
"This": typeof This;
"Throw": typeof Throw;
"Try": typeof Try;
"Type": typeof Type;
"TypeReference": typeof TypeReference;
"UnaryExpression": typeof UnaryExpression;
"Var": typeof Var;
"XmlNode": typeof XmlNode;
"AndroidManifest": typeof AndroidManifest;
"Annotation": typeof Annotation;
"AnonymousExec": typeof AnonymousExec;
"ArrayAccess": typeof ArrayAccess;
"Assert": typeof Assert;
"Assignment": typeof Assignment;
"BinaryExpression": typeof BinaryExpression;
"Body": typeof Body;
"Break": typeof Break;
"Call": typeof Call;
"CallStatement": typeof CallStatement;
"Case": typeof Case;
"Class": typeof Class;
"Comment": typeof Comment;
"Constructor": typeof Constructor;
"Continue": typeof Continue;
"Enum": typeof Enum;
"EnumValue": typeof EnumValue;
"FieldAccess": typeof FieldAccess;
"If": typeof If;
"InterfaceType": typeof InterfaceType;
"LocalVariable": typeof LocalVariable;
"Loop": typeof Loop;
"OpAssignment": typeof OpAssignment;
"Pragma": typeof Pragma;
"Return": typeof Return;
"SnippetStmt": typeof SnippetStmt;
"XmlElement": typeof XmlElement;
};
type DefaultAttributeMap = {
NamedType: "name";
App: "name";
Declaration: "name";
Executable: "name";
Expression: "exprType";
Field: "name";
FileJp: "name";
LibClass: "name";
LibMethod: "name";
Literal: "value";
Method: "name";
New: "name";
Reference: "name";
SnippetExpr: "exprType";
Statement: "kind";
Switch: "kind";
Ternary: "exprType";
This: "exprType";
Throw: "kind";
Try: "kind";
Type: "name";
TypeReference: "name";
UnaryExpression: "operator";
Var: "name";
Annotation: "exprType";
AnonymousExec: "name";
ArrayAccess: "name";
Assert: "kind";
Assignment: "operator";
BinaryExpression: "operator";
Body: "kind";
Break: "kind";
Call: "name";
CallStatement: "kind";
Case: "kind";
Class: "name";
Comment: "type";
Constructor: "name";
Continue: "kind";
Enum: "name";
EnumValue: "name";
FieldAccess: "name";
If: "kind";
InterfaceType: "name";
LocalVariable: "name";
Loop: "type";
OpAssignment: "operator";
Pragma: "name";
Return: "kind";
SnippetStmt: "kind";
XmlElement: "name";
};
export declare class Joinpoint extends LaraJoinPoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* An array of the annotations of this node
*/
get annotations(): Annotation[];
/**
* A string representation of the AST corresponding to this node
*/
get ast(): string;
/**
* Alias of attribute 'parent'
*/
get astParent(): Joinpoint;
/**
* Returns an array with the children of the node
*/
get children(): Joinpoint[];
/**
* The source code corresponding to this join point
*/
get code(): string;
get descendants(): Joinpoint[];
/**
* Unique identifier for node
*/
get id(): string;
/**
* True if this node is considered a block of statements
*/
get isBlock(): boolean;
/**
* True if this node has the modifier 'final'
*/
get isFinal(): boolean;
/**
* True if the node is inside a loop header, false otherwise
*/
get isInsideLoopHeader(): boolean;
/**
* True if this node is considered a statement
*/
get isStatement(): boolean;
/**
* True if this node has the modifier 'static'
*/
get isStatic(): boolean;
/**
* Sibling nodes to the left of this node
*/
get left(): Joinpoint[];
get line(): number;
set line(value: number | string);
/**
* An array of modifiers (e.g., final, static) applied to this node. If no modifiers are applied, or if the node does not support modifiers, returns an empty array
*/
get modifiers(): string[];
/**
* An array of modifiers (e.g., final, static) applied to this node. If no modifiers are applied, or if the node does not support modifiers, returns an empty array
*/
set modifiers(value: string[]);
/**
* Returns the number of children of the node
*/
get numChildren(): number;
get parent(): Joinpoint;
/**
* Sibling nodes to the right of this node
*/
get right(): Joinpoint[];
/**
* Alias for attribute 'code'
*/
get srcCode(): string;
/**
* Returns the child of the node at the given index
*/
child(index: number): Joinpoint;
getAncestor(type: string): Joinpoint;
/**
* True if this node has the given modifier
*/
hasModifier(modifier: string): boolean;
copy(): Joinpoint;
insertAfter(node: Joinpoint): Joinpoint;
insertAfter(code: string): Joinpoint;
insertBefore(node: Joinpoint): Joinpoint;
insertBefore(code: string): Joinpoint;
insertReplace(jp: Joinpoint): Joinpoint;
insertReplace(code: string): Joinpoint;
remove(): void;
removeAnnotation(annotation: Annotation): void;
removeModifier(modifier: string): void;
replaceWith(jp: Joinpoint): Joinpoint;
replaceWith(code: string): Joinpoint;
setLine(value: number): void;
setLine(value: string): void;
setModifiers(modifiers: string[]): void;
}
export declare class NamedType extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* List of names of interfaces that this type implements
*/
get interfaces(): string[];
get javadoc(): string;
/**
* The simple name of the type
*/
get name(): string;
/**
* Package name of this type
*/
get packageName(): string;
/**
* The qualified name of this type, includes packages
*/
get qualifiedName(): string;
/**
* Name of the superclass this type extends
*/
get superClass(): string;
/**
* Verify if the type is extends OR implements the given type
*/
isSubtypeOf(type: string): boolean;
}
/**
* Root node that represents the application
*/
export declare class App extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get files(): FileJp[];
get folder(): string;
get manifest(): AndroidManifest;
showAST(Title: string): string;
mapVersions(name: string, keyType: string, interfaceType: InterfaceType, methodName: string): Class;
newClass(name: string, extend: string, implement: string[]): Class;
newClass(name: string): Class;
newInterface(name: string, extend: string[]): InterfaceType;
newInterface(name: string): InterfaceType;
}
export declare class Catch extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get body(): Body;
}
export declare class Declaration extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get completeType(): string;
get init(): Expression;
set init(value: Expression);
get isArray(): boolean;
get isPrimitive(): boolean;
get name(): string;
get type(): string;
get typeReference(): TypeReference;
setInit(value: Expression): void;
}
export declare class Executable extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get body(): Body;
get name(): string;
set name(value: string);
get params(): Declaration[];
get returnRef(): TypeReference;
get returnType(): string;
/**
* Sets the name of this executable, returns the previous name
*/
setName(name: string): string;
}
export declare class Expression extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get kind(): string;
get qualifiedType(): string;
get test(): number;
set test(value: Expression | number);
get type(): string;
get typeReference(): TypeReference;
extract(varName: string, location: Statement, position: string): void;
setTest(test: Expression): void;
setTest(test: number): void;
}
export declare class Field extends Declaration {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get declarator(): string;
get staticAccess(): string;
}
/**
* Represents a source-code file
*/
export declare class FileJp extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get dir(): string;
/**
* Main class of the file. Java files must have a top level class with the same name as the file.
*/
get mainClass(): Type;
get name(): string;
get numClasses(): number;
get numInterfaces(): number;
get packageName(): string;
get path(): string;
/**
* Insert a given class inside the target
*/
addClass(newClass: Class): void;
addImport(qualifiedName: string): void;
addInterface(newInterface: InterfaceType): void;
mapVersions(name: string, keyType: string, interfaceType: InterfaceType, methodName: string): Class;
newClass(name: string, extend: string, implement: string[]): Class;
newClass(name: string): Class;
newInterface(name: string, extend: string[]): InterfaceType;
newInterface(name: string): InterfaceType;
removeInterface(interfaceName: string): InterfaceType;
}
/**
* Class that is part of a library, included in the classpath
*/
export declare class LibClass extends NamedType {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
/**
* Method of a class that is part of a library included in the classpath
*/
export declare class LibMethod extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get declarator(): NamedType;
/**
* The simple name of the type
*/
get name(): string;
get returnType(): string;
}
export declare class Literal extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get value(): string;
set value(value: string);
setValue(value: string): void;
}
export declare class Method extends Executable {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get declarator(): string;
get privacy(): string;
set privacy(value: string);
get toQualifiedReference(): string;
get toReference(): string;
isOverriding(method: Method): boolean;
addComment(comment: string): void;
addParameter(type: string, name: string): void;
clone(newName: string): Method;
createAdapter(adaptMethod: Method, name: string): Class;
setPrivacy(privacy: string): void;
}
export declare class New extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get arguments(): Expression[];
set arguments(value: Expression[]);
get name(): string;
setArguments(newArguments: Expression[]): void;
}
/**
* Points to a named program element reference
*/
export declare class Reference extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* The element that is being referenced
*/
get declaration(): Joinpoint;
/**
* Name of the element of the reference
*/
get name(): string;
/**
* Type of the element of the reference
*/
get type(): string;
}
export declare class SnippetExpr extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
setLine(line: number): void;
setLine(value: number): void;
setLine(value: string): void;
}
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 endLine(): number;
get kind(): string;
}
export declare class Switch extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get cases(): Case[];
}
export declare class Ternary extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* Alias for attribute 'condition'
*/
get cond(): Expression;
/**
* The condition of the ternary expression
*/
get condition(): Expression;
get else(): Expression;
get then(): Expression;
}
export declare class This extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class Throw extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class Try extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get body(): Body;
get catches(): Catch[];
}
/**
* Base join point that class, interface and enum extend
*/
export declare class Type extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* List of names of interfaces that this class implements
*/
get interfaces(): string[];
/**
* Returns the interface join points that this class implements
*/
get interfacesTypes(): InterfaceType[];
get javadoc(): string;
/**
* The simple name of the class
*/
get name(): string;
/**
* Package name of this class
*/
get packageName(): string;
/**
* The qualified name of this class, includes packages
*/
get qualifiedName(): string;
/**
* Name of the superclass this class extends
*/
get superClass(): string;
/**
* The superclass this class extends, or undefined if the class extends java.lang.Object
*/
get superClassJp(): TypeReference;
/**
* Verify if the type is extends OR implements the given type
*/
isSubtypeOf(type: string): boolean;
/**
* Insert a given class inside the target
*/
addClass(newClass: Class): void;
addImplement(interfaceType: InterfaceType): void;
addInterface(newInterface: InterfaceType): void;
insertCode(code: string): void;
insertMethod(code: string): void;
newField(modifiers: string[], type: string, name: string, defaultValue?: string): Field;
newField(modifiers: string[], type: string, name: string): Field;
/**
* Add a new method inside the class
*/
newMethod(modifiers: string[], returnType: string, name: string, paramLeft: string[], paramRight: string[], code: string): Method;
/**
* Overload which accepts 4 parameters (code is empty string)
*/
newMethod(modifiers: string[], returnType: string, name: string, paramLeft: string[], paramRight: string[]): Method;
removeInterface(interfaceName: string): InterfaceType;
}
/**
* Reference to a type
*/
export declare class TypeReference extends Reference {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* True if this is a reference to an array type, false otherwise
*/
get isArray(): boolean;
/**
* True if this is a reference to a boolean type, primitive or class (i.e., boolean, Boolean)
*/
get isBoolean(): boolean;
/**
* True if this is a reference to a numeric type, primitive or class (i.e., byte, Byte, char, Character, short, Short, int, Integer, long, Long, float, Float, double and Double)
*/
get isNumeric(): boolean;
/**
* True if this is a reference to a primitive type, false otherwise
*/
get isPrimitive(): boolean;
/**
* Package name of this type
*/
get packageName(): string;
/**
* The package name of this type as an array, where each element is a part of the package
*/
get packageNames(): string[];
/**
* Fully qualified name of the type
*/
get qualifiedName(): string;
}
export declare class UnaryExpression extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get operand(): Expression;
get operator(): string;
set operator(value: string);
/**
* Sets the operator of the unary expression. To distinguish between postfix and prefix operator, add an underscore signalling the place of the variable (e.g., _++ for postfix incremment). If no underscore is specified, postfix is assumed.
*/
setOperator(operator: string): void;
}
export declare class Var extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get declaration(): Joinpoint;
/**
* Equivalent to the global attribute 'isInsideLoopHeader'
*/
get inLoopHeader(): boolean;
get isArray(): boolean;
get isField(): boolean;
get isPrimitive(): boolean;
get name(): string;
get reference(): RefType;
/**
* The chain of references of this variable (e.g., this.field)
*/
get referenceChain(): Joinpoint[];
}
export declare class XmlNode extends Joinpoint {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get elements(): XmlElement[];
get text(): string;
set text(value: string);
elementsByName(name: string): XmlElement[];
setText(text: string): string;
}
export declare class AndroidManifest extends XmlNode {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get asJson(): string;
}
export declare class Annotation extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class AnonymousExec extends Executable {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class ArrayAccess extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get reference(): RefType;
}
export declare class Assert extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class Assignment extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get lhs(): Expression;
set lhs(value: Expression);
get operator(): string;
get rhs(): Expression;
set rhs(value: Expression);
setLhs(lhs: Expression): void;
setRhs(rhs: Expression): void;
}
export declare class BinaryExpression extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get lhs(): Expression;
get operands(): Expression[];
get operator(): string;
set operator(value: string);
get rhs(): Expression;
setOperator(operator: string): void;
}
export declare class Body extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* The last statement of the body, or undefined if it has no statements
*/
get lastStmt(): Statement;
insertBegin(code: string): void;
insertBegin(statement: Statement): void;
}
export declare class Break extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class Call extends Expression {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get arguments(): Expression[];
set arguments(value: Expression[]);
get decl(): Method;
get declarator(): string;
get executable(): string;
set executable(value: Method);
get name(): string;
get qualifiedDecl(): string;
get returnType(): string;
get returnTypeJp(): TypeReference;
get simpleDecl(): string;
get target(): string;
set target(value: Expression | string);
get targetType(): Type;
clone(location: Statement, position: string): Call;
setArgument(newArgument: Expression, index: number): void;
setArguments(newArguments: Expression[]): void;
setExecutable(executable: Method): Call;
setTarget(target?: Expression): Call;
setTarget(target?: string): Call;
}
export declare class CallStatement extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get call(): Call;
}
export declare class Case extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* The expression associated with this case, of undefined if it is the default case
*/
get expr(): Expression;
/**
* True if this is the default case, false otherwise
*/
get isDefault(): boolean;
/**
* The statements of this case
*/
get stmts(): Statement[];
}
/**
* Join point representation of a class
*/
export declare class Class extends Type {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get isTopLevel(): boolean;
extractInterface(name: string, packageName: string, method: Method, associate: boolean | undefined, newFile: boolean): InterfaceType;
insertStatic(code: string): void;
mapVersions(name: string, keyType: string, interfaceType: InterfaceType, methodName: string): Class;
newConstructor(modifiers?: string[], paramLeft?: string[], paramRight?: string[]): Constructor;
newFunctionalClass(interfaceMethod: Method, generatorMethod: Method): Method;
}
export declare class Comment extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get content(): string;
get type(): CommentType;
}
export declare class Constructor extends Executable {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get declarator(): string;
}
export declare class Continue extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class Enum extends Class {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class EnumValue extends Field {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class FieldAccess extends Var {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* The base expression of this fieldAccess. E.g., for the field access a.b.c, returns the expression representing a.b
*/
get base(): Expression;
}
export declare class If extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get cond(): Expression;
get else(): Body;
get rank(): string;
get then(): Body;
}
export declare class InterfaceType extends Type {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class LocalVariable extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get completeType(): string;
/**
* Initialization of this variable, if present, or undefined of unintialized
*/
get init(): Expression;
/**
* Initialization of this variable, if present, or undefined of unintialized
*/
set init(value: Expression);
get isArray(): boolean;
get isPrimitive(): boolean;
get name(): string;
get type(): string;
get typeReference(): TypeReference;
setInit(init: Expression): void;
}
export declare class Loop extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get cond(): Expression;
get controlVar(): string;
get isInnermost(): boolean;
get isOutermost(): boolean;
get nestedLevel(): number;
get rank(): string;
get type(): LoopType;
interchange(loop2: Loop): void;
tile(tileName: string, block: string, unique: boolean, around?: Joinpoint): Field;
tile(block: number): void;
}
export declare class OpAssignment extends Assignment {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
setOperator(operator: string): void;
}
export declare class Pragma extends Comment {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
get name(): string;
}
export declare class Return extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
}
export declare class SnippetStmt extends Statement {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
setLine(line: number): void;
setLine(value: number): void;
setLine(value: string): void;
}
export declare class XmlElement extends XmlNode {
/**
* @internal
*/
static readonly _defaultAttributeInfo: {
readonly map?: DefaultAttributeMap;
readonly name: string | null;
readonly type?: PrivateMapper;
readonly jpMapper?: typeof JoinpointMapper;
};
/**
* A list of available attributes in this element
*/
get attributeNames(): string[];
/**
* The name (i.e., tag) of this element
*/
get name(): string;
/**
* The value associated with the given attribute
*/
attribute(name: string): string;
setAttribute(name: string, value: string): string;
}
export declare enum LoopType {
DOWHILE = "dowhile",
FOR = "for",
FOREACH = "foreach",
WHILE = "while"
}
export declare enum CommentType {
BLOCK = "block",
FILE = "file",
INLINE = "inline",
JAVADOC = "javadoc",
PRAGMA = "pragma"
}
export declare enum RefType {
DECL = "decl",
READ = "read",
READWRITE = "readwrite",
WRITE = "write"
}
declare const JoinpointMapper: {
joinpoint: typeof Joinpoint;
NamedType: typeof NamedType;
app: typeof App;
catch: typeof Catch;
declaration: typeof Declaration;
executable: typeof Executable;
expression: typeof Expression;
field: typeof Field;
file: typeof FileJp;
libClass: typeof LibClass;
libMethod: typeof LibMethod;
literal: typeof Literal;
method: typeof Method;
new: typeof New;
reference: typeof Reference;
snippetExpr: typeof SnippetExpr;
statement: typeof Statement;
switch: typeof Switch;
ternary: typeof Ternary;
this: typeof This;
throw: typeof Throw;
try: typeof Try;
type: typeof Type;
typeReference: typeof TypeReference;
unaryExpression: typeof UnaryExpression;
var: typeof Var;
xmlNode: typeof XmlNode;
androidManifest: typeof AndroidManifest;
annotation: typeof Annotation;
anonymousExec: typeof AnonymousExec;
arrayAccess: typeof ArrayAccess;
assert: typeof Assert;
assignment: typeof Assignment;
binaryExpression: typeof BinaryExpression;
body: typeof Body;
break: typeof Break;
call: typeof Call;
callStatement: typeof CallStatement;
case: typeof Case;
class: typeof Class;
comment: typeof Comment;
constructor: typeof Constructor;
continue: typeof Continue;
enum: typeof Enum;
enumValue: typeof EnumValue;
fieldAccess: typeof FieldAccess;
if: typeof If;
interfaceType: typeof InterfaceType;
localVariable: typeof LocalVariable;
loop: typeof Loop;
opAssignment: typeof OpAssignment;
pragma: typeof Pragma;
return: typeof Return;
snippetStmt: typeof SnippetStmt;
xmlElement: typeof XmlElement;
};
export {};
//# sourceMappingURL=Joinpoints.d.ts.map