X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fprogramparser.cpp;h=596ed0456b8e789ec2bd5ac636790a7d97bc8c4c;hb=8812fe9fc71b997246ddfdedb8a91932b679d2d3;hp=ddea96409dea4475e911e94fac01fda171451b57;hpb=f632bf388a58b036e265f3789c797beff5ab063a;p=libs%2Fgl.git diff --git a/source/programparser.cpp b/source/programparser.cpp index ddea9640..596ed045 100644 --- a/source/programparser.cpp +++ b/source/programparser.cpp @@ -335,7 +335,24 @@ Node *ProgramParser::parse_global_declaration() if(token=="import") return parse_import(); else if(token=="layout") - return parse_layout(); + { + RefPtr layout = parse_layout(); + token = peek_token(); + if(is_interface_qualifier(token) && peek_token(1)==";") + { + RefPtr iface_lo = new InterfaceLayout; + iface_lo->layout.qualifiers = layout->qualifiers; + iface_lo->interface = parse_token(); + expect(";"); + return iface_lo.release(); + } + else + { + VariableDeclaration *var = parse_variable_declaration(); + var->layout = layout.release(); + return var; + } + } else if(token=="struct") return parse_struct_declaration(); else if(is_sampling_qualifier(token) || token=="const") @@ -421,8 +438,6 @@ Layout *ProgramParser::parse_layout() expect(","); } expect(")"); - layout->interface = parse_token(); - expect(";"); return layout.release(); }