glsl: pass gl_context to glcpp_parser_create()
[mesa.git] / src / compiler / glsl / glcpp / glcpp-parse.y
index 51bc85dcee74ac8ee676411f0d503261abd6f679..4ae78fbf8f27bd248632c0fb629034cba1329ec9 100644 (file)
@@ -174,11 +174,11 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value);
         /* We use HASH_TOKEN, DEFINE_TOKEN and VERSION_TOKEN (as opposed to
          * HASH, DEFINE, and VERSION) to avoid conflicts with other symbols,
          * (such as the <HASH> and <DEFINE> start conditions in the lexer). */
-%token DEFINED ELIF_EXPANDED HASH_TOKEN DEFINE_TOKEN FUNC_IDENTIFIER OBJ_IDENTIFIER ELIF ELSE ENDIF ERROR_TOKEN IF IFDEF IFNDEF LINE PRAGMA UNDEF VERSION_TOKEN GARBAGE IDENTIFIER IF_EXPANDED INTEGER INTEGER_STRING LINE_EXPANDED NEWLINE OTHER PLACEHOLDER SPACE PLUS_PLUS MINUS_MINUS
+%token DEFINED ELIF_EXPANDED HASH_TOKEN DEFINE_TOKEN FUNC_IDENTIFIER OBJ_IDENTIFIER ELIF ELSE ENDIF ERROR_TOKEN IF IFDEF IFNDEF LINE PRAGMA UNDEF VERSION_TOKEN GARBAGE IDENTIFIER IF_EXPANDED INTEGER INTEGER_STRING LINE_EXPANDED NEWLINE OTHER PLACEHOLDER SPACE PLUS_PLUS MINUS_MINUS PATH
 %token PASTE
 %type <ival> INTEGER operator SPACE integer_constant version_constant
 %type <expression_value> expression
-%type <str> IDENTIFIER FUNC_IDENTIFIER OBJ_IDENTIFIER INTEGER_STRING OTHER ERROR_TOKEN PRAGMA
+%type <str> IDENTIFIER FUNC_IDENTIFIER OBJ_IDENTIFIER INTEGER_STRING OTHER ERROR_TOKEN PRAGMA PATH
 %type <string_list> identifier_list
 %type <token> preprocessing_token
 %type <token_list> pp_tokens replacement_list text_line
@@ -238,6 +238,13 @@ expanded_line:
                                           "#line %" PRIiMAX " %" PRIiMAX "\n",
                                            $2, $3);
        }
+|      LINE_EXPANDED integer_constant PATH NEWLINE {
+               parser->has_new_line_number = 1;
+               parser->new_line_number = $2;
+               _mesa_string_buffer_printf(parser->output,
+                                          "#line %" PRIiMAX " %s\n",
+                                           $2, $3);
+       }
 ;
 
 define:
@@ -706,6 +713,10 @@ preprocessing_token:
                $$ = _token_create_str (parser, INTEGER_STRING, $1);
                $$->location = yylloc;
        }
+|      PATH {
+               $$ = _token_create_str (parser, PATH, $1);
+               $$->location = yylloc;
+       }
 |      operator {
                $$ = _token_create_ival (parser, $1, $1);
                $$->location = yylloc;
@@ -1357,8 +1368,8 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value)
 #define INITIAL_PP_OUTPUT_BUF_SIZE 4048
 
 glcpp_parser_t *
-glcpp_parser_create(const struct gl_extensions *extension_list,
-                    glcpp_extension_iterator extensions, void *state, gl_api api)
+glcpp_parser_create(struct gl_context *gl_ctx,
+                    glcpp_extension_iterator extensions, void *state)
 {
    glcpp_parser_t *parser;
 
@@ -1393,9 +1404,9 @@ glcpp_parser_create(const struct gl_extensions *extension_list,
    parser->error = 0;
 
    parser->extensions = extensions;
-   parser->extension_list = extension_list;
+   parser->extension_list = &gl_ctx->Extensions;
    parser->state = state;
-   parser->api = api;
+   parser->api = gl_ctx->API;
    parser->version = 0;
    parser->version_set = false;