00001 00021 #ifndef ReachDefsIRInterface_h 00022 #define ReachDefsIRInterface_h 00023 00024 #include <iostream> 00025 #include <list> 00026 #include <string> 00027 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00028 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00029 #include <OpenAnalysis/IRInterface/AssignPairIterator.hpp> 00030 #include <OpenAnalysis/ExprTree/ExprTree.hpp> 00031 00032 namespace OA { 00033 namespace ReachDefs { 00034 00040 class ReachDefsIRInterface : public virtual IRHandlesIRInterface { 00041 public: 00042 ReachDefsIRInterface() { } 00043 virtual ~ReachDefsIRInterface() { } 00044 00047 //virtual OA_ptr<IRSymIterator> getVisibleSymIterator(ProcHandle h) = 0; 00048 00051 virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 00052 00055 virtual OA_ptr<MemRefHandleIterator> getAllMemRefs(StmtHandle stmt) = 0; 00056 00059 virtual OA_ptr<MemRefHandleIterator> getDefMemRefs(StmtHandle stmt) = 0; 00060 00061 virtual OA_ptr<MemRefHandleIterator> getUseMemRefs(StmtHandle stmt) = 0; 00062 00064 virtual OA_ptr<IRCallsiteIterator> getCallsites(StmtHandle h) = 0; 00065 00066 virtual OA_ptr<ExprTree> getExprTree(ExprHandle h) = 0; 00067 00068 }; 00069 00070 } // end of namespace ReachDef 00071 } // end of namespace OA 00072 00073 #endif
1.6.1