X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fsyntax.cpp;h=85d805d1b67aeea72ee41bcec1855222732dc5ef;hb=4181ceb89a2d538712c81826da610e7e8583e9a5;hp=e20d6c262eae2525a0a979922c800e9956f39f18;hpb=4c805f55d89919d6971d600102ab4d6d65d56dc3;p=libs%2Fgl.git diff --git a/source/glsl/syntax.cpp b/source/glsl/syntax.cpp index e20d6c26..85d805d1 100644 --- a/source/glsl/syntax.cpp +++ b/source/glsl/syntax.cpp @@ -94,7 +94,9 @@ void Block::visit(NodeVisitor &visitor) Expression::Expression(): - oper(0) + oper(0), + type(0), + lvalue(false) { } @@ -159,6 +161,18 @@ void MemberAccess::visit(NodeVisitor &visitor) } +Swizzle::Swizzle(): + count(0) +{ + fill(components, components+4, 0); +} + +void Swizzle::visit(NodeVisitor &visitor) +{ + visitor.visit(*this); +} + + void UnaryExpression::visit(NodeVisitor &visitor) { visitor.visit(*this); @@ -270,11 +284,24 @@ void ImageTypeDeclaration::visit(NodeVisitor &visitor) } -StructDeclaration::StructDeclaration() +StructDeclaration::StructDeclaration(): + interface_block(0) { members.use_braces = true; } +StructDeclaration::StructDeclaration(const StructDeclaration &other): + TypeDeclaration(other), + members(other.members), + interface_block(0) +{ } + +StructDeclaration::~StructDeclaration() +{ + if(interface_block && interface_block->struct_declaration==this) + interface_block->struct_declaration = 0; +} + void StructDeclaration::visit(NodeVisitor &visitor) { visitor.visit(*this); @@ -319,10 +346,10 @@ void VariableDeclaration::visit(NodeVisitor &visitor) InterfaceBlock::InterfaceBlock(): array(false), + type_declaration(0), + struct_declaration(0), linked_block(0) -{ - members.use_braces = true; -} +{ } InterfaceBlock::InterfaceBlock(const InterfaceBlock &other): Statement(other), @@ -331,6 +358,8 @@ InterfaceBlock::InterfaceBlock(const InterfaceBlock &other): members(other.members), instance_name(other.instance_name), array(other.array), + type_declaration(0), + struct_declaration(0), linked_block(0) { } @@ -338,6 +367,8 @@ InterfaceBlock::~InterfaceBlock() { if(linked_block && linked_block->linked_block==this) linked_block->linked_block = 0; + if(struct_declaration && struct_declaration->interface_block==this) + struct_declaration->interface_block = 0; } void InterfaceBlock::visit(NodeVisitor &visitor) @@ -347,7 +378,8 @@ void InterfaceBlock::visit(NodeVisitor &visitor) FunctionDeclaration::FunctionDeclaration(): - definition(0) + definition(0), + return_type_declaration(0) { } FunctionDeclaration::FunctionDeclaration(const FunctionDeclaration &other): @@ -356,7 +388,8 @@ FunctionDeclaration::FunctionDeclaration(const FunctionDeclaration &other): name(other.name), parameters(other.parameters), body(other.body), - definition(other.definition==&other ? this : 0) + definition(other.definition==&other ? this : 0), + return_type_declaration(0) { } void FunctionDeclaration::visit(NodeVisitor &visitor)