00001 00002 /* AvailableExpressionsStandard.hpp 00003 NOTE: This file was automatically generated by DFAGen. It is the interface 00004 for the AvailableExpressions analysis results. 00005 */ 00006 00007 #ifndef AvailableExpressionsStandard_hpp 00008 #define AvailableExpressionsStandard_hpp 00009 00010 #include <cassert> 00011 #include <iostream> 00012 #include <map> 00013 #include <set> 00014 #include <vector> 00015 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00016 #include <OpenAnalysis/IRInterface/IRHandles.hpp> 00017 #include <OpenAnalysis/IRInterface/auto_AvailableExpressionsIRInterface.hpp> 00018 #include <OpenAnalysis/OABase/Annotation.hpp> 00019 #include <OpenAnalysis/Utils/GenOutputTool.hpp> 00020 #include <OpenAnalysis/Location/Location.hpp> 00021 #include <OpenAnalysis/DataFlow/DFAGenDFSet.hpp> 00022 #include <OpenAnalysis/Utils/Util.hpp> 00023 00024 namespace OA { 00025 namespace AvailableExpressions { 00026 00027 typedef DataFlow::DFAGenDFSet<OA_ptr<NewExprTree> > AvailableExpressionsDFSet; 00028 00029 class AvailableExpressionsStandard : public virtual Annotation { 00030 public: 00031 AvailableExpressionsStandard(ProcHandle p, OA_ptr<AvailableExpressionsIRInterface> _ir) { 00032 mIR = _ir; 00033 mExitAvailableExpressions = new AvailableExpressionsDFSet(); 00034 } 00035 ~AvailableExpressionsStandard() {} 00036 00037 AvailableExpressionsDFSet::iterator getAvailableExpressionsIterator(StmtHandle s); 00038 00039 AvailableExpressionsDFSet::iterator getExitAvailableExpressionsIterator(); 00040 00041 void insert(StmtHandle s, OA_ptr<NewExprTree> val) { 00042 if(mAvailableExpressions[s].ptrEqual(0)) { 00043 mAvailableExpressions[s] = new AvailableExpressionsDFSet(); 00044 } 00045 mAvailableExpressions[s]->insert(val); 00046 } 00047 00048 void insertExit(OA_ptr<NewExprTree> val) { 00049 mExitAvailableExpressions->insert(val); 00050 } 00051 00052 OA_ptr<AvailableExpressionsDFSet> getAvailableExpressionsSet(StmtHandle s) { 00053 map<StmtHandle, OA_ptr<AvailableExpressionsDFSet> >::iterator element = 00054 mAvailableExpressions.find(s); 00055 00056 if(element == mAvailableExpressions.end()) { 00057 mAvailableExpressions[s] = new AvailableExpressionsDFSet(); 00058 element = mAvailableExpressions.find(s); 00059 } 00060 00061 return (*element).second; 00062 } 00063 00064 void output(IRHandlesIRInterface& pIR); 00065 00066 void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir); 00067 00068 private: 00069 map<StmtHandle, OA_ptr<AvailableExpressionsDFSet> > mAvailableExpressions; 00070 OA_ptr<AvailableExpressionsDFSet> mExitAvailableExpressions; 00071 OA_ptr<AvailableExpressionsIRInterface> mIR; 00072 }; 00073 00074 } // end of Liveness namespace 00075 } // end of OA namespace 00076 00077 #endif 00078
1.6.1