]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/resolve.cpp
Refactor add_to_chain as a common utility function
[libs/gl.git] / source / glsl / resolve.cpp
index c5a507a222a96558a7582d72b8725216889d9fa7..bf32326f249defc16224efb11b10ed3a5a6c7244 100644 (file)
@@ -281,13 +281,6 @@ void VariableResolver::visit(InterfaceBlockReference &iface)
        check_assignment_target(iface.declaration);
 }
 
-void VariableResolver::add_to_chain(Assignment::Target::ChainType type, unsigned index)
-{
-       if(r_assignment_target.chain_len<7)
-               r_assignment_target.chain[r_assignment_target.chain_len] = type | min<unsigned>(index, 0x3F);
-       ++r_assignment_target.chain_len;
-}
-
 void VariableResolver::visit(MemberAccess &memacc)
 {
        TraversingVisitor::visit(memacc);
@@ -304,7 +297,7 @@ void VariableResolver::visit(MemberAccess &memacc)
                                ++index;
 
                        if(record_target)
-                               add_to_chain(Assignment::Target::MEMBER, index);
+                               add_to_chain(r_assignment_target, Assignment::Target::MEMBER, index);
                }
        }
        else if(BasicTypeDeclaration *basic = dynamic_cast<BasicTypeDeclaration *>(memacc.left->type))
@@ -349,7 +342,7 @@ void VariableResolver::visit(Swizzle &swizzle)
                unsigned mask = 0;
                for(unsigned i=0; i<swizzle.count; ++i)
                        mask |= 1<<swizzle.components[i];
-               add_to_chain(Assignment::Target::SWIZZLE, mask);
+               add_to_chain(r_assignment_target, Assignment::Target::SWIZZLE, mask);
        }
 }
 
@@ -371,7 +364,7 @@ void VariableResolver::visit(BinaryExpression &binary)
                        if(Literal *literal_subscript = dynamic_cast<Literal *>(binary.right.get()))
                                if(literal_subscript->value.check_type<int>())
                                        index = literal_subscript->value.value<int>();
-                       add_to_chain(Assignment::Target::ARRAY, index);
+                       add_to_chain(r_assignment_target, Assignment::Target::ARRAY, index);
                }
        }
        else