auto_ReachingDefsStandard.cpp

Go to the documentation of this file.
00001 
00002 /* ReachingDefsStandard.cpp
00003    NOTE: This file was automatically generated by DFAGen.  It is the
00004          implementation of the class for ReachingDefs analysis results.
00005 */
00006 
00007 
00008 #include "auto_ReachingDefsStandard.hpp"
00009 
00010 namespace OA {
00011   namespace ReachingDefs {
00012 
00013 
00014 ReachingDefsDFSet::iterator ReachingDefsStandard::getReachingDefsIterator(StmtHandle s) {
00015     ReachingDefsDFSet::iterator retval;
00016 
00017     if(mReachingDefs[s].ptrEqual(0)) {
00018         mReachingDefs[s] = new ReachingDefsDFSet();
00019     }
00020 
00021     retval = mReachingDefs[s]->begin();
00022 
00023     return retval;
00024 }
00025 
00026 
00027 ReachingDefsDFSet::iterator ReachingDefsStandard::getExitReachingDefsIterator() {
00028     ReachingDefsDFSet::iterator retval;
00029 
00030     retval = mExitReachingDefs->begin();
00031     return retval;
00032 }
00033 
00034 
00035 void ReachingDefsStandard::output(IRHandlesIRInterface& ir) {
00036 #if 0
00037     sOutBuild->objStart("ReachingDefsStandard");
00038 
00039     sOutBuild->mapStart("mReachingDefs", "StmtHandle", "OA_ptr<LocSet>");
00040     std::map<StmtHandle,OA_ptr<LocSet> >::iterator mapIter;
00041     for (mapIter = mReachingDefs.begin(); mapIter != mReachingDefs.end(); mapIter++) {
00042         StmtHandle s = mapIter->first;
00043         OA_ptr<LocSet> rdset = mapIter->second;
00044         if ( rdset.ptrEqual(0) ) continue;
00045 
00046         sOutBuild->mapEntryStart();
00047         sOutBuild->mapKeyStart();
00048         sOutBuild->outputIRHandle(s, ir);
00049         sOutBuild->mapKeyEnd();
00050         sOutBuild->mapValueStart();
00051 
00052 
00053         sOutBuild->listStart();
00054         OA_ptr<".TYPEITER."> setIter;
00055         setIter = getReachingDefsIterator(s);
00056         for ( ; setIter->isValid(); (*setIter)++ ) {
00057              sOutBuild->listItemStart(); {
00058              setIter->current()->output(ir);
00059             } sOutBuild->listItemEnd();
00060         }
00061         sOutBuild->listEnd();
00062         sOutBuild->mapValueEnd();
00063         sOutBuild->mapEntryEnd();
00064     }
00065     sOutBuild->mapEnd("mReachingDefs");
00066     sOutBuild->objEnd("ReachingDefsStandard");
00067 #endif
00068 }
00069 
00070 
00071 void ReachingDefsStandard::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir)
00072 {
00073     std::cout << "======ReachingDefs===="<< std::endl;
00074     ReachingDefsDFSet::iterator iter;
00075 
00076     std::map<StmtHandle, OA_ptr<ReachingDefsDFSet> >::iterator mapIter;
00077 
00078     for (mapIter = mReachingDefs.begin(); mapIter != mReachingDefs.end(); mapIter++) {
00079         std::cout<< "\tstmt = " << ir->toString(mapIter->first) << std::endl;
00080         iter = getReachingDefsIterator(mapIter->first);
00081 
00082         for ( ; iter != mReachingDefs[mapIter->first]->end(); iter++ ) {
00083             std::cout << "\t\t";
00084         cout << mIR->toString(*iter);
00085             std::cout << std::endl;
00086         }
00087     }
00088 }
00089 
00090 
00091   } // end of ReachingDefs namespace
00092 } // end of OA namespace

Generated on Sat Oct 31 05:21:20 2009 for OpenAnalysis by  doxygen 1.6.1