1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright © 2010 Intel Corporation
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"),
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software is furnished to do so, subject to the following conditions:
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice (including the next
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * paragraph) shall be included in all copies or substantial portions of the
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software.
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * DEALINGS IN THE SOFTWARE.
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef GLCPP_H
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLCPP_H
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdint.h>
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdbool.h>
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "../ralloc.h"
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "program/hash_table.h"
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define yyscan_t void*
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Some data types used for parser values. */
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct string_node {
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	const char *str;
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct string_node *next;
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} string_node_t;
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct string_list {
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	string_node_t *head;
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	string_node_t *tail;
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} string_list_t;
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct token token_t;
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct token_list token_list_t;
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef union YYSTYPE
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	intmax_t ival;
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	char *str;
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	string_list_t *string_list;
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_t *token;
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_list_t *token_list;
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} YYSTYPE;
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define YYSTYPE_IS_TRIVIAL 1
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define YYSTYPE_IS_DECLARED 1
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct YYLTYPE {
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   int first_line;
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   int first_column;
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   int last_line;
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   int last_column;
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned source;
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} YYLTYPE;
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define YYLTYPE_IS_DECLARED 1
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define YYLTYPE_IS_TRIVIAL 1
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define YYLLOC_DEFAULT(Current, Rhs, N)			\
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdo {								\
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (N)							\
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   {								\
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      (Current).first_line   = YYRHSLOC(Rhs, 1).first_line;	\
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      (Current).first_column = YYRHSLOC(Rhs, 1).first_column;	\
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      (Current).last_line    = YYRHSLOC(Rhs, N).last_line;	\
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      (Current).last_column  = YYRHSLOC(Rhs, N).last_column;	\
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }								\
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   else								\
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   {								\
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      (Current).first_line   = (Current).last_line =		\
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 YYRHSLOC(Rhs, 0).last_line;				\
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      (Current).first_column = (Current).last_column =		\
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 YYRHSLOC(Rhs, 0).last_column;				\
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }								\
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   (Current).source = 0;					\
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} while (0)
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct token {
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int type;
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	YYSTYPE value;
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	YYLTYPE location;
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct token_node {
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_t *token;
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct token_node *next;
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} token_node_t;
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct token_list {
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_node_t *head;
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_node_t *tail;
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_node_t *non_space_tail;
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct argument_node {
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_list_t *argument;
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct argument_node *next;
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} argument_node_t;
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct argument_list {
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	argument_node_t *head;
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	argument_node_t *tail;
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} argument_list_t;
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct glcpp_parser glcpp_parser_t;
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef enum {
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	TOKEN_CLASS_IDENTIFIER,
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	TOKEN_CLASS_IDENTIFIER_FINALIZED,
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	TOKEN_CLASS_FUNC_MACRO,
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	TOKEN_CLASS_OBJ_MACRO
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} token_class_t;
127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtoken_class_t
129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_parser_classify_token (glcpp_parser_t *parser,
130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org			     const char *identifier,
131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org			     int *parameter_index);
132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct {
134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int is_function;
135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	string_list_t *parameters;
136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	const char *identifier;
137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_list_t *replacements;
138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} macro_t;
139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct expansion_node {
141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	macro_t *macro;
142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_node_t *replacements;
143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct expansion_node *next;
144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} expansion_node_t;
145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef enum skip_type {
147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	SKIP_NO_SKIP,
148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	SKIP_TO_ELSE,
149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	SKIP_TO_ENDIF
150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} skip_type_t;
151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct skip_node {
153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	skip_type_t type;
154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	YYLTYPE loc; /* location of the initial #if/#elif/... */
155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct skip_node *next;
156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} skip_node_t;
157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct active_list {
159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	const char *identifier;
160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_node_t *marker;
161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct active_list *next;
162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} active_list_t;
163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct glcpp_parser {
165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	yyscan_t scanner;
166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct hash_table *defines;
167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	active_list_t *active;
168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int lexing_if;
169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int space_tokens;
170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int newline_as_space;
171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int in_control_line;
172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int paren_count;
173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	skip_node_t *skip_stack;
174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_list_t *lex_from_list;
175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	token_node_t *lex_from_node;
176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	char *output;
177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	char *info_log;
178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	size_t output_length;
179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	size_t info_log_length;
180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int error;
181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	bool has_new_line_number;
182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int new_line_number;
183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	bool has_new_source_number;
184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int new_source_number;
185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gl_extensions;
188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_parser_t *
190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_parser_create (const struct gl_extensions *extensions, int api);
191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint
193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_parser_parse (glcpp_parser_t *parser);
194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_parser_destroy (glcpp_parser_t *parser);
197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint
199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_preprocess(void *ralloc_ctx, const char **shader, char **info_log,
200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	   const struct gl_extensions *extensions, int api);
201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Functions for writing to the info log */
203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_error (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...);
206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_warning (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...);
209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Generated by glcpp-lex.l to glcpp-lex.c */
211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint
213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_lex_init_extra (glcpp_parser_t *parser, yyscan_t* scanner);
214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_lex_set_source_string(glcpp_parser_t *parser, const char *shader);
217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint
219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_lex (YYSTYPE *lvalp, YYLTYPE *llocp, yyscan_t scanner);
220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint
222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglcpp_lex_destroy (yyscan_t scanner);
223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Generated by glcpp-parse.y to glcpp-parse.c */
225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint
227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgyyparse (glcpp_parser_t *parser);
228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
230