| 
    ROSE 0.11.145.357
    
   | 
 
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.
#include <midend/astProcessing/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.   | |
| 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) | 
| virtual void | modifyChildrenContainer (SgNode *, std::vector< SgNode * > &) | 
Public Attributes | |
| std::list< SgNode * > | activeNodes | 
Additional Inherited Members | 
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 | 
In case of a cycle the traversal does not continue to prevent an infinite recursion of the traversal.
Reimplemented from AstPrePostOrderTraversal.
      
  | 
  inlinevirtual | 
Definition at line 47 of file AstTraversal.h.
| std::list<SgNode*> AstCycleTest::activeNodes | 
Definition at line 40 of file AstTraversal.h.