00001 00015 #ifndef ActiveManagerStandard_h 00016 #define ActiveManagerStandard_h 00017 00018 //-------------------------------------------------------------------- 00019 // OpenAnalysis headers 00020 #include "VaryStandard.hpp" 00021 #include "UsefulStandard.hpp" 00022 #include "ActiveStandard.hpp" 00023 00024 #include <OpenAnalysis/IRInterface/ActivityIRInterface.hpp> 00025 #include <OpenAnalysis/CFG/CFGInterface.hpp> 00026 #include <OpenAnalysis/DataFlow/CFGDFProblem.hpp> 00027 #include <OpenAnalysis/DataFlow/LocDFSet.hpp> 00028 #include <OpenAnalysis/SideEffect/InterSideEffectInterface.hpp> 00029 00030 namespace OA { 00031 namespace Activity { 00032 00033 00040 class ManagerActiveStandard { 00041 //??? eventually public OA::AnnotationManager 00042 public: 00043 ManagerActiveStandard(OA_ptr<ActivityIRInterface> _ir); 00044 ~ManagerActiveStandard () {} 00045 00046 OA_ptr<ActiveStandard> performAnalysis(ProcHandle, 00047 OA_ptr<CFG::CFGInterface> cfg, 00048 OA_ptr<Alias::Interface> alias, 00049 OA_ptr<VaryStandard> vary, 00050 OA_ptr<UsefulStandard> useful); 00051 //OA_ptr<SideEffect::InterSideEffectInterface> interSE, 00052 //OA_ptr<LocIterator> indepLocIter, 00053 //OA_ptr<LocIterator> depLocIter); 00054 00055 /* 00057 OA_ptr<ActiveStandard> performAnalysis(ProcHandle, 00058 OA_ptr<CFG::Interface> cfg, 00059 OA_ptr<Alias::Interface> alias, 00060 OA_ptr<SideEffect::InterSideEffectInterface> interSE); 00061 */ 00062 00063 private: 00064 // helper function 00065 void calculateActive( 00066 StmtHandle prevStmt, OA_ptr<LocIterator> prevOutVaryIter, 00067 StmtHandle stmt, OA_ptr<LocIterator> inUsefulIter); 00068 private: 00069 OA_ptr<ActivityIRInterface> mIR; 00070 OA_ptr<ActiveStandard> mActive; 00071 //OA_ptr<DepStandard> mDep; 00072 OA_ptr<Alias::Interface> mAlias; 00073 00074 }; 00075 00076 } // end of Activity namespace 00077 } // end of OA namespace 00078 00079 #endif
1.7.1