From aa834c69698b5f0804a19fee4ec2e632a51e38c2 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Thu, 18 Mar 2021 13:21:09 +0200 Subject: [PATCH] Some touch-up of the debug dump Since nodes are now easily distinguished, there's no need for special labeling branches in many cases. --- source/glsl/debug.cpp | 49 +++++++++++++++---------------------------- source/glsl/debug.h | 1 - 2 files changed, 17 insertions(+), 33 deletions(-) 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) diff --git a/source/glsl/debug.h b/source/glsl/debug.h index 065e7f5d..73976904 100644 --- a/source/glsl/debug.h +++ b/source/glsl/debug.h @@ -47,7 +47,6 @@ private: void begin_sub(); void last_branch(); void end_sub(); - void annotated_branch(const std::string &, Node &); unsigned get_label(const Node &); std::string format_type(TypeDeclaration *); -- 2.43.0