]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/visitor.cpp
Rearrange secondary operations in GLSL compiler
[libs/gl.git] / source / glsl / visitor.cpp
index 91e75b7006b40cf0d621e0a3498c5cf2e5431fe1..98777ae9b0541f97af5b4156a7725235d9cb24d6 100644 (file)
@@ -146,14 +146,15 @@ void BlockModifier::visit(Block &block)
 }
 
 
-NodeRemover::NodeRemover(const set<Node *> &r):
+NodeRemover::NodeRemover():
        stage(0),
-       to_remove(r)
+       to_remove(0)
 { }
 
-void NodeRemover::apply(Stage &s)
+void NodeRemover::apply(Stage &s, const set<Node *> &tr)
 {
        stage = &s;
+       to_remove = &tr;
        visit(s.content);
 }
 
@@ -162,7 +163,7 @@ void NodeRemover::visit(Block &block)
        for(NodeList<Statement>::iterator i=block.body.begin(); i!=block.body.end(); )
        {
                (*i)->visit(*this);
-               if(to_remove.count(i->get()))
+               if(to_remove->count(i->get()))
                        block.body.erase(i++);
                else
                        ++i;
@@ -171,7 +172,7 @@ void NodeRemover::visit(Block &block)
 
 void NodeRemover::visit(VariableDeclaration &var)
 {
-       if(to_remove.count(&var))
+       if(to_remove->count(&var))
        {
                stage->in_variables.erase(var.name);
                stage->out_variables.erase(var.name);
@@ -179,13 +180,13 @@ void NodeRemover::visit(VariableDeclaration &var)
                if(var.linked_declaration)
                        var.linked_declaration->linked_declaration = 0;
        }
-       else if(var.init_expression && to_remove.count(var.init_expression.get()))
+       else if(var.init_expression && to_remove->count(var.init_expression.get()))
                var.init_expression = 0;
 }
 
 void NodeRemover::visit(Iteration &iter)
 {
-       if(to_remove.count(iter.init_statement.get()))
+       if(to_remove->count(iter.init_statement.get()))
                iter.init_statement = 0;
        TraversingVisitor::visit(iter);
 }