X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fdebug.cpp;h=8bdce457f0d1c318d56dd193c57309f30bdd0646;hb=48461f515f2619ab480b4d6c1d61deaf91e73854;hp=e9eb18c819d00522e4877f49dd04f51b582d2352;hpb=1205396c4cfdce84cf6559557ee7cb268a8c361c;p=libs%2Fgl.git diff --git a/source/glsl/debug.cpp b/source/glsl/debug.cpp index e9eb18c8..8bdce457 100644 --- a/source/glsl/debug.cpp +++ b/source/glsl/debug.cpp @@ -17,15 +17,8 @@ const std::string &DumpTree::apply(Stage &stage) for(std::map::const_iterator i=stage.types.begin(); i!=stage.types.end(); ++i) append(format("Type: %%%d %s", get_label(*i->second), i->first)); - set seen_interfaces; for(std::map::const_iterator i=stage.interface_blocks.begin(); i!=stage.interface_blocks.end(); ++i) - if(seen_interfaces.insert(i->second).second) - { - string text = format("Interface block: %%%d %s %s", get_label(*i->second), i->second->interface, i->second->block_name); - if(!i->second->instance_name.empty()) - text += format(" %s", i->second->instance_name); - append(text); - } + append(format("Interface block: %%%d %s", get_label(*i->second), i->first)); for(std::map::const_iterator i=stage.functions.begin(); i!=stage.functions.end(); ++i) append(format("Function: %%%d %s", get_label(*i->second), i->first)); @@ -60,10 +53,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 +94,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 +124,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(); } @@ -409,11 +388,11 @@ void DumpTree::visit(InterfaceBlock &iface) vector branches; if(iface.type_declaration) - append(format("Type: %%%d %s", get_label(*iface.type_declaration), iface.type_declaration->name)); + branches.push_back(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 +424,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 +434,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)