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