00001 00016 #ifndef InterSideEffectInterface_hpp 00017 #define InterSideEffectInterface_hpp 00018 00019 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00020 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00021 #include <OpenAnalysis/Location/Locations.hpp> 00022 #include <OpenAnalysis/Alias/Interface.hpp> 00023 #include <OpenAnalysis/SideEffect/SideEffectInterface.hpp> 00024 00025 00026 namespace OA { 00027 namespace SideEffect { 00028 00029 typedef ProcHandleIterator ProcIterator; 00030 00032 class InterSideEffectInterface { 00033 public: 00034 InterSideEffectInterface() {} 00035 virtual ~InterSideEffectInterface() {} 00036 00039 virtual OA_ptr<ProcIterator> getKnownProcIterator() = 0; 00040 00041 //************************************************************************* 00042 00047 virtual OA_ptr<LocIterator> getLMODIterator(CallHandle p) = 0; 00048 00052 virtual OA_ptr<LocIterator> getMODIterator(CallHandle p) = 0; 00053 00058 virtual OA_ptr<LocIterator> getLDEFIterator(CallHandle p) = 0; 00059 00063 virtual OA_ptr<LocIterator> getDEFIterator(CallHandle p) = 0; 00064 00070 virtual OA_ptr<LocIterator> getLUSEIterator(CallHandle p) = 0; 00071 00075 virtual OA_ptr<LocIterator> getUSEIterator(CallHandle p) = 0; 00076 00081 virtual OA_ptr<LocIterator> getLREFIterator(CallHandle p) = 0; 00082 00086 virtual OA_ptr<LocIterator> getREFIterator(CallHandle p) = 0; 00087 00088 //************************************************************************* 00089 00094 virtual OA_ptr<LocIterator> getLMODIterator(ProcHandle p) = 0; 00095 00099 virtual OA_ptr<LocIterator> getMODIterator(ProcHandle p) = 0; 00100 00105 virtual OA_ptr<LocIterator> getLDEFIterator(ProcHandle p) = 0; 00106 00110 virtual OA_ptr<LocIterator> getDEFIterator(ProcHandle p) = 0; 00111 00117 virtual OA_ptr<LocIterator> getLUSEIterator(ProcHandle p) = 0; 00118 00122 virtual OA_ptr<LocIterator> getUSEIterator(ProcHandle p) = 0; 00123 00128 virtual OA_ptr<LocIterator> getLREFIterator(ProcHandle p) = 0; 00129 00133 virtual OA_ptr<LocIterator> getREFIterator(ProcHandle p) = 0; 00134 00135 //***************************************************************** 00136 // Output 00137 //***************************************************************** 00138 00139 virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir) = 0; 00140 00141 }; 00142 00143 00144 } // end of SideEffect namespace 00145 } // end of OA namespace 00146 00147 #endif 00148
1.6.1