00001 00015 #ifndef SideEffectInterface_hpp 00016 #define SideEffectInterface_hpp 00017 00018 #include <set> 00019 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00020 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00021 #include <OpenAnalysis/Location/Locations.hpp> 00022 00023 00024 namespace OA { 00025 namespace SideEffect { 00026 00028 class Interface { 00029 public: 00030 Interface() {} 00031 virtual ~Interface() {} 00032 00037 virtual OA_ptr<LocIterator> getLMODIterator() = 0; 00038 00042 virtual OA_ptr<LocIterator> getMODIterator() = 0; 00043 00048 virtual OA_ptr<LocIterator> getLDEFIterator() = 0; 00049 00053 virtual OA_ptr<LocIterator> getDEFIterator() = 0; 00054 00060 virtual OA_ptr<LocIterator> getLUSEIterator() = 0; 00061 00065 virtual OA_ptr<LocIterator> getUSEIterator() = 0; 00066 00071 virtual OA_ptr<LocIterator> getLREFIterator() = 0; 00072 00076 virtual OA_ptr<LocIterator> getREFIterator() = 0; 00077 00078 //***************************************************************** 00079 // Output 00080 //***************************************************************** 00081 00082 virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir) = 0; 00083 00084 }; 00085 00086 00087 } // end of SideEffect namespace 00088 } // end of OA namespace 00089 00090 #endif 00091
1.6.1