00001 00015 #ifndef SideEffectIRInterface_h 00016 #define SideEffectIRInterface_h 00017 00018 //#include <iostream> 00019 #include <list> 00020 //#include <string> 00021 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00022 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00023 #include <OpenAnalysis/IRInterface/CalleeToCallerVisitorIRInterface.hpp> 00024 00025 namespace OA { 00026 namespace SideEffect { 00027 00033 class SideEffectIRInterface : public virtual IRHandlesIRInterface, public virtual DataFlow::CalleeToCallerVisitorIRInterface 00034 { 00035 public: 00036 SideEffectIRInterface() { } 00037 virtual ~SideEffectIRInterface() { } 00038 00041 virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 00042 00045 virtual OA_ptr<MemRefHandleIterator> getDefMemRefs(StmtHandle stmt) = 0; 00046 00049 virtual OA_ptr<MemRefHandleIterator> getUseMemRefs(StmtHandle stmt) = 0; 00050 00052 virtual OA_ptr<IRCallsiteIterator> getCallsites(StmtHandle h) = 0; 00053 00054 virtual SymHandle getProcSymHandle(ProcHandle h) = 0; 00055 }; 00056 00057 } // end of namespace ReachDef 00058 } // end of namespace OA 00059 00060 #endif
1.6.1