EvalToMemRefVisitor.hpp

Go to the documentation of this file.
00001 
00016 #ifndef EvalToMemRefVisitor_H
00017 #define EvalToMemRefVisitor_H
00018 
00019 #include <OpenAnalysis/ExprTree/ExprTreeVisitor.hpp>
00020 
00021 namespace OA {
00022 
00023 //--------------------------------------------------------------------
00026 class EvalToMemRefVisitor : public ExprTreeVisitor {
00027 public:
00028   EvalToMemRefVisitor() : mIsMemRef(false) {}
00029   ~EvalToMemRefVisitor() {}
00030 
00031   void visitExprTreeBefore(ExprTree&) { }
00032   void visitExprTreeAfter(ExprTree&) { }
00033 
00034   //---------------------------------------
00035   // method for each ExprTree::Node subclass
00036   //---------------------------------------
00037   // default base class so that visitors can handle unknown
00038   // node sub-classes in a generic fashion
00039   void visitNode(ExprTree::Node&) { mIsMemRef = false; }
00040 
00041   void visitOpNode(ExprTree::OpNode& n) { mIsMemRef = false; }
00042   void visitCallNode(ExprTree::CallNode& n)  { mIsMemRef = false; }
00043   void visitMemRefNode(ExprTree::MemRefNode& n) 
00044     { mIsMemRef = true; mMemRef = n.getHandle(); }
00045   void visitConstSymNode(ExprTree::ConstSymNode& n) { mIsMemRef = false; }
00046   void visitConstValNode(ExprTree::ConstValNode& n) { mIsMemRef = false; }
00047 
00049   bool isMemRef() { return mIsMemRef; }
00050   MemRefHandle getMemRef() { return mMemRef; }
00051 
00052 private:
00053   bool mIsMemRef;
00054   MemRefHandle mMemRef;
00055 };
00056 
00057 
00058 } // end of OA namespace
00059 
00060 #endif

Generated on Sat Oct 31 05:21:21 2009 for OpenAnalysis by  doxygen 1.6.1