00001 00015 #ifndef UDDUChainsInterface_hpp 00016 #define UDDUChainsInterface_hpp 00017 00018 #include <set> 00019 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00020 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00021 00022 00023 namespace OA { 00024 namespace UDDUChains { 00025 00026 typedef std::set<StmtHandle> StmtSet; 00027 00028 //class StmtUDDUChainsIterator; 00029 //class MemRefUDDUChainsIterator; 00030 00032 class Interface { 00033 public: 00034 Interface() {} 00035 virtual ~Interface() {} 00036 00037 typedef StmtHandleIterator ChainStmtIterator; 00038 typedef StmtHandleIterator StmtsWithUDChainIterator; 00039 typedef StmtHandleIterator StmtsWithDUChainIterator; 00040 typedef MemRefHandleIterator MemRefsWithUDChainIterator; 00041 typedef MemRefHandleIterator MemRefsWithDUChainIterator; 00042 00046 //virtual StmtHandle getStmtHandle(MemRefHandle ref) = 0; 00047 00048 00051 virtual OA_ptr<ChainStmtIterator> getUDChainStmtIterator(StmtHandle s) = 0; 00052 00055 virtual OA_ptr<StmtsWithUDChainIterator> getStmtsWithUDChainIterator() = 0; 00056 00059 virtual OA_ptr<ChainStmtIterator> getDUChainStmtIterator(StmtHandle s) = 0; 00060 00063 virtual OA_ptr<StmtsWithDUChainIterator> getStmtsWithDUChainIterator() = 0; 00064 00067 virtual OA_ptr<ChainStmtIterator> getUDChainStmtIterator(MemRefHandle s) = 0; 00068 00071 virtual OA_ptr<MemRefsWithUDChainIterator> getMemRefsWithUDChainIterator()=0; 00072 00075 virtual OA_ptr<ChainStmtIterator> getDUChainStmtIterator(MemRefHandle s) = 0; 00076 00079 virtual OA_ptr<MemRefsWithDUChainIterator> getMemRefsWithDUChainIterator()=0; 00080 00081 //***************************************************************** 00082 // Output 00083 //***************************************************************** 00084 00085 virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir) = 0; 00086 00087 }; 00088 00092 /* 00093 class StmtUDDUChainsIterator { 00094 public: 00095 StmtUDDUChainsIterator() { } 00096 virtual ~StmtUDDUChainsIterator() { }; 00097 00098 virtual StmtHandle currentKey() = 0; // Returns the current key 00099 virtual OA_ptr<StmtSet> currentVal() = 0; // Returns the current val 00100 virtual bool isValid() = 0; // False when all items are exhausted. 00101 00102 virtual void operator++() = 0; 00103 00104 virtual void reset() = 0; 00105 }; 00106 */ 00107 00111 /* 00112 class MemRefUDDUChainsIterator { 00113 public: 00114 MemRefUDDUChainsIterator() { } 00115 virtual ~MemRefUDDUChainsIterator() { }; 00116 00117 virtual MemRefHandle currentKey() = 0; // Returns the current key 00118 virtual OA_ptr<StmtSet> currentVal() = 0; // Returns the current val 00119 virtual bool isValid() = 0; // False when all items are exhausted. 00120 00121 virtual void operator++() = 0; 00122 00123 virtual void reset() = 0; 00124 }; 00125 */ 00126 00127 00128 } // end of UDDUChains namespace 00129 } // end of OA namespace 00130 00131 #endif 00132
1.6.1