ExprDFSet.cpp

Go to the documentation of this file.
00001 //ExprDFSet.cpp
00002 
00003 #include "ExprDFSet.hpp"
00004 #include <Utils/Util.hpp>
00005 
00006 namespace OA {
00007   namespace DataFlow {
00008 
00009 static bool debug = false;
00010 
00011 ExprDFSet::ExprDFSet() 
00012 { 
00013   mSetPtr = new ExprTreeSet;
00014   //std::cout << "ExprDFSet constructor called\n";
00015     OA_DEBUG_CTRL_MACRO("DEBUG_ExprDFSet:ALL", debug);
00016 }
00017 
00018 ExprDFSet::ExprDFSet(const ExprDFSet &other)
00019 {
00020 //std::cout << "ExprDFSet copy constr called\n";
00021    mSetPtr = new ExprTreeSet;
00022   *mSetPtr= *(other.mSetPtr);
00023 //std::cout << "ExprDFSet end copy constr called\n";
00024   //  mSetPtr = other.mSetPtr;
00025 }
00026 
00027 OA_ptr<DataFlowSet> ExprDFSet::clone()
00028 { 
00029 //std::cout << "ExprDFSet clone called\n";
00030   OA_ptr<ExprDFSet> retval;
00031   retval = new ExprDFSet(*this); 
00032   return retval; 
00033 }
00034   
00035 // param for these can't be const because will have to 
00036 // dynamic cast to specific subclass
00037 bool ExprDFSet::operator ==(DataFlowSet &other) const
00038 { 
00039 //std::cout << "ExprDFSet == called\n";
00040    ExprDFSet& recastOther 
00041         = dynamic_cast<ExprDFSet&>(other);
00042     return *mSetPtr == *(recastOther.mSetPtr); 
00043 }
00044 
00045 bool ExprDFSet::operator !=(DataFlowSet &other) const
00046 { 
00047 //std::cout << "ExprDFSet != called\n";
00048     ExprDFSet& recastOther 
00049         = dynamic_cast<ExprDFSet&>(other);
00050     return *mSetPtr != *(recastOther.mSetPtr); 
00051 }
00052 
00053 bool ExprDFSet::operator <(DataFlowSet &other) const
00054 {
00055 //std::cout << "ExprDFSet < called\n";
00056    ExprDFSet& recastOther
00057         = dynamic_cast<ExprDFSet&>(other);
00058     return *mSetPtr < *(recastOther.mSetPtr);
00059 }
00060 
00061 bool ExprDFSet::operator =(DataFlowSet &other) const
00062 {
00063 //std::cout << "ExprDFSet = called\n";
00064 }
00065 
00066 
00067 ExprDFSet& ExprDFSet::setUnion(DataFlowSet &other)
00068 { 
00069    std::cout << "ExprDFSet set union called\n";
00070     ExprDFSet& recastOther 
00071         = dynamic_cast<ExprDFSet&>(other);
00072     OA_ptr<ExprTreeSet> temp;
00073     std::cout << "Printing 2 df sets\n";
00074     std::set<OA_ptr<ExprTree> >::iterator iter;
00075     for (iter=mSetPtr->begin(); iter!=mSetPtr->end(); iter++) 
00076     {
00077       std::cout << "Print this Exprset "<< ", " << (*iter)<< "\n";
00078     }
00079     for (iter=recastOther.mSetPtr->begin(); iter!=recastOther.mSetPtr->end(); iter++) 
00080     {
00081       std::cout << "Print other Exprset "<< ", " << (*iter)<< "\n";
00082     }
00083     std::cout << "End exprtree print\n";
00084     temp = new ExprTreeSet; 
00085     std::set_union(mSetPtr->begin(), mSetPtr->end(), 
00086                    recastOther.mSetPtr->begin(), recastOther.mSetPtr->end(),
00087                    std::inserter(*temp,temp->end()));
00088 for (iter=temp->begin(); iter!=temp->end(); iter++) 
00089     {
00090       std::cout << "Print result Exprset "<< ", " << (*iter)<< "\n";
00091     }
00092 
00093     *mSetPtr = *temp;
00094     return *this; 
00095 }
00096 
00097 ExprDFSet& ExprDFSet::setIntersect(DataFlowSet &other)
00098   {
00099 //std::cout << "ExprDFSet intersect called\n";
00100     ExprDFSet& recastOther
00101         = dynamic_cast<ExprDFSet&>(other);
00102     OA_ptr<ExprTreeSet> temp;
00103     std::cout << "Printing 2 df sets\n";
00104     std::set<OA_ptr<ExprTree> >::iterator iter;
00105     for (iter=mSetPtr->begin(); iter!=mSetPtr->end(); iter++) 
00106     {
00107       std::cout << "Print this Exprset "<< ", " << (*iter)<< "\n";
00108     }
00109     for (iter=recastOther.mSetPtr->begin(); iter!=recastOther.mSetPtr->end(); iter++) 
00110     {
00111       std::cout << "Print other Exprset "<< ", " << (*iter)<< "\n";
00112     }
00113     std::cout << "End exprtree print\n";
00114     temp = new ExprTreeSet;
00115     std::set_intersection(mSetPtr->begin(), mSetPtr->end(),
00116                           recastOther.mSetPtr->begin(), recastOther.mSetPtr->end(),
00117                           std::inserter(*temp,temp->end()));
00118 for (iter=temp->begin(); iter!=temp->end(); iter++) 
00119     {
00120       std::cout << "Print result Exprset "<< ", " << (*iter)<< "\n";
00121     }
00122 
00123     *mSetPtr = *temp;
00124     return *this;
00125   }
00126 
00127 ExprDFSet& ExprDFSet::setDifference(ExprDFSet &other)
00128 {
00129 }
00130 
00131 void ExprDFSet::dump(std::ostream &os)
00132   {
00133      /* os << "ExprDFSet: mSet = ";
00134       // iterate over IRHandle's and print out hvals
00135       std::set<OA_ptr<ExprTree> >::iterator iter;
00136       for (iter=mSetPtr->begin(); iter!=mSetPtr->end(); iter++) {
00137           os << (*iter).hval() << ", ";
00138       }
00139       os << std::endl;*/
00140   }
00141 
00142 
00143 void ExprDFSet::dump(std::ostream &os, OA_ptr<IRHandlesIRInterface> ir)
00144   {
00145       os << "ExprDFSet: mSet = ";
00146       // iterate over IRHandle's and have the IR print them out
00147       std::set<OA_ptr<ExprTree> >::iterator iter;
00148       for (iter=mSetPtr->begin(); iter!=mSetPtr->end(); iter++) {
00149         os << "Print Expr "<< ", "; 
00150           (*iter)->output(*ir);
00151         os << "\n";
00152       }
00153       os << std::endl;
00154   }
00155 
00156 
00157   void ExprDFSet::insert(OA_ptr<ExprTree> h) { 
00158 
00159     std::cout<<"find"<< hasExprTree(h)<<"\n";  
00160     std::cout << "Inside Insert" << h <<"\n";
00161     mSetPtr->insert(h);
00162           std::set<OA_ptr<ExprTree> >::iterator iter;
00163       for (iter=mSetPtr->begin(); iter!=mSetPtr->end(); iter++) {
00164         std::cout << "Print ExprDFSet after insert "<< ", ";
00165       }
00166 
00167  }
00168   void ExprDFSet::remove(OA_ptr<ExprTree> h) { mSetPtr->erase(h); }
00169 
00170   bool ExprDFSet::hasExprTree(OA_ptr<ExprTree> h) { return (mSetPtr->find(h)!=mSetPtr->end()); }
00171 
00172   bool ExprDFSet::empty() { return mSetPtr->empty(); }
00173 
00174   } // end of DataFlow namespace
00175 } // end of OA namespace
00176 

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