virtual void visit(NodeVisitor &);
};
+struct Precision: Node
+{
+ std::string precision;
+ std::string type;
+
+ virtual Precision *clone() const { return new Precision(*this); }
+ virtual void visit(NodeVisitor &);
+};
+
struct Layout: Node
{
struct Qualifier
bool constant;
std::string sampling;
std::string interface;
+ std::string precision;
std::string type;
StructDeclaration *type_declaration;
std::string name;
virtual void visit(NodeVisitor &);
};
+struct Jump: Node
+{
+ std::string keyword;
+
+ virtual Jump *clone() const { return new Jump(*this); }
+ virtual void visit(NodeVisitor &);
+};
+
struct NodeVisitor
{
virtual ~NodeVisitor() { }
virtual void visit(FunctionCall &) { }
virtual void visit(ExpressionStatement &) { }
virtual void visit(Import &) { }
+ virtual void visit(Precision &) { }
virtual void visit(Layout &) { }
virtual void visit(InterfaceLayout &) { }
virtual void visit(StructDeclaration &) { }
virtual void visit(Iteration &) { }
virtual void visit(Passthrough &) { }
virtual void visit(Return &) { }
+ virtual void visit(Jump &) { }
};
struct TraversingVisitor: NodeVisitor
{
+ using NodeVisitor::visit;
virtual void visit(Block &);
virtual void visit(ParenthesizedExpression &);
virtual void visit(MemberAccess &);