OutputNewExprTreeVisitor.cpp

Go to the documentation of this file.
00001 
00015 #include <OpenAnalysis/NewExprTree/OutputNewExprTreeVisitor.hpp>
00016 
00017 static bool debug = false;
00018 
00019 namespace OA {
00020 
00021 
00022 OutputNewExprTreeVisitor::OutputNewExprTreeVisitor(IRHandlesIRInterface& ir)
00023         :mIR(ir)
00024 {
00025   mId = 0;
00026 }
00027 
00030 void OutputNewExprTreeVisitor::visitNode(NewExprTree::Node&)
00031 {
00032     std::cout << "visitNode\n";
00033 }
00034 
00035 void OutputNewExprTreeVisitor::visitOpNode(NewExprTree::OpNode& n)
00036 {
00037   int Id = mId;
00038   ostringstream label;
00039   label << "ET OpNode ( " << n.getOpInterface()->toString() << " )";
00040   sOutBuild->graphNodeStart(mId);
00041   sOutBuild->graphNodeLabel(label.str());
00042   mId++;
00043 
00044 
00045   if(n.num_children() >= 1)
00046   {
00047     // if so then visit each child
00048     OA_ptr<NewExprTree::Node> cetNodePtr;
00049     NewExprTree::ChildNodesIterator cNodesIter(n);
00050 
00051     for(;cNodesIter.isValid(); ++cNodesIter, ++mId) {
00052       cetNodePtr = cNodesIter.current();
00053  
00054       sOutBuild->graphEdgeStart();
00055         sOutBuild->graphEdgeLabelStart();
00056         sOutBuild->graphEdgeSourceNode(Id);
00057           cetNodePtr->acceptVisitor(*this);
00058         sOutBuild->graphEdgeLabelEnd();
00059     }
00060     
00061   } else {
00062       assert(0);
00063   }
00064 
00065   mId--;
00066 }
00067 
00068 void OutputNewExprTreeVisitor::visitCallNode(NewExprTree::CallNode& n)
00069 {
00070     CallHandle call = n.getHandle();
00071     ostringstream label;
00072     label << "ET CallNode ( " << mIR.toString(call) << " )";
00073 
00074     sOutBuild->graphNodeStart(mId);
00075     sOutBuild->graphNodeLabel(label.str());
00076 }
00077 
00078 void OutputNewExprTreeVisitor::visitMemRefNode(NewExprTree::MemRefNode& n)
00079 {
00080     ostringstream label;
00081     label << "ET MemRefNode ( " << " )";
00082 
00083     sOutBuild->graphNodeStart(mId);
00084     sOutBuild->graphNodeLabel(label.str());
00085 }
00086 
00087 void OutputNewExprTreeVisitor::visitConstSymNode(NewExprTree::ConstSymNode& n)
00088 {
00089     ConstSymHandle simnode = n.getHandle();
00090     ostringstream label;
00091     label << "ET ConstSymNode ( " << mIR.toString(simnode) << " )";
00092 
00093     sOutBuild->graphNodeStart(mId);
00094     sOutBuild->graphNodeLabel(label.str());
00095 }
00096 
00097 void OutputNewExprTreeVisitor::visitConstValNode(NewExprTree::ConstValNode& n)
00098 {
00099     ostringstream label;
00100     label << "ET ConstValNode ( " << n.getConstValInterface() << " )";
00101 
00102     sOutBuild->graphNodeStart(mId);
00103     sOutBuild->graphNodeLabel(label.str());
00104 }
00105 
00106 void OutputNewExprTreeVisitor::output(IRHandlesIRInterface&)
00107 {
00108 }
00109 
00110 
00111 
00112 } // end of OA namespace
00113