com.ibm.wala.dataflow.graph
Interface ITransferFunctionProvider<T,V extends IVariable>

Type Parameters:
T - type of node in the graph
V - type of abstract states computed

public interface ITransferFunctionProvider<T,V extends IVariable>

The DataflowSolver builds system over graphs, with dataflow transfer functions on the nodes, the edges or both. In any case, it takes an ITransferFunctionProvider to tell it what functions to use.


Method Summary
 UnaryOperator<V> getEdgeTransferFunction(T src, T dst)
           
 AbstractMeetOperator<V> getMeetOperator()
          TODO: perhaps this should go with a Lattice object instead.
 UnaryOperator<V> getNodeTransferFunction(T node)
           
 boolean hasEdgeTransferFunctions()
           
 boolean hasNodeTransferFunctions()
           
 

Method Detail

getNodeTransferFunction

UnaryOperator<V> getNodeTransferFunction(T node)
Returns:
the transfer function from IN_node -> OUT_node

hasNodeTransferFunctions

boolean hasNodeTransferFunctions()
Returns:
true if this provider provides node transfer functions

getEdgeTransferFunction

UnaryOperator<V> getEdgeTransferFunction(T src,
                                         T dst)
Returns:
the transfer function from OUT_src -> EDGE_

hasEdgeTransferFunctions

boolean hasEdgeTransferFunctions()
Returns:
true if this provider provides edge transfer functions

getMeetOperator

AbstractMeetOperator<V> getMeetOperator()
TODO: perhaps this should go with a Lattice object instead. TODO: provide an API to allow composition of the meet operator with the flow operator for a given block, as an optimization?