Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "EquivSets.hpp"
00009
00010 namespace OA {
00011 namespace Alias {
00012
00013 void EquivSets::output(OA::IRHandlesIRInterface& ir)
00014 {
00015 sOutBuild->objStart("EquivSets");
00016
00017 sOutBuild->mapStart("mMemRefToProc", "MemRefHandle", "ProcHandle");
00018 std::map<MemRefHandle,ProcHandle>::iterator reg_mMemRefToProc_iterator;
00019 for(reg_mMemRefToProc_iterator = mMemRefToProc.begin();
00020 reg_mMemRefToProc_iterator != mMemRefToProc.end();
00021 reg_mMemRefToProc_iterator++)
00022 {
00023 const MemRefHandle &first = reg_mMemRefToProc_iterator->first;
00024 const ProcHandle &second = reg_mMemRefToProc_iterator->second;
00025 sOutBuild->mapKeyStart();
00026 sOutBuild->outputIRHandle(first, ir);
00027 sOutBuild->mapKeyEnd();
00028 sOutBuild->mapValueStart();
00029 sOutBuild->outputIRHandle(second, ir);
00030 sOutBuild->mapValueEnd();
00031 }
00032 sOutBuild->mapEnd("mMemRefToProc");
00033
00034 sOutBuild->mapStart("mMemRefToSets", "MemRefHandle", "int");
00035 std::map<MemRefHandle, std::set<int> >::iterator reg_mMemRefToSets_iterator;
00036 for(reg_mMemRefToSets_iterator = mMemRefToSets.begin();
00037 reg_mMemRefToSets_iterator != mMemRefToSets.end();
00038 reg_mMemRefToSets_iterator++)
00039 {
00040 const MemRefHandle &first = reg_mMemRefToSets_iterator->first;
00041 std::set<int> &second = reg_mMemRefToSets_iterator->second;
00042 sOutBuild->mapKeyStart();
00043 sOutBuild->outputIRHandle(first, ir);
00044 sOutBuild->mapKeyEnd();
00045 sOutBuild->mapValueStart();
00046 sOutBuild->listStart();
00047 std::set<int>::iterator reg_second_iterator;
00048 for(reg_second_iterator = second.begin();
00049 reg_second_iterator != second.end();
00050 reg_second_iterator++)
00051 {
00052 int item = *reg_second_iterator;
00053 sOutBuild->listItem(OA::int2string(item));
00054 }
00055 sOutBuild->listEnd();
00056 sOutBuild->mapValueEnd();
00057 }
00058 sOutBuild->mapEnd("mMemRefToSets");
00059
00060
00061 sOutBuild->mapStart("mProcNSetToLocs", "ProcHandle", "std::map<int,OA_ptr<Location> >");
00062 std::map<ProcHandle,std::map<int,std::set<OA_ptr<Location> > > >::iterator
00063 procMapIter;
00064 for (procMapIter=mProcNSetToLocs.begin();
00065 procMapIter!=mProcNSetToLocs.end();
00066 procMapIter++ )
00067 {
00068 const ProcHandle &first = procMapIter->first;
00069 std::map<int,std::set<OA::OA_ptr<Location> > > &second = procMapIter->second;
00070
00071 sOutBuild->mapKeyStart();
00072 sOutBuild->outputIRHandle(first, ir);
00073 sOutBuild->mapKeyEnd();
00074 sOutBuild->mapValueStart();
00075
00076 sOutBuild->mapStart("SetToLocs", "int", "OA_ptr<Location>");
00077 std::map<int, std::set<OA::OA_ptr<Location> > >::iterator equivSetIter;
00078 for (equivSetIter=second.begin(); equivSetIter!=second.end();
00079 equivSetIter++)
00080 {
00081 const int &first2 = equivSetIter->first;
00082 std::set<OA::OA_ptr<Location> > &second2 = equivSetIter->second;
00083
00084 sOutBuild->mapKey(OA::int2string(first2));
00085 sOutBuild->mapValueStart();
00086 sOutBuild->listStart();
00087 std::set<OA::OA_ptr<Location> >::iterator reg_second_iterator;
00088 for(reg_second_iterator = second2.begin();
00089 reg_second_iterator != second2.end();
00090 reg_second_iterator++)
00091 {
00092 OA::OA_ptr<Location> item = *reg_second_iterator;
00093 sOutBuild->listItemStart();
00094 item->output(ir);
00095 sOutBuild->listItemEnd();
00096 }
00097 sOutBuild->listEnd();
00098 sOutBuild->mapValueEnd();
00099 }
00100 sOutBuild->mapEnd("SetToLocs");
00101
00102 }
00103 sOutBuild->mapEnd("ProcNSetToLocs");
00104 sOutBuild->mapValueEnd();
00105
00106 sOutBuild->objEnd("EquivSets");
00107 }
00108
00109 }
00110 }