00001 // Author: Markus Schordan 00002 // $Id: AstTraversal.h,v 1.3 2006/04/24 00:21:32 dquinlan Exp $ 00003 00004 #ifndef ASTTRAVERSAL_H 00005 #define ASTTRAVERSAL_H 00006 00007 00008 #include "TreeTraversal.h" 00009 //#include "sage3.h" 00010 00011 // WORK IN PROGRESS. DO NOT MODIFY OR THINK ABOUT IT. 00012 00013 // test new traversal classes 00014 // example class for tree traversal 00015 class AstPreOrderTraversal : public PreOrderTraversal<SgNode*> { 00016 protected: 00017 virtual void preOrderVisit(SgNode* node); 00018 virtual void setChildrenContainer(SgNode* node, std::vector<SgNode*>& c); 00019 }; 00020 00021 class AstPrePostOrderTraversal : public PrePostOrderTraversal<SgNode*> { 00022 protected: 00023 virtual void setChildrenContainer(SgNode* node, std::vector<SgNode*>& c); 00024 }; 00025 00035 class AstCycleTest : public AstPrePostOrderTraversal { 00036 public: 00039 std::list<SgNode*> determineCycle(std::list<SgNode*>& l, SgNode* node); 00040 std::list<SgNode*> activeNodes; 00041 virtual void preOrderVisit(SgNode* node); 00042 00045 virtual void setChildrenContainer(SgNode* node, std::vector<SgNode*>& c); 00046 virtual void postOrderVisit(SgNode* node); 00047 virtual void modifyChildrenContainer(SgNode* node, std::vector<SgNode*>& c) {} 00048 }; 00049 00050 #endif 00051
1.4.7