Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/doxytag.cpp

Source at commit 1322 created 9 years 5 months ago.
By meklort, Add doxygen to utils folder
1
2#line 3 "<stdout>"
3
4#define YY_INT_ALIGNED short int
5
6/* A lexical scanner generated by flex */
7
8#define yy_create_buffer tagYY_create_buffer
9#define yy_delete_buffer tagYY_delete_buffer
10#define yy_flex_debug tagYY_flex_debug
11#define yy_init_buffer tagYY_init_buffer
12#define yy_flush_buffer tagYY_flush_buffer
13#define yy_load_buffer_state tagYY_load_buffer_state
14#define yy_switch_to_buffer tagYY_switch_to_buffer
15#define yyin tagYYin
16#define yyleng tagYYleng
17#define yylex tagYYlex
18#define yylineno tagYYlineno
19#define yyout tagYYout
20#define yyrestart tagYYrestart
21#define yytext tagYYtext
22#define yywrap tagYYwrap
23#define yyalloc tagYYalloc
24#define yyrealloc tagYYrealloc
25#define yyfree tagYYfree
26
27#define FLEX_SCANNER
28#define YY_FLEX_MAJOR_VERSION 2
29#define YY_FLEX_MINOR_VERSION 5
30#define YY_FLEX_SUBMINOR_VERSION 35
31#if YY_FLEX_SUBMINOR_VERSION > 0
32#define FLEX_BETA
33#endif
34
35/* First, we deal with platform-specific or compiler-specific issues. */
36
37/* begin standard C headers. */
38#include <stdio.h>
39#include <string.h>
40#include <errno.h>
41#include <stdlib.h>
42
43/* end standard C headers. */
44
45/* flex integer type definitions */
46
47#ifndef FLEXINT_H
48#define FLEXINT_H
49
50/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55 * if you want the limit (max/min) macros for int types.
56 */
57#ifndef __STDC_LIMIT_MACROS
58#define __STDC_LIMIT_MACROS 1
59#endif
60
61#include <inttypes.h>
62typedef int8_t flex_int8_t;
63typedef uint8_t flex_uint8_t;
64typedef int16_t flex_int16_t;
65typedef uint16_t flex_uint16_t;
66typedef int32_t flex_int32_t;
67typedef uint32_t flex_uint32_t;
68#else
69typedef signed char flex_int8_t;
70typedef short int flex_int16_t;
71typedef int flex_int32_t;
72typedef unsigned char flex_uint8_t;
73typedef unsigned short int flex_uint16_t;
74typedef unsigned int flex_uint32_t;
75#endif /* ! C99 */
76
77/* Limits of integral types. */
78#ifndef INT8_MIN
79#define INT8_MIN (-128)
80#endif
81#ifndef INT16_MIN
82#define INT16_MIN (-32767-1)
83#endif
84#ifndef INT32_MIN
85#define INT32_MIN (-2147483647-1)
86#endif
87#ifndef INT8_MAX
88#define INT8_MAX (127)
89#endif
90#ifndef INT16_MAX
91#define INT16_MAX (32767)
92#endif
93#ifndef INT32_MAX
94#define INT32_MAX (2147483647)
95#endif
96#ifndef UINT8_MAX
97#define UINT8_MAX (255U)
98#endif
99#ifndef UINT16_MAX
100#define UINT16_MAX (65535U)
101#endif
102#ifndef UINT32_MAX
103#define UINT32_MAX (4294967295U)
104#endif
105
106#endif /* ! FLEXINT_H */
107
108#ifdef __cplusplus
109
110/* The "const" storage-class-modifier is valid. */
111#define YY_USE_CONST
112
113#else/* ! __cplusplus */
114
115/* C99 requires __STDC__ to be defined as 1. */
116#if defined (__STDC__)
117
118#define YY_USE_CONST
119
120#endif/* defined (__STDC__) */
121#endif/* ! __cplusplus */
122
123#ifdef YY_USE_CONST
124#define yyconst const
125#else
126#define yyconst
127#endif
128
129/* Returned upon end-of-file. */
130#define YY_NULL 0
131
132/* Promotes a possibly negative, possibly signed char to an unsigned
133 * integer for use as an array index. If the signed char is negative,
134 * we want to instead treat it as an 8-bit unsigned char, hence the
135 * double cast.
136 */
137#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
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 (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 (((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 tagYYrestart(tagYYin )
157
158#define YY_END_OF_BUFFER_CHAR 0
159
160/* Size of default input buffer. */
161#ifndef YY_BUF_SIZE
162#define YY_BUF_SIZE 16384
163#endif
164
165/* The state buf must be large enough to hold one state per character in the main buffer.
166 */
167#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
168
169#ifndef YY_TYPEDEF_YY_BUFFER_STATE
170#define YY_TYPEDEF_YY_BUFFER_STATE
171typedef struct yy_buffer_state *YY_BUFFER_STATE;
172#endif
173
174#ifndef YY_TYPEDEF_YY_SIZE_T
175#define YY_TYPEDEF_YY_SIZE_T
176typedef size_t yy_size_t;
177#endif
178
179extern yy_size_t tagYYleng;
180
181extern FILE *tagYYin, *tagYYout;
182
183#define EOB_ACT_CONTINUE_SCAN 0
184#define EOB_ACT_END_OF_FILE 1
185#define EOB_ACT_LAST_MATCH 2
186
187 #define YY_LESS_LINENO(n)
188
189/* Return all but the first "n" matched characters back to the input stream. */
190#define yyless(n) \
191do \
192{ \
193/* Undo effects of setting up tagYYtext. */ \
194 int yyless_macro_arg = (n); \
195 YY_LESS_LINENO(yyless_macro_arg);\
196*yy_cp = (yy_hold_char); \
197YY_RESTORE_YY_MORE_OFFSET \
198(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
199YY_DO_BEFORE_ACTION; /* set up tagYYtext again */ \
200} \
201while ( 0 )
202
203#define unput(c) yyunput( c, (yytext_ptr) )
204
205#ifndef YY_STRUCT_YY_BUFFER_STATE
206#define YY_STRUCT_YY_BUFFER_STATE
207struct yy_buffer_state
208{
209FILE *yy_input_file;
210
211char *yy_ch_buf;/* input buffer */
212char *yy_buf_pos;/* current position in input buffer */
213
214/* Size of input buffer in bytes, not including room for EOB
215 * characters.
216 */
217yy_size_t yy_buf_size;
218
219/* Number of characters read into yy_ch_buf, not including EOB
220 * characters.
221 */
222yy_size_t yy_n_chars;
223
224/* Whether we "own" the buffer - i.e., we know we created it,
225 * and can realloc() it to grow it, and should free() it to
226 * delete it.
227 */
228int yy_is_our_buffer;
229
230/* Whether this is an "interactive" input source; if so, and
231 * if we're using stdio for input, then we want to use getc()
232 * instead of fread(), to make sure we stop fetching input after
233 * each newline.
234 */
235int yy_is_interactive;
236
237/* Whether we're considered to be at the beginning of a line.
238 * If so, '^' rules will be active on the next match, otherwise
239 * not.
240 */
241int yy_at_bol;
242
243 int yy_bs_lineno; /**< The line count. */
244 int yy_bs_column; /**< The column count. */
245
246/* Whether to try to fill the input buffer when we reach the
247 * end of it.
248 */
249int yy_fill_buffer;
250
251int yy_buffer_status;
252
253#define YY_BUFFER_NEW 0
254#define YY_BUFFER_NORMAL 1
255/* When an EOF's been seen but there's still some text to process
256 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
257 * shouldn't try reading from the input source any more. We might
258 * still have a bunch of tokens to match, though, because of
259 * possible backing-up.
260 *
261 * When we actually see the EOF, we change the status to "new"
262 * (via tagYYrestart()), so that the user can continue scanning by
263 * just pointing tagYYin at a new input file.
264 */
265#define YY_BUFFER_EOF_PENDING 2
266
267};
268#endif /* !YY_STRUCT_YY_BUFFER_STATE */
269
270/* Stack of input buffers. */
271static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
272static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
273static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
274
275/* We provide macros for accessing buffer states in case in the
276 * future we want to put the buffer states in a more general
277 * "scanner state".
278 *
279 * Returns the top of the stack, or NULL.
280 */
281#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
282 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
283 : NULL)
284
285/* Same as previous macro, but useful when we know that the buffer stack is not
286 * NULL or when we need an lvalue. For internal use only.
287 */
288#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
289
290/* yy_hold_char holds the character lost when tagYYtext is formed. */
291static char yy_hold_char;
292static yy_size_t yy_n_chars;/* number of characters read into yy_ch_buf */
293yy_size_t tagYYleng;
294
295/* Points to current character in buffer. */
296static char *yy_c_buf_p = (char *) 0;
297static int yy_init = 0;/* whether we need to initialize */
298static int yy_start = 0;/* start state number */
299
300/* Flag which is used to allow tagYYwrap()'s to do buffer switches
301 * instead of setting up a fresh tagYYin. A bit of a hack ...
302 */
303static int yy_did_buffer_switch_on_eof;
304
305void tagYYrestart (FILE *input_file );
306void tagYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
307YY_BUFFER_STATE tagYY_create_buffer (FILE *file,int size );
308void tagYY_delete_buffer (YY_BUFFER_STATE b );
309void tagYY_flush_buffer (YY_BUFFER_STATE b );
310void tagYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
311void tagYYpop_buffer_state (void );
312
313static void tagYYensure_buffer_stack (void );
314static void tagYY_load_buffer_state (void );
315static void tagYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
316
317#define YY_FLUSH_BUFFER tagYY_flush_buffer(YY_CURRENT_BUFFER )
318
319YY_BUFFER_STATE tagYY_scan_buffer (char *base,yy_size_t size );
320YY_BUFFER_STATE tagYY_scan_string (yyconst char *yy_str );
321YY_BUFFER_STATE tagYY_scan_bytes (yyconst char *bytes,yy_size_t len );
322
323void *tagYYalloc (yy_size_t );
324void *tagYYrealloc (void *,yy_size_t );
325void tagYYfree (void * );
326
327#define yy_new_buffer tagYY_create_buffer
328
329#define yy_set_interactive(is_interactive) \
330{ \
331if ( ! YY_CURRENT_BUFFER ){ \
332 tagYYensure_buffer_stack (); \
333YY_CURRENT_BUFFER_LVALUE = \
334 tagYY_create_buffer(tagYYin,YY_BUF_SIZE ); \
335} \
336YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
337}
338
339#define yy_set_bol(at_bol) \
340{ \
341if ( ! YY_CURRENT_BUFFER ){\
342 tagYYensure_buffer_stack (); \
343YY_CURRENT_BUFFER_LVALUE = \
344 tagYY_create_buffer(tagYYin,YY_BUF_SIZE ); \
345} \
346YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
347}
348
349#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
350
351/* Begin user sect3 */
352
353typedef unsigned char YY_CHAR;
354
355FILE *tagYYin = (FILE *) 0, *tagYYout = (FILE *) 0;
356
357typedef int yy_state_type;
358
359extern int tagYYlineno;
360
361int tagYYlineno = 1;
362
363extern char *tagYYtext;
364#define yytext_ptr tagYYtext
365
366static yy_state_type yy_get_previous_state (void );
367static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
368static int yy_get_next_buffer (void );
369static void yy_fatal_error (yyconst char msg[] );
370
371/* Done after the current pattern has been matched and before the
372 * corresponding action - sets up tagYYtext.
373 */
374#define YY_DO_BEFORE_ACTION \
375(yytext_ptr) = yy_bp; \
376tagYYleng = (size_t) (yy_cp - yy_bp); \
377(yy_hold_char) = *yy_cp; \
378*yy_cp = '\0'; \
379(yy_c_buf_p) = yy_cp;
380
381#define YY_NUM_RULES 125
382#define YY_END_OF_BUFFER 126
383/* This struct is not used in this scanner,
384 but its presence is necessary. */
385struct yy_trans_info
386{
387flex_int32_t yy_verify;
388flex_int32_t yy_nxt;
389};
390static yyconst flex_int16_t yy_accept[707] =
391 { 0,
392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
398 0, 0, 126, 123, 124, 123, 79, 81, 79, 81,
399 123, 101, 100, 99, 99, 99, 96, 102, 123, 104,
400 112, 112, 106, 106, 111, 123, 123, 92, 123, 93,
401 123, 90, 90, 90, 123, 120, 119, 120, 119, 85,
402
403 121, 122, 84, 83, 123, 81, 13, 13, 16, 14,
404 16, 26, 26, 24, 18, 18, 24, 24, 24, 37,
405 37, 37, 27, 35, 36, 37, 63, 63, 68, 68,
406 56, 56, 61, 61, 70, 70, 75, 75, 39, 39,
407 44, 44, 47, 47, 53, 53, 48, 0, 0, 0,
408 0, 0, 81, 0, 0, 0, 81, 0, 100, 99,
409 99, 99, 96, 102, 0, 0, 112, 112, 0, 0,
410 0, 0, 0, 93, 0, 0, 90, 90, 90, 90,
411 0, 0, 0, 0, 0, 0, 85, 122, 84, 83,
412 0, 81, 0, 14, 0, 0, 0, 18, 0, 0,
413
414 23, 0, 0, 0, 27, 0, 0, 0, 0, 0,
415 36, 0, 0, 63, 0, 0, 0, 0, 0, 56,
416 0, 0, 0, 0, 0, 70, 0, 0, 0, 0,
417 0, 39, 0, 0, 0, 0, 0, 47, 0, 0,
418 0, 0, 0, 80, 0, 0, 0, 0, 0, 0,
419 0, 0, 0, 81, 0, 99, 99, 103, 0, 112,
420 0, 0, 0, 109, 0, 0, 0, 90, 0, 0,
421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
422 0, 21, 0, 0, 0, 0, 0, 34, 0, 0,
423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
424
425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
427 0, 0, 1, 0, 0, 81, 0, 0, 99, 99,
428 0, 112, 108, 107, 0, 0, 0, 0, 90, 113,
429 0, 116, 115, 0, 0, 0, 0, 0, 25, 25,
430 20, 19, 0, 0, 30, 29, 0, 0, 0, 0,
431 0, 65, 64, 0, 0, 0, 58, 57, 0, 0,
432 0, 72, 71, 0, 0, 0, 41, 40, 0, 0,
433 0, 50, 49, 0, 0, 0, 0, 77, 0, 0,
434 0, 0, 81, 0, 0, 99, 0, 0, 112, 0,
435
436 91, 0, 0, 90, 114, 0, 0, 0, 0, 0,
437 25, 0, 28, 0, 0, 33, 0, 66, 0, 0,
438 59, 0, 76, 73, 0, 45, 42, 0, 54, 51,
439 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
440 0, 0, 0, 0, 112, 110, 0, 88, 90, 118,
441 117, 82, 0, 15, 25, 22, 32, 31, 0, 67,
442 0, 60, 74, 43, 52, 0, 0, 0, 0, 0,
443 0, 0, 81, 0, 0, 0, 0, 0, 112, 0,
444 0, 90, 0, 25, 0, 62, 0, 0, 0, 0,
445 0, 0, 81, 0, 0, 0, 0, 105, 0, 87,
446
447 90, 0, 25, 69, 0, 0, 78, 0, 0, 0,
448 7, 0, 95, 0, 0, 0, 0, 89, 0, 0,
449 89, 89, 89, 90, 90, 89, 12, 25, 0, 0,
450 0, 0, 0, 0, 0, 0, 0, 89, 0, 0,
451 0, 0, 0, 89, 0, 90, 90, 89, 25, 0,
452 0, 0, 0, 0, 0, 0, 0, 0, 86, 0,
453 0, 0, 0, 0, 0, 90, 17, 0, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 0, 89, 89,
455 0, 90, 0, 0, 0, 0, 0, 9, 0, 0,
456 0, 0, 0, 89, 0, 89, 0, 89, 89, 90,
457
458 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,
459 0, 0, 89, 0, 0, 89, 0, 0, 0, 0,
460 0, 0, 0, 0, 0, 0, 97, 0, 0, 0,
461 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
465 0, 0, 0, 0, 0, 0, 0, 2, 94, 38,
466 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
467 0, 10, 0, 0, 0, 0, 46, 0, 0, 11,
468
469 0, 0, 0, 4, 3, 0
470 } ;
471
472static yyconst flex_int32_t yy_ec[256] =
473 { 0,
474 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 1, 4, 5, 6, 7, 1, 8, 9, 1, 10,
478 11, 12, 13, 14, 15, 16, 17, 18, 19, 18,
479 20, 18, 18, 18, 18, 18, 18, 21, 22, 23,
480 24, 25, 1, 26, 27, 27, 28, 27, 27, 29,
481 27, 27, 30, 27, 27, 27, 27, 27, 27, 27,
482 27, 31, 27, 27, 27, 27, 27, 27, 27, 27,
483 32, 1, 33, 8, 34, 1, 35, 36, 37, 38,
484
485 39, 40, 41, 42, 43, 27, 27, 44, 45, 46,
486 47, 48, 49, 50, 51, 52, 53, 27, 54, 55,
487 56, 27, 1, 57, 1, 58, 1, 1, 1, 1,
488 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
492 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
493 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
494 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
495
496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
498 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
499 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
500 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
501 1, 1, 1, 1, 1
502 } ;
503
504static yyconst flex_int32_t yy_meta[59] =
505 { 0,
506 1, 1, 2, 3, 4, 5, 1, 4, 6, 1,
507 1, 4, 7, 8, 7, 9, 10, 11, 11, 11,
508 12, 1, 13, 10, 14, 3, 15, 15, 15, 15,
509 15, 4, 4, 11, 15, 15, 15, 15, 15, 15,
510 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
511 15, 15, 15, 15, 15, 15, 4, 16
512 } ;
513
514static yyconst flex_int16_t yy_base[746] =
515 { 0,
516 2054, 2053, 0, 36, 57, 58, 81, 0, 139, 0,
517 197, 255, 60, 61, 313, 0, 371, 0, 429, 0,
518 485, 0, 209, 210, 543, 0, 59, 66, 601, 0,
519 212, 213, 215, 222, 659, 0, 715, 0, 771, 0,
520 829, 0, 214, 223, 887, 913, 939, 0, 995, 1051,
521 1109, 0, 67, 68, 238, 265, 267, 280, 287, 288,
522 289, 296, 2055, 2058, 2058, 0, 484, 0, 486, 2008,
523 2018, 2058, 0, 0, 2008, 2008, 0, 0, 191, 2058,
524 0, 2002, 2058, 34, 2058, 2010, 2009, 2058, 2012, 0,
525 224, 192, 253, 0, 2029, 2058, 2058, 684, 2058, 0,
526
527 2058, 0, 0, 0, 2028, 1167, 2058, 2009, 2058, 0,
528 2018, 2058, 2021, 2058, 0, 199, 2030, 2001, 2000, 2058,
529 502, 685, 2058, 2058, 0, 2021, 0, 0, 2033, 492,
530 0, 0, 2032, 974, 0, 0, 2031, 976, 0, 0,
531 2030, 991, 0, 0, 2029, 995, 2058, 2010, 2016, 1978,
532 2025, 1978, 0, 232, 1984, 1988, 1983, 2020, 0, 0,
533 1988, 1978, 0, 0, 1996, 1968, 0, 1980, 1966, 1965,
534 1972, 1961, 2010, 0, 1975, 1989, 452, 466, 0, 468,
535 1976, 1965, 1957, 1956, 1971, 1953, 0, 0, 0, 0,
536 1957, 0, 2000, 0, 1980, 1981, 1980, 0, 1948, 1947,
537
538 2058, 1954, 1943, 737, 2058, 1951, 1943, 1942, 1957, 1939,
539 0, 1966, 480, 0, 1955, 1944, 1936, 1935, 1933, 0,
540 1935, 1939, 1931, 1930, 1928, 0, 1965, 1934, 1926, 1925,
541 1923, 0, 1960, 1929, 1921, 1920, 1918, 0, 1955, 1924,
542 1916, 1915, 1913, 2058, 1950, 1929, 1917, 1923, 281, 1957,
543 1935, 1934, 1935, 1918, 211, 1905, 1916, 2058, 1904, 1903,
544 1930, 1929, 1911, 2058, 0, 1902, 1931, 674, 1922, 1898,
545 1923, 1922, 1892, 1895, 1891, 1894, 1922, 1891, 1915, 1914,
546 1896, 2058, 1886, 1911, 1910, 1880, 1883, 2058, 284, 1879,
547 1880, 1905, 1904, 1878, 1885, 1875, 1900, 1899, 1873, 1904,
548
549 1870, 1895, 1894, 1868, 1899, 1865, 1890, 1889, 1863, 1894,
550 1860, 1885, 1884, 1858, 1900, 1867, 1867, 1876, 1865, 2058,
551 1862, 1875, 2058, 1874, 469, 1846, 1851, 1844, 1842, 1888,
552 1844, 1855, 2058, 2058, 1837, 1863, 1832, 1851, 860, 2058,
553 1863, 2058, 2058, 1836, 1831, 1843, 1846, 1845, 0, 1831,
554 2058, 2058, 1826, 1855, 2058, 2058, 1828, 1823, 1849, 1832,
555 1850, 2058, 2058, 1819, 1830, 1847, 2058, 2058, 1816, 1842,
556 1844, 2058, 2058, 1813, 1839, 1841, 2058, 2058, 1810, 1836,
557 1838, 2058, 2058, 1807, 1820, 1813, 1811, 2058, 1811, 1810,
558 1811, 497, 1809, 1816, 1811, 1845, 1817, 1801, 1794, 1806,
559
560 2058, 1788, 1818, 874, 2058, 1820, 1819, 1815, 1794, 1813,
561 1798, 1797, 2058, 1813, 1812, 2058, 1782, 2058, 1810, 1807,
562 2058, 1808, 2058, 2058, 1807, 2058, 2058, 1806, 2058, 2058,
563 1805, 1779, 1786, 1785, 1780, 1787, 1802, 902, 1768, 1768,
564 1778, 1786, 1777, 1774, 1767, 2058, 1761, 1789, 482, 2058,
565 2058, 2058, 1772, 2058, 1760, 2058, 2058, 2058, 1785, 2058,
566 1802, 2058, 2058, 2058, 2058, 1752, 1781, 1781, 1763, 1752,
567 1777, 502, 1750, 1749, 1775, 1759, 1757, 1771, 1745, 1759,
568 1758, 966, 1768, 1756, 1784, 2058, 1733, 1765, 1781, 1740,
569 1734, 704, 1780, 1759, 1776, 1741, 1741, 0, 1738, 2058,
570
571 1224, 1772, 1725, 2058, 1724, 1733, 2058, 1750, 1749, 879,
572 2058, 1766, 2058, 1732, 1720, 1745, 1281, 1034, 1002, 1231,
573 1254, 2058, 1759, 1018, 1023, 1291, 2058, 1719, 1729, 1741,
574 1722, 893, 1028, 1719, 1705, 1715, 1743, 1307, 1708, 1706,
575 1684, 1667, 1665, 691, 1675, 1027, 984, 0, 1651, 1659,
576 1681, 1645, 1629, 1622, 261, 1609, 1613, 1599, 2058, 1586,
577 1575, 1580, 1605, 1604, 1572, 1040, 0, 1602, 700, 1574,
578 1571, 1591, 699, 1605, 1564, 1572, 1568, 1584, 997, 1064,
579 1583, 1043, 1598, 1553, 1542, 1530, 1575, 1553, 1011, 1571,
580 1535, 1531, 1514, 1068, 1524, 1069, 1518, 1221, 1548, 1047,
581
582 1059, 1514, 1521, 1514, 1526, 1513, 1204, 1505, 1507, 2058,
583 1505, 1507, 1226, 1311, 1310, 1349, 1316, 1313, 1319, 1316,
584 1305, 1305, 1331, 1349, 882, 1302, 2058, 1306, 1328, 1327,
585 1312, 1304, 1300, 1298, 1292, 1317, 2058, 1306, 1291, 1208,
586 1297, 1287, 1283, 1294, 1296, 1306, 1305, 2058, 1324, 1291,
587 1224, 1285, 1272, 1271, 1278, 1308, 1304, 1263, 1263, 979,
588 1283, 1279, 1257, 1249, 1260, 1240, 1249, 1241, 976, 1273,
589 1271, 1224, 1251, 1235, 1230, 1221, 1235, 1229, 2058, 2058,
590 1200, 1234, 1144, 1118, 1068, 1100, 1076, 2058, 1030, 1036,
591 1048, 2058, 1049, 1011, 983, 925, 2058, 850, 730, 2058,
592
593 302, 250, 209, 2058, 2058, 2058, 1364, 1380, 1396, 1412,
594 1428, 1444, 1460, 1476, 1492, 1508, 1524, 195, 524, 1534,
595 881, 1543, 1088, 1238, 1243, 1552, 1562, 1246, 64, 1568,
596 1584, 1597, 1603, 1615, 1257, 1631, 1647, 1663, 1679, 1695,
597 1711, 1727, 1741, 1746, 1752
598 } ;
599
600static yyconst flex_int16_t yy_def[746] =
601 { 0,
602 707, 707, 706, 3, 707, 707, 706, 7, 706, 9,
603 708, 708, 707, 707, 706, 15, 706, 17, 706, 19,
604 707, 21, 707, 707, 706, 25, 707, 707, 706, 29,
605 707, 707, 709, 709, 706, 35, 707, 37, 706, 39,
606 706, 41, 710, 710, 711, 711, 706, 47, 712, 712,
607 706, 51, 713, 713, 714, 714, 715, 715, 716, 716,
608 717, 717, 706, 706, 706, 718, 706, 719, 706, 719,
609 706, 706, 720, 721, 721, 721, 722, 723, 706, 706,
610 724, 724, 706, 706, 706, 706, 706, 706, 706, 725,
611 706, 726, 726, 727, 706, 706, 706, 706, 706, 728,
612
613 706, 729, 730, 731, 706, 706, 706, 706, 706, 732,
614 706, 706, 733, 706, 734, 734, 706, 706, 706, 706,
615 706, 706, 706, 706, 735, 736, 737, 737, 706, 706,
616 738, 738, 706, 706, 739, 739, 706, 706, 740, 740,
617 706, 706, 741, 741, 706, 706, 706, 718, 706, 706,
618 706, 706, 719, 706, 706, 706, 719, 706, 720, 721,
619 721, 721, 722, 723, 706, 706, 724, 724, 706, 706,
620 706, 706, 706, 725, 706, 706, 726, 726, 727, 726,
621 706, 706, 706, 706, 706, 706, 728, 729, 730, 731,
622 706, 106, 706, 732, 706, 733, 706, 734, 706, 706,
623
624 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
625 735, 736, 736, 737, 706, 706, 706, 706, 706, 738,
626 706, 706, 706, 706, 706, 739, 706, 706, 706, 706,
627 706, 740, 706, 706, 706, 706, 706, 741, 706, 706,
628 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
629 706, 706, 742, 719, 706, 721, 721, 706, 706, 724,
630 706, 706, 706, 706, 743, 706, 706, 726, 706, 706,
631 706, 706, 706, 706, 706, 706, 706, 744, 706, 706,
632 706, 706, 706, 706, 706, 706, 706, 706, 736, 706,
633 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
634
635 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
636 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
637 706, 706, 706, 742, 742, 719, 706, 706, 721, 721,
638 706, 724, 706, 706, 706, 743, 706, 706, 726, 706,
639 706, 706, 706, 706, 706, 706, 706, 706, 744, 744,
640 706, 706, 706, 706, 706, 706, 706, 706, 736, 706,
641 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
642 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
643 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
644 706, 742, 719, 706, 706, 721, 706, 706, 724, 706,
645
646 706, 706, 706, 726, 706, 706, 706, 706, 706, 706,
647 744, 706, 706, 706, 706, 706, 706, 706, 706, 706,
648 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
649 706, 706, 706, 706, 706, 706, 706, 742, 719, 706,
650 706, 706, 706, 706, 724, 706, 706, 706, 726, 706,
651 706, 706, 706, 706, 744, 706, 706, 706, 706, 706,
652 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
653 706, 742, 719, 706, 706, 706, 706, 706, 724, 706,
654 706, 726, 706, 744, 706, 706, 706, 706, 706, 706,
655 706, 742, 719, 706, 706, 706, 706, 724, 706, 706,
656
657 726, 706, 744, 706, 706, 706, 706, 706, 706, 742,
658 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
659 726, 706, 521, 726, 726, 727, 706, 744, 706, 706,
660 706, 706, 742, 706, 706, 706, 706, 706, 706, 706,
661 706, 706, 706, 726, 706, 726, 726, 727, 744, 706,
662 706, 706, 706, 706, 742, 706, 706, 706, 706, 706,
663 706, 706, 706, 706, 706, 726, 744, 706, 706, 706,
664 706, 706, 742, 706, 706, 706, 706, 706, 706, 706,
665 706, 726, 706, 706, 706, 706, 706, 706, 742, 706,
666 706, 706, 706, 706, 706, 706, 706, 706, 706, 726,
667
668 706, 706, 706, 706, 706, 706, 742, 706, 706, 706,
669 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
670 706, 706, 745, 706, 742, 706, 706, 706, 706, 706,
671 706, 706, 706, 706, 706, 706, 706, 706, 706, 742,
672 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
673 742, 706, 706, 706, 706, 706, 706, 706, 706, 742,
674 706, 706, 706, 706, 706, 706, 706, 706, 742, 706,
675 706, 706, 706, 706, 706, 706, 706, 742, 706, 706,
676 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
677 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
678
679 706, 706, 706, 706, 706, 0, 706, 706, 706, 706,
680 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
681 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
682 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
683 706, 706, 706, 706, 706
684 } ;
685
686static yyconst flex_int16_t yy_nxt[2117] =
687 { 0,
688 64, 64, 65, 64, 64, 64, 64, 64, 66, 64,
689 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
690 64, 64, 67, 64, 64, 64, 68, 68, 68, 68,
691 68, 64, 64, 68, 68, 68, 68, 68, 68, 68,
692 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
693 68, 68, 68, 68, 68, 68, 64, 64, 69, 65,
694 65, 65, 65, 65, 91, 70, 72, 72, 65, 128,
695 128, 91, 129, 129, 169, 130, 130, 170, 188, 71,
696 71, 64, 64, 65, 64, 64, 64, 72, 64, 64,
697 64, 64, 64, 73, 64, 73, 73, 64, 73, 73,
698
699 73, 64, 64, 64, 64, 64, 64, 73, 73, 73,
700 73, 73, 64, 64, 73, 73, 73, 73, 73, 73,
701 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
702 73, 73, 73, 73, 73, 73, 73, 64, 64, 64,
703 64, 65, 64, 64, 64, 64, 64, 64, 64, 64,
704 64, 64, 64, 64, 64, 64, 74, 74, 74, 64,
705 64, 64, 64, 64, 64, 74, 75, 76, 74, 74,
706 64, 64, 74, 74, 74, 74, 74, 74, 74, 74,
707 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
708 74, 74, 74, 74, 74, 64, 64, 64, 64, 65,
709
710 64, 64, 64, 64, 64, 64, 64, 64, 64, 148,
711 64, 88, 88, 64, 65, 65, 65, 97, 64, 64,
712 64, 64, 64, 98, 97, 65, 165, 175, 64, 64,
713 98, 89, 89, 705, 95, 95, 108, 99, 178, 199,
714 132, 166, 200, 133, 99, 108, 134, 327, 176, 179,
715 249, 250, 328, 64, 64, 64, 64, 65, 64, 64,
716 64, 64, 64, 64, 64, 64, 64, 132, 64, 136,
717 133, 64, 137, 134, 704, 138, 64, 64, 64, 64,
718 64, 251, 136, 325, 319, 137, 64, 64, 138, 140,
719 140, 144, 141, 141, 145, 142, 142, 146, 144, 178,
720
721 180, 145, 147, 359, 146, 320, 573, 703, 288, 147,
722 179, 64, 64, 64, 64, 65, 64, 64, 64, 64,
723 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
724 78, 78, 78, 64, 64, 64, 64, 64, 64, 78,
725 78, 78, 78, 78, 64, 64, 78, 78, 78, 78,
726 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
727 78, 78, 78, 78, 78, 78, 78, 78, 78, 64,
728 64, 64, 64, 65, 64, 64, 64, 64, 64, 64,
729 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
730 64, 64, 64, 79, 64, 64, 64, 80, 80, 80,
731
732 80, 80, 64, 64, 80, 80, 80, 80, 80, 80,
733 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
734 80, 80, 80, 80, 80, 80, 80, 64, 80, 64,
735 64, 65, 64, 64, 64, 64, 64, 64, 64, 64,
736 64, 64, 64, 64, 64, 64, 81, 81, 81, 64,
737 64, 64, 64, 64, 64, 81, 81, 81, 81, 81,
738 64, 64, 81, 81, 81, 81, 81, 81, 81, 81,
739 81, 81, 81, 81, 81, 82, 81, 81, 81, 81,
740 81, 81, 81, 81, 81, 64, 64, 65, 149, 83,
741 149, 325, 83, 84, 83, 83, 83, 83, 178, 83,
742
743 150, 83, 150, 204, 288, 204, 268, 85, 83, 179,
744 392, 205, 178, 180, 178, 438, 83, 83, 151, 325,
745 151, 289, 86, 179, 325, 179, 216, 154, 482, 155,
746 87, 152, 217, 152, 153, 218, 492, 156, 153, 179,
747 219, 83, 83, 64, 64, 65, 64, 64, 64, 64,
748 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
749 90, 90, 90, 64, 64, 64, 64, 64, 64, 90,
750 90, 90, 90, 90, 64, 64, 90, 90, 90, 90,
751 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
752 90, 90, 90, 90, 90, 90, 90, 90, 90, 64,
753
754 64, 64, 64, 65, 64, 64, 64, 64, 64, 64,
755 64, 64, 64, 92, 64, 92, 92, 64, 92, 92,
756 92, 92, 64, 64, 64, 64, 64, 92, 92, 92,
757 92, 92, 64, 64, 92, 92, 92, 92, 92, 92,
758 92, 92, 92, 92, 92, 92, 92, 93, 92, 92,
759 92, 92, 92, 92, 92, 92, 92, 64, 94, 64,
760 64, 65, 64, 64, 64, 64, 64, 64, 64, 64,
761 64, 64, 64, 64, 64, 64, 100, 100, 100, 64,
762 64, 64, 64, 64, 64, 100, 100, 100, 100, 100,
763 64, 64, 100, 100, 100, 100, 100, 100, 100, 100,
764
765 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
766 100, 100, 100, 100, 100, 64, 64, 65, 182, 206,
767 178, 325, 589, 339, 183, 207, 325, 184, 208, 185,
768 209, 179, 186, 210, 584, 702, 585, 178, 204, 101,
769 204, 102, 102, 102, 102, 102, 205, 510, 179, 102,
770 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
771 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
772 102, 64, 64, 65, 64, 64, 64, 64, 64, 64,
773 64, 64, 64, 64, 64, 64, 64, 64, 103, 103,
774 103, 103, 64, 64, 64, 64, 64, 103, 103, 103,
775
776 103, 103, 64, 64, 103, 103, 103, 103, 103, 103,
777 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
778 103, 103, 103, 103, 103, 103, 103, 64, 103, 104,
779 104, 65, 104, 104, 104, 104, 104, 104, 104, 104,
780 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
781 104, 105, 104, 104, 104, 106, 106, 106, 106, 106,
782 104, 104, 106, 106, 106, 106, 106, 106, 106, 106,
783 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
784 106, 106, 106, 106, 106, 104, 104, 109, 109, 65,
785 109, 160, 111, 109, 404, 160, 109, 109, 553, 701,
786
787 109, 325, 109, 109, 325, 472, 178, 109, 109, 109,
788 109, 109, 109, 109, 109, 65, 109, 179, 111, 109,
789 178, 533, 109, 109, 325, 449, 109, 640, 109, 109,
790 700, 179, 554, 109, 109, 109, 109, 109, 109, 112,
791 112, 65, 112, 112, 112, 112, 112, 112, 112, 112,
792 112, 112, 112, 112, 112, 112, 113, 113, 113, 112,
793 112, 112, 112, 112, 112, 113, 113, 113, 113, 113,
794 112, 112, 113, 113, 113, 113, 113, 113, 113, 113,
795 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
796 113, 113, 113, 113, 113, 112, 112, 65, 325, 115,
797
798 678, 325, 115, 116, 117, 595, 115, 115, 222, 115,
799 228, 115, 178, 180, 223, 501, 229, 224, 115, 230,
800 596, 699, 225, 179, 231, 234, 115, 115, 669, 240,
801 178, 235, 118, 325, 236, 241, 541, 544, 242, 237,
802 119, 179, 542, 243, 522, 543, 522, 607, 522, 698,
803 325, 115, 115, 65, 697, 115, 546, 522, 115, 116,
804 117, 547, 115, 115, 178, 115, 522, 115, 555, 178,
805 566, 696, 597, 178, 115, 179, 612, 595, 582, 695,
806 179, 694, 115, 115, 179, 544, 178, 598, 118, 178,
807 522, 613, 596, 178, 600, 617, 119, 179, 164, 693,
808
809 179, 618, 164, 619, 179, 692, 691, 115, 115, 120,
810 121, 65, 121, 120, 120, 120, 120, 122, 123, 124,
811 120, 120, 120, 120, 120, 120, 125, 125, 125, 120,
812 120, 126, 120, 120, 120, 125, 125, 125, 125, 125,
813 120, 120, 125, 125, 125, 125, 125, 125, 125, 125,
814 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
815 125, 125, 125, 125, 125, 120, 120, 190, 190, 690,
816 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
817 190, 190, 190, 190, 192, 192, 192, 190, 190, 689,
818 190, 190, 190, 192, 192, 192, 192, 192, 190, 190,
819
820 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
821 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
822 192, 192, 192, 190, 190, 517, 325, 517, 518, 597,
823 325, 518, 519, 520, 612, 518, 521, 522, 523, 688,
824 518, 522, 625, 522, 598, 522, 325, 518, 167, 613,
825 687, 325, 167, 174, 522, 520, 187, 174, 686, 651,
826 187, 524, 660, 522, 522, 685, 544, 211, 544, 525,
827 178, 211, 684, 683, 682, 681, 680, 522, 679, 677,
828 518, 526, 517, 676, 517, 518, 522, 522, 518, 519,
829 520, 675, 518, 518, 522, 538, 674, 518, 673, 672,
830
831 178, 522, 671, 548, 518, 548, 670, 668, 667, 666,
832 522, 179, 520, 665, 522, 545, 664, 522, 539, 522,
833 663, 522, 662, 522, 661, 659, 540, 658, 657, 656,
834 522, 655, 654, 653, 613, 652, 650, 518, 518, 522,
835 649, 648, 647, 646, 645, 644, 643, 522, 598, 596,
836 642, 641, 639, 638, 636, 635, 634, 633, 632, 631,
837 616, 630, 629, 522, 64, 64, 64, 64, 64, 64,
838 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
839 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
840 77, 77, 77, 77, 77, 77, 96, 96, 96, 96,
841
842 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
843 96, 96, 107, 107, 107, 107, 107, 107, 107, 107,
844 107, 107, 107, 107, 107, 107, 107, 107, 110, 110,
845 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
846 110, 110, 110, 110, 114, 114, 114, 114, 114, 114,
847 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
848 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
849 127, 127, 127, 127, 127, 127, 131, 131, 131, 131,
850 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
851 131, 131, 135, 135, 135, 135, 135, 135, 135, 135,
852
853 135, 135, 135, 135, 135, 135, 135, 135, 139, 139,
854 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
855 139, 139, 139, 139, 143, 143, 143, 143, 143, 143,
856 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
857 159, 628, 159, 522, 159, 627, 626, 624, 159, 163,
858 623, 163, 622, 163, 163, 621, 620, 163, 177, 616,
859 177, 615, 177, 177, 614, 611, 177, 177, 179, 610,
860 179, 609, 179, 179, 608, 606, 179, 179, 189, 189,
861 605, 604, 189, 189, 190, 603, 190, 190, 190, 190,
862 190, 190, 190, 190, 190, 190, 602, 190, 190, 190,
863
864 194, 601, 194, 194, 599, 594, 593, 194, 592, 591,
865 590, 194, 194, 196, 196, 588, 587, 196, 198, 586,
866 198, 198, 583, 581, 198, 580, 579, 578, 522, 577,
867 198, 212, 212, 212, 212, 212, 212, 212, 212, 212,
868 212, 212, 212, 212, 576, 212, 212, 214, 214, 214,
869 214, 575, 574, 214, 214, 214, 214, 214, 214, 214,
870 214, 214, 214, 220, 220, 220, 220, 572, 571, 220,
871 220, 220, 220, 220, 220, 220, 220, 220, 220, 226,
872 226, 226, 226, 570, 569, 226, 226, 226, 226, 226,
873 226, 226, 226, 226, 226, 232, 232, 232, 232, 568,
874
875 567, 232, 232, 232, 232, 232, 232, 232, 232, 232,
876 232, 238, 238, 238, 238, 565, 564, 238, 563, 238,
877 238, 238, 238, 238, 238, 238, 238, 324, 562, 324,
878 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
879 324, 324, 324, 336, 561, 336, 560, 336, 559, 336,
880 336, 336, 336, 558, 557, 336, 349, 556, 552, 551,
881 349, 349, 637, 550, 637, 549, 637, 545, 537, 536,
882 535, 534, 532, 531, 530, 529, 528, 527, 516, 515,
883 514, 513, 512, 511, 509, 508, 507, 506, 505, 504,
884 503, 502, 500, 499, 498, 258, 497, 496, 495, 494,
885
886 493, 320, 491, 490, 489, 488, 487, 486, 485, 484,
887 483, 481, 480, 479, 478, 477, 476, 475, 474, 473,
888 471, 470, 469, 468, 467, 466, 465, 464, 463, 462,
889 461, 460, 459, 458, 457, 456, 455, 454, 453, 452,
890 451, 450, 448, 447, 446, 445, 444, 443, 442, 441,
891 440, 439, 437, 436, 435, 434, 433, 432, 431, 430,
892 429, 428, 427, 426, 425, 424, 423, 422, 421, 420,
893 419, 418, 417, 416, 415, 414, 413, 412, 411, 410,
894 409, 408, 407, 406, 405, 403, 402, 401, 400, 399,
895 398, 397, 396, 395, 394, 393, 325, 391, 390, 389,
896
897 388, 387, 386, 385, 384, 383, 382, 381, 380, 379,
898 378, 377, 376, 375, 374, 373, 372, 371, 370, 369,
899 368, 367, 366, 365, 364, 363, 362, 361, 360, 358,
900 357, 356, 355, 354, 353, 352, 351, 350, 348, 347,
901 346, 345, 344, 343, 342, 341, 340, 338, 337, 335,
902 334, 333, 332, 331, 330, 329, 326, 325, 323, 322,
903 321, 318, 317, 316, 315, 314, 313, 312, 311, 310,
904 309, 308, 307, 306, 305, 304, 303, 302, 301, 300,
905 299, 298, 297, 296, 295, 294, 293, 292, 291, 290,
906 288, 287, 286, 285, 284, 283, 282, 281, 280, 279,
907
908 278, 197, 277, 276, 275, 274, 273, 272, 271, 270,
909 269, 267, 266, 265, 264, 263, 262, 261, 260, 259,
910 258, 257, 256, 255, 254, 253, 252, 248, 247, 246,
911 245, 244, 239, 233, 227, 221, 215, 213, 203, 202,
912 201, 197, 195, 193, 191, 181, 173, 172, 171, 168,
913 162, 161, 158, 157, 706, 65, 65, 63, 706, 706,
914 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
915 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
916 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
917 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
918
919 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
920 706, 706, 706, 706, 706, 706
921 } ;
922
923static yyconst flex_int16_t yy_chk[2117] =
924 { 0,
925 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
926 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
927 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
928 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
929 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
930 3, 3, 3, 3, 3, 3, 3, 3, 4, 5,
931 6, 27, 13, 14, 27, 4, 13, 14, 28, 53,
932 54, 28, 53, 54, 84, 53, 54, 84, 729, 5,
933 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
934 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
935
936 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
937 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
938 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
939 7, 7, 7, 7, 7, 7, 7, 7, 7, 9,
940 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
941 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
942 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
943 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
944 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
945 9, 9, 9, 9, 9, 9, 9, 11, 11, 11,
946
947 11, 11, 11, 11, 11, 11, 11, 11, 11, 718,
948 11, 23, 24, 11, 31, 32, 43, 33, 11, 11,
949 11, 11, 11, 33, 34, 44, 79, 91, 11, 11,
950 34, 23, 24, 703, 31, 32, 43, 33, 92, 116,
951 55, 79, 116, 55, 34, 44, 55, 255, 91, 92,
952 154, 154, 255, 11, 11, 12, 12, 12, 12, 12,
953 12, 12, 12, 12, 12, 12, 12, 56, 12, 57,
954 56, 12, 57, 56, 702, 57, 12, 12, 12, 12,
955 12, 154, 58, 555, 249, 58, 12, 12, 58, 59,
956 60, 61, 59, 60, 61, 59, 60, 61, 62, 93,
957
958 93, 62, 61, 289, 62, 249, 555, 701, 289, 62,
959 93, 12, 12, 15, 15, 15, 15, 15, 15, 15,
960 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
961 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
962 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
963 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
964 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
965 15, 17, 17, 17, 17, 17, 17, 17, 17, 17,
966 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
967 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
968
969 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
970 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
971 17, 17, 17, 17, 17, 17, 17, 17, 17, 19,
972 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
973 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
974 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
975 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
976 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
977 19, 19, 19, 19, 19, 19, 19, 21, 67, 21,
978 69, 325, 21, 21, 21, 21, 21, 21, 177, 21,
979
980 67, 21, 69, 121, 213, 121, 180, 21, 21, 177,
981 325, 121, 178, 178, 180, 392, 21, 21, 67, 392,
982 69, 213, 21, 178, 472, 180, 130, 69, 449, 69,
983 21, 67, 130, 69, 719, 130, 472, 69, 719, 449,
984 130, 21, 21, 25, 25, 25, 25, 25, 25, 25,
985 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
986 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
987 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
988 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
989 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
990
991 25, 29, 29, 29, 29, 29, 29, 29, 29, 29,
992 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
993 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
994 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
995 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
996 29, 29, 29, 29, 29, 29, 29, 29, 29, 35,
997 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
998 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
999 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1000 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1001
1002 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1003 35, 35, 35, 35, 35, 35, 35, 37, 98, 122,
1004 268, 573, 573, 268, 98, 122, 492, 98, 122, 98,
1005 122, 268, 98, 122, 569, 699, 569, 544, 204, 37,
1006 204, 37, 37, 37, 37, 37, 204, 492, 544, 37,
1007 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1008 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1009 37, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1010 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1011 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1012
1013 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1014 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1015 39, 39, 39, 39, 39, 39, 39, 39, 39, 41,
1016 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1017 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1018 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1019 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1020 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1021 41, 41, 41, 41, 41, 41, 41, 45, 45, 45,
1022 45, 721, 45, 45, 339, 721, 45, 45, 532, 698,
1023
1024 45, 510, 45, 45, 625, 438, 339, 45, 45, 45,
1025 45, 45, 45, 46, 46, 46, 46, 339, 46, 46,
1026 404, 510, 46, 46, 438, 404, 46, 625, 46, 46,
1027 696, 404, 532, 46, 46, 46, 46, 46, 46, 47,
1028 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1029 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1030 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1031 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1032 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1033 47, 47, 47, 47, 47, 47, 47, 49, 669, 49,
1034
1035 669, 660, 49, 49, 49, 579, 49, 49, 134, 49,
1036 138, 49, 482, 482, 134, 482, 138, 134, 49, 138,
1037 579, 695, 134, 482, 138, 142, 49, 49, 660, 146,
1038 547, 142, 49, 589, 142, 146, 519, 547, 146, 142,
1039 49, 547, 519, 146, 518, 519, 518, 589, 518, 694,
1040 533, 49, 49, 50, 693, 50, 524, 518, 50, 50,
1041 50, 525, 50, 50, 524, 50, 518, 50, 533, 525,
1042 546, 691, 580, 546, 50, 524, 594, 596, 566, 690,
1043 525, 689, 50, 50, 546, 600, 566, 580, 50, 582,
1044 518, 594, 596, 600, 582, 601, 50, 566, 723, 687,
1045
1046 582, 601, 723, 601, 600, 686, 685, 50, 50, 51,
1047 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1048 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1049 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1050 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1051 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1052 51, 51, 51, 51, 51, 51, 51, 106, 106, 684,
1053 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1054 106, 106, 106, 106, 106, 106, 106, 106, 106, 683,
1055 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1056
1057 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1058 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1059 106, 106, 106, 106, 106, 501, 607, 501, 501, 598,
1060 640, 501, 501, 501, 613, 501, 501, 501, 501, 682,
1061 501, 520, 607, 520, 598, 520, 651, 501, 724, 613,
1062 681, 678, 724, 725, 520, 501, 728, 725, 677, 640,
1063 728, 501, 651, 520, 521, 676, 521, 735, 521, 501,
1064 501, 735, 675, 674, 673, 672, 671, 521, 670, 668,
1065 501, 501, 517, 667, 517, 517, 521, 520, 517, 517,
1066 517, 666, 517, 517, 517, 517, 665, 517, 664, 663,
1067
1068 521, 526, 662, 526, 517, 526, 661, 659, 658, 657,
1069 521, 521, 517, 656, 526, 538, 655, 538, 517, 538,
1070 654, 538, 653, 526, 652, 650, 517, 649, 647, 646,
1071 538, 645, 644, 643, 642, 641, 639, 517, 517, 538,
1072 638, 636, 635, 634, 633, 632, 631, 526, 630, 629,
1073 628, 626, 624, 623, 622, 621, 620, 619, 618, 617,
1074 616, 615, 614, 538, 707, 707, 707, 707, 707, 707,
1075 707, 707, 707, 707, 707, 707, 707, 707, 707, 707,
1076 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
1077 708, 708, 708, 708, 708, 708, 709, 709, 709, 709,
1078
1079 709, 709, 709, 709, 709, 709, 709, 709, 709, 709,
1080 709, 709, 710, 710, 710, 710, 710, 710, 710, 710,
1081 710, 710, 710, 710, 710, 710, 710, 710, 711, 711,
1082 711, 711, 711, 711, 711, 711, 711, 711, 711, 711,
1083 711, 711, 711, 711, 712, 712, 712, 712, 712, 712,
1084 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
1085 713, 713, 713, 713, 713, 713, 713, 713, 713, 713,
1086 713, 713, 713, 713, 713, 713, 714, 714, 714, 714,
1087 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
1088 714, 714, 715, 715, 715, 715, 715, 715, 715, 715,
1089
1090 715, 715, 715, 715, 715, 715, 715, 715, 716, 716,
1091 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
1092 716, 716, 716, 716, 717, 717, 717, 717, 717, 717,
1093 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
1094 720, 612, 720, 611, 720, 609, 608, 606, 720, 722,
1095 605, 722, 604, 722, 722, 603, 602, 722, 726, 599,
1096 726, 597, 726, 726, 595, 593, 726, 726, 727, 592,
1097 727, 591, 727, 727, 590, 588, 727, 727, 730, 730,
1098 587, 586, 730, 730, 731, 585, 731, 731, 731, 731,
1099 731, 731, 731, 731, 731, 731, 584, 731, 731, 731,
1100
1101 732, 583, 732, 732, 581, 578, 577, 732, 576, 575,
1102 574, 732, 732, 733, 733, 572, 571, 733, 734, 570,
1103 734, 734, 568, 565, 734, 564, 563, 562, 561, 560,
1104 734, 736, 736, 736, 736, 736, 736, 736, 736, 736,
1105 736, 736, 736, 736, 558, 736, 736, 737, 737, 737,
1106 737, 557, 556, 737, 737, 737, 737, 737, 737, 737,
1107 737, 737, 737, 738, 738, 738, 738, 554, 553, 738,
1108 738, 738, 738, 738, 738, 738, 738, 738, 738, 739,
1109 739, 739, 739, 552, 551, 739, 739, 739, 739, 739,
1110 739, 739, 739, 739, 739, 740, 740, 740, 740, 550,
1111
1112 549, 740, 740, 740, 740, 740, 740, 740, 740, 740,
1113 740, 741, 741, 741, 741, 545, 543, 741, 542, 741,
1114 741, 741, 741, 741, 741, 741, 741, 742, 541, 742,
1115 742, 742, 742, 742, 742, 742, 742, 742, 742, 742,
1116 742, 742, 742, 743, 540, 743, 539, 743, 537, 743,
1117 743, 743, 743, 536, 535, 743, 744, 534, 531, 530,
1118 744, 744, 745, 529, 745, 528, 745, 523, 516, 515,
1119 514, 512, 509, 508, 506, 505, 503, 502, 499, 497,
1120 496, 495, 494, 493, 491, 490, 489, 488, 487, 485,
1121 484, 483, 481, 480, 479, 478, 477, 476, 475, 474,
1122
1123 473, 471, 470, 469, 468, 467, 466, 461, 459, 455,
1124 453, 448, 447, 445, 444, 443, 442, 441, 440, 439,
1125 437, 436, 435, 434, 433, 432, 431, 428, 425, 422,
1126 420, 419, 417, 415, 414, 412, 411, 410, 409, 408,
1127 407, 406, 403, 402, 400, 399, 398, 397, 396, 395,
1128 394, 393, 391, 390, 389, 387, 386, 385, 384, 381,
1129 380, 379, 376, 375, 374, 371, 370, 369, 366, 365,
1130 364, 361, 360, 359, 358, 357, 354, 353, 350, 348,
1131 347, 346, 345, 344, 341, 338, 337, 336, 335, 332,
1132 331, 330, 329, 328, 327, 326, 324, 322, 321, 319,
1133
1134 318, 317, 316, 315, 314, 313, 312, 311, 310, 309,
1135 308, 307, 306, 305, 304, 303, 302, 301, 300, 299,
1136 298, 297, 296, 295, 294, 293, 292, 291, 290, 287,
1137 286, 285, 284, 283, 281, 280, 279, 278, 277, 276,
1138 275, 274, 273, 272, 271, 270, 269, 267, 266, 263,
1139 262, 261, 260, 259, 257, 256, 254, 253, 252, 251,
1140 250, 248, 247, 246, 245, 243, 242, 241, 240, 239,
1141 237, 236, 235, 234, 233, 231, 230, 229, 228, 227,
1142 225, 224, 223, 222, 221, 219, 218, 217, 216, 215,
1143 212, 210, 209, 208, 207, 206, 203, 202, 200, 199,
1144
1145 197, 196, 195, 193, 191, 186, 185, 184, 183, 182,
1146 181, 176, 175, 173, 172, 171, 170, 169, 168, 166,
1147 165, 162, 161, 158, 157, 156, 155, 152, 151, 150,
1148 149, 148, 145, 141, 137, 133, 129, 126, 119, 118,
1149 117, 113, 111, 108, 105, 95, 89, 87, 86, 82,
1150 76, 75, 71, 70, 63, 2, 1, 706, 706, 706,
1151 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1152 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1153 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1154 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1155
1156 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1157 706, 706, 706, 706, 706, 706
1158 } ;
1159
1160static yy_state_type yy_last_accepting_state;
1161static char *yy_last_accepting_cpos;
1162
1163extern int tagYY_flex_debug;
1164int tagYY_flex_debug = 0;
1165
1166/* The intent behind this definition is that it'll catch
1167 * any uses of REJECT which flex missed.
1168 */
1169#define REJECT reject_used_but_not_detected
1170#define yymore() yymore_used_but_not_detected
1171#define YY_MORE_ADJ 0
1172#define YY_RESTORE_YY_MORE_OFFSET
1173char *tagYYtext;
1174#line 1 "doxytag.l"
1175/******************************************************************************
1176 *
1177 * $Id: doxytag.l,v 1.27 2001/03/19 19:27:40 root Exp $
1178 *
1179 * Copyright (C) 1997-2011 by Dimitri van Heesch.
1180 *
1181 * Permission to use, copy, modify, and distribute this software and its
1182 * documentation under the terms of the GNU General Public License is hereby
1183 * granted. No representations are made about the suitability of this software
1184 * for any purpose. It is provided "as is" without express or implied warranty.
1185 * See the GNU General Public License for more details.
1186 *
1187 * Documents produced by Doxygen are derivative works derived from the
1188 * input used in their production; they are not affected by this license.
1189 *
1190 */
1191#line 19 "doxytag.l"
1192/*
1193 *includes
1194 */
1195#include <stdio.h>
1196#include <assert.h>
1197#include <ctype.h>
1198
1199#include "qtbc.h"
1200#include <qstrlist.h>
1201#include <qfileinfo.h>
1202#include <qfile.h>
1203#include <qdict.h>
1204#include <qtextstream.h>
1205#include <qdir.h>
1206
1207#include "version.h"
1208//#include "suffixtree.h"
1209//#include "searchindex.h"
1210#include "logos.h"
1211
1212static QCString convertToXML(const char *s)
1213{
1214 QCString result;
1215 if (s==0) return result;
1216 const char *p=s;
1217 char c;
1218 while ((c=*p++))
1219 {
1220 switch (c)
1221 {
1222 case '<': result+="&lt;"; break;
1223 case '>': result+="&gt;"; break;
1224 case '&': result+="&amp;"; break;
1225 case '\'': result+="&apos;"; break;
1226 case '"': result+="&quot;"; break;
1227 default: result+=c; break;
1228 }
1229 }
1230 return result;
1231}
1232
1233struct MemberDef
1234{
1235 QCString name;
1236 QCString anchor;
1237 QCString args;
1238};
1239
1240struct ClassDef
1241{
1242 QCString name;
1243 QStrList bases;
1244 QCString fileName;
1245 bool isFile;
1246 QList<MemberDef> memberList;
1247};
1248
1249QList<ClassDef> classList;
1250QDict<ClassDef> classDict(1009);
1251QList<ClassDef> fileList;
1252QDict<ClassDef> fileDict(1009);
1253
1254static bool genTag;
1255static bool genIndex;
1256
1257static QStrList bases;
1258static QCString inputString;
1259static int inputPosition;
1260static QCString yyFileName;
1261static int yyLineNr;
1262static QCString classFile;
1263static QCString memberRef;
1264static QCString memberName;
1265static QCString memberArgs;
1266static QCString className;
1267static QCString baseName;
1268static QCString docBaseLink;
1269static QCString docAnchor;
1270static QCString docRefName;
1271static bool nameBug;
1272//static SearchIndex searchIndex;
1273
1274#define YY_NEVER_INTERACTIVE 1
1275
1276/* -----------------------------------------------------------------
1277 */
1278#undefYY_INPUT
1279#defineYY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
1280
1281static int yyread(char *buf,int max_size)
1282{
1283 int c=0;
1284 while( c < max_size && inputString[inputPosition] )
1285 {
1286*buf = inputString[inputPosition++] ;
1287c++; buf++;
1288 }
1289 return c;
1290}
1291
1292static void addClass(const char *clName)
1293{
1294 if (classDict[clName]==0)
1295 {
1296 //printf("addClass(%s)\n",clName);
1297 ClassDef *cd=new ClassDef;
1298 cd->name=clName;
1299 cd->fileName=yyFileName;
1300 cd->isFile=FALSE;
1301 classList.append(cd);
1302 classDict.insert(clName,cd);
1303 }
1304}
1305
1306static void addFile(const char *fName)
1307{
1308 if (classDict[fName]==0)
1309 {
1310 ClassDef *fd=new ClassDef;
1311 fd->name=fName;
1312 fd->fileName=yyFileName;
1313 fd->isFile=TRUE;
1314 classList.append(fd);
1315 classDict.insert(fName,fd);
1316 }
1317}
1318
1319static void addBases(const char *clName)
1320{
1321 ClassDef *cd=0;
1322 if (clName && (cd=classDict[clName])) cd->bases=bases;
1323}
1324
1325static void addMember(const char *memName,const char *memRef,const char *memArgs)
1326{
1327 //printf("addMember(%s,%s,%s)\n",memName,memRef,memArgs);
1328 ClassDef *cd=classList.last();
1329 if (cd)
1330 {
1331 MemberDef *md;
1332 md=new MemberDef;
1333 md->name=memName;
1334 md->anchor=memRef;
1335 md->args=memArgs;
1336 cd->memberList.append(md);
1337 }
1338 else
1339 {
1340 //printf("Warning: found member %s %s but not class was found to insert it!\n",
1341 //memName,memArgs);
1342 }
1343}
1344
1345static void addReference()
1346{
1347 //printf("addReference() key: %s ref:%s\n",
1348 // docRefName.data(),(docBaseLink+"#"+docAnchor).data());
1349 //if (genIndex && !docRefName.isEmpty() && !docBaseLink.isEmpty())
1350 //{
1351 // if (docAnchor.isEmpty())
1352 // searchIndex.addReference(docRefName,docBaseLink);
1353 // else
1354 // searchIndex.addReference(docRefName,docBaseLink+"#"+docAnchor);
1355 // searchIndex.addWord(docRefName,docRefName,TRUE);
1356 //}
1357}
1358
1359QCString unhtmlify(const char *str)
1360{
1361 QCString result;
1362 const char *p=str;
1363 char c;
1364 while ((c=*p)!='\0')
1365 {
1366 if (c!='&') { result+=c; p++; }
1367 else
1368 {
1369 if (strncmp(p,"&amp;",5)==0) { result+='&'; p+=5; }
1370 else if (strncmp(p,"&lt;",4)==0) { result+='<'; p+=4; }
1371 else if (strncmp(p,"&gt;",4)==0) { result+='>'; p+=4; }
1372 else if (strncmp(p,"&quot;",6)==0) { result+='"'; p+=4; }
1373else /* should not happen */ { result+='&'; p++; }
1374 }
1375 }
1376 return result;
1377}
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409#line 1410 "<stdout>"
1410
1411#define INITIAL 0
1412#define Start 1
1413#define SearchClassFile 2
1414#define ReadClassFile 3
1415#define CheckClassName 4
1416#define ReadClassName 5
1417#define SearchMemberRef 6
1418#define ReadMemberRef 7
1419#define SearchMemberName 8
1420#define ReadMemberName 9
1421#define ReadOperator 10
1422#define SearchBaseClasses 11
1423#define ReadBaseClass 12
1424#define SearchRefName 13
1425#define ReadRefName 14
1426#define SearchArgs 15
1427#define ReadArgs 16
1428#define SearchWords 17
1429#define SkipHTMLTag 18
1430#define CheckConstructor 19
1431#define SkipPreformated 20
1432#define Qt3ReadType 21
1433#define Qt3ReadAnchor 22
1434#define Qt3ReadName 23
1435#define Qt3ReadOperator 24
1436#define Qt3ReadArgs 25
1437#define DoxReadAnchor 26
1438#define DoxReadName 27
1439#define DoxReadArgs 28
1440#define DoxClassName 29
1441#define DoxClassBase 30
1442
1443#ifndef YY_NO_UNISTD_H
1444/* Special case for "unistd.h", since it is non-ANSI. We include it way
1445 * down here because we want the user's section 1 to have been scanned first.
1446 * The user has a chance to override it with an option.
1447 */
1448#include <unistd.h>
1449#endif
1450
1451#ifndef YY_EXTRA_TYPE
1452#define YY_EXTRA_TYPE void *
1453#endif
1454
1455static int yy_init_globals (void );
1456
1457/* Accessor methods to globals.
1458 These are made visible to non-reentrant scanners for convenience. */
1459
1460int tagYYlex_destroy (void );
1461
1462int tagYYget_debug (void );
1463
1464void tagYYset_debug (int debug_flag );
1465
1466YY_EXTRA_TYPE tagYYget_extra (void );
1467
1468void tagYYset_extra (YY_EXTRA_TYPE user_defined );
1469
1470FILE *tagYYget_in (void );
1471
1472void tagYYset_in (FILE * in_str );
1473
1474FILE *tagYYget_out (void );
1475
1476void tagYYset_out (FILE * out_str );
1477
1478yy_size_t tagYYget_leng (void );
1479
1480char *tagYYget_text (void );
1481
1482int tagYYget_lineno (void );
1483
1484void tagYYset_lineno (int line_number );
1485
1486/* Macros after this point can all be overridden by user definitions in
1487 * section 1.
1488 */
1489
1490#ifndef YY_SKIP_YYWRAP
1491#ifdef __cplusplus
1492extern "C" int tagYYwrap (void );
1493#else
1494extern int tagYYwrap (void );
1495#endif
1496#endif
1497
1498 static void yyunput (int c,char *buf_ptr );
1499
1500#ifndef yytext_ptr
1501static void yy_flex_strncpy (char *,yyconst char *,int );
1502#endif
1503
1504#ifdef YY_NEED_STRLEN
1505static int yy_flex_strlen (yyconst char * );
1506#endif
1507
1508#ifndef YY_NO_INPUT
1509
1510#ifdef __cplusplus
1511static int yyinput (void );
1512#else
1513static int input (void );
1514#endif
1515
1516#endif
1517
1518/* Amount of stuff to slurp up with each read. */
1519#ifndef YY_READ_BUF_SIZE
1520#define YY_READ_BUF_SIZE 8192
1521#endif
1522
1523/* Copy whatever the last rule matched to the standard output. */
1524#ifndef ECHO
1525/* This used to be an fputs(), but since the string might contain NUL's,
1526 * we now use fwrite().
1527 */
1528#define ECHO fwrite( tagYYtext, tagYYleng, 1, tagYYout )
1529#endif
1530
1531/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1532 * is returned in "result".
1533 */
1534#ifndef YY_INPUT
1535#define YY_INPUT(buf,result,max_size) \
1536if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1537{ \
1538int c = '*'; \
1539yy_size_t n; \
1540for ( n = 0; n < max_size && \
1541 (c = getc( tagYYin )) != EOF && c != '\n'; ++n ) \
1542buf[n] = (char) c; \
1543if ( c == '\n' ) \
1544buf[n++] = (char) c; \
1545if ( c == EOF && ferror( tagYYin ) ) \
1546YY_FATAL_ERROR( "input in flex scanner failed" ); \
1547result = n; \
1548} \
1549else \
1550{ \
1551errno=0; \
1552while ( (result = fread(buf, 1, max_size, tagYYin))==0 && ferror(tagYYin)) \
1553{ \
1554if( errno != EINTR) \
1555{ \
1556YY_FATAL_ERROR( "input in flex scanner failed" ); \
1557break; \
1558} \
1559errno=0; \
1560clearerr(tagYYin); \
1561} \
1562}\
1563\
1564
1565#endif
1566
1567/* No semi-colon after return; correct usage is to write "yyterminate();" -
1568 * we don't want an extra ';' after the "return" because that will cause
1569 * some compilers to complain about unreachable statements.
1570 */
1571#ifndef yyterminate
1572#define yyterminate() return YY_NULL
1573#endif
1574
1575/* Number of entries by which start-condition stack grows. */
1576#ifndef YY_START_STACK_INCR
1577#define YY_START_STACK_INCR 25
1578#endif
1579
1580/* Report a fatal error. */
1581#ifndef YY_FATAL_ERROR
1582#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1583#endif
1584
1585/* end tables serialization structures and prototypes */
1586
1587/* Default declaration of generated scanner - a define so the user can
1588 * easily add parameters.
1589 */
1590#ifndef YY_DECL
1591#define YY_DECL_IS_OURS 1
1592
1593extern int tagYYlex (void);
1594
1595#define YY_DECL int tagYYlex (void)
1596#endif /* !YY_DECL */
1597
1598/* Code executed at the beginning of each rule, after tagYYtext and tagYYleng
1599 * have been set up.
1600 */
1601#ifndef YY_USER_ACTION
1602#define YY_USER_ACTION
1603#endif
1604
1605/* Code executed at the end of each rule. */
1606#ifndef YY_BREAK
1607#define YY_BREAK break;
1608#endif
1609
1610#define YY_RULE_SETUP \
1611if ( tagYYleng > 0 ) \
1612YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1613(tagYYtext[tagYYleng - 1] == '\n'); \
1614YY_USER_ACTION
1615
1616/** The main scanner function which does all the work.
1617 */
1618YY_DECL
1619{
1620register yy_state_type yy_current_state;
1621register char *yy_cp, *yy_bp;
1622register int yy_act;
1623
1624#line 241 "doxytag.l"
1625
1626
1627#line 1628 "<stdout>"
1628
1629if ( !(yy_init) )
1630{
1631(yy_init) = 1;
1632
1633#ifdef YY_USER_INIT
1634YY_USER_INIT;
1635#endif
1636
1637if ( ! (yy_start) )
1638(yy_start) = 1;/* first start state */
1639
1640if ( ! tagYYin )
1641tagYYin = stdin;
1642
1643if ( ! tagYYout )
1644tagYYout = stdout;
1645
1646if ( ! YY_CURRENT_BUFFER ) {
1647tagYYensure_buffer_stack ();
1648YY_CURRENT_BUFFER_LVALUE =
1649tagYY_create_buffer(tagYYin,YY_BUF_SIZE );
1650}
1651
1652tagYY_load_buffer_state( );
1653}
1654
1655while ( 1 )/* loops until end-of-file is reached */
1656{
1657yy_cp = (yy_c_buf_p);
1658
1659/* Support of tagYYtext. */
1660*yy_cp = (yy_hold_char);
1661
1662/* yy_bp points to the position in yy_ch_buf of the start of
1663 * the current run.
1664 */
1665yy_bp = yy_cp;
1666
1667yy_current_state = (yy_start);
1668yy_current_state += YY_AT_BOL();
1669yy_match:
1670do
1671{
1672register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1673if ( yy_accept[yy_current_state] )
1674{
1675(yy_last_accepting_state) = yy_current_state;
1676(yy_last_accepting_cpos) = yy_cp;
1677}
1678while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1679{
1680yy_current_state = (int) yy_def[yy_current_state];
1681if ( yy_current_state >= 707 )
1682yy_c = yy_meta[(unsigned int) yy_c];
1683}
1684yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1685++yy_cp;
1686}
1687while ( yy_base[yy_current_state] != 2058 );
1688
1689yy_find_action:
1690yy_act = yy_accept[yy_current_state];
1691if ( yy_act == 0 )
1692{ /* have to back up */
1693yy_cp = (yy_last_accepting_cpos);
1694yy_current_state = (yy_last_accepting_state);
1695yy_act = yy_accept[yy_current_state];
1696}
1697
1698YY_DO_BEFORE_ACTION;
1699
1700do_action:/* This label is used only to access EOF actions. */
1701
1702switch ( yy_act )
1703{ /* beginning of action switch */
1704case 0: /* must back up */
1705/* undo the effects of YY_DO_BEFORE_ACTION */
1706*yy_cp = (yy_hold_char);
1707yy_cp = (yy_last_accepting_cpos);
1708yy_current_state = (yy_last_accepting_state);
1709goto yy_find_action;
1710
1711case 1:
1712YY_RULE_SETUP
1713#line 243 "doxytag.l"
1714{
1715 BEGIN( SearchClassFile );
1716 }
1717YY_BREAK
1718case 2:
1719#line 247 "doxytag.l"
1720case 3:
1721#line 248 "doxytag.l"
1722case 4:
1723#line 249 "doxytag.l"
1724case 5:
1725YY_RULE_SETUP
1726#line 249 "doxytag.l"
1727{ // Qt variant
1728 BEGIN( ReadClassName );
1729 }
1730YY_BREAK
1731case 6:
1732YY_RULE_SETUP
1733#line 252 "doxytag.l"
1734{ // Doxygen variant
1735 BEGIN( ReadClassName );
1736 }
1737YY_BREAK
1738case 7:
1739YY_RULE_SETUP
1740#line 255 "doxytag.l"
1741{
1742 //printf("Inherits found\n");
1743 BEGIN( SearchBaseClasses );
1744 }
1745YY_BREAK
1746case 8:
1747*yy_cp = (yy_hold_char); /* undo effects of setting up tagYYtext */
1748(yy_c_buf_p) = yy_cp = yy_bp + 15;
1749YY_DO_BEFORE_ACTION; /* set up tagYYtext again */
1750YY_RULE_SETUP
1751#line 259 "doxytag.l"
1752{ // needed due to inconsistency in the Qt docs
1753 BEGIN( CheckConstructor );
1754 }
1755YY_BREAK
1756/* --------------------------------------------------- */
1757/* Qt member extraction rules */
1758case 9:
1759YY_RULE_SETUP
1760#line 266 "doxytag.l"
1761{
1762 BEGIN( Qt3ReadType );
1763 }
1764YY_BREAK
1765case 10:
1766YY_RULE_SETUP
1767#line 269 "doxytag.l"
1768{ // Qt-3.3+ html file
1769 BEGIN( Qt3ReadAnchor );
1770 }
1771YY_BREAK
1772case 11:
1773YY_RULE_SETUP
1774#line 272 "doxytag.l"
1775{ // Qt-4 html file
1776 BEGIN( Qt3ReadAnchor );
1777 }
1778YY_BREAK
1779case 12:
1780YY_RULE_SETUP
1781#line 275 "doxytag.l"
1782{
1783 BEGIN( Qt3ReadAnchor );
1784 }
1785YY_BREAK
1786case 13:
1787YY_RULE_SETUP
1788#line 278 "doxytag.l"
1789
1790YY_BREAK
1791case 14:
1792YY_RULE_SETUP
1793#line 279 "doxytag.l"
1794{
1795 memberRef = tagYYtext;
1796 }
1797YY_BREAK
1798case 15:
1799YY_RULE_SETUP
1800#line 282 "doxytag.l"
1801{
1802 BEGIN( Qt3ReadName );
1803 }
1804YY_BREAK
1805case 16:
1806YY_RULE_SETUP
1807#line 285 "doxytag.l"
1808{
1809 BEGIN( Start );
1810 }
1811YY_BREAK
1812case 17:
1813YY_RULE_SETUP
1814#line 288 "doxytag.l"
1815{
1816 memberName="operator";
1817 BEGIN(Qt3ReadOperator);
1818 }
1819YY_BREAK
1820case 18:
1821YY_RULE_SETUP
1822#line 292 "doxytag.l"
1823{ memberName+=tagYYtext; }
1824YY_BREAK
1825case 19:
1826YY_RULE_SETUP
1827#line 293 "doxytag.l"
1828{ memberName+="<"; }
1829YY_BREAK
1830case 20:
1831YY_RULE_SETUP
1832#line 294 "doxytag.l"
1833{ memberName+=">"; }
1834YY_BREAK
1835case 21:
1836YY_RULE_SETUP
1837#line 295 "doxytag.l"
1838{ memberName+=" new"; }
1839YY_BREAK
1840case 22:
1841YY_RULE_SETUP
1842#line 296 "doxytag.l"
1843{ memberName+=" delete"; }
1844YY_BREAK
1845case 23:
1846YY_RULE_SETUP
1847#line 297 "doxytag.l"
1848{ memberName+="()"; BEGIN( Qt3ReadArgs ); }
1849YY_BREAK
1850case 24:
1851YY_RULE_SETUP
1852#line 298 "doxytag.l"
1853{ unput(*tagYYtext); BEGIN( Qt3ReadArgs ); }
1854YY_BREAK
1855case 25:
1856YY_RULE_SETUP
1857#line 299 "doxytag.l"
1858{
1859 memberName=tagYYtext;
1860 memberName=memberName.mid(memberName.find("::")+2);
1861 BEGIN(Qt3ReadArgs);
1862 }
1863YY_BREAK
1864case 26:
1865YY_RULE_SETUP
1866#line 304 "doxytag.l"
1867
1868YY_BREAK
1869case 27:
1870YY_RULE_SETUP
1871#line 305 "doxytag.l"
1872{
1873 memberArgs+='(';
1874 }
1875YY_BREAK
1876case 28:
1877YY_RULE_SETUP
1878#line 308 "doxytag.l"
1879{ memberArgs+='&'; }
1880YY_BREAK
1881case 29:
1882YY_RULE_SETUP
1883#line 309 "doxytag.l"
1884{ memberArgs+='<'; }
1885YY_BREAK
1886case 30:
1887YY_RULE_SETUP
1888#line 310 "doxytag.l"
1889{ memberArgs+='>'; }
1890YY_BREAK
1891case 31:
1892YY_RULE_SETUP
1893#line 311 "doxytag.l"
1894{ memberArgs+='"'; }
1895YY_BREAK
1896case 32:
1897YY_RULE_SETUP
1898#line 312 "doxytag.l"
1899{ memberArgs+=' '; }
1900YY_BREAK
1901case 33:
1902YY_RULE_SETUP
1903#line 313 "doxytag.l"
1904{
1905 addMember(memberName,memberRef,memberArgs);
1906 memberName.resize(0);
1907 memberRef.resize(0);
1908 memberArgs.resize(0);
1909 BEGIN(Start);
1910 }
1911YY_BREAK
1912case 34:
1913/* rule 34 can match eol */
1914YY_RULE_SETUP
1915#line 320 "doxytag.l"
1916
1917YY_BREAK
1918case 35:
1919YY_RULE_SETUP
1920#line 321 "doxytag.l"
1921{
1922 memberArgs+=')';
1923 addMember(memberName,memberRef,memberArgs);
1924 memberName.resize(0);
1925 memberRef.resize(0);
1926 memberArgs.resize(0);
1927 BEGIN(Start);
1928 }
1929YY_BREAK
1930case 36:
1931YY_RULE_SETUP
1932#line 329 "doxytag.l"
1933{ memberArgs+=tagYYtext; }
1934YY_BREAK
1935case 37:
1936YY_RULE_SETUP
1937#line 330 "doxytag.l"
1938{ memberArgs+=*tagYYtext; }
1939YY_BREAK
1940/* --------------------------------------------------- */
1941/* Doxygen class extraction rules */
1942case 38:
1943YY_RULE_SETUP
1944#line 335 "doxytag.l"
1945{
1946 className.resize(0);
1947 BEGIN(DoxClassName);
1948 }
1949YY_BREAK
1950case 39:
1951/* rule 39 can match eol */
1952YY_RULE_SETUP
1953#line 339 "doxytag.l"
1954{
1955 className=tagYYtext;
1956 addClass(className);
1957 }
1958YY_BREAK
1959case 40:
1960YY_RULE_SETUP
1961#line 343 "doxytag.l"
1962{
1963 className+='<';
1964 }
1965YY_BREAK
1966case 41:
1967YY_RULE_SETUP
1968#line 346 "doxytag.l"
1969{
1970 className+='>';
1971 }
1972YY_BREAK
1973case 42:
1974YY_RULE_SETUP
1975#line 349 "doxytag.l"
1976{
1977 className+='&';
1978 }
1979YY_BREAK
1980case 43:
1981YY_RULE_SETUP
1982#line 352 "doxytag.l"
1983{
1984 className+='"';
1985 }
1986YY_BREAK
1987case 44:
1988YY_RULE_SETUP
1989#line 355 "doxytag.l"
1990{
1991 className+=*tagYYtext;
1992 }
1993YY_BREAK
1994case 45:
1995YY_RULE_SETUP
1996#line 358 "doxytag.l"
1997{
1998 BEGIN(Start);
1999 }
2000YY_BREAK
2001/* --------------------------------------------------- */
2002/* Doxygen inheritance extraction rules */
2003case 46:
2004YY_RULE_SETUP
2005#line 365 "doxytag.l"
2006{
2007 bases.clear();
2008 baseName.resize(0);
2009 BEGIN(DoxClassBase);
2010 }
2011YY_BREAK
2012case 47:
2013/* rule 47 can match eol */
2014YY_RULE_SETUP
2015#line 370 "doxytag.l"
2016{
2017 baseName+=tagYYtext;
2018 }
2019YY_BREAK
2020case 48:
2021YY_RULE_SETUP
2022#line 373 "doxytag.l"
2023{
2024 bases.append(baseName);
2025 baseName.resize(0);
2026 }
2027YY_BREAK
2028case 49:
2029YY_RULE_SETUP
2030#line 377 "doxytag.l"
2031{
2032 baseName+='<';
2033 }
2034YY_BREAK
2035case 50:
2036YY_RULE_SETUP
2037#line 380 "doxytag.l"
2038{
2039 baseName+='>';
2040 }
2041YY_BREAK
2042case 51:
2043YY_RULE_SETUP
2044#line 383 "doxytag.l"
2045{
2046 baseName+='&';
2047 }
2048YY_BREAK
2049case 52:
2050YY_RULE_SETUP
2051#line 386 "doxytag.l"
2052{
2053 baseName+='"';
2054 }
2055YY_BREAK
2056case 53:
2057YY_RULE_SETUP
2058#line 389 "doxytag.l"
2059{
2060 baseName+=*tagYYtext;
2061 }
2062YY_BREAK
2063case 54:
2064YY_RULE_SETUP
2065#line 392 "doxytag.l"
2066{
2067 bases.append(baseName);
2068 baseName.resize(0);
2069 addBases(className);
2070 BEGIN(Start);
2071 }
2072YY_BREAK
2073/* --------------------------------------------------- */
2074/* Doxygen member extraction rules */
2075case 55:
2076YY_RULE_SETUP
2077#line 402 "doxytag.l"
2078{
2079 memberName.resize(0);
2080 BEGIN(DoxReadName);
2081 }
2082YY_BREAK
2083case 56:
2084/* rule 56 can match eol */
2085YY_RULE_SETUP
2086#line 406 "doxytag.l"
2087{
2088 memberName+=tagYYtext;
2089 }
2090YY_BREAK
2091case 57:
2092YY_RULE_SETUP
2093#line 409 "doxytag.l"
2094{
2095 memberName+='<';
2096 }
2097YY_BREAK
2098case 58:
2099YY_RULE_SETUP
2100#line 412 "doxytag.l"
2101{
2102 memberName+='>';
2103 }
2104YY_BREAK
2105case 59:
2106YY_RULE_SETUP
2107#line 415 "doxytag.l"
2108{
2109 memberName+='&';
2110 }
2111YY_BREAK
2112case 60:
2113YY_RULE_SETUP
2114#line 418 "doxytag.l"
2115{
2116 memberName+='"';
2117 }
2118YY_BREAK
2119case 61:
2120YY_RULE_SETUP
2121#line 421 "doxytag.l"
2122{
2123 memberName+=*tagYYtext;
2124 }
2125YY_BREAK
2126case 62:
2127YY_RULE_SETUP
2128#line 424 "doxytag.l"
2129{
2130 memberName=memberName.mid(memberName.find("::")+2);
2131 memberRef.resize(0);
2132 BEGIN(DoxReadAnchor);
2133 }
2134YY_BREAK
2135case 63:
2136/* rule 63 can match eol */
2137YY_RULE_SETUP
2138#line 429 "doxytag.l"
2139{
2140 memberRef+=tagYYtext;
2141 }
2142YY_BREAK
2143case 64:
2144YY_RULE_SETUP
2145#line 432 "doxytag.l"
2146{
2147 memberRef+='<';
2148 }
2149YY_BREAK
2150case 65:
2151YY_RULE_SETUP
2152#line 435 "doxytag.l"
2153{
2154 memberRef+='>';
2155 }
2156YY_BREAK
2157case 66:
2158YY_RULE_SETUP
2159#line 438 "doxytag.l"
2160{
2161 memberRef+='&';
2162 }
2163YY_BREAK
2164case 67:
2165YY_RULE_SETUP
2166#line 441 "doxytag.l"
2167{
2168 memberRef+='"';
2169 }
2170YY_BREAK
2171case 68:
2172YY_RULE_SETUP
2173#line 444 "doxytag.l"
2174{
2175 memberRef+=*tagYYtext;
2176 }
2177YY_BREAK
2178case 69:
2179YY_RULE_SETUP
2180#line 447 "doxytag.l"
2181{
2182 memberArgs.resize(0);
2183 BEGIN(DoxReadArgs);
2184 }
2185YY_BREAK
2186case 70:
2187/* rule 70 can match eol */
2188YY_RULE_SETUP
2189#line 451 "doxytag.l"
2190{
2191 memberArgs+=tagYYtext;
2192 }
2193YY_BREAK
2194case 71:
2195YY_RULE_SETUP
2196#line 454 "doxytag.l"
2197{
2198 memberArgs+='<';
2199 }
2200YY_BREAK
2201case 72:
2202YY_RULE_SETUP
2203#line 457 "doxytag.l"
2204{
2205 memberArgs+='>';
2206 }
2207YY_BREAK
2208case 73:
2209YY_RULE_SETUP
2210#line 460 "doxytag.l"
2211{
2212 memberArgs+='&';
2213 }
2214YY_BREAK
2215case 74:
2216YY_RULE_SETUP
2217#line 463 "doxytag.l"
2218{
2219 memberArgs+='"';
2220 }
2221YY_BREAK
2222case 75:
2223YY_RULE_SETUP
2224#line 466 "doxytag.l"
2225{
2226 memberArgs+=*tagYYtext;
2227 }
2228YY_BREAK
2229case 76:
2230YY_RULE_SETUP
2231#line 469 "doxytag.l"
2232{
2233 addMember(memberName,memberRef,memberArgs);
2234 memberName.resize(0);
2235 memberRef.resize(0);
2236 memberArgs.resize(0);
2237 BEGIN(Start);
2238 }
2239YY_BREAK
2240/** --------------------------------------------------- */
2241case 77:
2242YY_RULE_SETUP
2243#line 479 "doxytag.l"
2244{
2245 BEGIN( SkipPreformated );
2246 }
2247YY_BREAK
2248case 78:
2249YY_RULE_SETUP
2250#line 482 "doxytag.l"
2251{
2252 BEGIN( SearchWords );
2253 }
2254YY_BREAK
2255case 79:
2256YY_RULE_SETUP
2257#line 485 "doxytag.l"
2258{
2259 BEGIN( SkipHTMLTag );
2260 }
2261YY_BREAK
2262case 80:
2263YY_RULE_SETUP
2264#line 488 "doxytag.l"
2265
2266YY_BREAK
2267case 81:
2268YY_RULE_SETUP
2269#line 489 "doxytag.l"
2270{
2271 //printf("tag: %s#%s ref: %s word: `%s'\n",
2272 // docBaseLink.data(),docAnchor.data(),
2273 // docRefName.data(),tagYYtext);
2274 //if (genIndex && !docRefName.isEmpty() && tagYYleng>2)
2275 // searchIndex.addWord(docRefName,
2276 // tagYYtext,FALSE
2277 // );
2278 }
2279YY_BREAK
2280case 82:
2281YY_RULE_SETUP
2282#line 498 "doxytag.l"
2283{
2284 BEGIN( Start );
2285 }
2286YY_BREAK
2287case 83:
2288YY_RULE_SETUP
2289#line 501 "doxytag.l"
2290
2291YY_BREAK
2292case 84:
2293YY_RULE_SETUP
2294#line 502 "doxytag.l"
2295{
2296 QCString s=tagYYtext;
2297 if (s.find("::")!=-1)
2298 {
2299 docRefName=tagYYtext;
2300 addReference();
2301 nameBug=TRUE;
2302 }
2303 else
2304 {
2305 nameBug=FALSE;
2306 }
2307 BEGIN( Start );
2308 }
2309YY_BREAK
2310case 85:
2311YY_RULE_SETUP
2312#line 516 "doxytag.l"
2313{
2314 docAnchor = tagYYtext;
2315 if (docAnchor=="details" ||
2316 docAnchor=="_details")
2317 {
2318 docRefName=className.copy();
2319 addReference();
2320 BEGIN( Start );
2321 }
2322 else
2323 {
2324 BEGIN( SearchRefName );
2325 }
2326 }
2327YY_BREAK
2328case 86:
2329YY_RULE_SETUP
2330#line 530 "doxytag.l"
2331{
2332 BEGIN( ReadRefName );
2333 }
2334YY_BREAK
2335case 87:
2336YY_RULE_SETUP
2337#line 533 "doxytag.l"
2338{ // HACK: avoid finding links in code fragments
2339 BEGIN( Start );
2340 }
2341YY_BREAK
2342case 88:
2343YY_RULE_SETUP
2344#line 536 "doxytag.l"
2345{ // HACK: deal with Qt code
2346 if (nameBug)
2347 BEGIN( Start );
2348 else
2349 BEGIN( ReadRefName );
2350 }
2351YY_BREAK
2352case 89:
2353YY_RULE_SETUP
2354#line 543 "doxytag.l"
2355{ // hmm, looks impressive :-)
2356 docRefName=unhtmlify(tagYYtext);
2357 addReference();
2358 BEGIN( Start );
2359 }
2360YY_BREAK
2361case 90:
2362YY_RULE_SETUP
2363#line 548 "doxytag.l"
2364{
2365 //printf("ReadRef=%s\n",tagYYtext);
2366 docRefName=tagYYtext;
2367 addReference();
2368 BEGIN( Start );
2369 }
2370YY_BREAK
2371case 91:
2372YY_RULE_SETUP
2373#line 554 "doxytag.l"
2374{
2375 //printf("Search %s\n",tagYYtext);
2376 BEGIN( ReadBaseClass );
2377 }
2378YY_BREAK
2379case 92:
2380/* rule 92 can match eol */
2381YY_RULE_SETUP
2382#line 558 "doxytag.l"
2383{
2384 addBases(className);
2385 BEGIN( Start );
2386 }
2387YY_BREAK
2388case 93:
2389YY_RULE_SETUP
2390#line 562 "doxytag.l"
2391{
2392 bases.append(tagYYtext);
2393 BEGIN( SearchBaseClasses );
2394 }
2395YY_BREAK
2396case 94:
2397YY_RULE_SETUP
2398#line 566 "doxytag.l"
2399{
2400 BEGIN( ReadClassFile );
2401 }
2402YY_BREAK
2403case 95:
2404YY_RULE_SETUP
2405#line 569 "doxytag.l"
2406{
2407 BEGIN( ReadClassFile );
2408 }
2409YY_BREAK
2410case 96:
2411YY_RULE_SETUP
2412#line 572 "doxytag.l"
2413{
2414 className=tagYYtext;
2415 BEGIN( CheckClassName);
2416 }
2417YY_BREAK
2418case 97:
2419YY_RULE_SETUP
2420#line 576 "doxytag.l"
2421{
2422 //printf("className=%s\n",className.data());
2423 addClass(className);
2424 BEGIN( Start );
2425 }
2426YY_BREAK
2427case 98:
2428YY_RULE_SETUP
2429#line 581 "doxytag.l"
2430{
2431 //printf("className=%s\n",className.data());
2432 addFile(className);
2433 BEGIN( Start );
2434 }
2435YY_BREAK
2436case 99:
2437YY_RULE_SETUP
2438#line 586 "doxytag.l"
2439{ // not a class file
2440 className.resize(0);
2441 BEGIN( Start );
2442 }
2443YY_BREAK
2444case 100:
2445YY_RULE_SETUP
2446#line 590 "doxytag.l"
2447{
2448 classFile=tagYYtext;
2449 BEGIN( SearchMemberRef );
2450 }
2451YY_BREAK
2452case 101:
2453YY_RULE_SETUP
2454#line 594 "doxytag.l"
2455{
2456 if (YY_START==ReadClassFile)
2457 {
2458 classFile=yyFileName;
2459 }
2460 //BEGIN( ReadMemberRef );
2461 BEGIN( Start );
2462 }
2463YY_BREAK
2464case 102:
2465YY_RULE_SETUP
2466#line 602 "doxytag.l"
2467{
2468 memberRef=tagYYtext;
2469 BEGIN( SearchMemberName );
2470 }
2471YY_BREAK
2472case 103:
2473YY_RULE_SETUP
2474#line 606 "doxytag.l"
2475{ // <strong> is for qt-1.44, <b> is for qt-2.00
2476 BEGIN( ReadMemberName );
2477 }
2478YY_BREAK
2479case 104:
2480YY_RULE_SETUP
2481#line 609 "doxytag.l"
2482{
2483 unput(*tagYYtext);
2484 BEGIN( ReadMemberName );
2485 }
2486YY_BREAK
2487case 105:
2488YY_RULE_SETUP
2489#line 613 "doxytag.l"
2490{
2491 memberName="operator";
2492 BEGIN( ReadOperator );
2493 }
2494YY_BREAK
2495case 106:
2496YY_RULE_SETUP
2497#line 617 "doxytag.l"
2498{ memberName+=*tagYYtext; }
2499YY_BREAK
2500case 107:
2501YY_RULE_SETUP
2502#line 618 "doxytag.l"
2503{ memberName+="<"; }
2504YY_BREAK
2505case 108:
2506YY_RULE_SETUP
2507#line 619 "doxytag.l"
2508{ memberName+=">"; }
2509YY_BREAK
2510case 109:
2511YY_RULE_SETUP
2512#line 620 "doxytag.l"
2513{ memberName+=" new"; }
2514YY_BREAK
2515case 110:
2516YY_RULE_SETUP
2517#line 621 "doxytag.l"
2518{ memberName+=" delete"; }
2519YY_BREAK
2520case 111:
2521YY_RULE_SETUP
2522#line 622 "doxytag.l"
2523{ BEGIN( SearchArgs ); }
2524YY_BREAK
2525case 112:
2526YY_RULE_SETUP
2527#line 623 "doxytag.l"
2528{
2529 memberName=tagYYtext;
2530 BEGIN( SearchArgs );
2531 }
2532YY_BREAK
2533case 113:
2534YY_RULE_SETUP
2535#line 627 "doxytag.l"
2536{
2537 //printf("SearchArg className=%s memberName=%s\n",className.data(),memberName.data());
2538 if (!className.isEmpty() && !memberName.isEmpty())
2539 BEGIN( ReadArgs );
2540 else
2541 BEGIN( Start );
2542 }
2543YY_BREAK
2544case 114:
2545YY_RULE_SETUP
2546#line 634 "doxytag.l"
2547{ memberArgs+='&'; }
2548YY_BREAK
2549case 115:
2550YY_RULE_SETUP
2551#line 635 "doxytag.l"
2552{ memberArgs+='<'; }
2553YY_BREAK
2554case 116:
2555YY_RULE_SETUP
2556#line 636 "doxytag.l"
2557{ memberArgs+='>'; }
2558YY_BREAK
2559case 117:
2560YY_RULE_SETUP
2561#line 637 "doxytag.l"
2562{ memberArgs+='"'; }
2563YY_BREAK
2564case 118:
2565YY_RULE_SETUP
2566#line 638 "doxytag.l"
2567{ memberArgs+=' '; }
2568YY_BREAK
2569/*
2570<ReadArgs>[{}] { // handle enums
2571 memberArgs.resize(0);
2572 addMember(memberName,memberRef,memberArgs);
2573 if (*tagYYtext=='}')
2574 BEGIN( Start );
2575 else
2576 BEGIN( SearchClassFile );
2577 }
2578 */
2579case 119:
2580/* rule 119 can match eol */
2581YY_RULE_SETUP
2582#line 649 "doxytag.l"
2583{
2584 //printf("adding member %s\n",memberName.data());
2585 memberArgs=memberArgs.stripWhiteSpace();
2586 //if (newClass)
2587 //{
2588 // newClass=FALSE;
2589 // addClass(className);
2590 //}
2591 addMember(memberName,memberRef,memberArgs);
2592 memberName.resize(0);
2593 memberRef.resize(0);
2594 memberArgs.resize(0);
2595 if (*tagYYtext=='<')
2596 BEGIN( SkipHTMLTag);
2597 else
2598 BEGIN( Start );
2599 }
2600YY_BREAK
2601case 120:
2602YY_RULE_SETUP
2603#line 666 "doxytag.l"
2604{ memberArgs+=(*tagYYtext)&0x7f; }
2605YY_BREAK
2606case 121:
2607YY_RULE_SETUP
2608#line 667 "doxytag.l"
2609{ BEGIN( Start ); }
2610YY_BREAK
2611case 122:
2612YY_RULE_SETUP
2613#line 668 "doxytag.l"
2614
2615YY_BREAK
2616case 123:
2617YY_RULE_SETUP
2618#line 669 "doxytag.l"
2619
2620YY_BREAK
2621case 124:
2622/* rule 124 can match eol */
2623YY_RULE_SETUP
2624#line 670 "doxytag.l"
2625{ yyLineNr++;
2626 if (YY_START!=SkipHTMLTag) BEGIN( Start );
2627 }
2628YY_BREAK
2629case 125:
2630YY_RULE_SETUP
2631#line 674 "doxytag.l"
2632ECHO;
2633YY_BREAK
2634#line 2635 "<stdout>"
2635case YY_STATE_EOF(INITIAL):
2636case YY_STATE_EOF(Start):
2637case YY_STATE_EOF(SearchClassFile):
2638case YY_STATE_EOF(ReadClassFile):
2639case YY_STATE_EOF(CheckClassName):
2640case YY_STATE_EOF(ReadClassName):
2641case YY_STATE_EOF(SearchMemberRef):
2642case YY_STATE_EOF(ReadMemberRef):
2643case YY_STATE_EOF(SearchMemberName):
2644case YY_STATE_EOF(ReadMemberName):
2645case YY_STATE_EOF(ReadOperator):
2646case YY_STATE_EOF(SearchBaseClasses):
2647case YY_STATE_EOF(ReadBaseClass):
2648case YY_STATE_EOF(SearchRefName):
2649case YY_STATE_EOF(ReadRefName):
2650case YY_STATE_EOF(SearchArgs):
2651case YY_STATE_EOF(ReadArgs):
2652case YY_STATE_EOF(SearchWords):
2653case YY_STATE_EOF(SkipHTMLTag):
2654case YY_STATE_EOF(CheckConstructor):
2655case YY_STATE_EOF(SkipPreformated):
2656case YY_STATE_EOF(Qt3ReadType):
2657case YY_STATE_EOF(Qt3ReadAnchor):
2658case YY_STATE_EOF(Qt3ReadName):
2659case YY_STATE_EOF(Qt3ReadOperator):
2660case YY_STATE_EOF(Qt3ReadArgs):
2661case YY_STATE_EOF(DoxReadAnchor):
2662case YY_STATE_EOF(DoxReadName):
2663case YY_STATE_EOF(DoxReadArgs):
2664case YY_STATE_EOF(DoxClassName):
2665case YY_STATE_EOF(DoxClassBase):
2666yyterminate();
2667
2668case YY_END_OF_BUFFER:
2669{
2670/* Amount of text matched not including the EOB char. */
2671int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2672
2673/* Undo the effects of YY_DO_BEFORE_ACTION. */
2674*yy_cp = (yy_hold_char);
2675YY_RESTORE_YY_MORE_OFFSET
2676
2677if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2678{
2679/* We're scanning a new file or input source. It's
2680 * possible that this happened because the user
2681 * just pointed tagYYin at a new source and called
2682 * tagYYlex(). If so, then we have to assure
2683 * consistency between YY_CURRENT_BUFFER and our
2684 * globals. Here is the right place to do so, because
2685 * this is the first action (other than possibly a
2686 * back-up) that will match for the new input source.
2687 */
2688(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2689YY_CURRENT_BUFFER_LVALUE->yy_input_file = tagYYin;
2690YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2691}
2692
2693/* Note that here we test for yy_c_buf_p "<=" to the position
2694 * of the first EOB in the buffer, since yy_c_buf_p will
2695 * already have been incremented past the NUL character
2696 * (since all states make transitions on EOB to the
2697 * end-of-buffer state). Contrast this with the test
2698 * in input().
2699 */
2700if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2701{ /* This was really a NUL. */
2702yy_state_type yy_next_state;
2703
2704(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2705
2706yy_current_state = yy_get_previous_state( );
2707
2708/* Okay, we're now positioned to make the NUL
2709 * transition. We couldn't have
2710 * yy_get_previous_state() go ahead and do it
2711 * for us because it doesn't know how to deal
2712 * with the possibility of jamming (and we don't
2713 * want to build jamming into it because then it
2714 * will run more slowly).
2715 */
2716
2717yy_next_state = yy_try_NUL_trans( yy_current_state );
2718
2719yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2720
2721if ( yy_next_state )
2722{
2723/* Consume the NUL. */
2724yy_cp = ++(yy_c_buf_p);
2725yy_current_state = yy_next_state;
2726goto yy_match;
2727}
2728
2729else
2730{
2731yy_cp = (yy_c_buf_p);
2732goto yy_find_action;
2733}
2734}
2735
2736else switch ( yy_get_next_buffer( ) )
2737{
2738case EOB_ACT_END_OF_FILE:
2739{
2740(yy_did_buffer_switch_on_eof) = 0;
2741
2742if ( tagYYwrap( ) )
2743{
2744/* Note: because we've taken care in
2745 * yy_get_next_buffer() to have set up
2746 * tagYYtext, we can now set up
2747 * yy_c_buf_p so that if some total
2748 * hoser (like flex itself) wants to
2749 * call the scanner after we return the
2750 * YY_NULL, it'll still work - another
2751 * YY_NULL will get returned.
2752 */
2753(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2754
2755yy_act = YY_STATE_EOF(YY_START);
2756goto do_action;
2757}
2758
2759else
2760{
2761if ( ! (yy_did_buffer_switch_on_eof) )
2762YY_NEW_FILE;
2763}
2764break;
2765}
2766
2767case EOB_ACT_CONTINUE_SCAN:
2768(yy_c_buf_p) =
2769(yytext_ptr) + yy_amount_of_matched_text;
2770
2771yy_current_state = yy_get_previous_state( );
2772
2773yy_cp = (yy_c_buf_p);
2774yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2775goto yy_match;
2776
2777case EOB_ACT_LAST_MATCH:
2778(yy_c_buf_p) =
2779&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2780
2781yy_current_state = yy_get_previous_state( );
2782
2783yy_cp = (yy_c_buf_p);
2784yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2785goto yy_find_action;
2786}
2787break;
2788}
2789
2790default:
2791YY_FATAL_ERROR(
2792"fatal flex scanner internal error--no action found" );
2793} /* end of action switch */
2794} /* end of scanning one token */
2795} /* end of tagYYlex */
2796
2797/* yy_get_next_buffer - try to read in a new buffer
2798 *
2799 * Returns a code representing an action:
2800 *EOB_ACT_LAST_MATCH -
2801 *EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2802 *EOB_ACT_END_OF_FILE - end of file
2803 */
2804static int yy_get_next_buffer (void)
2805{
2806 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2807register char *source = (yytext_ptr);
2808register int number_to_move, i;
2809int ret_val;
2810
2811if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2812YY_FATAL_ERROR(
2813"fatal flex scanner internal error--end of buffer missed" );
2814
2815if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2816{ /* Don't try to fill the buffer, so this is an EOF. */
2817if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2818{
2819/* We matched a single character, the EOB, so
2820 * treat this as a final EOF.
2821 */
2822return EOB_ACT_END_OF_FILE;
2823}
2824
2825else
2826{
2827/* We matched some text prior to the EOB, first
2828 * process it.
2829 */
2830return EOB_ACT_LAST_MATCH;
2831}
2832}
2833
2834/* Try to read more data. */
2835
2836/* First move last chars to start of buffer. */
2837number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2838
2839for ( i = 0; i < number_to_move; ++i )
2840*(dest++) = *(source++);
2841
2842if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2843/* don't do the read, it's not guaranteed to return an EOF,
2844 * just force an EOF
2845 */
2846YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2847
2848else
2849{
2850yy_size_t num_to_read =
2851YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2852
2853while ( num_to_read <= 0 )
2854{ /* Not enough room in the buffer - grow it. */
2855
2856/* just a shorter name for the current buffer */
2857YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2858
2859int yy_c_buf_p_offset =
2860(int) ((yy_c_buf_p) - b->yy_ch_buf);
2861
2862if ( b->yy_is_our_buffer )
2863{
2864yy_size_t new_size = b->yy_buf_size * 2;
2865
2866if ( new_size <= 0 )
2867b->yy_buf_size += b->yy_buf_size / 8;
2868else
2869b->yy_buf_size *= 2;
2870
2871b->yy_ch_buf = (char *)
2872/* Include room in for 2 EOB chars. */
2873tagYYrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
2874}
2875else
2876/* Can't grow it, we don't own it. */
2877b->yy_ch_buf = 0;
2878
2879if ( ! b->yy_ch_buf )
2880YY_FATAL_ERROR(
2881"fatal error - scanner input buffer overflow" );
2882
2883(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2884
2885num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2886number_to_move - 1;
2887
2888}
2889
2890if ( num_to_read > YY_READ_BUF_SIZE )
2891num_to_read = YY_READ_BUF_SIZE;
2892
2893/* Read in more data. */
2894YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2895(yy_n_chars), num_to_read );
2896
2897YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2898}
2899
2900if ( (yy_n_chars) == 0 )
2901{
2902if ( number_to_move == YY_MORE_ADJ )
2903{
2904ret_val = EOB_ACT_END_OF_FILE;
2905tagYYrestart(tagYYin );
2906}
2907
2908else
2909{
2910ret_val = EOB_ACT_LAST_MATCH;
2911YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2912YY_BUFFER_EOF_PENDING;
2913}
2914}
2915
2916else
2917ret_val = EOB_ACT_CONTINUE_SCAN;
2918
2919if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2920/* Extend the array by 50%, plus the number we really need. */
2921yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2922YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) tagYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
2923if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2924YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2925}
2926
2927(yy_n_chars) += number_to_move;
2928YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2929YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2930
2931(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2932
2933return ret_val;
2934}
2935
2936/* yy_get_previous_state - get the state just before the EOB char was reached */
2937
2938 static yy_state_type yy_get_previous_state (void)
2939{
2940register yy_state_type yy_current_state;
2941register char *yy_cp;
2942
2943yy_current_state = (yy_start);
2944yy_current_state += YY_AT_BOL();
2945
2946for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2947{
2948register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2949if ( yy_accept[yy_current_state] )
2950{
2951(yy_last_accepting_state) = yy_current_state;
2952(yy_last_accepting_cpos) = yy_cp;
2953}
2954while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2955{
2956yy_current_state = (int) yy_def[yy_current_state];
2957if ( yy_current_state >= 707 )
2958yy_c = yy_meta[(unsigned int) yy_c];
2959}
2960yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2961}
2962
2963return yy_current_state;
2964}
2965
2966/* yy_try_NUL_trans - try to make a transition on the NUL character
2967 *
2968 * synopsis
2969 *next_state = yy_try_NUL_trans( current_state );
2970 */
2971 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2972{
2973register int yy_is_jam;
2974 register char *yy_cp = (yy_c_buf_p);
2975
2976register YY_CHAR yy_c = 1;
2977if ( yy_accept[yy_current_state] )
2978{
2979(yy_last_accepting_state) = yy_current_state;
2980(yy_last_accepting_cpos) = yy_cp;
2981}
2982while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2983{
2984yy_current_state = (int) yy_def[yy_current_state];
2985if ( yy_current_state >= 707 )
2986yy_c = yy_meta[(unsigned int) yy_c];
2987}
2988yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2989yy_is_jam = (yy_current_state == 706);
2990
2991return yy_is_jam ? 0 : yy_current_state;
2992}
2993
2994 static void yyunput (int c, register char * yy_bp )
2995{
2996register char *yy_cp;
2997
2998 yy_cp = (yy_c_buf_p);
2999
3000/* undo effects of setting up tagYYtext */
3001*yy_cp = (yy_hold_char);
3002
3003if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3004{ /* need to shift things up to make room */
3005/* +2 for EOB chars. */
3006register yy_size_t number_to_move = (yy_n_chars) + 2;
3007register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3008YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3009register char *source =
3010&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3011
3012while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3013*--dest = *--source;
3014
3015yy_cp += (int) (dest - source);
3016yy_bp += (int) (dest - source);
3017YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3018(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3019
3020if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3021YY_FATAL_ERROR( "flex scanner push-back overflow" );
3022}
3023
3024*--yy_cp = (char) c;
3025
3026(yytext_ptr) = yy_bp;
3027(yy_hold_char) = *yy_cp;
3028(yy_c_buf_p) = yy_cp;
3029}
3030
3031#ifndef YY_NO_INPUT
3032#ifdef __cplusplus
3033 static int yyinput (void)
3034#else
3035 static int input (void)
3036#endif
3037
3038{
3039int c;
3040
3041*(yy_c_buf_p) = (yy_hold_char);
3042
3043if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3044{
3045/* yy_c_buf_p now points to the character we want to return.
3046 * If this occurs *before* the EOB characters, then it's a
3047 * valid NUL; if not, then we've hit the end of the buffer.
3048 */
3049if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3050/* This was really a NUL. */
3051*(yy_c_buf_p) = '\0';
3052
3053else
3054{ /* need more input */
3055yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
3056++(yy_c_buf_p);
3057
3058switch ( yy_get_next_buffer( ) )
3059{
3060case EOB_ACT_LAST_MATCH:
3061/* This happens because yy_g_n_b()
3062 * sees that we've accumulated a
3063 * token and flags that we need to
3064 * try matching the token before
3065 * proceeding. But for input(),
3066 * there's no matching to consider.
3067 * So convert the EOB_ACT_LAST_MATCH
3068 * to EOB_ACT_END_OF_FILE.
3069 */
3070
3071/* Reset buffer status. */
3072tagYYrestart(tagYYin );
3073
3074/*FALLTHROUGH*/
3075
3076case EOB_ACT_END_OF_FILE:
3077{
3078if ( tagYYwrap( ) )
3079return 0;
3080
3081if ( ! (yy_did_buffer_switch_on_eof) )
3082YY_NEW_FILE;
3083#ifdef __cplusplus
3084return yyinput();
3085#else
3086return input();
3087#endif
3088}
3089
3090case EOB_ACT_CONTINUE_SCAN:
3091(yy_c_buf_p) = (yytext_ptr) + offset;
3092break;
3093}
3094}
3095}
3096
3097c = *(unsigned char *) (yy_c_buf_p);/* cast for 8-bit char's */
3098*(yy_c_buf_p) = '\0';/* preserve tagYYtext */
3099(yy_hold_char) = *++(yy_c_buf_p);
3100
3101YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3102
3103return c;
3104}
3105#endif/* ifndef YY_NO_INPUT */
3106
3107/** Immediately switch to a different input stream.
3108 * @param input_file A readable stream.
3109 *
3110 * @note This function does not reset the start condition to @c INITIAL .
3111 */
3112 void tagYYrestart (FILE * input_file )
3113{
3114
3115if ( ! YY_CURRENT_BUFFER ){
3116 tagYYensure_buffer_stack ();
3117YY_CURRENT_BUFFER_LVALUE =
3118 tagYY_create_buffer(tagYYin,YY_BUF_SIZE );
3119}
3120
3121tagYY_init_buffer(YY_CURRENT_BUFFER,input_file );
3122tagYY_load_buffer_state( );
3123}
3124
3125/** Switch to a different input buffer.
3126 * @param new_buffer The new input buffer.
3127 *
3128 */
3129 void tagYY_switch_to_buffer (YY_BUFFER_STATE new_buffer )
3130{
3131
3132/* TODO. We should be able to replace this entire function body
3133 * with
3134 *tagYYpop_buffer_state();
3135 *tagYYpush_buffer_state(new_buffer);
3136 */
3137tagYYensure_buffer_stack ();
3138if ( YY_CURRENT_BUFFER == new_buffer )
3139return;
3140
3141if ( YY_CURRENT_BUFFER )
3142{
3143/* Flush out information for old buffer. */
3144*(yy_c_buf_p) = (yy_hold_char);
3145YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3146YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3147}
3148
3149YY_CURRENT_BUFFER_LVALUE = new_buffer;
3150tagYY_load_buffer_state( );
3151
3152/* We don't actually know whether we did this switch during
3153 * EOF (tagYYwrap()) processing, but the only time this flag
3154 * is looked at is after tagYYwrap() is called, so it's safe
3155 * to go ahead and always set it.
3156 */
3157(yy_did_buffer_switch_on_eof) = 1;
3158}
3159
3160static void tagYY_load_buffer_state (void)
3161{
3162 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3163(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3164tagYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3165(yy_hold_char) = *(yy_c_buf_p);
3166}
3167
3168/** Allocate and initialize an input buffer state.
3169 * @param file A readable stream.
3170 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3171 *
3172 * @return the allocated buffer state.
3173 */
3174 YY_BUFFER_STATE tagYY_create_buffer (FILE * file, int size )
3175{
3176YY_BUFFER_STATE b;
3177
3178b = (YY_BUFFER_STATE) tagYYalloc(sizeof( struct yy_buffer_state ) );
3179if ( ! b )
3180YY_FATAL_ERROR( "out of dynamic memory in tagYY_create_buffer()" );
3181
3182b->yy_buf_size = size;
3183
3184/* yy_ch_buf has to be 2 characters longer than the size given because
3185 * we need to put in 2 end-of-buffer characters.
3186 */
3187b->yy_ch_buf = (char *) tagYYalloc(b->yy_buf_size + 2 );
3188if ( ! b->yy_ch_buf )
3189YY_FATAL_ERROR( "out of dynamic memory in tagYY_create_buffer()" );
3190
3191b->yy_is_our_buffer = 1;
3192
3193tagYY_init_buffer(b,file );
3194
3195return b;
3196}
3197
3198/** Destroy the buffer.
3199 * @param b a buffer created with tagYY_create_buffer()
3200 *
3201 */
3202 void tagYY_delete_buffer (YY_BUFFER_STATE b )
3203{
3204
3205if ( ! b )
3206return;
3207
3208if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3209YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3210
3211if ( b->yy_is_our_buffer )
3212tagYYfree((void *) b->yy_ch_buf );
3213
3214tagYYfree((void *) b );
3215}
3216
3217#ifndef __cplusplus
3218extern int isatty (int );
3219#endif /* __cplusplus */
3220
3221/* Initializes or reinitializes a buffer.
3222 * This function is sometimes called more than once on the same buffer,
3223 * such as during a tagYYrestart() or at EOF.
3224 */
3225 static void tagYY_init_buffer (YY_BUFFER_STATE b, FILE * file )
3226
3227{
3228int oerrno = errno;
3229
3230tagYY_flush_buffer(b );
3231
3232b->yy_input_file = file;
3233b->yy_fill_buffer = 1;
3234
3235 /* If b is the current buffer, then tagYY_init_buffer was _probably_
3236 * called from tagYYrestart() or through yy_get_next_buffer.
3237 * In that case, we don't want to reset the lineno or column.
3238 */
3239 if (b != YY_CURRENT_BUFFER){
3240 b->yy_bs_lineno = 1;
3241 b->yy_bs_column = 0;
3242 }
3243
3244 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3245
3246errno = oerrno;
3247}
3248
3249/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3250 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3251 *
3252 */
3253 void tagYY_flush_buffer (YY_BUFFER_STATE b )
3254{
3255 if ( ! b )
3256return;
3257
3258b->yy_n_chars = 0;
3259
3260/* We always need two end-of-buffer characters. The first causes
3261 * a transition to the end-of-buffer state. The second causes
3262 * a jam in that state.
3263 */
3264b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3265b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3266
3267b->yy_buf_pos = &b->yy_ch_buf[0];
3268
3269b->yy_at_bol = 1;
3270b->yy_buffer_status = YY_BUFFER_NEW;
3271
3272if ( b == YY_CURRENT_BUFFER )
3273tagYY_load_buffer_state( );
3274}
3275
3276/** Pushes the new state onto the stack. The new state becomes
3277 * the current state. This function will allocate the stack
3278 * if necessary.
3279 * @param new_buffer The new state.
3280 *
3281 */
3282void tagYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
3283{
3284 if (new_buffer == NULL)
3285return;
3286
3287tagYYensure_buffer_stack();
3288
3289/* This block is copied from tagYY_switch_to_buffer. */
3290if ( YY_CURRENT_BUFFER )
3291{
3292/* Flush out information for old buffer. */
3293*(yy_c_buf_p) = (yy_hold_char);
3294YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3295YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3296}
3297
3298/* Only push if top exists. Otherwise, replace top. */
3299if (YY_CURRENT_BUFFER)
3300(yy_buffer_stack_top)++;
3301YY_CURRENT_BUFFER_LVALUE = new_buffer;
3302
3303/* copied from tagYY_switch_to_buffer. */
3304tagYY_load_buffer_state( );
3305(yy_did_buffer_switch_on_eof) = 1;
3306}
3307
3308/** Removes and deletes the top of the stack, if present.
3309 * The next element becomes the new top.
3310 *
3311 */
3312void tagYYpop_buffer_state (void)
3313{
3314 if (!YY_CURRENT_BUFFER)
3315return;
3316
3317tagYY_delete_buffer(YY_CURRENT_BUFFER );
3318YY_CURRENT_BUFFER_LVALUE = NULL;
3319if ((yy_buffer_stack_top) > 0)
3320--(yy_buffer_stack_top);
3321
3322if (YY_CURRENT_BUFFER) {
3323tagYY_load_buffer_state( );
3324(yy_did_buffer_switch_on_eof) = 1;
3325}
3326}
3327
3328/* Allocates the stack if it does not exist.
3329 * Guarantees space for at least one push.
3330 */
3331static void tagYYensure_buffer_stack (void)
3332{
3333yy_size_t num_to_alloc;
3334
3335if (!(yy_buffer_stack)) {
3336
3337/* First allocation is just for 2 elements, since we don't know if this
3338 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3339 * immediate realloc on the next call.
3340 */
3341num_to_alloc = 1;
3342(yy_buffer_stack) = (struct yy_buffer_state**)tagYYalloc
3343(num_to_alloc * sizeof(struct yy_buffer_state*)
3344);
3345if ( ! (yy_buffer_stack) )
3346YY_FATAL_ERROR( "out of dynamic memory in tagYYensure_buffer_stack()" );
3347
3348memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3349
3350(yy_buffer_stack_max) = num_to_alloc;
3351(yy_buffer_stack_top) = 0;
3352return;
3353}
3354
3355if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3356
3357/* Increase the buffer to prepare for a possible push. */
3358int grow_size = 8 /* arbitrary grow size */;
3359
3360num_to_alloc = (yy_buffer_stack_max) + grow_size;
3361(yy_buffer_stack) = (struct yy_buffer_state**)tagYYrealloc
3362((yy_buffer_stack),
3363num_to_alloc * sizeof(struct yy_buffer_state*)
3364);
3365if ( ! (yy_buffer_stack) )
3366YY_FATAL_ERROR( "out of dynamic memory in tagYYensure_buffer_stack()" );
3367
3368/* zero only the new slots.*/
3369memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3370(yy_buffer_stack_max) = num_to_alloc;
3371}
3372}
3373
3374/** Setup the input buffer state to scan directly from a user-specified character buffer.
3375 * @param base the character buffer
3376 * @param size the size in bytes of the character buffer
3377 *
3378 * @return the newly allocated buffer state object.
3379 */
3380YY_BUFFER_STATE tagYY_scan_buffer (char * base, yy_size_t size )
3381{
3382YY_BUFFER_STATE b;
3383
3384if ( size < 2 ||
3385 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3386 base[size-1] != YY_END_OF_BUFFER_CHAR )
3387/* They forgot to leave room for the EOB's. */
3388return 0;
3389
3390b = (YY_BUFFER_STATE) tagYYalloc(sizeof( struct yy_buffer_state ) );
3391if ( ! b )
3392YY_FATAL_ERROR( "out of dynamic memory in tagYY_scan_buffer()" );
3393
3394b->yy_buf_size = size - 2;/* "- 2" to take care of EOB's */
3395b->yy_buf_pos = b->yy_ch_buf = base;
3396b->yy_is_our_buffer = 0;
3397b->yy_input_file = 0;
3398b->yy_n_chars = b->yy_buf_size;
3399b->yy_is_interactive = 0;
3400b->yy_at_bol = 1;
3401b->yy_fill_buffer = 0;
3402b->yy_buffer_status = YY_BUFFER_NEW;
3403
3404tagYY_switch_to_buffer(b );
3405
3406return b;
3407}
3408
3409/** Setup the input buffer state to scan a string. The next call to tagYYlex() will
3410 * scan from a @e copy of @a str.
3411 * @param yystr a NUL-terminated string to scan
3412 *
3413 * @return the newly allocated buffer state object.
3414 * @note If you want to scan bytes that may contain NUL values, then use
3415 * tagYY_scan_bytes() instead.
3416 */
3417YY_BUFFER_STATE tagYY_scan_string (yyconst char * yystr )
3418{
3419
3420return tagYY_scan_bytes(yystr,strlen(yystr) );
3421}
3422
3423/** Setup the input buffer state to scan the given bytes. The next call to tagYYlex() will
3424 * scan from a @e copy of @a bytes.
3425 * @param bytes the byte buffer to scan
3426 * @param len the number of bytes in the buffer pointed to by @a bytes.
3427 *
3428 * @return the newly allocated buffer state object.
3429 */
3430YY_BUFFER_STATE tagYY_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
3431{
3432YY_BUFFER_STATE b;
3433char *buf;
3434yy_size_t n, i;
3435
3436/* Get memory for full buffer, including space for trailing EOB's. */
3437n = _yybytes_len + 2;
3438buf = (char *) tagYYalloc(n );
3439if ( ! buf )
3440YY_FATAL_ERROR( "out of dynamic memory in tagYY_scan_bytes()" );
3441
3442for ( i = 0; i < _yybytes_len; ++i )
3443buf[i] = yybytes[i];
3444
3445buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3446
3447b = tagYY_scan_buffer(buf,n );
3448if ( ! b )
3449YY_FATAL_ERROR( "bad buffer in tagYY_scan_bytes()" );
3450
3451/* It's okay to grow etc. this buffer, and we should throw it
3452 * away when we're done.
3453 */
3454b->yy_is_our_buffer = 1;
3455
3456return b;
3457}
3458
3459#ifndef YY_EXIT_FAILURE
3460#define YY_EXIT_FAILURE 2
3461#endif
3462
3463static void yy_fatal_error (yyconst char* msg )
3464{
3465 (void) fprintf( stderr, "%s\n", msg );
3466exit( YY_EXIT_FAILURE );
3467}
3468
3469/* Redefine yyless() so it works in section 3 code. */
3470
3471#undef yyless
3472#define yyless(n) \
3473do \
3474{ \
3475/* Undo effects of setting up tagYYtext. */ \
3476 int yyless_macro_arg = (n); \
3477 YY_LESS_LINENO(yyless_macro_arg);\
3478tagYYtext[tagYYleng] = (yy_hold_char); \
3479(yy_c_buf_p) = tagYYtext + yyless_macro_arg; \
3480(yy_hold_char) = *(yy_c_buf_p); \
3481*(yy_c_buf_p) = '\0'; \
3482tagYYleng = yyless_macro_arg; \
3483} \
3484while ( 0 )
3485
3486/* Accessor methods (get/set functions) to struct members. */
3487
3488/** Get the current line number.
3489 *
3490 */
3491int tagYYget_lineno (void)
3492{
3493
3494 return tagYYlineno;
3495}
3496
3497/** Get the input stream.
3498 *
3499 */
3500FILE *tagYYget_in (void)
3501{
3502 return tagYYin;
3503}
3504
3505/** Get the output stream.
3506 *
3507 */
3508FILE *tagYYget_out (void)
3509{
3510 return tagYYout;
3511}
3512
3513/** Get the length of the current token.
3514 *
3515 */
3516yy_size_t tagYYget_leng (void)
3517{
3518 return tagYYleng;
3519}
3520
3521/** Get the current token.
3522 *
3523 */
3524
3525char *tagYYget_text (void)
3526{
3527 return tagYYtext;
3528}
3529
3530/** Set the current line number.
3531 * @param line_number
3532 *
3533 */
3534void tagYYset_lineno (int line_number )
3535{
3536
3537 tagYYlineno = line_number;
3538}
3539
3540/** Set the input stream. This does not discard the current
3541 * input buffer.
3542 * @param in_str A readable stream.
3543 *
3544 * @see tagYY_switch_to_buffer
3545 */
3546void tagYYset_in (FILE * in_str )
3547{
3548 tagYYin = in_str ;
3549}
3550
3551void tagYYset_out (FILE * out_str )
3552{
3553 tagYYout = out_str ;
3554}
3555
3556int tagYYget_debug (void)
3557{
3558 return tagYY_flex_debug;
3559}
3560
3561void tagYYset_debug (int bdebug )
3562{
3563 tagYY_flex_debug = bdebug ;
3564}
3565
3566static int yy_init_globals (void)
3567{
3568 /* Initialization is the same as for the non-reentrant scanner.
3569 * This function is called from tagYYlex_destroy(), so don't allocate here.
3570 */
3571
3572 (yy_buffer_stack) = 0;
3573 (yy_buffer_stack_top) = 0;
3574 (yy_buffer_stack_max) = 0;
3575 (yy_c_buf_p) = (char *) 0;
3576 (yy_init) = 0;
3577 (yy_start) = 0;
3578
3579/* Defined in main.c */
3580#ifdef YY_STDINIT
3581 tagYYin = stdin;
3582 tagYYout = stdout;
3583#else
3584 tagYYin = (FILE *) 0;
3585 tagYYout = (FILE *) 0;
3586#endif
3587
3588 /* For future reference: Set errno on error, since we are called by
3589 * tagYYlex_init()
3590 */
3591 return 0;
3592}
3593
3594/* tagYYlex_destroy is for both reentrant and non-reentrant scanners. */
3595int tagYYlex_destroy (void)
3596{
3597
3598 /* Pop the buffer stack, destroying each element. */
3599while(YY_CURRENT_BUFFER){
3600tagYY_delete_buffer(YY_CURRENT_BUFFER );
3601YY_CURRENT_BUFFER_LVALUE = NULL;
3602tagYYpop_buffer_state();
3603}
3604
3605/* Destroy the stack itself. */
3606tagYYfree((yy_buffer_stack) );
3607(yy_buffer_stack) = NULL;
3608
3609 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3610 * tagYYlex() is called, initialization will occur. */
3611 yy_init_globals( );
3612
3613 return 0;
3614}
3615
3616/*
3617 * Internal utility routines.
3618 */
3619
3620#ifndef yytext_ptr
3621static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3622{
3623register int i;
3624for ( i = 0; i < n; ++i )
3625s1[i] = s2[i];
3626}
3627#endif
3628
3629#ifdef YY_NEED_STRLEN
3630static int yy_flex_strlen (yyconst char * s )
3631{
3632register int n;
3633for ( n = 0; s[n]; ++n )
3634;
3635
3636return n;
3637}
3638#endif
3639
3640void *tagYYalloc (yy_size_t size )
3641{
3642return (void *) malloc( size );
3643}
3644
3645void *tagYYrealloc (void * ptr, yy_size_t size )
3646{
3647/* The cast to (char *) in the following accommodates both
3648 * implementations that use char* generic pointers, and those
3649 * that use void* generic pointers. It works with the latter
3650 * because both ANSI C and C++ allow castless assignment from
3651 * any pointer type to void*, and deal with argument conversions
3652 * as though doing an assignment.
3653 */
3654return (void *) realloc( (char *) ptr, size );
3655}
3656
3657void tagYYfree (void * ptr )
3658{
3659free( (char *) ptr );/* see tagYYrealloc() for (char *) cast */
3660}
3661
3662#define YYTABLES_NAME "yytables"
3663
3664#line 674 "doxytag.l"
3665
3666
3667
3668/*@ ----------------------------------------------------------------------------
3669 */
3670
3671
3672void parse(QCString &s)
3673{
3674 bases.clear();
3675 nameBug = FALSE;
3676 //newClass = TRUE;
3677 inputString = s;
3678 inputPosition = 0;
3679 yyLineNr = 0;
3680 tagYYrestart( tagYYin );
3681 BEGIN( Start );
3682 tagYYlex();
3683 //printf("Number of lines scanned: %d\n",yyLineNr);
3684}
3685
3686void parseFile(QFileInfo &fi)
3687{
3688 printf("Parsing file %s...\n",fi.fileName().data());
3689 QFile f;
3690 f.setName(fi.absFilePath());
3691 if (f.open(IO_ReadOnly))
3692 {
3693 yyFileName = fi.fileName();
3694 className.resize(0);
3695 memberName.resize(0);
3696 //printf("Parsing file %s...\n",fi.fileName().data());
3697 QCString input(fi.size()+1);
3698 docBaseLink=fi.fileName();
3699 docRefName=fi.fileName().copy();
3700 //searchIndex.addReference(docRefName,docBaseLink);
3701 //searchIndex.addWord(docRefName,docRefName,TRUE);
3702 f.readBlock(input.data(),fi.size());
3703 input.at(fi.size())='\0';
3704 parse(input);
3705 }
3706 else
3707 {
3708 fprintf(stderr,"Warning: Cannot open file %s\n",fi.fileName().data());
3709 }
3710}
3711
3712void parseFileOrDir(const char *fileName)
3713{
3714 QFileInfo fi(fileName);
3715 if (fi.exists())
3716 {
3717 if (fi.isFile())
3718 {
3719 parseFile(fi);
3720 }
3721 else if (fi.isDir())
3722 {
3723 QDir dir(fileName);
3724 dir.setFilter( QDir::Files );
3725 dir.setNameFilter( "*.html" );
3726 const QFileInfoList *list = dir.entryInfoList();
3727 QFileInfoListIterator it( *list );
3728 QFileInfo *cfi;
3729 for ( it.toFirst() ; (cfi=it.current()) ; ++it)
3730 {
3731if (cfi->isFile())
3732{
3733 parseFile(*cfi);
3734}
3735 }
3736 }
3737 }
3738 else
3739 {
3740 fprintf(stderr,"Warning: File %s does not exist\n",fileName);
3741 }
3742}
3743
3744void usage(const char *name)
3745{
3746 fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2011\n\n",
3747 versionString);
3748 fprintf(stderr," Generates a tag file and/or a search index for a set of HTML files\n\n");
3749 fprintf(stderr,"Usage: %s [-t tag_file] [ html_file [html_file...] ]\n",name);
3750 fprintf(stderr,"Options:\n");
3751 fprintf(stderr," -t <tag_file> Generate tag file <tag_file>.\n");
3752 fprintf(stderr,"If no HTML files are given all files in the current dir that\n"
3753 "have a .html extension are parsed.\n\n");
3754 exit(1);
3755}
3756
3757const char *getArg(int argc,char **argv,int &optind,const char c)
3758{
3759 char *s=0;
3760 if (strlen(&argv[optind][2])>0)
3761 s=&argv[optind][2];
3762 else if (optind+1<argc)
3763 s=argv[++optind];
3764 else
3765 {
3766 fprintf(stderr,"option -%c requires an argument\n",c);
3767 exit(1);
3768 }
3769 return s;
3770}
3771
3772int main(int argc,char **argv)
3773{
3774 QCString tagName;
3775 QCString indexName;
3776
3777 int optind=1;
3778 const char *arg;
3779 while (optind<argc && argv[optind][0]=='-')
3780 {
3781 switch(argv[optind][1])
3782 {
3783 case 't':
3784arg=getArg(argc,argv,optind,'t');
3785tagName=arg;
3786break;
3787 case 's':
3788arg=getArg(argc,argv,optind,'s');
3789indexName=arg;
3790break;
3791 case 'h':
3792 case '?':
3793 usage(argv[0]);
3794 break;
3795 default:
3796fprintf(stderr,"Unknown option -%c\n",argv[optind][1]);
3797usage(argv[0]);
3798 }
3799 optind++;
3800 }
3801
3802 genTag = !tagName.isEmpty();
3803 genIndex = !indexName.isEmpty();
3804
3805 if (!genTag && !genIndex)
3806 {
3807 fprintf(stderr,"Nothing to do !\n\n");
3808 usage(argv[0]);
3809 }
3810
3811 int i;
3812 if (optind>=argc)
3813 {
3814 parseFileOrDir(".");
3815 }
3816 else
3817 {
3818 for (i=optind;i<argc;i++)
3819 {
3820 parseFileOrDir(argv[i]);
3821 }
3822 }
3823 if (genIndex)
3824 {
3825 fprintf(stderr,"Error: doxytag cannot be used to generate a search index anymore.\n"
3826 "This functionality has been integrated into doxygen.\n");
3827// printf("Writing search index\n");
3828// if (!searchIndex.saveIndex(indexName))
3829// {
3830// fprintf(stderr,"Error: Could not write search index\n");
3831// }
3832// QFileInfo fi(indexName);
3833// if (fi.exists())
3834// {
3835// QCString dir=convertToQCString(fi.dir().absPath());
3836// fi.setFile(dir+"/search.png");
3837// if (!fi.exists()) writeSearchButton(dir);
3838// fi.setFile(dir+"/doxygen.png");
3839// if (!fi.exists()) writeLogo(dir);
3840// fi.setFile(dir+"/search.cgi");
3841// if (!fi.exists())
3842// {
3843// QFile f;
3844//f.setName(dir+"/search.cgi");
3845//if (f.open(IO_WriteOnly))
3846//{
3847// QTextStream t(&f);
3848// t << "#!/bin/sh" << endl
3849// << "DOXYSEARCH=" << endl
3850// << "DOXYPATH=" << endl
3851// << "if [ -f $DOXYSEARCH ]" << endl
3852// << "then" << endl
3853// << " $DOXYSEARCH $DOXYPATH" << endl
3854// << "else" << endl
3855// << " echo \"Content-Type: text/html\"" << endl
3856// << " echo \"\"" << endl
3857// << " echo \"<H1>Error: $DOXYSEARCH not found. Check cgi script!\"" << endl
3858// << "fi" << endl;
3859// f.close();
3860//}
3861//else
3862//{
3863// fprintf(stderr,"Error: could not open file %s for writing\n",(dir+"/search.cgi").data());
3864//}
3865// }
3866// }
3867 }
3868 if (genTag)
3869 {
3870 QFile f;
3871 f.setName(tagName);
3872 if (f.open(IO_WriteOnly))
3873 {
3874 QTextStream t(&f);
3875 t << "<tagfile>" << endl;
3876 ClassDef *cd=classList.first();
3877 while (cd)
3878 {
3879t << " <compound kind=\"";
3880if (cd->isFile) t << "file"; else t << "class";
3881t << "\">" << endl;
3882t << " <name>" << convertToXML(cd->name) << "</name>" << endl;
3883 char *base=cd->bases.first();
3884 while (base)
3885{
3886 t << " <base>" << convertToXML(base) << "</base>" << endl;
3887 base=cd->bases.next();
3888}
3889t << " <filename>" << convertToXML(cd->fileName) << "</filename>" << endl;
3890MemberDef *md=cd->memberList.first();
3891while (md)
3892{
3893 if (md->anchor.right(5)=="-enum")
3894 {
3895 t << " <member kind=\"enum\">" << endl;
3896 }
3897 else
3898 {
3899 t << " <member kind=\"function\">" << endl;
3900 }
3901 t << " <name>" << convertToXML(md->name) << "</name>" << endl;
3902 t << " <anchor>" << convertToXML(md->anchor) << "</anchor>" << endl;
3903 t << " <arglist>" << convertToXML(md->args) << "</arglist>" << endl;
3904 t << " </member>" << endl;
3905 md=cd->memberList.next();
3906}
3907t << " </compound>" << endl;
3908cd=classList.next();
3909 }
3910 t << "</tagfile>" << endl;
3911 }
3912 else
3913 {
3914 fprintf(stderr,"Error: Could not write tag file %s\n",tagName.data());
3915 }
3916 }
3917 return 0;
3918}
3919
3920extern "C" {
3921inttagYYwrap(){ return 1 ; }
3922};
3923
3924

Archive Download this file

Revision: 1322