]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/generate.cpp
Minor, largely cosmetic tweaks
[libs/gl.git] / source / glsl / generate.cpp
index 9adfb93d5cbfab11984c6bcf5f5a6a8315f6d494..90128a18e1a7bbdfcaa023579c9665cac27c9a78 100644 (file)
@@ -118,8 +118,8 @@ VariableResolver::VariableResolver():
        stage(0),
        r_members(0),
        record_target(false),
-       r_assignment_target(0),
-       r_self_referencing(false)
+       r_self_referencing(false),
+       r_assignment_target(0)
 { }
 
 void VariableResolver::apply(Stage &s)
@@ -228,12 +228,19 @@ void VariableResolver::visit(MemberAccess &memacc)
        }
 }
 
+void VariableResolver::visit(UnaryExpression &unary)
+{
+       TraversingVisitor::visit(unary);
+       r_members = 0;
+       r_iface_ref = 0;
+}
+
 void VariableResolver::visit(BinaryExpression &binary)
 {
        if(binary.oper->token[0]=='[')
        {
                {
-                       SetForScope<bool> set(record_target, false);
+                       SetFlag set(record_target, false);
                        binary.right->visit(*this);
                }
                r_members = 0;
@@ -241,13 +248,14 @@ void VariableResolver::visit(BinaryExpression &binary)
                binary.left->visit(*this);
                if(r_iface_ref)
                        binary.left = r_iface_ref;
-               r_iface_ref = 0;
        }
        else
        {
                TraversingVisitor::visit(binary);
                r_members = 0;
        }
+
+       r_iface_ref = 0;
 }
 
 void VariableResolver::visit(Assignment &assign)
@@ -256,13 +264,22 @@ void VariableResolver::visit(Assignment &assign)
                SetFlag set(record_target);
                r_assignment_target = 0;
                assign.left->visit(*this);
+               assign.target_declaration = r_assignment_target;
        }
 
        r_self_referencing = false;
        assign.right->visit(*this);
-
        assign.self_referencing = (r_self_referencing || assign.oper->token[0]!='=');
-       assign.target_declaration = r_assignment_target;
+
+       r_members = 0;
+       r_iface_ref = 0;
+}
+
+void VariableResolver::visit(FunctionCall &call)
+{
+       TraversingVisitor::visit(call);
+       r_members = 0;
+       r_iface_ref = 0;
 }
 
 void VariableResolver::visit(StructDeclaration &strct)
@@ -398,7 +415,6 @@ bool InterfaceGenerator::generate_interface(VariableDeclaration &var, const stri
        iface_var->sampling = var.sampling;
        iface_var->interface = iface;
        iface_var->type = var.type;
-       iface_var->type_declaration = var.type_declaration;
        iface_var->name = name;
        if(stage->type==Stage::GEOMETRY && !copy_block)
                iface_var->array = ((var.array && var.interface!="in") || iface=="in");