X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fvisitor.cpp;h=98777ae9b0541f97af5b4156a7725235d9cb24d6;hb=ff8a0248f1a3c0c1f48f670867bc9106c898c55b;hp=91e75b7006b40cf0d621e0a3498c5cf2e5431fe1;hpb=05597fbb3671dfed4776bc5223958c85e780345e;p=libs%2Fgl.git diff --git a/source/glsl/visitor.cpp b/source/glsl/visitor.cpp index 91e75b70..98777ae9 100644 --- a/source/glsl/visitor.cpp +++ b/source/glsl/visitor.cpp @@ -146,14 +146,15 @@ void BlockModifier::visit(Block &block) } -NodeRemover::NodeRemover(const set &r): +NodeRemover::NodeRemover(): stage(0), - to_remove(r) + to_remove(0) { } -void NodeRemover::apply(Stage &s) +void NodeRemover::apply(Stage &s, const set &tr) { stage = &s; + to_remove = &tr; visit(s.content); } @@ -162,7 +163,7 @@ void NodeRemover::visit(Block &block) for(NodeList::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); }