1#line 2 "src/chromium_gensrc/mesa/glcpp-lex.c"
2
3#line 4 "src/chromium_gensrc/mesa/glcpp-lex.c"
4
5#define  YY_INT_ALIGNED short int
6
7/* A lexical scanner generated by flex */
8
9#define FLEX_SCANNER
10#define YY_FLEX_MAJOR_VERSION 2
11#define YY_FLEX_MINOR_VERSION 5
12#define YY_FLEX_SUBMINOR_VERSION 35
13#if YY_FLEX_SUBMINOR_VERSION > 0
14#define FLEX_BETA
15#endif
16
17/* First, we deal with  platform-specific or compiler-specific issues. */
18
19/* begin standard C headers. */
20#include <stdio.h>
21#include <string.h>
22#include <errno.h>
23#include <stdlib.h>
24
25/* end standard C headers. */
26
27/* flex integer type definitions */
28
29#ifndef FLEXINT_H
30#define FLEXINT_H
31
32/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35
36/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37 * if you want the limit (max/min) macros for int types.
38 */
39#ifndef __STDC_LIMIT_MACROS
40#define __STDC_LIMIT_MACROS 1
41#endif
42
43#include <inttypes.h>
44typedef int8_t flex_int8_t;
45typedef uint8_t flex_uint8_t;
46typedef int16_t flex_int16_t;
47typedef uint16_t flex_uint16_t;
48typedef int32_t flex_int32_t;
49typedef uint32_t flex_uint32_t;
50#else
51typedef signed char flex_int8_t;
52typedef short int flex_int16_t;
53typedef int flex_int32_t;
54typedef unsigned char flex_uint8_t;
55typedef unsigned short int flex_uint16_t;
56typedef unsigned int flex_uint32_t;
57
58/* Limits of integral types. */
59#ifndef INT8_MIN
60#define INT8_MIN               (-128)
61#endif
62#ifndef INT16_MIN
63#define INT16_MIN              (-32767-1)
64#endif
65#ifndef INT32_MIN
66#define INT32_MIN              (-2147483647-1)
67#endif
68#ifndef INT8_MAX
69#define INT8_MAX               (127)
70#endif
71#ifndef INT16_MAX
72#define INT16_MAX              (32767)
73#endif
74#ifndef INT32_MAX
75#define INT32_MAX              (2147483647)
76#endif
77#ifndef UINT8_MAX
78#define UINT8_MAX              (255U)
79#endif
80#ifndef UINT16_MAX
81#define UINT16_MAX             (65535U)
82#endif
83#ifndef UINT32_MAX
84#define UINT32_MAX             (4294967295U)
85#endif
86
87#endif /* ! C99 */
88
89#endif /* ! FLEXINT_H */
90
91#ifdef __cplusplus
92
93/* The "const" storage-class-modifier is valid. */
94#define YY_USE_CONST
95
96#else	/* ! __cplusplus */
97
98/* C99 requires __STDC__ to be defined as 1. */
99#if defined (__STDC__)
100
101#define YY_USE_CONST
102
103#endif	/* defined (__STDC__) */
104#endif	/* ! __cplusplus */
105
106#ifdef YY_USE_CONST
107#define yyconst const
108#else
109#define yyconst
110#endif
111
112/* Returned upon end-of-file. */
113#define YY_NULL 0
114
115/* Promotes a possibly negative, possibly signed char to an unsigned
116 * integer for use as an array index.  If the signed char is negative,
117 * we want to instead treat it as an 8-bit unsigned char, hence the
118 * double cast.
119 */
120#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
121
122/* An opaque pointer. */
123#ifndef YY_TYPEDEF_YY_SCANNER_T
124#define YY_TYPEDEF_YY_SCANNER_T
125typedef void* yyscan_t;
126#endif
127
128/* For convenience, these vars (plus the bison vars far below)
129   are macros in the reentrant scanner. */
130#define yyin yyg->yyin_r
131#define yyout yyg->yyout_r
132#define yyextra yyg->yyextra_r
133#define yyleng yyg->yyleng_r
134#define yytext yyg->yytext_r
135#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
136#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
137#define yy_flex_debug yyg->yy_flex_debug_r
138
139/* Enter a start condition.  This macro really ought to take a parameter,
140 * but we do it the disgusting crufty way forced on us by the ()-less
141 * definition of BEGIN.
142 */
143#define BEGIN yyg->yy_start = 1 + 2 *
144
145/* Translate the current start state into a value that can be later handed
146 * to BEGIN to return to the state.  The YYSTATE alias is for lex
147 * compatibility.
148 */
149#define YY_START ((yyg->yy_start - 1) / 2)
150#define YYSTATE YY_START
151
152/* Action number for EOF rule of a given start state. */
153#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155/* Special action meaning "start processing a new file". */
156#define YY_NEW_FILE glcpp_restart(yyin ,yyscanner )
157
158#define YY_END_OF_BUFFER_CHAR 0
159
160/* Size of default input buffer. */
161#ifndef YY_BUF_SIZE
162#ifdef __ia64__
163/* On IA-64, the buffer size is 16k, not 8k.
164 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
165 * Ditto for the __ia64__ case accordingly.
166 */
167#define YY_BUF_SIZE 32768
168#else
169#define YY_BUF_SIZE 16384
170#endif /* __ia64__ */
171#endif
172
173/* The state buf must be large enough to hold one state per character in the main buffer.
174 */
175#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
176
177#ifndef YY_TYPEDEF_YY_BUFFER_STATE
178#define YY_TYPEDEF_YY_BUFFER_STATE
179typedef struct yy_buffer_state *YY_BUFFER_STATE;
180#endif
181
182#define EOB_ACT_CONTINUE_SCAN 0
183#define EOB_ACT_END_OF_FILE 1
184#define EOB_ACT_LAST_MATCH 2
185
186    #define YY_LESS_LINENO(n)
187
188/* Return all but the first "n" matched characters back to the input stream. */
189#define yyless(n) \
190	do \
191		{ \
192		/* Undo effects of setting up yytext. */ \
193        int yyless_macro_arg = (n); \
194        YY_LESS_LINENO(yyless_macro_arg);\
195		*yy_cp = yyg->yy_hold_char; \
196		YY_RESTORE_YY_MORE_OFFSET \
197		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
198		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
199		} \
200	while ( 0 )
201
202#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
203
204#ifndef YY_TYPEDEF_YY_SIZE_T
205#define YY_TYPEDEF_YY_SIZE_T
206typedef size_t yy_size_t;
207#endif
208
209#ifndef YY_STRUCT_YY_BUFFER_STATE
210#define YY_STRUCT_YY_BUFFER_STATE
211struct yy_buffer_state
212	{
213	FILE *yy_input_file;
214
215	char *yy_ch_buf;		/* input buffer */
216	char *yy_buf_pos;		/* current position in input buffer */
217
218	/* Size of input buffer in bytes, not including room for EOB
219	 * characters.
220	 */
221	yy_size_t yy_buf_size;
222
223	/* Number of characters read into yy_ch_buf, not including EOB
224	 * characters.
225	 */
226	int yy_n_chars;
227
228	/* Whether we "own" the buffer - i.e., we know we created it,
229	 * and can realloc() it to grow it, and should free() it to
230	 * delete it.
231	 */
232	int yy_is_our_buffer;
233
234	/* Whether this is an "interactive" input source; if so, and
235	 * if we're using stdio for input, then we want to use getc()
236	 * instead of fread(), to make sure we stop fetching input after
237	 * each newline.
238	 */
239	int yy_is_interactive;
240
241	/* Whether we're considered to be at the beginning of a line.
242	 * If so, '^' rules will be active on the next match, otherwise
243	 * not.
244	 */
245	int yy_at_bol;
246
247    int yy_bs_lineno; /**< The line count. */
248    int yy_bs_column; /**< The column count. */
249
250	/* Whether to try to fill the input buffer when we reach the
251	 * end of it.
252	 */
253	int yy_fill_buffer;
254
255	int yy_buffer_status;
256
257#define YY_BUFFER_NEW 0
258#define YY_BUFFER_NORMAL 1
259	/* When an EOF's been seen but there's still some text to process
260	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
261	 * shouldn't try reading from the input source any more.  We might
262	 * still have a bunch of tokens to match, though, because of
263	 * possible backing-up.
264	 *
265	 * When we actually see the EOF, we change the status to "new"
266	 * (via glcpp_restart()), so that the user can continue scanning by
267	 * just pointing yyin at a new input file.
268	 */
269#define YY_BUFFER_EOF_PENDING 2
270
271	};
272#endif /* !YY_STRUCT_YY_BUFFER_STATE */
273
274/* We provide macros for accessing buffer states in case in the
275 * future we want to put the buffer states in a more general
276 * "scanner state".
277 *
278 * Returns the top of the stack, or NULL.
279 */
280#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
281                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
282                          : NULL)
283
284/* Same as previous macro, but useful when we know that the buffer stack is not
285 * NULL or when we need an lvalue. For internal use only.
286 */
287#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
288
289void glcpp_restart (FILE *input_file ,yyscan_t yyscanner );
290void glcpp__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
291YY_BUFFER_STATE glcpp__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
292void glcpp__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
293void glcpp__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
294void glcpp_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
295void glcpp_pop_buffer_state (yyscan_t yyscanner );
296
297static void glcpp_ensure_buffer_stack (yyscan_t yyscanner );
298static void glcpp__load_buffer_state (yyscan_t yyscanner );
299static void glcpp__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
300
301#define YY_FLUSH_BUFFER glcpp__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
302
303YY_BUFFER_STATE glcpp__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
304YY_BUFFER_STATE glcpp__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
305YY_BUFFER_STATE glcpp__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
306
307void *glcpp_alloc (yy_size_t ,yyscan_t yyscanner );
308void *glcpp_realloc (void *,yy_size_t ,yyscan_t yyscanner );
309void glcpp_free (void * ,yyscan_t yyscanner );
310
311#define yy_new_buffer glcpp__create_buffer
312
313#define yy_set_interactive(is_interactive) \
314	{ \
315	if ( ! YY_CURRENT_BUFFER ){ \
316        glcpp_ensure_buffer_stack (yyscanner); \
317		YY_CURRENT_BUFFER_LVALUE =    \
318            glcpp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
319	} \
320	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
321	}
322
323#define yy_set_bol(at_bol) \
324	{ \
325	if ( ! YY_CURRENT_BUFFER ){\
326        glcpp_ensure_buffer_stack (yyscanner); \
327		YY_CURRENT_BUFFER_LVALUE =    \
328            glcpp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
329	} \
330	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
331	}
332
333#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
334
335/* Begin user sect3 */
336
337#define glcpp_wrap(n) 1
338#define YY_SKIP_YYWRAP
339
340typedef unsigned char YY_CHAR;
341
342typedef int yy_state_type;
343
344#define yytext_ptr yytext_r
345
346static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
347static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
348static int yy_get_next_buffer (yyscan_t yyscanner );
349static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
350
351/* Done after the current pattern has been matched and before the
352 * corresponding action - sets up yytext.
353 */
354#define YY_DO_BEFORE_ACTION \
355	yyg->yytext_ptr = yy_bp; \
356	yyleng = (size_t) (yy_cp - yy_bp); \
357	yyg->yy_hold_char = *yy_cp; \
358	*yy_cp = '\0'; \
359	yyg->yy_c_buf_p = yy_cp;
360
361#define YY_NUM_RULES 43
362#define YY_END_OF_BUFFER 44
363/* This struct is not used in this scanner,
364   but its presence is necessary. */
365struct yy_trans_info
366	{
367	flex_int32_t yy_verify;
368	flex_int32_t yy_nxt;
369	};
370static yyconst flex_int16_t yy_accept[147] =
371    {   0,
372        0,    0,    0,    0,    3,    3,    0,    0,    0,    0,
373        0,    0,   44,   39,   40,   41,   43,   38,   43,   38,
374       38,   38,   25,   24,   38,   38,   38,   37,   37,   38,
375       40,   23,    3,    4,    5,   42,   17,   17,   17,   21,
376       39,   40,   32,   35,   33,    2,    1,   25,   25,    0,
377       24,   24,   27,   29,   31,   30,   28,   37,   37,   34,
378       40,   23,   23,    0,    0,    0,    0,    0,    0,    0,
379        3,    4,    5,    6,    5,    7,    0,    0,    0,    0,
380       20,   21,    1,   26,   37,    0,    0,    0,    0,    0,
381        0,    0,    0,    0,    0,   26,   37,    0,    0,    0,
382
383        0,    0,    0,   13,    0,    0,    0,    0,    0,    0,
384       37,    0,   14,   15,    0,    0,    0,    0,    0,   10,
385        0,    0,    0,   37,    0,   16,   18,    0,   11,    0,
386        0,   22,    0,   36,    0,   18,    0,   12,    0,    0,
387       19,    0,    9,    8,    0,    0
388    } ;
389
390static yyconst flex_int32_t yy_ec[256] =
391    {   0,
392        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
393        4,    4,    4,    1,    1,    1,    1,    1,    1,    1,
394        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
395        1,    2,    5,    1,    6,    1,    7,    8,    1,    9,
396        7,   10,    7,    7,    7,    7,   11,   12,   13,   13,
397       13,   13,   13,   13,   13,   14,   14,    1,    7,   15,
398       16,   17,    1,    1,   18,   18,   18,   18,   18,   18,
399       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
400       19,   19,   19,   19,   20,   19,   19,   21,   19,   19,
401        7,    1,    7,    7,   19,    1,   22,   18,   18,   23,
402
403       24,   25,   26,   19,   27,   19,   19,   28,   29,   30,
404       31,   32,   19,   33,   34,   35,   36,   37,   19,   38,
405       19,   19,    7,   39,    7,    7,    1,    1,    1,    1,
406        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
407        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
408        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
409        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
410        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
411        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
412        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
413
414        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
415        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
416        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
417        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
418        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
419        1,    1,    1,    1,    1
420    } ;
421
422static yyconst flex_int32_t yy_meta[40] =
423    {   0,
424        1,    1,    2,    1,    1,    1,    1,    1,    3,    4,
425        1,    5,    5,    5,    1,    1,    1,    5,    6,    6,
426        6,    5,    7,    5,    5,    6,    6,    6,    6,    8,
427        6,    6,    6,    6,    6,    6,    6,    6,    1
428    } ;
429
430static yyconst flex_int16_t yy_base[160] =
431    {   0,
432        0,   38,    0,    0,   38,   39,  313,  312,  311,   44,
433       50,    0,  313,  311,  309,  317,  317,  294,  303,  317,
434      300,   80,   80,   83,   83,  291,   88,    0,  282,  266,
435      100,  118,  301,  317,  104,  317,  317,  106,  107,  294,
436      301,  299,  317,  317,  317,  317,    0,  113,  317,    0,
437      115,  317,  317,  317,  317,  317,  317,    0,  275,  317,
438      111,  293,  292,  273,  110,  271,  268,  261,  263,  268,
439      288,  317,  149,  317,  153,  317,  130,  120,  151,   15,
440      317,  281,    0,   74,  262,  263,   96,  264,  253,  250,
441      135,  254,  261,  259,  248,  317,  250,  252,  253,  253,
442
443      249,  244,  250,  317,  249,  249,  241,  231,  229,  218,
444      222,  208,  317,  317,  207,  185,  147,  151,  150,  317,
445      144,  147,  144,  147,  145,  317,    0,  134,  317,  142,
446      144,  317,  131,    0,  159,    0,  130,  317,    0,  109,
447      135,   90,    0,  317,   81,  317,  178,  186,  194,  202,
448      206,  214,  222,  228,  236,  240,  247,  255,  263
449    } ;
450
451static yyconst flex_int16_t yy_def[160] =
452    {   0,
453      146,    1,  147,  147,  148,  148,  149,  149,  150,  150,
454      146,   11,  146,  146,  146,  146,  146,  146,  146,  146,
455      146,  146,  146,  146,  146,  146,  146,  151,  151,  146,
456      146,  146,  152,  146,  153,  146,  146,  146,  146,  154,
457      146,  146,  146,  146,  146,  146,  155,  146,  146,  156,
458      146,  146,  146,  146,  146,  146,  146,  151,  151,  146,
459      146,   32,   32,  146,  146,  146,  146,  146,  146,  146,
460      152,  146,  153,  146,  153,  146,  146,  146,  146,  146,
461      146,  154,  155,  156,  151,  146,  146,  146,  146,  146,
462      157,  146,  146,  146,  146,  146,  151,  146,  146,  146,
463
464      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
465      151,  146,  146,  146,  146,  146,  146,  146,  146,  146,
466      146,  146,  146,  151,  146,  146,  158,  146,  146,  146,
467      146,  146,  146,  151,  146,  158,  146,  146,  159,  146,
468      146,  146,  159,  146,  146,    0,  146,  146,  146,  146,
469      146,  146,  146,  146,  146,  146,  146,  146,  146
470    } ;
471
472static yyconst flex_int16_t yy_nxt[357] =
473    {   0,
474       14,   15,   16,   17,   18,   19,   20,   21,   20,   20,
475       22,   23,   24,   24,   25,   26,   27,   28,   28,   28,
476       28,   28,   29,   28,   28,   28,   28,   28,   28,   28,
477       28,   28,   28,   28,   28,   28,   28,   28,   30,   31,
478       34,   34,   87,   32,   88,   38,   16,   35,   35,   39,
479       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
480       17,   17,   17,   17,   17,   17,   17,   40,   40,   40,
481       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
482       40,   40,   40,   40,   40,   40,   40,   40,   17,   46,
483       47,   48,   48,   96,   51,   51,   51,   53,   54,   49,
484
485       50,   61,   52,   56,   57,   62,   74,   77,   79,   96,
486      139,   78,   61,   75,   76,   49,   62,   50,   52,   63,
487      145,   79,   99,   44,   48,   48,   51,   51,   51,  100,
488       80,   77,   49,   66,   52,   78,  141,   87,  144,   88,
489       64,   65,   89,   80,   66,   67,   66,   90,   49,   68,
490       52,   74,   79,   69,   70,   74,  142,  105,  146,  146,
491      141,  140,   75,   76,  106,  139,  138,  137,  135,  134,
492      133,  132,  131,  130,   80,  129,  128,   66,   17,   17,
493       17,   17,   17,   17,   17,   17,   33,   33,   33,   33,
494       33,   33,   33,   33,   36,   36,   36,   36,   36,   36,
495
496       36,   36,   37,   37,   37,   37,   37,   37,   37,   37,
497       58,   58,   58,   58,   71,   71,   71,  127,   71,   71,
498       71,   71,   73,   73,   73,   73,   73,   73,   73,   73,
499       82,  126,   82,   82,   82,   82,   83,  125,   83,   83,
500       83,   83,   83,   83,   84,  124,   84,  104,  104,  104,
501      104,  123,  122,  104,  104,  136,  121,  136,  136,  136,
502      136,  136,  136,  143,  120,  143,  143,  143,  143,  143,
503      143,  119,  118,  117,  116,  115,  114,  113,  112,  111,
504      110,  109,  108,  107,  103,  102,  101,   98,   97,   81,
505       72,   95,   94,   93,   92,   91,   86,  146,  146,   85,
506
507       42,   41,   81,   72,   60,   59,   55,   45,   44,   43,
508       42,   41,  146,   16,   17,   17,   13,  146,  146,  146,
509      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
510      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
511      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
512      146,  146,  146,  146,  146,  146
513    } ;
514
515static yyconst flex_int16_t yy_chk[357] =
516    {   0,
517        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
518        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
519        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
520        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
521        5,    6,   80,    2,   80,   10,   10,    5,    6,   10,
522       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
523       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
524       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
525       11,   11,   11,   11,   11,   11,   11,   11,   11,   22,
526       22,   23,   23,   84,   24,   24,   24,   25,   25,   23,
527
528       23,   31,   24,   27,   27,   31,   35,   38,   39,   84,
529      145,   38,   61,   35,   35,   23,   61,   23,   24,   32,
530      142,   78,   87,   32,   48,   48,   51,   51,   51,   87,
531       39,   77,   48,   39,   51,   77,  141,   65,  140,   65,
532       32,   32,   65,   78,   32,   32,   78,   65,   48,   32,
533       51,   73,   79,   32,   32,   75,  137,   91,   73,   73,
534      135,  133,   75,   75,   91,  131,  130,  128,  125,  124,
535      123,  122,  121,  119,   79,  118,  117,   79,  147,  147,
536      147,  147,  147,  147,  147,  147,  148,  148,  148,  148,
537      148,  148,  148,  148,  149,  149,  149,  149,  149,  149,
538
539      149,  149,  150,  150,  150,  150,  150,  150,  150,  150,
540      151,  151,  151,  151,  152,  152,  152,  116,  152,  152,
541      152,  152,  153,  153,  153,  153,  153,  153,  153,  153,
542      154,  115,  154,  154,  154,  154,  155,  112,  155,  155,
543      155,  155,  155,  155,  156,  111,  156,  157,  157,  157,
544      157,  110,  109,  157,  157,  158,  108,  158,  158,  158,
545      158,  158,  158,  159,  107,  159,  159,  159,  159,  159,
546      159,  106,  105,  103,  102,  101,  100,   99,   98,   97,
547       95,   94,   93,   92,   90,   89,   88,   86,   85,   82,
548       71,   70,   69,   68,   67,   66,   64,   63,   62,   59,
549
550       42,   41,   40,   33,   30,   29,   26,   21,   19,   18,
551       15,   14,   13,    9,    8,    7,  146,  146,  146,  146,
552      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
553      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
554      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
555      146,  146,  146,  146,  146,  146
556    } ;
557
558/* The intent behind this definition is that it'll catch
559 * any uses of REJECT which flex missed.
560 */
561#define REJECT reject_used_but_not_detected
562#define yymore() yymore_used_but_not_detected
563#define YY_MORE_ADJ 0
564#define YY_RESTORE_YY_MORE_OFFSET
565#line 1 "src/src/glsl/glcpp/glcpp-lex.l"
566#line 2 "src/src/glsl/glcpp/glcpp-lex.l"
567/*
568 * Copyright © 2010 Intel Corporation
569 *
570 * Permission is hereby granted, free of charge, to any person obtaining a
571 * copy of this software and associated documentation files (the "Software"),
572 * to deal in the Software without restriction, including without limitation
573 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
574 * and/or sell copies of the Software, and to permit persons to whom the
575 * Software is furnished to do so, subject to the following conditions:
576 *
577 * The above copyright notice and this permission notice (including the next
578 * paragraph) shall be included in all copies or substantial portions of the
579 * Software.
580 *
581 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
582 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
583 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
584 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
585 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
586 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
587 * DEALINGS IN THE SOFTWARE.
588 */
589
590#include <stdio.h>
591#include <string.h>
592#include <ctype.h>
593
594#include "glcpp.h"
595#include "glcpp-parse.h"
596
597/* Flex annoyingly generates some functions without making them
598 * static. Let's declare them here. */
599int glcpp_get_column  (yyscan_t yyscanner);
600void glcpp_set_column (int  column_no , yyscan_t yyscanner);
601
602#ifdef _MSC_VER
603#define YY_NO_UNISTD_H
604#endif
605
606#define YY_NO_INPUT
607
608#define YY_USER_ACTION							\
609	do {								\
610		if (parser->has_new_line_number)			\
611			yylineno = parser->new_line_number;		\
612		if (parser->has_new_source_number)			\
613			yylloc->source = parser->new_source_number;	\
614		yylloc->first_column = yycolumn + 1;			\
615		yylloc->first_line = yylineno;				\
616		yycolumn += yyleng;					\
617		parser->has_new_line_number = 0;			\
618		parser->has_new_source_number = 0;			\
619 } while(0);
620
621#define YY_USER_INIT			\
622	do {				\
623		yylineno = 1;		\
624		yycolumn = 1;		\
625		yylloc->source = 0;	\
626	} while(0)
627
628/* The OTHER class is simply a catch-all for things that the CPP
629parser just doesn't care about. Since flex regular expressions that
630match longer strings take priority over those matching shorter
631strings, we have to be careful to avoid OTHER matching and hiding
632something that CPP does care about. So we simply exclude all
633characters that appear in any other expressions. */
634#line 635 "src/chromium_gensrc/mesa/glcpp-lex.c"
635
636#define INITIAL 0
637#define DONE 1
638#define COMMENT 2
639#define UNREACHABLE 3
640#define SKIP 4
641#define DEFINE 5
642
643#define YY_EXTRA_TYPE glcpp_parser_t *
644
645/* Holds the entire state of the reentrant scanner. */
646struct yyguts_t
647    {
648
649    /* User-defined. Not touched by flex. */
650    YY_EXTRA_TYPE yyextra_r;
651
652    /* The rest are the same as the globals declared in the non-reentrant scanner. */
653    FILE *yyin_r, *yyout_r;
654    size_t yy_buffer_stack_top; /**< index of top of stack. */
655    size_t yy_buffer_stack_max; /**< capacity of stack. */
656    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
657    char yy_hold_char;
658    int yy_n_chars;
659    int yyleng_r;
660    char *yy_c_buf_p;
661    int yy_init;
662    int yy_start;
663    int yy_did_buffer_switch_on_eof;
664    int yy_start_stack_ptr;
665    int yy_start_stack_depth;
666    int *yy_start_stack;
667    yy_state_type yy_last_accepting_state;
668    char* yy_last_accepting_cpos;
669
670    int yylineno_r;
671    int yy_flex_debug_r;
672
673    char *yytext_r;
674    int yy_more_flag;
675    int yy_more_len;
676
677    YYSTYPE * yylval_r;
678
679    YYLTYPE * yylloc_r;
680
681    }; /* end struct yyguts_t */
682
683static int yy_init_globals (yyscan_t yyscanner );
684
685    /* This must go here because YYSTYPE and YYLTYPE are included
686     * from bison output in section 1.*/
687    #    define yylval yyg->yylval_r
688
689    #    define yylloc yyg->yylloc_r
690
691int glcpp_lex_init (yyscan_t* scanner);
692
693int glcpp_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
694
695/* Accessor methods to globals.
696   These are made visible to non-reentrant scanners for convenience. */
697
698int glcpp_lex_destroy (yyscan_t yyscanner );
699
700int glcpp_get_debug (yyscan_t yyscanner );
701
702void glcpp_set_debug (int debug_flag ,yyscan_t yyscanner );
703
704YY_EXTRA_TYPE glcpp_get_extra (yyscan_t yyscanner );
705
706void glcpp_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
707
708FILE *glcpp_get_in (yyscan_t yyscanner );
709
710void glcpp_set_in  (FILE * in_str ,yyscan_t yyscanner );
711
712FILE *glcpp_get_out (yyscan_t yyscanner );
713
714void glcpp_set_out  (FILE * out_str ,yyscan_t yyscanner );
715
716int glcpp_get_leng (yyscan_t yyscanner );
717
718char *glcpp_get_text (yyscan_t yyscanner );
719
720int glcpp_get_lineno (yyscan_t yyscanner );
721
722void glcpp_set_lineno (int line_number ,yyscan_t yyscanner );
723
724YYSTYPE * glcpp_get_lval (yyscan_t yyscanner );
725
726void glcpp_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
727
728       YYLTYPE *glcpp_get_lloc (yyscan_t yyscanner );
729
730        void glcpp_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
731
732/* Macros after this point can all be overridden by user definitions in
733 * section 1.
734 */
735
736#ifndef YY_SKIP_YYWRAP
737#ifdef __cplusplus
738extern "C" int glcpp_wrap (yyscan_t yyscanner );
739#else
740extern int glcpp_wrap (yyscan_t yyscanner );
741#endif
742#endif
743
744    static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
745
746#ifndef yytext_ptr
747static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
748#endif
749
750#ifdef YY_NEED_STRLEN
751static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
752#endif
753
754#ifndef YY_NO_INPUT
755
756#ifdef __cplusplus
757static int yyinput (yyscan_t yyscanner );
758#else
759static int input (yyscan_t yyscanner );
760#endif
761
762#endif
763
764    static void yy_push_state (int new_state ,yyscan_t yyscanner);
765
766    static void yy_pop_state (yyscan_t yyscanner );
767
768    static int yy_top_state (yyscan_t yyscanner );
769
770/* Amount of stuff to slurp up with each read. */
771#ifndef YY_READ_BUF_SIZE
772#ifdef __ia64__
773/* On IA-64, the buffer size is 16k, not 8k */
774#define YY_READ_BUF_SIZE 16384
775#else
776#define YY_READ_BUF_SIZE 8192
777#endif /* __ia64__ */
778#endif
779
780/* Copy whatever the last rule matched to the standard output. */
781#ifndef ECHO
782/* This used to be an fputs(), but since the string might contain NUL's,
783 * we now use fwrite().
784 */
785#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
786#endif
787
788/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
789 * is returned in "result".
790 */
791#ifndef YY_INPUT
792#define YY_INPUT(buf,result,max_size) \
793	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
794		{ \
795		int c = '*'; \
796		size_t n; \
797		for ( n = 0; n < max_size && \
798			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
799			buf[n] = (char) c; \
800		if ( c == '\n' ) \
801			buf[n++] = (char) c; \
802		if ( c == EOF && ferror( yyin ) ) \
803			YY_FATAL_ERROR( "input in flex scanner failed" ); \
804		result = n; \
805		} \
806	else \
807		{ \
808		errno=0; \
809		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
810			{ \
811			if( errno != EINTR) \
812				{ \
813				YY_FATAL_ERROR( "input in flex scanner failed" ); \
814				break; \
815				} \
816			errno=0; \
817			clearerr(yyin); \
818			} \
819		}\
820\
821
822#endif
823
824/* No semi-colon after return; correct usage is to write "yyterminate();" -
825 * we don't want an extra ';' after the "return" because that will cause
826 * some compilers to complain about unreachable statements.
827 */
828#ifndef yyterminate
829#define yyterminate() return YY_NULL
830#endif
831
832/* Number of entries by which start-condition stack grows. */
833#ifndef YY_START_STACK_INCR
834#define YY_START_STACK_INCR 25
835#endif
836
837/* Report a fatal error. */
838#ifndef YY_FATAL_ERROR
839#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
840#endif
841
842/* end tables serialization structures and prototypes */
843
844/* Default declaration of generated scanner - a define so the user can
845 * easily add parameters.
846 */
847#ifndef YY_DECL
848#define YY_DECL_IS_OURS 1
849
850extern int glcpp_lex \
851               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
852
853#define YY_DECL int glcpp_lex \
854               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
855#endif /* !YY_DECL */
856
857/* Code executed at the beginning of each rule, after yytext and yyleng
858 * have been set up.
859 */
860#ifndef YY_USER_ACTION
861#define YY_USER_ACTION
862#endif
863
864/* Code executed at the end of each rule. */
865#ifndef YY_BREAK
866#define YY_BREAK break;
867#endif
868
869#define YY_RULE_SETUP \
870	if ( yyleng > 0 ) \
871		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
872				(yytext[yyleng - 1] == '\n'); \
873	YY_USER_ACTION
874
875/** The main scanner function which does all the work.
876 */
877YY_DECL
878{
879	register yy_state_type yy_current_state;
880	register char *yy_cp, *yy_bp;
881	register int yy_act;
882    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
883
884#line 94 "src/src/glsl/glcpp/glcpp-lex.l"
885
886	/* Implicitly switch between SKIP and INITIAL (non-skipping);
887	 * don't switch if some other state was explicitly set.
888	 */
889	glcpp_parser_t *parser = yyextra;
890	if (YY_START == 0 || YY_START == SKIP) {
891		if (parser->lexing_if || parser->skip_stack == NULL || parser->skip_stack->type == SKIP_NO_SKIP) {
892			BEGIN 0;
893		} else {
894			BEGIN SKIP;
895		}
896	}
897
898	/* Single-line comments */
899#line 900 "src/chromium_gensrc/mesa/glcpp-lex.c"
900
901    yylval = yylval_param;
902
903    yylloc = yylloc_param;
904
905	if ( !yyg->yy_init )
906		{
907		yyg->yy_init = 1;
908
909#ifdef YY_USER_INIT
910		YY_USER_INIT;
911#endif
912
913		if ( ! yyg->yy_start )
914			yyg->yy_start = 1;	/* first start state */
915
916		if ( ! yyin )
917			yyin = stdin;
918
919		if ( ! yyout )
920			yyout = stdout;
921
922		if ( ! YY_CURRENT_BUFFER ) {
923			glcpp_ensure_buffer_stack (yyscanner);
924			YY_CURRENT_BUFFER_LVALUE =
925				glcpp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
926		}
927
928		glcpp__load_buffer_state(yyscanner );
929		}
930
931	while ( 1 )		/* loops until end-of-file is reached */
932		{
933		yy_cp = yyg->yy_c_buf_p;
934
935		/* Support of yytext. */
936		*yy_cp = yyg->yy_hold_char;
937
938		/* yy_bp points to the position in yy_ch_buf of the start of
939		 * the current run.
940		 */
941		yy_bp = yy_cp;
942
943		yy_current_state = yyg->yy_start;
944		yy_current_state += YY_AT_BOL();
945yy_match:
946		do
947			{
948			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
949			if ( yy_accept[yy_current_state] )
950				{
951				yyg->yy_last_accepting_state = yy_current_state;
952				yyg->yy_last_accepting_cpos = yy_cp;
953				}
954			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
955				{
956				yy_current_state = (int) yy_def[yy_current_state];
957				if ( yy_current_state >= 147 )
958					yy_c = yy_meta[(unsigned int) yy_c];
959				}
960			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
961			++yy_cp;
962			}
963		while ( yy_current_state != 146 );
964		yy_cp = yyg->yy_last_accepting_cpos;
965		yy_current_state = yyg->yy_last_accepting_state;
966
967yy_find_action:
968		yy_act = yy_accept[yy_current_state];
969
970		YY_DO_BEFORE_ACTION;
971
972do_action:	/* This label is used only to access EOF actions. */
973
974		switch ( yy_act )
975	{ /* beginning of action switch */
976			case 0: /* must back up */
977			/* undo the effects of YY_DO_BEFORE_ACTION */
978			*yy_cp = yyg->yy_hold_char;
979			yy_cp = yyg->yy_last_accepting_cpos;
980			yy_current_state = yyg->yy_last_accepting_state;
981			goto yy_find_action;
982
983case 1:
984YY_RULE_SETUP
985#line 108 "src/src/glsl/glcpp/glcpp-lex.l"
986{
987}
988	YY_BREAK
989/* Multi-line comments */
990case 2:
991YY_RULE_SETUP
992#line 112 "src/src/glsl/glcpp/glcpp-lex.l"
993{ yy_push_state(COMMENT, yyscanner); }
994	YY_BREAK
995case 3:
996YY_RULE_SETUP
997#line 113 "src/src/glsl/glcpp/glcpp-lex.l"
998
999	YY_BREAK
1000case 4:
1001/* rule 4 can match eol */
1002YY_RULE_SETUP
1003#line 114 "src/src/glsl/glcpp/glcpp-lex.l"
1004{ yylineno++; yycolumn = 0; return NEWLINE; }
1005	YY_BREAK
1006case 5:
1007YY_RULE_SETUP
1008#line 115 "src/src/glsl/glcpp/glcpp-lex.l"
1009
1010	YY_BREAK
1011case 6:
1012/* rule 6 can match eol */
1013YY_RULE_SETUP
1014#line 116 "src/src/glsl/glcpp/glcpp-lex.l"
1015{ yylineno++; yycolumn = 0; return NEWLINE; }
1016	YY_BREAK
1017case 7:
1018YY_RULE_SETUP
1019#line 117 "src/src/glsl/glcpp/glcpp-lex.l"
1020{
1021	yy_pop_state(yyscanner);
1022	if (yyextra->space_tokens)
1023		return SPACE;
1024}
1025	YY_BREAK
1026case 8:
1027YY_RULE_SETUP
1028#line 123 "src/src/glsl/glcpp/glcpp-lex.l"
1029{
1030	yylval->str = ralloc_strdup (yyextra, yytext);
1031	yyextra->space_tokens = 0;
1032	return HASH_VERSION;
1033}
1034	YY_BREAK
1035/* glcpp doesn't handle #extension, #version, or #pragma directives.
1036	 * Simply pass them through to the main compiler's lexer/parser. */
1037case 9:
1038YY_RULE_SETUP
1039#line 131 "src/src/glsl/glcpp/glcpp-lex.l"
1040{
1041	yylval->str = ralloc_strdup (yyextra, yytext);
1042	yylineno++;
1043	yycolumn = 0;
1044	return OTHER;
1045}
1046	YY_BREAK
1047case 10:
1048YY_RULE_SETUP
1049#line 138 "src/src/glsl/glcpp/glcpp-lex.l"
1050{
1051	return HASH_LINE;
1052}
1053	YY_BREAK
1054
1055case 11:
1056YY_RULE_SETUP
1057#line 143 "src/src/glsl/glcpp/glcpp-lex.l"
1058{
1059	yyextra->lexing_if = 1;
1060	yyextra->space_tokens = 0;
1061	return HASH_IFDEF;
1062}
1063	YY_BREAK
1064case 12:
1065YY_RULE_SETUP
1066#line 149 "src/src/glsl/glcpp/glcpp-lex.l"
1067{
1068	yyextra->lexing_if = 1;
1069	yyextra->space_tokens = 0;
1070	return HASH_IFNDEF;
1071}
1072	YY_BREAK
1073case 13:
1074/* rule 13 can match eol */
1075*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1076yyg->yy_c_buf_p = yy_cp -= 1;
1077YY_DO_BEFORE_ACTION; /* set up yytext again */
1078YY_RULE_SETUP
1079#line 155 "src/src/glsl/glcpp/glcpp-lex.l"
1080{
1081	yyextra->lexing_if = 1;
1082	yyextra->space_tokens = 0;
1083	return HASH_IF;
1084}
1085	YY_BREAK
1086case 14:
1087YY_RULE_SETUP
1088#line 161 "src/src/glsl/glcpp/glcpp-lex.l"
1089{
1090	yyextra->lexing_if = 1;
1091	yyextra->space_tokens = 0;
1092	return HASH_ELIF;
1093}
1094	YY_BREAK
1095case 15:
1096YY_RULE_SETUP
1097#line 167 "src/src/glsl/glcpp/glcpp-lex.l"
1098{
1099	yyextra->space_tokens = 0;
1100	return HASH_ELSE;
1101}
1102	YY_BREAK
1103case 16:
1104YY_RULE_SETUP
1105#line 172 "src/src/glsl/glcpp/glcpp-lex.l"
1106{
1107	yyextra->space_tokens = 0;
1108	return HASH_ENDIF;
1109}
1110	YY_BREAK
1111
1112case 17:
1113YY_RULE_SETUP
1114#line 178 "src/src/glsl/glcpp/glcpp-lex.l"
1115;
1116	YY_BREAK
1117case 18:
1118YY_RULE_SETUP
1119#line 180 "src/src/glsl/glcpp/glcpp-lex.l"
1120{
1121	char *p;
1122	for (p = yytext; !isalpha(p[0]); p++); /* skip "  #   " */
1123	p += 5; /* skip "error" */
1124	glcpp_error(yylloc, yyextra, "#error%s", p);
1125}
1126	YY_BREAK
1127case 19:
1128YY_RULE_SETUP
1129#line 187 "src/src/glsl/glcpp/glcpp-lex.l"
1130{
1131	yyextra->space_tokens = 0;
1132	yy_push_state(DEFINE, yyscanner);
1133	return HASH_DEFINE;
1134}
1135	YY_BREAK
1136case 20:
1137*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1138yyg->yy_c_buf_p = yy_cp -= 1;
1139YY_DO_BEFORE_ACTION; /* set up yytext again */
1140YY_RULE_SETUP
1141#line 193 "src/src/glsl/glcpp/glcpp-lex.l"
1142{
1143	yy_pop_state(yyscanner);
1144	yylval->str = ralloc_strdup (yyextra, yytext);
1145	return FUNC_IDENTIFIER;
1146}
1147	YY_BREAK
1148case 21:
1149YY_RULE_SETUP
1150#line 199 "src/src/glsl/glcpp/glcpp-lex.l"
1151{
1152	yy_pop_state(yyscanner);
1153	yylval->str = ralloc_strdup (yyextra, yytext);
1154	return OBJ_IDENTIFIER;
1155}
1156	YY_BREAK
1157case 22:
1158YY_RULE_SETUP
1159#line 205 "src/src/glsl/glcpp/glcpp-lex.l"
1160{
1161	yyextra->space_tokens = 0;
1162	return HASH_UNDEF;
1163}
1164	YY_BREAK
1165case 23:
1166YY_RULE_SETUP
1167#line 210 "src/src/glsl/glcpp/glcpp-lex.l"
1168{
1169	yyextra->space_tokens = 0;
1170	return HASH;
1171}
1172	YY_BREAK
1173case 24:
1174YY_RULE_SETUP
1175#line 215 "src/src/glsl/glcpp/glcpp-lex.l"
1176{
1177	yylval->str = ralloc_strdup (yyextra, yytext);
1178	return INTEGER_STRING;
1179}
1180	YY_BREAK
1181case 25:
1182YY_RULE_SETUP
1183#line 220 "src/src/glsl/glcpp/glcpp-lex.l"
1184{
1185	yylval->str = ralloc_strdup (yyextra, yytext);
1186	return INTEGER_STRING;
1187}
1188	YY_BREAK
1189case 26:
1190YY_RULE_SETUP
1191#line 225 "src/src/glsl/glcpp/glcpp-lex.l"
1192{
1193	yylval->str = ralloc_strdup (yyextra, yytext);
1194	return INTEGER_STRING;
1195}
1196	YY_BREAK
1197case 27:
1198YY_RULE_SETUP
1199#line 230 "src/src/glsl/glcpp/glcpp-lex.l"
1200{
1201	return LEFT_SHIFT;
1202}
1203	YY_BREAK
1204case 28:
1205YY_RULE_SETUP
1206#line 234 "src/src/glsl/glcpp/glcpp-lex.l"
1207{
1208	return RIGHT_SHIFT;
1209}
1210	YY_BREAK
1211case 29:
1212YY_RULE_SETUP
1213#line 238 "src/src/glsl/glcpp/glcpp-lex.l"
1214{
1215	return LESS_OR_EQUAL;
1216}
1217	YY_BREAK
1218case 30:
1219YY_RULE_SETUP
1220#line 242 "src/src/glsl/glcpp/glcpp-lex.l"
1221{
1222	return GREATER_OR_EQUAL;
1223}
1224	YY_BREAK
1225case 31:
1226YY_RULE_SETUP
1227#line 246 "src/src/glsl/glcpp/glcpp-lex.l"
1228{
1229	return EQUAL;
1230}
1231	YY_BREAK
1232case 32:
1233YY_RULE_SETUP
1234#line 250 "src/src/glsl/glcpp/glcpp-lex.l"
1235{
1236	return NOT_EQUAL;
1237}
1238	YY_BREAK
1239case 33:
1240YY_RULE_SETUP
1241#line 254 "src/src/glsl/glcpp/glcpp-lex.l"
1242{
1243	return AND;
1244}
1245	YY_BREAK
1246case 34:
1247YY_RULE_SETUP
1248#line 258 "src/src/glsl/glcpp/glcpp-lex.l"
1249{
1250	return OR;
1251}
1252	YY_BREAK
1253case 35:
1254YY_RULE_SETUP
1255#line 262 "src/src/glsl/glcpp/glcpp-lex.l"
1256{
1257	return PASTE;
1258}
1259	YY_BREAK
1260case 36:
1261YY_RULE_SETUP
1262#line 266 "src/src/glsl/glcpp/glcpp-lex.l"
1263{
1264	return DEFINED;
1265}
1266	YY_BREAK
1267case 37:
1268YY_RULE_SETUP
1269#line 270 "src/src/glsl/glcpp/glcpp-lex.l"
1270{
1271	yylval->str = ralloc_strdup (yyextra, yytext);
1272	return IDENTIFIER;
1273}
1274	YY_BREAK
1275case 38:
1276YY_RULE_SETUP
1277#line 275 "src/src/glsl/glcpp/glcpp-lex.l"
1278{
1279	return yytext[0];
1280}
1281	YY_BREAK
1282case 39:
1283YY_RULE_SETUP
1284#line 279 "src/src/glsl/glcpp/glcpp-lex.l"
1285{
1286	yylval->str = ralloc_strdup (yyextra, yytext);
1287	return OTHER;
1288}
1289	YY_BREAK
1290case 40:
1291YY_RULE_SETUP
1292#line 284 "src/src/glsl/glcpp/glcpp-lex.l"
1293{
1294	if (yyextra->space_tokens) {
1295		return SPACE;
1296	}
1297}
1298	YY_BREAK
1299case 41:
1300/* rule 41 can match eol */
1301YY_RULE_SETUP
1302#line 290 "src/src/glsl/glcpp/glcpp-lex.l"
1303{
1304	yyextra->lexing_if = 0;
1305	yylineno++;
1306	yycolumn = 0;
1307	return NEWLINE;
1308}
1309	YY_BREAK
1310/* Handle missing newline at EOF. */
1311case YY_STATE_EOF(INITIAL):
1312#line 298 "src/src/glsl/glcpp/glcpp-lex.l"
1313{
1314	BEGIN DONE; /* Don't keep matching this rule forever. */
1315	yyextra->lexing_if = 0;
1316	return NEWLINE;
1317}
1318	YY_BREAK
1319/* We don't actually use the UNREACHABLE start condition. We
1320	only have this action here so that we can pretend to call some
1321	generated functions, (to avoid "defined but not used"
1322	warnings. */
1323case 42:
1324YY_RULE_SETUP
1325#line 308 "src/src/glsl/glcpp/glcpp-lex.l"
1326{
1327	unput('.');
1328	yy_top_state(yyextra);
1329}
1330	YY_BREAK
1331case 43:
1332YY_RULE_SETUP
1333#line 313 "src/src/glsl/glcpp/glcpp-lex.l"
1334ECHO;
1335	YY_BREAK
1336#line 1337 "src/chromium_gensrc/mesa/glcpp-lex.c"
1337case YY_STATE_EOF(DONE):
1338case YY_STATE_EOF(COMMENT):
1339case YY_STATE_EOF(UNREACHABLE):
1340case YY_STATE_EOF(SKIP):
1341case YY_STATE_EOF(DEFINE):
1342	yyterminate();
1343
1344	case YY_END_OF_BUFFER:
1345		{
1346		/* Amount of text matched not including the EOB char. */
1347		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1348
1349		/* Undo the effects of YY_DO_BEFORE_ACTION. */
1350		*yy_cp = yyg->yy_hold_char;
1351		YY_RESTORE_YY_MORE_OFFSET
1352
1353		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1354			{
1355			/* We're scanning a new file or input source.  It's
1356			 * possible that this happened because the user
1357			 * just pointed yyin at a new source and called
1358			 * glcpp_lex().  If so, then we have to assure
1359			 * consistency between YY_CURRENT_BUFFER and our
1360			 * globals.  Here is the right place to do so, because
1361			 * this is the first action (other than possibly a
1362			 * back-up) that will match for the new input source.
1363			 */
1364			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1365			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1366			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1367			}
1368
1369		/* Note that here we test for yy_c_buf_p "<=" to the position
1370		 * of the first EOB in the buffer, since yy_c_buf_p will
1371		 * already have been incremented past the NUL character
1372		 * (since all states make transitions on EOB to the
1373		 * end-of-buffer state).  Contrast this with the test
1374		 * in input().
1375		 */
1376		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1377			{ /* This was really a NUL. */
1378			yy_state_type yy_next_state;
1379
1380			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1381
1382			yy_current_state = yy_get_previous_state( yyscanner );
1383
1384			/* Okay, we're now positioned to make the NUL
1385			 * transition.  We couldn't have
1386			 * yy_get_previous_state() go ahead and do it
1387			 * for us because it doesn't know how to deal
1388			 * with the possibility of jamming (and we don't
1389			 * want to build jamming into it because then it
1390			 * will run more slowly).
1391			 */
1392
1393			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1394
1395			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1396
1397			if ( yy_next_state )
1398				{
1399				/* Consume the NUL. */
1400				yy_cp = ++yyg->yy_c_buf_p;
1401				yy_current_state = yy_next_state;
1402				goto yy_match;
1403				}
1404
1405			else
1406				{
1407				yy_cp = yyg->yy_last_accepting_cpos;
1408				yy_current_state = yyg->yy_last_accepting_state;
1409				goto yy_find_action;
1410				}
1411			}
1412
1413		else switch ( yy_get_next_buffer( yyscanner ) )
1414			{
1415			case EOB_ACT_END_OF_FILE:
1416				{
1417				yyg->yy_did_buffer_switch_on_eof = 0;
1418
1419				if ( glcpp_wrap(yyscanner ) )
1420					{
1421					/* Note: because we've taken care in
1422					 * yy_get_next_buffer() to have set up
1423					 * yytext, we can now set up
1424					 * yy_c_buf_p so that if some total
1425					 * hoser (like flex itself) wants to
1426					 * call the scanner after we return the
1427					 * YY_NULL, it'll still work - another
1428					 * YY_NULL will get returned.
1429					 */
1430					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1431
1432					yy_act = YY_STATE_EOF(YY_START);
1433					goto do_action;
1434					}
1435
1436				else
1437					{
1438					if ( ! yyg->yy_did_buffer_switch_on_eof )
1439						YY_NEW_FILE;
1440					}
1441				break;
1442				}
1443
1444			case EOB_ACT_CONTINUE_SCAN:
1445				yyg->yy_c_buf_p =
1446					yyg->yytext_ptr + yy_amount_of_matched_text;
1447
1448				yy_current_state = yy_get_previous_state( yyscanner );
1449
1450				yy_cp = yyg->yy_c_buf_p;
1451				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1452				goto yy_match;
1453
1454			case EOB_ACT_LAST_MATCH:
1455				yyg->yy_c_buf_p =
1456				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1457
1458				yy_current_state = yy_get_previous_state( yyscanner );
1459
1460				yy_cp = yyg->yy_c_buf_p;
1461				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1462				goto yy_find_action;
1463			}
1464		break;
1465		}
1466
1467	default:
1468		YY_FATAL_ERROR(
1469			"fatal flex scanner internal error--no action found" );
1470	} /* end of action switch */
1471		} /* end of scanning one token */
1472} /* end of glcpp_lex */
1473
1474/* yy_get_next_buffer - try to read in a new buffer
1475 *
1476 * Returns a code representing an action:
1477 *	EOB_ACT_LAST_MATCH -
1478 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1479 *	EOB_ACT_END_OF_FILE - end of file
1480 */
1481static int yy_get_next_buffer (yyscan_t yyscanner)
1482{
1483    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1484	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1485	register char *source = yyg->yytext_ptr;
1486	register int number_to_move, i;
1487	int ret_val;
1488
1489	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1490		YY_FATAL_ERROR(
1491		"fatal flex scanner internal error--end of buffer missed" );
1492
1493	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1494		{ /* Don't try to fill the buffer, so this is an EOF. */
1495		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1496			{
1497			/* We matched a single character, the EOB, so
1498			 * treat this as a final EOF.
1499			 */
1500			return EOB_ACT_END_OF_FILE;
1501			}
1502
1503		else
1504			{
1505			/* We matched some text prior to the EOB, first
1506			 * process it.
1507			 */
1508			return EOB_ACT_LAST_MATCH;
1509			}
1510		}
1511
1512	/* Try to read more data. */
1513
1514	/* First move last chars to start of buffer. */
1515	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1516
1517	for ( i = 0; i < number_to_move; ++i )
1518		*(dest++) = *(source++);
1519
1520	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1521		/* don't do the read, it's not guaranteed to return an EOF,
1522		 * just force an EOF
1523		 */
1524		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1525
1526	else
1527		{
1528			int num_to_read =
1529			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1530
1531		while ( num_to_read <= 0 )
1532			{ /* Not enough room in the buffer - grow it. */
1533
1534			/* just a shorter name for the current buffer */
1535			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1536
1537			int yy_c_buf_p_offset =
1538				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1539
1540			if ( b->yy_is_our_buffer )
1541				{
1542				int new_size = b->yy_buf_size * 2;
1543
1544				if ( new_size <= 0 )
1545					b->yy_buf_size += b->yy_buf_size / 8;
1546				else
1547					b->yy_buf_size *= 2;
1548
1549				b->yy_ch_buf = (char *)
1550					/* Include room in for 2 EOB chars. */
1551					glcpp_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
1552				}
1553			else
1554				/* Can't grow it, we don't own it. */
1555				b->yy_ch_buf = 0;
1556
1557			if ( ! b->yy_ch_buf )
1558				YY_FATAL_ERROR(
1559				"fatal error - scanner input buffer overflow" );
1560
1561			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1562
1563			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1564						number_to_move - 1;
1565
1566			}
1567
1568		if ( num_to_read > YY_READ_BUF_SIZE )
1569			num_to_read = YY_READ_BUF_SIZE;
1570
1571		/* Read in more data. */
1572		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1573			yyg->yy_n_chars, (size_t) num_to_read );
1574
1575		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1576		}
1577
1578	if ( yyg->yy_n_chars == 0 )
1579		{
1580		if ( number_to_move == YY_MORE_ADJ )
1581			{
1582			ret_val = EOB_ACT_END_OF_FILE;
1583			glcpp_restart(yyin  ,yyscanner);
1584			}
1585
1586		else
1587			{
1588			ret_val = EOB_ACT_LAST_MATCH;
1589			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1590				YY_BUFFER_EOF_PENDING;
1591			}
1592		}
1593
1594	else
1595		ret_val = EOB_ACT_CONTINUE_SCAN;
1596
1597	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1598		/* Extend the array by 50%, plus the number we really need. */
1599		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
1600		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) glcpp_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
1601		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1602			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1603	}
1604
1605	yyg->yy_n_chars += number_to_move;
1606	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1607	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1608
1609	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1610
1611	return ret_val;
1612}
1613
1614/* yy_get_previous_state - get the state just before the EOB char was reached */
1615
1616    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
1617{
1618	register yy_state_type yy_current_state;
1619	register char *yy_cp;
1620    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1621
1622	yy_current_state = yyg->yy_start;
1623	yy_current_state += YY_AT_BOL();
1624
1625	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
1626		{
1627		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1628		if ( yy_accept[yy_current_state] )
1629			{
1630			yyg->yy_last_accepting_state = yy_current_state;
1631			yyg->yy_last_accepting_cpos = yy_cp;
1632			}
1633		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1634			{
1635			yy_current_state = (int) yy_def[yy_current_state];
1636			if ( yy_current_state >= 147 )
1637				yy_c = yy_meta[(unsigned int) yy_c];
1638			}
1639		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1640		}
1641
1642	return yy_current_state;
1643}
1644
1645/* yy_try_NUL_trans - try to make a transition on the NUL character
1646 *
1647 * synopsis
1648 *	next_state = yy_try_NUL_trans( current_state );
1649 */
1650    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
1651{
1652	register int yy_is_jam;
1653    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
1654	register char *yy_cp = yyg->yy_c_buf_p;
1655
1656	register YY_CHAR yy_c = 1;
1657	if ( yy_accept[yy_current_state] )
1658		{
1659		yyg->yy_last_accepting_state = yy_current_state;
1660		yyg->yy_last_accepting_cpos = yy_cp;
1661		}
1662	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1663		{
1664		yy_current_state = (int) yy_def[yy_current_state];
1665		if ( yy_current_state >= 147 )
1666			yy_c = yy_meta[(unsigned int) yy_c];
1667		}
1668	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1669	yy_is_jam = (yy_current_state == 146);
1670
1671	return yy_is_jam ? 0 : yy_current_state;
1672}
1673
1674    static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
1675{
1676	register char *yy_cp;
1677    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1678
1679    yy_cp = yyg->yy_c_buf_p;
1680
1681	/* undo effects of setting up yytext */
1682	*yy_cp = yyg->yy_hold_char;
1683
1684	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1685		{ /* need to shift things up to make room */
1686		/* +2 for EOB chars. */
1687		register int number_to_move = yyg->yy_n_chars + 2;
1688		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1689					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1690		register char *source =
1691				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1692
1693		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1694			*--dest = *--source;
1695
1696		yy_cp += (int) (dest - source);
1697		yy_bp += (int) (dest - source);
1698		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1699			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1700
1701		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1702			YY_FATAL_ERROR( "flex scanner push-back overflow" );
1703		}
1704
1705	*--yy_cp = (char) c;
1706
1707	yyg->yytext_ptr = yy_bp;
1708	yyg->yy_hold_char = *yy_cp;
1709	yyg->yy_c_buf_p = yy_cp;
1710}
1711
1712#ifndef YY_NO_INPUT
1713#ifdef __cplusplus
1714    static int yyinput (yyscan_t yyscanner)
1715#else
1716    static int input  (yyscan_t yyscanner)
1717#endif
1718
1719{
1720	int c;
1721    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1722
1723	*yyg->yy_c_buf_p = yyg->yy_hold_char;
1724
1725	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1726		{
1727		/* yy_c_buf_p now points to the character we want to return.
1728		 * If this occurs *before* the EOB characters, then it's a
1729		 * valid NUL; if not, then we've hit the end of the buffer.
1730		 */
1731		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1732			/* This was really a NUL. */
1733			*yyg->yy_c_buf_p = '\0';
1734
1735		else
1736			{ /* need more input */
1737			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
1738			++yyg->yy_c_buf_p;
1739
1740			switch ( yy_get_next_buffer( yyscanner ) )
1741				{
1742				case EOB_ACT_LAST_MATCH:
1743					/* This happens because yy_g_n_b()
1744					 * sees that we've accumulated a
1745					 * token and flags that we need to
1746					 * try matching the token before
1747					 * proceeding.  But for input(),
1748					 * there's no matching to consider.
1749					 * So convert the EOB_ACT_LAST_MATCH
1750					 * to EOB_ACT_END_OF_FILE.
1751					 */
1752
1753					/* Reset buffer status. */
1754					glcpp_restart(yyin ,yyscanner);
1755
1756					/*FALLTHROUGH*/
1757
1758				case EOB_ACT_END_OF_FILE:
1759					{
1760					if ( glcpp_wrap(yyscanner ) )
1761						return EOF;
1762
1763					if ( ! yyg->yy_did_buffer_switch_on_eof )
1764						YY_NEW_FILE;
1765#ifdef __cplusplus
1766					return yyinput(yyscanner);
1767#else
1768					return input(yyscanner);
1769#endif
1770					}
1771
1772				case EOB_ACT_CONTINUE_SCAN:
1773					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
1774					break;
1775				}
1776			}
1777		}
1778
1779	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
1780	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
1781	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
1782
1783	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
1784
1785	return c;
1786}
1787#endif	/* ifndef YY_NO_INPUT */
1788
1789/** Immediately switch to a different input stream.
1790 * @param input_file A readable stream.
1791 * @param yyscanner The scanner object.
1792 * @note This function does not reset the start condition to @c INITIAL .
1793 */
1794    void glcpp_restart  (FILE * input_file , yyscan_t yyscanner)
1795{
1796    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1797
1798	if ( ! YY_CURRENT_BUFFER ){
1799        glcpp_ensure_buffer_stack (yyscanner);
1800		YY_CURRENT_BUFFER_LVALUE =
1801            glcpp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1802	}
1803
1804	glcpp__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
1805	glcpp__load_buffer_state(yyscanner );
1806}
1807
1808/** Switch to a different input buffer.
1809 * @param new_buffer The new input buffer.
1810 * @param yyscanner The scanner object.
1811 */
1812    void glcpp__switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
1813{
1814    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1815
1816	/* TODO. We should be able to replace this entire function body
1817	 * with
1818	 *		glcpp_pop_buffer_state();
1819	 *		glcpp_push_buffer_state(new_buffer);
1820     */
1821	glcpp_ensure_buffer_stack (yyscanner);
1822	if ( YY_CURRENT_BUFFER == new_buffer )
1823		return;
1824
1825	if ( YY_CURRENT_BUFFER )
1826		{
1827		/* Flush out information for old buffer. */
1828		*yyg->yy_c_buf_p = yyg->yy_hold_char;
1829		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1830		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1831		}
1832
1833	YY_CURRENT_BUFFER_LVALUE = new_buffer;
1834	glcpp__load_buffer_state(yyscanner );
1835
1836	/* We don't actually know whether we did this switch during
1837	 * EOF (glcpp_wrap()) processing, but the only time this flag
1838	 * is looked at is after glcpp_wrap() is called, so it's safe
1839	 * to go ahead and always set it.
1840	 */
1841	yyg->yy_did_buffer_switch_on_eof = 1;
1842}
1843
1844static void glcpp__load_buffer_state  (yyscan_t yyscanner)
1845{
1846    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1847	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1848	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1849	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1850	yyg->yy_hold_char = *yyg->yy_c_buf_p;
1851}
1852
1853/** Allocate and initialize an input buffer state.
1854 * @param file A readable stream.
1855 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1856 * @param yyscanner The scanner object.
1857 * @return the allocated buffer state.
1858 */
1859    YY_BUFFER_STATE glcpp__create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
1860{
1861	YY_BUFFER_STATE b;
1862
1863	b = (YY_BUFFER_STATE) glcpp_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
1864	if ( ! b )
1865		YY_FATAL_ERROR( "out of dynamic memory in glcpp__create_buffer()" );
1866
1867	b->yy_buf_size = size;
1868
1869	/* yy_ch_buf has to be 2 characters longer than the size given because
1870	 * we need to put in 2 end-of-buffer characters.
1871	 */
1872	b->yy_ch_buf = (char *) glcpp_alloc(b->yy_buf_size + 2 ,yyscanner );
1873	if ( ! b->yy_ch_buf )
1874		YY_FATAL_ERROR( "out of dynamic memory in glcpp__create_buffer()" );
1875
1876	b->yy_is_our_buffer = 1;
1877
1878	glcpp__init_buffer(b,file ,yyscanner);
1879
1880	return b;
1881}
1882
1883/** Destroy the buffer.
1884 * @param b a buffer created with glcpp__create_buffer()
1885 * @param yyscanner The scanner object.
1886 */
1887    void glcpp__delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1888{
1889    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1890
1891	if ( ! b )
1892		return;
1893
1894	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1895		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1896
1897	if ( b->yy_is_our_buffer )
1898		glcpp_free((void *) b->yy_ch_buf ,yyscanner );
1899
1900	glcpp_free((void *) b ,yyscanner );
1901}
1902
1903/* Initializes or reinitializes a buffer.
1904 * This function is sometimes called more than once on the same buffer,
1905 * such as during a glcpp_restart() or at EOF.
1906 */
1907    static void glcpp__init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
1908
1909{
1910	int oerrno = errno;
1911    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1912
1913	glcpp__flush_buffer(b ,yyscanner);
1914
1915	b->yy_input_file = file;
1916	b->yy_fill_buffer = 1;
1917
1918    /* If b is the current buffer, then glcpp__init_buffer was _probably_
1919     * called from glcpp_restart() or through yy_get_next_buffer.
1920     * In that case, we don't want to reset the lineno or column.
1921     */
1922    if (b != YY_CURRENT_BUFFER){
1923        b->yy_bs_lineno = 1;
1924        b->yy_bs_column = 0;
1925    }
1926
1927        b->yy_is_interactive = 0;
1928
1929	errno = oerrno;
1930}
1931
1932/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
1933 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
1934 * @param yyscanner The scanner object.
1935 */
1936    void glcpp__flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1937{
1938    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1939	if ( ! b )
1940		return;
1941
1942	b->yy_n_chars = 0;
1943
1944	/* We always need two end-of-buffer characters.  The first causes
1945	 * a transition to the end-of-buffer state.  The second causes
1946	 * a jam in that state.
1947	 */
1948	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1949	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1950
1951	b->yy_buf_pos = &b->yy_ch_buf[0];
1952
1953	b->yy_at_bol = 1;
1954	b->yy_buffer_status = YY_BUFFER_NEW;
1955
1956	if ( b == YY_CURRENT_BUFFER )
1957		glcpp__load_buffer_state(yyscanner );
1958}
1959
1960/** Pushes the new state onto the stack. The new state becomes
1961 *  the current state. This function will allocate the stack
1962 *  if necessary.
1963 *  @param new_buffer The new state.
1964 *  @param yyscanner The scanner object.
1965 */
1966void glcpp_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
1967{
1968    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1969	if (new_buffer == NULL)
1970		return;
1971
1972	glcpp_ensure_buffer_stack(yyscanner);
1973
1974	/* This block is copied from glcpp__switch_to_buffer. */
1975	if ( YY_CURRENT_BUFFER )
1976		{
1977		/* Flush out information for old buffer. */
1978		*yyg->yy_c_buf_p = yyg->yy_hold_char;
1979		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1980		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1981		}
1982
1983	/* Only push if top exists. Otherwise, replace top. */
1984	if (YY_CURRENT_BUFFER)
1985		yyg->yy_buffer_stack_top++;
1986	YY_CURRENT_BUFFER_LVALUE = new_buffer;
1987
1988	/* copied from glcpp__switch_to_buffer. */
1989	glcpp__load_buffer_state(yyscanner );
1990	yyg->yy_did_buffer_switch_on_eof = 1;
1991}
1992
1993/** Removes and deletes the top of the stack, if present.
1994 *  The next element becomes the new top.
1995 *  @param yyscanner The scanner object.
1996 */
1997void glcpp_pop_buffer_state (yyscan_t yyscanner)
1998{
1999    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2000	if (!YY_CURRENT_BUFFER)
2001		return;
2002
2003	glcpp__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2004	YY_CURRENT_BUFFER_LVALUE = NULL;
2005	if (yyg->yy_buffer_stack_top > 0)
2006		--yyg->yy_buffer_stack_top;
2007
2008	if (YY_CURRENT_BUFFER) {
2009		glcpp__load_buffer_state(yyscanner );
2010		yyg->yy_did_buffer_switch_on_eof = 1;
2011	}
2012}
2013
2014/* Allocates the stack if it does not exist.
2015 *  Guarantees space for at least one push.
2016 */
2017static void glcpp_ensure_buffer_stack (yyscan_t yyscanner)
2018{
2019	int num_to_alloc;
2020    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2021
2022	if (!yyg->yy_buffer_stack) {
2023
2024		/* First allocation is just for 2 elements, since we don't know if this
2025		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2026		 * immediate realloc on the next call.
2027         */
2028		num_to_alloc = 1;
2029		yyg->yy_buffer_stack = (struct yy_buffer_state**)glcpp_alloc
2030								(num_to_alloc * sizeof(struct yy_buffer_state*)
2031								, yyscanner);
2032		if ( ! yyg->yy_buffer_stack )
2033			YY_FATAL_ERROR( "out of dynamic memory in glcpp_ensure_buffer_stack()" );
2034
2035		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2036
2037		yyg->yy_buffer_stack_max = num_to_alloc;
2038		yyg->yy_buffer_stack_top = 0;
2039		return;
2040	}
2041
2042	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2043
2044		/* Increase the buffer to prepare for a possible push. */
2045		int grow_size = 8 /* arbitrary grow size */;
2046
2047		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2048		yyg->yy_buffer_stack = (struct yy_buffer_state**)glcpp_realloc
2049								(yyg->yy_buffer_stack,
2050								num_to_alloc * sizeof(struct yy_buffer_state*)
2051								, yyscanner);
2052		if ( ! yyg->yy_buffer_stack )
2053			YY_FATAL_ERROR( "out of dynamic memory in glcpp_ensure_buffer_stack()" );
2054
2055		/* zero only the new slots.*/
2056		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2057		yyg->yy_buffer_stack_max = num_to_alloc;
2058	}
2059}
2060
2061/** Setup the input buffer state to scan directly from a user-specified character buffer.
2062 * @param base the character buffer
2063 * @param size the size in bytes of the character buffer
2064 * @param yyscanner The scanner object.
2065 * @return the newly allocated buffer state object.
2066 */
2067YY_BUFFER_STATE glcpp__scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2068{
2069	YY_BUFFER_STATE b;
2070
2071	if ( size < 2 ||
2072	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
2073	     base[size-1] != YY_END_OF_BUFFER_CHAR )
2074		/* They forgot to leave room for the EOB's. */
2075		return 0;
2076
2077	b = (YY_BUFFER_STATE) glcpp_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2078	if ( ! b )
2079		YY_FATAL_ERROR( "out of dynamic memory in glcpp__scan_buffer()" );
2080
2081	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
2082	b->yy_buf_pos = b->yy_ch_buf = base;
2083	b->yy_is_our_buffer = 0;
2084	b->yy_input_file = 0;
2085	b->yy_n_chars = b->yy_buf_size;
2086	b->yy_is_interactive = 0;
2087	b->yy_at_bol = 1;
2088	b->yy_fill_buffer = 0;
2089	b->yy_buffer_status = YY_BUFFER_NEW;
2090
2091	glcpp__switch_to_buffer(b ,yyscanner );
2092
2093	return b;
2094}
2095
2096/** Setup the input buffer state to scan a string. The next call to glcpp_lex() will
2097 * scan from a @e copy of @a str.
2098 * @param yystr a NUL-terminated string to scan
2099 * @param yyscanner The scanner object.
2100 * @return the newly allocated buffer state object.
2101 * @note If you want to scan bytes that may contain NUL values, then use
2102 *       glcpp__scan_bytes() instead.
2103 */
2104YY_BUFFER_STATE glcpp__scan_string (yyconst char * yystr , yyscan_t yyscanner)
2105{
2106
2107	return glcpp__scan_bytes(yystr,strlen(yystr) ,yyscanner);
2108}
2109
2110/** Setup the input buffer state to scan the given bytes. The next call to glcpp_lex() will
2111 * scan from a @e copy of @a bytes.
2112 * @param yybytes the byte buffer to scan
2113 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2114 * @param yyscanner The scanner object.
2115 * @return the newly allocated buffer state object.
2116 */
2117YY_BUFFER_STATE glcpp__scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
2118{
2119	YY_BUFFER_STATE b;
2120	char *buf;
2121	yy_size_t n;
2122	int i;
2123
2124	/* Get memory for full buffer, including space for trailing EOB's. */
2125	n = _yybytes_len + 2;
2126	buf = (char *) glcpp_alloc(n ,yyscanner );
2127	if ( ! buf )
2128		YY_FATAL_ERROR( "out of dynamic memory in glcpp__scan_bytes()" );
2129
2130	for ( i = 0; i < _yybytes_len; ++i )
2131		buf[i] = yybytes[i];
2132
2133	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2134
2135	b = glcpp__scan_buffer(buf,n ,yyscanner);
2136	if ( ! b )
2137		YY_FATAL_ERROR( "bad buffer in glcpp__scan_bytes()" );
2138
2139	/* It's okay to grow etc. this buffer, and we should throw it
2140	 * away when we're done.
2141	 */
2142	b->yy_is_our_buffer = 1;
2143
2144	return b;
2145}
2146
2147    static void yy_push_state (int  new_state , yyscan_t yyscanner)
2148{
2149    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2150	if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
2151		{
2152		yy_size_t new_size;
2153
2154		yyg->yy_start_stack_depth += YY_START_STACK_INCR;
2155		new_size = yyg->yy_start_stack_depth * sizeof( int );
2156
2157		if ( ! yyg->yy_start_stack )
2158			yyg->yy_start_stack = (int *) glcpp_alloc(new_size ,yyscanner );
2159
2160		else
2161			yyg->yy_start_stack = (int *) glcpp_realloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
2162
2163		if ( ! yyg->yy_start_stack )
2164			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
2165		}
2166
2167	yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
2168
2169	BEGIN(new_state);
2170}
2171
2172    static void yy_pop_state  (yyscan_t yyscanner)
2173{
2174    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2175	if ( --yyg->yy_start_stack_ptr < 0 )
2176		YY_FATAL_ERROR( "start-condition stack underflow" );
2177
2178	BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
2179}
2180
2181    static int yy_top_state  (yyscan_t yyscanner)
2182{
2183    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2184	return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
2185}
2186
2187#ifndef YY_EXIT_FAILURE
2188#define YY_EXIT_FAILURE 2
2189#endif
2190
2191static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2192{
2193    	(void) fprintf( stderr, "%s\n", msg );
2194	exit( YY_EXIT_FAILURE );
2195}
2196
2197/* Redefine yyless() so it works in section 3 code. */
2198
2199#undef yyless
2200#define yyless(n) \
2201	do \
2202		{ \
2203		/* Undo effects of setting up yytext. */ \
2204        int yyless_macro_arg = (n); \
2205        YY_LESS_LINENO(yyless_macro_arg);\
2206		yytext[yyleng] = yyg->yy_hold_char; \
2207		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2208		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2209		*yyg->yy_c_buf_p = '\0'; \
2210		yyleng = yyless_macro_arg; \
2211		} \
2212	while ( 0 )
2213
2214/* Accessor  methods (get/set functions) to struct members. */
2215
2216/** Get the user-defined data for this scanner.
2217 * @param yyscanner The scanner object.
2218 */
2219YY_EXTRA_TYPE glcpp_get_extra  (yyscan_t yyscanner)
2220{
2221    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2222    return yyextra;
2223}
2224
2225/** Get the current line number.
2226 * @param yyscanner The scanner object.
2227 */
2228int glcpp_get_lineno  (yyscan_t yyscanner)
2229{
2230    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2231
2232        if (! YY_CURRENT_BUFFER)
2233            return 0;
2234
2235    return yylineno;
2236}
2237
2238/** Get the current column number.
2239 * @param yyscanner The scanner object.
2240 */
2241int glcpp_get_column  (yyscan_t yyscanner)
2242{
2243    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2244
2245        if (! YY_CURRENT_BUFFER)
2246            return 0;
2247
2248    return yycolumn;
2249}
2250
2251/** Get the input stream.
2252 * @param yyscanner The scanner object.
2253 */
2254FILE *glcpp_get_in  (yyscan_t yyscanner)
2255{
2256    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2257    return yyin;
2258}
2259
2260/** Get the output stream.
2261 * @param yyscanner The scanner object.
2262 */
2263FILE *glcpp_get_out  (yyscan_t yyscanner)
2264{
2265    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2266    return yyout;
2267}
2268
2269/** Get the length of the current token.
2270 * @param yyscanner The scanner object.
2271 */
2272int glcpp_get_leng  (yyscan_t yyscanner)
2273{
2274    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2275    return yyleng;
2276}
2277
2278/** Get the current token.
2279 * @param yyscanner The scanner object.
2280 */
2281
2282char *glcpp_get_text  (yyscan_t yyscanner)
2283{
2284    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2285    return yytext;
2286}
2287
2288/** Set the user-defined data. This data is never touched by the scanner.
2289 * @param user_defined The data to be associated with this scanner.
2290 * @param yyscanner The scanner object.
2291 */
2292void glcpp_set_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2293{
2294    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2295    yyextra = user_defined ;
2296}
2297
2298/** Set the current line number.
2299 * @param line_number
2300 * @param yyscanner The scanner object.
2301 */
2302void glcpp_set_lineno (int  line_number , yyscan_t yyscanner)
2303{
2304    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2305
2306        /* lineno is only valid if an input buffer exists. */
2307        if (! YY_CURRENT_BUFFER )
2308           yy_fatal_error( "glcpp_set_lineno called with no buffer" , yyscanner);
2309
2310    yylineno = line_number;
2311}
2312
2313/** Set the current column.
2314 * @param line_number
2315 * @param yyscanner The scanner object.
2316 */
2317void glcpp_set_column (int  column_no , yyscan_t yyscanner)
2318{
2319    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2320
2321        /* column is only valid if an input buffer exists. */
2322        if (! YY_CURRENT_BUFFER )
2323           yy_fatal_error( "glcpp_set_column called with no buffer" , yyscanner);
2324
2325    yycolumn = column_no;
2326}
2327
2328/** Set the input stream. This does not discard the current
2329 * input buffer.
2330 * @param in_str A readable stream.
2331 * @param yyscanner The scanner object.
2332 * @see glcpp__switch_to_buffer
2333 */
2334void glcpp_set_in (FILE *  in_str , yyscan_t yyscanner)
2335{
2336    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2337    yyin = in_str ;
2338}
2339
2340void glcpp_set_out (FILE *  out_str , yyscan_t yyscanner)
2341{
2342    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2343    yyout = out_str ;
2344}
2345
2346int glcpp_get_debug  (yyscan_t yyscanner)
2347{
2348    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2349    return yy_flex_debug;
2350}
2351
2352void glcpp_set_debug (int  bdebug , yyscan_t yyscanner)
2353{
2354    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2355    yy_flex_debug = bdebug ;
2356}
2357
2358/* Accessor methods for yylval and yylloc */
2359
2360YYSTYPE * glcpp_get_lval  (yyscan_t yyscanner)
2361{
2362    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2363    return yylval;
2364}
2365
2366void glcpp_set_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2367{
2368    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2369    yylval = yylval_param;
2370}
2371
2372YYLTYPE *glcpp_get_lloc  (yyscan_t yyscanner)
2373{
2374    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2375    return yylloc;
2376}
2377
2378void glcpp_set_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
2379{
2380    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2381    yylloc = yylloc_param;
2382}
2383
2384/* User-visible API */
2385
2386/* glcpp_lex_init is special because it creates the scanner itself, so it is
2387 * the ONLY reentrant function that doesn't take the scanner as the last argument.
2388 * That's why we explicitly handle the declaration, instead of using our macros.
2389 */
2390
2391int glcpp_lex_init(yyscan_t* ptr_yy_globals)
2392
2393{
2394    if (ptr_yy_globals == NULL){
2395        errno = EINVAL;
2396        return 1;
2397    }
2398
2399    *ptr_yy_globals = (yyscan_t) glcpp_alloc ( sizeof( struct yyguts_t ), NULL );
2400
2401    if (*ptr_yy_globals == NULL){
2402        errno = ENOMEM;
2403        return 1;
2404    }
2405
2406    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2407    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2408
2409    return yy_init_globals ( *ptr_yy_globals );
2410}
2411
2412/* glcpp_lex_init_extra has the same functionality as glcpp_lex_init, but follows the
2413 * convention of taking the scanner as the last argument. Note however, that
2414 * this is a *pointer* to a scanner, as it will be allocated by this call (and
2415 * is the reason, too, why this function also must handle its own declaration).
2416 * The user defined value in the first argument will be available to glcpp_alloc in
2417 * the yyextra field.
2418 */
2419
2420int glcpp_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
2421
2422{
2423    struct yyguts_t dummy_yyguts;
2424
2425    glcpp_set_extra (yy_user_defined, &dummy_yyguts);
2426
2427    if (ptr_yy_globals == NULL){
2428        errno = EINVAL;
2429        return 1;
2430    }
2431
2432    *ptr_yy_globals = (yyscan_t) glcpp_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
2433
2434    if (*ptr_yy_globals == NULL){
2435        errno = ENOMEM;
2436        return 1;
2437    }
2438
2439    /* By setting to 0xAA, we expose bugs in
2440    yy_init_globals. Leave at 0x00 for releases. */
2441    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2442
2443    glcpp_set_extra (yy_user_defined, *ptr_yy_globals);
2444
2445    return yy_init_globals ( *ptr_yy_globals );
2446}
2447
2448static int yy_init_globals (yyscan_t yyscanner)
2449{
2450    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2451    /* Initialization is the same as for the non-reentrant scanner.
2452     * This function is called from glcpp_lex_destroy(), so don't allocate here.
2453     */
2454
2455    yyg->yy_buffer_stack = 0;
2456    yyg->yy_buffer_stack_top = 0;
2457    yyg->yy_buffer_stack_max = 0;
2458    yyg->yy_c_buf_p = (char *) 0;
2459    yyg->yy_init = 0;
2460    yyg->yy_start = 0;
2461
2462    yyg->yy_start_stack_ptr = 0;
2463    yyg->yy_start_stack_depth = 0;
2464    yyg->yy_start_stack =  NULL;
2465
2466/* Defined in main.c */
2467#ifdef YY_STDINIT
2468    yyin = stdin;
2469    yyout = stdout;
2470#else
2471    yyin = (FILE *) 0;
2472    yyout = (FILE *) 0;
2473#endif
2474
2475    /* For future reference: Set errno on error, since we are called by
2476     * glcpp_lex_init()
2477     */
2478    return 0;
2479}
2480
2481/* glcpp_lex_destroy is for both reentrant and non-reentrant scanners. */
2482int glcpp_lex_destroy  (yyscan_t yyscanner)
2483{
2484    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2485
2486    /* Pop the buffer stack, destroying each element. */
2487	while(YY_CURRENT_BUFFER){
2488		glcpp__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
2489		YY_CURRENT_BUFFER_LVALUE = NULL;
2490		glcpp_pop_buffer_state(yyscanner);
2491	}
2492
2493	/* Destroy the stack itself. */
2494	glcpp_free(yyg->yy_buffer_stack ,yyscanner);
2495	yyg->yy_buffer_stack = NULL;
2496
2497    /* Destroy the start condition stack. */
2498        glcpp_free(yyg->yy_start_stack ,yyscanner );
2499        yyg->yy_start_stack = NULL;
2500
2501    /* Reset the globals. This is important in a non-reentrant scanner so the next time
2502     * glcpp_lex() is called, initialization will occur. */
2503    yy_init_globals( yyscanner);
2504
2505    /* Destroy the main struct (reentrant only). */
2506    glcpp_free ( yyscanner , yyscanner );
2507    yyscanner = NULL;
2508    return 0;
2509}
2510
2511/*
2512 * Internal utility routines.
2513 */
2514
2515#ifndef yytext_ptr
2516static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
2517{
2518	register int i;
2519	for ( i = 0; i < n; ++i )
2520		s1[i] = s2[i];
2521}
2522#endif
2523
2524#ifdef YY_NEED_STRLEN
2525static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
2526{
2527	register int n;
2528	for ( n = 0; s[n]; ++n )
2529		;
2530
2531	return n;
2532}
2533#endif
2534
2535void *glcpp_alloc (yy_size_t  size , yyscan_t yyscanner)
2536{
2537	return (void *) malloc( size );
2538}
2539
2540void *glcpp_realloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
2541{
2542	/* The cast to (char *) in the following accommodates both
2543	 * implementations that use char* generic pointers, and those
2544	 * that use void* generic pointers.  It works with the latter
2545	 * because both ANSI C and C++ allow castless assignment from
2546	 * any pointer type to void*, and deal with argument conversions
2547	 * as though doing an assignment.
2548	 */
2549	return (void *) realloc( (char *) ptr, size );
2550}
2551
2552void glcpp_free (void * ptr , yyscan_t yyscanner)
2553{
2554	free( (char *) ptr );	/* see glcpp_realloc() for (char *) cast */
2555}
2556
2557#define YYTABLES_NAME "yytables"
2558
2559#line 313 "src/src/glsl/glcpp/glcpp-lex.l"
2560
2561
2562
2563void
2564glcpp_lex_set_source_string(glcpp_parser_t *parser, const char *shader)
2565{
2566	glcpp__scan_string(shader,parser->scanner);
2567}
2568
2569