Class AstCycleTest#
Defined in File AstTraversal.h
Inheritance Relationships#
Base Type#
public AstPrePostOrderTraversal(Class AstPrePostOrderTraversal)
Class Documentation#
-
class AstCycleTest : public AstPrePostOrderTraversal#
AstCycleTest is based on the successor information of SgNodes (the same information that is used by the traversals). It tests such that it allows a preorder traversal to revisit nodes but reports an error if the traversal would run into a cycle. If a cycle is found it reports the list of SgNodes that are part of the cycle to stdout, starting with “CYCLE FOUND: …” and stops testing. Usage: AstCycleTest t; t.traverse(SgNode* n); // where n is the root node of the subtree to be tested.
Public Functions
-
std::list<SgNode*> determineCycle(std::list<SgNode*> &l, SgNode *node)#
determines whether the given sequence l of nodes extended by node creates a cycle the found cycle is returned. If no cycle is found, the returned list is empty.
-
virtual void preOrderVisit(SgNode *node)#
-
virtual void setChildrenContainer(SgNode *node, std::vector<SgNode*> &c)#
In case of a cycle the traversal does not continue to prevent an infinite recursion of the traversal.
-
virtual void postOrderVisit(SgNode *node)#
-
inline virtual void modifyChildrenContainer(SgNode *node, std::vector<SgNode*> &c)#
Public Members
-
std::list<SgNode*> activeNodes#
-
std::list<SgNode*> determineCycle(std::list<SgNode*> &l, SgNode *node)#