UDDUChains/Interface.hpp

Go to the documentation of this file.
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 

Generated on Sat Oct 31 05:21:22 2009 for OpenAnalysis by  doxygen 1.6.1