ActiveStandard.hpp

Go to the documentation of this file.
00001 
00016 #ifndef ActiveStandard_hpp
00017 #define ActiveStandard_hpp
00018 
00019 #include <cassert>
00020 #include <iostream>
00021 #include <list>
00022 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00023 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00024 #include <OpenAnalysis/ReachDefs/Interface.hpp>
00025 #include <OpenAnalysis/DataFlow/LocDFSet.hpp>
00026 
00027 namespace OA {
00028   namespace Activity {
00029 
00030 
00031 class ActiveStandard {
00032   public:
00033     ActiveStandard(ProcHandle p);
00034     ~ActiveStandard() {}
00035 
00040     OA_ptr<SymHandleIterator> getActiveSymIterator();
00041 
00044     //getActiveUnnamedIterator
00045 
00047     bool isActive(SymHandle sym);
00048 
00050     bool isActive(StmtHandle stmt);
00051 
00053     bool isActive(MemRefHandle memref);
00054     
00056     OA_ptr<StmtHandleIterator> getActiveStmtIterator();
00057 
00059     OA_ptr<MemRefHandleIterator> getActiveMemRefIterator();
00060 
00062     OA_ptr<LocIterator> getActiveLocsIterator();
00063 
00064 
00065     //*****************************************************************
00066     // Construction methods 
00067     //*****************************************************************
00068 
00070     void insertLoc(OA_ptr<Location> loc);
00071 
00073     void insertStmt(StmtHandle stmt); 
00074 
00076     void insertMemRef(MemRefHandle memref);
00077     
00079     bool getUnknownLocActive() { return mUnknownLocActive; }
00080 
00081     //*****************************************************************
00082     // Output
00083     //*****************************************************************
00084 
00087     void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir);
00088 
00089   private:
00090     // data members
00091     OA_ptr<DataFlow::LocDFSet>  mActiveLocSet;
00092     OA_ptr<std::set<SymHandle> > mActiveSymSet;
00093     bool mUnknownLocActive;
00094 
00095     OA_ptr<std::set<StmtHandle> > mActiveStmtSet;
00096     OA_ptr<std::set<MemRefHandle> > mActiveMemRefSet;
00097 
00098 };
00099 
00101 class ActiveSymIterator : public virtual OA::SymHandleIterator,
00102                           public OA::IRHandleSetIterator<OA::SymHandle>
00103 {
00104 public:
00105   ActiveSymIterator(OA::OA_ptr<std::set<OA::SymHandle> > pList) 
00106     : OA::IRHandleSetIterator<OA::SymHandle>(pList) {}
00107   ~ActiveSymIterator() {}
00108 
00109   void operator++() { OA::IRHandleSetIterator<OA::SymHandle>::operator++(); }
00110   bool isValid() const
00111     { return OA::IRHandleSetIterator<OA::SymHandle>::isValid(); }
00112   OA::SymHandle current() const
00113     { return OA::IRHandleSetIterator<OA::SymHandle>::current(); }
00114   void reset() { OA::IRHandleSetIterator<OA::SymHandle>::current(); }
00115 };
00116 
00117 
00119 class ActiveMemRefIterator : public virtual OA::MemRefHandleIterator,
00120                              public OA::IRHandleSetIterator<OA::MemRefHandle>
00121 {
00122 public:
00123   ActiveMemRefIterator(OA::OA_ptr<std::set<OA::MemRefHandle> > pList) 
00124     : OA::IRHandleSetIterator<OA::MemRefHandle>(pList) {}
00125   ~ActiveMemRefIterator() {}
00126 
00127   void operator++() { OA::IRHandleSetIterator<OA::MemRefHandle>::operator++(); }
00128   bool isValid() const
00129     { return OA::IRHandleSetIterator<OA::MemRefHandle>::isValid(); }
00130   OA::MemRefHandle current() const
00131     { return OA::IRHandleSetIterator<OA::MemRefHandle>::current(); }
00132   void reset() { OA::IRHandleSetIterator<OA::MemRefHandle>::current(); }
00133 };
00134 
00135 
00137 class ActiveStmtIterator : public virtual OA::IRStmtIterator,
00138                            public OA::IRHandleSetIterator<OA::StmtHandle>
00139 {
00140 public:
00141   ActiveStmtIterator(OA::OA_ptr<std::set<OA::StmtHandle> > pList) 
00142     : OA::IRHandleSetIterator<OA::StmtHandle>(pList) {}
00143   ~ActiveStmtIterator() {}
00144 
00145   void operator++() { OA::IRHandleSetIterator<OA::StmtHandle>::operator++(); }
00146   bool isValid() const
00147     { return OA::IRHandleSetIterator<OA::StmtHandle>::isValid(); }
00148   OA::StmtHandle current() const
00149     { return OA::IRHandleSetIterator<OA::StmtHandle>::current(); }
00150   void reset() { OA::IRHandleSetIterator<OA::StmtHandle>::current(); }
00151 };
00152 
00153 
00154 
00155   } // end of Activity namespace
00156 } // end of OA namespace
00157 
00158 #endif
00159 

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