00001 00020 #ifndef AliasIRInterface_h 00021 #define AliasIRInterface_h 00022 00023 #include <iostream> 00024 #include <string> 00025 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00026 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00027 #include <OpenAnalysis/Location/Locations.hpp> 00028 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp> 00029 00030 namespace OA { 00031 00033 namespace Alias { 00034 00035 class PtrAssignPairStmtIterator { 00036 public: 00037 PtrAssignPairStmtIterator() {} 00038 virtual ~PtrAssignPairStmtIterator() {} 00039 00041 virtual OA_ptr<MemRefExpr> currentSource() const = 0; 00043 virtual OA_ptr<MemRefExpr> currentTarget() const = 0; 00044 00045 virtual bool isValid() const = 0; 00046 00047 virtual void operator++() = 0; 00048 void operator++(int) { ++*this; } 00049 }; 00050 00051 class ParamBindPtrAssignIterator { 00052 public: 00053 ParamBindPtrAssignIterator() {} 00054 virtual ~ParamBindPtrAssignIterator() {} 00055 00057 virtual OA_ptr<MemRefExpr> currentActual() const = 0; 00059 virtual int currentFormalId() const = 0; 00060 00061 virtual bool isValid() const = 0; 00062 00063 virtual void operator++() = 0; 00064 void operator++(int) { ++*this; } 00065 }; 00066 00071 class AliasIRInterface : public virtual IRHandlesIRInterface { 00072 public: 00073 AliasIRInterface() { } 00074 virtual ~AliasIRInterface() { } 00075 00078 virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 00079 00083 virtual OA_ptr<MemRefHandleIterator> getAllMemRefs(StmtHandle stmt) = 0; 00084 00087 virtual OA_ptr<PtrAssignPairStmtIterator> 00088 getPtrAssignStmtPairIterator(StmtHandle stmt) = 0; 00089 00093 virtual OA_ptr<ParamBindPtrAssignIterator> 00094 getParamBindPtrAssignIterator(CallHandle call) = 0; 00095 00102 virtual SymHandle getFormalSym(ProcHandle,int) = 0; 00103 00105 virtual OA_ptr<IRCallsiteIterator> getCallsites(StmtHandle h) = 0; 00106 00110 virtual OA_ptr<MemRefExpr> getCallMemRefExpr(CallHandle h) = 0; 00111 00113 virtual ProcHandle getProcHandle(SymHandle sym) = 0; 00114 00116 virtual SymHandle getSymHandle(ProcHandle h) = 0; 00117 00120 //virtual OA_ptr<IRSymIterator> getVisibleSymIterator(ProcHandle h) = 0; 00121 00125 //virtual OA_ptr<IRStmtIterator> getUnnamedDynAllocStmtIterator(ProcHandle h) = 0; 00126 00131 virtual OA_ptr<Location> getLocation(ProcHandle p, SymHandle s) = 0; 00132 00135 virtual OA_ptr<MemRefExprIterator> 00136 getMemRefExprIterator(MemRefHandle h) = 0; 00137 00138 }; 00139 00140 } // end of namespace Alias 00141 } // end of namespace OA 00142 00143 #endif
1.6.1