ExprDFSet.cpp
Go to the documentation of this file.00001
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
00015 OA_DEBUG_CTRL_MACRO("DEBUG_ExprDFSet:ALL", debug);
00016 }
00017
00018 ExprDFSet::ExprDFSet(const ExprDFSet &other)
00019 {
00020
00021 mSetPtr = new ExprTreeSet;
00022 *mSetPtr= *(other.mSetPtr);
00023
00024
00025 }
00026
00027 OA_ptr<DataFlowSet> ExprDFSet::clone()
00028 {
00029
00030 OA_ptr<ExprDFSet> retval;
00031 retval = new ExprDFSet(*this);
00032 return retval;
00033 }
00034
00035
00036
00037 bool ExprDFSet::operator ==(DataFlowSet &other) const
00038 {
00039
00040 ExprDFSet& recastOther
00041 = dynamic_cast<ExprDFSet&>(other);
00042 return *mSetPtr == *(recastOther.mSetPtr);
00043 }
00044
00045 bool ExprDFSet::operator !=(DataFlowSet &other) const
00046 {
00047
00048 ExprDFSet& recastOther
00049 = dynamic_cast<ExprDFSet&>(other);
00050 return *mSetPtr != *(recastOther.mSetPtr);
00051 }
00052
00053 bool ExprDFSet::operator <(DataFlowSet &other) const
00054 {
00055
00056 ExprDFSet& recastOther
00057 = dynamic_cast<ExprDFSet&>(other);
00058 return *mSetPtr < *(recastOther.mSetPtr);
00059 }
00060
00061 bool ExprDFSet::operator =(DataFlowSet &other) const
00062 {
00063
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
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
00134
00135
00136
00137
00138
00139
00140 }
00141
00142
00143 void ExprDFSet::dump(std::ostream &os, OA_ptr<IRHandlesIRInterface> ir)
00144 {
00145 os << "ExprDFSet: mSet = ";
00146
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 }
00175 }
00176