X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fsyntax.h;h=f7e778b89ef65d417afd1f44751930311c5e94ed;hb=64d98b0b4fb3214a3ca67ab1b239c120748e8e35;hp=4ff05fa1a09f9275760dcbfe617610dc6d21a2e3;hpb=f08bd843fbe63a0bf5bcbc21308f2751d08f00c1;p=libs%2Fgl.git diff --git a/source/glsl/syntax.h b/source/glsl/syntax.h index 4ff05fa1..f7e778b8 100644 --- a/source/glsl/syntax.h +++ b/source/glsl/syntax.h @@ -110,7 +110,7 @@ struct Block: Node bool use_braces; std::map types; std::map variables; - std::set interfaces; + std::map interfaces; Block *parent; Block(); @@ -153,6 +153,18 @@ struct VariableReference: Expression virtual void visit(NodeVisitor &); }; +struct InterfaceBlockReference: Expression +{ + std::string name; + InterfaceBlock *declaration; + + InterfaceBlockReference(); + InterfaceBlockReference(const InterfaceBlockReference &); + + virtual InterfaceBlockReference *clone() const { return new InterfaceBlockReference(*this); } + virtual void visit(NodeVisitor &); +}; + struct MemberAccess: Expression { NodePtr left; @@ -305,8 +317,10 @@ struct InterfaceBlock: Statement Block members; std::string instance_name; bool array; + InterfaceBlock *linked_block; InterfaceBlock(); + InterfaceBlock(const InterfaceBlock &); virtual InterfaceBlock *clone() const { return new InterfaceBlock(*this); } virtual void visit(NodeVisitor &);