00001 00015 #ifndef CallGraphDFProblemIRInterface_h 00016 #define CallGraphDFProblemIRInterface_h 00017 00018 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00019 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00020 #include <OpenAnalysis/Location/Locations.hpp> 00021 #include <OpenAnalysis/ExprTree/ExprTree.hpp> 00022 00023 namespace OA { 00024 00025 typedef IRCallsiteParamIterator ExprHandleIterator; 00026 00027 namespace DataFlow { 00028 00029 00035 class CallGraphDFProblemIRInterface : public virtual IRHandlesIRInterface { 00036 public: 00037 CallGraphDFProblemIRInterface() { } 00038 virtual ~CallGraphDFProblemIRInterface() { } 00039 00042 virtual OA::OA_ptr<OA::IRCallsiteParamIterator> 00043 getCallsiteParams(OA::CallHandle h) = 0; 00044 00046 virtual SymHandle getFormalForActual(ProcHandle caller, CallHandle call, 00047 ProcHandle callee, ExprHandle param) = 0; 00048 00053 virtual OA_ptr<Location> getLocation(ProcHandle p, SymHandle s) = 0; 00054 00056 virtual OA_ptr<ExprTree> getExprTree(ExprHandle h) = 0; 00057 00058 }; 00059 00060 } // end of namespace DataFlow 00061 } // end of namespace OA 00062 00063 #endif
1.6.1