43template<
class GraphType>
51 typedef typename GTraits::EdgeType
GEDGE;
101 while (!nodeStack.empty())
103 NodeID nodeId = nodeStack.top();
132 for (; EI != EE; ++EI)
180 return GTraits::getNode(
_graph,
id);
186 return GTraits::getNodeID(node);
NodeID repNode(NodeID n) const
get the rep node if not found return itself
GNodeStack & topoNodeStack()
NodeID Node_Index(GNODE node)
Get node ID.
bool isInWorklist(NodeID id)
SCCDetection< ConstraintGraph * > SCC
std::unique_ptr< SCC > scc
NodeID popFromWorklist()
Worklist operations.
GNODE * Node(NodeID id)
Get node on the graph.
SCC * getSCCDetector() const
Get SCC detector.
virtual NodeID sccRepNode(NodeID id) const
virtual void pushIntoWorklist(NodeID id)
GTraits::ChildIteratorType child_iterator
virtual void propagate(GNODE *v)
FIFOWorkList< NodeID > WorkList
SVF::GenericGraphTraits< ConstraintGraph * > GTraits
virtual NodeStack & SCCDetect(NodeSet &candidates)
virtual void initWorklist()
virtual void collapseFields()
collapse positive weight cycles of a graph
virtual bool propFromSrcToDst(GEDGE *)
Propagate information from source to destination node, to be implemented in the child class.
virtual ~WPASolver()=default
Destructor.
void setGraph(GraphType g)
virtual NodeStack & SCCDetect()
SCC detection.
u32_t iterationForPrintStat
virtual void processNode(NodeID)
Following methods are to be implemented in child class, in order to achieve a fully worked PTA.
const GraphType graph()
Get/Set graph methods.
virtual void solveWorklist()
std::stack< NodeID > NodeStack
typename GraphType::UnknownGraphTypeError NodeRef