X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fdebug.cpp;fp=source%2Fglsl%2Fdebug.cpp;h=2e8433f28287713ca215c0a33e0df669cd6b1f55;hp=e9eb18c819d00522e4877f49dd04f51b582d2352;hb=aa834c69698b5f0804a19fee4ec2e632a51e38c2;hpb=975b4d55948ecf57cfab2fb3cb124fbd442a669c diff --git a/source/glsl/debug.cpp b/source/glsl/debug.cpp index e9eb18c8..2e8433f2 100644 --- a/source/glsl/debug.cpp +++ b/source/glsl/debug.cpp @@ -60,10 +60,14 @@ void DumpTree::append_subtree(const vector &branches) vector::const_iterator j = increment(i, branches); if(!j->text.empty()) { + append(j->text); if(j->node) - annotated_branch(j->text, *j->node); - else - append(j->text); + { + begin_sub(); + last_branch(); + j->node->visit(*this); + end_sub(); + } } else j->node->visit(*this); @@ -97,15 +101,6 @@ void DumpTree::end_sub() tree.back() = BRANCH; } -void DumpTree::annotated_branch(const string &annotation, Node &node) -{ - append(annotation); - begin_sub(); - last_branch(); - node.visit(*this); - end_sub(); -} - unsigned DumpTree::get_label(const Node &node) { unsigned &label = node_labels[&node]; @@ -136,20 +131,11 @@ void DumpTree::visit(Block &block) for(std::map::const_iterator i=block.variables.begin(); i!=block.variables.end(); ++i) append(format("Variable: %%%d %s %s", get_label(*i->second), i->second->type, i->first)); - bool labeled_body = !block.variables.empty(); - if(labeled_body) - { - last_branch(); - append("Body"); - begin_sub(); - } for(NodeList::const_iterator i=block.body.begin(); i!=block.body.end(); ) { NodeList::const_iterator j = increment(i, block.body); (*j)->visit(*this); } - if(labeled_body) - end_sub(); end_sub(); } @@ -411,9 +397,9 @@ void DumpTree::visit(InterfaceBlock &iface) if(iface.type_declaration) append(format("Type: %%%d %s", get_label(*iface.type_declaration), iface.type_declaration->name)); if(iface.layout) - branches.push_back(Branch("Layout", iface.layout.get())); + branches.push_back(iface.layout.get()); if(iface.members) - branches.push_back(Branch("Members", iface.members.get())); + branches.push_back(iface.members.get()); append_subtree(branches); } @@ -445,9 +431,9 @@ void DumpTree::visit(Conditional &cond) vector branches; branches.push_back(cond.condition.get()); - branches.push_back(&cond.body); + branches.push_back(Branch("then", &cond.body)); if(!cond.else_body.body.empty()) - branches.push_back(&cond.else_body); + branches.push_back(Branch("else", &cond.else_body)); append_subtree(branches); } @@ -455,16 +441,15 @@ void DumpTree::visit(Iteration &iter) { append(iter, "for()"); - begin_sub(); + vector branches; if(iter.init_statement) - annotated_branch("Initialization", *iter.init_statement); + branches.push_back(Branch("Initialization", iter.init_statement.get())); if(iter.condition) - annotated_branch("Condition", *iter.condition); + branches.push_back(Branch("Condition", iter.condition.get())); if(iter.loop_expression) - annotated_branch("Loop", *iter.loop_expression); - last_branch(); - annotated_branch("Body", iter.body); - end_sub(); + branches.push_back(Branch("Loop", iter.loop_expression.get())); + branches.push_back(&iter.body); + append_subtree(branches); } void DumpTree::visit(Passthrough &pass)