Program Listing for File AstTraversal.h

Program Listing for File AstTraversal.h#

Return to documentation for file (src/midend/astProcessing/AstTraversal.h)

// Author: Markus Schordan
// $Id: AstTraversal.h,v 1.3 2006/04/24 00:21:32 dquinlan Exp $

#ifndef ASTTRAVERSAL_H
#define ASTTRAVERSAL_H

#include "TreeTraversal.h"
//#include "sage3.h"

// WORK IN PROGRESS. DO NOT MODIFY OR THINK ABOUT IT.

// test new traversal classes
// example class for tree traversal
class AstPreOrderTraversal : public PreOrderTraversal<SgNode*> {
protected:
  virtual void preOrderVisit(SgNode* node);
  virtual void setChildrenContainer(SgNode* node, std::vector<SgNode*>& c);
};

class AstPrePostOrderTraversal : public PrePostOrderTraversal<SgNode*> {
protected:
  virtual void setChildrenContainer(SgNode* node, std::vector<SgNode*>& c);
};

class AstCycleTest : public AstPrePostOrderTraversal {
public:
  std::list<SgNode*> determineCycle(std::list<SgNode*>& l, SgNode* node);
  std::list<SgNode*> activeNodes;
  virtual void preOrderVisit(SgNode* node);

  virtual void setChildrenContainer(SgNode* node, std::vector<SgNode*>& c);
  virtual void postOrderVisit(SgNode* node);
  virtual void modifyChildrenContainer(SgNode* node, std::vector<SgNode*>& c) {}
};

#endif