X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fvisitor.cpp;fp=source%2Fglsl%2Fvisitor.cpp;h=8c8056c56352c99a56ca3a7e5b21e298026e5fbe;hb=2a9f8f3803e1b57e0e5325454266d4e701b38cc5;hp=dfe2d8d46523a00d83b024f1e13dc261db36703d;hpb=daff631cf87db75bcae616605e759d281258d9e4;p=libs%2Fgl.git diff --git a/source/glsl/visitor.cpp b/source/glsl/visitor.cpp index dfe2d8d4..8c8056c5 100644 --- a/source/glsl/visitor.cpp +++ b/source/glsl/visitor.cpp @@ -16,47 +16,52 @@ void TraversingVisitor::visit(Block &block) (*i)->visit(*this); } +void TraversingVisitor::visit(RefPtr &expr) +{ + expr->visit(*this); +} + void TraversingVisitor::visit(ParenthesizedExpression &parexpr) { - parexpr.expression->visit(*this); + visit(parexpr.expression); } void TraversingVisitor::visit(MemberAccess &memacc) { - memacc.left->visit(*this); + visit(memacc.left); } void TraversingVisitor::visit(Swizzle &swizzle) { - swizzle.left->visit(*this); + visit(swizzle.left); } void TraversingVisitor::visit(UnaryExpression &unary) { - unary.expression->visit(*this); + visit(unary.expression); } void TraversingVisitor::visit(BinaryExpression &binary) { - binary.left->visit(*this); - binary.right->visit(*this); + visit(binary.left); + visit(binary.right); } void TraversingVisitor::visit(Assignment &assign) { - assign.left->visit(*this); - assign.right->visit(*this); + visit(assign.left); + visit(assign.right); } void TraversingVisitor::visit(FunctionCall &call) { for(NodeArray::iterator i=call.arguments.begin(); i!=call.arguments.end(); ++i) - (*i)->visit(*this); + visit(*i); } void TraversingVisitor::visit(ExpressionStatement &expr) { - expr.expression->visit(*this); + visit(expr.expression); } void TraversingVisitor::visit(InterfaceLayout &layout) @@ -74,9 +79,9 @@ void TraversingVisitor::visit(VariableDeclaration &var) if(var.layout) var.layout->visit(*this); if(var.init_expression) - var.init_expression->visit(*this); + visit(var.init_expression); if(var.array_size) - var.array_size->visit(*this); + visit(var.array_size); } void TraversingVisitor::visit(InterfaceBlock &iface) @@ -96,7 +101,7 @@ void TraversingVisitor::visit(FunctionDeclaration &func) void TraversingVisitor::visit(Conditional &cond) { - cond.condition->visit(*this); + visit(cond.condition); cond.body.visit(*this); cond.else_body.visit(*this); } @@ -108,22 +113,22 @@ void TraversingVisitor::visit(Iteration &iter) if(iter.init_statement) iter.init_statement->visit(*this); if(iter.condition) - iter.condition->visit(*this); + visit(iter.condition); iter.body.visit(*this); if(iter.loop_expression) - iter.loop_expression->visit(*this); + visit(iter.loop_expression); } void TraversingVisitor::visit(Passthrough &pass) { if(pass.subscript) - pass.subscript->visit(*this); + visit(pass.subscript); } void TraversingVisitor::visit(Return &ret) { if(ret.expression) - ret.expression->visit(*this); + visit(ret.expression); }