43template<
class GraphType,
class DPIm = DPItem>
50 typedef typename GTraits::NodeType
GNODE;
51 typedef typename GTraits::EdgeType
GEDGE;
74 const inline GraphType
graph()
const
86 return _graph->getGNode(
id);
90 return item.getCurNodeID();
GTraits::nodes_iterator node_iterator
GNODE * getNode(NodeID id) const
FIFOWorkList< DPIm > WorkList
Define worklist.
bool isInWorklist(DPIm &item)
virtual ~SrcSnkSolver()
Destructor.
bool pushIntoWorklist(DPIm &item)
virtual void BWProcessCurNode(const DPIm &)
void setGraph(GraphType g)
GTraits::ChildIteratorType child_iterator
SVF::GenericGraphTraits< SVF::Inverse< GNODE * > > InvGTraits
Define inverse GTraits and note iterator.
SrcSnkSolver()
Constructor.
virtual void backwardTraverse(DPIm &it)
CFL forward traverse solve.
virtual void BWProcessIncomingEdge(const DPIm &item, GEDGE *edge)
virtual void FWProcessOutgoingEdge(const DPIm &item, GEDGE *edge)
Propagation for the solving, to be implemented in the child class.
SVF::GenericGraphTraits< GraphType > GTraits
Define the GTraits and node iterator.
DPIm popFromWorklist()
Worklist operations.
virtual void forwardTraverse(DPIm &it)
CFL forward traverse solve.
virtual void FWProcessCurNode(const DPIm &)
Process the DP item.
virtual NodeID getNodeIDFromItem(const DPIm &item) const
InvGTraits::ChildIteratorType inv_child_iterator
const GraphType graph() const
Get/Set graph methods.
WorkList worklist
Worklist for resolution.
llvm::IRBuilder IRBuilder