ManagerUsefulStandard.hpp

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