00001 00012 #ifndef ReachDefsOverwriteManagerStandard_h 00013 #define ReachDefsOverwriteManagerStandard_h 00014 00015 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00016 #include <OpenAnalysis/Alias/Interface.hpp> 00017 #include <OpenAnalysis/Location/Locations.hpp> 00018 #include <OpenAnalysis/DataFlow/IRHandleDataFlowSet.hpp> 00019 #include <OpenAnalysis/SideEffect/InterSideEffectInterface.hpp> 00020 #include <OpenAnalysis/CFG/CFGInterface.hpp> 00021 #include <OpenAnalysis/IRInterface/ReachDefsIRInterface.hpp> 00022 #include <OpenAnalysis/ReachDefs/ManagerReachDefsStandard.hpp> 00023 #include <OpenAnalysis/ReachDefsOverwrite/ReachDefsOverwriteStandard.hpp> 00024 00025 namespace OA { 00026 namespace ReachDefsOverwrite { 00027 00032 class ManagerReachDefsOverwriteStandard : public virtual ReachDefs::ManagerReachDefsStandard { 00033 00034 public: 00035 ManagerReachDefsOverwriteStandard(OA_ptr<ReachDefs::ReachDefsIRInterface> _ir); 00036 ~ManagerReachDefsOverwriteStandard () {} 00037 00038 OA_ptr<ReachDefsOverwriteStandard> performAnalysis(ProcHandle, 00039 OA_ptr<CFG::CFGInterface> cfg, OA_ptr<Alias::Interface> alias, 00040 OA_ptr<SideEffect::InterSideEffectInterface> interSE, 00041 DataFlow::DFPImplement algorithm); 00042 private: 00043 00044 OA_ptr<DataFlow::DataFlowSet> transfer(OA_ptr<DataFlow::DataFlowSet> in, OA::StmtHandle stmt); 00045 00046 std::map<StmtHandle,std::set<OA_ptr<Location> > > mStmtAllDefMap; 00047 00048 OA_ptr<ReachDefsOverwriteStandard> mReachDefOverwriteMap; 00049 00050 }; 00051 00052 } 00053 } 00054 00055 #endif
1.6.1