ReachConstsIRInterface.hpp

Go to the documentation of this file.
00001 
00021 #ifndef ReachConstsIRInterface_h
00022 #define ReachConstsIRInterface_h
00023 
00024 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00025 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00026 #include <OpenAnalysis/ExprTree/ExprTree.hpp>
00027 #include <OpenAnalysis/IRInterface/ConstValBasicInterface.hpp>
00028 #include <OpenAnalysis/IRInterface/EvalToConstVisitorIRInterface.hpp>
00029 //#include <OpenAnalysis/IRInterface/ExprStmtPairIterator.hpp>
00030 #include <OpenAnalysis/IRInterface/AssignPairIterator.hpp>
00031 #include <OpenAnalysis/IRInterface/CalleeToCallerVisitorIRInterface.hpp>
00032 
00033 namespace OA {
00034   namespace ReachConsts {
00035 
00041 class ReachConstsIRInterface : public virtual IRHandlesIRInterface,
00042                     public virtual EvalToConstVisitorIRInterface,
00043                     public virtual DataFlow::CalleeToCallerVisitorIRInterface
00044 {
00045  public:
00046   ReachConstsIRInterface() { }
00047   virtual ~ReachConstsIRInterface() { }
00048 
00051   virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 
00052 
00054   //virtual std::string toString(const StmtHandle h) = 0;
00055 
00057   //virtual std::string toString(const MemRefHandle h) = 0;
00058 
00061   virtual OA_ptr<MemRefHandleIterator> getAllMemRefs(StmtHandle stmt) = 0;
00062   
00065   virtual OA_ptr<MemRefHandleIterator> getDefMemRefs(StmtHandle stmt) = 0;
00066 
00069   virtual OA_ptr<MemRefHandleIterator> getUseMemRefs(StmtHandle stmt) = 0;
00070   
00074   virtual OA_ptr<AssignPairIterator> 
00075       getAssignPairIterator(StmtHandle h) = 0; 
00076   
00080   virtual OA_ptr<ConstValBasicInterface> 
00081       evalOp(OpHandle op, OA_ptr<ConstValBasicInterface> operand1, 
00082                           OA_ptr<ConstValBasicInterface> operand2) = 0;
00083   
00086   virtual OA_ptr<ConstValBasicInterface> getConstValBasic(ConstSymHandle c) = 0;
00087 
00090   virtual OA_ptr<ConstValBasicInterface> getConstValBasic(ConstValHandle c) = 0;
00091 
00093   // given a ConstValBasicInterface, print out value if any
00094   virtual std::string toString(OA_ptr<ConstValBasicInterface> cvPtr) = 0;
00095   // need all for full override
00096   virtual std::string toString(const ProcHandle h) = 0;
00097   virtual std::string toString(const StmtHandle h) = 0;
00098   virtual std::string toString(const ExprHandle h) = 0;
00099   virtual std::string toString(const OpHandle h) = 0;
00100   virtual std::string toString(const MemRefHandle h) = 0;
00101   virtual std::string toString(const SymHandle h) = 0;
00102   virtual std::string toString(const ConstSymHandle h) = 0;
00103   virtual std::string toString(const ConstValHandle h) = 0;
00104 
00105 
00107   // Given an unsigned int, return a ConstValBAsicInterface for it
00108   virtual OA_ptr<ConstValBasicInterface> getConstValBasic (unsigned int val) = 0;
00109 
00111   virtual OA_ptr<ExprTree> getExprTree(ExprHandle h) = 0;
00112 
00114   virtual OA_ptr<IRCallsiteIterator> getCallsites(StmtHandle h) = 0;
00115 
00117   // should be removed after testing
00118   virtual int returnOpEnumValInt(OA::OpHandle op) = 0;
00119 
00120 };
00121 
00122   } // end of namespace ReachConsts
00123 } // end of namespace OA
00124 
00125 #endif 

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