00001 00015 #ifndef ParamBindingsIRInterface_h 00016 #define ParamBindingsIRInterface_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 00032 class ParamBindingsIRInterface : public virtual IRHandlesIRInterface { 00033 public: 00034 ParamBindingsIRInterface() { } 00035 virtual ~ParamBindingsIRInterface() { } 00036 00039 virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 00040 00044 virtual OA_ptr<MemRefHandleIterator> getAllMemRefs(StmtHandle stmt) = 0; 00045 00048 virtual OA_ptr<MemRefExprIterator> 00049 getMemRefExprIterator(MemRefHandle h) = 0; 00050 00051 00054 virtual OA_ptr<IRCallsiteParamIterator> getCallsiteParams(CallHandle h) = 0; 00055 00058 //virtual OA_ptr<IRSymIterator> getRefSymIterator(ProcHandle h) = 0; 00059 00061 virtual bool isParam(SymHandle) = 0; 00062 00064 //virtual bool isRefParam(SymHandle) = 0; 00065 00067 virtual SymHandle getFormalForActual(ProcHandle caller, CallHandle call, 00068 ProcHandle callee, ExprHandle param) = 0; 00070 virtual OA_ptr<ExprTree> getExprTree(ExprHandle h) = 0; 00071 00072 }; 00073 00074 } // end of namespace DataFlow 00075 } // end of namespace OA 00076 00077 #endif
1.6.1