package accrue.analysis.pointer;

import java.util.List;
import java.util.Map;

import polyglot.types.CodeInstance;
import polyglot.types.ProcedureInstance;
import polyglot.types.SemanticException;
import polyglot.types.Type;
import polyglot.util.Position;
import accrue.analysis.pointer.PointsToEngine.StmtAndContext;
import accrue.analysis.pointer.StmtProcedureCall.ExceptionHandlerPointsToGraphNode;
import accrue.analysis.pointer.analyses.HeapAbstractionFactory;

public abstract class LibraryPointsToSignature {

    public abstract boolean process(CodeInstance caller,
            CContext callerContext, CallSiteNode callSiteNode,
            ProcedureInstance mi, List<ReferenceVariableReplica> args,
            HContext receiver, ReferenceVariableReplica result,
            List<ExceptionHandlerPointsToGraphNode> handlers,
            Map<Type, ReferenceVariableReplica> procThrows,
            StmtRegistrar stmtRegistrar, PointsToGraph g, Position origin,
            HeapAbstractionFactory af, StmtAndContext sac)
            throws SemanticException;
}
