]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/generate.cpp
Refactor scope management
[libs/gl.git] / source / glsl / generate.cpp
index 952f1f0bfa4f1bddb2e1bc7585f3829fda9ce78b..0662f9891f8adec9cbd6bf32da8f47f3b75bed1b 100644 (file)
@@ -73,10 +73,9 @@ void DeclarationCombiner::visit(VariableDeclaration &var)
 }
 
 
-void BlockResolver::visit(Block &block)
+void BlockResolver::enter(Block &block)
 {
        block.parent = current_block;
-       TraversingVisitor::visit(block);
 }
 
 void BlockResolver::visit(InterfaceBlock &iface)
@@ -104,12 +103,9 @@ Block *VariableResolver::next_block(Block &block)
        return block.parent ? block.parent : &block!=builtins ? builtins : 0;
 }
 
-void VariableResolver::visit(Block &block)
+void VariableResolver::enter(Block &block)
 {
-       if(current_block!=&block)
-               block.variables.clear();
-
-       TraversingVisitor::visit(block);
+       block.variables.clear();
 }
 
 void VariableResolver::visit(VariableReference &var)
@@ -222,20 +218,6 @@ void VariableResolver::visit(InterfaceBlock &iface)
        TraversingVisitor::visit(iface);
 }
 
-void VariableResolver::visit(FunctionDeclaration &func)
-{
-       SetForScope<Block *> set_block(current_block, &func.body);
-       func.body.variables.clear();
-       TraversingVisitor::visit(func);
-}
-
-void VariableResolver::visit(Iteration &iter)
-{
-       SetForScope<Block *> set_block(current_block, &iter.body);
-       iter.body.variables.clear();
-       TraversingVisitor::visit(iter);
-}
-
 
 void FunctionResolver::visit(FunctionCall &call)
 {