X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramsyntax.cpp;h=83cfbb089b4d5d3278722b384c82a91a382aa4d1;hb=2b073e0a3808f8ece4b93669395e4b812214cf5d;hp=f64493eed2a116fae42a88791a6183a084c06e0a;hpb=a36992487d018d8801ead6980b362b00a2f5f5c5;p=libs%2Fgl.git diff --git a/source/programsyntax.cpp b/source/programsyntax.cpp index f64493ee..83cfbb08 100644 --- a/source/programsyntax.cpp +++ b/source/programsyntax.cpp @@ -54,11 +54,18 @@ void UnaryExpression::visit(NodeVisitor &visitor) } -BinaryExpression::BinaryExpression(): - assignment(false) +void BinaryExpression::visit(NodeVisitor &visitor) +{ + visitor.visit(*this); +} + + +Assignment::Assignment(): + self_referencing(false), + target_declaration(0) { } -void BinaryExpression::visit(NodeVisitor &visitor) +void Assignment::visit(NodeVisitor &visitor) { visitor.visit(*this); } @@ -100,7 +107,8 @@ void StructDeclaration::visit(NodeVisitor &visitor) VariableDeclaration::VariableDeclaration(): constant(false), type_declaration(0), - array(false) + array(false), + linked_declaration(0) { } void VariableDeclaration::visit(NodeVisitor &visitor) @@ -109,7 +117,8 @@ void VariableDeclaration::visit(NodeVisitor &visitor) } -InterfaceBlock::InterfaceBlock() +InterfaceBlock::InterfaceBlock(): + array(false) { members.use_braces = true; } @@ -136,18 +145,30 @@ void Conditional::visit(NodeVisitor &visitor) } -void Return::visit(NodeVisitor &visitor) +void Iteration::visit(NodeVisitor &visitor) { visitor.visit(*this); } -void Iteration::visit(NodeVisitor &visitor) +void Passthrough::visit(NodeVisitor &visitor) { visitor.visit(*this); } +void Return::visit(NodeVisitor &visitor) +{ + visitor.visit(*this); +} + + +void NodeVisitor::visit(Assignment &assign) +{ + visit(static_cast(assign)); +} + + void TraversingVisitor::visit(Block &block) { for(list >::iterator i=block.body.begin(); i!=block.body.end(); ++i) @@ -228,6 +249,12 @@ void TraversingVisitor::visit(Iteration &iter) iter.body.visit(*this); } +void TraversingVisitor::visit(Passthrough &pass) +{ + if(pass.subscript) + pass.subscript->visit(*this); +} + void TraversingVisitor::visit(Return &ret) { if(ret.expression) @@ -235,17 +262,14 @@ void TraversingVisitor::visit(Return &ret) } -Context::Context(ContextType t): +Stage::Stage(StageType t): type(t), - present(false) + previous(0) { } Module::Module(): - global_context(GLOBAL), - vertex_context(VERTEX), - geometry_context(GEOMETRY), - fragment_context(FRAGMENT) + shared(SHARED) { } } // namespace ProgramSyntax