]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/debug.cpp
Refactor interface management
[libs/gl.git] / source / glsl / debug.cpp
index 2bc3a893e099384e16c663cfdfd601e3a945d85d..b3eabd75de3c2aacab570ef6531b4ba4ce556fa5 100644 (file)
@@ -12,12 +12,8 @@ const std::string &DumpTree::apply(Stage &stage)
 {
        formatted = format("Stage %s\n", Stage::get_stage_name(stage.type));
        tree.push_back(BRANCH);
-       for(map<string, VariableDeclaration *>::const_iterator i=stage.in_variables.begin(); i!=stage.in_variables.end(); ++i)
-               append(format("Input: %%%d %s %s", get_label(*i->second), i->second->type, i->first));
-       for(map<string, VariableDeclaration *>::const_iterator i=stage.out_variables.begin(); i!=stage.out_variables.end(); ++i)
-               append(format("Output: %%%d %s %s", get_label(*i->second), i->second->type, i->first));
        last_branch();
-       visit(stage.content);
+       stage.content.visit(*this);
        return formatted;
 }
 
@@ -88,6 +84,9 @@ void DumpTree::visit(Block &block)
        for(std::map<string, VariableDeclaration *>::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));
 
+       for(std::set<InterfaceBlock *>::const_iterator i=block.interfaces.begin(); i!=block.interfaces.end(); ++i)
+               append(format("Interface %%%d %s %s", get_label(*i->second), i->second->interface, i->second->name));
+
        bool labeled_body = (!block.types.empty() || !block.variables.empty());
        if(labeled_body)
        {
@@ -127,7 +126,11 @@ void DumpTree::visit(VariableReference &var)
 
 void DumpTree::visit(MemberAccess &memacc)
 {
-       annotated_branch(format("Member access: .%s", memacc.member), *memacc.left);
+       string text = "Member access:";
+       if(memacc.declaration)
+               text += format(" %%%d", get_label(*memacc.declaration));
+       text += format(" .%s", memacc.member);
+       annotated_branch(text, *memacc.left);
 }
 
 void DumpTree::visit(UnaryExpression &unary)
@@ -241,7 +244,12 @@ void DumpTree::visit(VariableDeclaration &var)
        if(!var.init_expression)
                last_branch();
        if(var.array)
-               annotated_branch("Array []", *var.array_size);
+       {
+               if(var.array_size)
+                       annotated_branch("Array []", *var.array_size);
+               else
+                       append("Array []");
+       }
 
        last_branch();
        if(var.init_expression)
@@ -300,6 +308,18 @@ void DumpTree::visit(Iteration &iter)
        end_sub();
 }
 
+void DumpTree::visit(Passthrough &pass)
+{
+       append("passthrough");
+       if(pass.subscript)
+       {
+               begin_sub();
+               last_branch();
+               pass.subscript->visit(*this);
+               end_sub();
+       }
+}
+
 void DumpTree::visit(Return &ret)
 {
        if(ret.expression)