declinfo.cpp
Go to the documentation of this file.
1 #line 2 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/declinfo.cpp"
2 
3 #line 4 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/declinfo.cpp"
4 
5 #define YY_INT_ALIGNED short int
6 
7 /* A lexical scanner generated by flex */
8 
9 #define yy_create_buffer declinfoYY_create_buffer
10 #define yy_delete_buffer declinfoYY_delete_buffer
11 #define yy_flex_debug declinfoYY_flex_debug
12 #define yy_init_buffer declinfoYY_init_buffer
13 #define yy_flush_buffer declinfoYY_flush_buffer
14 #define yy_load_buffer_state declinfoYY_load_buffer_state
15 #define yy_switch_to_buffer declinfoYY_switch_to_buffer
16 #define yyin declinfoYYin
17 #define yyleng declinfoYYleng
18 #define yylex declinfoYYlex
19 #define yylineno declinfoYYlineno
20 #define yyout declinfoYYout
21 #define yyrestart declinfoYYrestart
22 #define yytext declinfoYYtext
23 #define yywrap declinfoYYwrap
24 #define yyalloc declinfoYYalloc
25 #define yyrealloc declinfoYYrealloc
26 #define yyfree declinfoYYfree
27 
28 #define FLEX_SCANNER
29 #define YY_FLEX_MAJOR_VERSION 2
30 #define YY_FLEX_MINOR_VERSION 5
31 #define YY_FLEX_SUBMINOR_VERSION 35
32 #if YY_FLEX_SUBMINOR_VERSION > 0
33 #define FLEX_BETA
34 #endif
35 
36 /* First, we deal with platform-specific or compiler-specific issues. */
37 
38 /* begin standard C headers. */
39 #include <stdio.h>
40 #include <string.h>
41 #include <errno.h>
42 #include <stdlib.h>
43 
44 /* end standard C headers. */
45 
46 /* flex integer type definitions */
47 
48 #ifndef FLEXINT_H
49 #define FLEXINT_H
50 
51 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52 
53 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
54 
55 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
56  * if you want the limit (max/min) macros for int types.
57  */
58 #ifndef __STDC_LIMIT_MACROS
59 #define __STDC_LIMIT_MACROS 1
60 #endif
61 
62 #include <inttypes.h>
63 typedef int8_t flex_int8_t;
64 typedef uint8_t flex_uint8_t;
65 typedef int16_t flex_int16_t;
66 typedef uint16_t flex_uint16_t;
67 typedef int32_t flex_int32_t;
68 typedef uint32_t flex_uint32_t;
69 #else
70 typedef signed char flex_int8_t;
71 typedef short int flex_int16_t;
72 typedef int flex_int32_t;
73 typedef unsigned char flex_uint8_t;
74 typedef unsigned short int flex_uint16_t;
75 typedef unsigned int flex_uint32_t;
76 #endif /* ! C99 */
77 
78 /* Limits of integral types. */
79 #ifndef INT8_MIN
80 #define INT8_MIN (-128)
81 #endif
82 #ifndef INT16_MIN
83 #define INT16_MIN (-32767-1)
84 #endif
85 #ifndef INT32_MIN
86 #define INT32_MIN (-2147483647-1)
87 #endif
88 #ifndef INT8_MAX
89 #define INT8_MAX (127)
90 #endif
91 #ifndef INT16_MAX
92 #define INT16_MAX (32767)
93 #endif
94 #ifndef INT32_MAX
95 #define INT32_MAX (2147483647)
96 #endif
97 #ifndef UINT8_MAX
98 #define UINT8_MAX (255U)
99 #endif
100 #ifndef UINT16_MAX
101 #define UINT16_MAX (65535U)
102 #endif
103 #ifndef UINT32_MAX
104 #define UINT32_MAX (4294967295U)
105 #endif
106 
107 #endif /* ! FLEXINT_H */
108 
109 #ifdef __cplusplus
110 
111 /* The "const" storage-class-modifier is valid. */
112 #define YY_USE_CONST
113 
114 #else /* ! __cplusplus */
115 
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
118 
119 #define YY_USE_CONST
120 
121 #endif /* defined (__STDC__) */
122 #endif /* ! __cplusplus */
123 
124 #ifdef YY_USE_CONST
125 #define yyconst const
126 #else
127 #define yyconst
128 #endif
129 
130 /* Returned upon end-of-file. */
131 #define YY_NULL 0
132 
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134  * integer for use as an array index. If the signed char is negative,
135  * we want to instead treat it as an 8-bit unsigned char, hence the
136  * double cast.
137  */
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
139 
140 /* Enter a start condition. This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN (yy_start) = 1 + 2 *
145 
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state. The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
152 
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155 
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE declinfoYYrestart(declinfoYYin )
158 
159 #define YY_END_OF_BUFFER_CHAR 0
160 
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #define YY_BUF_SIZE 16384
164 #endif
165 
166 /* The state buf must be large enough to hold one state per character in the main buffer.
167  */
168 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
169 
170 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
171 #define YY_TYPEDEF_YY_BUFFER_STATE
173 #endif
174 
175 extern int declinfoYYleng;
176 
177 extern FILE *declinfoYYin, *declinfoYYout;
178 
179 #define EOB_ACT_CONTINUE_SCAN 0
180 #define EOB_ACT_END_OF_FILE 1
181 #define EOB_ACT_LAST_MATCH 2
182 
183  #define YY_LESS_LINENO(n)
184 
185 /* Return all but the first "n" matched characters back to the input stream. */
186 #define yyless(n) \
187  do \
188  { \
189  /* Undo effects of setting up declinfoYYtext. */ \
190  int yyless_macro_arg = (n); \
191  YY_LESS_LINENO(yyless_macro_arg);\
192  *yy_cp = (yy_hold_char); \
193  YY_RESTORE_YY_MORE_OFFSET \
194  (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
195  YY_DO_BEFORE_ACTION; /* set up declinfoYYtext again */ \
196  } \
197  while ( 0 )
198 
199 #define unput(c) yyunput( c, (yytext_ptr) )
200 
201 #ifndef YY_TYPEDEF_YY_SIZE_T
202 #define YY_TYPEDEF_YY_SIZE_T
203 typedef size_t yy_size_t;
204 #endif
205 
206 #ifndef YY_STRUCT_YY_BUFFER_STATE
207 #define YY_STRUCT_YY_BUFFER_STATE
208 struct yy_buffer_state
209  {
210  FILE *yy_input_file;
211 
212  char *yy_ch_buf; /* input buffer */
213  char *yy_buf_pos; /* current position in input buffer */
214 
215  /* Size of input buffer in bytes, not including room for EOB
216  * characters.
217  */
219 
220  /* Number of characters read into yy_ch_buf, not including EOB
221  * characters.
222  */
223  int yy_n_chars;
224 
225  /* Whether we "own" the buffer - i.e., we know we created it,
226  * and can realloc() it to grow it, and should free() it to
227  * delete it.
228  */
229  int yy_is_our_buffer;
230 
231  /* Whether this is an "interactive" input source; if so, and
232  * if we're using stdio for input, then we want to use getc()
233  * instead of fread(), to make sure we stop fetching input after
234  * each newline.
235  */
236  int yy_is_interactive;
237 
238  /* Whether we're considered to be at the beginning of a line.
239  * If so, '^' rules will be active on the next match, otherwise
240  * not.
241  */
242  int yy_at_bol;
243 
244  int yy_bs_lineno; /**< The line count. */
245  int yy_bs_column; /**< The column count. */
246 
247  /* Whether to try to fill the input buffer when we reach the
248  * end of it.
249  */
250  int yy_fill_buffer;
251 
252  int yy_buffer_status;
253 
254 #define YY_BUFFER_NEW 0
255 #define YY_BUFFER_NORMAL 1
256  /* When an EOF's been seen but there's still some text to process
257  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
258  * shouldn't try reading from the input source any more. We might
259  * still have a bunch of tokens to match, though, because of
260  * possible backing-up.
261  *
262  * When we actually see the EOF, we change the status to "new"
263  * (via declinfoYYrestart()), so that the user can continue scanning by
264  * just pointing declinfoYYin at a new input file.
265  */
266 #define YY_BUFFER_EOF_PENDING 2
267 
268  };
269 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
270 
271 /* Stack of input buffers. */
272 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
273 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
274 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
275 
276 /* We provide macros for accessing buffer states in case in the
277  * future we want to put the buffer states in a more general
278  * "scanner state".
279  *
280  * Returns the top of the stack, or NULL.
281  */
282 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
283  ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
284  : NULL)
285 
286 /* Same as previous macro, but useful when we know that the buffer stack is not
287  * NULL or when we need an lvalue. For internal use only.
288  */
289 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
290 
291 /* yy_hold_char holds the character lost when declinfoYYtext is formed. */
292 static char yy_hold_char;
293 static int yy_n_chars; /* number of characters read into yy_ch_buf */
295 
296 /* Points to current character in buffer. */
297 static char *yy_c_buf_p = (char *) 0;
298 static int yy_init = 0; /* whether we need to initialize */
299 static int yy_start = 0; /* start state number */
300 
301 /* Flag which is used to allow declinfoYYwrap()'s to do buffer switches
302  * instead of setting up a fresh declinfoYYin. A bit of a hack ...
303  */
305 
306 void declinfoYYrestart (FILE *input_file );
307 void declinfoYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
308 YY_BUFFER_STATE declinfoYY_create_buffer (FILE *file,int size );
309 void declinfoYY_delete_buffer (YY_BUFFER_STATE b );
310 void declinfoYY_flush_buffer (YY_BUFFER_STATE b );
311 void declinfoYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
312 void declinfoYYpop_buffer_state (void );
313 
314 static void declinfoYYensure_buffer_stack (void );
315 static void declinfoYY_load_buffer_state (void );
316 static void declinfoYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
317 
318 #define YY_FLUSH_BUFFER declinfoYY_flush_buffer(YY_CURRENT_BUFFER )
319 
320 YY_BUFFER_STATE declinfoYY_scan_buffer (char *base,yy_size_t size );
321 YY_BUFFER_STATE declinfoYY_scan_string (yyconst char *yy_str );
322 YY_BUFFER_STATE declinfoYY_scan_bytes (yyconst char *bytes,int len );
323 
324 void *declinfoYYalloc (yy_size_t );
325 void *declinfoYYrealloc (void *,yy_size_t );
326 void declinfoYYfree (void * );
327 
328 #define yy_new_buffer declinfoYY_create_buffer
329 
330 #define yy_set_interactive(is_interactive) \
331  { \
332  if ( ! YY_CURRENT_BUFFER ){ \
333  declinfoYYensure_buffer_stack (); \
334  YY_CURRENT_BUFFER_LVALUE = \
335  declinfoYY_create_buffer(declinfoYYin,YY_BUF_SIZE ); \
336  } \
337  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
338  }
339 
340 #define yy_set_bol(at_bol) \
341  { \
342  if ( ! YY_CURRENT_BUFFER ){\
343  declinfoYYensure_buffer_stack (); \
344  YY_CURRENT_BUFFER_LVALUE = \
345  declinfoYY_create_buffer(declinfoYYin,YY_BUF_SIZE ); \
346  } \
347  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
348  }
349 
350 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
351 
352 /* Begin user sect3 */
353 
354 #define declinfoYYwrap(n) 1
355 #define YY_SKIP_YYWRAP
356 
357 typedef unsigned char YY_CHAR;
358 
359 FILE *declinfoYYin = (FILE *) 0, *declinfoYYout = (FILE *) 0;
360 
361 typedef int yy_state_type;
362 
363 extern int declinfoYYlineno;
364 
365 int declinfoYYlineno = 1;
366 
367 extern char *declinfoYYtext;
368 #define yytext_ptr declinfoYYtext
369 
370 static yy_state_type yy_get_previous_state (void );
371 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
372 static int yy_get_next_buffer (void );
373 static void yy_fatal_error (yyconst char msg[] );
374 
375 /* Done after the current pattern has been matched and before the
376  * corresponding action - sets up declinfoYYtext.
377  */
378 #define YY_DO_BEFORE_ACTION \
379  (yytext_ptr) = yy_bp; \
380  declinfoYYleng = (size_t) (yy_cp - yy_bp); \
381  (yy_hold_char) = *yy_cp; \
382  *yy_cp = '\0'; \
383  (yy_c_buf_p) = yy_cp;
384 
385 #define YY_NUM_RULES 26
386 #define YY_END_OF_BUFFER 27
387 /* This struct is not used in this scanner,
388  but its presence is necessary. */
389 struct yy_trans_info
390  {
391  flex_int32_t yy_verify;
393  };
395  { 0,
396  27, 24, 26, 25, 26, 7, 24, 26, 24, 26,
397  24, 26, 6, 24, 26, 10, 24, 26, 9, 24,
398  26, 5, 24, 26, 12, 24, 26, 24, 26, 8195,
399  24, 26,16387, 11, 24, 26, 8195, 24, 26,16387,
400  17, 24, 26, 15, 17, 24, 26, 16, 17, 24,
401  26, 22, 24, 26, 22, 24, 26, 24, 26, 24,
402  26, 25, 26, 20, 24, 26, 24, 26, 23, 24,
403  26, 7, 10, 9, 5, 12, 11, 8195,16387, 8195,
404  16387, 6, 8, 4, 8195,16387, 8195,16387, 8195,16387,
405  13, 14, 20, 20, 8195,16387, 8195,16387, 4, 8195,
406 
407  8195,16387, 19, 2, 8195,16387, 8195,16387, 18, 8195,
408  16387, 21, 8195,16387, 8, 1, 8195,16387, 1, 8195
409  } ;
410 
412  { 0,
413  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
414  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
415  1, 2, 4, 6, 9, 11, 13, 16, 19, 22,
416  25, 28, 30, 34, 37, 41, 44, 48, 52, 55,
417  58, 60, 62, 64, 67, 69, 72, 73, 74, 75,
418  76, 77, 78, 78, 78, 78, 80, 82, 83, 83,
419  83, 84, 84, 84, 85, 87, 87, 87, 89, 89,
420  91, 92, 93, 93, 93, 93, 94, 94, 94, 95,
421  95, 95, 95, 97, 97, 99, 99, 99, 99, 99,
422  99, 99, 100, 100, 100, 100, 100, 100, 101, 103,
423 
424  103, 103, 104, 104, 104, 104, 104, 104, 104, 104,
425  105, 105, 107, 107, 107, 107, 107, 109, 109, 109,
426  110, 110, 110, 112, 112, 113, 113, 113, 115, 116,
427  116, 119, 119, 119, 119, 119, 121, 121, 121
428  } ;
429 
431  { 0,
432  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
433  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
435  1, 2, 4, 1, 1, 5, 1, 6, 1, 7,
436  8, 6, 1, 1, 1, 1, 1, 9, 9, 9,
437  9, 9, 9, 9, 9, 9, 9, 10, 1, 11,
438  1, 12, 1, 13, 14, 14, 14, 14, 14, 14,
439  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
440  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
441  15, 1, 16, 1, 14, 1, 17, 14, 18, 14,
442 
443  19, 14, 14, 20, 21, 14, 14, 22, 14, 23,
444  24, 25, 14, 26, 27, 28, 14, 29, 30, 14,
445  14, 14, 1, 1, 1, 4, 1, 14, 14, 14,
446  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
447  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
448  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
449  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
450  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
451  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
452  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
453 
454  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
455  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
456  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
457  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
458  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
459  14, 14, 14, 14, 14
460  } ;
461 
463  { 0,
464  1, 2, 1, 1, 3, 4, 5, 6, 7, 8,
465  1, 1, 3, 9, 10, 1, 9, 9, 9, 9,
466  9, 9, 9, 9, 9, 9, 9, 9, 9, 9
467  } ;
468 
470  { 0,
471  342, 341, 0, 0, 28, 30, 29, 31, 41, 43,
472  340, 339, 338, 336, 333, 332, 331, 328, 327, 326,
473  328, 346, 346, 58, 51, 0, 321, 65, 346, 309,
474  346, 308, 70, 346, 72, 346, 305, 303, 346, 294,
475  73, 79, 81, 47, 87, 346, 0, 98, 346, 290,
476  346, 346, 100, 104, 289, 36, 271, 289, 56, 110,
477  89, 283, 281, 288, 112, 118, 124, 264, 45, 57,
478  346, 346, 258, 128, 129, 346, 136, 139, 93, 120,
479  142, 149, 143, 140, 152, 155, 259, 258, 26, 271,
480  270, 224, 157, 159, 216, 161, 94, 163, 149, 199,
481 
482  169, 346, 207, 175, 193, 193, 0, 179, 177, 346,
483  181, 107, 184, 188, 186, 195, 166, 190, 191, 346,
484  180, 140, 175, 194, 346, 164, 113, 177, 106, 71,
485  202, 44, 203, 204, 205, 207, 209, 346, 227, 237,
486  247, 257, 267, 276, 28, 284, 292, 302, 311, 315,
487  323, 331
488  } ;
489 
491  { 0,
492  139, 139, 138, 3, 140, 140, 141, 141, 142, 142,
493  139, 139, 139, 139, 139, 139, 139, 139, 143, 143,
494  138, 138, 138, 138, 144, 145, 138, 146, 138, 138,
495  138, 138, 147, 138, 147, 138, 138, 138, 138, 138,
496  148, 148, 148, 138, 148, 138, 24, 146, 138, 138,
497  138, 138, 144, 144, 138, 149, 35, 138, 138, 146,
498  138, 138, 150, 138, 138, 138, 151, 35, 138, 35,
499  138, 138, 138, 148, 148, 138, 148, 148, 138, 138,
500  138, 148, 138, 138, 149, 138, 138, 138, 138, 150,
501  138, 138, 151, 151, 138, 152, 138, 138, 35, 138,
502 
503  138, 138, 138, 148, 138, 138, 48, 138, 138, 138,
504  152, 35, 138, 138, 138, 138, 35, 138, 138, 138,
505  138, 138, 35, 138, 138, 138, 138, 35, 138, 138,
506  35, 138, 138, 138, 138, 138, 138, 0, 138, 138,
507  138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
508  138, 138
509  } ;
510 
512  { 0,
513  22, 24, 23, 25, 26, 27, 28, 29, 22, 30,
514  31, 22, 32, 33, 34, 22, 33, 33, 33, 33,
515  33, 33, 33, 35, 33, 33, 33, 33, 33, 33,
516  23, 23, 23, 23, 89, 91, 57, 84, 37, 38,
517  37, 38, 42, 43, 42, 43, 97, 44, 80, 44,
518  69, 45, 53, 45, 81, 54, 40, 59, 40, 47,
519  98, 61, 126, 55, 48, 49, 59, 50, 51, 60,
520  61, 66, 52, 66, 75, 99, 67, 62, 67, 76,
521  78, 68, 75, 77, 69, 79, 69, 76, 75, 77,
522  86, 77, 132, 76, 80, 97, 70, 77, 82, 59,
523 
524  81, 53, 60, 61, 54, 138, 87, 129, 138, 98,
525  62, 138, 55, 66, 138, 138, 138, 88, 67, 66,
526  65, 80, 138, 117, 67, 93, 69, 81, 94, 75,
527  75, 68, 69, 130, 76, 76, 95, 75, 77, 77,
528  78, 84, 76, 101, 84, 79, 77, 82, 102, 77,
529  104, 83, 103, 84, 69, 76, 86, 69, 93, 77,
530  138, 94, 109, 138, 84, 129, 69, 127, 110, 95,
531  101, 138, 87, 68, 112, 102, 104, 69, 109, 103,
532  109, 76, 109, 88, 110, 77, 110, 108, 110, 119,
533  68, 124, 119, 123, 120, 124, 125, 120, 128, 68,
534 
535  125, 68, 131, 133, 133, 135, 135, 126, 137, 67,
536  137, 122, 121, 118, 116, 115, 134, 134, 114, 136,
537  136, 134, 113, 134, 108, 92, 68, 22, 22, 22,
538  22, 22, 22, 22, 22, 22, 22, 36, 36, 36,
539  36, 36, 36, 36, 36, 36, 36, 39, 39, 39,
540  39, 39, 39, 39, 39, 39, 39, 41, 41, 41,
541  41, 41, 41, 41, 41, 41, 41, 46, 46, 46,
542  46, 46, 46, 46, 46, 46, 46, 56, 56, 107,
543  91, 106, 105, 100, 56, 63, 63, 63, 68, 92,
544  91, 89, 63, 68, 58, 68, 68, 83, 68, 64,
545 
546  68, 68, 74, 74, 74, 74, 74, 74, 74, 74,
547  74, 74, 85, 73, 72, 71, 65, 85, 64, 85,
548  85, 90, 90, 90, 96, 96, 58, 138, 23, 23,
549  23, 96, 111, 23, 23, 23, 111, 111, 23, 111,
550  23, 23, 23, 23, 23, 21, 138, 138, 138, 138,
551  138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
552  138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
553  138, 138, 138, 138, 138, 138
554  } ;
555 
557  { 0,
558  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
559  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
560  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
561  5, 7, 6, 8, 89, 89, 145, 56, 5, 5,
562  6, 6, 9, 9, 10, 10, 69, 9, 44, 10,
563  56, 9, 25, 10, 44, 25, 7, 59, 8, 24,
564  69, 59, 132, 25, 24, 24, 28, 24, 24, 28,
565  28, 33, 24, 35, 41, 70, 33, 28, 35, 41,
566  42, 70, 43, 41, 33, 42, 35, 43, 45, 42,
567  61, 43, 130, 45, 79, 97, 35, 45, 45, 48,
568 
569  79, 53, 48, 48, 53, 54, 61, 129, 54, 97,
570  48, 60, 53, 65, 60, 60, 54, 61, 65, 66,
571  65, 80, 60, 112, 66, 67, 65, 80, 67, 74,
572  75, 112, 66, 127, 74, 75, 67, 77, 74, 75,
573  78, 84, 77, 81, 83, 78, 77, 77, 81, 78,
574  82, 83, 81, 85, 84, 82, 86, 83, 93, 82,
575  94, 93, 96, 94, 98, 126, 85, 122, 96, 93,
576  101, 94, 86, 99, 99, 101, 104, 98, 109, 101,
577  108, 104, 111, 86, 109, 104, 108, 108, 111, 114,
578  117, 118, 119, 117, 114, 124, 118, 119, 123, 123,
579 
580  124, 128, 128, 131, 133, 134, 135, 121, 136, 133,
581  137, 116, 115, 113, 106, 105, 131, 133, 103, 134,
582  135, 136, 100, 137, 95, 92, 131, 139, 139, 139,
583  139, 139, 139, 139, 139, 139, 139, 140, 140, 140,
584  140, 140, 140, 140, 140, 140, 140, 141, 141, 141,
585  141, 141, 141, 141, 141, 141, 141, 142, 142, 142,
586  142, 142, 142, 142, 142, 142, 142, 143, 143, 143,
587  143, 143, 143, 143, 143, 143, 143, 144, 144, 91,
588  90, 88, 87, 73, 144, 146, 146, 146, 68, 64,
589  63, 62, 146, 147, 58, 57, 147, 55, 147, 50,
590 
591  147, 147, 148, 148, 148, 148, 148, 148, 148, 148,
592  148, 148, 149, 40, 38, 37, 32, 149, 30, 149,
593  149, 150, 150, 150, 151, 151, 27, 21, 20, 19,
594  18, 151, 152, 17, 16, 15, 152, 152, 14, 152,
595  13, 12, 11, 2, 1, 138, 138, 138, 138, 138,
596  138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
597  138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
598  138, 138, 138, 138, 138, 138
599  } ;
600 
601 extern int declinfoYY_flex_debug;
602 int declinfoYY_flex_debug = 0;
603 
604 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
605 static char *yy_full_match;
606 static int yy_lp;
608 static int yy_full_lp;
609 static int *yy_full_state;
610 #define YY_TRAILING_MASK 0x2000
611 #define YY_TRAILING_HEAD_MASK 0x4000
612 #define REJECT \
613 { \
614 *yy_cp = (yy_hold_char); /* undo effects of setting up declinfoYYtext */ \
615 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
616 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
617 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
618 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
619 ++(yy_lp); \
620 goto find_rule; \
621 }
622 
623 #define yymore() yymore_used_but_not_detected
624 #define YY_MORE_ADJ 0
625 #define YY_RESTORE_YY_MORE_OFFSET
627 #line 1 "declinfo.l"
628 /******************************************************************************
629  *
630  *
631  *
632  * Copyright (C) 1997-2015 by Dimitri van Heesch.
633  *
634  * Permission to use, copy, modify, and distribute this software and its
635  * documentation under the terms of the GNU General Public License is hereby
636  * granted. No representations are made about the suitability of this software
637  * for any purpose. It is provided "as is" without express or implied warranty.
638  * See the GNU General Public License for more details.
639  *
640  * Documents produced by Doxygen are derivative works derived from the
641  * input used in their production; they are not affected by this license.
642  *
643  */
644 #line 19 "declinfo.l"
645 
646 /*
647  * includes
648  */
649 #include <stdio.h>
650 //#include <iostream.h>
651 #include <assert.h>
652 #include <ctype.h>
653 
654 #include "declinfo.h"
655 #include "util.h"
656 #include "message.h"
657 
658 #define YY_NO_INPUT 1
659 #define YY_NO_UNISTD_H 1
660 
661 /* -----------------------------------------------------------------
662  *
663  * statics
664  */
665 
666 static const char * inputString;
667 static int inputPosition;
672 static QCString type;
673 static QCString name;
674 static QCString args;
675 static int sharpCount;
676 static bool classTempListFound;
677 static bool funcTempListFound;
679 static bool insideObjC;
680 
681 static void addType()
682 {
683  //printf("addType() type=`%s' scope=`%s' name=`%s'\n",
684  // type.data(),scope.data(),name.data());
685  if (name.isEmpty() && scope.isEmpty()) return;
686  if (!type.isEmpty()) type+=" ";
687  if (!scope.isEmpty()) type+=scope+"::";
688  type+=name;
689  scope.resize(0);
690  name.resize(0);
691 }
692 
693 static void addTypeName()
694 {
695  //printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n",
696  // type.data(),scope.data(),name.data());
697  if (name.isEmpty() ||
698  name.at(name.length()-1)==':') // end of Objective-C keyword => append to name not type
699  {
700  return;
701  }
702  if (!type.isEmpty()) type+=' ';
703  type+=name;
704  name.resize(0);
705 }
706 
707 #define YY_NEVER_INTERACTIVE 1
708 
709 /* -----------------------------------------------------------------
710  */
711 #undef YY_INPUT
712 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
713 
714 static int yyread(char *buf,int max_size)
715 {
716  int c=0;
717  while( c < max_size && inputString[inputPosition] )
718  {
719  *buf = inputString[inputPosition++] ;
720  c++; buf++;
721  }
722  return c;
723 }
724 
725 
726 
727 
728 
729 
730 
731 
732 
733 
734 #line 735 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/declinfo.cpp"
735 
736 #define INITIAL 0
737 #define Start 1
738 #define Template 2
739 #define ReadArgs 3
740 #define Operator 4
741 #define FuncPtr 5
742 #define EndTemplate 6
743 #define StripTempArgs 7
744 #define SkipSharp 8
745 #define ReadExceptions 9
746 
747 #ifndef YY_NO_UNISTD_H
748 /* Special case for "unistd.h", since it is non-ANSI. We include it way
749  * down here because we want the user's section 1 to have been scanned first.
750  * The user has a chance to override it with an option.
751  */
752 #include <unistd.h>
753 #endif
754 
755 #ifndef YY_EXTRA_TYPE
756 #define YY_EXTRA_TYPE void *
757 #endif
758 
759 static int yy_init_globals (void );
760 
761 /* Accessor methods to globals.
762  These are made visible to non-reentrant scanners for convenience. */
763 
764 int declinfoYYlex_destroy (void );
765 
766 int declinfoYYget_debug (void );
767 
768 void declinfoYYset_debug (int debug_flag );
769 
771 
772 void declinfoYYset_extra (YY_EXTRA_TYPE user_defined );
773 
774 FILE *declinfoYYget_in (void );
775 
776 void declinfoYYset_in (FILE * in_str );
777 
778 FILE *declinfoYYget_out (void );
779 
780 void declinfoYYset_out (FILE * out_str );
781 
782 int declinfoYYget_leng (void );
783 
784 char *declinfoYYget_text (void );
785 
786 int declinfoYYget_lineno (void );
787 
788 void declinfoYYset_lineno (int line_number );
789 
790 /* Macros after this point can all be overridden by user definitions in
791  * section 1.
792  */
793 
794 #ifndef YY_SKIP_YYWRAP
795 #ifdef __cplusplus
796 extern "C" int declinfoYYwrap (void );
797 #else
798 extern int declinfoYYwrap (void );
799 #endif
800 #endif
801 
802 #ifndef yytext_ptr
803 static void yy_flex_strncpy (char *,yyconst char *,int );
804 #endif
805 
806 #ifdef YY_NEED_STRLEN
807 static int yy_flex_strlen (yyconst char * );
808 #endif
809 
810 #ifndef YY_NO_INPUT
811 
812 #ifdef __cplusplus
813 static int yyinput (void );
814 #else
815 static int input (void );
816 #endif
817 
818 #endif
819 
820 /* Amount of stuff to slurp up with each read. */
821 #ifndef YY_READ_BUF_SIZE
822 #define YY_READ_BUF_SIZE 8192
823 #endif
824 
825 /* Copy whatever the last rule matched to the standard output. */
826 #ifndef ECHO
827 /* This used to be an fputs(), but since the string might contain NUL's,
828  * we now use fwrite().
829  */
830 #define ECHO do { if (fwrite( declinfoYYtext, declinfoYYleng, 1, declinfoYYout )) {} } while (0)
831 #endif
832 
833 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
834  * is returned in "result".
835  */
836 #ifndef YY_INPUT
837 #define YY_INPUT(buf,result,max_size) \
838  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
839  { \
840  int c = '*'; \
841  unsigned n; \
842  for ( n = 0; n < max_size && \
843  (c = getc( declinfoYYin )) != EOF && c != '\n'; ++n ) \
844  buf[n] = (char) c; \
845  if ( c == '\n' ) \
846  buf[n++] = (char) c; \
847  if ( c == EOF && ferror( declinfoYYin ) ) \
848  YY_FATAL_ERROR( "input in flex scanner failed" ); \
849  result = n; \
850  } \
851  else \
852  { \
853  errno=0; \
854  while ( (result = fread(buf, 1, max_size, declinfoYYin))==0 && ferror(declinfoYYin)) \
855  { \
856  if( errno != EINTR) \
857  { \
858  YY_FATAL_ERROR( "input in flex scanner failed" ); \
859  break; \
860  } \
861  errno=0; \
862  clearerr(declinfoYYin); \
863  } \
864  }\
865 \
866 
867 #endif
868 
869 /* No semi-colon after return; correct usage is to write "yyterminate();" -
870  * we don't want an extra ';' after the "return" because that will cause
871  * some compilers to complain about unreachable statements.
872  */
873 #ifndef yyterminate
874 #define yyterminate() return YY_NULL
875 #endif
876 
877 /* Number of entries by which start-condition stack grows. */
878 #ifndef YY_START_STACK_INCR
879 #define YY_START_STACK_INCR 25
880 #endif
881 
882 /* Report a fatal error. */
883 #ifndef YY_FATAL_ERROR
884 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
885 #endif
886 
887 /* end tables serialization structures and prototypes */
888 
889 /* Default declaration of generated scanner - a define so the user can
890  * easily add parameters.
891  */
892 #ifndef YY_DECL
893 #define YY_DECL_IS_OURS 1
894 
895 extern int declinfoYYlex (void);
896 
897 #define YY_DECL int declinfoYYlex (void)
898 #endif /* !YY_DECL */
899 
900 /* Code executed at the beginning of each rule, after declinfoYYtext and declinfoYYleng
901  * have been set up.
902  */
903 #ifndef YY_USER_ACTION
904 #define YY_USER_ACTION
905 #endif
906 
907 /* Code executed at the end of each rule. */
908 #ifndef YY_BREAK
909 #define YY_BREAK break;
910 #endif
911 
912 #define YY_RULE_SETUP \
913  YY_USER_ACTION
914 
915 /** The main scanner function which does all the work.
916  */
917 YY_DECL
918 {
919  register yy_state_type yy_current_state;
920  register char *yy_cp, *yy_bp;
921  register int yy_act;
922 
923 #line 117 "declinfo.l"
924 
925 
926 #line 927 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/declinfo.cpp"
927 
928  if ( !(yy_init) )
929  {
930  (yy_init) = 1;
931 
932 #ifdef YY_USER_INIT
933  YY_USER_INIT;
934 #endif
935 
936  /* Create the reject buffer large enough to save one state per allowed character. */
937  if ( ! (yy_state_buf) )
938  (yy_state_buf) = (yy_state_type *)declinfoYYalloc(YY_STATE_BUF_SIZE );
939  if ( ! (yy_state_buf) )
940  YY_FATAL_ERROR( "out of dynamic memory in declinfoYYlex()" );
941 
942  if ( ! (yy_start) )
943  (yy_start) = 1; /* first start state */
944 
945  if ( ! declinfoYYin )
946  declinfoYYin = stdin;
947 
948  if ( ! declinfoYYout )
950 
951  if ( ! YY_CURRENT_BUFFER ) {
955  }
956 
958  }
959 
960  while ( 1 ) /* loops until end-of-file is reached */
961  {
962  yy_cp = (yy_c_buf_p);
963 
964  /* Support of declinfoYYtext. */
965  *yy_cp = (yy_hold_char);
966 
967  /* yy_bp points to the position in yy_ch_buf of the start of
968  * the current run.
969  */
970  yy_bp = yy_cp;
971 
972  yy_current_state = (yy_start);
973 
974  (yy_state_ptr) = (yy_state_buf);
975  *(yy_state_ptr)++ = yy_current_state;
976 
977 yy_match:
978  do
979  {
980  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
981  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
982  {
983  yy_current_state = (int) yy_def[yy_current_state];
984  if ( yy_current_state >= 139 )
985  yy_c = yy_meta[(unsigned int) yy_c];
986  }
987  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
988  *(yy_state_ptr)++ = yy_current_state;
989  ++yy_cp;
990  }
991  while ( yy_current_state != 138 );
992 
993 yy_find_action:
994  yy_current_state = *--(yy_state_ptr);
995  (yy_lp) = yy_accept[yy_current_state];
996 find_rule: /* we branch to this label when backing up */
997  for ( ; ; ) /* until we find what rule we matched */
998  {
999  if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
1000  {
1001  yy_act = yy_acclist[(yy_lp)];
1002  if ( yy_act & YY_TRAILING_HEAD_MASK ||
1003  (yy_looking_for_trail_begin) )
1004  {
1005  if ( yy_act == (yy_looking_for_trail_begin) )
1006  {
1008  yy_act &= ~YY_TRAILING_HEAD_MASK;
1009  break;
1010  }
1011  }
1012  else if ( yy_act & YY_TRAILING_MASK )
1013  {
1014  (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
1016  (yy_full_match) = yy_cp;
1018  (yy_full_lp) = (yy_lp);
1019  }
1020  else
1021  {
1022  (yy_full_match) = yy_cp;
1024  (yy_full_lp) = (yy_lp);
1025  break;
1026  }
1027  ++(yy_lp);
1028  goto find_rule;
1029  }
1030  --yy_cp;
1031  yy_current_state = *--(yy_state_ptr);
1032  (yy_lp) = yy_accept[yy_current_state];
1033  }
1034 
1036 
1037 do_action: /* This label is used only to access EOF actions. */
1038 
1039  switch ( yy_act )
1040  { /* beginning of action switch */
1041 case 1:
1042 *yy_cp = (yy_hold_char); /* undo effects of setting up declinfoYYtext */
1043 (yy_c_buf_p) = yy_cp = yy_bp + 8;
1044 YY_DO_BEFORE_ACTION; /* set up declinfoYYtext again */
1046 #line 119 "declinfo.l"
1047 { // operator rule must be before {ID} rule
1048  name += declinfoYYtext;
1049  BEGIN(Operator);
1050  }
1051  YY_BREAK
1052 case 2:
1054 #line 123 "declinfo.l"
1055 { // Objective-C class categories
1056  if (!insideObjC)
1057  {
1058  REJECT;
1059  }
1060  else
1061  {
1062  name += declinfoYYtext;
1063  }
1064  }
1065  YY_BREAK
1066 case 3:
1068 #line 133 "declinfo.l"
1069 { // the []'s are for Java,
1070  // the / was add to deal with multi-
1071  // dimensional C++ arrays like A[][15]
1072  // the leading ~ is for a destructor
1073  // the leading ! is for a C++/CLI finalizer (see bug 456475 and 635198)
1074  addTypeName();
1075  name += declinfoYYtext;
1076  }
1077  YY_BREAK
1078 case 4:
1080 #line 141 "declinfo.l"
1081 { // found a scope specifier
1082  if (!scope.isEmpty())
1083  {
1084  scope+="::"+name; // add name to scope
1085  }
1086  else
1087  {
1088  scope = name.copy(); // scope becomes name
1089  }
1090  name.resize(0);
1091  }
1092  YY_BREAK
1093 case 5:
1095 #line 152 "declinfo.l"
1096 { // Objective-C argument separator
1097  name+=declinfoYYtext;
1098  }
1099  YY_BREAK
1100 case 6:
1102 #line 155 "declinfo.l"
1103 {
1104  addType();
1105  type+=declinfoYYtext;
1106  }
1107  YY_BREAK
1108 case 7:
1110 #line 159 "declinfo.l"
1111 {
1112  addType();
1113  }
1114  YY_BREAK
1115 case 8:
1117 #line 162 "declinfo.l"
1118 {
1119  addType();
1120  QCString text=declinfoYYtext;
1121  type+=text.stripWhiteSpace();
1122  }
1123  YY_BREAK
1124 case 9:
1126 #line 167 "declinfo.l"
1127 {
1128  type+=")";
1129  }
1130  YY_BREAK
1131 case 10:
1133 #line 170 "declinfo.l"
1134 { // TODO: function pointers
1135  args+="(";
1136  BEGIN(ReadArgs);
1137  }
1138  YY_BREAK
1139 case 11:
1141 #line 174 "declinfo.l"
1142 {
1143  args+="[";
1144  BEGIN(ReadArgs);
1145  }
1146  YY_BREAK
1147 case 12:
1149 #line 178 "declinfo.l"
1150 {
1151  name+="<";
1152  sharpCount=0;
1153  BEGIN(Template);
1154  }
1155  YY_BREAK
1156 case 13:
1158 #line 183 "declinfo.l"
1159 { name+="<<"; }
1160  YY_BREAK
1161 case 14:
1163 #line 184 "declinfo.l"
1164 { name+=">>"; }
1165  YY_BREAK
1166 case 15:
1168 #line 185 "declinfo.l"
1169 {
1170  name+="<";
1171  sharpCount++;
1172  }
1173  YY_BREAK
1174 case 16:
1176 #line 189 "declinfo.l"
1177 {
1178  name+=">";
1179  if (sharpCount)
1180  --sharpCount;
1181  else
1182  {
1183  BEGIN(Start);
1184  }
1185  }
1186  YY_BREAK
1187 case 17:
1189 #line 198 "declinfo.l"
1190 {
1191  name+=*declinfoYYtext;
1192  }
1193  YY_BREAK
1194 case 18:
1195 *yy_cp = (yy_hold_char); /* undo effects of setting up declinfoYYtext */
1196 (yy_c_buf_p) = yy_cp -= 1;
1197 YY_DO_BEFORE_ACTION; /* set up declinfoYYtext again */
1199 #line 201 "declinfo.l"
1200 {
1201  name+="() <>";
1202  BEGIN(ReadArgs);
1203  }
1204  YY_BREAK
1205 case 19:
1206 *yy_cp = (yy_hold_char); /* undo effects of setting up declinfoYYtext */
1207 (yy_c_buf_p) = yy_cp -= 1;
1208 YY_DO_BEFORE_ACTION; /* set up declinfoYYtext again */
1210 #line 205 "declinfo.l"
1211 {
1212  name+="()";
1213  BEGIN(ReadArgs);
1214  }
1215  YY_BREAK
1216 case 20:
1217 /* rule 20 can match eol */
1218 *yy_cp = (yy_hold_char); /* undo effects of setting up declinfoYYtext */
1219 (yy_c_buf_p) = yy_cp -= 1;
1220 YY_DO_BEFORE_ACTION; /* set up declinfoYYtext again */
1222 #line 209 "declinfo.l"
1223 {
1224  name+=declinfoYYtext;
1225  BEGIN(ReadArgs);
1226  }
1227  YY_BREAK
1228 case 21:
1230 #line 213 "declinfo.l"
1231 {
1232  exceptionString="throw(";
1234  }
1235  YY_BREAK
1236 case 22:
1238 #line 217 "declinfo.l"
1239 {
1240  args+=*declinfoYYtext;
1241  }
1242  YY_BREAK
1243 case 23:
1245 #line 220 "declinfo.l"
1246 {
1247  exceptionString+=*declinfoYYtext;
1248  }
1249  YY_BREAK
1250 case 24:
1252 #line 223 "declinfo.l"
1253 
1254  YY_BREAK
1255 case 25:
1256 /* rule 25 can match eol */
1258 #line 224 "declinfo.l"
1259 
1260  YY_BREAK
1261 case 26:
1263 #line 226 "declinfo.l"
1264 ECHO;
1265  YY_BREAK
1266 #line 1267 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/declinfo.cpp"
1267  case YY_STATE_EOF(INITIAL):
1268  case YY_STATE_EOF(Start):
1269  case YY_STATE_EOF(Template):
1270  case YY_STATE_EOF(ReadArgs):
1271  case YY_STATE_EOF(Operator):
1272  case YY_STATE_EOF(FuncPtr):
1273  case YY_STATE_EOF(EndTemplate):
1275  case YY_STATE_EOF(SkipSharp):
1277  yyterminate();
1278 
1279  case YY_END_OF_BUFFER:
1280  {
1281  /* Amount of text matched not including the EOB char. */
1282  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1283 
1284  /* Undo the effects of YY_DO_BEFORE_ACTION. */
1285  *yy_cp = (yy_hold_char);
1287 
1288  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1289  {
1290  /* We're scanning a new file or input source. It's
1291  * possible that this happened because the user
1292  * just pointed declinfoYYin at a new source and called
1293  * declinfoYYlex(). If so, then we have to assure
1294  * consistency between YY_CURRENT_BUFFER and our
1295  * globals. Here is the right place to do so, because
1296  * this is the first action (other than possibly a
1297  * back-up) that will match for the new input source.
1298  */
1299  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1300  YY_CURRENT_BUFFER_LVALUE->yy_input_file = declinfoYYin;
1301  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1302  }
1303 
1304  /* Note that here we test for yy_c_buf_p "<=" to the position
1305  * of the first EOB in the buffer, since yy_c_buf_p will
1306  * already have been incremented past the NUL character
1307  * (since all states make transitions on EOB to the
1308  * end-of-buffer state). Contrast this with the test
1309  * in input().
1310  */
1311  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1312  { /* This was really a NUL. */
1313  yy_state_type yy_next_state;
1314 
1315  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1316 
1317  yy_current_state = yy_get_previous_state( );
1318 
1319  /* Okay, we're now positioned to make the NUL
1320  * transition. We couldn't have
1321  * yy_get_previous_state() go ahead and do it
1322  * for us because it doesn't know how to deal
1323  * with the possibility of jamming (and we don't
1324  * want to build jamming into it because then it
1325  * will run more slowly).
1326  */
1327 
1328  yy_next_state = yy_try_NUL_trans( yy_current_state );
1329 
1330  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1331 
1332  if ( yy_next_state )
1333  {
1334  /* Consume the NUL. */
1335  yy_cp = ++(yy_c_buf_p);
1336  yy_current_state = yy_next_state;
1337  goto yy_match;
1338  }
1339 
1340  else
1341  {
1342  yy_cp = (yy_c_buf_p);
1343  goto yy_find_action;
1344  }
1345  }
1346 
1347  else switch ( yy_get_next_buffer( ) )
1348  {
1349  case EOB_ACT_END_OF_FILE:
1350  {
1352 
1353  if ( declinfoYYwrap( ) )
1354  {
1355  /* Note: because we've taken care in
1356  * yy_get_next_buffer() to have set up
1357  * declinfoYYtext, we can now set up
1358  * yy_c_buf_p so that if some total
1359  * hoser (like flex itself) wants to
1360  * call the scanner after we return the
1361  * YY_NULL, it'll still work - another
1362  * YY_NULL will get returned.
1363  */
1365 
1366  yy_act = YY_STATE_EOF(YY_START);
1367  goto do_action;
1368  }
1369 
1370  else
1371  {
1372  if ( ! (yy_did_buffer_switch_on_eof) )
1373  YY_NEW_FILE;
1374  }
1375  break;
1376  }
1377 
1378  case EOB_ACT_CONTINUE_SCAN:
1379  (yy_c_buf_p) =
1380  (yytext_ptr) + yy_amount_of_matched_text;
1381 
1382  yy_current_state = yy_get_previous_state( );
1383 
1384  yy_cp = (yy_c_buf_p);
1385  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1386  goto yy_match;
1387 
1388  case EOB_ACT_LAST_MATCH:
1389  (yy_c_buf_p) =
1390  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1391 
1392  yy_current_state = yy_get_previous_state( );
1393 
1394  yy_cp = (yy_c_buf_p);
1395  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1396  goto yy_find_action;
1397  }
1398  break;
1399  }
1400 
1401  default:
1403  "fatal flex scanner internal error--no action found" );
1404  } /* end of action switch */
1405  } /* end of scanning one token */
1406 } /* end of declinfoYYlex */
1407 
1408 /* yy_get_next_buffer - try to read in a new buffer
1409  *
1410  * Returns a code representing an action:
1411  * EOB_ACT_LAST_MATCH -
1412  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1413  * EOB_ACT_END_OF_FILE - end of file
1414  */
1415 static int yy_get_next_buffer (void)
1416 {
1417  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1418  register char *source = (yytext_ptr);
1419  register int number_to_move, i;
1420  int ret_val;
1421 
1422  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1424  "fatal flex scanner internal error--end of buffer missed" );
1425 
1426  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1427  { /* Don't try to fill the buffer, so this is an EOF. */
1428  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1429  {
1430  /* We matched a single character, the EOB, so
1431  * treat this as a final EOF.
1432  */
1433  return EOB_ACT_END_OF_FILE;
1434  }
1435 
1436  else
1437  {
1438  /* We matched some text prior to the EOB, first
1439  * process it.
1440  */
1441  return EOB_ACT_LAST_MATCH;
1442  }
1443  }
1444 
1445  /* Try to read more data. */
1446 
1447  /* First move last chars to start of buffer. */
1448  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1449 
1450  for ( i = 0; i < number_to_move; ++i )
1451  *(dest++) = *(source++);
1452 
1453  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1454  /* don't do the read, it's not guaranteed to return an EOF,
1455  * just force an EOF
1456  */
1457  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1458 
1459  else
1460  {
1461  int num_to_read =
1462  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1463 
1464  while ( num_to_read <= 0 )
1465  { /* Not enough room in the buffer - grow it. */
1466 
1468 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1469 
1470  }
1471 
1472  if ( num_to_read > YY_READ_BUF_SIZE )
1473  num_to_read = YY_READ_BUF_SIZE;
1474 
1475  /* Read in more data. */
1476  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1477  (yy_n_chars), (size_t) num_to_read );
1478 
1479  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1480  }
1481 
1482  if ( (yy_n_chars) == 0 )
1483  {
1484  if ( number_to_move == YY_MORE_ADJ )
1485  {
1486  ret_val = EOB_ACT_END_OF_FILE;
1488  }
1489 
1490  else
1491  {
1492  ret_val = EOB_ACT_LAST_MATCH;
1493  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1495  }
1496  }
1497 
1498  else
1499  ret_val = EOB_ACT_CONTINUE_SCAN;
1500 
1501  if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1502  /* Extend the array by 50%, plus the number we really need. */
1503  yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1504  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) declinfoYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
1505  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1506  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1507  }
1508 
1509  (yy_n_chars) += number_to_move;
1512 
1513  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1514 
1515  return ret_val;
1516 }
1517 
1518 /* yy_get_previous_state - get the state just before the EOB char was reached */
1519 
1520  static yy_state_type yy_get_previous_state (void)
1521 {
1522  register yy_state_type yy_current_state;
1523  register char *yy_cp;
1524 
1525  yy_current_state = (yy_start);
1526 
1527  (yy_state_ptr) = (yy_state_buf);
1528  *(yy_state_ptr)++ = yy_current_state;
1529 
1530  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1531  {
1532  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1533  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1534  {
1535  yy_current_state = (int) yy_def[yy_current_state];
1536  if ( yy_current_state >= 139 )
1537  yy_c = yy_meta[(unsigned int) yy_c];
1538  }
1539  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1540  *(yy_state_ptr)++ = yy_current_state;
1541  }
1542 
1543  return yy_current_state;
1544 }
1545 
1546 /* yy_try_NUL_trans - try to make a transition on the NUL character
1547  *
1548  * synopsis
1549  * next_state = yy_try_NUL_trans( current_state );
1550  */
1551  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
1552 {
1553  register int yy_is_jam;
1554 
1555  register YY_CHAR yy_c = 1;
1556  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1557  {
1558  yy_current_state = (int) yy_def[yy_current_state];
1559  if ( yy_current_state >= 139 )
1560  yy_c = yy_meta[(unsigned int) yy_c];
1561  }
1562  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1563  yy_is_jam = (yy_current_state == 138);
1564  if ( ! yy_is_jam )
1565  *(yy_state_ptr)++ = yy_current_state;
1566 
1567  return yy_is_jam ? 0 : yy_current_state;
1568 }
1569 
1570 #ifndef YY_NO_INPUT
1571 #ifdef __cplusplus
1572  static int yyinput (void)
1573 #else
1574  static int input (void)
1575 #endif
1576 
1577 {
1578  int c;
1579 
1580  *(yy_c_buf_p) = (yy_hold_char);
1581 
1582  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1583  {
1584  /* yy_c_buf_p now points to the character we want to return.
1585  * If this occurs *before* the EOB characters, then it's a
1586  * valid NUL; if not, then we've hit the end of the buffer.
1587  */
1588  if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1589  /* This was really a NUL. */
1590  *(yy_c_buf_p) = '\0';
1591 
1592  else
1593  { /* need more input */
1594  int offset = (yy_c_buf_p) - (yytext_ptr);
1595  ++(yy_c_buf_p);
1596 
1597  switch ( yy_get_next_buffer( ) )
1598  {
1599  case EOB_ACT_LAST_MATCH:
1600  /* This happens because yy_g_n_b()
1601  * sees that we've accumulated a
1602  * token and flags that we need to
1603  * try matching the token before
1604  * proceeding. But for input(),
1605  * there's no matching to consider.
1606  * So convert the EOB_ACT_LAST_MATCH
1607  * to EOB_ACT_END_OF_FILE.
1608  */
1609 
1610  /* Reset buffer status. */
1612 
1613  /*FALLTHROUGH*/
1614 
1615  case EOB_ACT_END_OF_FILE:
1616  {
1617  if ( declinfoYYwrap( ) )
1618  return EOF;
1619 
1620  if ( ! (yy_did_buffer_switch_on_eof) )
1621  YY_NEW_FILE;
1622 #ifdef __cplusplus
1623  return yyinput();
1624 #else
1625  return input();
1626 #endif
1627  }
1628 
1629  case EOB_ACT_CONTINUE_SCAN:
1630  (yy_c_buf_p) = (yytext_ptr) + offset;
1631  break;
1632  }
1633  }
1634  }
1635 
1636  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
1637  *(yy_c_buf_p) = '\0'; /* preserve declinfoYYtext */
1638  (yy_hold_char) = *++(yy_c_buf_p);
1639 
1640  return c;
1641 }
1642 #endif /* ifndef YY_NO_INPUT */
1643 
1644 /** Immediately switch to a different input stream.
1645  * @param input_file A readable stream.
1646  *
1647  * @note This function does not reset the start condition to @c INITIAL .
1648  */
1650 {
1651 
1652  if ( ! YY_CURRENT_BUFFER ){
1656  }
1657 
1660 }
1661 
1662 /** Switch to a different input buffer.
1663  * @param new_buffer The new input buffer.
1664  *
1665  */
1666  void declinfoYY_switch_to_buffer (YY_BUFFER_STATE new_buffer )
1667 {
1668 
1669  /* TODO. We should be able to replace this entire function body
1670  * with
1671  * declinfoYYpop_buffer_state();
1672  * declinfoYYpush_buffer_state(new_buffer);
1673  */
1675  if ( YY_CURRENT_BUFFER == new_buffer )
1676  return;
1677 
1678  if ( YY_CURRENT_BUFFER )
1679  {
1680  /* Flush out information for old buffer. */
1681  *(yy_c_buf_p) = (yy_hold_char);
1682  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1683  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1684  }
1685 
1686  YY_CURRENT_BUFFER_LVALUE = new_buffer;
1688 
1689  /* We don't actually know whether we did this switch during
1690  * EOF (declinfoYYwrap()) processing, but the only time this flag
1691  * is looked at is after declinfoYYwrap() is called, so it's safe
1692  * to go ahead and always set it.
1693  */
1695 }
1696 
1698 {
1699  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1700  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1701  declinfoYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1702  (yy_hold_char) = *(yy_c_buf_p);
1703 }
1704 
1705 /** Allocate and initialize an input buffer state.
1706  * @param file A readable stream.
1707  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1708  *
1709  * @return the allocated buffer state.
1710  */
1711  YY_BUFFER_STATE declinfoYY_create_buffer (FILE * file, int size )
1712 {
1713  YY_BUFFER_STATE b;
1714 
1715  b = (YY_BUFFER_STATE) declinfoYYalloc(sizeof( struct yy_buffer_state ) );
1716  if ( ! b )
1717  YY_FATAL_ERROR( "out of dynamic memory in declinfoYY_create_buffer()" );
1718 
1719  b->yy_buf_size = size;
1720 
1721  /* yy_ch_buf has to be 2 characters longer than the size given because
1722  * we need to put in 2 end-of-buffer characters.
1723  */
1724  b->yy_ch_buf = (char *) declinfoYYalloc(b->yy_buf_size + 2 );
1725  if ( ! b->yy_ch_buf )
1726  YY_FATAL_ERROR( "out of dynamic memory in declinfoYY_create_buffer()" );
1727 
1728  b->yy_is_our_buffer = 1;
1729 
1730  declinfoYY_init_buffer(b,file );
1731 
1732  return b;
1733 }
1734 
1735 /** Destroy the buffer.
1736  * @param b a buffer created with declinfoYY_create_buffer()
1737  *
1738  */
1739  void declinfoYY_delete_buffer (YY_BUFFER_STATE b )
1740 {
1741 
1742  if ( ! b )
1743  return;
1744 
1745  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1747 
1748  if ( b->yy_is_our_buffer )
1749  declinfoYYfree((void *) b->yy_ch_buf );
1750 
1751  declinfoYYfree((void *) b );
1752 }
1753 
1754 /* Initializes or reinitializes a buffer.
1755  * This function is sometimes called more than once on the same buffer,
1756  * such as during a declinfoYYrestart() or at EOF.
1757  */
1758  static void declinfoYY_init_buffer (YY_BUFFER_STATE b, FILE * file )
1759 
1760 {
1761  int oerrno = errno;
1762 
1764 
1765  b->yy_input_file = file;
1766  b->yy_fill_buffer = 1;
1767 
1768  /* If b is the current buffer, then declinfoYY_init_buffer was _probably_
1769  * called from declinfoYYrestart() or through yy_get_next_buffer.
1770  * In that case, we don't want to reset the lineno or column.
1771  */
1772  if (b != YY_CURRENT_BUFFER){
1773  b->yy_bs_lineno = 1;
1774  b->yy_bs_column = 0;
1775  }
1776 
1777  b->yy_is_interactive = 0;
1778 
1779  errno = oerrno;
1780 }
1781 
1782 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
1783  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
1784  *
1785  */
1786  void declinfoYY_flush_buffer (YY_BUFFER_STATE b )
1787 {
1788  if ( ! b )
1789  return;
1790 
1791  b->yy_n_chars = 0;
1792 
1793  /* We always need two end-of-buffer characters. The first causes
1794  * a transition to the end-of-buffer state. The second causes
1795  * a jam in that state.
1796  */
1799 
1800  b->yy_buf_pos = &b->yy_ch_buf[0];
1801 
1802  b->yy_at_bol = 1;
1804 
1805  if ( b == YY_CURRENT_BUFFER )
1807 }
1808 
1809 /** Pushes the new state onto the stack. The new state becomes
1810  * the current state. This function will allocate the stack
1811  * if necessary.
1812  * @param new_buffer The new state.
1813  *
1814  */
1815 void declinfoYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
1816 {
1817  if (new_buffer == NULL)
1818  return;
1819 
1821 
1822  /* This block is copied from declinfoYY_switch_to_buffer. */
1823  if ( YY_CURRENT_BUFFER )
1824  {
1825  /* Flush out information for old buffer. */
1826  *(yy_c_buf_p) = (yy_hold_char);
1827  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1828  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1829  }
1830 
1831  /* Only push if top exists. Otherwise, replace top. */
1832  if (YY_CURRENT_BUFFER)
1833  (yy_buffer_stack_top)++;
1834  YY_CURRENT_BUFFER_LVALUE = new_buffer;
1835 
1836  /* copied from declinfoYY_switch_to_buffer. */
1839 }
1840 
1841 /** Removes and deletes the top of the stack, if present.
1842  * The next element becomes the new top.
1843  *
1844  */
1846 {
1847  if (!YY_CURRENT_BUFFER)
1848  return;
1849 
1851  YY_CURRENT_BUFFER_LVALUE = NULL;
1852  if ((yy_buffer_stack_top) > 0)
1853  --(yy_buffer_stack_top);
1854 
1855  if (YY_CURRENT_BUFFER) {
1858  }
1859 }
1860 
1861 /* Allocates the stack if it does not exist.
1862  * Guarantees space for at least one push.
1863  */
1865 {
1866  int num_to_alloc;
1867 
1868  if (!(yy_buffer_stack)) {
1869 
1870  /* First allocation is just for 2 elements, since we don't know if this
1871  * scanner will even need a stack. We use 2 instead of 1 to avoid an
1872  * immediate realloc on the next call.
1873  */
1874  num_to_alloc = 1;
1876  (num_to_alloc * sizeof(struct yy_buffer_state*)
1877  );
1878  if ( ! (yy_buffer_stack) )
1879  YY_FATAL_ERROR( "out of dynamic memory in declinfoYYensure_buffer_stack()" );
1880 
1881  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1882 
1883  (yy_buffer_stack_max) = num_to_alloc;
1884  (yy_buffer_stack_top) = 0;
1885  return;
1886  }
1887 
1888  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
1889 
1890  /* Increase the buffer to prepare for a possible push. */
1891  int grow_size = 8 /* arbitrary grow size */;
1892 
1893  num_to_alloc = (yy_buffer_stack_max) + grow_size;
1895  ((yy_buffer_stack),
1896  num_to_alloc * sizeof(struct yy_buffer_state*)
1897  );
1898  if ( ! (yy_buffer_stack) )
1899  YY_FATAL_ERROR( "out of dynamic memory in declinfoYYensure_buffer_stack()" );
1900 
1901  /* zero only the new slots.*/
1902  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
1903  (yy_buffer_stack_max) = num_to_alloc;
1904  }
1905 }
1906 
1907 /** Setup the input buffer state to scan directly from a user-specified character buffer.
1908  * @param base the character buffer
1909  * @param size the size in bytes of the character buffer
1910  *
1911  * @return the newly allocated buffer state object.
1912  */
1913 YY_BUFFER_STATE declinfoYY_scan_buffer (char * base, yy_size_t size )
1914 {
1915  YY_BUFFER_STATE b;
1916 
1917  if ( size < 2 ||
1918  base[size-2] != YY_END_OF_BUFFER_CHAR ||
1919  base[size-1] != YY_END_OF_BUFFER_CHAR )
1920  /* They forgot to leave room for the EOB's. */
1921  return 0;
1922 
1923  b = (YY_BUFFER_STATE) declinfoYYalloc(sizeof( struct yy_buffer_state ) );
1924  if ( ! b )
1925  YY_FATAL_ERROR( "out of dynamic memory in declinfoYY_scan_buffer()" );
1926 
1927  b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1928  b->yy_buf_pos = b->yy_ch_buf = base;
1929  b->yy_is_our_buffer = 0;
1930  b->yy_input_file = 0;
1931  b->yy_n_chars = b->yy_buf_size;
1932  b->yy_is_interactive = 0;
1933  b->yy_at_bol = 1;
1934  b->yy_fill_buffer = 0;
1936 
1938 
1939  return b;
1940 }
1941 
1942 /** Setup the input buffer state to scan a string. The next call to declinfoYYlex() will
1943  * scan from a @e copy of @a str.
1944  * @param yystr a NUL-terminated string to scan
1945  *
1946  * @return the newly allocated buffer state object.
1947  * @note If you want to scan bytes that may contain NUL values, then use
1948  * declinfoYY_scan_bytes() instead.
1949  */
1950 YY_BUFFER_STATE declinfoYY_scan_string (yyconst char * yystr )
1951 {
1952 
1953  return declinfoYY_scan_bytes(yystr,strlen(yystr) );
1954 }
1955 
1956 /** Setup the input buffer state to scan the given bytes. The next call to declinfoYYlex() will
1957  * scan from a @e copy of @a bytes.
1958  * @param bytes the byte buffer to scan
1959  * @param len the number of bytes in the buffer pointed to by @a bytes.
1960  *
1961  * @return the newly allocated buffer state object.
1962  */
1963 YY_BUFFER_STATE declinfoYY_scan_bytes (yyconst char * yybytes, int _yybytes_len )
1964 {
1965  YY_BUFFER_STATE b;
1966  char *buf;
1967  yy_size_t n;
1968  int i;
1969 
1970  /* Get memory for full buffer, including space for trailing EOB's. */
1971  n = _yybytes_len + 2;
1972  buf = (char *) declinfoYYalloc(n );
1973  if ( ! buf )
1974  YY_FATAL_ERROR( "out of dynamic memory in declinfoYY_scan_bytes()" );
1975 
1976  for ( i = 0; i < _yybytes_len; ++i )
1977  buf[i] = yybytes[i];
1978 
1979  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
1980 
1981  b = declinfoYY_scan_buffer(buf,n );
1982  if ( ! b )
1983  YY_FATAL_ERROR( "bad buffer in declinfoYY_scan_bytes()" );
1984 
1985  /* It's okay to grow etc. this buffer, and we should throw it
1986  * away when we're done.
1987  */
1988  b->yy_is_our_buffer = 1;
1989 
1990  return b;
1991 }
1992 
1993 #ifndef YY_EXIT_FAILURE
1994 #define YY_EXIT_FAILURE 2
1995 #endif
1996 
1997 static void yy_fatal_error (yyconst char* msg )
1998 {
1999  (void) fprintf( stderr, "%s\n", msg );
2000  exit( YY_EXIT_FAILURE );
2001 }
2002 
2003 /* Redefine yyless() so it works in section 3 code. */
2004 
2005 #undef yyless
2006 #define yyless(n) \
2007  do \
2008  { \
2009  /* Undo effects of setting up declinfoYYtext. */ \
2010  int yyless_macro_arg = (n); \
2011  YY_LESS_LINENO(yyless_macro_arg);\
2012  declinfoYYtext[declinfoYYleng] = (yy_hold_char); \
2013  (yy_c_buf_p) = declinfoYYtext + yyless_macro_arg; \
2014  (yy_hold_char) = *(yy_c_buf_p); \
2015  *(yy_c_buf_p) = '\0'; \
2016  declinfoYYleng = yyless_macro_arg; \
2017  } \
2018  while ( 0 )
2019 
2020 /* Accessor methods (get/set functions) to struct members. */
2021 
2022 /** Get the current line number.
2023  *
2024  */
2026 {
2027 
2028  return declinfoYYlineno;
2029 }
2030 
2031 /** Get the input stream.
2032  *
2033  */
2034 FILE *declinfoYYget_in (void)
2035 {
2036  return declinfoYYin;
2037 }
2038 
2039 /** Get the output stream.
2040  *
2041  */
2042 FILE *declinfoYYget_out (void)
2043 {
2044  return declinfoYYout;
2045 }
2046 
2047 /** Get the length of the current token.
2048  *
2049  */
2051 {
2052  return declinfoYYleng;
2053 }
2054 
2055 /** Get the current token.
2056  *
2057  */
2058 
2060 {
2061  return declinfoYYtext;
2062 }
2063 
2064 /** Set the current line number.
2065  * @param line_number
2066  *
2067  */
2068 void declinfoYYset_lineno (int line_number )
2069 {
2070 
2071  declinfoYYlineno = line_number;
2072 }
2073 
2074 /** Set the input stream. This does not discard the current
2075  * input buffer.
2076  * @param in_str A readable stream.
2077  *
2078  * @see declinfoYY_switch_to_buffer
2079  */
2080 void declinfoYYset_in (FILE * in_str )
2081 {
2082  declinfoYYin = in_str ;
2083 }
2084 
2085 void declinfoYYset_out (FILE * out_str )
2086 {
2087  declinfoYYout = out_str ;
2088 }
2089 
2091 {
2092  return declinfoYY_flex_debug;
2093 }
2094 
2095 void declinfoYYset_debug (int bdebug )
2096 {
2097  declinfoYY_flex_debug = bdebug ;
2098 }
2099 
2100 static int yy_init_globals (void)
2101 {
2102  /* Initialization is the same as for the non-reentrant scanner.
2103  * This function is called from declinfoYYlex_destroy(), so don't allocate here.
2104  */
2105 
2106  (yy_buffer_stack) = 0;
2107  (yy_buffer_stack_top) = 0;
2108  (yy_buffer_stack_max) = 0;
2109  (yy_c_buf_p) = (char *) 0;
2110  (yy_init) = 0;
2111  (yy_start) = 0;
2112 
2113  (yy_state_buf) = 0;
2114  (yy_state_ptr) = 0;
2115  (yy_full_match) = 0;
2116  (yy_lp) = 0;
2117 
2118 /* Defined in main.c */
2119 #ifdef YY_STDINIT
2120  declinfoYYin = stdin;
2122 #else
2123  declinfoYYin = (FILE *) 0;
2124  declinfoYYout = (FILE *) 0;
2125 #endif
2126 
2127  /* For future reference: Set errno on error, since we are called by
2128  * declinfoYYlex_init()
2129  */
2130  return 0;
2131 }
2132 
2133 /* declinfoYYlex_destroy is for both reentrant and non-reentrant scanners. */
2135 {
2136 
2137  /* Pop the buffer stack, destroying each element. */
2138  while(YY_CURRENT_BUFFER){
2140  YY_CURRENT_BUFFER_LVALUE = NULL;
2142  }
2143 
2144  /* Destroy the stack itself. */
2145  declinfoYYfree((yy_buffer_stack) );
2146  (yy_buffer_stack) = NULL;
2147 
2148  declinfoYYfree ( (yy_state_buf) );
2149  (yy_state_buf) = NULL;
2150 
2151  /* Reset the globals. This is important in a non-reentrant scanner so the next time
2152  * declinfoYYlex() is called, initialization will occur. */
2153  yy_init_globals( );
2154 
2155  return 0;
2156 }
2157 
2158 /*
2159  * Internal utility routines.
2160  */
2161 
2162 #ifndef yytext_ptr
2163 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2164 {
2165  register int i;
2166  for ( i = 0; i < n; ++i )
2167  s1[i] = s2[i];
2168 }
2169 #endif
2170 
2171 #ifdef YY_NEED_STRLEN
2172 static int yy_flex_strlen (yyconst char * s )
2173 {
2174  register int n;
2175  for ( n = 0; s[n]; ++n )
2176  ;
2177 
2178  return n;
2179 }
2180 #endif
2181 
2183 {
2184  return (void *) malloc( size );
2185 }
2186 
2187 void *declinfoYYrealloc (void * ptr, yy_size_t size )
2188 {
2189  /* The cast to (char *) in the following accommodates both
2190  * implementations that use char* generic pointers, and those
2191  * that use void* generic pointers. It works with the latter
2192  * because both ANSI C and C++ allow castless assignment from
2193  * any pointer type to void*, and deal with argument conversions
2194  * as though doing an assignment.
2195  */
2196  return (void *) realloc( (char *) ptr, size );
2197 }
2198 
2199 void declinfoYYfree (void * ptr )
2200 {
2201  free( (char *) ptr ); /* see declinfoYYrealloc() for (char *) cast */
2202 }
2203 
2204 #define YYTABLES_NAME "yytables"
2205 
2206 #line 226 "declinfo.l"
2207 
2208 
2209 
2210 /*@ ----------------------------------------------------------------------------
2211  */
2212 
2213 void parseFuncDecl(const QCString &decl,bool objC,QCString &cl,QCString &t,
2214  QCString &n,QCString &a,QCString &ftl,QCString &exc)
2215 {
2216  printlex(declinfoYY_flex_debug, TRUE, __FILE__, NULL);
2217  inputString = decl;
2218  //printf("Input=`%s'\n",inputString);
2219  if (inputString==0) return;
2220  inputPosition = 0;
2221  classTempListFound = FALSE;
2222  funcTempListFound = FALSE;
2223  insideObjC = objC;
2224  scope.resize(0);
2225  className.resize(0);
2226  classTempList.resize(0);
2227  funcTempList.resize(0);
2228  name.resize(0);
2229  type.resize(0);
2230  args.resize(0);
2231  exceptionString.resize(0);
2232  // first we try to find the type, scope, name and arguments
2234  BEGIN( Start );
2235  declinfoYYlex();
2236 
2237  //printf("type=`%s' class=`%s' name=`%s' args=`%s'\n",
2238  // type.data(),scope.data(),name.data(),args.data());
2239 
2240  int nb = name.findRev('[');
2241  if (nb!=-1 && args.isEmpty()) // correct for [] in name ambigity (due to Java return type allowing [])
2242  {
2243  args.prepend(name.right(name.length()-nb));
2244  name=name.left(nb);
2245  }
2246 
2247 #if 0
2248  {
2249  int l=scope.length();
2250  int i=0;
2251  int skipCount=0;
2252  cl.resize(0);
2253  ctl.resize(0);
2254  for (i=0;i<l;i++)
2255  {
2256  char c=scope.at(i);
2257  if (c=='<')
2258  skipCount++;
2259  else if (c=='>')
2260  skipCount--;
2261  else if (skipCount==0)
2262  cl+=c;
2263  }
2264  }
2266  ctl.resize(0);
2267 #endif
2268 
2269  cl=scope;
2270  n=removeRedundantWhiteSpace(name);
2271  int il,ir;
2272  if ((il=n.find('<'))!=-1 && (ir=n.findRev('>'))!=-1)
2273  // TODO: handle cases like where n="operator<< <T>"
2274  {
2275  ftl=removeRedundantWhiteSpace(n.right(n.length()-il));
2276  n=n.left(il);
2277  }
2278 
2279  //ctl=classTempList.copy();
2280  //ftl=funcTempList.copy();
2281  t=removeRedundantWhiteSpace(type);
2282  a=removeRedundantWhiteSpace(args);
2283  exc=removeRedundantWhiteSpace(exceptionString);
2284 
2285  if (!t.isEmpty() && t.at(t.length()-1)==')') // for function pointers
2286  {
2287  a.prepend(")");
2288  t=t.left(t.length()-1);
2289  }
2290  //printf("type=`%s' class=`%s' name=`%s' args=`%s'\n",
2291  // t.data(),cl.data(),n.data(),a.data());
2292 
2293  printlex(declinfoYY_flex_debug, FALSE, __FILE__, NULL);
2294  return;
2295 
2296 
2297 }
2298 
2299 //extern "C" { // some bogus code to keep the compiler happy
2300 // int declinfoYYwrap() { return 1 ; }
2301 // void declinfoYYdummy() { yy_flex_realloc(0,0); }
2302 //}
2303 
2304 #if 0
2305 void dumpDecl(const char *s)
2306 {
2308  QCString classTNames;
2309  QCString type;
2310  QCString name;
2311  QCString args;
2312  QCString funcTNames;
2313  msg("-----------------------------------------\n");
2314  parseFuncDecl(s,className,classTNames,type,name,args,funcTNames);
2315  msg("type=`%s' class=`%s' classTempl=`%s' name=`%s' "
2316  "funcTemplateNames=`%s' args=`%s'\n",
2317  type.data(),className.data(),classTNames.data(),
2318  name.data(),funcTNames.data(),args.data()
2319  );
2320 }
2321 
2322 // some test code
2323 int main()
2324 {
2325  dumpDecl("A < T > :: Value * A < T > :: getValue < S > ( const A < T > & a )");
2326  dumpDecl("const A<T>::Value* A<T>::getValue<S>(const A<T>&a)");
2327  dumpDecl("func()");
2328  dumpDecl("friend void bla<>()");
2329  dumpDecl("name< T > :: operator () (int bla)");
2330  dumpDecl("name< T > :: operator << (int bla)");
2331  dumpDecl("name< T > :: operator << <> (int bla)");
2332  dumpDecl("className::func()");
2333  dumpDecl("void ( * Name < T > :: bla ) ( int, char * )");
2334 }
2335 #endif
2336 
2337 #if !defined(YY_FLEX_SUBMINOR_VERSION)
2338 //----------------------------------------------------------------------------
2339 extern "C" { // some bogus code to keep the compiler happy
2340  void declinfoYYdummy() { yy_flex_realloc(0,0); }
2341 }
2342 #endif
2343 
2344 
static QCString name
Definition: declinfo.cpp:673
#define YY_STATE_EOF(state)
Definition: declinfo.cpp:154
bool resize(uint newlen)
Definition: qcstring.h:225
FILE * declinfoYYget_out(void)
Definition: declinfo.cpp:2042
char * yy_buf_pos
Definition: code.cpp:213
FILE * yy_input_file
Definition: code.cpp:210
short int flex_int16_t
Definition: code.cpp:71
#define YY_DO_BEFORE_ACTION
Definition: declinfo.cpp:378
#define YY_NEW_FILE
Definition: declinfo.cpp:157
int yy_n_chars
Definition: code.cpp:223
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
static QCString scope
Definition: declinfo.cpp:668
static constexpr double nb
Definition: Units.h:81
void declinfoYY_switch_to_buffer(YY_BUFFER_STATE new_buffer)
Definition: declinfo.cpp:1666
#define yyterminate()
Definition: declinfo.cpp:874
char * declinfoYYget_text(void)
Definition: declinfo.cpp:2059
#define INITIAL
Definition: declinfo.cpp:736
register char * yy_bp
Definition: declinfo.cpp:920
Abstract interface for a template.
Definition: template.h:542
register int yy_act
Definition: declinfo.cpp:921
YY_BUFFER_STATE declinfoYY_scan_bytes(yyconst char *bytes, int len)
Definition: declinfo.cpp:1963
bool isEmpty() const
Definition: qcstring.h:189
void declinfoYYset_lineno(int line_number)
Definition: declinfo.cpp:2068
Class representing operators that can appear in template expressions.
Definition: template.cpp:428
void msg(const char *fmt,...)
Definition: message.cpp:107
#define ReadArgs
Definition: declinfo.cpp:739
void declinfoYYset_debug(int debug_flag)
Definition: declinfo.cpp:2095
void printlex(int dbg, bool enter, const char *lexName, const char *fileName)
Definition: message.cpp:242
int yy_fill_buffer
Definition: code.cpp:250
uint length() const
Definition: qcstring.h:195
static int yy_did_buffer_switch_on_eof
Definition: declinfo.cpp:304
static yyconst flex_int32_t yy_meta[31]
Definition: declinfo.cpp:462
#define FuncPtr
Definition: declinfo.cpp:741
char & at(uint i) const
Definition: qcstring.h:326
static char * yy_c_buf_p
Definition: declinfo.cpp:297
void * declinfoYYalloc(yy_size_t)
Definition: declinfo.cpp:2182
int declinfoYYget_lineno(void)
Definition: declinfo.cpp:2025
#define YY_TRAILING_HEAD_MASK
Definition: declinfo.cpp:611
int declinfoYYlineno
Definition: declinfo.cpp:365
#define YY_DECL
Definition: declinfo.cpp:897
signed char flex_int8_t
Definition: declinfo.cpp:70
const bool FALSE
Definition: qglobal.h:370
static yy_state_type * yy_state_ptr
Definition: declinfo.cpp:604
static int * yy_full_state
Definition: declinfo.cpp:609
#define YY_START
Definition: declinfo.cpp:150
int yy_bs_lineno
Definition: code.cpp:244
int declinfoYYlex_destroy(void)
Definition: declinfo.cpp:2134
static int yy_init_globals(void)
Definition: declinfo.cpp:2100
static QCString className
Definition: declinfo.cpp:669
#define EndTemplate
Definition: declinfo.cpp:742
QCString left(uint len) const
Definition: qcstring.cpp:213
#define yytext_ptr
Definition: declinfo.cpp:368
#define YY_BREAK
Definition: declinfo.cpp:909
short int flex_int16_t
Definition: declinfo.cpp:71
#define YY_SC_TO_UI(c)
Definition: declinfo.cpp:138
int errno
Contains the last error code.
Definition: structcmd.h:53
#define EOB_ACT_END_OF_FILE
Definition: declinfo.cpp:180
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
#define YY_BUFFER_NORMAL
Definition: declinfo.cpp:255
yy_size_t yy_buf_size
Definition: code.cpp:218
int yy_state_type
Definition: declinfo.cpp:361
static QCString args
Definition: declinfo.cpp:674
static QStrList * l
Definition: config.cpp:1044
unsigned short int flex_uint16_t
Definition: declinfo.cpp:74
#define YY_INPUT(buf, result, max_size)
Definition: declinfo.cpp:712
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
QAsciiDict< Entry > cl
int declinfoYYget_debug(void)
Definition: declinfo.cpp:2090
void declinfoYY_flush_buffer(YY_BUFFER_STATE b)
Definition: declinfo.cpp:1786
static yyconst flex_int16_t yy_chk[377]
Definition: declinfo.cpp:556
#define declinfoYYwrap(n)
Definition: declinfo.cpp:354
#define YY_RULE_SETUP
Definition: declinfo.cpp:912
static yyconst flex_int16_t yy_def[153]
Definition: declinfo.cpp:490
#define EOB_ACT_CONTINUE_SCAN
Definition: declinfo.cpp:179
int declinfoYYget_leng(void)
Definition: declinfo.cpp:2050
void declinfoYYset_extra(YY_EXTRA_TYPE user_defined)
QCString copy() const
Definition: qcstring.h:250
static size_t yy_buffer_stack_max
Definition: declinfo.cpp:273
char * declinfoYYtext
Definition: declinfo.cpp:626
#define YY_RESTORE_YY_MORE_OFFSET
Definition: declinfo.cpp:625
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
static int yy_full_lp
Definition: declinfo.cpp:608
#define EOB_ACT_LAST_MATCH
Definition: declinfo.cpp:181
void declinfoYYpush_buffer_state(YY_BUFFER_STATE new_buffer)
Definition: declinfo.cpp:1815
QCString stripTemplateSpecifiersFromScope(const QCString &fullName, bool parentOnly, QCString *pLastScopeStripped)
Definition: util.cpp:6226
#define YY_EXIT_FAILURE
Definition: declinfo.cpp:1994
static QCString funcTempList
Definition: declinfo.cpp:671
static bool funcTempListFound
Definition: declinfo.cpp:677
int yy_bs_column
Definition: code.cpp:245
int declinfoYYleng
Definition: declinfo.cpp:294
static int input(void)
Definition: code.cpp:15695
void * declinfoYYrealloc(void *, yy_size_t)
Definition: declinfo.cpp:2187
static yyconst flex_int32_t yy_ec[256]
Definition: declinfo.cpp:430
#define YY_READ_BUF_SIZE
Definition: declinfo.cpp:822
#define ECHO
Definition: declinfo.cpp:830
struct yy_buffer_state * YY_BUFFER_STATE
Definition: declinfo.cpp:172
QCString right(uint len) const
Definition: qcstring.cpp:231
static yy_state_type * yy_state_buf
Definition: declinfo.cpp:604
std::void_t< T > n
#define YY_MORE_ADJ
Definition: declinfo.cpp:624
const double a
unsigned char YY_CHAR
Definition: declinfo.cpp:357
static yyconst flex_int16_t yy_nxt[377]
Definition: declinfo.cpp:511
int declinfoYY_flex_debug
Definition: declinfo.cpp:602
void declinfoYYset_out(FILE *out_str)
Definition: declinfo.cpp:2085
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
static int yy_looking_for_trail_begin
Definition: declinfo.cpp:607
FILE * declinfoYYin
Definition: declinfo.cpp:359
#define yyconst
Definition: declinfo.cpp:127
A bunch of utility functions.
const char * data() const
Definition: qcstring.h:207
#define StripTempArgs
Definition: declinfo.cpp:743
static int yy_init
Definition: declinfo.cpp:298
char * yy_ch_buf
Definition: code.cpp:212
unsigned char YY_CHAR
Definition: code.cpp:357
static yy_state_type yy_try_NUL_trans(yy_state_type current_state)
Definition: declinfo.cpp:1551
static yyconst flex_int16_t yy_base[153]
Definition: declinfo.cpp:469
YY_BUFFER_STATE declinfoYY_scan_string(yyconst char *yy_str)
Definition: declinfo.cpp:1950
static void addTypeName()
Definition: declinfo.cpp:693
int flex_int32_t
Definition: code.cpp:72
register char * yy_cp
Definition: declinfo.cpp:920
int yy_is_our_buffer
Definition: code.cpp:229
static int yy_lp
Definition: declinfo.cpp:606
#define YY_END_OF_BUFFER
Definition: declinfo.cpp:386
static yyconst flex_int16_t yy_acclist[121]
Definition: declinfo.cpp:394
static char * yy_full_match
Definition: declinfo.cpp:605
static char yy_hold_char
Definition: declinfo.cpp:292
static void declinfoYY_load_buffer_state(void)
Definition: declinfo.cpp:1697
#define YY_FATAL_ERROR(msg)
Definition: declinfo.cpp:884
#define ReadExceptions
Definition: declinfo.cpp:745
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
YY_BUFFER_STATE declinfoYY_create_buffer(FILE *file, int size)
Definition: declinfo.cpp:1711
#define YY_CURRENT_BUFFER_LVALUE
Definition: declinfo.cpp:289
FILE * declinfoYYget_in(void)
Definition: declinfo.cpp:2034
static YY_BUFFER_STATE * yy_buffer_stack
Definition: declinfo.cpp:274
YY_EXTRA_TYPE declinfoYYget_extra(void)
void parseFuncDecl(const QCString &decl, bool objC, QCString &cl, QCString &t, QCString &n, QCString &a, QCString &ftl, QCString &exc)
Definition: declinfo.cpp:2213
#define Start
Definition: declinfo.cpp:737
#define BEGIN
Definition: declinfo.cpp:144
void declinfoYYpop_buffer_state(void)
Definition: declinfo.cpp:1845
static void declinfoYY_init_buffer(YY_BUFFER_STATE b, FILE *file)
Definition: declinfo.cpp:1758
static int yy_get_next_buffer(void)
Definition: declinfo.cpp:1415
#define YY_BUFFER_NEW
Definition: declinfo.cpp:254
#define YY_END_OF_BUFFER_CHAR
Definition: declinfo.cpp:159
int declinfoYYlex(void)
YY_BUFFER_STATE declinfoYY_scan_buffer(char *base, yy_size_t size)
Definition: declinfo.cpp:1913
static void addType()
Definition: declinfo.cpp:681
static int sharpCount
Definition: declinfo.cpp:675
static QCString type
Definition: declinfo.cpp:672
static yy_state_type yy_get_previous_state(void)
Definition: declinfo.cpp:1520
static void declinfoYYensure_buffer_stack(void)
Definition: declinfo.cpp:1864
#define REJECT
Definition: declinfo.cpp:612
void declinfoYY_delete_buffer(YY_BUFFER_STATE b)
Definition: declinfo.cpp:1739
#define YY_BUFFER_EOF_PENDING
Definition: declinfo.cpp:266
static bool * b
Definition: config.cpp:1043
int flex_int32_t
Definition: declinfo.cpp:72
static bool insideObjC
Definition: declinfo.cpp:679
int yy_is_interactive
Definition: code.cpp:236
FILE * declinfoYYout
Definition: declinfo.cpp:359
#define YY_EXTRA_TYPE
Definition: declinfo.cpp:756
unsigned int flex_uint32_t
Definition: declinfo.cpp:75
unsigned char flex_uint8_t
Definition: declinfo.cpp:73
static void yy_fatal_error(yyconst char msg[])
void declinfoYYset_in(FILE *in_str)
Definition: declinfo.cpp:2080
static bool classTempListFound
Definition: declinfo.cpp:676
static int yy_start
Definition: declinfo.cpp:299
size_t yy_size_t
Definition: declinfo.cpp:203
#define YY_STATE_BUF_SIZE
Definition: declinfo.cpp:168
#define YY_CURRENT_BUFFER
Definition: declinfo.cpp:282
static yyconst flex_int16_t yy_accept[140]
Definition: declinfo.cpp:411
byte bytes
Alias for common language habits.
Definition: datasize.h:101
static int yyread(char *buf, int max_size)
Definition: declinfo.cpp:714
size_t yy_size_t
Definition: code.cpp:203
int yy_buffer_status
Definition: code.cpp:252
static QCString * s
Definition: config.cpp:1042
void declinfoYYrestart(FILE *input_file)
Definition: declinfo.cpp:1649
static QCString classTempList
Definition: declinfo.cpp:670
const bool TRUE
Definition: qglobal.h:371
#define YY_BUF_SIZE
Definition: declinfo.cpp:163
static int inputPosition
Definition: declinfo.cpp:667
void declinfoYYfree(void *)
Definition: declinfo.cpp:2199
#define YY_TRAILING_MASK
Definition: declinfo.cpp:610
static QCString exceptionString
Definition: declinfo.cpp:678
static const char * inputString
Definition: declinfo.cpp:666
#define SkipSharp
Definition: declinfo.cpp:744
static size_t yy_buffer_stack_top
Definition: declinfo.cpp:272