MemRefExprVisitor.hpp

Go to the documentation of this file.
00001 
00015 #ifndef MemRefExprVisitor_H
00016 #define MemRefExprVisitor_H
00017 
00018 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp>
00019 
00020 namespace OA {
00021 
00022 //--------------------------------------------------------------------
00040 class MemRefExprVisitor {
00041 protected:
00042   MemRefExprVisitor() {}
00043 public:
00044   virtual ~MemRefExprVisitor() {}
00045 
00046   //---------------------------------------
00047   // methods for each MemRefExpr subclasses
00048   //---------------------------------------
00049   
00050   virtual void visitNamedRef(NamedRef& ref) = 0;
00051   virtual void visitUnnamedRef(UnnamedRef& ref) = 0;
00052   virtual void visitUnknownRef(UnknownRef& ref) = 0;
00053 
00054   // should never have a RefOp instance and will never have more
00055   // direct subclasses for RefOp
00056   //virtual void visitRefOp(RefOp& ref) = 0;
00057 
00058   virtual void visitAddressOf(AddressOf& ref) = 0;
00059   virtual void visitDeref(Deref& ref) = 0;
00060 
00061   // default SubSetRef base class so that visitors can handle 
00062   // SubSetRef sub-classes added later in a generic fasion
00063   // and direct instances of SubSetRef
00064   virtual void visitSubSetRef(SubSetRef& ref) = 0;
00065 
00066   // each subclass of SubSetRef should call visitSubSetRef
00067   // as default
00068   virtual void visitIdxAccess(IdxAccess& ref) 
00069     { visitSubSetRef(ref); }
00070   virtual void visitIdxExprAccess(IdxExprAccess& ref) 
00071     { visitSubSetRef(ref); }
00072   virtual void visitFieldAccess(FieldAccess& ref) 
00073     { visitSubSetRef(ref); }
00074 };
00075 
00076 
00077 } // end of OA namespace
00078 
00079 #endif

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