00001 00012 #ifndef ReachDefsOverwriteStandard_hpp 00013 #define ReachDefsOverwriteStandard_hpp 00014 00015 #include <iostream> 00016 #include <map> 00017 #include <set> 00018 00019 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00020 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00021 #include <OpenAnalysis/ReachDefs/ReachDefsStandard.hpp> 00022 #include <OpenAnalysis/ReachDefsOverwrite/Interface.hpp> 00023 #include <OpenAnalysis/OABase/Annotation.hpp> 00024 #include <OpenAnalysis/Utils/GenOutputTool.hpp> 00025 00026 namespace OA { 00027 namespace ReachDefsOverwrite { 00028 00029 class ReachDefsOverwriteStandard : public ReachDefsOverwrite::Interface, 00030 public ReachDefs::ReachDefsStandard { 00031 public: 00032 ReachDefsOverwriteStandard(ProcHandle p) ; 00033 00034 ~ReachDefsOverwriteStandard() {} 00035 00040 OA_ptr<ReachDefsIterator> getOverwritingStmts(StmtHandle s); 00041 00043 void insertOverwrittenBy(StmtHandle def, 00044 StmtHandle ovw); 00045 00047 void output(IRHandlesIRInterface& pIR); 00048 00049 private: 00050 // data members 00051 std::map<StmtHandle,OA_ptr<std::set<StmtHandle> > > mOverwrittenBy; 00052 00053 }; 00054 00055 } 00056 } 00057 00058 #endif 00059
1.6.1