public abstract class ResolverTemplate<Field,Fact,Stmt,Method,Incoming> extends Resolver<Field,Fact,Stmt,Method>
Modifier and Type | Field and Description |
---|---|
protected Debugger<Field,Fact,Stmt,Method> |
debugger |
protected java.util.Set<Incoming> |
incomingEdges |
protected AccessPath<Field> |
resolvedAccessPath |
Constructor and Description |
---|
ResolverTemplate(PerAccessPathMethodAnalyzer<Field,Fact,Stmt,Method> analyzer,
AccessPath<Field> resolvedAccessPath,
ResolverTemplate<Field,Fact,Stmt,Method,Incoming> parent,
Debugger<Field,Fact,Stmt,Method> debugger) |
Modifier and Type | Method and Description |
---|---|
void |
addIncoming(Incoming inc) |
protected abstract ResolverTemplate<Field,Fact,Stmt,Method,Incoming> |
createNestedResolver(AccessPath<Field> newAccPath) |
protected abstract AccessPath<Field> |
getAccessPathOf(Incoming inc) |
protected ResolverTemplate<Field,Fact,Stmt,Method,Incoming> |
getOrCreateNestedResolver(AccessPath<Field> newAccPath) |
protected boolean |
isLocked() |
protected void |
lock() |
protected abstract void |
processIncomingGuaranteedPrefix(Incoming inc) |
protected abstract void |
processIncomingPotentialPrefix(Incoming inc) |
void |
resolve(FlowFunction.Constraint<Field> constraint,
InterestCallback<Field,Fact,Stmt,Method> callback) |
protected void |
unlock() |
canBeResolvedEmpty, interest, isInterestGiven, log, registerCallback
protected java.util.Set<Incoming> incomingEdges
protected AccessPath<Field> resolvedAccessPath
protected boolean isLocked()
protected void lock()
protected void unlock()
protected abstract AccessPath<Field> getAccessPathOf(Incoming inc)
public void addIncoming(Incoming inc)
protected abstract void processIncomingPotentialPrefix(Incoming inc)
protected abstract void processIncomingGuaranteedPrefix(Incoming inc)
public void resolve(FlowFunction.Constraint<Field> constraint, InterestCallback<Field,Fact,Stmt,Method> callback)
protected ResolverTemplate<Field,Fact,Stmt,Method,Incoming> getOrCreateNestedResolver(AccessPath<Field> newAccPath)
protected abstract ResolverTemplate<Field,Fact,Stmt,Method,Incoming> createNestedResolver(AccessPath<Field> newAccPath)