@specs-feup/alpakka
Version:
A Smali/APK source-to-source compiler written in Typescript
34 lines • 2.13 kB
TypeScript
import FlowNode from "./node/FlowNode.js";
import BaseGraph from "../graph/BaseGraph.js";
import { GraphBuilder, GraphTypeGuard } from "../graph/Graph.js";
import { IfComparison, IfComparisonWithZero, Instruction, LabelReference, MethodNode, Program, Statement } from "../../../../Joinpoints.js";
import InstructionNode from "./node/instruction/InstructionNode.js";
import FunctionEntryNode from "./node/instruction/FunctionEntryNode.js";
import FunctionExitNode from "./node/instruction/FunctionExitNode.js";
import IfComparisonNode from "./node/condition/IfComparisonNode.js";
import TryCatchNode from "./node/condition/TryCatchNode.js";
import CaseNode from "./node/condition/CaseNode.js";
declare namespace FlowGraph {
class Class<D extends Data = Data, S extends ScratchData = ScratchData> extends BaseGraph.Class<D, S> {
addFunction($jp: MethodNode, bodyHead: FlowNode.Class | undefined, bodyTail: InstructionNode.Class[]): [FunctionEntryNode.Class, FunctionExitNode.Class?];
addCondition($jp: IfComparison | IfComparisonWithZero, iftrue: FlowNode.Class, iffalse: FlowNode.Class): IfComparisonNode.Class;
addSwitchCase($jp: LabelReference, iftrue: FlowNode.Class, iffalse: FlowNode.Class): CaseNode.Class;
addTryCatch($jp: Instruction, iftrue: FlowNode.Class, iffalse: FlowNode.Class): TryCatchNode.Class;
getFunction(name: string): FunctionEntryNode.Class | undefined;
get functions(): FunctionEntryNode.Class[];
getNode($stmt: Statement | string): FlowNode.Class | undefined;
}
class Builder extends BaseGraph.Builder implements GraphBuilder<Data, ScratchData> {
buildData(data: BaseGraph.Data): Data;
buildScratchData(scratchData: BaseGraph.ScratchData): ScratchData;
}
const TypeGuard: GraphTypeGuard<Data, ScratchData>;
interface Data extends BaseGraph.Data {
functions: Map<string, string>;
}
interface ScratchData extends BaseGraph.Data {
}
function generate($jp: Program | MethodNode, graph?: BaseGraph.Class): FlowGraph.Class;
}
export default FlowGraph;
//# sourceMappingURL=FlowGraph.d.ts.map