ROSE
0.9.6a
|
AstCycleTest is based on the successor information of SgNodes (the same information that is used by the traversals). More...
#include <AstTraversal.h>
Public Member 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. More... | |
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. More... | |
virtual void | postOrderVisit (SgNode *node) |
virtual void | modifyChildrenContainer (SgNode *node, std::vector< SgNode * > &c) |
Public Attributes | |
std::list< SgNode * > | activeNodes |
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.
Definition at line 35 of file AstTraversal.h.
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 |
|
virtual |
In case of a cycle the traversal does not continue to prevent an infinite recursion of the traversal.
Reimplemented from AstPrePostOrderTraversal.
|
virtual |
|
inlinevirtual |
Definition at line 47 of file AstTraversal.h.
std::list<SgNode*> AstCycleTest::activeNodes |
Definition at line 40 of file AstTraversal.h.