From: Eric Anholt Date: Thu, 26 Apr 2012 17:16:52 +0000 (-0700) Subject: glsl: Don't hide the type of struct_declaration_list. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=912a429bc529a017a426f06631b31da1c0eaa3ae;p=mesa.git glsl: Don't hide the type of struct_declaration_list. I've been trying to derive from this for UBO support, and the slightly obfuscated types were putting me over the edge. Reviewed-by: Kenneth Graunke Reviewed-by: Ian Romanick --- diff --git a/src/glsl/ast.h b/src/glsl/ast.h index b096c838c06..7538b58e460 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -417,15 +417,19 @@ struct ast_type_qualifier { const char *interpolation_string() const; }; +class ast_declarator_list; + class ast_struct_specifier : public ast_node { public: - ast_struct_specifier(const char *identifier, ast_node *declarator_list); + ast_struct_specifier(const char *identifier, + ast_declarator_list *declarator_list); virtual void print(void) const; virtual ir_rvalue *hir(exec_list *instructions, struct _mesa_glsl_parse_state *state); const char *name; + /* List of ast_declarator_list * */ exec_list declarations; }; diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index 531d257c9d1..8759863271e 100644 --- a/src/glsl/glsl_parser.yy +++ b/src/glsl/glsl_parser.yy @@ -214,7 +214,7 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg) %type declaration_statement %type jump_statement %type struct_specifier -%type struct_declaration_list +%type struct_declaration_list %type struct_declaration %type struct_declarator %type struct_declarator_list @@ -1479,12 +1479,12 @@ struct_specifier: struct_declaration_list: struct_declaration { - $$ = (ast_node *) $1; + $$ = $1; $1->link.self_link(); } | struct_declaration_list struct_declaration { - $$ = (ast_node *) $1; + $$ = $1; $$->link.insert_before(& $2->link); } ; diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index c19b6f9e6a4..d9ee406cfd4 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -1003,7 +1003,7 @@ ast_struct_specifier::print(void) const ast_struct_specifier::ast_struct_specifier(const char *identifier, - ast_node *declarator_list) + ast_declarator_list *declarator_list) { if (identifier == NULL) { static unsigned anon_count = 1;