00001 00015 #ifndef UsefulManagerStandard_h 00016 #define UsefulManagerStandard_h 00017 00018 //-------------------------------------------------------------------- 00019 // OpenAnalysis headers 00020 #include "DepStandard.hpp" 00021 #include "UsefulStandard.hpp" 00022 00023 #include <OpenAnalysis/IRInterface/ActivityIRInterface.hpp> 00024 #include <OpenAnalysis/CFG/CFGInterface.hpp> 00025 #include <OpenAnalysis/DataFlow/CFGDFProblem.hpp> 00026 #include <OpenAnalysis/DataFlow/LocDFSet.hpp> 00027 #include <OpenAnalysis/DataFlow/CFGDFSolver.hpp> 00028 00029 namespace OA { 00030 namespace Activity { 00031 00032 00038 class ManagerUsefulStandard 00039 : private DataFlow::CFGDFProblem { 00040 //??? eventually public OA::AnnotationManager 00041 public: 00042 ManagerUsefulStandard(OA_ptr<ActivityIRInterface> _ir); 00043 ~ManagerUsefulStandard () {} 00044 00047 OA_ptr<UsefulStandard> performAnalysis(ProcHandle, 00048 OA_ptr<CFG::CFGInterface> cfg, OA_ptr<DepStandard> dep, 00049 OA_ptr<DataFlow::LocDFSet> depLocSet, 00050 DataFlow::DFPImplement type); 00051 00052 //------------------------------------------------------------------ 00053 // Implementing the callbacks for CFGDFProblem 00054 //------------------------------------------------------------------ 00055 private: 00056 OA_ptr<DataFlow::DataFlowSet> initializeTop(); 00057 OA_ptr<DataFlow::DataFlowSet> initializeBottom(); 00058 00059 // void initializeNode(OA_ptr<CFG::Interface::Node> n); 00060 00061 // Added by PLM 07/26/06 00063 OA_ptr<DataFlow::DataFlowSet> 00064 initializeNodeIN(OA_ptr<CFG::NodeInterface> n); 00065 OA_ptr<DataFlow::DataFlowSet> 00066 initializeNodeOUT(OA_ptr<CFG::NodeInterface> n); 00067 00068 00069 OA_ptr<DataFlow::DataFlowSet> 00070 meet (OA_ptr<DataFlow::DataFlowSet> set1, OA_ptr<DataFlow::DataFlowSet> set2); 00071 00072 OA_ptr<DataFlow::DataFlowSet> 00073 transfer(OA_ptr<DataFlow::DataFlowSet> in, OA::StmtHandle stmt); 00074 00075 private: // member variables 00076 00077 OA_ptr<ActivityIRInterface> mIR; 00078 OA_ptr<DepStandard> mDep; 00079 OA_ptr<UsefulStandard> mUsefulMap; 00080 OA_ptr<LocIterator> mDepLocIter; 00081 OA_ptr<CFG::CFGInterface> mCFG; 00082 // Added by PLM 07/26/06 00083 OA_ptr<DataFlow::CFGDFSolver> mSolver; 00084 00085 }; 00086 00087 } // end of Activity namespace 00088 } // end of OA namespace 00089 00090 #endif
1.7.1