diff options
author | Eric Anholt <eric@anholt.net> | 2012-04-26 10:16:52 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2012-07-09 11:12:18 -0700 |
commit | 912a429bc529a017a426f06631b31da1c0eaa3ae (patch) | |
tree | 833d049708e6c6199edff8e81bba5e771bb1ec8f | |
parent | 532e99cbf26d175220eac245b12011939ea07d0c (diff) |
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 <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
-rw-r--r-- | src/glsl/ast.h | 6 | ||||
-rw-r--r-- | src/glsl/glsl_parser.yy | 6 | ||||
-rw-r--r-- | src/glsl/glsl_parser_extras.cpp | 2 |
3 files changed, 9 insertions, 5 deletions
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 <node> declaration_statement %type <node> jump_statement %type <struct_specifier> struct_specifier -%type <node> struct_declaration_list +%type <declarator_list> struct_declaration_list %type <declarator_list> struct_declaration %type <declaration> struct_declarator %type <declaration> 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; |