}
-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);
}
FunctionCall::FunctionCall():
+ declaration(0),
constructor(false)
{ }
}
+void Import::visit(NodeVisitor &visitor)
+{
+ visitor.visit(*this);
+}
+
+
void Layout::visit(NodeVisitor &visitor)
{
visitor.visit(*this);
VariableDeclaration::VariableDeclaration():
constant(false),
type_declaration(0),
- array(false)
+ array(false),
+ linked_declaration(0)
{ }
void VariableDeclaration::visit(NodeVisitor &visitor)
}
-InterfaceBlock::InterfaceBlock()
+InterfaceBlock::InterfaceBlock():
+ array(false)
{
members.use_braces = true;
}
FunctionDeclaration::FunctionDeclaration():
- definition(false)
+ definition(0)
+{ }
+
+FunctionDeclaration::FunctionDeclaration(const FunctionDeclaration &other):
+ return_type(other.return_type),
+ name(other.name),
+ parameters(other.parameters),
+ definition(other.definition==&other ? this : other.definition),
+ body(other.body)
{ }
void FunctionDeclaration::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<BinaryExpression &>(assign));
+}
+
+
void TraversingVisitor::visit(Block &block)
{
for(list<NodePtr<Node> >::iterator i=block.body.begin(); i!=block.body.end(); ++i)
iter.body.visit(*this);
}
+void TraversingVisitor::visit(Passthrough &pass)
+{
+ if(pass.subscript)
+ pass.subscript->visit(*this);
+}
+
void TraversingVisitor::visit(Return &ret)
{
if(ret.expression)
}
-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