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
1.6.1