import { Scene } from '../../Scene'; import { AbstractInvokeExpr } from '../../core/base/Expr'; import { Stmt } from '../../core/base/Stmt'; import { ArkClass } from '../../core/model/ArkClass'; import { ArkMethod } from '../../core/model/ArkMethod'; import { MethodSignature } from '../../core/model/ArkSignature'; import { IntWorkList } from '../../utils/IntWorkList'; import { NodeID } from '../../core/graph/BaseExplicitGraph'; import { CallGraph, FuncID, CallSite } from '../model/CallGraph'; import { CallGraphBuilder } from '../model/builder/CallGraphBuilder'; import { IPtsCollection } from '../pointerAnalysis/PtsDS'; export declare abstract class AbstractAnalysis { protected scene: Scene; protected cg: CallGraph; protected cgBuilder: CallGraphBuilder; protected workList: IntWorkList; protected processedMethod: IPtsCollection; private classHierarchyCache; /** Reused on cache miss to avoid per-call array / Set allocations. */ private hierarchyWorkList; private hierarchyScratch; private hierarchyVisited; constructor(s: Scene, cg: CallGraph); getScene(): Scene; getCallGraph(): CallGraph; protected abstract resolveCall(sourceMethod: NodeID, invokeStmt: Stmt): CallSite[]; protected abstract preProcessMethod(funcID: FuncID): CallSite[]; resolveInvokeExpr(invokeExpr: AbstractInvokeExpr): ArkMethod | undefined; getClassHierarchy(arkClass: ArkClass): ArkClass[]; start(displayGeneratedMethod: boolean): void; /** * Whole-project CG: scan every non-SDK method once (`isProject=true`, no call-edge enqueue). * `processedMethod` is initialized so RTA late callback edges (`emitCallbackEdge`) can query it * without going through `init()`, which would seed the entry worklist. */ projectStart(displayGeneratedMethod: boolean): void; protected processCallSite(method: FuncID, cs: CallSite, displayGeneratedMethod: boolean, isProject?: boolean): void; protected initProcessedMethod(): void; protected init(): void; protected processMethod(methodID: FuncID, displayGeneratedMethod: boolean, isProject?: boolean): void; protected getParamAnonymousMethod(invokeExpr: AbstractInvokeExpr): MethodSignature[]; protected addCallGraphEdge(caller: FuncID, callee: ArkMethod | null, cs: CallSite, displayGeneratedMethod: boolean): void; } //# sourceMappingURL=AbstractAnalysis.d.ts.map