#include <map>
#include <string>
#include <vector>
+#include "extension.h"
namespace Msp {
namespace GL {
};
std::vector<Qualifier> qualifiers;
- std::string interface;
virtual Layout *clone() const { return new Layout(*this); }
virtual void visit(NodeVisitor &);
};
+struct InterfaceLayout: Node
+{
+ std::string interface;
+ Layout layout;
+
+ virtual InterfaceLayout *clone() const { return new InterfaceLayout(*this); }
+ virtual void visit(NodeVisitor &);
+};
+
struct StructDeclaration: Node
{
std::string name;
NodePtr<Expression> array_size;
NodePtr<Expression> init_expression;
VariableDeclaration *linked_declaration;
+ NodePtr<Layout> layout;
VariableDeclaration();
virtual void visit(ExpressionStatement &) { }
virtual void visit(Import &) { }
virtual void visit(Layout &) { }
+ virtual void visit(InterfaceLayout &) { }
virtual void visit(StructDeclaration &) { }
virtual void visit(VariableDeclaration &) { }
virtual void visit(InterfaceBlock &) { }
virtual void visit(BinaryExpression &);
virtual void visit(FunctionCall &);
virtual void visit(ExpressionStatement &);
+ virtual void visit(InterfaceLayout &);
virtual void visit(StructDeclaration &);
virtual void visit(VariableDeclaration &);
virtual void visit(InterfaceBlock &);
ProgramSyntax::Block content;
std::map<std::string, VariableDeclaration *> in_variables;
std::map<std::string, VariableDeclaration *> out_variables;
+ std::map<std::string, unsigned> locations;
+ Version required_version;
Stage(StageType);
};