00001 00015 #ifndef InterSideEffectIRInterface_h 00016 #define InterSideEffectIRInterface_h 00017 00018 #include <OpenAnalysis/IRInterface/SideEffectIRInterface.hpp> 00019 #include <OpenAnalysis/IRInterface/CallGraphDFProblemIRInterface.hpp> 00020 #include <OpenAnalysis/SideEffect/SideEffectStandard.hpp> 00021 00022 namespace OA { 00023 00024 namespace SideEffect { 00025 00026 00032 class InterSideEffectIRInterface : public virtual SideEffectIRInterface, 00033 public virtual DataFlow::CallGraphDFProblemIRInterface 00034 { 00035 public: 00036 InterSideEffectIRInterface() { } 00037 virtual ~InterSideEffectIRInterface() { } 00038 00048 virtual OA_ptr<SideEffect::SideEffectStandard> 00049 getSideEffect(ProcHandle caller, SymHandle calleesym) = 0; 00050 00051 // need all for full override, just want ProcHandle and can't inherit 00052 // from IRHandlesIRInterface as well as other two 00053 virtual std::string toString(const ProcHandle h) = 0; 00054 virtual std::string toString(const StmtHandle h) = 0; 00055 virtual std::string toString(const ExprHandle h) = 0; 00056 virtual std::string toString(const OpHandle h) = 0; 00057 virtual std::string toString(const MemRefHandle h) = 0; 00058 virtual std::string toString(const SymHandle h) = 0; 00059 virtual std::string toString(const ConstSymHandle h) = 0; 00060 virtual std::string toString(const ConstValHandle h) = 0; 00061 }; 00062 00063 } // end of namespace SideEffect 00064 } // end of namespace OA 00065 00066 #endif
1.6.1