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
1.7.1