doxytag.cpp

Go to the documentation of this file.
00001 
00002 #line 3 "<stdout>"
00003 
00004 #define  YY_INT_ALIGNED short int
00005 
00006 /* A lexical scanner generated by flex */
00007 
00008 #define FLEX_SCANNER
00009 #define YY_FLEX_MAJOR_VERSION 2
00010 #define YY_FLEX_MINOR_VERSION 5
00011 #define YY_FLEX_SUBMINOR_VERSION 33
00012 #if YY_FLEX_SUBMINOR_VERSION > 0
00013 #define FLEX_BETA
00014 #endif
00015 
00016 /* First, we deal with  platform-specific or compiler-specific issues. */
00017 
00018 /* begin standard C headers. */
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include <errno.h>
00022 #include <stdlib.h>
00023 
00024 /* end standard C headers. */
00025 
00026 /* flex integer type definitions */
00027 
00028 #ifndef FLEXINT_H
00029 #define FLEXINT_H
00030 
00031 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00032 
00033 #if __STDC_VERSION__ >= 199901L
00034 
00035 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
00036  * if you want the limit (max/min) macros for int types. 
00037  */
00038 #ifndef __STDC_LIMIT_MACROS
00039 #define __STDC_LIMIT_MACROS 1
00040 #endif
00041 
00042 #include <inttypes.h>
00043 typedef int8_t flex_int8_t;
00044 typedef uint8_t flex_uint8_t;
00045 typedef int16_t flex_int16_t;
00046 typedef uint16_t flex_uint16_t;
00047 typedef int32_t flex_int32_t;
00048 typedef uint32_t flex_uint32_t;
00049 #else
00050 typedef signed char flex_int8_t;
00051 typedef short int flex_int16_t;
00052 typedef int flex_int32_t;
00053 typedef unsigned char flex_uint8_t; 
00054 typedef unsigned short int flex_uint16_t;
00055 typedef unsigned int flex_uint32_t;
00056 #endif /* ! C99 */
00057 
00058 /* Limits of integral types. */
00059 #ifndef INT8_MIN
00060 #define INT8_MIN               (-128)
00061 #endif
00062 #ifndef INT16_MIN
00063 #define INT16_MIN              (-32767-1)
00064 #endif
00065 #ifndef INT32_MIN
00066 #define INT32_MIN              (-2147483647-1)
00067 #endif
00068 #ifndef INT8_MAX
00069 #define INT8_MAX               (127)
00070 #endif
00071 #ifndef INT16_MAX
00072 #define INT16_MAX              (32767)
00073 #endif
00074 #ifndef INT32_MAX
00075 #define INT32_MAX              (2147483647)
00076 #endif
00077 #ifndef UINT8_MAX
00078 #define UINT8_MAX              (255U)
00079 #endif
00080 #ifndef UINT16_MAX
00081 #define UINT16_MAX             (65535U)
00082 #endif
00083 #ifndef UINT32_MAX
00084 #define UINT32_MAX             (4294967295U)
00085 #endif
00086 
00087 #endif /* ! FLEXINT_H */
00088 
00089 #ifdef __cplusplus
00090 
00091 /* The "const" storage-class-modifier is valid. */
00092 #define YY_USE_CONST
00093 
00094 #else   /* ! __cplusplus */
00095 
00096 #if __STDC__
00097 
00098 #define YY_USE_CONST
00099 
00100 #endif  /* __STDC__ */
00101 #endif  /* ! __cplusplus */
00102 
00103 #ifdef YY_USE_CONST
00104 #define yyconst const
00105 #else
00106 #define yyconst
00107 #endif
00108 
00109 /* Returned upon end-of-file. */
00110 #define YY_NULL 0
00111 
00112 /* Promotes a possibly negative, possibly signed char to an unsigned
00113  * integer for use as an array index.  If the signed char is negative,
00114  * we want to instead treat it as an 8-bit unsigned char, hence the
00115  * double cast.
00116  */
00117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00118 
00119 /* Enter a start condition.  This macro really ought to take a parameter,
00120  * but we do it the disgusting crufty way forced on us by the ()-less
00121  * definition of BEGIN.
00122  */
00123 #define BEGIN (yy_start) = 1 + 2 *
00124 
00125 /* Translate the current start state into a value that can be later handed
00126  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00127  * compatibility.
00128  */
00129 #define YY_START (((yy_start) - 1) / 2)
00130 #define YYSTATE YY_START
00131 
00132 /* Action number for EOF rule of a given start state. */
00133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00134 
00135 /* Special action meaning "start processing a new file". */
00136 #define YY_NEW_FILE tagYYrestart(tagYYin  )
00137 
00138 #define YY_END_OF_BUFFER_CHAR 0
00139 
00140 /* Size of default input buffer. */
00141 #ifndef YY_BUF_SIZE
00142 #define YY_BUF_SIZE 16384
00143 #endif
00144 
00145 /* The state buf must be large enough to hold one state per character in the main buffer.
00146  */
00147 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
00148 
00149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00150 #define YY_TYPEDEF_YY_BUFFER_STATE
00151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00152 #endif
00153 
00154 extern int tagYYleng;
00155 
00156 extern FILE *tagYYin, *tagYYout;
00157 
00158 #define EOB_ACT_CONTINUE_SCAN 0
00159 #define EOB_ACT_END_OF_FILE 1
00160 #define EOB_ACT_LAST_MATCH 2
00161 
00162     #define YY_LESS_LINENO(n)
00163     
00164 /* Return all but the first "n" matched characters back to the input stream. */
00165 #define yyless(n) \
00166         do \
00167                 { \
00168                 /* Undo effects of setting up tagYYtext. */ \
00169         int yyless_macro_arg = (n); \
00170         YY_LESS_LINENO(yyless_macro_arg);\
00171                 *yy_cp = (yy_hold_char); \
00172                 YY_RESTORE_YY_MORE_OFFSET \
00173                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00174                 YY_DO_BEFORE_ACTION; /* set up tagYYtext again */ \
00175                 } \
00176         while ( 0 )
00177 
00178 #define unput(c) yyunput( c, (yytext_ptr)  )
00179 
00180 /* The following is because we cannot portably get our hands on size_t
00181  * (without autoconf's help, which isn't available because we want
00182  * flex-generated scanners to compile on their own).
00183  */
00184 
00185 #ifndef YY_TYPEDEF_YY_SIZE_T
00186 #define YY_TYPEDEF_YY_SIZE_T
00187 typedef unsigned int yy_size_t;
00188 #endif
00189 
00190 #ifndef YY_STRUCT_YY_BUFFER_STATE
00191 #define YY_STRUCT_YY_BUFFER_STATE
00192 struct yy_buffer_state
00193         {
00194         FILE *yy_input_file;
00195 
00196         char *yy_ch_buf;                /* input buffer */
00197         char *yy_buf_pos;               /* current position in input buffer */
00198 
00199         /* Size of input buffer in bytes, not including room for EOB
00200          * characters.
00201          */
00202         yy_size_t yy_buf_size;
00203 
00204         /* Number of characters read into yy_ch_buf, not including EOB
00205          * characters.
00206          */
00207         int yy_n_chars;
00208 
00209         /* Whether we "own" the buffer - i.e., we know we created it,
00210          * and can realloc() it to grow it, and should free() it to
00211          * delete it.
00212          */
00213         int yy_is_our_buffer;
00214 
00215         /* Whether this is an "interactive" input source; if so, and
00216          * if we're using stdio for input, then we want to use getc()
00217          * instead of fread(), to make sure we stop fetching input after
00218          * each newline.
00219          */
00220         int yy_is_interactive;
00221 
00222         /* Whether we're considered to be at the beginning of a line.
00223          * If so, '^' rules will be active on the next match, otherwise
00224          * not.
00225          */
00226         int yy_at_bol;
00227 
00228     int yy_bs_lineno; 
00229     int yy_bs_column; 
00231         /* Whether to try to fill the input buffer when we reach the
00232          * end of it.
00233          */
00234         int yy_fill_buffer;
00235 
00236         int yy_buffer_status;
00237 
00238 #define YY_BUFFER_NEW 0
00239 #define YY_BUFFER_NORMAL 1
00240         /* When an EOF's been seen but there's still some text to process
00241          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00242          * shouldn't try reading from the input source any more.  We might
00243          * still have a bunch of tokens to match, though, because of
00244          * possible backing-up.
00245          *
00246          * When we actually see the EOF, we change the status to "new"
00247          * (via tagYYrestart()), so that the user can continue scanning by
00248          * just pointing tagYYin at a new input file.
00249          */
00250 #define YY_BUFFER_EOF_PENDING 2
00251 
00252         };
00253 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00254 
00255 /* Stack of input buffers. */
00256 static size_t yy_buffer_stack_top = 0; 
00257 static size_t yy_buffer_stack_max = 0; 
00258 static YY_BUFFER_STATE * yy_buffer_stack = 0; 
00260 /* We provide macros for accessing buffer states in case in the
00261  * future we want to put the buffer states in a more general
00262  * "scanner state".
00263  *
00264  * Returns the top of the stack, or NULL.
00265  */
00266 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
00267                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
00268                           : NULL)
00269 
00270 /* Same as previous macro, but useful when we know that the buffer stack is not
00271  * NULL or when we need an lvalue. For internal use only.
00272  */
00273 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
00274 
00275 /* yy_hold_char holds the character lost when tagYYtext is formed. */
00276 static char yy_hold_char;
00277 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
00278 int tagYYleng;
00279 
00280 /* Points to current character in buffer. */
00281 static char *yy_c_buf_p = (char *) 0;
00282 static int yy_init = 0;         /* whether we need to initialize */
00283 static int yy_start = 0;        /* start state number */
00284 
00285 /* Flag which is used to allow tagYYwrap()'s to do buffer switches
00286  * instead of setting up a fresh tagYYin.  A bit of a hack ...
00287  */
00288 static int yy_did_buffer_switch_on_eof;
00289 
00290 void tagYYrestart (FILE *input_file  );
00291 void tagYY_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
00292 YY_BUFFER_STATE tagYY_create_buffer (FILE *file,int size  );
00293 void tagYY_delete_buffer (YY_BUFFER_STATE b  );
00294 void tagYY_flush_buffer (YY_BUFFER_STATE b  );
00295 void tagYYpush_buffer_state (YY_BUFFER_STATE new_buffer  );
00296 void tagYYpop_buffer_state (void );
00297 
00298 static void tagYYensure_buffer_stack (void );
00299 static void tagYY_load_buffer_state (void );
00300 static void tagYY_init_buffer (YY_BUFFER_STATE b,FILE *file  );
00301 
00302 #define YY_FLUSH_BUFFER tagYY_flush_buffer(YY_CURRENT_BUFFER )
00303 
00304 YY_BUFFER_STATE tagYY_scan_buffer (char *base,yy_size_t size  );
00305 YY_BUFFER_STATE tagYY_scan_string (yyconst char *yy_str  );
00306 YY_BUFFER_STATE tagYY_scan_bytes (yyconst char *bytes,int len  );
00307 
00308 void *tagYYalloc (yy_size_t  );
00309 void *tagYYrealloc (void *,yy_size_t  );
00310 void tagYYfree (void *  );
00311 
00312 #define yy_new_buffer tagYY_create_buffer
00313 
00314 #define yy_set_interactive(is_interactive) \
00315         { \
00316         if ( ! YY_CURRENT_BUFFER ){ \
00317         tagYYensure_buffer_stack (); \
00318                 YY_CURRENT_BUFFER_LVALUE =    \
00319             tagYY_create_buffer(tagYYin,YY_BUF_SIZE ); \
00320         } \
00321         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00322         }
00323 
00324 #define yy_set_bol(at_bol) \
00325         { \
00326         if ( ! YY_CURRENT_BUFFER ){\
00327         tagYYensure_buffer_stack (); \
00328                 YY_CURRENT_BUFFER_LVALUE =    \
00329             tagYY_create_buffer(tagYYin,YY_BUF_SIZE ); \
00330         } \
00331         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00332         }
00333 
00334 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00335 
00336 /* Begin user sect3 */
00337 
00338 typedef unsigned char YY_CHAR;
00339 
00340 FILE *tagYYin = (FILE *) 0, *tagYYout = (FILE *) 0;
00341 
00342 typedef int yy_state_type;
00343 
00344 extern int tagYYlineno;
00345 
00346 int tagYYlineno = 1;
00347 
00348 extern char *tagYYtext;
00349 #define yytext_ptr tagYYtext
00350 
00351 static yy_state_type yy_get_previous_state (void );
00352 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
00353 static int yy_get_next_buffer (void );
00354 static void yy_fatal_error (yyconst char msg[]  );
00355 
00356 /* Done after the current pattern has been matched and before the
00357  * corresponding action - sets up tagYYtext.
00358  */
00359 #define YY_DO_BEFORE_ACTION \
00360         (yytext_ptr) = yy_bp; \
00361         tagYYleng = (size_t) (yy_cp - yy_bp); \
00362         (yy_hold_char) = *yy_cp; \
00363         *yy_cp = '\0'; \
00364         (yy_c_buf_p) = yy_cp;
00365 
00366 #define YY_NUM_RULES 124
00367 #define YY_END_OF_BUFFER 125
00368 /* This struct is not used in this scanner,
00369    but its presence is necessary. */
00370 struct yy_trans_info
00371         {
00372         flex_int32_t yy_verify;
00373         flex_int32_t yy_nxt;
00374         };
00375 static yyconst flex_int16_t yy_accept[693] =
00376     {   0,
00377         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00378         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00379         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00380         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00381         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00382         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00383         0,    0,  125,  122,  123,  122,   78,   80,   78,   80,
00384       122,  100,   99,   98,   98,   98,   95,  101,  122,  103,
00385       111,  111,  105,  105,  110,  122,  122,   91,  122,   92,
00386       122,   89,   89,   89,  122,  119,  118,  119,  118,   84,
00387 
00388       120,  121,   83,   82,  122,   80,   12,   12,   15,   13,
00389        15,   25,   25,   23,   17,   17,   23,   23,   23,   36,
00390        36,   36,   26,   34,   35,   36,   62,   62,   67,   67,
00391        55,   55,   60,   60,   69,   69,   74,   74,   38,   38,
00392        43,   43,   46,   46,   52,   52,   47,    0,    0,    0,
00393         0,    0,   80,    0,    0,    0,   80,    0,   99,   98,
00394        98,   98,   95,  101,    0,    0,  111,  111,    0,    0,
00395         0,    0,    0,   92,    0,    0,   89,   89,   89,   89,
00396         0,    0,    0,    0,    0,    0,   84,  121,   83,   82,
00397         0,   80,    0,   13,    0,    0,    0,   17,    0,    0,
00398 
00399        22,    0,    0,    0,   26,    0,    0,    0,    0,    0,
00400        35,    0,    0,   62,    0,    0,    0,    0,    0,   55,
00401         0,    0,    0,    0,    0,   69,    0,    0,    0,    0,
00402         0,   38,    0,    0,    0,    0,    0,   46,    0,    0,
00403         0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
00404         0,    0,    0,   80,    0,   98,   98,  102,    0,  111,
00405         0,    0,    0,  108,    0,    0,    0,   89,    0,    0,
00406         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00407         0,   20,    0,    0,    0,    0,    0,   33,    0,    0,
00408         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00409 
00410         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00411         0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
00412         0,    0,    1,    0,    0,   80,    0,    0,   98,   98,
00413         0,  111,  107,  106,    0,    0,    0,    0,   89,  112,
00414         0,  115,  114,    0,    0,    0,    0,    0,   24,   24,
00415        19,   18,    0,    0,   29,   28,    0,    0,    0,    0,
00416         0,   64,   63,    0,    0,    0,   57,   56,    0,    0,
00417         0,   71,   70,    0,    0,    0,   40,   39,    0,    0,
00418         0,   49,   48,    0,    0,    0,    0,   76,    0,    0,
00419         0,    0,   80,    0,    0,   98,    0,    0,  111,    0,
00420 
00421        90,    0,    0,   89,  113,    0,    0,    0,    0,    0,
00422        24,    0,   27,    0,    0,   32,    0,   65,    0,    0,
00423        58,    0,   75,   72,    0,   44,   41,    0,   53,   50,
00424         0,    0,    0,    0,    0,    0,    0,    0,   80,    0,
00425         0,    0,    0,    0,  111,  109,    0,   87,   89,  117,
00426       116,   81,    0,   14,   24,   21,   31,   30,    0,   66,
00427         0,   59,   73,   42,   51,    0,    0,    0,    0,    0,
00428         0,    0,   80,    0,    0,    0,    0,    0,  111,    0,
00429         0,   89,    0,   24,    0,   61,    0,    0,    0,    0,
00430         0,    0,   80,    0,    0,    0,    0,  104,    0,   86,
00431 
00432        89,    0,   24,   68,    0,    0,   77,    0,    0,    0,
00433         6,    0,   94,    0,    0,    0,    0,   88,    0,    0,
00434        88,   88,   88,   89,   89,   88,   11,   24,    0,    0,
00435         0,    0,    0,    0,    0,    0,    0,   88,    0,    0,
00436         0,    0,    0,   88,    0,   89,   89,   88,   24,    0,
00437         0,    0,    0,    0,    0,    0,    0,    0,   85,    0,
00438         0,    0,    0,    0,    0,   89,   16,    0,    0,    0,
00439         0,    0,    0,    0,    0,    0,    0,    0,   88,   88,
00440         0,   89,    0,    0,    0,    0,    8,    0,    0,    0,
00441         0,    0,   88,    0,   88,    0,   88,   88,   89,    0,
00442 
00443         0,    0,    0,    0,    0,    0,    0,   97,    0,    0,
00444        88,    0,    0,   88,    0,    0,    0,    0,    0,    0,
00445         0,    0,    0,   96,    0,    0,    0,    0,    0,    0,
00446         0,    0,    7,    0,    0,    0,    0,    0,    0,    0,
00447         0,    0,    4,    0,    0,    0,    0,    0,    0,    0,
00448         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00449         0,    0,    0,    0,    0,    0,    0,    0,    0,    2,
00450        93,   37,    0,    0,    0,    0,    0,    0,   54,    0,
00451         0,    9,    0,    0,    0,   45,    0,   10,    0,    0,
00452         3,    0
00453 
00454     } ;
00455 
00456 static yyconst flex_int32_t yy_ec[256] =
00457     {   0,
00458         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00459         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00460         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00461         1,    4,    5,    6,    7,    1,    8,    9,    1,   10,
00462        11,   12,   13,   14,   15,   16,   17,   18,   19,   18,
00463        20,   18,   18,   18,   18,   18,   18,   21,   22,   23,
00464        24,   25,    1,   26,   27,   27,   28,   27,   27,   29,
00465        27,   27,   30,   27,   27,   27,   27,   27,   27,   27,
00466        27,   31,   27,   27,   27,   27,   27,   27,   27,   27,
00467        32,    1,   33,    8,   34,    1,   35,   36,   37,   38,
00468 
00469        39,   40,   41,   42,   43,   27,   27,   44,   45,   46,
00470        47,   48,   49,   50,   51,   52,   53,   27,   54,   55,
00471        56,   27,    1,   57,    1,   58,    1,    1,    1,    1,
00472         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00473         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00474         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00475         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00476         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00477         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00478         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00479 
00480         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00481         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00482         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00483         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00484         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00485         1,    1,    1,    1,    1
00486     } ;
00487 
00488 static yyconst flex_int32_t yy_meta[59] =
00489     {   0,
00490         1,    1,    2,    3,    4,    5,    1,    4,    6,    1,
00491         1,    4,    7,    8,    7,    9,   10,   11,   11,   11,
00492        12,    1,   13,   10,   14,    3,   15,   15,   15,   15,
00493        15,    4,    4,   11,   15,   15,   15,   15,   15,   15,
00494        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00495        15,   15,   15,   15,   15,   15,    4,   16
00496     } ;
00497 
00498 static yyconst flex_int16_t yy_base[732] =
00499     {   0,
00500      2040, 2039,    0,   36,   57,   58,   81,    0,  139,    0,
00501       197,  255,   60,   61,  313,    0,  371,    0,  429,    0,
00502       485,    0,  209,  210,  543,    0,   59,   66,  601,    0,
00503       212,  213,  215,  222,  659,    0,  715,    0,  771,    0,
00504       829,    0,  214,  223,  887,  913,  939,    0,  995, 1051,
00505      1109,    0,   67,   68,  238,  265,  267,  280,  287,  288,
00506       289,  296, 2041, 2044, 2044,    0,  484,    0,  486, 1994,
00507      2004, 2044,    0,    0, 1994, 1994,    0,    0,  191, 2044,
00508         0, 1988, 2044,   34, 2044, 1996, 1995, 2044, 1998,    0,
00509       224,  192,  253,    0, 2015, 2044, 2044,  684, 2044,    0,
00510 
00511      2044,    0,    0,    0, 2014, 1167, 2044, 1995, 2044,    0,
00512      2004, 2044, 2007, 2044,    0,  199, 2016, 1987, 1986, 2044,
00513       502,  685, 2044, 2044,    0, 2007,    0,    0, 2019,  492,
00514         0,    0, 2018,  974,    0,    0, 2017,  976,    0,    0,
00515      2016,  991,    0,    0, 2015,  995, 2044, 1996, 2002, 1964,
00516      2011, 1964,    0,  232, 1970, 1974, 1969, 2006,    0,    0,
00517      1974, 1964,    0,    0, 1982, 1954,    0, 1966, 1952, 1951,
00518      1958, 1947, 1996,    0, 1961, 1975,  452,  466,    0,  468,
00519      1962, 1951, 1943, 1942, 1957, 1939,    0,    0,    0,    0,
00520      1943,    0, 1986,    0, 1966, 1967, 1966,    0, 1934, 1933,
00521 
00522      2044, 1940, 1929,  737, 2044, 1937, 1929, 1928, 1943, 1925,
00523         0, 1952,  480,    0, 1941, 1930, 1922, 1921, 1919,    0,
00524      1921, 1925, 1917, 1916, 1914,    0, 1951, 1920, 1912, 1911,
00525      1909,    0, 1946, 1915, 1907, 1906, 1904,    0, 1941, 1910,
00526      1902, 1901, 1899, 2044, 1936, 1915, 1903, 1909,  281, 1943,
00527      1921, 1920, 1921, 1904,  211, 1891, 1902, 2044, 1890, 1889,
00528      1916, 1915, 1897, 2044,    0, 1888, 1917,  674, 1908, 1884,
00529      1909, 1908, 1878, 1881, 1877, 1880, 1908, 1877, 1901, 1900,
00530      1882, 2044, 1872, 1897, 1896, 1866, 1869, 2044,  284, 1865,
00531      1866, 1891, 1890, 1864, 1871, 1861, 1886, 1885, 1859, 1890,
00532 
00533      1856, 1881, 1880, 1854, 1885, 1851, 1876, 1875, 1849, 1880,
00534      1846, 1871, 1870, 1844, 1886, 1853, 1853, 1862, 1851, 2044,
00535      1848, 1861, 2044, 1860,  469, 1832, 1837, 1830, 1828, 1874,
00536      1830, 1841, 2044, 2044, 1823, 1849, 1818, 1837,  860, 2044,
00537      1849, 2044, 2044, 1822, 1817, 1829, 1832, 1831,    0, 1817,
00538      2044, 2044, 1812, 1841, 2044, 2044, 1814, 1809, 1835, 1818,
00539      1836, 2044, 2044, 1805, 1816, 1833, 2044, 2044, 1802, 1828,
00540      1830, 2044, 2044, 1799, 1825, 1827, 2044, 2044, 1796, 1822,
00541      1824, 2044, 2044, 1793, 1806, 1799, 1797, 2044, 1797, 1796,
00542      1797,  497, 1795, 1802, 1797, 1831, 1803, 1787, 1780, 1792,
00543 
00544      2044, 1774, 1804,  874, 2044, 1806, 1805, 1801, 1780, 1799,
00545      1784, 1783, 2044, 1799, 1798, 2044, 1768, 2044, 1796, 1793,
00546      2044, 1794, 2044, 2044, 1793, 2044, 2044, 1792, 2044, 2044,
00547      1791, 1765, 1772, 1771, 1766, 1773, 1788,  902, 1754, 1754,
00548      1764, 1772, 1763, 1760, 1753, 2044, 1747, 1775,  482, 2044,
00549      2044, 2044, 1758, 2044, 1746, 2044, 2044, 2044, 1771, 2044,
00550      1788, 2044, 2044, 2044, 2044, 1738, 1767, 1767, 1749, 1738,
00551      1763,  502, 1736, 1735, 1761, 1745, 1743, 1757, 1731, 1745,
00552      1744,  966, 1754, 1742, 1770, 2044, 1719, 1751, 1767, 1726,
00553      1720,  704, 1766, 1745, 1762, 1726, 1725,    0, 1719, 2044,
00554 
00555      1224, 1753, 1706, 2044, 1703, 1712, 2044, 1725, 1723,  879,
00556      2044, 1739, 2044, 1690, 1669, 1693, 1281, 1034, 1002, 1231,
00557      1254, 2044, 1707, 1018, 1023, 1291, 2044, 1654, 1665, 1666,
00558      1647,  893, 1028, 1630, 1618, 1614, 1646, 1307, 1606, 1591,
00559      1584, 1576, 1575,  691, 1585, 1027,  984,    0, 1574, 1582,
00560      1616, 1578, 1576, 1565,  261, 1566, 1570, 1561, 2044, 1562,
00561      1551, 1554, 1575, 1564, 1530, 1040,    0, 1560, 1541, 1529,
00562      1526, 1545,  699, 1560, 1519, 1525, 1521, 1535,  997, 1064,
00563      1534, 1043, 1549, 1507, 1496, 1541, 1523, 1011, 1540, 1505,
00564      1324, 1310, 1068, 1320, 1069, 1316, 1221, 1347, 1047, 1059,
00565 
00566      1315, 1318, 1331, 1320, 1204, 1312, 1314, 2044, 1313, 1316,
00567      1226, 1298, 1297, 1335, 1302, 1299, 1305, 1302, 1292, 1318,
00568      1333,  882, 1286, 2044, 1290, 1312, 1311, 1297, 1288, 1284,
00569      1282, 1301, 2044, 1290, 1277, 1208, 1282, 1269, 1263, 1271,
00570      1273, 1284, 2044, 1303, 1268, 1224, 1260, 1248, 1247, 1253,
00571      1278, 1234, 1234,  979, 1253, 1252, 1232, 1224, 1236, 1231,
00572      1220,  712, 1246, 1245, 1188, 1166, 1131, 1062, 1082, 1077,
00573      2044, 2044, 1031, 1074, 1026, 1016, 1044,  998, 2044,  949,
00574       975, 2044,  925,  861,  730, 2044,  258, 2044,  269,  209,
00575      2044, 2044, 1364, 1380, 1396, 1412, 1428, 1444, 1460, 1476,
00576 
00577      1492, 1508, 1524,  195,  524, 1534,  881, 1543, 1088, 1238,
00578      1243, 1552, 1562, 1246,   64, 1568, 1584, 1597, 1603, 1615,
00579      1257, 1631, 1647, 1663, 1679, 1695, 1711, 1727, 1741, 1746,
00580      1752
00581     } ;
00582 
00583 static yyconst flex_int16_t yy_def[732] =
00584     {   0,
00585       693,  693,  692,    3,  693,  693,  692,    7,  692,    9,
00586       694,  694,  693,  693,  692,   15,  692,   17,  692,   19,
00587       693,   21,  693,  693,  692,   25,  693,  693,  692,   29,
00588       693,  693,  695,  695,  692,   35,  693,   37,  692,   39,
00589       692,   41,  696,  696,  697,  697,  692,   47,  698,  698,
00590       692,   51,  699,  699,  700,  700,  701,  701,  702,  702,
00591       703,  703,  692,  692,  692,  704,  692,  705,  692,  705,
00592       692,  692,  706,  707,  707,  707,  708,  709,  692,  692,
00593       710,  710,  692,  692,  692,  692,  692,  692,  692,  711,
00594       692,  712,  712,  713,  692,  692,  692,  692,  692,  714,
00595 
00596       692,  715,  716,  717,  692,  692,  692,  692,  692,  718,
00597       692,  692,  719,  692,  720,  720,  692,  692,  692,  692,
00598       692,  692,  692,  692,  721,  722,  723,  723,  692,  692,
00599       724,  724,  692,  692,  725,  725,  692,  692,  726,  726,
00600       692,  692,  727,  727,  692,  692,  692,  704,  692,  692,
00601       692,  692,  705,  692,  692,  692,  705,  692,  706,  707,
00602       707,  707,  708,  709,  692,  692,  710,  710,  692,  692,
00603       692,  692,  692,  711,  692,  692,  712,  712,  713,  712,
00604       692,  692,  692,  692,  692,  692,  714,  715,  716,  717,
00605       692,  106,  692,  718,  692,  719,  692,  720,  692,  692,
00606 
00607       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00608       721,  722,  722,  723,  692,  692,  692,  692,  692,  724,
00609       692,  692,  692,  692,  692,  725,  692,  692,  692,  692,
00610       692,  726,  692,  692,  692,  692,  692,  727,  692,  692,
00611       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00612       692,  692,  728,  705,  692,  707,  707,  692,  692,  710,
00613       692,  692,  692,  692,  729,  692,  692,  712,  692,  692,
00614       692,  692,  692,  692,  692,  692,  692,  730,  692,  692,
00615       692,  692,  692,  692,  692,  692,  692,  692,  722,  692,
00616       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00617 
00618       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00619       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00620       692,  692,  692,  728,  728,  705,  692,  692,  707,  707,
00621       692,  710,  692,  692,  692,  729,  692,  692,  712,  692,
00622       692,  692,  692,  692,  692,  692,  692,  692,  730,  730,
00623       692,  692,  692,  692,  692,  692,  692,  692,  722,  692,
00624       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00625       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00626       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00627       692,  728,  705,  692,  692,  707,  692,  692,  710,  692,
00628 
00629       692,  692,  692,  712,  692,  692,  692,  692,  692,  692,
00630       730,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00631       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00632       692,  692,  692,  692,  692,  692,  692,  728,  705,  692,
00633       692,  692,  692,  692,  710,  692,  692,  692,  712,  692,
00634       692,  692,  692,  692,  730,  692,  692,  692,  692,  692,
00635       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00636       692,  728,  705,  692,  692,  692,  692,  692,  710,  692,
00637       692,  712,  692,  730,  692,  692,  692,  692,  692,  692,
00638       692,  728,  705,  692,  692,  692,  692,  710,  692,  692,
00639 
00640       712,  692,  730,  692,  692,  692,  692,  692,  692,  728,
00641       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00642       712,  692,  521,  712,  712,  713,  692,  730,  692,  692,
00643       692,  692,  728,  692,  692,  692,  692,  692,  692,  692,
00644       692,  692,  692,  712,  692,  712,  712,  713,  730,  692,
00645       692,  692,  692,  692,  728,  692,  692,  692,  692,  692,
00646       692,  692,  692,  692,  692,  712,  730,  692,  692,  692,
00647       692,  692,  728,  692,  692,  692,  692,  692,  692,  692,
00648       692,  712,  692,  692,  692,  692,  692,  728,  692,  692,
00649       692,  692,  692,  692,  692,  692,  692,  692,  712,  692,
00650 
00651       692,  692,  692,  692,  728,  692,  692,  692,  692,  692,
00652       692,  692,  692,  692,  692,  692,  692,  692,  692,  731,
00653       692,  728,  692,  692,  692,  692,  692,  692,  692,  692,
00654       692,  692,  692,  692,  692,  728,  692,  692,  692,  692,
00655       692,  692,  692,  692,  692,  728,  692,  692,  692,  692,
00656       692,  692,  692,  728,  692,  692,  692,  692,  692,  692,
00657       692,  728,  692,  692,  692,  692,  692,  692,  692,  728,
00658       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00659       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00660       692,    0,  692,  692,  692,  692,  692,  692,  692,  692,
00661 
00662       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00663       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00664       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00665       692
00666     } ;
00667 
00668 static yyconst flex_int16_t yy_nxt[2103] =
00669     {   0,
00670        64,   64,   65,   64,   64,   64,   64,   64,   66,   64,
00671        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
00672        64,   64,   67,   64,   64,   64,   68,   68,   68,   68,
00673        68,   64,   64,   68,   68,   68,   68,   68,   68,   68,
00674        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
00675        68,   68,   68,   68,   68,   68,   64,   64,   69,   65,
00676        65,   65,   65,   65,   91,   70,   72,   72,   65,  128,
00677       128,   91,  129,  129,  169,  130,  130,  170,  188,   71,
00678        71,   64,   64,   65,   64,   64,   64,   72,   64,   64,
00679        64,   64,   64,   73,   64,   73,   73,   64,   73,   73,
00680 
00681        73,   64,   64,   64,   64,   64,   64,   73,   73,   73,
00682        73,   73,   64,   64,   73,   73,   73,   73,   73,   73,
00683        73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
00684        73,   73,   73,   73,   73,   73,   73,   64,   64,   64,
00685        64,   65,   64,   64,   64,   64,   64,   64,   64,   64,
00686        64,   64,   64,   64,   64,   64,   74,   74,   74,   64,
00687        64,   64,   64,   64,   64,   74,   75,   76,   74,   74,
00688        64,   64,   74,   74,   74,   74,   74,   74,   74,   74,
00689        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
00690        74,   74,   74,   74,   74,   64,   64,   64,   64,   65,
00691 
00692        64,   64,   64,   64,   64,   64,   64,   64,   64,  148,
00693        64,   88,   88,   64,   65,   65,   65,   97,   64,   64,
00694        64,   64,   64,   98,   97,   65,  165,  175,   64,   64,
00695        98,   89,   89,  691,   95,   95,  108,   99,  178,  199,
00696       132,  166,  200,  133,   99,  108,  134,  327,  176,  179,
00697       249,  250,  328,   64,   64,   64,   64,   65,   64,   64,
00698        64,   64,   64,   64,   64,   64,   64,  132,   64,  136,
00699       133,   64,  137,  134,  690,  138,   64,   64,   64,   64,
00700        64,  251,  136,  325,  319,  137,   64,   64,  138,  140,
00701       140,  144,  141,  141,  145,  142,  142,  146,  144,  178,
00702 
00703       180,  145,  147,  359,  146,  320,  573,  689,  288,  147,
00704       179,   64,   64,   64,   64,   65,   64,   64,   64,   64,
00705        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
00706        78,   78,   78,   64,   64,   64,   64,   64,   64,   78,
00707        78,   78,   78,   78,   64,   64,   78,   78,   78,   78,
00708        78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
00709        78,   78,   78,   78,   78,   78,   78,   78,   78,   64,
00710        64,   64,   64,   65,   64,   64,   64,   64,   64,   64,
00711        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
00712        64,   64,   64,   79,   64,   64,   64,   80,   80,   80,
00713 
00714        80,   80,   64,   64,   80,   80,   80,   80,   80,   80,
00715        80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
00716        80,   80,   80,   80,   80,   80,   80,   64,   80,   64,
00717        64,   65,   64,   64,   64,   64,   64,   64,   64,   64,
00718        64,   64,   64,   64,   64,   64,   81,   81,   81,   64,
00719        64,   64,   64,   64,   64,   81,   81,   81,   81,   81,
00720        64,   64,   81,   81,   81,   81,   81,   81,   81,   81,
00721        81,   81,   81,   81,   81,   82,   81,   81,   81,   81,
00722        81,   81,   81,   81,   81,   64,   64,   65,  149,   83,
00723       149,  325,   83,   84,   83,   83,   83,   83,  178,   83,
00724 
00725       150,   83,  150,  204,  288,  204,  268,   85,   83,  179,
00726       392,  205,  178,  180,  178,  438,   83,   83,  151,  325,
00727       151,  289,   86,  179,  325,  179,  216,  154,  482,  155,
00728        87,  152,  217,  152,  153,  218,  492,  156,  153,  179,
00729       219,   83,   83,   64,   64,   65,   64,   64,   64,   64,
00730        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
00731        90,   90,   90,   64,   64,   64,   64,   64,   64,   90,
00732        90,   90,   90,   90,   64,   64,   90,   90,   90,   90,
00733        90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
00734        90,   90,   90,   90,   90,   90,   90,   90,   90,   64,
00735 
00736        64,   64,   64,   65,   64,   64,   64,   64,   64,   64,
00737        64,   64,   64,   92,   64,   92,   92,   64,   92,   92,
00738        92,   92,   64,   64,   64,   64,   64,   92,   92,   92,
00739        92,   92,   64,   64,   92,   92,   92,   92,   92,   92,
00740        92,   92,   92,   92,   92,   92,   92,   93,   92,   92,
00741        92,   92,   92,   92,   92,   92,   92,   64,   94,   64,
00742        64,   65,   64,   64,   64,   64,   64,   64,   64,   64,
00743        64,   64,   64,   64,   64,   64,  100,  100,  100,   64,
00744        64,   64,   64,   64,   64,  100,  100,  100,  100,  100,
00745        64,   64,  100,  100,  100,  100,  100,  100,  100,  100,
00746 
00747       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
00748       100,  100,  100,  100,  100,   64,   64,   65,  182,  206,
00749       178,  325,  588,  339,  183,  207,  325,  184,  208,  185,
00750       209,  179,  186,  210,  325,  688,  670,  178,  204,  101,
00751       204,  102,  102,  102,  102,  102,  205,  510,  179,  102,
00752       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
00753       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
00754       102,   64,   64,   65,   64,   64,   64,   64,   64,   64,
00755        64,   64,   64,   64,   64,   64,   64,   64,  103,  103,
00756       103,  103,   64,   64,   64,   64,   64,  103,  103,  103,
00757 
00758       103,  103,   64,   64,  103,  103,  103,  103,  103,  103,
00759       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
00760       103,  103,  103,  103,  103,  103,  103,   64,  103,  104,
00761       104,   65,  104,  104,  104,  104,  104,  104,  104,  104,
00762       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
00763       104,  105,  104,  104,  104,  106,  106,  106,  106,  106,
00764       104,  104,  106,  106,  106,  106,  106,  106,  106,  106,
00765       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
00766       106,  106,  106,  106,  106,  104,  104,  109,  109,   65,
00767       109,  160,  111,  109,  404,  160,  109,  109,  553,  687,
00768 
00769       109,  325,  109,  109,  325,  472,  178,  109,  109,  109,
00770       109,  109,  109,  109,  109,   65,  109,  179,  111,  109,
00771       178,  533,  109,  109,  325,  449,  109,  636,  109,  109,
00772       686,  179,  554,  109,  109,  109,  109,  109,  109,  112,
00773       112,   65,  112,  112,  112,  112,  112,  112,  112,  112,
00774       112,  112,  112,  112,  112,  112,  113,  113,  113,  112,
00775       112,  112,  112,  112,  112,  113,  113,  113,  113,  113,
00776       112,  112,  113,  113,  113,  113,  113,  113,  113,  113,
00777       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
00778       113,  113,  113,  113,  113,  112,  112,   65,  685,  115,
00779 
00780       684,  325,  115,  116,  117,  594,  115,  115,  222,  115,
00781       228,  115,  178,  180,  223,  501,  229,  224,  115,  230,
00782       595,  683,  225,  179,  231,  234,  115,  115,  662,  240,
00783       178,  235,  118,  325,  236,  241,  541,  544,  242,  237,
00784       119,  179,  542,  243,  522,  543,  522,  605,  522,  682,
00785       325,  115,  115,   65,  681,  115,  546,  522,  115,  116,
00786       117,  547,  115,  115,  178,  115,  522,  115,  555,  178,
00787       566,  680,  596,  178,  115,  179,  610,  594,  582,  679,
00788       179,  678,  115,  115,  179,  544,  178,  597,  118,  178,
00789       522,  611,  595,  178,  599,  615,  119,  179,  164,  325,
00790 
00791       179,  616,  164,  617,  179,  677,  676,  115,  115,  120,
00792       121,   65,  121,  120,  120,  120,  120,  122,  123,  124,
00793       120,  120,  120,  120,  120,  120,  125,  125,  125,  120,
00794       120,  126,  120,  120,  120,  125,  125,  125,  125,  125,
00795       120,  120,  125,  125,  125,  125,  125,  125,  125,  125,
00796       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
00797       125,  125,  125,  125,  125,  120,  120,  190,  190,  675,
00798       190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
00799       190,  190,  190,  190,  192,  192,  192,  190,  190,  674,
00800       190,  190,  190,  192,  192,  192,  192,  192,  190,  190,
00801 
00802       192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
00803       192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
00804       192,  192,  192,  190,  190,  517,  325,  517,  518,  596,
00805       325,  518,  519,  520,  610,  518,  521,  522,  523,  673,
00806       518,  522,  622,  522,  597,  522,  325,  518,  167,  611,
00807       672,  671,  167,  174,  522,  520,  187,  174,  669,  646,
00808       187,  524,  654,  522,  522,  668,  544,  211,  544,  525,
00809       178,  211,  667,  666,  665,  664,  663,  522,  661,  660,
00810       518,  526,  517,  659,  517,  518,  522,  522,  518,  519,
00811       520,  658,  518,  518,  522,  538,  657,  518,  656,  655,
00812 
00813       178,  522,  653,  548,  518,  548,  652,  651,  650,  649,
00814       522,  179,  520,  648,  522,  545,  611,  522,  539,  522,
00815       647,  522,  645,  522,  644,  643,  540,  642,  641,  640,
00816       522,  639,  597,  595,  638,  637,  635,  518,  518,  522,
00817       634,  632,  631,  630,  629,  628,  614,  522,  627,  626,
00818       625,  522,  624,  623,  621,  620,  619,  618,  614,  613,
00819       612,  609,  608,  522,   64,   64,   64,   64,   64,   64,
00820        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
00821        77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
00822        77,   77,   77,   77,   77,   77,   96,   96,   96,   96,
00823 
00824        96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
00825        96,   96,  107,  107,  107,  107,  107,  107,  107,  107,
00826       107,  107,  107,  107,  107,  107,  107,  107,  110,  110,
00827       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
00828       110,  110,  110,  110,  114,  114,  114,  114,  114,  114,
00829       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
00830       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
00831       127,  127,  127,  127,  127,  127,  131,  131,  131,  131,
00832       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00833       131,  131,  135,  135,  135,  135,  135,  135,  135,  135,
00834 
00835       135,  135,  135,  135,  135,  135,  135,  135,  139,  139,
00836       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
00837       139,  139,  139,  139,  143,  143,  143,  143,  143,  143,
00838       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
00839       159,  607,  159,  606,  159,  604,  603,  602,  159,  163,
00840       601,  163,  600,  163,  163,  598,  593,  163,  177,  592,
00841       177,  591,  177,  177,  590,  589,  177,  177,  179,  587,
00842       179,  586,  179,  179,  585,  584,  179,  179,  189,  189,
00843       583,  581,  189,  189,  190,  580,  190,  190,  190,  190,
00844       190,  190,  190,  190,  190,  190,  579,  190,  190,  190,
00845 
00846       194,  578,  194,  194,  522,  577,  576,  194,  575,  574,
00847       572,  194,  194,  196,  196,  571,  570,  196,  198,  569,
00848       198,  198,  568,  567,  198,  565,  564,  563,  562,  561,
00849       198,  212,  212,  212,  212,  212,  212,  212,  212,  212,
00850       212,  212,  212,  212,  560,  212,  212,  214,  214,  214,
00851       214,  559,  558,  214,  214,  214,  214,  214,  214,  214,
00852       214,  214,  214,  220,  220,  220,  220,  557,  556,  220,
00853       220,  220,  220,  220,  220,  220,  220,  220,  220,  226,
00854       226,  226,  226,  552,  551,  226,  226,  226,  226,  226,
00855       226,  226,  226,  226,  226,  232,  232,  232,  232,  550,
00856 
00857       549,  232,  232,  232,  232,  232,  232,  232,  232,  232,
00858       232,  238,  238,  238,  238,  545,  537,  238,  536,  238,
00859       238,  238,  238,  238,  238,  238,  238,  324,  535,  324,
00860       324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
00861       324,  324,  324,  336,  534,  336,  532,  336,  531,  336,
00862       336,  336,  336,  530,  529,  336,  349,  528,  527,  516,
00863       349,  349,  633,  515,  633,  514,  633,  513,  512,  511,
00864       509,  508,  507,  506,  505,  504,  503,  502,  500,  499,
00865       498,  258,  497,  496,  495,  494,  493,  320,  491,  490,
00866       489,  488,  487,  486,  485,  484,  483,  481,  480,  479,
00867 
00868       478,  477,  476,  475,  474,  473,  471,  470,  469,  468,
00869       467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
00870       457,  456,  455,  454,  453,  452,  451,  450,  448,  447,
00871       446,  445,  444,  443,  442,  441,  440,  439,  437,  436,
00872       435,  434,  433,  432,  431,  430,  429,  428,  427,  426,
00873       425,  424,  423,  422,  421,  420,  419,  418,  417,  416,
00874       415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
00875       405,  403,  402,  401,  400,  399,  398,  397,  396,  395,
00876       394,  393,  325,  391,  390,  389,  388,  387,  386,  385,
00877       384,  383,  382,  381,  380,  379,  378,  377,  376,  375,
00878 
00879       374,  373,  372,  371,  370,  369,  368,  367,  366,  365,
00880       364,  363,  362,  361,  360,  358,  357,  356,  355,  354,
00881       353,  352,  351,  350,  348,  347,  346,  345,  344,  343,
00882       342,  341,  340,  338,  337,  335,  334,  333,  332,  331,
00883       330,  329,  326,  325,  323,  322,  321,  318,  317,  316,
00884       315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
00885       305,  304,  303,  302,  301,  300,  299,  298,  297,  296,
00886       295,  294,  293,  292,  291,  290,  288,  287,  286,  285,
00887       284,  283,  282,  281,  280,  279,  278,  197,  277,  276,
00888       275,  274,  273,  272,  271,  270,  269,  267,  266,  265,
00889 
00890       264,  263,  262,  261,  260,  259,  258,  257,  256,  255,
00891       254,  253,  252,  248,  247,  246,  245,  244,  239,  233,
00892       227,  221,  215,  213,  203,  202,  201,  197,  195,  193,
00893       191,  181,  173,  172,  171,  168,  162,  161,  158,  157,
00894       692,   65,   65,   63,  692,  692,  692,  692,  692,  692,
00895       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00896       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00897       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00898       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00899       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
00900 
00901       692,  692
00902     } ;
00903 
00904 static yyconst flex_int16_t yy_chk[2103] =
00905     {   0,
00906         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00907         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00908         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00909         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00910         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00911         3,    3,    3,    3,    3,    3,    3,    3,    4,    5,
00912         6,   27,   13,   14,   27,    4,   13,   14,   28,   53,
00913        54,   28,   53,   54,   84,   53,   54,   84,  715,    5,
00914         6,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00915         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00916 
00917         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00918         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00919         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00920         7,    7,    7,    7,    7,    7,    7,    7,    7,    9,
00921         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00922         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00923         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00924         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00925         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00926         9,    9,    9,    9,    9,    9,    9,   11,   11,   11,
00927 
00928        11,   11,   11,   11,   11,   11,   11,   11,   11,  704,
00929        11,   23,   24,   11,   31,   32,   43,   33,   11,   11,
00930        11,   11,   11,   33,   34,   44,   79,   91,   11,   11,
00931        34,   23,   24,  690,   31,   32,   43,   33,   92,  116,
00932        55,   79,  116,   55,   34,   44,   55,  255,   91,   92,
00933       154,  154,  255,   11,   11,   12,   12,   12,   12,   12,
00934        12,   12,   12,   12,   12,   12,   12,   56,   12,   57,
00935        56,   12,   57,   56,  689,   57,   12,   12,   12,   12,
00936        12,  154,   58,  555,  249,   58,   12,   12,   58,   59,
00937        60,   61,   59,   60,   61,   59,   60,   61,   62,   93,
00938 
00939        93,   62,   61,  289,   62,  249,  555,  687,  289,   62,
00940        93,   12,   12,   15,   15,   15,   15,   15,   15,   15,
00941        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00942        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00943        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00944        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00945        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00946        15,   17,   17,   17,   17,   17,   17,   17,   17,   17,
00947        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
00948        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
00949 
00950        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
00951        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
00952        17,   17,   17,   17,   17,   17,   17,   17,   17,   19,
00953        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00954        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00955        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00956        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00957        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00958        19,   19,   19,   19,   19,   19,   19,   21,   67,   21,
00959        69,  325,   21,   21,   21,   21,   21,   21,  177,   21,
00960 
00961        67,   21,   69,  121,  213,  121,  180,   21,   21,  177,
00962       325,  121,  178,  178,  180,  392,   21,   21,   67,  392,
00963        69,  213,   21,  178,  472,  180,  130,   69,  449,   69,
00964        21,   67,  130,   69,  705,  130,  472,   69,  705,  449,
00965       130,   21,   21,   25,   25,   25,   25,   25,   25,   25,
00966        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
00967        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
00968        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
00969        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
00970        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
00971 
00972        25,   29,   29,   29,   29,   29,   29,   29,   29,   29,
00973        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
00974        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
00975        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
00976        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
00977        29,   29,   29,   29,   29,   29,   29,   29,   29,   35,
00978        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
00979        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
00980        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
00981        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
00982 
00983        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
00984        35,   35,   35,   35,   35,   35,   35,   37,   98,  122,
00985       268,  573,  573,  268,   98,  122,  492,   98,  122,   98,
00986       122,  268,   98,  122,  662,  685,  662,  544,  204,   37,
00987       204,   37,   37,   37,   37,   37,  204,  492,  544,   37,
00988        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00989        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00990        37,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00991        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00992        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00993 
00994        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00995        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00996        39,   39,   39,   39,   39,   39,   39,   39,   39,   41,
00997        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
00998        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
00999        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
01000        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
01001        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
01002        41,   41,   41,   41,   41,   41,   41,   45,   45,   45,
01003        45,  707,   45,   45,  339,  707,   45,   45,  532,  684,
01004 
01005        45,  510,   45,   45,  622,  438,  339,   45,   45,   45,
01006        45,   45,   45,   46,   46,   46,   46,  339,   46,   46,
01007       404,  510,   46,   46,  438,  404,   46,  622,   46,   46,
01008       683,  404,  532,   46,   46,   46,   46,   46,   46,   47,
01009        47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
01010        47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
01011        47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
01012        47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
01013        47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
01014        47,   47,   47,   47,   47,   47,   47,   49,  681,   49,
01015 
01016       680,  654,   49,   49,   49,  579,   49,   49,  134,   49,
01017       138,   49,  482,  482,  134,  482,  138,  134,   49,  138,
01018       579,  678,  134,  482,  138,  142,   49,   49,  654,  146,
01019       547,  142,   49,  588,  142,  146,  519,  547,  146,  142,
01020        49,  547,  519,  146,  518,  519,  518,  588,  518,  677,
01021       533,   49,   49,   50,  676,   50,  524,  518,   50,   50,
01022        50,  525,   50,   50,  524,   50,  518,   50,  533,  525,
01023       546,  675,  580,  546,   50,  524,  593,  595,  566,  674,
01024       525,  673,   50,   50,  546,  599,  566,  580,   50,  582,
01025       518,  593,  595,  599,  582,  600,   50,  566,  709,  670,
01026 
01027       582,  600,  709,  600,  599,  669,  668,   50,   50,   51,
01028        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
01029        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
01030        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
01031        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
01032        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
01033        51,   51,   51,   51,   51,   51,   51,  106,  106,  667,
01034       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
01035       106,  106,  106,  106,  106,  106,  106,  106,  106,  666,
01036       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
01037 
01038       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
01039       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
01040       106,  106,  106,  106,  106,  501,  605,  501,  501,  597,
01041       636,  501,  501,  501,  611,  501,  501,  501,  501,  665,
01042       501,  520,  605,  520,  597,  520,  646,  501,  710,  611,
01043       664,  663,  710,  711,  520,  501,  714,  711,  661,  636,
01044       714,  501,  646,  520,  521,  660,  521,  721,  521,  501,
01045       501,  721,  659,  658,  657,  656,  655,  521,  653,  652,
01046       501,  501,  517,  651,  517,  517,  521,  520,  517,  517,
01047       517,  650,  517,  517,  517,  517,  649,  517,  648,  647,
01048 
01049       521,  526,  645,  526,  517,  526,  644,  642,  641,  640,
01050       521,  521,  517,  639,  526,  538,  638,  538,  517,  538,
01051       637,  538,  635,  526,  634,  632,  517,  631,  630,  629,
01052       538,  628,  627,  626,  625,  623,  621,  517,  517,  538,
01053       620,  619,  618,  617,  616,  615,  614,  526,  613,  612,
01054       610,  609,  607,  606,  604,  603,  602,  601,  598,  596,
01055       594,  592,  591,  538,  693,  693,  693,  693,  693,  693,
01056       693,  693,  693,  693,  693,  693,  693,  693,  693,  693,
01057       694,  694,  694,  694,  694,  694,  694,  694,  694,  694,
01058       694,  694,  694,  694,  694,  694,  695,  695,  695,  695,
01059 
01060       695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
01061       695,  695,  696,  696,  696,  696,  696,  696,  696,  696,
01062       696,  696,  696,  696,  696,  696,  696,  696,  697,  697,
01063       697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
01064       697,  697,  697,  697,  698,  698,  698,  698,  698,  698,
01065       698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
01066       699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
01067       699,  699,  699,  699,  699,  699,  700,  700,  700,  700,
01068       700,  700,  700,  700,  700,  700,  700,  700,  700,  700,
01069       700,  700,  701,  701,  701,  701,  701,  701,  701,  701,
01070 
01071       701,  701,  701,  701,  701,  701,  701,  701,  702,  702,
01072       702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
01073       702,  702,  702,  702,  703,  703,  703,  703,  703,  703,
01074       703,  703,  703,  703,  703,  703,  703,  703,  703,  703,
01075       706,  590,  706,  589,  706,  587,  586,  585,  706,  708,
01076       584,  708,  583,  708,  708,  581,  578,  708,  712,  577,
01077       712,  576,  712,  712,  575,  574,  712,  712,  713,  572,
01078       713,  571,  713,  713,  570,  569,  713,  713,  716,  716,
01079       568,  565,  716,  716,  717,  564,  717,  717,  717,  717,
01080       717,  717,  717,  717,  717,  717,  563,  717,  717,  717,
01081 
01082       718,  562,  718,  718,  561,  560,  558,  718,  557,  556,
01083       554,  718,  718,  719,  719,  553,  552,  719,  720,  551,
01084       720,  720,  550,  549,  720,  545,  543,  542,  541,  540,
01085       720,  722,  722,  722,  722,  722,  722,  722,  722,  722,
01086       722,  722,  722,  722,  539,  722,  722,  723,  723,  723,
01087       723,  537,  536,  723,  723,  723,  723,  723,  723,  723,
01088       723,  723,  723,  724,  724,  724,  724,  535,  534,  724,
01089       724,  724,  724,  724,  724,  724,  724,  724,  724,  725,
01090       725,  725,  725,  531,  530,  725,  725,  725,  725,  725,
01091       725,  725,  725,  725,  725,  726,  726,  726,  726,  529,
01092 
01093       528,  726,  726,  726,  726,  726,  726,  726,  726,  726,
01094       726,  727,  727,  727,  727,  523,  516,  727,  515,  727,
01095       727,  727,  727,  727,  727,  727,  727,  728,  514,  728,
01096       728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
01097       728,  728,  728,  729,  512,  729,  509,  729,  508,  729,
01098       729,  729,  729,  506,  505,  729,  730,  503,  502,  499,
01099       730,  730,  731,  497,  731,  496,  731,  495,  494,  493,
01100       491,  490,  489,  488,  487,  485,  484,  483,  481,  480,
01101       479,  478,  477,  476,  475,  474,  473,  471,  470,  469,
01102       468,  467,  466,  461,  459,  455,  453,  448,  447,  445,
01103 
01104       444,  443,  442,  441,  440,  439,  437,  436,  435,  434,
01105       433,  432,  431,  428,  425,  422,  420,  419,  417,  415,
01106       414,  412,  411,  410,  409,  408,  407,  406,  403,  402,
01107       400,  399,  398,  397,  396,  395,  394,  393,  391,  390,
01108       389,  387,  386,  385,  384,  381,  380,  379,  376,  375,
01109       374,  371,  370,  369,  366,  365,  364,  361,  360,  359,
01110       358,  357,  354,  353,  350,  348,  347,  346,  345,  344,
01111       341,  338,  337,  336,  335,  332,  331,  330,  329,  328,
01112       327,  326,  324,  322,  321,  319,  318,  317,  316,  315,
01113       314,  313,  312,  311,  310,  309,  308,  307,  306,  305,
01114 
01115       304,  303,  302,  301,  300,  299,  298,  297,  296,  295,
01116       294,  293,  292,  291,  290,  287,  286,  285,  284,  283,
01117       281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
01118       271,  270,  269,  267,  266,  263,  262,  261,  260,  259,
01119       257,  256,  254,  253,  252,  251,  250,  248,  247,  246,
01120       245,  243,  242,  241,  240,  239,  237,  236,  235,  234,
01121       233,  231,  230,  229,  228,  227,  225,  224,  223,  222,
01122       221,  219,  218,  217,  216,  215,  212,  210,  209,  208,
01123       207,  206,  203,  202,  200,  199,  197,  196,  195,  193,
01124       191,  186,  185,  184,  183,  182,  181,  176,  175,  173,
01125 
01126       172,  171,  170,  169,  168,  166,  165,  162,  161,  158,
01127       157,  156,  155,  152,  151,  150,  149,  148,  145,  141,
01128       137,  133,  129,  126,  119,  118,  117,  113,  111,  108,
01129       105,   95,   89,   87,   86,   82,   76,   75,   71,   70,
01130        63,    2,    1,  692,  692,  692,  692,  692,  692,  692,
01131       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
01132       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
01133       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
01134       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
01135       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
01136 
01137       692,  692
01138     } ;
01139 
01140 static yy_state_type yy_last_accepting_state;
01141 static char *yy_last_accepting_cpos;
01142 
01143 extern int tagYY_flex_debug;
01144 int tagYY_flex_debug = 0;
01145 
01146 /* The intent behind this definition is that it'll catch
01147  * any uses of REJECT which flex missed.
01148  */
01149 #define REJECT reject_used_but_not_detected
01150 #define yymore() yymore_used_but_not_detected
01151 #define YY_MORE_ADJ 0
01152 #define YY_RESTORE_YY_MORE_OFFSET
01153 char *tagYYtext;
01154 #line 1 "doxytag.l"
01155 /******************************************************************************
01156  *
01157  * $Id: doxytag.l,v 1.27 2001/03/19 19:27:40 root Exp $
01158  *
01159  * Copyright (C) 1997-2008 by Dimitri van Heesch.
01160  *
01161  * Permission to use, copy, modify, and distribute this software and its
01162  * documentation under the terms of the GNU General Public License is hereby 
01163  * granted. No representations are made about the suitability of this software 
01164  * for any purpose. It is provided "as is" without express or implied warranty.
01165  * See the GNU General Public License for more details.
01166  *
01167  * Documents produced by Doxygen are derivative works derived from the
01168  * input used in their production; they are not affected by this license.
01169  *
01170  */
01171 #line 19 "doxytag.l"
01172 /*
01173  *      includes
01174  */
01175 #include <stdio.h>
01176 #include <assert.h>
01177 #include <ctype.h>
01178 
01179 #include "qtbc.h"
01180 #include <qstrlist.h>
01181 #include <qfileinfo.h>
01182 #include <qfile.h>
01183 #include <qdict.h>
01184 #include <qtextstream.h>
01185 #include <qdir.h>
01186   
01187 #include "version.h"
01188 //#include "suffixtree.h"
01189 //#include "searchindex.h"
01190 #include "logos.h"
01191 
01192 static QCString convertToXML(const char *s)
01193 { 
01194   QCString result;
01195   if (s==0) return result;
01196   const char *p=s;
01197   char c;
01198   while ((c=*p++))
01199   {     
01200     switch (c)
01201     {   
01202       case '<':  result+="&lt;";   break;
01203       case '>':  result+="&gt;";   break;
01204       case '&':  result+="&amp;";  break;
01205       case '\'': result+="&apos;"; break; 
01206       case '"':  result+="&quot;"; break;
01207       default:   result+=c;        break;         
01208     }
01209   }
01210   return result;
01211 }
01212   
01213 struct MemberDef
01214 {
01215   QCString name;
01216   QCString anchor;
01217   QCString args;
01218 };  
01219   
01220 struct ClassDef
01221 {
01222   QCString  name;
01223   QStrList bases;
01224   QCString  fileName;
01225   bool isFile;
01226   QList<MemberDef> memberList;
01227 };  
01228 
01229 QList<ClassDef> classList;
01230 QDict<ClassDef> classDict(1009);
01231 QList<ClassDef> fileList;
01232 QDict<ClassDef> fileDict(1009);
01233 
01234 static bool genTag;
01235 static bool genIndex;
01236 
01237 static QStrList  bases;
01238 static QCString  inputString;
01239 static int       inputPosition;
01240 static QCString  yyFileName;
01241 static int       yyLineNr;
01242 static QCString  classFile;
01243 static QCString  memberRef;
01244 static QCString  memberName;
01245 static QCString  memberArgs;
01246 static QCString  className;
01247 static QCString  baseName;
01248 static QCString  docBaseLink;
01249 static QCString  docAnchor;
01250 static QCString  docRefName;
01251 static bool      nameBug;
01252 //static SearchIndex searchIndex;
01253 
01254 #define YY_NEVER_INTERACTIVE 1
01255 
01256 /* -----------------------------------------------------------------
01257  */
01258 #undef  YY_INPUT
01259 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
01260 
01261 static int yyread(char *buf,int max_size)
01262 {
01263     int c=0;
01264     while( c < max_size && inputString[inputPosition] )
01265     {
01266         *buf = inputString[inputPosition++] ;
01267         c++; buf++;
01268     }
01269     return c;
01270 }
01271 
01272 static void addClass(const char *clName)
01273 {
01274   if (classDict[clName]==0)
01275   {
01276     //printf("addClass(%s)\n",clName);
01277     ClassDef *cd=new ClassDef;
01278     cd->name=clName;
01279     cd->fileName=yyFileName;
01280     cd->isFile=FALSE;
01281     classList.append(cd);
01282     classDict.insert(clName,cd);
01283   }
01284 }
01285 
01286 static void addFile(const char *fName)
01287 {
01288   if (classDict[fName]==0)
01289   {
01290     ClassDef *fd=new ClassDef;
01291     fd->name=fName;
01292     fd->fileName=yyFileName;
01293     fd->isFile=TRUE;
01294     classList.append(fd);
01295     classDict.insert(fName,fd);
01296   }
01297 }
01298 
01299 static void addBases(const char *clName)
01300 {
01301   ClassDef *cd=0;
01302   if (clName && (cd=classDict[clName])) cd->bases=bases;
01303 }
01304 
01305 static void addMember(const char *memName,const char *memRef,const char *memArgs)
01306 {
01307   //printf("addMember(%s,%s,%s)\n",memName,memRef,memArgs);
01308   ClassDef *cd=classList.last();
01309   if (cd)
01310   {
01311     MemberDef *md;
01312     md=new MemberDef;
01313     md->name=memName;
01314     md->anchor=memRef; 
01315     md->args=memArgs;
01316     cd->memberList.append(md);
01317   }
01318   else
01319   {
01320     //printf("Warning: found member %s %s but not class was found to insert it!\n",
01321     //  memName,memArgs);
01322   }
01323 }
01324 
01325 static void addReference()
01326 {
01327   //printf("addReference() key: %s ref:%s\n",
01328   //  docRefName.data(),(docBaseLink+"#"+docAnchor).data());
01329   //if (genIndex && !docRefName.isEmpty() && !docBaseLink.isEmpty())
01330   //{
01331   //  if (docAnchor.isEmpty())
01332   //    searchIndex.addReference(docRefName,docBaseLink);
01333   //  else
01334   //    searchIndex.addReference(docRefName,docBaseLink+"#"+docAnchor);
01335   //  searchIndex.addWord(docRefName,docRefName,TRUE);
01336   //}
01337 }
01338 
01339 QCString unhtmlify(const char *str)
01340 {
01341   QCString result;
01342   const char *p=str;
01343   char c;
01344   while ((c=*p)!='\0')
01345   {
01346     if (c!='&') { result+=c; p++; }
01347     else
01348     {
01349       if (strncmp(p,"&amp;",5)==0)       { result+='&'; p+=5; } 
01350       else if (strncmp(p,"&lt;",4)==0)   { result+='<'; p+=4; }
01351       else if (strncmp(p,"&gt;",4)==0)   { result+='>'; p+=4; }
01352       else if (strncmp(p,"&quot;",6)==0) { result+='"'; p+=4; }
01353         else /* should not happen */     { result+='&'; p++; }
01354     }
01355   }
01356   return result;
01357 }
01358 
01359 
01360 
01361 
01362 
01363 
01364 
01365 
01366 
01367 
01368 
01369 
01370 
01371 
01372 
01373 
01374 
01375 
01376 
01377 
01378 
01379 
01380 
01381 
01382 
01383 
01384 
01385 
01386 
01387 
01388 
01389 #line 1390 "<stdout>"
01390 
01391 #define INITIAL 0
01392 #define Start 1
01393 #define SearchClassFile 2
01394 #define ReadClassFile 3
01395 #define CheckClassName 4
01396 #define ReadClassName 5
01397 #define SearchMemberRef 6
01398 #define ReadMemberRef 7
01399 #define SearchMemberName 8
01400 #define ReadMemberName 9
01401 #define ReadOperator 10
01402 #define SearchBaseClasses 11
01403 #define ReadBaseClass 12
01404 #define SearchRefName 13
01405 #define ReadRefName 14
01406 #define SearchArgs 15
01407 #define ReadArgs 16
01408 #define SearchWords 17
01409 #define SkipHTMLTag 18
01410 #define CheckConstructor 19
01411 #define SkipPreformated 20
01412 #define Qt3ReadType 21
01413 #define Qt3ReadAnchor 22
01414 #define Qt3ReadName 23
01415 #define Qt3ReadOperator 24
01416 #define Qt3ReadArgs 25
01417 #define DoxReadAnchor 26
01418 #define DoxReadName 27
01419 #define DoxReadArgs 28
01420 #define DoxClassName 29
01421 #define DoxClassBase 30
01422 
01423 #ifndef YY_NO_UNISTD_H
01424 /* Special case for "unistd.h", since it is non-ANSI. We include it way
01425  * down here because we want the user's section 1 to have been scanned first.
01426  * The user has a chance to override it with an option.
01427  */
01428 #include <unistd.h>
01429 #endif
01430 
01431 #ifndef YY_EXTRA_TYPE
01432 #define YY_EXTRA_TYPE void *
01433 #endif
01434 
01435 static int yy_init_globals (void );
01436 
01437 /* Macros after this point can all be overridden by user definitions in
01438  * section 1.
01439  */
01440 
01441 #ifndef YY_SKIP_YYWRAP
01442 #ifdef __cplusplus
01443 extern "C" int tagYYwrap (void );
01444 #else
01445 extern int tagYYwrap (void );
01446 #endif
01447 #endif
01448 
01449     static void yyunput (int c,char *buf_ptr  );
01450     
01451 #ifndef yytext_ptr
01452 static void yy_flex_strncpy (char *,yyconst char *,int );
01453 #endif
01454 
01455 #ifdef YY_NEED_STRLEN
01456 static int yy_flex_strlen (yyconst char * );
01457 #endif
01458 
01459 #ifndef YY_NO_INPUT
01460 
01461 #ifdef __cplusplus
01462 static int yyinput (void );
01463 #else
01464 static int input (void );
01465 #endif
01466 
01467 #endif
01468 
01469 /* Amount of stuff to slurp up with each read. */
01470 #ifndef YY_READ_BUF_SIZE
01471 #define YY_READ_BUF_SIZE 8192
01472 #endif
01473 
01474 /* Copy whatever the last rule matched to the standard output. */
01475 #ifndef ECHO
01476 /* This used to be an fputs(), but since the string might contain NUL's,
01477  * we now use fwrite().
01478  */
01479 #define ECHO (void) fwrite( tagYYtext, tagYYleng, 1, tagYYout )
01480 #endif
01481 
01482 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01483  * is returned in "result".
01484  */
01485 #ifndef YY_INPUT
01486 #define YY_INPUT(buf,result,max_size) \
01487         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
01488                 { \
01489                 int c = '*'; \
01490                 size_t n; \
01491                 for ( n = 0; n < max_size && \
01492                              (c = getc( tagYYin )) != EOF && c != '\n'; ++n ) \
01493                         buf[n] = (char) c; \
01494                 if ( c == '\n' ) \
01495                         buf[n++] = (char) c; \
01496                 if ( c == EOF && ferror( tagYYin ) ) \
01497                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
01498                 result = n; \
01499                 } \
01500         else \
01501                 { \
01502                 errno=0; \
01503                 while ( (result = fread(buf, 1, max_size, tagYYin))==0 && ferror(tagYYin)) \
01504                         { \
01505                         if( errno != EINTR) \
01506                                 { \
01507                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
01508                                 break; \
01509                                 } \
01510                         errno=0; \
01511                         clearerr(tagYYin); \
01512                         } \
01513                 }\
01514 \
01515 
01516 #endif
01517 
01518 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01519  * we don't want an extra ';' after the "return" because that will cause
01520  * some compilers to complain about unreachable statements.
01521  */
01522 #ifndef yyterminate
01523 #define yyterminate() return YY_NULL
01524 #endif
01525 
01526 /* Number of entries by which start-condition stack grows. */
01527 #ifndef YY_START_STACK_INCR
01528 #define YY_START_STACK_INCR 25
01529 #endif
01530 
01531 /* Report a fatal error. */
01532 #ifndef YY_FATAL_ERROR
01533 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
01534 #endif
01535 
01536 /* end tables serialization structures and prototypes */
01537 
01538 /* Default declaration of generated scanner - a define so the user can
01539  * easily add parameters.
01540  */
01541 #ifndef YY_DECL
01542 #define YY_DECL_IS_OURS 1
01543 
01544 extern int tagYYlex (void);
01545 
01546 #define YY_DECL int tagYYlex (void)
01547 #endif /* !YY_DECL */
01548 
01549 /* Code executed at the beginning of each rule, after tagYYtext and tagYYleng
01550  * have been set up.
01551  */
01552 #ifndef YY_USER_ACTION
01553 #define YY_USER_ACTION
01554 #endif
01555 
01556 /* Code executed at the end of each rule. */
01557 #ifndef YY_BREAK
01558 #define YY_BREAK break;
01559 #endif
01560 
01561 #define YY_RULE_SETUP \
01562         if ( tagYYleng > 0 ) \
01563                 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
01564                                 (tagYYtext[tagYYleng - 1] == '\n'); \
01565         YY_USER_ACTION
01566 
01569 YY_DECL
01570 {
01571         register yy_state_type yy_current_state;
01572         register char *yy_cp, *yy_bp;
01573         register int yy_act;
01574     
01575 #line 241 "doxytag.l"
01576 
01577 
01578 #line 1579 "<stdout>"
01579 
01580         if ( !(yy_init) )
01581                 {
01582                 (yy_init) = 1;
01583 
01584 #ifdef YY_USER_INIT
01585                 YY_USER_INIT;
01586 #endif
01587 
01588                 if ( ! (yy_start) )
01589                         (yy_start) = 1; /* first start state */
01590 
01591                 if ( ! tagYYin )
01592                         tagYYin = stdin;
01593 
01594                 if ( ! tagYYout )
01595                         tagYYout = stdout;
01596 
01597                 if ( ! YY_CURRENT_BUFFER ) {
01598                         tagYYensure_buffer_stack ();
01599                         YY_CURRENT_BUFFER_LVALUE =
01600                                 tagYY_create_buffer(tagYYin,YY_BUF_SIZE );
01601                 }
01602 
01603                 tagYY_load_buffer_state( );
01604                 }
01605 
01606         while ( 1 )             /* loops until end-of-file is reached */
01607                 {
01608                 yy_cp = (yy_c_buf_p);
01609 
01610                 /* Support of tagYYtext. */
01611                 *yy_cp = (yy_hold_char);
01612 
01613                 /* yy_bp points to the position in yy_ch_buf of the start of
01614                  * the current run.
01615                  */
01616                 yy_bp = yy_cp;
01617 
01618                 yy_current_state = (yy_start);
01619                 yy_current_state += YY_AT_BOL();
01620 yy_match:
01621                 do
01622                         {
01623                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
01624                         if ( yy_accept[yy_current_state] )
01625                                 {
01626                                 (yy_last_accepting_state) = yy_current_state;
01627                                 (yy_last_accepting_cpos) = yy_cp;
01628                                 }
01629                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01630                                 {
01631                                 yy_current_state = (int) yy_def[yy_current_state];
01632                                 if ( yy_current_state >= 693 )
01633                                         yy_c = yy_meta[(unsigned int) yy_c];
01634                                 }
01635                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01636                         ++yy_cp;
01637                         }
01638                 while ( yy_base[yy_current_state] != 2044 );
01639 
01640 yy_find_action:
01641                 yy_act = yy_accept[yy_current_state];
01642                 if ( yy_act == 0 )
01643                         { /* have to back up */
01644                         yy_cp = (yy_last_accepting_cpos);
01645                         yy_current_state = (yy_last_accepting_state);
01646                         yy_act = yy_accept[yy_current_state];
01647                         }
01648 
01649                 YY_DO_BEFORE_ACTION;
01650 
01651 do_action:      /* This label is used only to access EOF actions. */
01652 
01653                 switch ( yy_act )
01654         { /* beginning of action switch */
01655                         case 0: /* must back up */
01656                         /* undo the effects of YY_DO_BEFORE_ACTION */
01657                         *yy_cp = (yy_hold_char);
01658                         yy_cp = (yy_last_accepting_cpos);
01659                         yy_current_state = (yy_last_accepting_state);
01660                         goto yy_find_action;
01661 
01662 case 1:
01663 YY_RULE_SETUP
01664 #line 243 "doxytag.l"
01665 { 
01666                                      BEGIN( SearchClassFile );
01667                                    } 
01668         YY_BREAK
01669 case 2:
01670 #line 247 "doxytag.l"
01671 case 3:
01672 #line 248 "doxytag.l"
01673 case 4:
01674 YY_RULE_SETUP
01675 #line 248 "doxytag.l"
01676 { // Qt variant
01677                                      BEGIN( ReadClassName );
01678                                    }
01679         YY_BREAK
01680 case 5:
01681 YY_RULE_SETUP
01682 #line 251 "doxytag.l"
01683 { // Doxygen variant
01684                                      BEGIN( ReadClassName );
01685                                    }
01686         YY_BREAK
01687 case 6:
01688 YY_RULE_SETUP
01689 #line 254 "doxytag.l"
01690 {
01691                                      //printf("Inherits found\n");
01692                                      BEGIN( SearchBaseClasses );
01693                                    }
01694         YY_BREAK
01695 case 7:
01696 *yy_cp = (yy_hold_char); /* undo effects of setting up tagYYtext */
01697 (yy_c_buf_p) = yy_cp = yy_bp + 15;
01698 YY_DO_BEFORE_ACTION; /* set up tagYYtext again */
01699 YY_RULE_SETUP
01700 #line 258 "doxytag.l"
01701 { // needed due to inconsistency in the Qt docs
01702                                      BEGIN( CheckConstructor );
01703                                    }
01704         YY_BREAK
01705 /* --------------------------------------------------- */
01706 /*               Qt member extraction rules            */
01707 case 8:
01708 YY_RULE_SETUP
01709 #line 265 "doxytag.l"
01710 {
01711                                      BEGIN( Qt3ReadType );
01712                                    }
01713         YY_BREAK
01714 case 9:
01715 YY_RULE_SETUP
01716 #line 268 "doxytag.l"
01717 { // Qt-3.3+ html file
01718                                      BEGIN( Qt3ReadAnchor );
01719                                    }
01720         YY_BREAK
01721 case 10:
01722 YY_RULE_SETUP
01723 #line 271 "doxytag.l"
01724 { // Qt-4 html file
01725                                      BEGIN( Qt3ReadAnchor );
01726                                    }
01727         YY_BREAK
01728 case 11:
01729 YY_RULE_SETUP
01730 #line 274 "doxytag.l"
01731 {
01732                                      BEGIN( Qt3ReadAnchor );
01733                                    }
01734         YY_BREAK
01735 case 12:
01736 YY_RULE_SETUP
01737 #line 277 "doxytag.l"
01738 
01739         YY_BREAK
01740 case 13:
01741 YY_RULE_SETUP
01742 #line 278 "doxytag.l"
01743 { 
01744                                      memberRef = tagYYtext;
01745                                    }
01746         YY_BREAK
01747 case 14:
01748 YY_RULE_SETUP
01749 #line 281 "doxytag.l"
01750 {
01751                                      BEGIN( Qt3ReadName );
01752                                    }
01753         YY_BREAK
01754 case 15:
01755 YY_RULE_SETUP
01756 #line 284 "doxytag.l"
01757 {
01758                                      BEGIN( Start );
01759                                    }
01760         YY_BREAK
01761 case 16:
01762 YY_RULE_SETUP
01763 #line 287 "doxytag.l"
01764 {
01765                                      memberName="operator";
01766                                      BEGIN(Qt3ReadOperator);
01767                                    }
01768         YY_BREAK
01769 case 17:
01770 YY_RULE_SETUP
01771 #line 291 "doxytag.l"
01772 { memberName+=tagYYtext; } 
01773         YY_BREAK
01774 case 18:
01775 YY_RULE_SETUP
01776 #line 292 "doxytag.l"
01777 { memberName+="<"; }
01778         YY_BREAK
01779 case 19:
01780 YY_RULE_SETUP
01781 #line 293 "doxytag.l"
01782 { memberName+=">"; }
01783         YY_BREAK
01784 case 20:
01785 YY_RULE_SETUP
01786 #line 294 "doxytag.l"
01787 { memberName+=" new"; }
01788         YY_BREAK
01789 case 21:
01790 YY_RULE_SETUP
01791 #line 295 "doxytag.l"
01792 { memberName+=" delete"; }
01793         YY_BREAK
01794 case 22:
01795 YY_RULE_SETUP
01796 #line 296 "doxytag.l"
01797 { memberName+="()"; BEGIN( Qt3ReadArgs ); }
01798         YY_BREAK
01799 case 23:
01800 YY_RULE_SETUP
01801 #line 297 "doxytag.l"
01802 { unput(*tagYYtext); BEGIN( Qt3ReadArgs ); }
01803         YY_BREAK
01804 case 24:
01805 YY_RULE_SETUP
01806 #line 298 "doxytag.l"
01807 {
01808                                      memberName=tagYYtext;
01809                                      memberName=memberName.mid(memberName.find("::")+2);
01810                                      BEGIN(Qt3ReadArgs);
01811                                    }
01812         YY_BREAK
01813 case 25:
01814 YY_RULE_SETUP
01815 #line 303 "doxytag.l"
01816 
01817         YY_BREAK
01818 case 26:
01819 YY_RULE_SETUP
01820 #line 304 "doxytag.l"
01821 {
01822                                      memberArgs+='(';
01823                                    }
01824         YY_BREAK
01825 case 27:
01826 YY_RULE_SETUP
01827 #line 307 "doxytag.l"
01828 { memberArgs+='&'; }
01829         YY_BREAK
01830 case 28:
01831 YY_RULE_SETUP
01832 #line 308 "doxytag.l"
01833 { memberArgs+='<'; }
01834         YY_BREAK
01835 case 29:
01836 YY_RULE_SETUP
01837 #line 309 "doxytag.l"
01838 { memberArgs+='>'; }
01839         YY_BREAK
01840 case 30:
01841 YY_RULE_SETUP
01842 #line 310 "doxytag.l"
01843 { memberArgs+='"'; }
01844         YY_BREAK
01845 case 31:
01846 YY_RULE_SETUP
01847 #line 311 "doxytag.l"
01848 { memberArgs+=' '; }
01849         YY_BREAK
01850 case 32:
01851 YY_RULE_SETUP
01852 #line 312 "doxytag.l"
01853 { 
01854                                      addMember(memberName,memberRef,memberArgs);
01855                                      memberName.resize(0);
01856                                      memberRef.resize(0);
01857                                      memberArgs.resize(0);
01858                                      BEGIN(Start);
01859                                    }
01860         YY_BREAK
01861 case 33:
01862 /* rule 33 can match eol */
01863 YY_RULE_SETUP
01864 #line 319 "doxytag.l"
01865 
01866         YY_BREAK
01867 case 34:
01868 YY_RULE_SETUP
01869 #line 320 "doxytag.l"
01870 {
01871                                      memberArgs+=')';
01872                                      addMember(memberName,memberRef,memberArgs);
01873                                      memberName.resize(0);
01874                                      memberRef.resize(0);
01875                                      memberArgs.resize(0);
01876                                      BEGIN(Start);
01877                                    }
01878         YY_BREAK
01879 case 35:
01880 YY_RULE_SETUP
01881 #line 328 "doxytag.l"
01882 { memberArgs+=tagYYtext; }
01883         YY_BREAK
01884 case 36:
01885 YY_RULE_SETUP
01886 #line 329 "doxytag.l"
01887 { memberArgs+=*tagYYtext; }
01888         YY_BREAK
01889 /* --------------------------------------------------- */
01890 /*          Doxygen class extraction rules             */
01891 case 37:
01892 YY_RULE_SETUP
01893 #line 334 "doxytag.l"
01894 {
01895                                      className.resize(0);
01896                                      BEGIN(DoxClassName);
01897                                    }
01898         YY_BREAK
01899 case 38:
01900 /* rule 38 can match eol */
01901 YY_RULE_SETUP
01902 #line 338 "doxytag.l"
01903 {
01904                                      className=tagYYtext;
01905                                      addClass(className);
01906                                    }
01907         YY_BREAK
01908 case 39:
01909 YY_RULE_SETUP
01910 #line 342 "doxytag.l"
01911 {
01912                                      className+='<';
01913                                    }
01914         YY_BREAK
01915 case 40:
01916 YY_RULE_SETUP
01917 #line 345 "doxytag.l"
01918 {
01919                                      className+='>';
01920                                    }
01921         YY_BREAK
01922 case 41:
01923 YY_RULE_SETUP
01924 #line 348 "doxytag.l"
01925 {
01926                                      className+='&';
01927                                    }
01928         YY_BREAK
01929 case 42:
01930 YY_RULE_SETUP
01931 #line 351 "doxytag.l"
01932 {
01933                                      className+='"';
01934                                    }
01935         YY_BREAK
01936 case 43:
01937 YY_RULE_SETUP
01938 #line 354 "doxytag.l"
01939 {
01940                                      className+=*tagYYtext;
01941                                    }
01942         YY_BREAK
01943 case 44:
01944 YY_RULE_SETUP
01945 #line 357 "doxytag.l"
01946 {
01947                                      BEGIN(Start);
01948                                    }
01949         YY_BREAK
01950 /* --------------------------------------------------- */
01951 /*          Doxygen inheritance extraction rules       */
01952 case 45:
01953 YY_RULE_SETUP
01954 #line 364 "doxytag.l"
01955 {
01956                                      bases.clear();
01957                                      baseName.resize(0);
01958                                      BEGIN(DoxClassBase);
01959                                    }
01960         YY_BREAK
01961 case 46:
01962 /* rule 46 can match eol */
01963 YY_RULE_SETUP
01964 #line 369 "doxytag.l"
01965 {
01966                                      baseName+=tagYYtext;
01967                                    }
01968         YY_BREAK
01969 case 47:
01970 YY_RULE_SETUP
01971 #line 372 "doxytag.l"
01972 {
01973                                      bases.append(baseName);
01974                                      baseName.resize(0);
01975                                    }
01976         YY_BREAK
01977 case 48:
01978 YY_RULE_SETUP
01979 #line 376 "doxytag.l"
01980 {
01981                                      baseName+='<';
01982                                    }
01983         YY_BREAK
01984 case 49:
01985 YY_RULE_SETUP
01986 #line 379 "doxytag.l"
01987 {
01988                                      baseName+='>';
01989                                    }
01990         YY_BREAK
01991 case 50:
01992 YY_RULE_SETUP
01993 #line 382 "doxytag.l"
01994 {
01995                                      baseName+='&';
01996                                    }
01997         YY_BREAK
01998 case 51:
01999 YY_RULE_SETUP
02000 #line 385 "doxytag.l"
02001 {
02002                                      baseName+='"';
02003                                    }
02004         YY_BREAK
02005 case 52:
02006 YY_RULE_SETUP
02007 #line 388 "doxytag.l"
02008 {
02009                                      baseName+=*tagYYtext;
02010                                    }
02011         YY_BREAK
02012 case 53:
02013 YY_RULE_SETUP
02014 #line 391 "doxytag.l"
02015 {
02016                                      bases.append(baseName);
02017                                      baseName.resize(0);
02018                                      addBases(className);
02019                                      BEGIN(Start);
02020                                    }
02021         YY_BREAK
02022 /* --------------------------------------------------- */
02023 /*          Doxygen member extraction rules            */
02024 case 54:
02025 YY_RULE_SETUP
02026 #line 401 "doxytag.l"
02027 {
02028                                      memberName.resize(0);
02029                                      BEGIN(DoxReadName);
02030                                    }
02031         YY_BREAK
02032 case 55:
02033 /* rule 55 can match eol */
02034 YY_RULE_SETUP
02035 #line 405 "doxytag.l"
02036 {
02037                                      memberName+=tagYYtext;
02038                                    }
02039         YY_BREAK
02040 case 56:
02041 YY_RULE_SETUP
02042 #line 408 "doxytag.l"
02043 {
02044                                      memberName+='<';
02045                                    }
02046         YY_BREAK
02047 case 57:
02048 YY_RULE_SETUP
02049 #line 411 "doxytag.l"
02050 {
02051                                      memberName+='>';
02052                                    }
02053         YY_BREAK
02054 case 58:
02055 YY_RULE_SETUP
02056 #line 414 "doxytag.l"
02057 {
02058                                      memberName+='&';
02059                                    }
02060         YY_BREAK
02061 case 59:
02062 YY_RULE_SETUP
02063 #line 417 "doxytag.l"
02064 {
02065                                      memberName+='"';
02066                                    }
02067         YY_BREAK
02068 case 60:
02069 YY_RULE_SETUP
02070 #line 420 "doxytag.l"
02071 {
02072                                      memberName+=*tagYYtext;
02073                                    }
02074         YY_BREAK
02075 case 61:
02076 YY_RULE_SETUP
02077 #line 423 "doxytag.l"
02078 {
02079                                      memberName=memberName.mid(memberName.find("::")+2);
02080                                      memberRef.resize(0);
02081                                      BEGIN(DoxReadAnchor);
02082                                    }
02083         YY_BREAK
02084 case 62:
02085 /* rule 62 can match eol */
02086 YY_RULE_SETUP
02087 #line 428 "doxytag.l"
02088 {
02089                                      memberRef+=tagYYtext;
02090                                    }
02091         YY_BREAK
02092 case 63:
02093 YY_RULE_SETUP
02094 #line 431 "doxytag.l"
02095 {
02096                                      memberRef+='<';
02097                                    }
02098         YY_BREAK
02099 case 64:
02100 YY_RULE_SETUP
02101 #line 434 "doxytag.l"
02102 {
02103                                      memberRef+='>';
02104                                    }
02105         YY_BREAK
02106 case 65:
02107 YY_RULE_SETUP
02108 #line 437 "doxytag.l"
02109 {
02110                                      memberRef+='&';
02111                                    }
02112         YY_BREAK
02113 case 66:
02114 YY_RULE_SETUP
02115 #line 440 "doxytag.l"
02116 {
02117                                      memberRef+='"';
02118                                    }
02119         YY_BREAK
02120 case 67:
02121 YY_RULE_SETUP
02122 #line 443 "doxytag.l"
02123 {
02124                                      memberRef+=*tagYYtext;
02125                                    }
02126         YY_BREAK
02127 case 68:
02128 YY_RULE_SETUP
02129 #line 446 "doxytag.l"
02130 {
02131                                      memberArgs.resize(0);
02132                                      BEGIN(DoxReadArgs);
02133                                    }
02134         YY_BREAK
02135 case 69:
02136 /* rule 69 can match eol */
02137 YY_RULE_SETUP
02138 #line 450 "doxytag.l"
02139 {
02140                                      memberArgs+=tagYYtext;
02141                                    }
02142         YY_BREAK
02143 case 70:
02144 YY_RULE_SETUP
02145 #line 453 "doxytag.l"
02146 {
02147                                      memberArgs+='<';
02148                                    }
02149         YY_BREAK
02150 case 71:
02151 YY_RULE_SETUP
02152 #line 456 "doxytag.l"
02153 {
02154                                      memberArgs+='>';
02155                                    }
02156         YY_BREAK
02157 case 72:
02158 YY_RULE_SETUP
02159 #line 459 "doxytag.l"
02160 {
02161                                      memberArgs+='&';
02162                                    }
02163         YY_BREAK
02164 case 73:
02165 YY_RULE_SETUP
02166 #line 462 "doxytag.l"
02167 {
02168                                      memberArgs+='"';
02169                                    }
02170         YY_BREAK
02171 case 74:
02172 YY_RULE_SETUP
02173 #line 465 "doxytag.l"
02174 {
02175                                      memberArgs+=*tagYYtext;
02176                                    }
02177         YY_BREAK
02178 case 75:
02179 YY_RULE_SETUP
02180 #line 468 "doxytag.l"
02181 {
02182                                      addMember(memberName,memberRef,memberArgs);
02183                                      memberName.resize(0);
02184                                      memberRef.resize(0);
02185                                      memberArgs.resize(0);
02186                                      BEGIN(Start);
02187                                    }
02188         YY_BREAK
02190 case 76:
02191 YY_RULE_SETUP
02192 #line 478 "doxytag.l"
02193 { 
02194                                      BEGIN( SkipPreformated );
02195                                    }
02196         YY_BREAK
02197 case 77:
02198 YY_RULE_SETUP
02199 #line 481 "doxytag.l"
02200 {
02201                                      BEGIN( SearchWords );
02202                                    }
02203         YY_BREAK
02204 case 78:
02205 YY_RULE_SETUP
02206 #line 484 "doxytag.l"
02207 { 
02208                                      BEGIN( SkipHTMLTag ); 
02209                                    }
02210         YY_BREAK
02211 case 79:
02212 YY_RULE_SETUP
02213 #line 487 "doxytag.l"
02214 
02215         YY_BREAK
02216 case 80:
02217 YY_RULE_SETUP
02218 #line 488 "doxytag.l"
02219 {
02220                                      //printf("tag: %s#%s ref: %s word: `%s'\n",
02221                                      // docBaseLink.data(),docAnchor.data(),
02222                                      // docRefName.data(),tagYYtext);
02223                                      //if (genIndex && !docRefName.isEmpty() && tagYYleng>2)
02224                                      //  searchIndex.addWord(docRefName,
02225                                      //                    tagYYtext,FALSE
02226                                      //                   );
02227                                    }
02228         YY_BREAK
02229 case 81:
02230 YY_RULE_SETUP
02231 #line 497 "doxytag.l"
02232 {
02233                                      BEGIN( Start );
02234                                    }
02235         YY_BREAK
02236 case 82:
02237 YY_RULE_SETUP
02238 #line 500 "doxytag.l"
02239 
02240         YY_BREAK
02241 case 83:
02242 YY_RULE_SETUP
02243 #line 501 "doxytag.l"
02244 {
02245                                      QCString s=tagYYtext;
02246                                      if (s.find("::")!=-1)
02247                                      {
02248                                        docRefName=tagYYtext;
02249                                        addReference();
02250                                        nameBug=TRUE;
02251                                      }
02252                                      else
02253                                      {
02254                                        nameBug=FALSE;
02255                                      }
02256                                      BEGIN( Start );
02257                                    }
02258         YY_BREAK
02259 case 84:
02260 YY_RULE_SETUP
02261 #line 515 "doxytag.l"
02262 {
02263                                      docAnchor = tagYYtext;
02264                                      if (docAnchor=="details" || 
02265                                          docAnchor=="_details")
02266                                      {
02267                                        docRefName=className.copy();
02268                                        addReference();
02269                                        BEGIN( Start );
02270                                      }
02271                                      else
02272                                      {
02273                                        BEGIN( SearchRefName );
02274                                      }
02275                                    }
02276         YY_BREAK
02277 case 85:
02278 YY_RULE_SETUP
02279 #line 529 "doxytag.l"
02280 {
02281                                      BEGIN( ReadRefName ); 
02282                                    }
02283         YY_BREAK
02284 case 86:
02285 YY_RULE_SETUP
02286 #line 532 "doxytag.l"
02287 { // HACK: avoid finding links in code fragments
02288                                      BEGIN( Start );
02289                                    }
02290         YY_BREAK
02291 case 87:
02292 YY_RULE_SETUP
02293 #line 535 "doxytag.l"
02294 { // HACK: deal with Qt code
02295                                      if (nameBug)
02296                                        BEGIN( Start );
02297                                      else
02298                                        BEGIN( ReadRefName );
02299                                    }
02300         YY_BREAK
02301 case 88:
02302 YY_RULE_SETUP
02303 #line 542 "doxytag.l"
02304 { // hmm, looks impressive :-)
02305                                      docRefName=unhtmlify(tagYYtext);
02306                                      addReference();
02307                                      BEGIN( Start );
02308                                    }
02309         YY_BREAK
02310 case 89:
02311 YY_RULE_SETUP
02312 #line 547 "doxytag.l"
02313 {
02314                                      //printf("ReadRef=%s\n",tagYYtext);
02315                                      docRefName=tagYYtext;
02316                                      addReference();
02317                                      BEGIN( Start );
02318                                    }
02319         YY_BREAK
02320 case 90:
02321 YY_RULE_SETUP
02322 #line 553 "doxytag.l"
02323 {
02324                                      //printf("Search %s\n",tagYYtext);
02325                                      BEGIN( ReadBaseClass );
02326                                    }  
02327         YY_BREAK
02328 case 91:
02329 /* rule 91 can match eol */
02330 YY_RULE_SETUP
02331 #line 557 "doxytag.l"
02332 {
02333                                      addBases(className);
02334                                      BEGIN( Start );
02335                                    }
02336         YY_BREAK
02337 case 92:
02338 YY_RULE_SETUP
02339 #line 561 "doxytag.l"
02340 {
02341                                      bases.append(tagYYtext);
02342                                      BEGIN( SearchBaseClasses );
02343                                    }
02344         YY_BREAK
02345 case 93:
02346 YY_RULE_SETUP
02347 #line 565 "doxytag.l"
02348 {
02349                                      BEGIN( ReadClassFile ); 
02350                                    }
02351         YY_BREAK
02352 case 94:
02353 YY_RULE_SETUP
02354 #line 568 "doxytag.l"
02355 {
02356                                      BEGIN( ReadClassFile ); 
02357                                    }
02358         YY_BREAK
02359 case 95:
02360 YY_RULE_SETUP
02361 #line 571 "doxytag.l"
02362 {
02363                                      className=tagYYtext;
02364                                      BEGIN( CheckClassName);
02365                                    }
02366         YY_BREAK
02367 case 96:
02368 YY_RULE_SETUP
02369 #line 575 "doxytag.l"
02370 {
02371                                      //printf("className=%s\n",className.data());
02372                                      addClass(className);
02373                                      BEGIN( Start );
02374                                    }
02375         YY_BREAK
02376 case 97:
02377 YY_RULE_SETUP
02378 #line 580 "doxytag.l"
02379 {
02380                                      //printf("className=%s\n",className.data());
02381                                      addFile(className);
02382                                      BEGIN( Start );
02383                                    }
02384         YY_BREAK
02385 case 98:
02386 YY_RULE_SETUP
02387 #line 585 "doxytag.l"
02388 { // not a class file
02389                                      className.resize(0);
02390                                      BEGIN( Start );
02391                                    }
02392         YY_BREAK
02393 case 99:
02394 YY_RULE_SETUP
02395 #line 589 "doxytag.l"
02396 {
02397                                      classFile=tagYYtext;
02398                                      BEGIN( SearchMemberRef );
02399                                    }
02400         YY_BREAK
02401 case 100:
02402 YY_RULE_SETUP
02403 #line 593 "doxytag.l"
02404 {
02405                                      if (YY_START==ReadClassFile)
02406                                      {
02407                                        classFile=yyFileName;
02408                                      }
02409                                      //BEGIN( ReadMemberRef );
02410                                      BEGIN( Start );
02411                                    }
02412         YY_BREAK
02413 case 101:
02414 YY_RULE_SETUP
02415 #line 601 "doxytag.l"
02416 {
02417                                      memberRef=tagYYtext;
02418                                      BEGIN( SearchMemberName );
02419                                    }
02420         YY_BREAK
02421 case 102:
02422 YY_RULE_SETUP
02423 #line 605 "doxytag.l"
02424 { // <strong> is for qt-1.44, <b> is for qt-2.00  
02425                                      BEGIN( ReadMemberName );
02426                                    }
02427         YY_BREAK
02428 case 103:
02429 YY_RULE_SETUP
02430 #line 608 "doxytag.l"
02431 {
02432                                      unput(*tagYYtext);
02433                                      BEGIN( ReadMemberName );
02434                                    }
02435         YY_BREAK
02436 case 104:
02437 YY_RULE_SETUP
02438 #line 612 "doxytag.l"
02439 { 
02440                                      memberName="operator";
02441                                      BEGIN( ReadOperator );
02442                                    }
02443         YY_BREAK
02444 case 105:
02445 YY_RULE_SETUP
02446 #line 616 "doxytag.l"
02447 { memberName+=*tagYYtext; } 
02448         YY_BREAK
02449 case 106:
02450 YY_RULE_SETUP
02451 #line 617 "doxytag.l"
02452 { memberName+="<"; }
02453         YY_BREAK
02454 case 107:
02455 YY_RULE_SETUP
02456 #line 618 "doxytag.l"
02457 { memberName+=">"; }
02458         YY_BREAK
02459 case 108:
02460 YY_RULE_SETUP
02461 #line 619 "doxytag.l"
02462 { memberName+=" new"; }
02463         YY_BREAK
02464 case 109:
02465 YY_RULE_SETUP
02466 #line 620 "doxytag.l"
02467 { memberName+=" delete"; }
02468         YY_BREAK
02469 case 110:
02470 YY_RULE_SETUP
02471 #line 621 "doxytag.l"
02472 { BEGIN( SearchArgs ); }
02473         YY_BREAK
02474 case 111:
02475 YY_RULE_SETUP
02476 #line 622 "doxytag.l"
02477 {
02478                                      memberName=tagYYtext;
02479                                      BEGIN( SearchArgs );
02480                                    }  
02481         YY_BREAK
02482 case 112:
02483 YY_RULE_SETUP
02484 #line 626 "doxytag.l"
02485 { 
02486                                      //printf("SearchArg className=%s memberName=%s\n",className.data(),memberName.data());
02487                                      if (!className.isEmpty() && !memberName.isEmpty())
02488                                        BEGIN( ReadArgs ); 
02489                                      else
02490                                        BEGIN( Start );
02491                                    }
02492         YY_BREAK
02493 case 113:
02494 YY_RULE_SETUP
02495 #line 633 "doxytag.l"
02496 { memberArgs+='&'; }
02497         YY_BREAK
02498 case 114:
02499 YY_RULE_SETUP
02500 #line 634 "doxytag.l"
02501 { memberArgs+='<'; }
02502         YY_BREAK
02503 case 115:
02504 YY_RULE_SETUP
02505 #line 635 "doxytag.l"
02506 { memberArgs+='>'; }
02507         YY_BREAK
02508 case 116:
02509 YY_RULE_SETUP
02510 #line 636 "doxytag.l"
02511 { memberArgs+='"'; }
02512         YY_BREAK
02513 case 117:
02514 YY_RULE_SETUP
02515 #line 637 "doxytag.l"
02516 { memberArgs+=' '; }
02517         YY_BREAK
02518 /*
02519 <ReadArgs>[{}]                     { // handle enums
02520                                      memberArgs.resize(0);
02521                                      addMember(memberName,memberRef,memberArgs);
02522                                      if (*tagYYtext=='}')
02523                                        BEGIN( Start );
02524                                      else
02525                                        BEGIN( SearchClassFile );
02526                                    }
02527   */
02528 case 118:
02529 /* rule 118 can match eol */
02530 YY_RULE_SETUP
02531 #line 648 "doxytag.l"
02532 {
02533                                      //printf("adding member %s\n",memberName.data());
02534                                      memberArgs=memberArgs.stripWhiteSpace();
02535                                      //if (newClass)
02536                                      //{
02537                                      //  newClass=FALSE;
02538                                      //  addClass(className);
02539                                      //}
02540                                      addMember(memberName,memberRef,memberArgs);
02541                                      memberName.resize(0);
02542                                      memberRef.resize(0);
02543                                      memberArgs.resize(0);
02544                                      if (*tagYYtext=='<')
02545                                        BEGIN( SkipHTMLTag);
02546                                      else
02547                                        BEGIN( Start );
02548                                    }
02549         YY_BREAK
02550 case 119:
02551 YY_RULE_SETUP
02552 #line 665 "doxytag.l"
02553 { memberArgs+=(*tagYYtext)&0x7f; }
02554         YY_BREAK
02555 case 120:
02556 YY_RULE_SETUP
02557 #line 666 "doxytag.l"
02558 { BEGIN( Start ); }
02559         YY_BREAK
02560 case 121:
02561 YY_RULE_SETUP
02562 #line 667 "doxytag.l"
02563 
02564         YY_BREAK
02565 case 122:
02566 YY_RULE_SETUP
02567 #line 668 "doxytag.l"
02568 
02569         YY_BREAK
02570 case 123:
02571 /* rule 123 can match eol */
02572 YY_RULE_SETUP
02573 #line 669 "doxytag.l"
02574 { yyLineNr++; 
02575                                      if (YY_START!=SkipHTMLTag) BEGIN( Start ); 
02576                                    }
02577         YY_BREAK
02578 case 124:
02579 YY_RULE_SETUP
02580 #line 673 "doxytag.l"
02581 ECHO;
02582         YY_BREAK
02583 #line 2584 "<stdout>"
02584 case YY_STATE_EOF(INITIAL):
02585 case YY_STATE_EOF(Start):
02586 case YY_STATE_EOF(SearchClassFile):
02587 case YY_STATE_EOF(ReadClassFile):
02588 case YY_STATE_EOF(CheckClassName):
02589 case YY_STATE_EOF(ReadClassName):
02590 case YY_STATE_EOF(SearchMemberRef):
02591 case YY_STATE_EOF(ReadMemberRef):
02592 case YY_STATE_EOF(SearchMemberName):
02593 case YY_STATE_EOF(ReadMemberName):
02594 case YY_STATE_EOF(ReadOperator):
02595 case YY_STATE_EOF(SearchBaseClasses):
02596 case YY_STATE_EOF(ReadBaseClass):
02597 case YY_STATE_EOF(SearchRefName):
02598 case YY_STATE_EOF(ReadRefName):
02599 case YY_STATE_EOF(SearchArgs):
02600 case YY_STATE_EOF(ReadArgs):
02601 case YY_STATE_EOF(SearchWords):
02602 case YY_STATE_EOF(SkipHTMLTag):
02603 case YY_STATE_EOF(CheckConstructor):
02604 case YY_STATE_EOF(SkipPreformated):
02605 case YY_STATE_EOF(Qt3ReadType):
02606 case YY_STATE_EOF(Qt3ReadAnchor):
02607 case YY_STATE_EOF(Qt3ReadName):
02608 case YY_STATE_EOF(Qt3ReadOperator):
02609 case YY_STATE_EOF(Qt3ReadArgs):
02610 case YY_STATE_EOF(DoxReadAnchor):
02611 case YY_STATE_EOF(DoxReadName):
02612 case YY_STATE_EOF(DoxReadArgs):
02613 case YY_STATE_EOF(DoxClassName):
02614 case YY_STATE_EOF(DoxClassBase):
02615         yyterminate();
02616 
02617         case YY_END_OF_BUFFER:
02618                 {
02619                 /* Amount of text matched not including the EOB char. */
02620                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
02621 
02622                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
02623                 *yy_cp = (yy_hold_char);
02624                 YY_RESTORE_YY_MORE_OFFSET
02625 
02626                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
02627                         {
02628                         /* We're scanning a new file or input source.  It's
02629                          * possible that this happened because the user
02630                          * just pointed tagYYin at a new source and called
02631                          * tagYYlex().  If so, then we have to assure
02632                          * consistency between YY_CURRENT_BUFFER and our
02633                          * globals.  Here is the right place to do so, because
02634                          * this is the first action (other than possibly a
02635                          * back-up) that will match for the new input source.
02636                          */
02637                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02638                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = tagYYin;
02639                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
02640                         }
02641 
02642                 /* Note that here we test for yy_c_buf_p "<=" to the position
02643                  * of the first EOB in the buffer, since yy_c_buf_p will
02644                  * already have been incremented past the NUL character
02645                  * (since all states make transitions on EOB to the
02646                  * end-of-buffer state).  Contrast this with the test
02647                  * in input().
02648                  */
02649                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
02650                         { /* This was really a NUL. */
02651                         yy_state_type yy_next_state;
02652 
02653                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
02654 
02655                         yy_current_state = yy_get_previous_state(  );
02656 
02657                         /* Okay, we're now positioned to make the NUL
02658                          * transition.  We couldn't have
02659                          * yy_get_previous_state() go ahead and do it
02660                          * for us because it doesn't know how to deal
02661                          * with the possibility of jamming (and we don't
02662                          * want to build jamming into it because then it
02663                          * will run more slowly).
02664                          */
02665 
02666                         yy_next_state = yy_try_NUL_trans( yy_current_state );
02667 
02668                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
02669 
02670                         if ( yy_next_state )
02671                                 {
02672                                 /* Consume the NUL. */
02673                                 yy_cp = ++(yy_c_buf_p);
02674                                 yy_current_state = yy_next_state;
02675                                 goto yy_match;
02676                                 }
02677 
02678                         else
02679                                 {
02680                                 yy_cp = (yy_c_buf_p);
02681                                 goto yy_find_action;
02682                                 }
02683                         }
02684 
02685                 else switch ( yy_get_next_buffer(  ) )
02686                         {
02687                         case EOB_ACT_END_OF_FILE:
02688                                 {
02689                                 (yy_did_buffer_switch_on_eof) = 0;
02690 
02691                                 if ( tagYYwrap( ) )
02692                                         {
02693                                         /* Note: because we've taken care in
02694                                          * yy_get_next_buffer() to have set up
02695                                          * tagYYtext, we can now set up
02696                                          * yy_c_buf_p so that if some total
02697                                          * hoser (like flex itself) wants to
02698                                          * call the scanner after we return the
02699                                          * YY_NULL, it'll still work - another
02700                                          * YY_NULL will get returned.
02701                                          */
02702                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
02703 
02704                                         yy_act = YY_STATE_EOF(YY_START);
02705                                         goto do_action;
02706                                         }
02707 
02708                                 else
02709                                         {
02710                                         if ( ! (yy_did_buffer_switch_on_eof) )
02711                                                 YY_NEW_FILE;
02712                                         }
02713                                 break;
02714                                 }
02715 
02716                         case EOB_ACT_CONTINUE_SCAN:
02717                                 (yy_c_buf_p) =
02718                                         (yytext_ptr) + yy_amount_of_matched_text;
02719 
02720                                 yy_current_state = yy_get_previous_state(  );
02721 
02722                                 yy_cp = (yy_c_buf_p);
02723                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
02724                                 goto yy_match;
02725 
02726                         case EOB_ACT_LAST_MATCH:
02727                                 (yy_c_buf_p) =
02728                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
02729 
02730                                 yy_current_state = yy_get_previous_state(  );
02731 
02732                                 yy_cp = (yy_c_buf_p);
02733                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
02734                                 goto yy_find_action;
02735                         }
02736                 break;
02737                 }
02738 
02739         default:
02740                 YY_FATAL_ERROR(
02741                         "fatal flex scanner internal error--no action found" );
02742         } /* end of action switch */
02743                 } /* end of scanning one token */
02744 } /* end of tagYYlex */
02745 
02746 /* yy_get_next_buffer - try to read in a new buffer
02747  *
02748  * Returns a code representing an action:
02749  *      EOB_ACT_LAST_MATCH -
02750  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
02751  *      EOB_ACT_END_OF_FILE - end of file
02752  */
02753 static int yy_get_next_buffer (void)
02754 {
02755         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
02756         register char *source = (yytext_ptr);
02757         register int number_to_move, i;
02758         int ret_val;
02759 
02760         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
02761                 YY_FATAL_ERROR(
02762                 "fatal flex scanner internal error--end of buffer missed" );
02763 
02764         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
02765                 { /* Don't try to fill the buffer, so this is an EOF. */
02766                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
02767                         {
02768                         /* We matched a single character, the EOB, so
02769                          * treat this as a final EOF.
02770                          */
02771                         return EOB_ACT_END_OF_FILE;
02772                         }
02773 
02774                 else
02775                         {
02776                         /* We matched some text prior to the EOB, first
02777                          * process it.
02778                          */
02779                         return EOB_ACT_LAST_MATCH;
02780                         }
02781                 }
02782 
02783         /* Try to read more data. */
02784 
02785         /* First move last chars to start of buffer. */
02786         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
02787 
02788         for ( i = 0; i < number_to_move; ++i )
02789                 *(dest++) = *(source++);
02790 
02791         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
02792                 /* don't do the read, it's not guaranteed to return an EOF,
02793                  * just force an EOF
02794                  */
02795                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
02796 
02797         else
02798                 {
02799                         int num_to_read =
02800                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
02801 
02802                 while ( num_to_read <= 0 )
02803                         { /* Not enough room in the buffer - grow it. */
02804 
02805                         /* just a shorter name for the current buffer */
02806                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
02807 
02808                         int yy_c_buf_p_offset =
02809                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
02810 
02811                         if ( b->yy_is_our_buffer )
02812                                 {
02813                                 int new_size = b->yy_buf_size * 2;
02814 
02815                                 if ( new_size <= 0 )
02816                                         b->yy_buf_size += b->yy_buf_size / 8;
02817                                 else
02818                                         b->yy_buf_size *= 2;
02819 
02820                                 b->yy_ch_buf = (char *)
02821                                         /* Include room in for 2 EOB chars. */
02822                                         tagYYrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
02823                                 }
02824                         else
02825                                 /* Can't grow it, we don't own it. */
02826                                 b->yy_ch_buf = 0;
02827 
02828                         if ( ! b->yy_ch_buf )
02829                                 YY_FATAL_ERROR(
02830                                 "fatal error - scanner input buffer overflow" );
02831 
02832                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
02833 
02834                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
02835                                                 number_to_move - 1;
02836 
02837                         }
02838 
02839                 if ( num_to_read > YY_READ_BUF_SIZE )
02840                         num_to_read = YY_READ_BUF_SIZE;
02841 
02842                 /* Read in more data. */
02843                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
02844                         (yy_n_chars), num_to_read );
02845 
02846                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
02847                 }
02848 
02849         if ( (yy_n_chars) == 0 )
02850                 {
02851                 if ( number_to_move == YY_MORE_ADJ )
02852                         {
02853                         ret_val = EOB_ACT_END_OF_FILE;
02854                         tagYYrestart(tagYYin  );
02855                         }
02856 
02857                 else
02858                         {
02859                         ret_val = EOB_ACT_LAST_MATCH;
02860                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
02861                                 YY_BUFFER_EOF_PENDING;
02862                         }
02863                 }
02864 
02865         else
02866                 ret_val = EOB_ACT_CONTINUE_SCAN;
02867 
02868         (yy_n_chars) += number_to_move;
02869         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
02870         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
02871 
02872         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
02873 
02874         return ret_val;
02875 }
02876 
02877 /* yy_get_previous_state - get the state just before the EOB char was reached */
02878 
02879     static yy_state_type yy_get_previous_state (void)
02880 {
02881         register yy_state_type yy_current_state;
02882         register char *yy_cp;
02883     
02884         yy_current_state = (yy_start);
02885         yy_current_state += YY_AT_BOL();
02886 
02887         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
02888                 {
02889                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
02890                 if ( yy_accept[yy_current_state] )
02891                         {
02892                         (yy_last_accepting_state) = yy_current_state;
02893                         (yy_last_accepting_cpos) = yy_cp;
02894                         }
02895                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02896                         {
02897                         yy_current_state = (int) yy_def[yy_current_state];
02898                         if ( yy_current_state >= 693 )
02899                                 yy_c = yy_meta[(unsigned int) yy_c];
02900                         }
02901                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02902                 }
02903 
02904         return yy_current_state;
02905 }
02906 
02907 /* yy_try_NUL_trans - try to make a transition on the NUL character
02908  *
02909  * synopsis
02910  *      next_state = yy_try_NUL_trans( current_state );
02911  */
02912     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
02913 {
02914         register int yy_is_jam;
02915         register char *yy_cp = (yy_c_buf_p);
02916 
02917         register YY_CHAR yy_c = 1;
02918         if ( yy_accept[yy_current_state] )
02919                 {
02920                 (yy_last_accepting_state) = yy_current_state;
02921                 (yy_last_accepting_cpos) = yy_cp;
02922                 }
02923         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02924                 {
02925                 yy_current_state = (int) yy_def[yy_current_state];
02926                 if ( yy_current_state >= 693 )
02927                         yy_c = yy_meta[(unsigned int) yy_c];
02928                 }
02929         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02930         yy_is_jam = (yy_current_state == 692);
02931 
02932         return yy_is_jam ? 0 : yy_current_state;
02933 }
02934 
02935     static void yyunput (int c, register char * yy_bp )
02936 {
02937         register char *yy_cp;
02938     
02939     yy_cp = (yy_c_buf_p);
02940 
02941         /* undo effects of setting up tagYYtext */
02942         *yy_cp = (yy_hold_char);
02943 
02944         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02945                 { /* need to shift things up to make room */
02946                 /* +2 for EOB chars. */
02947                 register int number_to_move = (yy_n_chars) + 2;
02948                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
02949                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
02950                 register char *source =
02951                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
02952 
02953                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02954                         *--dest = *--source;
02955 
02956                 yy_cp += (int) (dest - source);
02957                 yy_bp += (int) (dest - source);
02958                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
02959                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
02960 
02961                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02962                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
02963                 }
02964 
02965         *--yy_cp = (char) c;
02966 
02967         (yytext_ptr) = yy_bp;
02968         (yy_hold_char) = *yy_cp;
02969         (yy_c_buf_p) = yy_cp;
02970 }
02971 
02972 #ifndef YY_NO_INPUT
02973 #ifdef __cplusplus
02974     static int yyinput (void)
02975 #else
02976     static int input  (void)
02977 #endif
02978 
02979 {
02980         int c;
02981     
02982         *(yy_c_buf_p) = (yy_hold_char);
02983 
02984         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
02985                 {
02986                 /* yy_c_buf_p now points to the character we want to return.
02987                  * If this occurs *before* the EOB characters, then it's a
02988                  * valid NUL; if not, then we've hit the end of the buffer.
02989                  */
02990                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
02991                         /* This was really a NUL. */
02992                         *(yy_c_buf_p) = '\0';
02993 
02994                 else
02995                         { /* need more input */
02996                         int offset = (yy_c_buf_p) - (yytext_ptr);
02997                         ++(yy_c_buf_p);
02998 
02999                         switch ( yy_get_next_buffer(  ) )
03000                                 {
03001                                 case EOB_ACT_LAST_MATCH:
03002                                         /* This happens because yy_g_n_b()
03003                                          * sees that we've accumulated a
03004                                          * token and flags that we need to
03005                                          * try matching the token before
03006                                          * proceeding.  But for input(),
03007                                          * there's no matching to consider.
03008                                          * So convert the EOB_ACT_LAST_MATCH
03009                                          * to EOB_ACT_END_OF_FILE.
03010                                          */
03011 
03012                                         /* Reset buffer status. */
03013                                         tagYYrestart(tagYYin );
03014 
03015                                         /*FALLTHROUGH*/
03016 
03017                                 case EOB_ACT_END_OF_FILE:
03018                                         {
03019                                         if ( tagYYwrap( ) )
03020                                                 return 0;
03021 
03022                                         if ( ! (yy_did_buffer_switch_on_eof) )
03023                                                 YY_NEW_FILE;
03024 #ifdef __cplusplus
03025                                         return yyinput();
03026 #else
03027                                         return input();
03028 #endif
03029                                         }
03030 
03031                                 case EOB_ACT_CONTINUE_SCAN:
03032                                         (yy_c_buf_p) = (yytext_ptr) + offset;
03033                                         break;
03034                                 }
03035                         }
03036                 }
03037 
03038         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
03039         *(yy_c_buf_p) = '\0';   /* preserve tagYYtext */
03040         (yy_hold_char) = *++(yy_c_buf_p);
03041 
03042         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
03043 
03044         return c;
03045 }
03046 #endif  /* ifndef YY_NO_INPUT */
03047 
03053     void tagYYrestart  (FILE * input_file )
03054 {
03055     
03056         if ( ! YY_CURRENT_BUFFER ){
03057         tagYYensure_buffer_stack ();
03058                 YY_CURRENT_BUFFER_LVALUE =
03059             tagYY_create_buffer(tagYYin,YY_BUF_SIZE );
03060         }
03061 
03062         tagYY_init_buffer(YY_CURRENT_BUFFER,input_file );
03063         tagYY_load_buffer_state( );
03064 }
03065 
03070     void tagYY_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
03071 {
03072     
03073         /* TODO. We should be able to replace this entire function body
03074          * with
03075          *              tagYYpop_buffer_state();
03076          *              tagYYpush_buffer_state(new_buffer);
03077      */
03078         tagYYensure_buffer_stack ();
03079         if ( YY_CURRENT_BUFFER == new_buffer )
03080                 return;
03081 
03082         if ( YY_CURRENT_BUFFER )
03083                 {
03084                 /* Flush out information for old buffer. */
03085                 *(yy_c_buf_p) = (yy_hold_char);
03086                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
03087                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
03088                 }
03089 
03090         YY_CURRENT_BUFFER_LVALUE = new_buffer;
03091         tagYY_load_buffer_state( );
03092 
03093         /* We don't actually know whether we did this switch during
03094          * EOF (tagYYwrap()) processing, but the only time this flag
03095          * is looked at is after tagYYwrap() is called, so it's safe
03096          * to go ahead and always set it.
03097          */
03098         (yy_did_buffer_switch_on_eof) = 1;
03099 }
03100 
03101 static void tagYY_load_buffer_state  (void)
03102 {
03103         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
03104         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
03105         tagYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
03106         (yy_hold_char) = *(yy_c_buf_p);
03107 }
03108 
03115     YY_BUFFER_STATE tagYY_create_buffer  (FILE * file, int  size )
03116 {
03117         YY_BUFFER_STATE b;
03118     
03119         b = (YY_BUFFER_STATE) tagYYalloc(sizeof( struct yy_buffer_state )  );
03120         if ( ! b )
03121                 YY_FATAL_ERROR( "out of dynamic memory in tagYY_create_buffer()" );
03122 
03123         b->yy_buf_size = size;
03124 
03125         /* yy_ch_buf has to be 2 characters longer than the size given because
03126          * we need to put in 2 end-of-buffer characters.
03127          */
03128         b->yy_ch_buf = (char *) tagYYalloc(b->yy_buf_size + 2  );
03129         if ( ! b->yy_ch_buf )
03130                 YY_FATAL_ERROR( "out of dynamic memory in tagYY_create_buffer()" );
03131 
03132         b->yy_is_our_buffer = 1;
03133 
03134         tagYY_init_buffer(b,file );
03135 
03136         return b;
03137 }
03138 
03143     void tagYY_delete_buffer (YY_BUFFER_STATE  b )
03144 {
03145     
03146         if ( ! b )
03147                 return;
03148 
03149         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
03150                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
03151 
03152         if ( b->yy_is_our_buffer )
03153                 tagYYfree((void *) b->yy_ch_buf  );
03154 
03155         tagYYfree((void *) b  );
03156 }
03157 
03158 #ifndef __cplusplus
03159 extern int isatty (int );
03160 #endif /* __cplusplus */
03161     
03162 /* Initializes or reinitializes a buffer.
03163  * This function is sometimes called more than once on the same buffer,
03164  * such as during a tagYYrestart() or at EOF.
03165  */
03166     static void tagYY_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
03167 
03168 {
03169         int oerrno = errno;
03170     
03171         tagYY_flush_buffer(b );
03172 
03173         b->yy_input_file = file;
03174         b->yy_fill_buffer = 1;
03175 
03176     /* If b is the current buffer, then tagYY_init_buffer was _probably_
03177      * called from tagYYrestart() or through yy_get_next_buffer.
03178      * In that case, we don't want to reset the lineno or column.
03179      */
03180     if (b != YY_CURRENT_BUFFER){
03181         b->yy_bs_lineno = 1;
03182         b->yy_bs_column = 0;
03183     }
03184 
03185         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
03186     
03187         errno = oerrno;
03188 }
03189 
03194     void tagYY_flush_buffer (YY_BUFFER_STATE  b )
03195 {
03196         if ( ! b )
03197                 return;
03198 
03199         b->yy_n_chars = 0;
03200 
03201         /* We always need two end-of-buffer characters.  The first causes
03202          * a transition to the end-of-buffer state.  The second causes
03203          * a jam in that state.
03204          */
03205         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
03206         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
03207 
03208         b->yy_buf_pos = &b->yy_ch_buf[0];
03209 
03210         b->yy_at_bol = 1;
03211         b->yy_buffer_status = YY_BUFFER_NEW;
03212 
03213         if ( b == YY_CURRENT_BUFFER )
03214                 tagYY_load_buffer_state( );
03215 }
03216 
03223 void tagYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
03224 {
03225         if (new_buffer == NULL)
03226                 return;
03227 
03228         tagYYensure_buffer_stack();
03229 
03230         /* This block is copied from tagYY_switch_to_buffer. */
03231         if ( YY_CURRENT_BUFFER )
03232                 {
03233                 /* Flush out information for old buffer. */
03234                 *(yy_c_buf_p) = (yy_hold_char);
03235                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
03236                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
03237                 }
03238 
03239         /* Only push if top exists. Otherwise, replace top. */
03240         if (YY_CURRENT_BUFFER)
03241                 (yy_buffer_stack_top)++;
03242         YY_CURRENT_BUFFER_LVALUE = new_buffer;
03243 
03244         /* copied from tagYY_switch_to_buffer. */
03245         tagYY_load_buffer_state( );
03246         (yy_did_buffer_switch_on_eof) = 1;
03247 }
03248 
03253 void tagYYpop_buffer_state (void)
03254 {
03255         if (!YY_CURRENT_BUFFER)
03256                 return;
03257 
03258         tagYY_delete_buffer(YY_CURRENT_BUFFER );
03259         YY_CURRENT_BUFFER_LVALUE = NULL;
03260         if ((yy_buffer_stack_top) > 0)
03261                 --(yy_buffer_stack_top);
03262 
03263         if (YY_CURRENT_BUFFER) {
03264                 tagYY_load_buffer_state( );
03265                 (yy_did_buffer_switch_on_eof) = 1;
03266         }
03267 }
03268 
03269 /* Allocates the stack if it does not exist.
03270  *  Guarantees space for at least one push.
03271  */
03272 static void tagYYensure_buffer_stack (void)
03273 {
03274         int num_to_alloc;
03275     
03276         if (!(yy_buffer_stack)) {
03277 
03278                 /* First allocation is just for 2 elements, since we don't know if this
03279                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
03280                  * immediate realloc on the next call.
03281          */
03282                 num_to_alloc = 1;
03283                 (yy_buffer_stack) = (struct yy_buffer_state**)tagYYalloc
03284                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
03285                                                                 );
03286                 
03287                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
03288                                 
03289                 (yy_buffer_stack_max) = num_to_alloc;
03290                 (yy_buffer_stack_top) = 0;
03291                 return;
03292         }
03293 
03294         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
03295 
03296                 /* Increase the buffer to prepare for a possible push. */
03297                 int grow_size = 8 /* arbitrary grow size */;
03298 
03299                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
03300                 (yy_buffer_stack) = (struct yy_buffer_state**)tagYYrealloc
03301                                                                 ((yy_buffer_stack),
03302                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
03303                                                                 );
03304 
03305                 /* zero only the new slots.*/
03306                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
03307                 (yy_buffer_stack_max) = num_to_alloc;
03308         }
03309 }
03310 
03317 YY_BUFFER_STATE tagYY_scan_buffer  (char * base, yy_size_t  size )
03318 {
03319         YY_BUFFER_STATE b;
03320     
03321         if ( size < 2 ||
03322              base[size-2] != YY_END_OF_BUFFER_CHAR ||
03323              base[size-1] != YY_END_OF_BUFFER_CHAR )
03324                 /* They forgot to leave room for the EOB's. */
03325                 return 0;
03326 
03327         b = (YY_BUFFER_STATE) tagYYalloc(sizeof( struct yy_buffer_state )  );
03328         if ( ! b )
03329                 YY_FATAL_ERROR( "out of dynamic memory in tagYY_scan_buffer()" );
03330 
03331         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
03332         b->yy_buf_pos = b->yy_ch_buf = base;
03333         b->yy_is_our_buffer = 0;
03334         b->yy_input_file = 0;
03335         b->yy_n_chars = b->yy_buf_size;
03336         b->yy_is_interactive = 0;
03337         b->yy_at_bol = 1;
03338         b->yy_fill_buffer = 0;
03339         b->yy_buffer_status = YY_BUFFER_NEW;
03340 
03341         tagYY_switch_to_buffer(b  );
03342 
03343         return b;
03344 }
03345 
03354 YY_BUFFER_STATE tagYY_scan_string (yyconst char * yystr )
03355 {
03356     
03357         return tagYY_scan_bytes(yystr,strlen(yystr) );
03358 }
03359 
03367 YY_BUFFER_STATE tagYY_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
03368 {
03369         YY_BUFFER_STATE b;
03370         char *buf;
03371         yy_size_t n;
03372         int i;
03373     
03374         /* Get memory for full buffer, including space for trailing EOB's. */
03375         n = _yybytes_len + 2;
03376         buf = (char *) tagYYalloc(n  );
03377         if ( ! buf )
03378                 YY_FATAL_ERROR( "out of dynamic memory in tagYY_scan_bytes()" );
03379 
03380         for ( i = 0; i < _yybytes_len; ++i )
03381                 buf[i] = yybytes[i];
03382 
03383         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
03384 
03385         b = tagYY_scan_buffer(buf,n );
03386         if ( ! b )
03387                 YY_FATAL_ERROR( "bad buffer in tagYY_scan_bytes()" );
03388 
03389         /* It's okay to grow etc. this buffer, and we should throw it
03390          * away when we're done.
03391          */
03392         b->yy_is_our_buffer = 1;
03393 
03394         return b;
03395 }
03396 
03397 #ifndef YY_EXIT_FAILURE
03398 #define YY_EXIT_FAILURE 2
03399 #endif
03400 
03401 static void yy_fatal_error (yyconst char* msg )
03402 {
03403         (void) fprintf( stderr, "%s\n", msg );
03404         exit( YY_EXIT_FAILURE );
03405 }
03406 
03407 /* Redefine yyless() so it works in section 3 code. */
03408 
03409 #undef yyless
03410 #define yyless(n) \
03411         do \
03412                 { \
03413                 /* Undo effects of setting up tagYYtext. */ \
03414         int yyless_macro_arg = (n); \
03415         YY_LESS_LINENO(yyless_macro_arg);\
03416                 tagYYtext[tagYYleng] = (yy_hold_char); \
03417                 (yy_c_buf_p) = tagYYtext + yyless_macro_arg; \
03418                 (yy_hold_char) = *(yy_c_buf_p); \
03419                 *(yy_c_buf_p) = '\0'; \
03420                 tagYYleng = yyless_macro_arg; \
03421                 } \
03422         while ( 0 )
03423 
03424 /* Accessor  methods (get/set functions) to struct members. */
03425 
03429 int tagYYget_lineno  (void)
03430 {
03431         
03432     return tagYYlineno;
03433 }
03434 
03438 FILE *tagYYget_in  (void)
03439 {
03440         return tagYYin;
03441 }
03442 
03446 FILE *tagYYget_out  (void)
03447 {
03448         return tagYYout;
03449 }
03450 
03454 int tagYYget_leng  (void)
03455 {
03456         return tagYYleng;
03457 }
03458 
03463 char *tagYYget_text  (void)
03464 {
03465         return tagYYtext;
03466 }
03467 
03472 void tagYYset_lineno (int  line_number )
03473 {
03474     
03475     tagYYlineno = line_number;
03476 }
03477 
03484 void tagYYset_in (FILE *  in_str )
03485 {
03486         tagYYin = in_str ;
03487 }
03488 
03489 void tagYYset_out (FILE *  out_str )
03490 {
03491         tagYYout = out_str ;
03492 }
03493 
03494 int tagYYget_debug  (void)
03495 {
03496         return tagYY_flex_debug;
03497 }
03498 
03499 void tagYYset_debug (int  bdebug )
03500 {
03501         tagYY_flex_debug = bdebug ;
03502 }
03503 
03504 static int yy_init_globals (void)
03505 {
03506         /* Initialization is the same as for the non-reentrant scanner.
03507      * This function is called from tagYYlex_destroy(), so don't allocate here.
03508      */
03509 
03510     (yy_buffer_stack) = 0;
03511     (yy_buffer_stack_top) = 0;
03512     (yy_buffer_stack_max) = 0;
03513     (yy_c_buf_p) = (char *) 0;
03514     (yy_init) = 0;
03515     (yy_start) = 0;
03516 
03517 /* Defined in main.c */
03518 #ifdef YY_STDINIT
03519     tagYYin = stdin;
03520     tagYYout = stdout;
03521 #else
03522     tagYYin = (FILE *) 0;
03523     tagYYout = (FILE *) 0;
03524 #endif
03525 
03526     /* For future reference: Set errno on error, since we are called by
03527      * tagYYlex_init()
03528      */
03529     return 0;
03530 }
03531 
03532 /* tagYYlex_destroy is for both reentrant and non-reentrant scanners. */
03533 int tagYYlex_destroy  (void)
03534 {
03535     
03536     /* Pop the buffer stack, destroying each element. */
03537         while(YY_CURRENT_BUFFER){
03538                 tagYY_delete_buffer(YY_CURRENT_BUFFER  );
03539                 YY_CURRENT_BUFFER_LVALUE = NULL;
03540                 tagYYpop_buffer_state();
03541         }
03542 
03543         /* Destroy the stack itself. */
03544         tagYYfree((yy_buffer_stack) );
03545         (yy_buffer_stack) = NULL;
03546 
03547     /* Reset the globals. This is important in a non-reentrant scanner so the next time
03548      * tagYYlex() is called, initialization will occur. */
03549     yy_init_globals( );
03550 
03551     return 0;
03552 }
03553 
03554 /*
03555  * Internal utility routines.
03556  */
03557 
03558 #ifndef yytext_ptr
03559 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
03560 {
03561         register int i;
03562         for ( i = 0; i < n; ++i )
03563                 s1[i] = s2[i];
03564 }
03565 #endif
03566 
03567 #ifdef YY_NEED_STRLEN
03568 static int yy_flex_strlen (yyconst char * s )
03569 {
03570         register int n;
03571         for ( n = 0; s[n]; ++n )
03572                 ;
03573 
03574         return n;
03575 }
03576 #endif
03577 
03578 void *tagYYalloc (yy_size_t  size )
03579 {
03580         return (void *) malloc( size );
03581 }
03582 
03583 void *tagYYrealloc  (void * ptr, yy_size_t  size )
03584 {
03585         /* The cast to (char *) in the following accommodates both
03586          * implementations that use char* generic pointers, and those
03587          * that use void* generic pointers.  It works with the latter
03588          * because both ANSI C and C++ allow castless assignment from
03589          * any pointer type to void*, and deal with argument conversions
03590          * as though doing an assignment.
03591          */
03592         return (void *) realloc( (char *) ptr, size );
03593 }
03594 
03595 void tagYYfree (void * ptr )
03596 {
03597         free( (char *) ptr );   /* see tagYYrealloc() for (char *) cast */
03598 }
03599 
03600 #define YYTABLES_NAME "yytables"
03601 
03602 #line 673 "doxytag.l"
03603 
03604 
03605 
03606 /*@ ----------------------------------------------------------------------------
03607  */
03608 
03609 
03610 void parse(QCString &s)
03611 {
03612   bases.clear();
03613   nameBug       = FALSE;
03614   //newClass      = TRUE;
03615   inputString   = s;
03616   inputPosition = 0;
03617   yyLineNr      = 0;
03618   tagYYrestart( tagYYin );
03619   BEGIN( Start );
03620   tagYYlex();
03621   //printf("Number of lines scanned: %d\n",yyLineNr);
03622 }
03623 
03624 void parseFile(QFileInfo &fi)
03625 {
03626   printf("Parsing file %s...\n",fi.fileName().data());
03627   QFile f;
03628   f.setName(fi.absFilePath());
03629   if (f.open(IO_ReadOnly))
03630   {
03631     yyFileName = fi.fileName();
03632     className.resize(0);
03633     memberName.resize(0);
03634     //printf("Parsing file %s...\n",fi.fileName().data());
03635     QCString input(fi.size()+1);
03636     docBaseLink=fi.fileName();
03637     docRefName=fi.fileName().copy();
03638     //searchIndex.addReference(docRefName,docBaseLink);
03639     //searchIndex.addWord(docRefName,docRefName,TRUE);
03640     f.readBlock(input.data(),fi.size());
03641     input.at(fi.size())='\0';
03642     parse(input);
03643   }
03644   else
03645   {
03646     fprintf(stderr,"Warning: Cannot open file %s\n",fi.fileName().data());
03647   }
03648 }
03649 
03650 void parseFileOrDir(const char *fileName)
03651 {
03652   QFileInfo fi(fileName);
03653   if (fi.exists())
03654   {
03655     if (fi.isFile())
03656     {
03657       parseFile(fi);
03658     }
03659     else if (fi.isDir())
03660     {
03661       QDir dir(fileName);
03662       dir.setFilter( QDir::Files );
03663       dir.setNameFilter( "*.html" );
03664       const QFileInfoList *list = dir.entryInfoList();
03665       QFileInfoListIterator it( *list );
03666       QFileInfo *cfi;
03667       for ( it.toFirst() ; (cfi=it.current()) ; ++it)
03668       {
03669         if (cfi->isFile())
03670         {
03671           parseFile(*cfi);
03672         }
03673       }
03674     }
03675   }
03676   else
03677   {
03678     fprintf(stderr,"Warning: File %s does not exist\n",fileName);
03679   }
03680 }
03681 
03682 void usage(const char *name)
03683 {
03684   fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2008\n\n",
03685       versionString);
03686   fprintf(stderr,"  Generates a tag file and/or a search index for a set of HTML files\n\n");
03687   fprintf(stderr,"Usage: %s [-t tag_file] [ html_file [html_file...] ]\n",name);
03688   fprintf(stderr,"Options:\n");
03689   fprintf(stderr,"  -t <tag_file>   Generate tag file <tag_file>.\n");
03690   fprintf(stderr,"If no HTML files are given all files in the current dir that\n"
03691                  "have a .html extension are parsed.\n\n");
03692   exit(1);
03693 }
03694 
03695 const char *getArg(int argc,char **argv,int &optind,const char c)
03696 {
03697   char *s=0;
03698   if (strlen(&argv[optind][2])>0)
03699     s=&argv[optind][2];
03700   else if (optind+1<argc)
03701     s=argv[++optind];
03702   else
03703   {
03704     fprintf(stderr,"option -%c requires an argument\n",c);
03705     exit(1);
03706   }
03707   return s;
03708 }
03709 
03710 int main(int argc,char **argv)
03711 {
03712   QCString tagName;
03713   QCString indexName;
03714   
03715   int optind=1;
03716   const char *arg;
03717   while (optind<argc && argv[optind][0]=='-')
03718   {
03719     switch(argv[optind][1])
03720     {
03721       case 't':
03722         arg=getArg(argc,argv,optind,'t');
03723         tagName=arg;
03724         break;
03725       case 's':
03726         arg=getArg(argc,argv,optind,'s');
03727         indexName=arg;
03728         break;
03729       case 'h':
03730       case '?':
03731         usage(argv[0]);
03732         break;
03733       default:
03734         fprintf(stderr,"Unknown option -%c\n",argv[optind][1]);
03735         usage(argv[0]);
03736     }
03737     optind++;
03738   }
03739   
03740   genTag   = !tagName.isEmpty();
03741   genIndex = !indexName.isEmpty();
03742 
03743   if (!genTag && !genIndex)
03744   {
03745     fprintf(stderr,"Nothing to do !\n\n");
03746     usage(argv[0]);
03747   }
03748   
03749   int i;
03750   if (optind>=argc)
03751   {
03752     parseFileOrDir(".");
03753   }
03754   else
03755   {
03756     for (i=optind;i<argc;i++)
03757     {
03758       parseFileOrDir(argv[i]);
03759     }
03760   }
03761   if (genIndex)
03762   {
03763     fprintf(stderr,"Error: doxytag cannot be used to generate a search index anymore.\n"
03764                    "This functionality has been integrated into doxygen.\n");
03765 //    printf("Writing search index\n");
03766 //    if (!searchIndex.saveIndex(indexName))
03767 //    {
03768 //      fprintf(stderr,"Error: Could not write search index\n");
03769 //    }
03770 //    QFileInfo fi(indexName);
03771 //    if (fi.exists())
03772 //    {
03773 //      QCString dir=convertToQCString(fi.dir().absPath());
03774 //      fi.setFile(dir+"/search.png");
03775 //      if (!fi.exists()) writeSearchButton(dir);
03776 //      fi.setFile(dir+"/doxygen.png");
03777 //      if (!fi.exists()) writeLogo(dir);
03778 //      fi.setFile(dir+"/search.cgi");
03779 //      if (!fi.exists())
03780 //      {
03781 //        QFile f;
03782 //      f.setName(dir+"/search.cgi");
03783 //      if (f.open(IO_WriteOnly))
03784 //      {
03785 //        QTextStream t(&f);
03786 //        t << "#!/bin/sh" << endl 
03787 //          << "DOXYSEARCH=" << endl 
03788 //          << "DOXYPATH=" << endl
03789 //          << "if [ -f $DOXYSEARCH ]" << endl
03790 //          << "then" << endl
03791 //          << "  $DOXYSEARCH $DOXYPATH" << endl 
03792 //          << "else" << endl
03793 //          << "  echo \"Content-Type: text/html\"" << endl
03794 //          << "  echo \"\"" << endl
03795 //          << "  echo \"<H1>Error: $DOXYSEARCH not found. Check cgi script!\"" << endl
03796 //          << "fi" << endl;
03797 //          f.close();
03798 //      }         
03799 //      else
03800 //      {
03801 //        fprintf(stderr,"Error: could not open file %s for writing\n",(dir+"/search.cgi").data());
03802 //      }
03803 //      }
03804 //    }
03805   }
03806   if (genTag)
03807   {
03808     QFile f;
03809     f.setName(tagName);
03810     if (f.open(IO_WriteOnly))
03811     {
03812       QTextStream t(&f);
03813       t << "<tagfile>" << endl;
03814       ClassDef *cd=classList.first();
03815       while (cd)
03816       {
03817         t << "  <compound kind=\"";
03818         if (cd->isFile) t << "file"; else t << "class";  
03819         t << "\">" << endl;
03820         t << "    <name>" << convertToXML(cd->name) << "</name>" << endl; 
03821         char *base=cd->bases.first();
03822         while (base)
03823         {
03824           t << "    <base>" << convertToXML(base) << "</base>" << endl;
03825           base=cd->bases.next();
03826         }
03827         t << "    <filename>" << convertToXML(cd->fileName) << "</filename>" << endl;
03828         MemberDef *md=cd->memberList.first();
03829         while (md)
03830         {
03831           if (md->anchor.right(5)=="-enum")
03832           {
03833             t << "    <member kind=\"enum\">" << endl;
03834           }
03835           else
03836           {
03837             t << "    <member kind=\"function\">" << endl;
03838           }
03839           t << "      <name>" << convertToXML(md->name) << "</name>" << endl;
03840           t << "      <anchor>" << convertToXML(md->anchor) << "</anchor>" << endl;
03841           t << "      <arglist>" << convertToXML(md->args) << "</arglist>" << endl;
03842           t << "    </member>" << endl;
03843           md=cd->memberList.next();
03844         }
03845         t << "  </compound>" << endl;
03846         cd=classList.next();
03847       }
03848       t << "</tagfile>" << endl;
03849     }
03850     else
03851     {
03852       fprintf(stderr,"Error: Could not write tag file %s\n",tagName.data());
03853     }
03854   }
03855   return 0;
03856 }
03857 
03858 extern "C" {
03859 int     tagYYwrap()     { return 1 ; }
03860 };
03861 



Generated on Mon Mar 31 10:58:37 2008 by  doxygen 1.5.1