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();
105 for (; EI != EE; ++EI)
124 for (; EI != EE; ++EI)
144 newItem.setCurNodeID(edge->getDstID());
150 newItem.setCurNodeID(edge->getSrcID());
void setGraph(GraphType g)
DPIm popFromWorklist()
Worklist operations.
virtual ~GraphReachSolver()
Destructor.
virtual void FWProcessOutgoingEdge(const DPIm &item, GEDGE *edge)
Propagation for the solving, to be implemented in the child class.
InvGTraits::ChildIteratorType inv_child_iterator
bool isInWorklist(DPIm &item)
FIFOWorkList< CxtDPItem > WorkList
GTraits::nodes_iterator node_iterator
bool pushIntoWorklist(DPIm &item)
virtual void BWProcessCurNode(const DPIm &)
virtual void FWProcessCurNode(const DPIm &)
Process the DP item.
SVF::GenericGraphTraits< SVFG * > GTraits
GraphReachSolver()
Constructor.
virtual NodeID getNodeIDFromItem(const DPIm &item) const
virtual void backwardTraverse(DPIm &it)
CFL forward traverse solve.
const GraphType graph() const
Get/Set graph methods.
virtual void BWProcessIncomingEdge(const DPIm &item, GEDGE *edge)
GNODE * getNode(NodeID id) const
virtual void forwardTraverse(DPIm &it)
CFL forward traverse solve.
GTraits::ChildIteratorType child_iterator
SVF::GenericGraphTraits< SVF::Inverse< GNODE * > > InvGTraits