Classes | Macros | Typedefs | Functions | Variables
scanner.cpp File Reference
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <assert.h>
#include <ctype.h>
#include <qarray.h>
#include <qstack.h>
#include <qregexp.h>
#include <qfile.h>
#include "scanner.h"
#include "entry.h"
#include "message.h"
#include "config.h"
#include "doxygen.h"
#include "util.h"
#include "defargs.h"
#include "language.h"
#include "commentscan.h"
#include "code.h"
#include "arguments.h"
#include "clangparser.h"

Go to the source code of this file.

Classes

struct  yy_buffer_state
 
struct  yy_trans_info
 

Macros

#define YY_INT_ALIGNED   short int
 
#define yy_create_buffer   scannerYY_create_buffer
 
#define yy_delete_buffer   scannerYY_delete_buffer
 
#define yy_flex_debug   scannerYY_flex_debug
 
#define yy_init_buffer   scannerYY_init_buffer
 
#define yy_flush_buffer   scannerYY_flush_buffer
 
#define yy_load_buffer_state   scannerYY_load_buffer_state
 
#define yy_switch_to_buffer   scannerYY_switch_to_buffer
 
#define yyin   scannerYYin
 
#define yyleng   scannerYYleng
 
#define yylex   scannerYYlex
 
#define yylineno   scannerYYlineno
 
#define yyout   scannerYYout
 
#define yyrestart   scannerYYrestart
 
#define yytext   scannerYYtext
 
#define yywrap   scannerYYwrap
 
#define yyalloc   scannerYYalloc
 
#define yyrealloc   scannerYYrealloc
 
#define yyfree   scannerYYfree
 
#define FLEX_SCANNER
 
#define YY_FLEX_MAJOR_VERSION   2
 
#define YY_FLEX_MINOR_VERSION   5
 
#define YY_FLEX_SUBMINOR_VERSION   35
 
#define FLEX_BETA
 
#define FLEXINT_H
 
#define INT8_MIN   (-128)
 
#define INT16_MIN   (-32767-1)
 
#define INT32_MIN   (-2147483647-1)
 
#define INT8_MAX   (127)
 
#define INT16_MAX   (32767)
 
#define INT32_MAX   (2147483647)
 
#define UINT8_MAX   (255U)
 
#define UINT16_MAX   (65535U)
 
#define UINT32_MAX   (4294967295U)
 
#define yyconst
 
#define YY_NULL   0
 
#define YY_SC_TO_UI(c)   ((unsigned int) (unsigned char) c)
 
#define BEGIN   (yy_start) = 1 + 2 *
 
#define YY_START   (((yy_start) - 1) / 2)
 
#define YYSTATE   YY_START
 
#define YY_STATE_EOF(state)   (YY_END_OF_BUFFER + state + 1)
 
#define YY_NEW_FILE   scannerYYrestart(scannerYYin )
 
#define YY_END_OF_BUFFER_CHAR   0
 
#define YY_BUF_SIZE   16384
 
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
 
#define YY_TYPEDEF_YY_BUFFER_STATE
 
#define EOB_ACT_CONTINUE_SCAN   0
 
#define EOB_ACT_END_OF_FILE   1
 
#define EOB_ACT_LAST_MATCH   2
 
#define YY_LESS_LINENO(n)
 
#define yyless(n)
 
#define unput(c)   yyunput( c, (yytext_ptr) )
 
#define YY_TYPEDEF_YY_SIZE_T
 
#define YY_STRUCT_YY_BUFFER_STATE
 
#define YY_BUFFER_NEW   0
 
#define YY_BUFFER_NORMAL   1
 
#define YY_BUFFER_EOF_PENDING   2
 
#define YY_CURRENT_BUFFER
 
#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]
 
#define YY_FLUSH_BUFFER   scannerYY_flush_buffer(YY_CURRENT_BUFFER )
 
#define yy_new_buffer   scannerYY_create_buffer
 
#define yy_set_interactive(is_interactive)
 
#define yy_set_bol(at_bol)
 
#define YY_AT_BOL()   (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
#define scannerYYwrap(n)   1
 
#define YY_SKIP_YYWRAP
 
#define yytext_ptr   scannerYYtext
 
#define YY_DO_BEFORE_ACTION
 
#define YY_NUM_RULES   731
 
#define YY_END_OF_BUFFER   732
 
#define YY_TRAILING_MASK   0x2000
 
#define YY_TRAILING_HEAD_MASK   0x4000
 
#define REJECT
 
#define yymore()   yymore_used_but_not_detected
 
#define YY_MORE_ADJ   0
 
#define YY_RESTORE_YY_MORE_OFFSET
 
#define YY_NO_INPUT   1
 
#define YY_NO_UNISTD_H   1
 
#define YY_INPUT(buf, result, max_size)   result=yyread(buf,max_size);
 
#define INITIAL   0
 
#define AlignAs   1
 
#define AlignAsEnd   2
 
#define Define   3
 
#define DefineEnd   4
 
#define CompoundName   5
 
#define ClassVar   6
 
#define CSConstraintName   7
 
#define CSConstraintType   8
 
#define CSIndexer   9
 
#define ClassCategory   10
 
#define ClassTemplSpec   11
 
#define CliPropertyType   12
 
#define CliPropertyIndex   13
 
#define CliOverride   14
 
#define Bases   15
 
#define BasesProt   16
 
#define NextSemi   17
 
#define BitFields   18
 
#define EnumBaseType   19
 
#define FindMembers   20
 
#define FindMembersPHP   21
 
#define FindMemberName   22
 
#define FindFields   23
 
#define FindFieldArg   24
 
#define Function   25
 
#define FuncRound   26
 
#define ExcpRound   27
 
#define ExcpList   28
 
#define FuncQual   29
 
#define TrailingReturn   30
 
#define Operator   31
 
#define Array   32
 
#define ReadBody   33
 
#define ReadNSBody   34
 
#define ReadBodyIntf   35
 
#define Using   36
 
#define UsingAlias   37
 
#define UsingAliasEnd   38
 
#define UsingDirective   39
 
#define SkipCurly   40
 
#define SkipCurlyCpp   41
 
#define SkipCurlyEndDoc   42
 
#define SkipString   43
 
#define SkipPHPString   44
 
#define SkipInits   45
 
#define SkipC11Inits   46
 
#define SkipC11Attribute   47
 
#define SkipCPP   48
 
#define SkipCPPBlock   49
 
#define SkipComment   50
 
#define SkipCxxComment   51
 
#define SkipCurlyBlock   52
 
#define SkipRoundBlock   53
 
#define Sharp   54
 
#define SkipRound   55
 
#define SkipSquare   56
 
#define SkipRemainder   57
 
#define StaticAssert   58
 
#define DeclType   59
 
#define TypedefName   60
 
#define TryFunctionBlock   61
 
#define TryFunctionBlockEnd   62
 
#define Comment   63
 
#define PackageName   64
 
#define JavaImport   65
 
#define PHPUse   66
 
#define PHPUseAs   67
 
#define CSAccessorDecl   68
 
#define CSGeneric   69
 
#define PreLineCtrl   70
 
#define DefinePHP   71
 
#define DefinePHPEnd   72
 
#define OldStyleArgs   73
 
#define SkipVerbString   74
 
#define ObjCMethod   75
 
#define ObjCReturnType   76
 
#define ObjCParams   77
 
#define ObjCParamType   78
 
#define ObjCProtocolList   79
 
#define ObjCPropAttr   80
 
#define ObjCSkipStatement   81
 
#define QtPropType   82
 
#define QtPropName   83
 
#define QtPropAttr   84
 
#define QtPropRead   85
 
#define QtPropWrite   86
 
#define ReadInitializer   87
 
#define UNOIDLAttributeBlock   88
 
#define GetCallType   89
 
#define CppQuote   90
 
#define EndCppQuote   91
 
#define MemberSpec   92
 
#define MemberSpecSkip   93
 
#define EndTemplate   94
 
#define FuncPtr   95
 
#define FuncPtrOperator   96
 
#define EndFuncPtr   97
 
#define ReadFuncArgType   98
 
#define ReadTempArgs   99
 
#define IDLUnionCase   100
 
#define NSAliasName   101
 
#define NSAliasArg   102
 
#define CopyString   103
 
#define CopyPHPString   104
 
#define CopyGString   105
 
#define CopyPHPGString   106
 
#define CopyRound   107
 
#define CopyCurly   108
 
#define GCopyRound   109
 
#define GCopyCurly   110
 
#define SkipUnionSwitch   111
 
#define Specialization   112
 
#define FuncPtrInit   113
 
#define FuncFunc   114
 
#define FuncFuncEnd   115
 
#define FuncFuncType   116
 
#define FuncFuncArray   117
 
#define CopyArgString   118
 
#define CopyArgPHPString   119
 
#define CopyArgRound   120
 
#define CopyArgSharp   121
 
#define CopyArgComment   122
 
#define CopyArgCommentLine   123
 
#define CopyArgVerbatim   124
 
#define HereDoc   125
 
#define HereDocEnd   126
 
#define CopyHereDoc   127
 
#define CopyHereDocEnd   128
 
#define RawString   129
 
#define RawGString   130
 
#define IDLAttribute   131
 
#define IDLProp   132
 
#define IDLPropName   133
 
#define Prototype   134
 
#define PrototypePtr   135
 
#define PrototypeQual   136
 
#define PrototypeExc   137
 
#define PrototypeSkipLine   138
 
#define DocLine   139
 
#define DocBlock   140
 
#define DocCopyBlock   141
 
#define YY_EXTRA_TYPE   void *
 
#define YY_READ_BUF_SIZE   8192
 
#define ECHO   do { if (fwrite( scannerYYtext, scannerYYleng, 1, scannerYYout )) {} } while (0)
 
#define yyterminate()   return YY_NULL
 
#define YY_START_STACK_INCR   25
 
#define YY_FATAL_ERROR(msg)   yy_fatal_error( msg )
 
#define YY_DECL_IS_OURS   1
 
#define YY_DECL   int scannerYYlex (void)
 
#define YY_USER_ACTION
 
#define YY_BREAK   break;
 
#define YY_RULE_SETUP
 
#define YY_EXIT_FAILURE   2
 
#define yyless(n)
 
#define YYTABLES_NAME   "yytables"
 

Typedefs

typedef signed char flex_int8_t
 
typedef short int flex_int16_t
 
typedef int flex_int32_t
 
typedef unsigned char flex_uint8_t
 
typedef unsigned short int flex_uint16_t
 
typedef unsigned int flex_uint32_t
 
typedef struct yy_buffer_stateYY_BUFFER_STATE
 
typedef size_t yy_size_t
 
typedef unsigned char YY_CHAR
 
typedef int yy_state_type
 

Functions

void scannerYYrestart (FILE *input_file)
 
void scannerYY_switch_to_buffer (YY_BUFFER_STATE new_buffer)
 
YY_BUFFER_STATE scannerYY_create_buffer (FILE *file, int size)
 
void scannerYY_delete_buffer (YY_BUFFER_STATE b)
 
void scannerYY_flush_buffer (YY_BUFFER_STATE b)
 
void scannerYYpush_buffer_state (YY_BUFFER_STATE new_buffer)
 
void scannerYYpop_buffer_state (void)
 
static void scannerYYensure_buffer_stack (void)
 
static void scannerYY_load_buffer_state (void)
 
static void scannerYY_init_buffer (YY_BUFFER_STATE b, FILE *file)
 
YY_BUFFER_STATE scannerYY_scan_buffer (char *base, yy_size_t size)
 
YY_BUFFER_STATE scannerYY_scan_string (yyconst char *yy_str)
 
YY_BUFFER_STATE scannerYY_scan_bytes (yyconst char *bytes, int len)
 
void * scannerYYalloc (yy_size_t)
 
void * scannerYYrealloc (void *, yy_size_t)
 
void scannerYYfree (void *)
 
static yy_state_type yy_get_previous_state (void)
 
static yy_state_type yy_try_NUL_trans (yy_state_type current_state)
 
static int yy_get_next_buffer (void)
 
static void yy_fatal_error (yyconst char msg[])
 
static void initParser ()
 
static void initEntry ()
 
static void lineCount ()
 
static int computeIndent (const char *s, int startIndent)
 
static void addType (Entry *current)
 
static QCString stripQuotes (const char *s)
 
static void startCommentBlock (bool)
 
static void handleCommentBlock (const QCString &doc, bool brief)
 
static void handleParametersCommentBlocks (ArgumentList *al)
 
static bool nameIsOperator (QCString &name)
 
static void setContext ()
 
static void prependScope ()
 
static bool checkForKnRstyleC ()
 
static void splitKnRArg (QCString &oldStyleArgPtr, QCString &oldStyleArgName)
 
static void addKnRArgInfo (const QCString &type, const QCString &name, const QCString &brief, const QCString &docs)
 
void fixArgumentListForJavaScript (ArgumentList *al)
 
static int yyread (char *buf, int max_size)
 
static int yy_init_globals (void)
 
int scannerYYlex_destroy (void)
 
int scannerYYget_debug (void)
 
void scannerYYset_debug (int debug_flag)
 
YY_EXTRA_TYPE scannerYYget_extra (void)
 
void scannerYYset_extra (YY_EXTRA_TYPE user_defined)
 
FILE * scannerYYget_in (void)
 
void scannerYYset_in (FILE *in_str)
 
FILE * scannerYYget_out (void)
 
void scannerYYset_out (FILE *out_str)
 
int scannerYYget_leng (void)
 
char * scannerYYget_text (void)
 
int scannerYYget_lineno (void)
 
void scannerYYset_lineno (int line_number)
 
static void yyunput (int c, char *buf_ptr)
 
int scannerYYlex (void)
 
 if (!(yy_init))
 
 while (1)
 
static void yyunput (int c, register char *yy_bp)
 
static void yy_fatal_error (yyconst char *msg)
 
static void newEntry ()
 
static void parseCompounds (Entry *rt)
 
static void parseMain (const char *fileName, const char *fileBuf, Entry *rt, bool sameTranslationUnit, QStrList &filesInSameTranslationUnit)
 
static void parsePrototype (const QCString &text)
 
void scanFreeScanner ()
 

Variables

int scannerYYleng
 
FILE * scannerYYin = (FILE *) 0
 
FILE * scannerYYout = (FILE *) 0
 
static size_t yy_buffer_stack_top = 0
 
static size_t yy_buffer_stack_max = 0
 
static YY_BUFFER_STATEyy_buffer_stack = 0
 
static char yy_hold_char
 
static int yy_n_chars
 
static char * yy_c_buf_p = (char *) 0
 
static int yy_init = 0
 
static int yy_start = 0
 
static int yy_did_buffer_switch_on_eof
 
int scannerYYlineno = 1
 
char * scannerYYtext
 
static yyconst flex_int16_t yy_acclist [5360]
 
static yyconst flex_int16_t yy_accept [4614]
 
static yyconst flex_int32_t yy_ec [256]
 
static yyconst flex_int32_t yy_meta [89]
 
static yyconst flex_int32_t yy_base [5274]
 
static yyconst flex_int16_t yy_def [5274]
 
static yyconst flex_int16_t yy_nxt [36507]
 
static yyconst flex_int16_t yy_chk [36507]
 
int scannerYY_flex_debug = 0
 
static yy_state_typeyy_state_buf =0
 
static yy_state_typeyy_state_ptr =0
 
static char * yy_full_match
 
static int yy_lp
 
static int yy_looking_for_trail_begin = 0
 
static int yy_full_lp
 
static int * yy_full_state
 
static ParserInterfaceg_thisParser
 
static const char * inputString
 
static int inputPosition
 
static QFile inputFile
 
static int lastContext
 
static int lastCContext
 
static int lastDocContext
 
static int lastCPPContext
 
static int lastSkipSharpContext
 
static int lastSkipRoundContext
 
static int lastStringContext
 
static int lastCurlyContext
 
static int lastRoundContext
 
static int lastSquareContext
 
static int lastInitializerContext
 
static int lastClassTemplSpecContext
 
static int lastPreLineCtrlContext
 
static int lastSkipVerbStringContext
 
static int lastCommentInArgContext
 
static int lastRawStringContext
 
static int lastCSConstraint
 
static int lastHereDocContext
 
static int lastDefineContext
 
static int lastAlignAsContext
 
static int lastC11AttributeContext
 
static Protection protection
 
static Protection baseProt
 
static int sharpCount = 0
 
static int roundCount = 0
 
static int curlyCount = 0
 
static int squareCount = 0
 
static int padCount = 0
 
static Entrycurrent_root = 0
 
static Entryglobal_root = 0
 
static Entrycurrent = 0
 
static Entryprevious = 0
 
static EntrytempEntry = 0
 
static EntryfirstTypedefEntry = 0
 
static EntrymemspecEntry = 0
 
static int yyLineNr = 1
 
static int yyBegLineNr = yyLineNr
 
static int yyColNr = 1
 
static int yyBegColNr = yyColNr
 
static int anonCount = 0
 
static int anonNSCount = 0
 
static QCString yyFileName
 
static MethodTypes mtype
 
static bool gstat
 
static bool removeSlashes
 
static Specifier virt
 
static Specifier baseVirt
 
static QCString msType
 
static QCString msName
 
static QCString msArgs
 
static bool isTypedef
 
static int tmpDocType
 
static QCString sectionLabel
 
static QCString sectionTitle
 
static QCString funcPtrType
 
static QCString templateStr
 
static QCString aliasName
 
static QCString baseName
 
static QCStringspecName
 
static QCString formulaText
 
static bool useOverrideCommands = FALSE
 
static SrcLangExt language
 
static bool insideIDL = FALSE
 processing IDL code? More...
 
static bool insideJava = FALSE
 processing Java code? More...
 
static bool insideCS = FALSE
 processing C# code? More...
 
static bool insideD = FALSE
 processing D code? More...
 
static bool insidePHP = FALSE
 processing PHP code? More...
 
static bool insideObjC = FALSE
 processing Objective C code? More...
 
static bool insideCli = FALSE
 processing C++/CLI code? More...
 
static bool insideJS = FALSE
 processing JavaScript code? More...
 
static bool insideCpp = TRUE
 processing C/C++ code More...
 
static bool insideCppQuote = FALSE
 
static bool insideProtocolList = FALSE
 
static int argRoundCount
 
static int argSharpCount
 
static int currentArgumentContext
 
static int lastCopyArgStringContext
 
static int lastCopyArgContext
 
static QCStringcopyArgString
 
static QCString fullArgString
 
static ArgumentListcurrentArgumentList
 
static char lastCopyArgChar
 
static QCStringpCopyQuotedString
 
static QCStringpCopyRoundString
 
static QCStringpCopyCurlyString
 
static QCStringpCopyRawString
 
static QGStringpCopyCurlyGString
 
static QGStringpCopyRoundGString
 
static QGStringpCopyQuotedGString
 
static QGStringpCopyHereDocGString
 
static QGStringpCopyRawGString
 
static QGStringpSkipVerbString
 
static QStack< GroupingautoGroupStack
 
static bool insideFormula
 
static bool insideTryBlock =FALSE
 
static bool insideCode
 
static bool needsSemi
 
static int initBracketCount
 
static QCString oldStyleArgType
 
static QCString docBackup
 
static QCString briefBackup
 
static int docBlockContext
 
static QGString docBlock
 
static QCString docBlockName
 
static bool docBlockInBody
 
static bool docBlockAutoBrief
 
static char docBlockTerm
 
static QCString idlAttr
 
static QCString idlProp
 
static bool odlProp
 
static bool g_lexInit = FALSE
 
static bool externC
 
static QCString g_delimiter
 
static int g_column
 
static int g_fencedSize =0
 
static bool g_nestedComment =0
 
 YY_DECL
 
register char * yy_cp
 
register char * yy_bp
 
register int yy_act
 

Macro Definition Documentation

#define AlignAs   1

Definition at line 11518 of file scanner.cpp.

#define AlignAsEnd   2

Definition at line 11519 of file scanner.cpp.

#define Array   32

Definition at line 11549 of file scanner.cpp.

#define Bases   15

Definition at line 11532 of file scanner.cpp.

#define BasesProt   16

Definition at line 11533 of file scanner.cpp.

#define BEGIN   (yy_start) = 1 + 2 *

Definition at line 144 of file scanner.cpp.

#define BitFields   18

Definition at line 11535 of file scanner.cpp.

#define ClassCategory   10

Definition at line 11527 of file scanner.cpp.

#define ClassTemplSpec   11

Definition at line 11528 of file scanner.cpp.

#define ClassVar   6

Definition at line 11523 of file scanner.cpp.

#define CliOverride   14

Definition at line 11531 of file scanner.cpp.

#define CliPropertyIndex   13

Definition at line 11530 of file scanner.cpp.

#define CliPropertyType   12

Definition at line 11529 of file scanner.cpp.

#define Comment   63

Definition at line 11580 of file scanner.cpp.

#define CompoundName   5

Definition at line 11522 of file scanner.cpp.

#define CopyArgComment   122

Definition at line 11639 of file scanner.cpp.

#define CopyArgCommentLine   123

Definition at line 11640 of file scanner.cpp.

#define CopyArgPHPString   119

Definition at line 11636 of file scanner.cpp.

#define CopyArgRound   120

Definition at line 11637 of file scanner.cpp.

#define CopyArgSharp   121

Definition at line 11638 of file scanner.cpp.

#define CopyArgString   118

Definition at line 11635 of file scanner.cpp.

#define CopyArgVerbatim   124

Definition at line 11641 of file scanner.cpp.

#define CopyCurly   108

Definition at line 11625 of file scanner.cpp.

#define CopyGString   105

Definition at line 11622 of file scanner.cpp.

#define CopyHereDoc   127

Definition at line 11644 of file scanner.cpp.

#define CopyHereDocEnd   128

Definition at line 11645 of file scanner.cpp.

#define CopyPHPGString   106

Definition at line 11623 of file scanner.cpp.

#define CopyPHPString   104

Definition at line 11621 of file scanner.cpp.

#define CopyRound   107

Definition at line 11624 of file scanner.cpp.

#define CopyString   103

Definition at line 11620 of file scanner.cpp.

#define CppQuote   90

Definition at line 11607 of file scanner.cpp.

#define CSAccessorDecl   68

Definition at line 11585 of file scanner.cpp.

#define CSConstraintName   7

Definition at line 11524 of file scanner.cpp.

#define CSConstraintType   8

Definition at line 11525 of file scanner.cpp.

#define CSGeneric   69

Definition at line 11586 of file scanner.cpp.

#define CSIndexer   9

Definition at line 11526 of file scanner.cpp.

#define DeclType   59

Definition at line 11576 of file scanner.cpp.

#define Define   3

Definition at line 11520 of file scanner.cpp.

#define DefineEnd   4

Definition at line 11521 of file scanner.cpp.

#define DefinePHP   71

Definition at line 11588 of file scanner.cpp.

#define DefinePHPEnd   72

Definition at line 11589 of file scanner.cpp.

#define DocBlock   140

Definition at line 11657 of file scanner.cpp.

#define DocCopyBlock   141

Definition at line 11658 of file scanner.cpp.

#define DocLine   139

Definition at line 11656 of file scanner.cpp.

#define ECHO   do { if (fwrite( scannerYYtext, scannerYYleng, 1, scannerYYout )) {} } while (0)

Definition at line 11745 of file scanner.cpp.

#define EndCppQuote   91

Definition at line 11608 of file scanner.cpp.

#define EndFuncPtr   97

Definition at line 11614 of file scanner.cpp.

#define EndTemplate   94

Definition at line 11611 of file scanner.cpp.

#define EnumBaseType   19

Definition at line 11536 of file scanner.cpp.

#define EOB_ACT_CONTINUE_SCAN   0

Definition at line 179 of file scanner.cpp.

#define EOB_ACT_END_OF_FILE   1

Definition at line 180 of file scanner.cpp.

#define EOB_ACT_LAST_MATCH   2

Definition at line 181 of file scanner.cpp.

#define ExcpList   28

Definition at line 11545 of file scanner.cpp.

#define ExcpRound   27

Definition at line 11544 of file scanner.cpp.

#define FindFieldArg   24

Definition at line 11541 of file scanner.cpp.

#define FindFields   23

Definition at line 11540 of file scanner.cpp.

#define FindMemberName   22

Definition at line 11539 of file scanner.cpp.

#define FindMembers   20

Definition at line 11537 of file scanner.cpp.

#define FindMembersPHP   21

Definition at line 11538 of file scanner.cpp.

#define FLEX_BETA

Definition at line 33 of file scanner.cpp.

#define FLEX_SCANNER

Definition at line 28 of file scanner.cpp.

#define FLEXINT_H

Definition at line 49 of file scanner.cpp.

#define FuncFunc   114

Definition at line 11631 of file scanner.cpp.

#define FuncFuncArray   117

Definition at line 11634 of file scanner.cpp.

#define FuncFuncEnd   115

Definition at line 11632 of file scanner.cpp.

#define FuncFuncType   116

Definition at line 11633 of file scanner.cpp.

#define FuncPtr   95

Definition at line 11612 of file scanner.cpp.

#define FuncPtrInit   113

Definition at line 11630 of file scanner.cpp.

#define FuncPtrOperator   96

Definition at line 11613 of file scanner.cpp.

#define FuncQual   29

Definition at line 11546 of file scanner.cpp.

#define FuncRound   26

Definition at line 11543 of file scanner.cpp.

#define Function   25

Definition at line 11542 of file scanner.cpp.

#define GCopyCurly   110

Definition at line 11627 of file scanner.cpp.

#define GCopyRound   109

Definition at line 11626 of file scanner.cpp.

#define GetCallType   89

Definition at line 11606 of file scanner.cpp.

#define HereDoc   125

Definition at line 11642 of file scanner.cpp.

#define HereDocEnd   126

Definition at line 11643 of file scanner.cpp.

#define IDLAttribute   131

Definition at line 11648 of file scanner.cpp.

#define IDLProp   132

Definition at line 11649 of file scanner.cpp.

#define IDLPropName   133

Definition at line 11650 of file scanner.cpp.

#define IDLUnionCase   100

Definition at line 11617 of file scanner.cpp.

#define INITIAL   0

Prototype scanner states comment parsing states

Definition at line 11517 of file scanner.cpp.

#define INT16_MAX   (32767)

Definition at line 92 of file scanner.cpp.

#define INT16_MIN   (-32767-1)

Definition at line 83 of file scanner.cpp.

#define INT32_MAX   (2147483647)

Definition at line 95 of file scanner.cpp.

#define INT32_MIN   (-2147483647-1)

Definition at line 86 of file scanner.cpp.

#define INT8_MAX   (127)

Definition at line 89 of file scanner.cpp.

#define INT8_MIN   (-128)

Definition at line 80 of file scanner.cpp.

#define JavaImport   65

Definition at line 11582 of file scanner.cpp.

#define MemberSpec   92

Definition at line 11609 of file scanner.cpp.

#define MemberSpecSkip   93

Definition at line 11610 of file scanner.cpp.

#define NextSemi   17

Definition at line 11534 of file scanner.cpp.

#define NSAliasArg   102

Definition at line 11619 of file scanner.cpp.

#define NSAliasName   101

Definition at line 11618 of file scanner.cpp.

#define ObjCMethod   75

Definition at line 11592 of file scanner.cpp.

#define ObjCParams   77

Definition at line 11594 of file scanner.cpp.

#define ObjCParamType   78

Definition at line 11595 of file scanner.cpp.

#define ObjCPropAttr   80

Definition at line 11597 of file scanner.cpp.

#define ObjCProtocolList   79

Definition at line 11596 of file scanner.cpp.

#define ObjCReturnType   76

Definition at line 11593 of file scanner.cpp.

#define ObjCSkipStatement   81

Definition at line 11598 of file scanner.cpp.

#define OldStyleArgs   73

Definition at line 11590 of file scanner.cpp.

#define Operator   31

Definition at line 11548 of file scanner.cpp.

#define PackageName   64

Definition at line 11581 of file scanner.cpp.

#define PHPUse   66

Definition at line 11583 of file scanner.cpp.

#define PHPUseAs   67

Definition at line 11584 of file scanner.cpp.

#define PreLineCtrl   70

Definition at line 11587 of file scanner.cpp.

#define Prototype   134

Definition at line 11651 of file scanner.cpp.

#define PrototypeExc   137

Definition at line 11654 of file scanner.cpp.

#define PrototypePtr   135

Definition at line 11652 of file scanner.cpp.

#define PrototypeQual   136

Definition at line 11653 of file scanner.cpp.

#define PrototypeSkipLine   138

Definition at line 11655 of file scanner.cpp.

#define QtPropAttr   84

Definition at line 11601 of file scanner.cpp.

#define QtPropName   83

Definition at line 11600 of file scanner.cpp.

#define QtPropRead   85

Definition at line 11602 of file scanner.cpp.

#define QtPropType   82

Definition at line 11599 of file scanner.cpp.

#define QtPropWrite   86

Definition at line 11603 of file scanner.cpp.

#define RawGString   130

Definition at line 11647 of file scanner.cpp.

#define RawString   129

Definition at line 11646 of file scanner.cpp.

#define ReadBody   33

Definition at line 11550 of file scanner.cpp.

#define ReadBodyIntf   35

Definition at line 11552 of file scanner.cpp.

#define ReadFuncArgType   98

Definition at line 11615 of file scanner.cpp.

#define ReadInitializer   87

Definition at line 11604 of file scanner.cpp.

#define ReadNSBody   34

Definition at line 11551 of file scanner.cpp.

#define ReadTempArgs   99

Definition at line 11616 of file scanner.cpp.

#define REJECT
Value:
{ \
*yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */ \
yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
++(yy_lp); \
goto find_rule; \
}
static char * yy_full_match
Definition: scanner.cpp:10756
register char * yy_cp
Definition: scanner.cpp:11838
static int yy_full_lp
Definition: scanner.cpp:10759
static char yy_hold_char
Definition: scanner.cpp:292
static int yy_lp
Definition: scanner.cpp:10757
static yy_state_type * yy_state_ptr
Definition: scanner.cpp:10755
static int * yy_full_state
Definition: scanner.cpp:10760

Definition at line 10763 of file scanner.cpp.

#define scannerYYwrap (   n)    1

Definition at line 354 of file scanner.cpp.

#define Sharp   54

Definition at line 11571 of file scanner.cpp.

#define SkipC11Attribute   47

Definition at line 11564 of file scanner.cpp.

#define SkipC11Inits   46

Definition at line 11563 of file scanner.cpp.

#define SkipComment   50

Definition at line 11567 of file scanner.cpp.

#define SkipCPP   48

Definition at line 11565 of file scanner.cpp.

#define SkipCPPBlock   49

Definition at line 11566 of file scanner.cpp.

#define SkipCurly   40

Definition at line 11557 of file scanner.cpp.

#define SkipCurlyBlock   52

Definition at line 11569 of file scanner.cpp.

#define SkipCurlyCpp   41

Definition at line 11558 of file scanner.cpp.

#define SkipCurlyEndDoc   42

Definition at line 11559 of file scanner.cpp.

#define SkipCxxComment   51

Definition at line 11568 of file scanner.cpp.

#define SkipInits   45

Definition at line 11562 of file scanner.cpp.

#define SkipPHPString   44

Definition at line 11561 of file scanner.cpp.

#define SkipRemainder   57

Definition at line 11574 of file scanner.cpp.

#define SkipRound   55

Definition at line 11572 of file scanner.cpp.

#define SkipRoundBlock   53

Definition at line 11570 of file scanner.cpp.

#define SkipSquare   56

Definition at line 11573 of file scanner.cpp.

#define SkipString   43

Definition at line 11560 of file scanner.cpp.

#define SkipUnionSwitch   111

Definition at line 11628 of file scanner.cpp.

#define SkipVerbString   74

Definition at line 11591 of file scanner.cpp.

#define Specialization   112

Definition at line 11629 of file scanner.cpp.

#define StaticAssert   58

Definition at line 11575 of file scanner.cpp.

#define TrailingReturn   30

Definition at line 11547 of file scanner.cpp.

#define TryFunctionBlock   61

Definition at line 11578 of file scanner.cpp.

#define TryFunctionBlockEnd   62

Definition at line 11579 of file scanner.cpp.

#define TypedefName   60

Definition at line 11577 of file scanner.cpp.

#define UINT16_MAX   (65535U)

Definition at line 101 of file scanner.cpp.

#define UINT32_MAX   (4294967295U)

Definition at line 104 of file scanner.cpp.

#define UINT8_MAX   (255U)

Definition at line 98 of file scanner.cpp.

#define UNOIDLAttributeBlock   88

Definition at line 11605 of file scanner.cpp.

#define unput (   c)    yyunput( c, (yytext_ptr) )

Definition at line 199 of file scanner.cpp.

#define Using   36

Definition at line 11553 of file scanner.cpp.

#define UsingAlias   37

Definition at line 11554 of file scanner.cpp.

#define UsingAliasEnd   38

Definition at line 11555 of file scanner.cpp.

#define UsingDirective   39

Definition at line 11556 of file scanner.cpp.

#define YY_AT_BOL ( )    (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

Definition at line 350 of file scanner.cpp.

#define YY_BREAK   break;

Definition at line 11824 of file scanner.cpp.

#define YY_BUF_SIZE   16384

Definition at line 163 of file scanner.cpp.

#define YY_BUFFER_EOF_PENDING   2

Definition at line 266 of file scanner.cpp.

#define YY_BUFFER_NEW   0

Definition at line 254 of file scanner.cpp.

#define YY_BUFFER_NORMAL   1

Definition at line 255 of file scanner.cpp.

#define yy_create_buffer   scannerYY_create_buffer

Definition at line 9 of file scanner.cpp.

#define YY_CURRENT_BUFFER
Value:
: NULL)
static YY_BUFFER_STATE * yy_buffer_stack
Definition: scanner.cpp:274
static size_t yy_buffer_stack_top
Definition: scanner.cpp:272

Definition at line 282 of file scanner.cpp.

#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]

Definition at line 289 of file scanner.cpp.

#define YY_DECL   int scannerYYlex (void)

Definition at line 11812 of file scanner.cpp.

#define YY_DECL_IS_OURS   1

Definition at line 11808 of file scanner.cpp.

#define yy_delete_buffer   scannerYY_delete_buffer

Definition at line 10 of file scanner.cpp.

#define YY_DO_BEFORE_ACTION
Value:
scannerYYleng = (size_t) (yy_cp - yy_bp); \
*yy_cp = '\0'; \
static char * yy_c_buf_p
Definition: scanner.cpp:297
register char * yy_cp
Definition: scanner.cpp:11838
static char yy_hold_char
Definition: scanner.cpp:292
register char * yy_bp
Definition: scanner.cpp:11838
int scannerYYleng
Definition: scanner.cpp:294
#define yytext_ptr
Definition: scanner.cpp:368

Definition at line 378 of file scanner.cpp.

#define YY_END_OF_BUFFER   732

Definition at line 386 of file scanner.cpp.

#define YY_END_OF_BUFFER_CHAR   0

Definition at line 159 of file scanner.cpp.

#define YY_EXIT_FAILURE   2

Definition at line 21881 of file scanner.cpp.

#define YY_EXTRA_TYPE   void *

Definition at line 11669 of file scanner.cpp.

#define YY_FATAL_ERROR (   msg)    yy_fatal_error( msg )

Definition at line 11799 of file scanner.cpp.

#define yy_flex_debug   scannerYY_flex_debug

Definition at line 11 of file scanner.cpp.

#define YY_FLEX_MAJOR_VERSION   2

Definition at line 29 of file scanner.cpp.

#define YY_FLEX_MINOR_VERSION   5

Definition at line 30 of file scanner.cpp.

#define YY_FLEX_SUBMINOR_VERSION   35

Definition at line 31 of file scanner.cpp.

#define yy_flush_buffer   scannerYY_flush_buffer

Definition at line 13 of file scanner.cpp.

#define YY_FLUSH_BUFFER   scannerYY_flush_buffer(YY_CURRENT_BUFFER )

Definition at line 318 of file scanner.cpp.

#define yy_init_buffer   scannerYY_init_buffer

Definition at line 12 of file scanner.cpp.

#define YY_INPUT (   buf,
  result,
  max_size 
)    result=yyread(buf,max_size);

Definition at line 11356 of file scanner.cpp.

#define YY_INT_ALIGNED   short int

Definition at line 5 of file scanner.cpp.

#define YY_LESS_LINENO (   n)

Definition at line 183 of file scanner.cpp.

#define yy_load_buffer_state   scannerYY_load_buffer_state

Definition at line 14 of file scanner.cpp.

#define YY_MORE_ADJ   0

Definition at line 10775 of file scanner.cpp.

#define yy_new_buffer   scannerYY_create_buffer

Definition at line 328 of file scanner.cpp.

#define YY_NEW_FILE   scannerYYrestart(scannerYYin )

Definition at line 157 of file scanner.cpp.

#define YY_NO_INPUT   1

Definition at line 10824 of file scanner.cpp.

#define YY_NO_UNISTD_H   1

Definition at line 10825 of file scanner.cpp.

#define YY_NULL   0

Definition at line 131 of file scanner.cpp.

#define YY_NUM_RULES   731

Definition at line 385 of file scanner.cpp.

#define YY_READ_BUF_SIZE   8192

Definition at line 11737 of file scanner.cpp.

#define YY_RESTORE_YY_MORE_OFFSET

Definition at line 10776 of file scanner.cpp.

#define YY_RULE_SETUP
Value:
if ( scannerYYleng > 0 ) \
(scannerYYtext[scannerYYleng - 1] == '\n'); \
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_USER_ACTION
Definition: scanner.cpp:11819
char * scannerYYtext
Definition: scanner.cpp:10777
int scannerYYleng
Definition: scanner.cpp:294

Definition at line 11827 of file scanner.cpp.

#define YY_SC_TO_UI (   c)    ((unsigned int) (unsigned char) c)

Definition at line 138 of file scanner.cpp.

#define yy_set_bol (   at_bol)
Value:
{ \
scannerYYensure_buffer_stack (); \
scannerYY_create_buffer(scannerYYin,YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
}
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_BUF_SIZE
Definition: scanner.cpp:163
FILE * scannerYYin
Definition: scanner.cpp:359
if(!(yy_init))
Definition: scanner.cpp:11846

Definition at line 340 of file scanner.cpp.

#define yy_set_interactive (   is_interactive)
Value:
{ \
scannerYYensure_buffer_stack (); \
scannerYY_create_buffer(scannerYYin,YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
}
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_BUF_SIZE
Definition: scanner.cpp:163
FILE * scannerYYin
Definition: scanner.cpp:359
if(!(yy_init))
Definition: scanner.cpp:11846

Definition at line 330 of file scanner.cpp.

#define YY_SKIP_YYWRAP

Definition at line 355 of file scanner.cpp.

#define YY_START   (((yy_start) - 1) / 2)

Definition at line 150 of file scanner.cpp.

#define YY_START_STACK_INCR   25

Definition at line 11794 of file scanner.cpp.

#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))

Definition at line 168 of file scanner.cpp.

#define YY_STATE_EOF (   state)    (YY_END_OF_BUFFER + state + 1)

Definition at line 154 of file scanner.cpp.

#define YY_STRUCT_YY_BUFFER_STATE

Definition at line 207 of file scanner.cpp.

#define yy_switch_to_buffer   scannerYY_switch_to_buffer

Definition at line 15 of file scanner.cpp.

#define YY_TRAILING_HEAD_MASK   0x4000

Definition at line 10762 of file scanner.cpp.

#define YY_TRAILING_MASK   0x2000

Definition at line 10761 of file scanner.cpp.

#define YY_TYPEDEF_YY_BUFFER_STATE

Definition at line 171 of file scanner.cpp.

#define YY_TYPEDEF_YY_SIZE_T

Definition at line 202 of file scanner.cpp.

#define YY_USER_ACTION

Definition at line 11819 of file scanner.cpp.

#define yyalloc   scannerYYalloc

Definition at line 24 of file scanner.cpp.

#define yyconst

Definition at line 127 of file scanner.cpp.

#define yyfree   scannerYYfree

Definition at line 26 of file scanner.cpp.

#define yyin   scannerYYin

Definition at line 16 of file scanner.cpp.

#define yyleng   scannerYYleng

Definition at line 17 of file scanner.cpp.

#define yyless (   n)
Value:
do \
{ \
/* Undo effects of setting up scannerYYtext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */ \
} \
while ( 0 )
#define YY_DO_BEFORE_ACTION
Definition: scanner.cpp:378
static char * yy_c_buf_p
Definition: scanner.cpp:297
register char * yy_cp
Definition: scanner.cpp:11838
#define YY_MORE_ADJ
Definition: scanner.cpp:10775
std::void_t< T > n
#define YY_RESTORE_YY_MORE_OFFSET
Definition: scanner.cpp:10776
static char yy_hold_char
Definition: scanner.cpp:292
register char * yy_bp
Definition: scanner.cpp:11838
while(1)
Definition: scanner.cpp:11878

Definition at line 21893 of file scanner.cpp.

#define yyless (   n)
Value:
do \
{ \
/* Undo effects of setting up scannerYYtext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
(yy_c_buf_p) = scannerYYtext + yyless_macro_arg; \
*(yy_c_buf_p) = '\0'; \
scannerYYleng = yyless_macro_arg; \
} \
while ( 0 )
static char * yy_c_buf_p
Definition: scanner.cpp:297
std::void_t< T > n
static char yy_hold_char
Definition: scanner.cpp:292
char * scannerYYtext
Definition: scanner.cpp:10777
int scannerYYleng
Definition: scanner.cpp:294
while(1)
Definition: scanner.cpp:11878

Definition at line 21893 of file scanner.cpp.

#define yylex   scannerYYlex

Definition at line 18 of file scanner.cpp.

#define yylineno   scannerYYlineno

Definition at line 19 of file scanner.cpp.

#define yymore ( )    yymore_used_but_not_detected

Definition at line 10774 of file scanner.cpp.

#define yyout   scannerYYout

Definition at line 20 of file scanner.cpp.

#define yyrealloc   scannerYYrealloc

Definition at line 25 of file scanner.cpp.

#define yyrestart   scannerYYrestart

Definition at line 21 of file scanner.cpp.

#define YYSTATE   YY_START

Definition at line 151 of file scanner.cpp.

#define YYTABLES_NAME   "yytables"

Definition at line 22091 of file scanner.cpp.

#define yyterminate ( )    return YY_NULL

Definition at line 11789 of file scanner.cpp.

#define yytext   scannerYYtext

Definition at line 22 of file scanner.cpp.

#define yytext_ptr   scannerYYtext

Definition at line 368 of file scanner.cpp.

#define yywrap   scannerYYwrap

Definition at line 23 of file scanner.cpp.

Typedef Documentation

typedef short int flex_int16_t

Definition at line 71 of file scanner.cpp.

typedef int flex_int32_t

Definition at line 72 of file scanner.cpp.

typedef signed char flex_int8_t

Definition at line 70 of file scanner.cpp.

typedef unsigned short int flex_uint16_t

Definition at line 74 of file scanner.cpp.

typedef unsigned int flex_uint32_t

Definition at line 75 of file scanner.cpp.

typedef unsigned char flex_uint8_t

Definition at line 73 of file scanner.cpp.

Definition at line 172 of file scanner.cpp.

typedef unsigned char YY_CHAR

Definition at line 357 of file scanner.cpp.

typedef size_t yy_size_t

Definition at line 203 of file scanner.cpp.

typedef int yy_state_type

Definition at line 361 of file scanner.cpp.

Function Documentation

static void addKnRArgInfo ( const QCString type,
const QCString name,
const QCString brief,
const QCString docs 
)
static

Update the argument name with additional type info. For K&R style function the type is found after the argument list, so this routine in needed to fix up.

Definition at line 11304 of file scanner.cpp.

11306 {
11307  if (current->argList==0) return;
11309  Argument *a;
11310  for (ali.toFirst();(a=ali.current());++ali)
11311  {
11312  if (a->type==name)
11313  {
11314  a->type=type.stripWhiteSpace();
11315  if (a->type.left(9)=="register ") // strip keyword
11316  {
11317  a->type=a->type.mid(9);
11318  }
11319  a->name=name.stripWhiteSpace();
11320  if (!brief.isEmpty() && !docs.isEmpty())
11321  {
11322  a->docs=brief+"\n\n"+docs;
11323  }
11324  else if (!brief.isEmpty())
11325  {
11326  a->docs=brief;
11327  }
11328  else
11329  {
11330  a->docs=docs;
11331  }
11332  }
11333  }
11334 }
QCString type
Definition: arguments.h:67
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool brief
bool isEmpty() const
Definition: qcstring.h:189
static Entry * current
Definition: scanner.cpp:10865
ArgumentList * argList
member arguments as a list
Definition: entry.h:254
QCString left(uint len) const
Definition: qcstring.cpp:213
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
QCString name
Definition: arguments.h:69
QCString docs
Definition: arguments.h:72
static void addType ( Entry current)
static

Definition at line 11099 of file scanner.cpp.

11100 {
11101  uint tl=current->type.length();
11102  if( tl>0 && !current->name.isEmpty() && current->type.at(tl-1)!='.')
11103  {
11104  current->type += ' ' ;
11105  }
11106  current->type += current->name ;
11107  current->name.resize(0) ;
11108  tl=current->type.length();
11109  if( tl>0 && !current->args.isEmpty() && current->type.at(tl-1)!='.')
11110  {
11111  current->type += ' ' ;
11112  }
11113  current->type += current->args ;
11114  current->args.resize(0) ;
11115  current->argList->clear();
11116 }
bool resize(uint newlen)
Definition: qcstring.h:225
bool isEmpty() const
Definition: qcstring.h:189
uint length() const
Definition: qcstring.h:195
char & at(uint i) const
Definition: qcstring.h:326
ArgumentList * argList
member arguments as a list
Definition: entry.h:254
QCString name
member name
Definition: entry.h:237
QCString args
member argument string
Definition: entry.h:252
void clear()
Definition: qlist.h:82
unsigned uint
Definition: qglobal.h:351
QCString type
member type
Definition: entry.h:236
static bool checkForKnRstyleC ( )
static

Returns TRUE iff the current entry could be a K&R style C function

Definition at line 11209 of file scanner.cpp.

11210 {
11211  if (((QCString)yyFileName).right(2).lower()!=".c") return FALSE; // must be a C file
11212  if (!current->argList) return FALSE; // must have arguments
11214  Argument *a;
11215  for (ali.toFirst();(a=ali.current());++ali)
11216  {
11217  // in K&R style argument do not have a type, but doxygen expects a type
11218  // so it will think the argument has no name
11219  if (a->type.isEmpty() || !a->name.isEmpty()) return FALSE;
11220  }
11221  return TRUE;
11222 }
QCString type
Definition: arguments.h:67
bool isEmpty() const
Definition: qcstring.h:189
static Entry * current
Definition: scanner.cpp:10865
const bool FALSE
Definition: qglobal.h:370
ArgumentList * argList
member arguments as a list
Definition: entry.h:254
static QCString yyFileName
Definition: scanner.cpp:10876
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
QCString name
Definition: arguments.h:69
const bool TRUE
Definition: qglobal.h:371
static int computeIndent ( const char *  s,
int  startIndent 
)
inlinestatic

Definition at line 11084 of file scanner.cpp.

11085 {
11086  int col=startIndent;
11087  static int tabSize=Config_getInt("TAB_SIZE");
11088  const char *p=s;
11089  char c;
11090  while ((c=*p++))
11091  {
11092  if (c=='\t') col+=tabSize-(col%tabSize);
11093  else if (c=='\n') col=0;
11094  else col++;
11095  }
11096  return col;
11097 }
#define Config_getInt(val)
Definition: config.cpp:661
p
Definition: test.py:223
static QCString * s
Definition: config.cpp:1042
void fixArgumentListForJavaScript ( ArgumentList al)

Definition at line 11339 of file scanner.cpp.

11340 {
11341  if (al==0) return;
11342  ArgumentListIterator ali(*al);
11343  Argument *a;
11344  for (ali.toFirst();(a=ali.current());++ali)
11345  {
11346  if (!a->type.isEmpty() && a->name.isEmpty())
11347  { // a->type is actually the (typeless) parameter name, so move it
11348  a->name=a->type;
11349  a->type.resize(0);
11350  }
11351  }
11352 }
QCString type
Definition: arguments.h:67
bool resize(uint newlen)
Definition: qcstring.h:225
bool isEmpty() const
Definition: qcstring.h:189
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
QCString name
Definition: arguments.h:69
static void handleCommentBlock ( const QCString doc,
bool  brief 
)
static

Definition at line 22130 of file scanner.cpp.

22131 {
22132  static bool hideInBodyDocs = Config_getBool("HIDE_IN_BODY_DOCS");
22133  int position=0;
22134  bool needsEntry=FALSE;
22135  if (docBlockInBody && hideInBodyDocs) return;
22136  //printf("parseCommentBlock [%s] brief=%d\n",doc.data(),brief);
22137  int lineNr = brief ? current->briefLine : current->docLine; // line of block start
22138 
22139  // fill in inbodyFile && inbodyLine the first time, see bug 633891
22140  Entry *docEntry = docBlockInBody && previous ? previous : current;
22141  if (docBlockInBody && docEntry && docEntry->inbodyLine==-1)
22142  {
22143  docEntry->inbodyFile = yyFileName;
22144  docEntry->inbodyLine = lineNr;
22145  }
22146 
22147  while (parseCommentBlock(
22148  g_thisParser,
22150  stripIndentation(doc), // text
22151  yyFileName, // file
22152  lineNr, // line of block start
22153  docBlockInBody ? FALSE : brief, // isBrief
22154  docBlockInBody ? FALSE : docBlockAutoBrief, // isJavaDocStyle
22155  docBlockInBody, // isInBody
22156  protection,
22157  position,
22158  needsEntry
22159  )
22160  )
22161  {
22162  //printf("parseCommentBlock position=%d [%s]\n",position,doc.data()+position);
22163  if (needsEntry)
22164  {
22165  QCString docFile = current->docFile;
22166  newEntry();
22167  current->docFile = docFile;
22168  current->docLine = lineNr;
22169  }
22170  }
22171  if (needsEntry)
22172  {
22173  newEntry();
22174  }
22175 
22176  if (docBlockTerm)
22177  {
22179  docBlockTerm=0;
22180  }
22181 }
static char docBlockTerm
Definition: scanner.cpp:10950
bool brief
static Entry * current
Definition: scanner.cpp:10865
Definition: entry.h:63
static ParserInterface * g_thisParser
Definition: scanner.cpp:10831
static bool docBlockInBody
Definition: scanner.cpp:10948
static Entry * previous
Definition: scanner.cpp:10866
int briefLine
line number at which the brief desc. was found
Definition: entry.h:264
int docLine
line number at which the documentation was found
Definition: entry.h:261
const bool FALSE
Definition: qglobal.h:370
static QCString yyFileName
Definition: scanner.cpp:10876
static Protection protection
Definition: scanner.cpp:10856
#define unput(c)
Definition: scanner.cpp:199
QCString inbodyFile
file in which the body doc was found
Definition: entry.h:268
QCString stripIndentation(const QCString &s)
Definition: util.cpp:8110
#define Config_getBool(val)
Definition: config.cpp:664
static void newEntry()
Definition: scanner.cpp:22115
bool parseCommentBlock(ParserInterface *parser, Entry *curEntry, const QCString &comment, const QCString &fileName, int &lineNr, bool isBrief, bool isAutoBriefOn, bool isInbody, Protection &prot, int &position, bool &newEntryNeeded)
static bool docBlockAutoBrief
Definition: scanner.cpp:10949
int inbodyLine
line number at which the body doc was found
Definition: entry.h:267
static void handleParametersCommentBlocks ( ArgumentList al)
static

Definition at line 22183 of file scanner.cpp.

22184 {
22185  //printf(">>>>>>> handleParametersCommentBlocks()\n");
22186  ArgumentListIterator ali(*al);
22187  Argument *a;
22188  for (ali.toFirst();(a=ali.current());++ali)
22189  {
22190  //printf(" Param %s docs=%s\n",a->name.data(),a->docs.data());
22191  if (!a->docs.isEmpty())
22192  {
22193  int position=0;
22194  bool needsEntry;
22195 
22196  // save context
22197  QCString orgDoc = current->doc;
22198  QCString orgBrief = current->brief;
22199  int orgDocLine = current->docLine;
22200  int orgBriefLine = current->briefLine;
22201 
22202  current->doc.resize(0);
22203  current->brief.resize(0);
22204 
22205  //printf("handleParametersCommentBlock [%s]\n",doc.data());
22206  while (parseCommentBlock(
22207  g_thisParser,
22208  current,
22209  a->docs, // text
22210  yyFileName, // file
22211  current->docLine, // line of block start
22212  FALSE,
22213  FALSE,
22214  FALSE,
22215  protection,
22216  position,
22217  needsEntry
22218  )
22219  )
22220  {
22221  //printf("handleParametersCommentBlock position=%d [%s]\n",position,doc.data()+position);
22222  if (needsEntry) newEntry();
22223  }
22224  if (needsEntry)
22225  {
22226  newEntry();
22227  }
22228  a->docs = current->doc;
22229 
22230  // restore context
22231  current->doc = orgDoc;
22232  current->brief = orgBrief;
22233  current->docLine = orgDocLine;
22234  current->briefLine = orgBriefLine;
22235  }
22236  }
22237 }
bool resize(uint newlen)
Definition: qcstring.h:225
bool isEmpty() const
Definition: qcstring.h:189
static Entry * current
Definition: scanner.cpp:10865
static ParserInterface * g_thisParser
Definition: scanner.cpp:10831
int briefLine
line number at which the brief desc. was found
Definition: entry.h:264
int docLine
line number at which the documentation was found
Definition: entry.h:261
const bool FALSE
Definition: qglobal.h:370
static QCString yyFileName
Definition: scanner.cpp:10876
static Protection protection
Definition: scanner.cpp:10856
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
QCString brief
brief description (doc block)
Definition: entry.h:263
const double a
static void newEntry()
Definition: scanner.cpp:22115
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
bool parseCommentBlock(ParserInterface *parser, Entry *curEntry, const QCString &comment, const QCString &fileName, int &lineNr, bool isBrief, bool isAutoBriefOn, bool isInbody, Protection &prot, int &position, bool &newEntryNeeded)
QCString docs
Definition: arguments.h:72
if ( yy_init)

Definition at line 11846 of file scanner.cpp.

11847  {
11848  (yy_init) = 1;
11849 
11850 #ifdef YY_USER_INIT
11851  YY_USER_INIT;
11852 #endif
11853 
11854  /* Create the reject buffer large enough to save one state per allowed character. */
11855  if ( ! (yy_state_buf) )
11857  if ( ! (yy_state_buf) )
11858  YY_FATAL_ERROR( "out of dynamic memory in scannerYYlex()" );
11859 
11860  if ( ! (yy_start) )
11861  (yy_start) = 1; /* first start state */
11862 
11863  if ( ! scannerYYin )
11864  scannerYYin = stdin;
11865 
11866  if ( ! scannerYYout )
11867  scannerYYout = stdout;
11868 
11869  if ( ! YY_CURRENT_BUFFER ) {
11873  }
11874 
11876  }
void * scannerYYalloc(yy_size_t)
Definition: scanner.cpp:22069
static int yy_start
Definition: scanner.cpp:299
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
static void scannerYYensure_buffer_stack(void)
Definition: scanner.cpp:21751
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
#define YY_BUF_SIZE
Definition: scanner.cpp:163
int yy_state_type
Definition: code.cpp:361
static yy_state_type * yy_state_buf
Definition: scanner.cpp:10755
FILE * scannerYYin
Definition: scanner.cpp:359
FILE * scannerYYout
Definition: scanner.cpp:359
#define YY_STATE_BUF_SIZE
Definition: scanner.cpp:168
YY_BUFFER_STATE scannerYY_create_buffer(FILE *file, int size)
Definition: scanner.cpp:21598
static void scannerYY_load_buffer_state(void)
Definition: scanner.cpp:21584
static int yy_init
Definition: scanner.cpp:298
static void initEntry ( )
static

Definition at line 11002 of file scanner.cpp.

11003 {
11004  if (insideJava)
11005  {
11007  }
11009  current->mtype = mtype;
11010  current->virt = virt;
11011  current->stat = gstat;
11012  current->lang = language;
11013  //printf("*** initEntry() language=%d\n",language);
11014  //if (!autoGroupStack.isEmpty())
11015  //{
11016  // //printf("Appending group %s\n",autoGroupStack.top()->groupname.data());
11017  // current->groups->append(new Grouping(*autoGroupStack.top()));
11018  //}
11020  isTypedef=FALSE;
11021 }
uint64 spec
class/member specifiers
Definition: entry.h:243
bool stat
static ?
Definition: entry.h:245
static bool isTypedef
Definition: scanner.cpp:10883
static Entry * current
Definition: scanner.cpp:10865
Definition: types.h:26
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
static Protection protection
Definition: scanner.cpp:10856
static SrcLangExt language
Definition: scanner.cpp:10895
static const uint64 Interface
Definition: entry.h:125
static const uint64 Enum
Definition: entry.h:133
static Specifier virt
Definition: scanner.cpp:10880
Protection protection
class protection
Definition: entry.h:241
void initGroupInfo(Entry *e)
static MethodTypes mtype
Definition: scanner.cpp:10877
Specifier virt
virtualness of the entry
Definition: entry.h:251
static bool insideJava
processing Java code?
Definition: scanner.cpp:10897
static Entry * current_root
Definition: scanner.cpp:10863
static bool gstat
Definition: scanner.cpp:10878
MethodTypes mtype
signal, slot, (dcop) method, or property?
Definition: entry.h:242
SrcLangExt lang
programming language in which this entry was found
Definition: entry.h:286
static void initParser ( )
static

Definition at line 10974 of file scanner.cpp.

10975 {
10976  sectionLabel.resize(0);
10977  sectionTitle.resize(0);
10978  baseName.resize(0);
10979  formulaText.resize(0);
10980  protection = Public;
10981  baseProt = Public;
10982  sharpCount = 0;
10983  roundCount = 0;
10984  curlyCount = 0;
10985  mtype = Method;
10986  gstat = FALSE;
10987  virt = Normal;
10988  baseVirt = Normal;
10989  isTypedef = FALSE;
10990  autoGroupStack.clear();
10992  autoGroupStack.setAutoDelete(TRUE);
10993  insideFormula = FALSE;
10994  insideCode=FALSE;
10995  insideCli=Config_getBool("CPP_CLI_SUPPORT");
10996  previous = 0;
10997  firstTypedefEntry = 0;
10998  tempEntry = 0;
10999  memspecEntry =0;
11000 }
static QStack< Grouping > autoGroupStack
Definition: scanner.cpp:10931
bool resize(uint newlen)
Definition: qcstring.h:225
static int sharpCount
Definition: scanner.cpp:10858
static int curlyCount
Definition: scanner.cpp:10860
static bool isTypedef
Definition: scanner.cpp:10883
Definition: types.h:26
static QCString sectionTitle
Definition: scanner.cpp:10886
static bool insideFormula
Definition: scanner.cpp:10933
static Entry * previous
Definition: scanner.cpp:10866
static int roundCount
Definition: scanner.cpp:10859
const bool FALSE
Definition: qglobal.h:370
static Entry * firstTypedefEntry
Definition: scanner.cpp:10868
static Entry * memspecEntry
Definition: scanner.cpp:10869
Definition: types.h:29
static Protection protection
Definition: scanner.cpp:10856
static Entry * tempEntry
Definition: scanner.cpp:10867
static Protection baseProt
Definition: scanner.cpp:10857
static bool insideTryBlock
Definition: scanner.cpp:10934
Definition: types.h:32
static Specifier virt
Definition: scanner.cpp:10880
#define Config_getBool(val)
Definition: config.cpp:664
static bool insideCode
Definition: scanner.cpp:10935
static bool insideCli
processing C++/CLI code?
Definition: scanner.cpp:10902
static MethodTypes mtype
Definition: scanner.cpp:10877
static QCString sectionLabel
Definition: scanner.cpp:10885
static Specifier baseVirt
Definition: scanner.cpp:10881
static bool gstat
Definition: scanner.cpp:10878
static QCString formulaText
Definition: scanner.cpp:10892
static QCString baseName
Definition: scanner.cpp:10890
const bool TRUE
Definition: qglobal.h:371
static void lineCount ( )
static

Definition at line 11062 of file scanner.cpp.

11063 {
11064  static int tabSize = Config_getInt("TAB_SIZE");
11065  const char *p;
11066  for (p = scannerYYtext ; *p ; ++p )
11067  {
11068  if (*p=='\n')
11069  {
11070  yyLineNr++,g_column=0,yyColNr=1;
11071  }
11072  else if (*p=='\t')
11073  {
11074  g_column+=tabSize - (g_column%tabSize);
11075  }
11076  else
11077  {
11078  g_column++,yyColNr++;
11079  }
11080  }
11081  //printf("lineCount()=%d\n",g_column);
11082 }
static int yyLineNr
Definition: scanner.cpp:10870
#define Config_getInt(val)
Definition: config.cpp:661
p
Definition: test.py:223
char * scannerYYtext
Definition: scanner.cpp:10777
static int g_column
Definition: scanner.cpp:10961
static int yyColNr
Definition: scanner.cpp:10872
static bool nameIsOperator ( QCString name)
static

Definition at line 11139 of file scanner.cpp.

11140 {
11141  int i=name.find("operator");
11142  if (i==-1) return FALSE;
11143  if (i==0 && !isId(name.at(8))) return TRUE; // case operator ::X
11144  if (i>0 && !isId(name.at(i-1)) && !isId(name.at(i+8))) return TRUE; // case X::operator
11145  return FALSE; // case TEXToperatorTEXT
11146 }
char & at(uint i) const
Definition: qcstring.h:326
const bool FALSE
Definition: qglobal.h:370
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
bool isId(int c)
Definition: util.h:224
const bool TRUE
Definition: qglobal.h:371
static void newEntry ( )
static

Definition at line 22115 of file scanner.cpp.

22116 {
22117  if (tempEntry==0) // if temp entry is not 0, it holds current,
22118  // and current is actually replaced by previous which was
22119  // already added to current_root, so we should not add it again
22120  // (see bug723314)
22121  {
22123  }
22124  tempEntry = 0;
22125  previous = current;
22126  current = new Entry ;
22127  initEntry();
22128 }
static void initEntry()
Definition: scanner.cpp:11002
static Entry * current
Definition: scanner.cpp:10865
Definition: entry.h:63
static Entry * previous
Definition: scanner.cpp:10866
void addSubEntry(Entry *e)
Definition: entry.cpp:206
static Entry * tempEntry
Definition: scanner.cpp:10867
static Entry * current_root
Definition: scanner.cpp:10863
static void parseCompounds ( Entry rt)
static

Definition at line 22242 of file scanner.cpp.

22243 {
22244  //printf("parseCompounds(%s)\n",rt->name.data());
22245  EntryListIterator eli(*rt->children());
22246  Entry *ce;
22247  for (;(ce=eli.current());++eli)
22248  {
22249  if (!ce->program.isEmpty())
22250  {
22251  //printf("-- %s ---------\n%s\n---------------\n",
22252  // ce->name.data(),ce->program.data());
22253  // init scanner state
22254  padCount=0;
22255  //depthIf = 0;
22256  g_column=0;
22257  inputString = ce->program;
22258  inputPosition = 0;
22260  if (ce->section==Entry::ENUM_SEC || (ce->spec&Entry::Enum))
22261  BEGIN( FindFields ) ;
22262  else
22263  BEGIN( FindMembers ) ;
22264  current_root = ce ;
22265  yyFileName = ce->fileName;
22266  //setContext();
22267  yyLineNr = ce->startLine ;
22268  yyColNr = ce->startColumn ;
22269  insideObjC = ce->lang==SrcLangExt_ObjC;
22270  //printf("---> Inner block starts at line %d objC=%d\n",yyLineNr,insideObjC);
22271  //current->reset();
22272  if (current) delete current;
22273  current = new Entry;
22274  gstat = FALSE;
22275  initEntry();
22276 
22277  // deep copy group list from parent (see bug 727732)
22278  static bool autoGroupNested = Config_getBool("GROUP_NESTED_COMPOUNDS");
22279  if (autoGroupNested && rt->groups && ce->section!=Entry::ENUM_SEC && !(ce->spec&Entry::Enum))
22280  {
22281  QListIterator<Grouping> gli(*rt->groups);
22282  Grouping *g;
22283  for (;(g=gli.current());++gli)
22284  {
22285  ce->groups->append(new Grouping(*g));
22286  }
22287  }
22288 
22289  int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2;
22290  // set default protection based on the compound type
22291  if( ce->section==Entry::CLASS_SEC ) // class
22292  {
22293  if (insidePHP || insideD || insideJS || insideIDL)
22294  {
22296  }
22297  else if (insideJava)
22298  {
22300  }
22302  {
22303  if (ce->lang==SrcLangExt_ObjC)
22304  {
22306  }
22307  else
22308  {
22310  }
22311  }
22312  else
22313  {
22315  }
22316  }
22317  else if (ce->section == Entry::ENUM_SEC ) // enum
22318  {
22319  current->protection = protection = ce->protection;
22320  }
22321  else if (!ce->name.isEmpty() && ce->name.at(ni)=='@') // unnamed union or namespace
22322  {
22323  if (ce->section == Entry::NAMESPACE_SEC ) // unnamed namespace
22324  {
22325  current->stat = gstat = TRUE;
22326  }
22327  current->protection = protection = ce->protection;
22328  }
22329  else // named struct, union, protocol, category
22330  {
22332  }
22333  mtype = Method;
22334  virt = Normal;
22335  //printf("name=%s current->stat=%d gstat=%d\n",ce->name.data(),current->stat,gstat);
22336 
22337  //memberGroupId = DOX_NOGROUP;
22338  //memberGroupRelates.resize(0);
22339  //memberGroupInside.resize(0);
22341 
22342  scannerYYlex() ;
22343  g_lexInit=TRUE;
22344  //forceEndGroup();
22345 
22347 
22348  delete current; current=0;
22349  ce->program.resize(0);
22350 
22351 
22352  //if (depthIf>0)
22353  //{
22354  // warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
22355  //}
22356  }
22357  parseCompounds(ce);
22358  }
22359 }
Definition: types.h:61
QGString program
the program text
Definition: entry.h:256
static const uint64 Ref
Definition: entry.h:123
bool stat
static ?
Definition: entry.h:245
static constexpr double g
Definition: Units.h:144
#define FindMembers
Definition: scanner.cpp:11537
static void initEntry()
Definition: scanner.cpp:11002
static Entry * current
Definition: scanner.cpp:10865
Definition: entry.h:63
int scannerYYlex(void)
Definition: types.h:26
void groupEnterCompound(const char *fileName, int line, const char *name)
static void parseCompounds(Entry *rt)
Definition: scanner.cpp:22242
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
bool resize(uint newlen)
Definition: qgstring.cpp:96
static bool g_lexInit
Definition: scanner.cpp:10956
Definition: types.h:26
Definition: types.h:29
static QCString yyFileName
Definition: scanner.cpp:10876
static bool insideD
processing D code?
Definition: scanner.cpp:10899
static int yyLineNr
Definition: scanner.cpp:10870
void scannerYYrestart(FILE *input_file)
Definition: scanner.cpp:21536
static Protection protection
Definition: scanner.cpp:10856
static bool insidePHP
processing PHP code?
Definition: scanner.cpp:10900
static bool insideIDL
processing IDL code?
Definition: scanner.cpp:10896
QList< Grouping > * groups
list of groups this entry belongs to
Definition: entry.h:280
Definition: types.h:32
const QList< Entry > * children() const
Definition: entry.h:210
static const uint64 Interface
Definition: entry.h:125
static const uint64 Enum
Definition: entry.h:133
static const char * inputString
Definition: scanner.cpp:10832
static int padCount
Definition: scanner.cpp:10862
static Specifier virt
Definition: scanner.cpp:10880
Protection protection
class protection
Definition: entry.h:241
#define Config_getBool(val)
Definition: config.cpp:664
static const uint64 Value
Definition: entry.h:124
#define BEGIN
Definition: scanner.cpp:144
static MethodTypes mtype
Definition: scanner.cpp:10877
static int g_column
Definition: scanner.cpp:10961
static bool insideObjC
processing Objective C code?
Definition: scanner.cpp:10901
static bool insideJava
processing Java code?
Definition: scanner.cpp:10897
FILE * scannerYYin
Definition: scanner.cpp:359
static int inputPosition
Definition: scanner.cpp:10833
void groupLeaveCompound(const char *, int, const char *)
static Entry * current_root
Definition: scanner.cpp:10863
static bool gstat
Definition: scanner.cpp:10878
static int yyColNr
Definition: scanner.cpp:10872
static const uint64 Struct
Definition: entry.h:126
static const uint64 Union
Definition: entry.h:127
#define FindFields
Definition: scanner.cpp:11540
static bool insideJS
processing JavaScript code?
Definition: scanner.cpp:10903
const bool TRUE
Definition: qglobal.h:371
static void parseMain ( const char *  fileName,
const char *  fileBuf,
Entry rt,
bool  sameTranslationUnit,
QStrList filesInSameTranslationUnit 
)
static

Definition at line 22363 of file scanner.cpp.

22368 {
22369  initParser();
22370 
22371  inputString = fileBuf;
22372  inputPosition = 0;
22373  g_column = 0;
22374 
22375  //anonCount = 0; // don't reset per file
22376  //depthIf = 0;
22377  protection = Public;
22378  mtype = Method;
22379  gstat = FALSE;
22380  virt = Normal;
22381  current_root = rt;
22382  global_root = rt;
22384  if (inputFile.open(IO_ReadOnly))
22385  {
22386  yyLineNr= 1 ;
22387  yyFileName = fileName;
22388  setContext();
22389  bool processWithClang = insideCpp || insideObjC;
22390  if (processWithClang)
22391  {
22392  if (!sameTranslationUnit) // new file
22393  {
22394  ClangParser::instance()->start(fileName,filesInSameTranslationUnit);
22395  }
22396  else
22397  {
22399  }
22400  }
22401  rt->lang = language;
22402  msg("Parsing file %s...\n",yyFileName.data());
22403 
22404  current_root = rt ;
22405  initParser();
22407  current = new Entry;
22408  //printf("current=%p current_root=%p\n",current,current_root);
22409  int sec=guessSection(yyFileName);
22410  if (sec)
22411  {
22412  current->name = yyFileName;
22413  current->section = sec;
22414  current_root->addSubEntry(current);
22415  current = new Entry;
22416  }
22417  current->reset();
22418  initEntry();
22420  if ( insidePHP )
22421  {
22422  BEGIN( FindMembersPHP );
22423  }
22424  else
22425  {
22426  BEGIN( FindMembers );
22427  }
22428 
22429  scannerYYlex();
22430  g_lexInit=TRUE;
22431 
22432  if (YY_START==Comment)
22433  {
22434  warn(yyFileName,yyLineNr,"File ended in the middle of a comment block! Perhaps a missing \\endcode?");
22435  }
22436 
22437  //forceEndGroup();
22439 
22440  //if (depthIf>0)
22441  //{
22442  // warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
22443  //}
22444 
22445  rt->program.resize(0);
22446  if (rt->children()->contains(current)==0)
22447  // it could be that current is already added as a child to rt, so we
22448  // only delete it if this is not the case. See bug 635317.
22449  {
22450  delete current; current=0;
22451  }
22452 
22453  parseCompounds(rt);
22454 
22455  inputFile.close();
22456 
22457  anonNSCount++;
22458 
22459  }
22460 }
QGString program
the program text
Definition: entry.h:256
void reset()
Definition: entry.cpp:217
void switchToFile(const char *fileName)
void msg(const char *fmt,...)
Definition: message.cpp:107
#define FindMembers
Definition: scanner.cpp:11537
static void initEntry()
Definition: scanner.cpp:11002
static Entry * current
Definition: scanner.cpp:10865
Definition: entry.h:63
int scannerYYlex(void)
int guessSection(const char *name)
Definition: util.cpp:315
Definition: types.h:26
void start(const char *fileName, QStrList &filesInTranslationUnit)
static void parseCompounds(Entry *rt)
Definition: scanner.cpp:22242
const bool FALSE
Definition: qglobal.h:370
QCString name
member name
Definition: entry.h:237
bool resize(uint newlen)
Definition: qgstring.cpp:96
static void initParser()
Definition: scanner.cpp:10974
#define FindMembersPHP
Definition: scanner.cpp:11538
static bool g_lexInit
Definition: scanner.cpp:10956
static int anonNSCount
Definition: scanner.cpp:10875
void setName(const QString &name)
Definition: qfile.cpp:167
#define Comment
Definition: scanner.cpp:11580
Definition: types.h:29
static QCString yyFileName
Definition: scanner.cpp:10876
static int yyLineNr
Definition: scanner.cpp:10870
#define IO_ReadOnly
Definition: qiodevice.h:61
void scannerYYrestart(FILE *input_file)
Definition: scanner.cpp:21536
static Protection protection
Definition: scanner.cpp:10856
static SrcLangExt language
Definition: scanner.cpp:10895
static Entry * global_root
Definition: scanner.cpp:10864
static bool insidePHP
processing PHP code?
Definition: scanner.cpp:10900
void groupEnterFile(const char *fileName, int)
fileName
Definition: dumpTree.py:9
#define YY_START
Definition: scanner.cpp:150
Definition: types.h:32
const QList< Entry > * children() const
Definition: entry.h:210
bool open(int)
Definition: qfile_unix.cpp:134
static const char * inputString
Definition: scanner.cpp:10832
static Specifier virt
Definition: scanner.cpp:10880
const char * data() const
Definition: qcstring.h:207
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
#define BEGIN
Definition: scanner.cpp:144
static MethodTypes mtype
Definition: scanner.cpp:10877
static int g_column
Definition: scanner.cpp:10961
static bool insideObjC
processing Objective C code?
Definition: scanner.cpp:10901
static void setContext()
Definition: scanner.cpp:11150
FILE * scannerYYin
Definition: scanner.cpp:359
static int inputPosition
Definition: scanner.cpp:10833
static Entry * current_root
Definition: scanner.cpp:10863
void groupLeaveFile(const char *fileName, int line)
static bool gstat
Definition: scanner.cpp:10878
static ClangParser * instance()
Definition: clangparser.cpp:30
static bool insideCpp
processing C/C++ code
Definition: scanner.cpp:10904
uint contains(const type *d) const
Definition: qlist.h:90
SrcLangExt lang
programming language in which this entry was found
Definition: entry.h:286
void close()
Definition: qfile_unix.cpp:614
static QFile inputFile
Definition: scanner.cpp:10834
const bool TRUE
Definition: qglobal.h:371
int section
entry type (see Sections);
Definition: entry.h:235
static void parsePrototype ( const QCString text)
static

Definition at line 22464 of file scanner.cpp.

22465 {
22466  //printf("**** parsePrototype(%s) begin\n",text.data());
22467  if (text.isEmpty())
22468  {
22469  warn(yyFileName,yyLineNr,"Empty prototype found!");
22470  return;
22471  }
22472  if (!current) // nothing to store (see bug683516)
22473  {
22474  return;
22475  }
22476 
22477  const char *orgInputString;
22478  int orgInputPosition;
22479  YY_BUFFER_STATE orgState;
22480 
22481  // save scanner state
22482  orgState = YY_CURRENT_BUFFER;
22484  orgInputString = inputString;
22485  orgInputPosition = inputPosition;
22486 
22487  // set new string
22488  inputString = text;
22489  inputPosition = 0;
22490  g_column = 0;
22492  BEGIN(Prototype);
22493  scannerYYlex();
22494  g_lexInit=TRUE;
22495 
22499 
22500  // restore original scanner state
22502  scannerYY_switch_to_buffer(orgState);
22503  scannerYY_delete_buffer(tmpState);
22504  inputString = orgInputString;
22505  inputPosition = orgInputPosition;
22506 
22507  //printf("**** parsePrototype end\n");
22508 }
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
bool isEmpty() const
Definition: qcstring.h:189
static Entry * current
Definition: scanner.cpp:10865
int scannerYYlex(void)
#define YY_BUF_SIZE
Definition: scanner.cpp:163
QCString name
member name
Definition: entry.h:237
static bool g_lexInit
Definition: scanner.cpp:10956
static QCString yyFileName
Definition: scanner.cpp:10876
static int yyLineNr
Definition: scanner.cpp:10870
void scannerYYrestart(FILE *input_file)
Definition: scanner.cpp:21536
static const char * inputString
Definition: scanner.cpp:10832
QCString args
member argument string
Definition: entry.h:252
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
#define BEGIN
Definition: scanner.cpp:144
static int g_column
Definition: scanner.cpp:10961
FILE * scannerYYin
Definition: scanner.cpp:359
void scannerYY_delete_buffer(YY_BUFFER_STATE b)
Definition: scanner.cpp:21626
static int inputPosition
Definition: scanner.cpp:10833
YY_BUFFER_STATE scannerYY_create_buffer(FILE *file, int size)
Definition: scanner.cpp:21598
void scannerYY_switch_to_buffer(YY_BUFFER_STATE new_buffer)
Definition: scanner.cpp:21553
#define Prototype
Definition: scanner.cpp:11651
const bool TRUE
Definition: qglobal.h:371
int section
entry type (see Sections);
Definition: entry.h:235
static void prependScope ( )
static

Definition at line 11174 of file scanner.cpp.

11175 {
11177  {
11178  //printf("--- prependScope %s to %s\n",current_root->name.data(),current->name.data());
11180  if (current_root->tArgLists)
11181  {
11182  if (current->tArgLists==0)
11183  {
11186  }
11187  //printf("prependScope #=%d #current=%d\n",current_root->tArgLists->count(),current->tArgLists->count());
11189  ArgumentList *srcAl=0;
11190  for (talsi.toLast();(srcAl=talsi.current());--talsi)
11191  {
11192  ArgumentList *dstAl = new ArgumentList;
11193  QListIterator<Argument> tali(*srcAl);
11194  Argument *a;
11195  for (;(a=tali.current());++tali)
11196  {
11197  dstAl->append(new Argument(*a));
11198  //printf("appending argument %s %s\n",a->type.data(),a->name.data());
11199  }
11200  current->tArgLists->insert(0,dstAl);
11201  }
11202  }
11203  }
11204 }
This class represents an function or template argument list.
Definition: arguments.h:82
static Entry * current
Definition: scanner.cpp:10865
void append(const type *d)
Definition: qlist.h:73
QCString name
member name
Definition: entry.h:237
QList< ArgumentList > * tArgLists
template argument declarations
Definition: entry.h:255
bool insert(uint i, const type *d)
Definition: qlist.h:70
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
static Entry * current_root
Definition: scanner.cpp:10863
void setAutoDelete(bool enable)
Definition: qlist.h:99
const bool TRUE
Definition: qglobal.h:371
int section
entry type (see Sections);
Definition: entry.h:235
void scanFreeScanner ( )

Definition at line 22510 of file scanner.cpp.

22511 {
22512 #if defined(YY_FLEX_SUBMINOR_VERSION)
22513  if (g_lexInit)
22514  {
22516  }
22517 #endif
22518 }
static bool g_lexInit
Definition: scanner.cpp:10956
int scannerYYlex_destroy(void)
Definition: scanner.cpp:22021
YY_BUFFER_STATE scannerYY_create_buffer ( FILE *  file,
int  size 
)

Allocate and initialize an input buffer state.

Parameters
fileA readable stream.
sizeThe character buffer size in bytes. When in doubt, use YY_BUF_SIZE.
Returns
the allocated buffer state.

Definition at line 21598 of file scanner.cpp.

21599 {
21601 
21602  b = (YY_BUFFER_STATE) scannerYYalloc(sizeof( struct yy_buffer_state ) );
21603  if ( ! b )
21604  YY_FATAL_ERROR( "out of dynamic memory in scannerYY_create_buffer()" );
21605 
21606  b->yy_buf_size = size;
21607 
21608  /* yy_ch_buf has to be 2 characters longer than the size given because
21609  * we need to put in 2 end-of-buffer characters.
21610  */
21611  b->yy_ch_buf = (char *) scannerYYalloc(b->yy_buf_size + 2 );
21612  if ( ! b->yy_ch_buf )
21613  YY_FATAL_ERROR( "out of dynamic memory in scannerYY_create_buffer()" );
21614 
21615  b->yy_is_our_buffer = 1;
21616 
21618 
21619  return b;
21620 }
void * scannerYYalloc(yy_size_t)
Definition: scanner.cpp:22069
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
yy_size_t yy_buf_size
Definition: code.cpp:218
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
char * yy_ch_buf
Definition: code.cpp:212
int yy_is_our_buffer
Definition: code.cpp:229
static bool * b
Definition: config.cpp:1043
static void scannerYY_init_buffer(YY_BUFFER_STATE b, FILE *file)
Definition: scanner.cpp:21645
struct yy_buffer_state * YY_BUFFER_STATE
Definition: scanner.cpp:172
void scannerYY_delete_buffer ( YY_BUFFER_STATE  b)

Destroy the buffer.

Parameters
ba buffer created with scannerYY_create_buffer()

Definition at line 21626 of file scanner.cpp.

21627 {
21628 
21629  if ( ! b )
21630  return;
21631 
21632  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
21634 
21635  if ( b->yy_is_our_buffer )
21636  scannerYYfree((void *) b->yy_ch_buf );
21637 
21638  scannerYYfree((void *) b );
21639 }
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
char * yy_ch_buf
Definition: code.cpp:212
int yy_is_our_buffer
Definition: code.cpp:229
void scannerYYfree(void *)
Definition: scanner.cpp:22086
struct yy_buffer_state * YY_BUFFER_STATE
Definition: scanner.cpp:172
void scannerYY_flush_buffer ( YY_BUFFER_STATE  b)

Discard all buffered characters. On the next scan, YY_INPUT will be called.

Parameters
bthe buffer state to be flushed, usually YY_CURRENT_BUFFER.

Definition at line 21673 of file scanner.cpp.

21674 {
21675  if ( ! b )
21676  return;
21677 
21678  b->yy_n_chars = 0;
21679 
21680  /* We always need two end-of-buffer characters. The first causes
21681  * a transition to the end-of-buffer state. The second causes
21682  * a jam in that state.
21683  */
21686 
21687  b->yy_buf_pos = &b->yy_ch_buf[0];
21688 
21689  b->yy_at_bol = 1;
21691 
21692  if ( b == YY_CURRENT_BUFFER )
21694 }
#define YY_END_OF_BUFFER_CHAR
Definition: scanner.cpp:159
char * yy_buf_pos
Definition: code.cpp:213
int yy_n_chars
Definition: code.cpp:223
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
#define YY_BUFFER_NEW
Definition: scanner.cpp:254
char * yy_ch_buf
Definition: code.cpp:212
static void scannerYY_load_buffer_state(void)
Definition: scanner.cpp:21584
int yy_buffer_status
Definition: code.cpp:252
static void scannerYY_init_buffer ( YY_BUFFER_STATE  b,
FILE *  file 
)
static

Definition at line 21645 of file scanner.cpp.

21647 {
21648  int oerrno = errno;
21649 
21651 
21652  b->yy_input_file = file;
21653  b->yy_fill_buffer = 1;
21654 
21655  /* If b is the current buffer, then scannerYY_init_buffer was _probably_
21656  * called from scannerYYrestart() or through yy_get_next_buffer.
21657  * In that case, we don't want to reset the lineno or column.
21658  */
21659  if (b != YY_CURRENT_BUFFER){
21660  b->yy_bs_lineno = 1;
21661  b->yy_bs_column = 0;
21662  }
21663 
21664  b->yy_is_interactive = 0;
21665 
21666  errno = oerrno;
21667 }
FILE * yy_input_file
Definition: code.cpp:210
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
int yy_fill_buffer
Definition: code.cpp:250
int yy_bs_lineno
Definition: code.cpp:244
int errno
Contains the last error code.
Definition: structcmd.h:53
void scannerYY_flush_buffer(YY_BUFFER_STATE b)
Definition: scanner.cpp:21673
int yy_bs_column
Definition: code.cpp:245
int yy_is_interactive
Definition: code.cpp:236
static void scannerYY_load_buffer_state ( void  )
static

Definition at line 21584 of file scanner.cpp.

21585 {
21586  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
21587  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
21588  scannerYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
21589  (yy_hold_char) = *(yy_c_buf_p);
21590 }
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
static char * yy_c_buf_p
Definition: scanner.cpp:297
static char yy_hold_char
Definition: scanner.cpp:292
#define yytext_ptr
Definition: scanner.cpp:368
FILE * scannerYYin
Definition: scanner.cpp:359
static int yy_n_chars
Definition: scanner.cpp:293
YY_BUFFER_STATE scannerYY_scan_buffer ( char *  base,
yy_size_t  size 
)

Setup the input buffer state to scan directly from a user-specified character buffer.

Parameters
basethe character buffer
sizethe size in bytes of the character buffer
Returns
the newly allocated buffer state object.

Definition at line 21800 of file scanner.cpp.

21801 {
21803 
21804  if ( size < 2 ||
21807  /* They forgot to leave room for the EOB's. */
21808  return 0;
21809 
21810  b = (YY_BUFFER_STATE) scannerYYalloc(sizeof( struct yy_buffer_state ) );
21811  if ( ! b )
21812  YY_FATAL_ERROR( "out of dynamic memory in scannerYY_scan_buffer()" );
21813 
21814  b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
21815  b->yy_buf_pos = b->yy_ch_buf = base;
21816  b->yy_is_our_buffer = 0;
21817  b->yy_input_file = 0;
21818  b->yy_n_chars = b->yy_buf_size;
21819  b->yy_is_interactive = 0;
21820  b->yy_at_bol = 1;
21821  b->yy_fill_buffer = 0;
21823 
21825 
21826  return b;
21827 }
#define YY_END_OF_BUFFER_CHAR
Definition: scanner.cpp:159
char * yy_buf_pos
Definition: code.cpp:213
FILE * yy_input_file
Definition: code.cpp:210
void * scannerYYalloc(yy_size_t)
Definition: scanner.cpp:22069
int yy_n_chars
Definition: code.cpp:223
#define YY_BUFFER_NEW
Definition: scanner.cpp:254
int yy_fill_buffer
Definition: code.cpp:250
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
yy_size_t yy_buf_size
Definition: code.cpp:218
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
char * yy_ch_buf
Definition: code.cpp:212
int yy_is_our_buffer
Definition: code.cpp:229
static bool * b
Definition: config.cpp:1043
int yy_is_interactive
Definition: code.cpp:236
void scannerYY_switch_to_buffer(YY_BUFFER_STATE new_buffer)
Definition: scanner.cpp:21553
struct yy_buffer_state * YY_BUFFER_STATE
Definition: scanner.cpp:172
int yy_buffer_status
Definition: code.cpp:252
YY_BUFFER_STATE scannerYY_scan_bytes ( yyconst char *  yybytes,
int  _yybytes_len 
)

Setup the input buffer state to scan the given bytes. The next call to scannerYYlex() will scan from a copy of bytes.

Parameters
bytesthe byte buffer to scan
lenthe number of bytes in the buffer pointed to by bytes.
Returns
the newly allocated buffer state object.

Definition at line 21850 of file scanner.cpp.

21851 {
21853  char *buf;
21854  yy_size_t n;
21855  int i;
21856 
21857  /* Get memory for full buffer, including space for trailing EOB's. */
21858  n = _yybytes_len + 2;
21859  buf = (char *) scannerYYalloc(n );
21860  if ( ! buf )
21861  YY_FATAL_ERROR( "out of dynamic memory in scannerYY_scan_bytes()" );
21862 
21863  for ( i = 0; i < _yybytes_len; ++i )
21864  buf[i] = yybytes[i];
21865 
21866  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
21867 
21868  b = scannerYY_scan_buffer(buf,n );
21869  if ( ! b )
21870  YY_FATAL_ERROR( "bad buffer in scannerYY_scan_bytes()" );
21871 
21872  /* It's okay to grow etc. this buffer, and we should throw it
21873  * away when we're done.
21874  */
21875  b->yy_is_our_buffer = 1;
21876 
21877  return b;
21878 }
#define YY_END_OF_BUFFER_CHAR
Definition: scanner.cpp:159
void * scannerYYalloc(yy_size_t)
Definition: scanner.cpp:22069
YY_BUFFER_STATE scannerYY_scan_buffer(char *base, yy_size_t size)
Definition: scanner.cpp:21800
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
std::void_t< T > n
int yy_is_our_buffer
Definition: code.cpp:229
static bool * b
Definition: config.cpp:1043
size_t yy_size_t
Definition: code.cpp:203
YY_BUFFER_STATE scannerYY_scan_string ( yyconst char *  yystr)

Setup the input buffer state to scan a string. The next call to scannerYYlex() will scan from a copy of str.

Parameters
yystra NUL-terminated string to scan
Returns
the newly allocated buffer state object.
Note
If you want to scan bytes that may contain NUL values, then use scannerYY_scan_bytes() instead.

Definition at line 21837 of file scanner.cpp.

21838 {
21839 
21840  return scannerYY_scan_bytes(yystr,strlen(yystr) );
21841 }
YY_BUFFER_STATE scannerYY_scan_bytes(yyconst char *bytes, int len)
Definition: scanner.cpp:21850
void scannerYY_switch_to_buffer ( YY_BUFFER_STATE  new_buffer)

Switch to a different input buffer.

Parameters
new_bufferThe new input buffer.

Definition at line 21553 of file scanner.cpp.

21554 {
21555 
21556  /* TODO. We should be able to replace this entire function body
21557  * with
21558  * scannerYYpop_buffer_state();
21559  * scannerYYpush_buffer_state(new_buffer);
21560  */
21562  if ( YY_CURRENT_BUFFER == new_buffer )
21563  return;
21564 
21565  if ( YY_CURRENT_BUFFER )
21566  {
21567  /* Flush out information for old buffer. */
21568  *(yy_c_buf_p) = (yy_hold_char);
21569  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
21570  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
21571  }
21572 
21573  YY_CURRENT_BUFFER_LVALUE = new_buffer;
21575 
21576  /* We don't actually know whether we did this switch during
21577  * EOF (scannerYYwrap()) processing, but the only time this flag
21578  * is looked at is after scannerYYwrap() is called, so it's safe
21579  * to go ahead and always set it.
21580  */
21582 }
static int yy_did_buffer_switch_on_eof
Definition: scanner.cpp:304
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
static void scannerYYensure_buffer_stack(void)
Definition: scanner.cpp:21751
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
static char * yy_c_buf_p
Definition: scanner.cpp:297
static char yy_hold_char
Definition: scanner.cpp:292
static void scannerYY_load_buffer_state(void)
Definition: scanner.cpp:21584
static int yy_n_chars
Definition: scanner.cpp:293
void * scannerYYalloc ( yy_size_t  size)

Definition at line 22069 of file scanner.cpp.

22070 {
22071  return (void *) malloc( size );
22072 }
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
static void scannerYYensure_buffer_stack ( void  )
static

Definition at line 21751 of file scanner.cpp.

21752 {
21753  int num_to_alloc;
21754 
21755  if (!(yy_buffer_stack)) {
21756 
21757  /* First allocation is just for 2 elements, since we don't know if this
21758  * scanner will even need a stack. We use 2 instead of 1 to avoid an
21759  * immediate realloc on the next call.
21760  */
21761  num_to_alloc = 1;
21763  (num_to_alloc * sizeof(struct yy_buffer_state*)
21764  );
21765  if ( ! (yy_buffer_stack) )
21766  YY_FATAL_ERROR( "out of dynamic memory in scannerYYensure_buffer_stack()" );
21767 
21768  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
21769 
21770  (yy_buffer_stack_max) = num_to_alloc;
21771  (yy_buffer_stack_top) = 0;
21772  return;
21773  }
21774 
21775  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
21776 
21777  /* Increase the buffer to prepare for a possible push. */
21778  int grow_size = 8 /* arbitrary grow size */;
21779 
21780  num_to_alloc = (yy_buffer_stack_max) + grow_size;
21782  ((yy_buffer_stack),
21783  num_to_alloc * sizeof(struct yy_buffer_state*)
21784  );
21785  if ( ! (yy_buffer_stack) )
21786  YY_FATAL_ERROR( "out of dynamic memory in scannerYYensure_buffer_stack()" );
21787 
21788  /* zero only the new slots.*/
21789  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
21790  (yy_buffer_stack_max) = num_to_alloc;
21791  }
21792 }
void * scannerYYalloc(yy_size_t)
Definition: scanner.cpp:22069
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
static YY_BUFFER_STATE * yy_buffer_stack
Definition: scanner.cpp:274
static size_t yy_buffer_stack_max
Definition: scanner.cpp:273
void * scannerYYrealloc(void *, yy_size_t)
Definition: scanner.cpp:22074
static size_t yy_buffer_stack_top
Definition: scanner.cpp:272
void scannerYYfree ( void *  ptr)

Definition at line 22086 of file scanner.cpp.

22087 {
22088  free( (char *) ptr ); /* see scannerYYrealloc() for (char *) cast */
22089 }
int scannerYYget_debug ( void  )

Definition at line 21977 of file scanner.cpp.

21978 {
21979  return scannerYY_flex_debug;
21980 }
int scannerYY_flex_debug
Definition: scanner.cpp:10753
YY_EXTRA_TYPE scannerYYget_extra ( void  )
FILE * scannerYYget_in ( void  )

Get the input stream.

Definition at line 21921 of file scanner.cpp.

21922 {
21923  return scannerYYin;
21924 }
FILE * scannerYYin
Definition: scanner.cpp:359
int scannerYYget_leng ( void  )

Get the length of the current token.

Definition at line 21937 of file scanner.cpp.

21938 {
21939  return scannerYYleng;
21940 }
int scannerYYleng
Definition: scanner.cpp:294
int scannerYYget_lineno ( void  )

Get the current line number.

Definition at line 21912 of file scanner.cpp.

21913 {
21914 
21915  return scannerYYlineno;
21916 }
int scannerYYlineno
Definition: scanner.cpp:365
FILE * scannerYYget_out ( void  )

Get the output stream.

Definition at line 21929 of file scanner.cpp.

21930 {
21931  return scannerYYout;
21932 }
FILE * scannerYYout
Definition: scanner.cpp:359
char * scannerYYget_text ( void  )

Get the current token.

Definition at line 21946 of file scanner.cpp.

21947 {
21948  return scannerYYtext;
21949 }
char * scannerYYtext
Definition: scanner.cpp:10777
int scannerYYlex ( void  )
int scannerYYlex_destroy ( void  )

Definition at line 22021 of file scanner.cpp.

22022 {
22023 
22024  /* Pop the buffer stack, destroying each element. */
22025  while(YY_CURRENT_BUFFER){
22027  YY_CURRENT_BUFFER_LVALUE = NULL;
22029  }
22030 
22031  /* Destroy the stack itself. */
22033  (yy_buffer_stack) = NULL;
22034 
22036  (yy_state_buf) = NULL;
22037 
22038  /* Reset the globals. This is important in a non-reentrant scanner so the next time
22039  * scannerYYlex() is called, initialization will occur. */
22040  yy_init_globals( );
22041 
22042  return 0;
22043 }
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
static YY_BUFFER_STATE * yy_buffer_stack
Definition: scanner.cpp:274
void scannerYYpop_buffer_state(void)
Definition: scanner.cpp:21732
static yy_state_type * yy_state_buf
Definition: scanner.cpp:10755
void scannerYY_delete_buffer(YY_BUFFER_STATE b)
Definition: scanner.cpp:21626
void scannerYYfree(void *)
Definition: scanner.cpp:22086
static int yy_init_globals(void)
Definition: scanner.cpp:21987
void scannerYYpop_buffer_state ( void  )

Removes and deletes the top of the stack, if present. The next element becomes the new top.

Definition at line 21732 of file scanner.cpp.

21733 {
21734  if (!YY_CURRENT_BUFFER)
21735  return;
21736 
21738  YY_CURRENT_BUFFER_LVALUE = NULL;
21739  if ((yy_buffer_stack_top) > 0)
21740  --(yy_buffer_stack_top);
21741 
21742  if (YY_CURRENT_BUFFER) {
21745  }
21746 }
static int yy_did_buffer_switch_on_eof
Definition: scanner.cpp:304
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
static size_t yy_buffer_stack_top
Definition: scanner.cpp:272
void scannerYY_delete_buffer(YY_BUFFER_STATE b)
Definition: scanner.cpp:21626
static void scannerYY_load_buffer_state(void)
Definition: scanner.cpp:21584
void scannerYYpush_buffer_state ( YY_BUFFER_STATE  new_buffer)

Pushes the new state onto the stack. The new state becomes the current state. This function will allocate the stack if necessary.

Parameters
new_bufferThe new state.

Definition at line 21702 of file scanner.cpp.

21703 {
21704  if (new_buffer == NULL)
21705  return;
21706 
21708 
21709  /* This block is copied from scannerYY_switch_to_buffer. */
21710  if ( YY_CURRENT_BUFFER )
21711  {
21712  /* Flush out information for old buffer. */
21713  *(yy_c_buf_p) = (yy_hold_char);
21714  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
21715  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
21716  }
21717 
21718  /* Only push if top exists. Otherwise, replace top. */
21719  if (YY_CURRENT_BUFFER)
21720  (yy_buffer_stack_top)++;
21721  YY_CURRENT_BUFFER_LVALUE = new_buffer;
21722 
21723  /* copied from scannerYY_switch_to_buffer. */
21726 }
static int yy_did_buffer_switch_on_eof
Definition: scanner.cpp:304
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
static void scannerYYensure_buffer_stack(void)
Definition: scanner.cpp:21751
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
static char * yy_c_buf_p
Definition: scanner.cpp:297
static size_t yy_buffer_stack_top
Definition: scanner.cpp:272
static char yy_hold_char
Definition: scanner.cpp:292
static void scannerYY_load_buffer_state(void)
Definition: scanner.cpp:21584
static int yy_n_chars
Definition: scanner.cpp:293
void * scannerYYrealloc ( void *  ptr,
yy_size_t  size 
)

Definition at line 22074 of file scanner.cpp.

22075 {
22076  /* The cast to (char *) in the following accommodates both
22077  * implementations that use char* generic pointers, and those
22078  * that use void* generic pointers. It works with the latter
22079  * because both ANSI C and C++ allow castless assignment from
22080  * any pointer type to void*, and deal with argument conversions
22081  * as though doing an assignment.
22082  */
22083  return (void *) realloc( (char *) ptr, size );
22084 }
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
void scannerYYrestart ( FILE *  input_file)

Immediately switch to a different input stream.

Parameters
input_fileA readable stream.
Note
This function does not reset the start condition to INITIAL .

Definition at line 21536 of file scanner.cpp.

21537 {
21538 
21539  if ( ! YY_CURRENT_BUFFER ){
21543  }
21544 
21547 }
#define YY_CURRENT_BUFFER
Definition: scanner.cpp:282
static void scannerYYensure_buffer_stack(void)
Definition: scanner.cpp:21751
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_BUF_SIZE
Definition: scanner.cpp:163
FILE * scannerYYin
Definition: scanner.cpp:359
YY_BUFFER_STATE scannerYY_create_buffer(FILE *file, int size)
Definition: scanner.cpp:21598
static void scannerYY_init_buffer(YY_BUFFER_STATE b, FILE *file)
Definition: scanner.cpp:21645
static void scannerYY_load_buffer_state(void)
Definition: scanner.cpp:21584
void scannerYYset_debug ( int  debug_flag)

Definition at line 21982 of file scanner.cpp.

21983 {
21984  scannerYY_flex_debug = bdebug ;
21985 }
int scannerYY_flex_debug
Definition: scanner.cpp:10753
void scannerYYset_extra ( YY_EXTRA_TYPE  user_defined)
void scannerYYset_in ( FILE *  in_str)

Set the input stream. This does not discard the current input buffer.

Parameters
in_strA readable stream.
See also
scannerYY_switch_to_buffer

Definition at line 21967 of file scanner.cpp.

21968 {
21969  scannerYYin = in_str ;
21970 }
FILE * scannerYYin
Definition: scanner.cpp:359
void scannerYYset_lineno ( int  line_number)

Set the current line number.

Parameters
line_number

Definition at line 21955 of file scanner.cpp.

21956 {
21957 
21958  scannerYYlineno = line_number;
21959 }
int scannerYYlineno
Definition: scanner.cpp:365
void scannerYYset_out ( FILE *  out_str)

Definition at line 21972 of file scanner.cpp.

21973 {
21974  scannerYYout = out_str ;
21975 }
FILE * scannerYYout
Definition: scanner.cpp:359
static void setContext ( )
static

Definition at line 11150 of file scanner.cpp.

11151 {
11153  language = getLanguageFromFileName(fileName);
11162  if ( insidePHP )
11163  {
11165  }
11166  //printf("setContext(%s) insideIDL=%d insideJava=%d insideCS=%d "
11167  // "insideD=%d insidePHP=%d insideObjC=%d\n",
11168  // yyFileName.data(),insideIDL,insideJava,insideCS,insideD,insidePHP,insideObjC
11169  // );
11170 }
static bool useOverrideCommands
Definition: scanner.cpp:10893
static QCString yyFileName
Definition: scanner.cpp:10876
static bool insideD
processing D code?
Definition: scanner.cpp:10899
static SrcLangExt language
Definition: scanner.cpp:10895
static bool insidePHP
processing PHP code?
Definition: scanner.cpp:10900
static bool insideIDL
processing IDL code?
Definition: scanner.cpp:10896
static bool insideCS
processing C# code?
Definition: scanner.cpp:10898
fileName
Definition: dumpTree.py:9
static bool insideObjC
processing Objective C code?
Definition: scanner.cpp:10901
static bool insideJava
processing Java code?
Definition: scanner.cpp:10897
SrcLangExt getLanguageFromFileName(const QCString fileName)
Definition: util.cpp:7061
static bool insideCpp
processing C/C++ code
Definition: scanner.cpp:10904
static bool insideJS
processing JavaScript code?
Definition: scanner.cpp:10903
const bool TRUE
Definition: qglobal.h:371
static void splitKnRArg ( QCString oldStyleArgPtr,
QCString oldStyleArgName 
)
static

Definition at line 11226 of file scanner.cpp.

11227 {
11228  int si = current->args.length();
11229  if (oldStyleArgType.isEmpty()) // new argument
11230  {
11231  static QRegExp re("([^)]*)");
11232  int bi1 = current->args.findRev(re);
11233  int bi2 = bi1!=-1 ? current->args.findRev(re,bi1-1) : -1;
11234  char c;
11235  if (bi1!=-1 && bi2!=-1) // found something like "int (*func)(int arg)"
11236  {
11237  int s=bi2+1;
11239  int i=s;
11240  while (i<si && ((c=current->args.at(i))=='*' || isspace((uchar)c))) i++;
11241  oldStyleArgType += current->args.mid(s,i-s);
11242  s=i;
11243  while (i<si && isId(current->args.at(i))) i++;
11244  oldStyleArgName = current->args.mid(s,i-s);
11246  }
11247  else if (bi1!=-1) // redundant braces like in "int (*var)"
11248  {
11249  int s=bi1;
11251  s++;
11252  int i=s+1;
11253  while (i<si && ((c=current->args.at(i))=='*' || isspace((uchar)c))) i++;
11254  oldStyleArgType += current->args.mid(s,i-s);
11255  s=i;
11256  while (i<si && isId(current->args.at(i))) i++;
11257  oldStyleArgName = current->args.mid(s,i-s);
11258  }
11259  else // normal "int *var"
11260  {
11261  int l=si,i=l-1,j;
11262  char c;
11263  // look for start of name in "type *name"
11264  while (i>=0 && isId(current->args.at(i))) i--;
11265  j=i+1;
11266  // look for start of *'s
11267  while (i>=0 && ((c=current->args.at(i))=='*' || isspace((uchar)c))) i--;
11268  i++;
11269  if (i!=l)
11270  {
11272  oldStyleArgPtr=current->args.mid(i,j-i);
11273  oldStyleArgName=current->args.mid(j).stripWhiteSpace();
11274  }
11275  else
11276  {
11277  oldStyleArgName=current->args.copy().stripWhiteSpace();
11278  }
11279  }
11280  }
11281  else // continuation like *arg2 in "int *args,*arg2"
11282  {
11283  int l=si,j=0;
11284  char c;
11285  while (j<l && ((c=current->args.at(j))=='*' || isspace((uchar)c))) j++;
11286  if (j>0)
11287  {
11288  oldStyleArgPtr=current->args.left(j);
11289  oldStyleArgName=current->args.mid(j).stripWhiteSpace();
11290  }
11291  else
11292  {
11293  oldStyleArgName=current->args.copy().stripWhiteSpace();
11294  }
11295  }
11296 }
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
static Entry * current
Definition: scanner.cpp:10865
uint length() const
Definition: qcstring.h:195
char & at(uint i) const
Definition: qcstring.h:326
QCString left(uint len) const
Definition: qcstring.cpp:213
static QStrList * l
Definition: config.cpp:1044
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
unsigned char uchar
Definition: nybbler.cc:11
QCString copy() const
Definition: qcstring.h:250
QCString args
member argument string
Definition: entry.h:252
static QCString oldStyleArgType
Definition: scanner.cpp:10941
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
bool isId(int c)
Definition: util.h:224
static QCString * s
Definition: config.cpp:1042
static void startCommentBlock ( bool  brief)
static

Definition at line 22099 of file scanner.cpp.

22100 {
22101  if (brief)
22102  {
22105  }
22106  else
22107  {
22110  }
22111 }
bool brief
static Entry * current
Definition: scanner.cpp:10865
int briefLine
line number at which the brief desc. was found
Definition: entry.h:264
int docLine
line number at which the documentation was found
Definition: entry.h:261
static QCString yyFileName
Definition: scanner.cpp:10876
static int yyLineNr
Definition: scanner.cpp:10870
QCString docFile
file in which the documentation was found
Definition: entry.h:262
QCString briefFile
file in which the brief desc. was found
Definition: entry.h:265
static QCString stripQuotes ( const char *  s)
static

Definition at line 11119 of file scanner.cpp.

11120 {
11121  QCString name;
11122  if (s==0 || *s==0) return name;
11123  name=s;
11124  if (name.at(0)=='"' && name.at(name.length()-1)=='"')
11125  {
11126  name=name.mid(1,name.length()-2);
11127  }
11128  return name;
11129 }
static QCString name
Definition: declinfo.cpp:673
uint length() const
Definition: qcstring.h:195
char & at(uint i) const
Definition: qcstring.h:326
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
static QCString * s
Definition: config.cpp:1042
while ( )

Definition at line 11878 of file scanner.cpp.

11879  {
11880  yy_cp = (yy_c_buf_p);
11881 
11882  /* Support of scannerYYtext. */
11883  *yy_cp = (yy_hold_char);
11884 
11885  /* yy_bp points to the position in yy_ch_buf of the start of
11886  * the current run.
11887  */
11888  yy_bp = yy_cp;
11889 
11890  yy_current_state = (yy_start);
11891  yy_current_state += YY_AT_BOL();
11892 
11893  (yy_state_ptr) = (yy_state_buf);
11894  *(yy_state_ptr)++ = yy_current_state;
11895 
11896 yy_match:
11897  do
11898  {
11899  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
11900  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
11901  {
11902  yy_current_state = (int) yy_def[yy_current_state];
11903  if ( yy_current_state >= 4613 )
11904  yy_c = yy_meta[(unsigned int) yy_c];
11905  }
11906  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
11907  *(yy_state_ptr)++ = yy_current_state;
11908  ++yy_cp;
11909  }
11910  while ( yy_current_state != 4612 );
11911 
11912 yy_find_action:
11913  yy_current_state = *--(yy_state_ptr);
11914  (yy_lp) = yy_accept[yy_current_state];
11915 find_rule: /* we branch to this label when backing up */
11916  for ( ; ; ) /* until we find what rule we matched */
11917  {
11918  if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
11919  {
11920  yy_act = yy_acclist[(yy_lp)];
11921  if ( yy_act & YY_TRAILING_HEAD_MASK ||
11923  {
11925  {
11928  break;
11929  }
11930  }
11931  else if ( yy_act & YY_TRAILING_MASK )
11932  {
11933  (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
11935  (yy_full_match) = yy_cp;
11937  (yy_full_lp) = (yy_lp);
11938  }
11939  else
11940  {
11941  (yy_full_match) = yy_cp;
11943  (yy_full_lp) = (yy_lp);
11944  break;
11945  }
11946  ++(yy_lp);
11947  goto find_rule;
11948  }
11949  --yy_cp;
11950  yy_current_state = *--(yy_state_ptr);
11951  (yy_lp) = yy_accept[yy_current_state];
11952  }
11953 
11955 
11956 do_action: /* This label is used only to access EOF actions. */
11957 
11958  switch ( yy_act )
11959  { /* beginning of action switch */
11960 case 1:
11962 #line 777 "scanner.l"
11963 {
11964  curlyCount=0;
11965  needsSemi = TRUE;
11967  }
11968  YY_BREAK
11969 case 2:
11971 #line 782 "scanner.l"
11972 {
11973  roundCount=0;
11975  }
11976  YY_BREAK
11977 case 3:
11979 #line 786 "scanner.l"
11980 {
11981  ++roundCount;
11982  }
11983  YY_BREAK
11984 case 4:
11986 #line 789 "scanner.l"
11987 {
11988  if (roundCount )
11989  --roundCount ;
11990  else
11991  BEGIN( NextSemi ) ;
11992  }
11993  YY_BREAK
11994 case 5:
11996 #line 795 "scanner.l"
11997 {
11998  ++curlyCount ;
11999  }
12000  YY_BREAK
12001 case 6:
12003 #line 798 "scanner.l"
12004 {
12005  if( curlyCount )
12006  {
12007  --curlyCount ;
12008  }
12009  else if (needsSemi)
12010  {
12011  BEGIN( NextSemi );
12012  }
12013  else
12014  {
12015  BEGIN( FindMembers );
12016  }
12017  }
12018  YY_BREAK
12019 case 7:
12021 #line 812 "scanner.l"
12022 {
12023  if (insidePHP)
12024  {
12027  }
12028  }
12029  YY_BREAK
12030 case 8:
12032 #line 819 "scanner.l"
12033 { if (insidePHP) REJECT; }
12034  YY_BREAK
12035 case 9:
12037 #line 820 "scanner.l"
12038 {
12040  BEGIN(SkipString);
12041  }
12042  YY_BREAK
12043 case 10:
12045 #line 824 "scanner.l"
12046 {
12047  unput(*scannerYYtext);
12048  BEGIN( FindMembers );
12049  }
12050  YY_BREAK
12051 case 11:
12053 #line 828 "scanner.l"
12054 {
12055  unput(*scannerYYtext);
12056  BEGIN( FindMembers );
12057  }
12058  YY_BREAK
12059 case 12:
12061 #line 832 "scanner.l"
12062 {
12064  unput(*scannerYYtext);
12065  BEGIN( ClassVar );
12066  }
12067  YY_BREAK
12068 case 13:
12070 #line 837 "scanner.l"
12071 { // PHP code with unsupported extension?
12072  insidePHP = TRUE;
12073  }
12074  YY_BREAK
12075 case 14:
12077 #line 840 "scanner.l"
12078 { // PHP code start
12079  BEGIN( FindMembers );
12080  }
12081  YY_BREAK
12082 case 15:
12083 /* rule 15 can match eol */
12085 #line 843 "scanner.l"
12086 { // PHP code start
12087  lineCount() ;
12088  BEGIN( FindMembers );
12089  }
12090  YY_BREAK
12091 case 16:
12093 #line 847 "scanner.l"
12094 { // Non-PHP code text, ignore
12095  }
12096  YY_BREAK
12097 case 17:
12098 /* rule 17 can match eol */
12100 #line 849 "scanner.l"
12101 { // Non-PHP code text, ignore
12102  lineCount();
12103  }
12104  YY_BREAK
12105 case 18:
12107 #line 852 "scanner.l"
12108 { // Non-PHP code text, ignore
12109  }
12110  YY_BREAK
12111 case 19:
12113 #line 854 "scanner.l"
12114 { // PHP code end
12115  if (insidePHP)
12116  BEGIN( FindMembersPHP );
12117  else
12118  REJECT;
12119  }
12120  YY_BREAK
12121 case 20:
12122 /* rule 20 can match eol */
12124 #line 860 "scanner.l"
12125 { if (insidePHP)
12126  BEGIN( NextSemi );
12127  else
12128  REJECT;
12129  }
12130  YY_BREAK
12131 case 21:
12133 #line 865 "scanner.l"
12134 { // Mozilla XPIDL lang-specific block
12135  if (!insideIDL)
12136  REJECT;
12137  }
12138  YY_BREAK
12139 case 22:
12141 #line 869 "scanner.l"
12142 { // Mozilla XPIDL lang-specific block end
12143  if (!insideIDL)
12144  REJECT;
12145  }
12146  YY_BREAK
12147 case 23:
12148 /* rule 23 can match eol */
12150 #line 873 "scanner.l"
12151 { // IDL or Borland C++ builder property
12152  current->mtype = mtype = Property;
12154  current->type.resize(0);
12155  current->name.resize(0);
12156  current->args.resize(0);
12157  current->argList->clear();
12158  lineCount() ;
12159  }
12160  YY_BREAK
12161 case 24:
12162 /* rule 24 can match eol */
12164 #line 883 "scanner.l"
12165 { current->mtype = mtype = DCOP;
12167  current->type.resize(0);
12168  current->name.resize(0);
12169  current->args.resize(0);
12170  current->argList->clear();
12171  lineCount() ;
12172  }
12173  YY_BREAK
12174 case 25:
12175 /* rule 25 can match eol */
12177 #line 892 "scanner.l"
12178 { current->mtype = mtype = Signal;
12179 
12181  current->type.resize(0);
12182  current->name.resize(0);
12183  current->args.resize(0);
12184  current->argList->clear();
12185  lineCount() ;
12186  }
12187  YY_BREAK
12188 case 26:
12189 /* rule 26 can match eol */
12191 #line 902 "scanner.l"
12192 {
12194  current->mtype = mtype = Slot;
12195  current->type.resize(0);
12196  current->name.resize(0);
12197  current->args.resize(0);
12198  current->argList->clear();
12199  lineCount();
12200  }
12201  YY_BREAK
12202 case 27:
12203 /* rule 27 can match eol */
12205 #line 912 "scanner.l"
12206 {
12208  current->mtype = mtype = Slot;
12209  current->type.resize(0);
12210  current->name.resize(0);
12211  current->args.resize(0);
12212  current->argList->clear();
12213  lineCount();
12214  }
12215  YY_BREAK
12216 case 28:
12217 /* rule 28 can match eol */
12219 #line 922 "scanner.l"
12220 {
12222  current->mtype = mtype = Slot;
12223  current->type.resize(0);
12224  current->name.resize(0);
12225  current->args.resize(0);
12226  current->argList->clear();
12227  lineCount();
12228  }
12229  YY_BREAK
12230 case 29:
12231 /* rule 29 can match eol */
12233 #line 931 "scanner.l"
12234 {
12236  current->mtype = mtype = Method;
12237  current->type.resize(0);
12238  current->name.resize(0);
12239  current->args.resize(0);
12240  current->argList->clear();
12241  lineCount() ;
12242  }
12243  YY_BREAK
12244 case 30:
12245 /* rule 30 can match eol */
12247 #line 940 "scanner.l"
12248 { // for now treat C++/CLI's internal as package...
12249  if (insideCli)
12250  {
12252  current->mtype = mtype = Method;
12253  current->type.resize(0);
12254  current->name.resize(0);
12255  current->args.resize(0);
12256  current->argList->clear();
12257  lineCount() ;
12258  }
12259  else
12260  {
12261  REJECT;
12262  }
12263  }
12264  YY_BREAK
12265 case 31:
12266 /* rule 31 can match eol */
12268 #line 956 "scanner.l"
12269 {
12271  current->mtype = mtype = Method;
12272  current->type.resize(0);
12273  current->name.resize(0);
12274  current->args.resize(0);
12275  current->argList->clear();
12276  lineCount() ;
12277  }
12278  YY_BREAK
12279 case 32:
12280 /* rule 32 can match eol */
12282 #line 965 "scanner.l"
12283 {
12285  current->mtype = mtype = Method;
12286  current->type.resize(0);
12287  current->name.resize(0);
12288  current->args.resize(0);
12289  current->argList->clear();
12290  lineCount() ;
12291  }
12292  YY_BREAK
12293 case 33:
12294 /* rule 33 can match eol */
12296 #line 974 "scanner.l"
12297 {
12298  if (insideCli)
12299  {
12300  // C++/CLI event
12301  lineCount() ;
12302  current->mtype = mtype = Event;
12304  curlyCount=0;
12306  }
12307  else if (insideCS)
12308  {
12309  lineCount() ;
12310  current->mtype = Event;
12312  }
12313  else
12314  {
12315  REJECT;
12316  }
12317  }
12318  YY_BREAK
12319 case 34:
12320 /* rule 34 can match eol */
12322 #line 995 "scanner.l"
12323 {
12324  if (insideCli)
12325  {
12326  // C++/CLI property
12327  lineCount() ;
12328  current->mtype = mtype = Property;
12330  curlyCount=0;
12332  }
12333  else
12334  {
12335  REJECT;
12336  }
12337  }
12338  YY_BREAK
12339 case 35:
12341 #line 1010 "scanner.l"
12342 {
12343  addType( current );
12345  }
12346  YY_BREAK
12347 case 36:
12349 #line 1014 "scanner.l"
12350 { // C++/CLI indexed property
12353  }
12354  YY_BREAK
12355 case 37:
12357 #line 1018 "scanner.l"
12358 {
12359  curlyCount=0;
12360  //printf("event: '%s' '%s'\n",current->type.data(),current->name.data());
12361  BEGIN( CSAccessorDecl );
12362  }
12363  YY_BREAK
12364 case 38:
12366 #line 1023 "scanner.l"
12367 {
12368  unput(*scannerYYtext);
12369  BEGIN( FindMembers );
12370  }
12371  YY_BREAK
12372 case 39:
12373 /* rule 39 can match eol */
12375 #line 1027 "scanner.l"
12376 {
12377  lineCount();
12378  }
12379  YY_BREAK
12380 case 40:
12382 #line 1030 "scanner.l"
12383 {
12384  }
12385  YY_BREAK
12386 case 41:
12388 #line 1032 "scanner.l"
12389 {
12390  addType( current );
12392  }
12393  YY_BREAK
12394 case 42:
12396 #line 1036 "scanner.l"
12397 {
12400  }
12401  YY_BREAK
12402 case 43:
12404 #line 1040 "scanner.l"
12405 {
12407  }
12408  YY_BREAK
12409 /*
12410 <FindMembers>{B}*"property"{BN}+ {
12411  if (!current->type.isEmpty())
12412  {
12413  REJECT;
12414  }
12415  else
12416  {
12417  current->mtype = mtype = Property;
12418  lineCount();
12419  }
12420  }
12421  */
12422 case 44:
12423 /* rule 44 can match eol */
12425 #line 1056 "scanner.l"
12426 {
12428  current->mtype = mtype = Method;
12429  current->type.resize(0);
12430  current->name.resize(0);
12431  current->args.resize(0);
12432  current->argList->clear();
12433  lineCount() ;
12434  }
12435  YY_BREAK
12436 case 45:
12437 /* rule 45 can match eol */
12439 #line 1065 "scanner.l"
12440 {
12442  current->mtype = mtype = Method;
12443  current->type.resize(0);
12444  current->name.resize(0);
12445  current->args.resize(0);
12446  current->argList->clear();
12447  lineCount() ;
12448  }
12449  YY_BREAK
12450 case 46:
12451 /* rule 46 can match eol */
12453 #line 1074 "scanner.l"
12454 {
12456  current->mtype = mtype = Method;
12457  current->type.resize(0);
12458  current->name.resize(0);
12459  current->args.resize(0);
12460  current->argList->clear();
12461  lineCount() ;
12462  }
12463  YY_BREAK
12464 case 47:
12465 /* rule 47 can match eol */
12467 #line 1083 "scanner.l"
12468 {
12469  if (!insideObjC)
12470  {
12471  REJECT;
12472  }
12473  else
12474  {
12475  lineCount();
12483  insideObjC = TRUE;
12484  current->virt = Virtual;
12485  current->stat=scannerYYtext[0]=='+';
12486  current->mtype = mtype = Method;
12487  current->type.resize(0);
12488  current->name.resize(0);
12489  current->args.resize(0);
12490  current->argList->clear();
12491  BEGIN( ObjCMethod );
12492  }
12493  }
12494  YY_BREAK
12495 case 48:
12497 #line 1109 "scanner.l"
12498 { // start of method's return type
12499  BEGIN( ObjCReturnType );
12500  }
12501  YY_BREAK
12502 case 49:
12504 #line 1112 "scanner.l"
12505 { // found method name
12506  if (current->type.isEmpty())
12507  {
12508  current->type = "id";
12509  }
12511  if (insideCpp || insideObjC)
12512  {
12514  }
12515  }
12516  YY_BREAK
12517 case 50:
12519 #line 1123 "scanner.l"
12520 { // start of parameter list
12521  current->name += ':';
12522  Argument *a = new Argument;
12523  current->argList->append(a);
12524  BEGIN( ObjCParams );
12525  }
12526  YY_BREAK
12527 case 51:
12528 /* rule 51 can match eol */
12530 #line 1129 "scanner.l"
12531 { // TODO: check if nested braches are possible.
12533  }
12534  YY_BREAK
12535 case 52:
12537 #line 1132 "scanner.l"
12538 {
12539  BEGIN( ObjCMethod );
12540  }
12541  YY_BREAK
12542 case 53:
12544 #line 1135 "scanner.l"
12545 { // Keyword of parameter
12546  QCString keyw = scannerYYtext;
12547  keyw=keyw.left(keyw.length()-1); // strip :
12548  if (keyw.isEmpty())
12549  {
12550  current->name += " :";
12551  }
12552  else
12553  {
12554  current->name += keyw+":";
12555  }
12556  if (current->argList->getLast()->type.isEmpty())
12557  {
12558  current->argList->getLast()->type="id";
12559  }
12560  Argument *a = new Argument;
12561  a->attrib=(QCString)"["+keyw+"]";
12562  current->argList->append(a);
12563  }
12564  YY_BREAK
12565 case 54:
12566 /* rule 54 can match eol */
12568 #line 1154 "scanner.l"
12569 { // name of parameter
12570  lineCount();
12572  }
12573  YY_BREAK
12574 case 55:
12575 /* rule 55 can match eol */
12577 #line 1158 "scanner.l"
12578 { // name of parameter
12579  lineCount();
12580  // do we want the comma as part of the name?
12581  //current->name += ",";
12582  Argument *a = new Argument;
12583  a->attrib="[,]";
12584  a->type="...";
12585  current->argList->append(a);
12586  }
12587  YY_BREAK
12588 /*
12589 <ObjCParams>":" {
12590  current->name += ':';
12591  }
12592  */
12593 case 56:
12595 #line 1172 "scanner.l"
12596 {
12597  roundCount=0;
12598  current->argList->getLast()->type.resize(0);
12599  BEGIN( ObjCParamType );
12600  }
12601  YY_BREAK
12602 case 57:
12604 #line 1177 "scanner.l"
12605 {
12606  roundCount++;
12608  }
12609  YY_BREAK
12610 case 58:
12611 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
12612 (yy_c_buf_p) = yy_cp = yy_bp + 1;
12613 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
12615 #line 1181 "scanner.l"
12616 {
12617  if (roundCount<=0)
12618  {
12619  BEGIN( ObjCParams );
12620  }
12621  else
12622  {
12624  roundCount--;
12625  }
12626  }
12627  YY_BREAK
12628 case 59:
12629 /* rule 59 can match eol */
12631 #line 1192 "scanner.l"
12632 {
12634  }
12635  YY_BREAK
12636 case 60:
12638 #line 1195 "scanner.l"
12639 { // end of method declaration
12641  {
12642  current->argList->getLast()->type="id";
12643  }
12645  //printf("argList=%s\n",current->args.data());
12646  unput(';');
12647  BEGIN( Function );
12648  }
12649  YY_BREAK
12650 case 61:
12651 /* rule 61 can match eol */
12653 #line 1205 "scanner.l"
12654 { // start of a method body
12655  lineCount();
12656  //printf("Type=%s Name=%s args=%s\n",
12657  // current->type.data(),current->name.data(),argListToString(current->argList).data()
12658  // );
12660  {
12661  current->argList->getLast()->type="id";
12662  }
12664  unput('{');
12665  BEGIN( Function );
12666  }
12667  YY_BREAK
12668 case 62:
12669 /* rule 62 can match eol */
12671 #line 1218 "scanner.l"
12672 {
12673  lineCount();
12674  }
12675  YY_BREAK
12676 case 63:
12677 /* rule 63 can match eol */
12679 #line 1221 "scanner.l"
12680 {
12681  if (insideJava) // Java annotation
12682  {
12683  lineCount();
12685  roundCount=0;
12686  BEGIN( SkipRound );
12687  }
12688  else if (qstrncmp(scannerYYtext,"@property",9)==0) // ObjC 2.0 property
12689  {
12690  current->mtype = mtype = Property;
12693  unput('(');
12694  BEGIN( ObjCPropAttr );
12695  }
12696  else
12697  {
12698  REJECT;
12699  }
12700  }
12701  YY_BREAK
12702 case 64:
12704 #line 1242 "scanner.l"
12705 {
12706  current->read = scannerYYtext+7;
12707  }
12708  YY_BREAK
12709 case 65:
12711 #line 1245 "scanner.l"
12712 {
12714  }
12715  YY_BREAK
12716 case 66:
12718 #line 1248 "scanner.l"
12719 {
12720  current->spec&=~Entry::Writable;
12721  }
12722  YY_BREAK
12723 case 67:
12725 #line 1251 "scanner.l"
12726 { // default
12727  }
12728  YY_BREAK
12729 case 68:
12731 #line 1253 "scanner.l"
12732 { // default
12733  }
12734  YY_BREAK
12735 case 69:
12737 #line 1255 "scanner.l"
12738 {
12739  current->spec&=~Entry::Assign;
12741  }
12742  YY_BREAK
12743 case 70:
12745 #line 1259 "scanner.l"
12746 {
12747  current->spec&=~Entry::Assign;
12749  }
12750  YY_BREAK
12751 case 71:
12753 #line 1263 "scanner.l"
12754 {
12755  current->spec&=~Entry::Assign;
12757  }
12758  YY_BREAK
12759 case 72:
12761 #line 1267 "scanner.l"
12762 {
12763  current->spec&=~Entry::Assign;
12765  }
12766  YY_BREAK
12767 case 73:
12769 #line 1271 "scanner.l"
12770 {
12771  current->spec&=~Entry::Assign;
12773  }
12774  YY_BREAK
12775 case 74:
12777 #line 1275 "scanner.l"
12778 {
12780  }
12781  YY_BREAK
12782 case 75:
12784 #line 1278 "scanner.l"
12785 {
12786  BEGIN(FindMembers);
12787  }
12788  YY_BREAK
12789 case 76:
12791 #line 1281 "scanner.l"
12792 {
12793  if (insideJava) // Java annotation
12794  {
12795  // skip annotation
12796  }
12797  else if (qstrcmp(scannerYYtext,"@property")==0) // ObjC 2.0 property
12798  {
12799  current->mtype = mtype = Property;
12802  }
12803  else if (qstrcmp(scannerYYtext,"@synthesize")==0)
12804  {
12806  }
12807  else if (qstrcmp(scannerYYtext,"@dynamic")==0)
12808  {
12810  }
12811  else
12812  {
12813  REJECT;
12814  }
12815  }
12816  YY_BREAK
12817 case 77:
12819 #line 1305 "scanner.l"
12820 {
12821  BEGIN(FindMembers);
12822  }
12823  YY_BREAK
12824 case 78:
12826 #line 1308 "scanner.l"
12827 {
12828  isTypedef=FALSE;
12829  //printf("Found namespace %s lang=%d\n",scannerYYtext,current->lang);
12831  current->name = substitute(current->name,".","::");
12832  current->name = substitute(current->name,"\\","::");
12834  current->type = "namespace" ;
12839  lineCount();
12840  }
12841  YY_BREAK
12842 case 79:
12844 #line 1322 "scanner.l"
12845 {
12847  current_root = current ;
12848  current = new Entry ;
12849  initEntry();
12850  BEGIN(FindMembers);
12851  }
12852  YY_BREAK
12853 case 80:
12855 #line 1329 "scanner.l"
12856 {
12857  curlyCount=0;
12858  BEGIN( ReadNSBody );
12859  }
12860  YY_BREAK
12861 case 81:
12862 /* rule 81 can match eol */
12864 #line 1333 "scanner.l"
12865 {
12866  current->type += " initonly ";
12868  lineCount();
12869  }
12870  YY_BREAK
12871 case 82:
12872 /* rule 82 can match eol */
12874 #line 1338 "scanner.l"
12875 { current->type += " static ";
12876  current->stat = TRUE;
12877  lineCount();
12878  }
12879  YY_BREAK
12880 case 83:
12881 /* rule 83 can match eol */
12883 #line 1342 "scanner.l"
12884 {
12885  current->stat = FALSE;
12887  lineCount();
12888  }
12889  YY_BREAK
12890 case 84:
12891 /* rule 84 can match eol */
12893 #line 1347 "scanner.l"
12894 { current->type += " virtual ";
12895  current->virt = Virtual;
12896  lineCount();
12897  }
12898  YY_BREAK
12899 case 85:
12900 /* rule 85 can match eol */
12902 #line 1351 "scanner.l"
12903 { // UNO IDL published keyword
12904  if (insideIDL)
12905  {
12906  lineCount();
12908  }
12909  else
12910  {
12911  REJECT;
12912  }
12913  }
12914  YY_BREAK
12915 case 86:
12916 /* rule 86 can match eol */
12918 #line 1362 "scanner.l"
12919 {
12920  if (!insidePHP)
12921  {
12922  current->type += " abstract ";
12923  if (!insideJava)
12924  {
12925  current->virt = Pure;
12926  }
12927  else
12928  {
12930  }
12931  }
12932  else
12933  {
12935  }
12936  lineCount();
12937  }
12938  YY_BREAK
12939 case 87:
12940 /* rule 87 can match eol */
12942 #line 1381 "scanner.l"
12944  lineCount();
12945  }
12946  YY_BREAK
12947 case 88:
12948 /* rule 88 can match eol */
12950 #line 1384 "scanner.l"
12952  lineCount();
12953  }
12954  YY_BREAK
12955 case 89:
12956 /* rule 89 can match eol */
12958 #line 1387 "scanner.l"
12960  lineCount();
12961  }
12962  YY_BREAK
12963 case 90:
12964 /* rule 90 can match eol */
12966 #line 1390 "scanner.l"
12967 { // Objective C 2.0 protocol required section
12968  current->spec=(current->spec & ~Entry::Optional) | Entry::Required;
12969  lineCount();
12970  }
12971  YY_BREAK
12972 case 91:
12973 /* rule 91 can match eol */
12975 #line 1394 "scanner.l"
12976 { // Objective C 2.0 protocol optional section
12977  current->spec=(current->spec & ~Entry::Required) | Entry::Optional;
12978  lineCount();
12979  }
12980  YY_BREAK
12981 /*
12982 <FindMembers>{B}*"import"{BN}+ { // IDL import keyword
12983  BEGIN( NextSemi );
12984  }
12985  */
12986 case 92:
12987 /* rule 92 can match eol */
12989 #line 1403 "scanner.l"
12990 { lineCount(); }
12991  YY_BREAK
12992 case 93:
12993 /* rule 93 can match eol */
12994 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
12995 (yy_c_buf_p) = yy_cp -= 1;
12996 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
12998 #line 1404 "scanner.l"
12999 {
13000  isTypedef=FALSE;
13002  current->type = "namespace" ;
13007  lineCount();
13008  if (insidePHP)
13009  {
13010  BEGIN( PackageName );
13011  }
13012  else
13013  {
13014  BEGIN( CompoundName );
13015  }
13016  }
13017  YY_BREAK
13018 case 94:
13019 /* rule 94 can match eol */
13021 #line 1422 "scanner.l"
13022 {
13023  lineCount();
13024  if (insideIDL)
13025  {
13026  isTypedef=FALSE;
13028  current->type = "module" ;
13033  BEGIN( CompoundName );
13034  }
13035  else if (insideD)
13036  {
13037  lineCount();
13038  BEGIN(PackageName);
13039  }
13040  else
13041  {
13042  addType( current ) ;
13044  }
13045  }
13046  YY_BREAK
13047 case 95:
13048 /* rule 95 can match eol */
13050 #line 1446 "scanner.l"
13051 {
13052  lineCount();
13053  if (insideIDL)
13054  {
13055  isTypedef=FALSE;
13057  current->type = "library" ;
13062  BEGIN( CompoundName );
13063  }
13064  else
13065  {
13066  addType( current ) ;
13068  }
13069  }
13070  YY_BREAK
13071 case 96:
13072 /* rule 96 can match eol */
13074 #line 1465 "scanner.l"
13075 { // UNO IDL constant group
13076  lineCount();
13077  if (insideIDL)
13078  {
13079  isTypedef=FALSE;
13081  current->type = "constants";
13086  BEGIN( CompoundName );
13087  }
13088  else
13089  {
13090  addType( current ) ;
13092  }
13093  }
13094  YY_BREAK
13095 case 97:
13096 /* rule 97 can match eol */
13098 #line 1484 "scanner.l"
13099 { // UNO IDL service
13100  lineCount();
13101  if (insideIDL)
13102  {
13103  isTypedef=FALSE;
13106  // preserve UNO IDL [optional] or published
13108  addType( current ) ;
13109  current->type += " service " ;
13113  BEGIN( CompoundName );
13114  }
13115  else // TODO is addType right? just copy/pasted
13116  {
13117  addType( current ) ;
13119  }
13120  }
13121  YY_BREAK
13122 case 98:
13123 /* rule 98 can match eol */
13125 #line 1506 "scanner.l"
13126 { // UNO IDL singleton
13127  lineCount();
13128  if (insideIDL)
13129  {
13130  isTypedef=FALSE;
13133  (current->spec & Entry::Published); // preserve
13134  addType( current ) ;
13135  current->type += " singleton " ;
13139  BEGIN( CompoundName );
13140  }
13141  else // TODO is addType right? just copy/pasted
13142  {
13143  addType( current ) ;
13145  }
13146  }
13147  YY_BREAK
13148 case 99:
13149 /* rule 99 can match eol */
13151 #line 1527 "scanner.l"
13152 { // M$/Corba/UNO IDL/Java interface
13153  lineCount();
13154  if (insideIDL || insideJava || insideCS || insideD || insidePHP)
13155  {
13156  isTypedef=FALSE;
13159  // preserve UNO IDL [optional] or published
13161  addType( current ) ;
13162  current->type += " interface" ;
13167  BEGIN( CompoundName );
13168  }
13169  else
13170  {
13171  addType( current ) ;
13173  }
13174  }
13175  YY_BREAK
13176 case 100:
13177 /* rule 100 can match eol */
13179 #line 1550 "scanner.l"
13180 { // Objective-C class implementation
13181  lineCount();
13182  isTypedef=FALSE;
13185  insideObjC = TRUE;
13187  addType( current ) ;
13188  current->type += " implementation" ;
13192  BEGIN( CompoundName );
13193  }
13194  YY_BREAK
13195 case 101:
13196 /* rule 101 can match eol */
13198 #line 1564 "scanner.l"
13199 { // Objective-C class interface, or Java attribute
13200  lineCount();
13201  isTypedef=FALSE;
13204  if (!insideJava)
13205  {
13207  insideObjC = TRUE;
13208  }
13210  addType( current ) ;
13211  current->type += " interface" ;
13216  BEGIN( CompoundName );
13217  }
13218  YY_BREAK
13219 case 102:
13220 /* rule 102 can match eol */
13222 #line 1583 "scanner.l"
13223 { // Objective-C protocol definition
13224  lineCount();
13225  isTypedef=FALSE;
13229  insideObjC = TRUE;
13231  addType( current ) ;
13232  current->type += " protocol" ;
13237  BEGIN( CompoundName );
13238  }
13239  YY_BREAK
13240 case 103:
13241 /* rule 103 can match eol */
13243 #line 1599 "scanner.l"
13244 { // Corba IDL exception
13245  isTypedef=FALSE;
13248  (current->spec & Entry::Published); // preserve UNO IDL
13249  addType( current ) ;
13250  current->type += " exception" ;
13255  lineCount();
13256  BEGIN( CompoundName );
13257  }
13258  YY_BREAK
13259 case 104:
13260 #line 1614 "scanner.l"
13261 case 105:
13262 /* rule 105 can match eol */
13263 #line 1615 "scanner.l"
13264 case 106:
13265 /* rule 106 can match eol */
13267 #line 1615 "scanner.l"
13268 {
13269  QCString decl = scannerYYtext;
13270  isTypedef=decl.find("typedef")!=-1;
13271  bool isConst=decl.find("const")!=-1;
13272  bool isVolatile=decl.find("volatile")!=-1;
13274  addType( current ) ;
13275  if (isConst)
13276  {
13277  current->type += " const";
13278  }
13279  else if (isVolatile)
13280  {
13281  current->type += " volatile";
13282  }
13283  current->type += " class" ;
13288  if (scannerYYtext[0]=='@')
13289  {
13291  insideObjC = TRUE;
13292  }
13293  lineCount() ;
13294  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13296  {
13297  // convert Abstract to AbstractClass
13299  }
13300  BEGIN( CompoundName ) ;
13301  }
13302  YY_BREAK
13303 case 107:
13304 #line 1650 "scanner.l"
13305 case 108:
13306 /* rule 108 can match eol */
13308 #line 1650 "scanner.l"
13309 {
13310  isTypedef=FALSE;
13313  addType( current ) ;
13314  current->type += " value class" ;
13319  lineCount() ;
13320  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13321  BEGIN( CompoundName ) ;
13322  }
13323  YY_BREAK
13324 case 109:
13325 #line 1665 "scanner.l"
13326 case 110:
13327 /* rule 110 can match eol */
13329 #line 1665 "scanner.l"
13330 {
13331  isTypedef=FALSE;
13333  current->spec = Entry::Ref;
13334  addType( current ) ;
13335  current->type += " ref class" ;
13340  lineCount() ;
13341  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13342  BEGIN( CompoundName ) ;
13343  }
13344  YY_BREAK
13345 case 111:
13346 #line 1680 "scanner.l"
13347 case 112:
13348 /* rule 112 can match eol */
13350 #line 1680 "scanner.l"
13351 {
13352  isTypedef=FALSE;
13355  addType( current ) ;
13356  current->type += " interface class" ;
13361  lineCount() ;
13362  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13363  BEGIN( CompoundName ) ;
13364  }
13365  YY_BREAK
13366 case 113:
13367 /* rule 113 can match eol */
13369 #line 1694 "scanner.l"
13370 {
13371  if (insideIDL)
13372  {
13373  isTypedef=FALSE;
13375  addType( current ) ;
13376  current->type += " coclass" ;
13381  lineCount() ;
13382  BEGIN( CompoundName ) ;
13383  }
13384  else
13385  {
13386  addType(current);
13389  lineCount();
13390  }
13391  }
13392  YY_BREAK
13393 case 114:
13394 /* rule 114 can match eol */
13395 #line 1717 "scanner.l"
13396 case 115:
13397 /* rule 115 can match eol */
13399 #line 1717 "scanner.l"
13400 {
13401  QCString decl = scannerYYtext;
13402  isTypedef=decl.find("typedef")!=-1;
13403  bool isConst=decl.find("const")!=-1;
13404  bool isVolatile=decl.find("volatile")!=-1;
13407  (current->spec & Entry::Published); // preserve UNO IDL
13408  // bug 582676: can be a struct nested in an interface so keep insideObjC state
13409  //current->objc = insideObjC = FALSE;
13410  addType( current ) ;
13411  if (isConst)
13412  {
13413  current->type += " const";
13414  }
13415  else if (isVolatile)
13416  {
13417  current->type += " volatile";
13418  }
13419  current->type += " struct" ;
13424  lineCount() ;
13425  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13426  BEGIN( CompoundName ) ;
13427  }
13428  YY_BREAK
13429 case 116:
13430 #line 1746 "scanner.l"
13431 case 117:
13432 /* rule 117 can match eol */
13434 #line 1746 "scanner.l"
13435 {
13436  isTypedef=FALSE;
13439  addType( current ) ;
13440  current->type += " value struct" ;
13445  lineCount() ;
13446  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13447  BEGIN( CompoundName ) ;
13448  }
13449  YY_BREAK
13450 case 118:
13451 #line 1761 "scanner.l"
13452 case 119:
13453 /* rule 119 can match eol */
13455 #line 1761 "scanner.l"
13456 {
13457  isTypedef=FALSE;
13460  addType( current ) ;
13461  current->type += " ref struct" ;
13466  lineCount() ;
13467  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13468  BEGIN( CompoundName ) ;
13469  }
13470  YY_BREAK
13471 case 120:
13472 #line 1776 "scanner.l"
13473 case 121:
13474 /* rule 121 can match eol */
13476 #line 1776 "scanner.l"
13477 {
13478  isTypedef=FALSE;
13481  addType( current ) ;
13482  current->type += " interface struct";
13487  lineCount() ;
13488  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13489  BEGIN( CompoundName ) ;
13490  }
13491  YY_BREAK
13492 case 122:
13493 /* rule 122 can match eol */
13494 #line 1791 "scanner.l"
13495 case 123:
13496 /* rule 123 can match eol */
13498 #line 1791 "scanner.l"
13499 {
13500  QCString decl=scannerYYtext;
13501  isTypedef=decl.find("typedef")!=-1;
13502  bool isConst=decl.find("const")!=-1;
13503  bool isVolatile=decl.find("volatile")!=-1;
13506  // bug 582676: can be a struct nested in an interface so keep insideObjC state
13507  //current->objc = insideObjC = FALSE;
13508  addType( current ) ;
13509  if (isConst)
13510  {
13511  current->type += " const";
13512  }
13513  else if (isVolatile)
13514  {
13515  current->type += " volatile";
13516  }
13517  current->type += " union" ;
13522  lineCount() ;
13523  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13524  BEGIN( CompoundName ) ;
13525  }
13526  YY_BREAK
13527 case 124:
13528 /* rule 124 can match eol */
13529 #line 1819 "scanner.l"
13530 case 125:
13531 /* rule 125 can match eol */
13533 #line 1819 "scanner.l"
13534 { // for IDL: typedef [something] enum
13535  QCString text=scannerYYtext;
13536  isTypedef = text.find("typedef")!=-1;
13537  bool isStrongEnum = text.find("struct")!=-1 || text.find("class")!=-1 || insideCS;
13538  if (insideJava)
13539  {
13542  }
13543  else
13544  {
13546  }
13547  addType( current ) ;
13548  current->type += " enum";
13549  if (isStrongEnum)
13550  {
13552  }
13557  lineCount() ;
13558  if (scannerYYtext[scannerYYleng-1]=='{') unput('{');
13559  BEGIN( CompoundName ) ;
13560  }
13561  YY_BREAK
13562 case 126:
13563 /* rule 126 can match eol */
13564 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
13565 (yy_c_buf_p) = yy_cp -= 1;
13566 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
13568 #line 1846 "scanner.l"
13569 { // A::operator()<int>(int arg)
13570  lineCount();
13571  current->name += "()";
13572  BEGIN( FindMembers );
13573  }
13574  YY_BREAK
13575 case 127:
13576 /* rule 127 can match eol */
13577 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
13578 (yy_c_buf_p) = yy_cp -= 1;
13579 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
13581 #line 1851 "scanner.l"
13582 {
13583  lineCount();
13584  current->name += scannerYYtext ;
13586  BEGIN( FindMembers ) ;
13587  }
13588  YY_BREAK
13589 case 128:
13591 #line 1857 "scanner.l"
13592 { // can occur when importing members
13593  unput(';');
13594  BEGIN( FindMembers ) ;
13595  }
13596  YY_BREAK
13597 case 129:
13598 /* rule 129 can match eol */
13600 #line 1861 "scanner.l"
13601 {
13602  lineCount();
13603  current->name += *scannerYYtext ;
13604  }
13605  YY_BREAK
13606 case 130:
13608 #line 1865 "scanner.l"
13609 { /* skip guided templ specifiers */ }
13610  YY_BREAK
13611 case 131:
13613 #line 1866 "scanner.l"
13614 {
13616  unput(*scannerYYtext);
13617  BEGIN( FindMembers ) ;
13618  }
13619  YY_BREAK
13620 case 132:
13621 /* rule 132 can match eol */
13623 #line 1871 "scanner.l"
13624 { // generic is a C++/CLI extension
13625  lineCount();
13626  if (current->tArgLists==0)
13627  {
13630  }
13631  ArgumentList *al = new ArgumentList;
13632  //current->spec |= (scannerYYtext[0]=='g') ? Entry::Generic : Entry::Template;
13633  current->tArgLists->append(al);
13634  currentArgumentList = al;
13635  templateStr="<";
13639  BEGIN( ReadTempArgs );
13640  }
13641  YY_BREAK
13642 case 133:
13643 /* rule 133 can match eol */
13645 #line 1888 "scanner.l"
13646 { // namespace alias
13647  lineCount();
13648  BEGIN( NSAliasName );
13649  }
13650  YY_BREAK
13651 case 134:
13653 #line 1892 "scanner.l"
13654 {
13656  BEGIN( NSAliasArg );
13657  }
13658  YY_BREAK
13659 case 135:
13661 #line 1896 "scanner.l"
13662 {
13663  //printf("Inserting namespace alias %s::%s->%s\n",current_root->name.data(),aliasName.data(),scannerYYtext);
13664  //if (current_root->name.isEmpty())
13665  //{
13666  // TODO: namespace aliases are now treated as global entities
13667  // while they should be aware of the scope they are in
13669  //}
13670  //else
13671  //{
13672  // Doxygen::namespaceAliasDict.insert(current_root->name+"::"+aliasName,
13673  // new QCString(current_root->name+"::"+scannerYYtext));
13674  //}
13675  }
13676  YY_BREAK
13677 case 136:
13679 #line 1910 "scanner.l"
13680 {
13681  BEGIN( FindMembers );
13682  }
13683  YY_BREAK
13684 case 137:
13685 /* rule 137 can match eol */
13687 #line 1913 "scanner.l"
13688 {
13689  lineCount();
13691  BEGIN(PHPUseAs);
13692  }
13693  YY_BREAK
13694 case 138:
13695 /* rule 138 can match eol */
13697 #line 1918 "scanner.l"
13698 {
13699  lineCount();
13701  //printf("PHP: adding use relation: %s\n",current->name.data());
13703  // add a using declaraton
13706  current = new Entry(*current);
13707  // also add it as a using directive
13710  current = new Entry ;
13711  initEntry();
13712  aliasName.resize(0);
13713  }
13714  YY_BREAK
13715 case 139:
13716 /* rule 139 can match eol */
13718 #line 1934 "scanner.l"
13719 {
13720  lineCount();
13721  }
13722  YY_BREAK
13723 case 140:
13725 #line 1937 "scanner.l"
13726 {
13727  //printf("PHP: adding use as relation: %s->%s\n",scannerYYtext,aliasName.data());
13730  substitute(aliasName,"\\","::"))));
13731  aliasName.resize(0);
13732  }
13733  YY_BREAK
13734 case 141:
13736 #line 1944 "scanner.l"
13737 {
13738  if (*scannerYYtext==',')
13739  {
13740  BEGIN(PHPUse);
13741  }
13742  else
13743  {
13744  BEGIN(FindMembers);
13745  }
13746  }
13747  YY_BREAK
13748 case 142:
13749 /* rule 142 can match eol */
13751 #line 1954 "scanner.l"
13752 { // package import => add as a using directive
13753  lineCount();
13755  current->name=removeRedundantWhiteSpace(substitute(scope.left(scope.length()-1),".","::"));
13759  current = new Entry;
13760  initEntry();
13761  BEGIN(Using);
13762  }
13763  YY_BREAK
13764 case 143:
13765 /* rule 143 can match eol */
13767 #line 1965 "scanner.l"
13768 { // class import => add as a using declaration
13769  lineCount();
13770  QCString scope=scannerYYtext;
13773  if (insideD)
13774  {
13776  }
13777  else
13778  {
13779  //printf("import name = %s -> %s\n",scannerYYtext,current->name.data());
13781  }
13783  current = new Entry ;
13784  initEntry();
13785  BEGIN(Using);
13786  }
13787  YY_BREAK
13788 case 144:
13789 /* rule 144 can match eol */
13791 #line 1984 "scanner.l"
13792 {
13795  lineCount();
13796  BEGIN(Using);
13797  }
13798  YY_BREAK
13799 case 145:
13800 /* rule 145 can match eol */
13802 #line 1990 "scanner.l"
13804  YY_BREAK
13805 case 146:
13806 /* rule 146 can match eol */
13808 #line 1991 "scanner.l"
13809 {
13810  lineCount();
13816  previous = current;
13817  current = new Entry ;
13818  if (insideCS) /* Hack: in C# a using declaration and
13819  directive have the same syntax, so we
13820  also add it as a using directive here
13821  */
13822  {
13829  current = new Entry ;
13830  }
13831  initEntry();
13832  BEGIN(Using);
13833  }
13834  YY_BREAK
13835 case 147:
13837 #line 2016 "scanner.l"
13838 { // C++11 style template alias?
13839  BEGIN(UsingAlias);
13840  }
13841  YY_BREAK
13842 case 148:
13844 #line 2019 "scanner.l"
13845 {
13847  previous->type = "typedef "+previous->args;
13849  previous->args.resize(0);
13853  BEGIN(FindMembers);
13854  }
13855  YY_BREAK
13856 case 149:
13857 /* rule 149 can match eol */
13859 #line 2029 "scanner.l"
13860 {
13863  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
13864  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
13865  QCString indent;
13867  docBlock=indent;
13868  lineCount();
13869 
13870  docBlockTerm = ';';
13871  if (scannerYYtext[scannerYYleng-3]=='/')
13872  {
13874  BEGIN( DocLine );
13875  }
13876  else
13877  {
13879  BEGIN( DocBlock );
13880  }
13881  }
13882  YY_BREAK
13883 case 150:
13885 #line 2051 "scanner.l"
13886 {
13888  }
13889  YY_BREAK
13890 case 151:
13891 /* rule 151 can match eol */
13893 #line 2054 "scanner.l"
13894 {
13896  lineCount();
13897  }
13898  YY_BREAK
13899 case 152:
13901 #line 2058 "scanner.l"
13902 {
13903  previous->doc = current->doc;
13905  current->doc.resize(0);
13906  current->brief.resize(0);
13907  unput(';');
13908  BEGIN(UsingAlias);
13909  }
13910  YY_BREAK
13911 case 153:
13912 /* rule 153 can match eol */
13914 #line 2066 "scanner.l"
13919  current = new Entry ;
13920  initEntry();
13921  BEGIN(Using);
13922  }
13923  YY_BREAK
13924 case 154:
13926 #line 2074 "scanner.l"
13927 { BEGIN(FindMembers); }
13928  YY_BREAK
13929 case 155:
13930 /* rule 155 can match eol */
13932 #line 2075 "scanner.l"
13933 { // guided template decl
13935  addType( current );
13936  current->name=n.left(n.length()-2);
13937  }
13938  YY_BREAK
13939 case 156:
13940 /* rule 156 can match eol */
13941 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
13942 (yy_c_buf_p) = yy_cp -= 1;
13943 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
13945 #line 2080 "scanner.l"
13946 { // Note: this could be a return type!
13947  roundCount=0;
13948  sharpCount=0;
13949  lineCount();
13950  addType( current );
13953  //current->scopeSpec.resize(0);
13954  // currentTemplateSpec = &current->scopeSpec;
13955  if (nameIsOperator(current->name))
13956  BEGIN( Operator );
13957  else
13958  BEGIN( EndTemplate );
13959  }
13960  YY_BREAK
13961 case 157:
13962 /* rule 157 can match eol */
13963 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
13964 (yy_c_buf_p) = yy_cp -= 1;
13965 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
13967 #line 2094 "scanner.l"
13968 {
13969  sharpCount=0;
13970  roundCount=0;
13971  lineCount();
13973  //current->memberSpec.resize(0);
13974  // currentTemplateSpec = &current->memberSpec;
13975  if (nameIsOperator(current->name))
13976  BEGIN( Operator );
13977  else
13978  BEGIN( EndTemplate );
13979  }
13980  YY_BREAK
13981 case 158:
13983 #line 2106 "scanner.l"
13984 {
13985  if (!insidePHP)
13986  {
13987  REJECT;
13988  }
13989  else
13990  {
13992  BEGIN(HereDoc);
13993  }
13994  }
13995  YY_BREAK
13996 case 159:
13998 #line 2117 "scanner.l"
13999 {
14001  // *currentTemplateSpec+=scannerYYtext;
14002  }
14003  YY_BREAK
14004 case 160:
14006 #line 2121 "scanner.l"
14007 {
14008  if (roundCount==0)
14009  {
14010  // *currentTemplateSpec+='<';
14011  sharpCount++;
14012  }
14014  }
14015  YY_BREAK
14016 case 161:
14018 #line 2129 "scanner.l"
14019 {
14020  if (insideJava || insideCS || insideCli || roundCount==0)
14021  {
14022  unput('>');
14023  unput(' ');
14024  unput('>');
14025  }
14026  else
14027  {
14029  }
14030  // *currentTemplateSpec+=scannerYYtext;
14031  }
14032  YY_BREAK
14033 case 162:
14035 #line 2142 "scanner.l"
14036 {
14037  current->name+='>';
14038  // *currentTemplateSpec+='>';
14039  if (roundCount==0 && --sharpCount<=0)
14040  {
14041  //printf("Found %s\n",current->name.data());
14042  BEGIN(FindMembers);
14043  }
14044  }
14045  YY_BREAK
14046 case 163:
14047 /* rule 163 can match eol */
14049 #line 2151 "scanner.l"
14050 {
14051  lineCount();
14052  current->name+='>';
14053  // *currentTemplateSpec+='>';
14054  if (roundCount==0 && --sharpCount<=0)
14055  {
14057  current->args = "(";
14061  //printf("Found %s\n",current->name.data());
14062  BEGIN( ReadFuncArgType ) ;
14063  }
14064  }
14065  YY_BREAK
14066 case 164:
14067 /* rule 164 can match eol */
14069 #line 2166 "scanner.l"
14070 { // function pointer returning a template instance
14071  lineCount();
14072  current->name+='>';
14073  if (roundCount==0)
14074  {
14075  BEGIN(FindMembers);
14076  }
14077  }
14078  YY_BREAK
14079 case 165:
14080 /* rule 165 can match eol */
14081 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
14082 (yy_c_buf_p) = yy_cp -= 2;
14083 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
14085 #line 2174 "scanner.l"
14086 {
14087  lineCount();
14088  current->name+='>';
14089  // *currentTemplateSpec+='>';
14090  if (roundCount==0 && --sharpCount<=0)
14091  {
14093  }
14094  }
14095  YY_BREAK
14096 case 166:
14098 #line 2183 "scanner.l"
14100  roundCount++;
14101  }
14102  YY_BREAK
14103 case 167:
14105 #line 2186 "scanner.l"
14107  if (roundCount>0) roundCount--;
14108  }
14109  YY_BREAK
14110 case 168:
14112 #line 2189 "scanner.l"
14113 {
14115  // *currentTemplateSpec+=*scannerYYtext;
14116  }
14117  YY_BREAK
14118 case 169:
14119 /* rule 169 can match eol */
14121 #line 2193 "scanner.l"
14122 {
14123  if (insidePHP)
14124  {
14126  BEGIN( DefinePHP );
14127  }
14128  else
14129  REJECT;
14130  }
14131  YY_BREAK
14132 case 170:
14134 #line 2202 "scanner.l"
14135 { // PHP heredoc
14139  }
14140  YY_BREAK
14141 case 171:
14142 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
14143 (yy_c_buf_p) = yy_cp -= 1;
14144 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
14146 #line 2207 "scanner.l"
14147 { // PHP nowdoc
14148  g_delimiter = &scannerYYtext[1];
14151  }
14152  YY_BREAK
14153 case 172:
14155 #line 2212 "scanner.l"
14156 { // PHP heredoc
14158  BEGIN(HereDocEnd);
14159  }
14160  YY_BREAK
14161 case 173:
14162 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
14163 (yy_c_buf_p) = yy_cp -= 1;
14164 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
14166 #line 2216 "scanner.l"
14167 { // PHP nowdoc
14168  g_delimiter = &scannerYYtext[1];
14169  BEGIN(HereDocEnd);
14170  }
14171  YY_BREAK
14172 case 174:
14174 #line 2220 "scanner.l"
14175 { // id at start of the line could mark the end of the block
14176  if (g_delimiter==scannerYYtext) // it is the end marker
14177  {
14179  }
14180  }
14181  YY_BREAK
14182 case 175:
14184 #line 2226 "scanner.l"
14185 { }
14186  YY_BREAK
14187 case 176:
14189 #line 2227 "scanner.l"
14190 { // id at start of the line could mark the end of the block
14192  if (g_delimiter==scannerYYtext) // it is the end marker
14193  {
14195  }
14196  }
14197  YY_BREAK
14198 case 177:
14199 /* rule 177 can match eol */
14201 #line 2234 "scanner.l"
14202 {
14204  }
14205  YY_BREAK
14206 case 178:
14208 #line 2237 "scanner.l"
14209 {
14211  }
14212  YY_BREAK
14213 case 179:
14215 #line 2240 "scanner.l"
14216 { // Qt object macro
14217  }
14218  YY_BREAK
14219 case 180:
14221 #line 2242 "scanner.l"
14222 { // Qt property declaration
14223  current->protection = Public ; // see bug734245 & bug735462
14224  current->mtype = mtype = Property;
14225  current->type.resize(0);
14226  BEGIN(QtPropType);
14227  }
14228  YY_BREAK
14229 case 181:
14231 #line 2248 "scanner.l"
14232 { // start of property arguments
14233  }
14234  YY_BREAK
14235 case 182:
14237 #line 2250 "scanner.l"
14238 { // end of property arguments
14239  unput(';');
14240  BEGIN(FindMembers);
14241  }
14242  YY_BREAK
14243 case 183:
14245 #line 2254 "scanner.l"
14246 {
14248  }
14249  YY_BREAK
14250 case 184:
14252 #line 2257 "scanner.l"
14253 {
14255  }
14256  YY_BREAK
14257 case 185:
14259 #line 2260 "scanner.l"
14260 {
14262  BEGIN(QtPropName);
14263  }
14264  YY_BREAK
14265 case 186:
14267 #line 2264 "scanner.l"
14268 {
14270  BEGIN(QtPropAttr);
14271  }
14272  YY_BREAK
14273 case 187:
14275 #line 2268 "scanner.l"
14276 {
14278  BEGIN(QtPropRead);
14279  }
14280  YY_BREAK
14281 case 188:
14283 #line 2272 "scanner.l"
14284 {
14286  BEGIN(QtPropWrite);
14287  }
14288  YY_BREAK
14289 case 189:
14291 #line 2276 "scanner.l"
14292 { // reset method => not supported yet
14293  }
14294  YY_BREAK
14295 case 190:
14297 #line 2278 "scanner.l"
14298 { // scriptable property => not supported yet
14299  }
14300  YY_BREAK
14301 case 191:
14303 #line 2280 "scanner.l"
14304 { // designable property => not supported yet
14305  }
14306  YY_BREAK
14307 case 192:
14309 #line 2282 "scanner.l"
14310 {
14312  BEGIN(QtPropAttr);
14313  }
14314  YY_BREAK
14315 case 193:
14317 #line 2286 "scanner.l"
14318 {
14320  BEGIN(QtPropAttr);
14321  }
14322  YY_BREAK
14323 case 194:
14324 /* rule 194 can match eol */
14326 #line 2290 "scanner.l"
14327 {
14329  BEGIN(FindMembers);
14330  }
14331  YY_BREAK
14332 case 195:
14333 /* rule 195 can match eol */
14335 #line 2294 "scanner.l"
14336 {
14337  if (insideCpp || insideObjC)
14338  {
14340  }
14343  lineCount();
14344  if (insideIDL && scannerYYleng==9 && qstrcmp(scannerYYtext,"cpp_quote")==0)
14345  {
14346  BEGIN(CppQuote);
14347  }
14348  else if ((insideIDL || insideJava || insideD) && scannerYYleng==6 && qstrcmp(scannerYYtext,"import")==0)
14349  {
14350  if (insideIDL)
14351  BEGIN(NextSemi);
14352  else // insideJava or insideD
14353  BEGIN(JavaImport);
14354  }
14355  else if (insidePHP && qstrcmp(scannerYYtext,"use")==0)
14356  {
14357  BEGIN(PHPUse);
14358  }
14359  else if (insideJava && qstrcmp(scannerYYtext,"package")==0)
14360  {
14361  lineCount();
14362  BEGIN(PackageName);
14363  }
14364  else if (insideIDL && qstrcmp(scannerYYtext,"case")==0)
14365  {
14367  }
14368  else if (insideTryBlock && qstrcmp(scannerYYtext,"catch")==0)
14369  {
14372  }
14373  else if (insideCpp && qstrcmp(scannerYYtext,"alignas")==0)
14374  {
14376  BEGIN(AlignAs);
14377  }
14378  else if (insideJS && qstrcmp(scannerYYtext,"var")==0)
14379  { // javascript variable
14380  current->type="var";
14381  }
14382  else if (insideJS && qstrcmp(scannerYYtext,"function")==0)
14383  { // javascript function
14384  current->type="function";
14385  }
14386  else if (insideCS && qstrcmp(scannerYYtext,"this")==0)
14387  {
14388  // C# indexer
14389  addType( current ) ;
14390  current->name="this";
14391  BEGIN(CSIndexer);
14392  }
14393  else if (insideCpp && qstrcmp(scannerYYtext,"static_assert")==0)
14394  {
14395  // C++11 static_assert
14397  }
14398  else if (insideCpp && qstrcmp(scannerYYtext,"decltype")==0)
14399  {
14400  // C++11 decltype(x)
14402  BEGIN(DeclType);
14403  }
14404  else
14405  {
14406  if (YY_START==FindMembers)
14407  {
14408  addType( current ) ;
14409  }
14410  bool javaLike = insideJava || insideCS || insideD || insidePHP || insideJS;
14411  if (javaLike && qstrcmp(scannerYYtext,"public")==0)
14412  {
14414  }
14415  else if (javaLike && qstrcmp(scannerYYtext,"protected")==0)
14416  {
14418  }
14419  else if (javaLike && qstrcmp(scannerYYtext,"internal")==0)
14420  {
14422  }
14423  else if (javaLike && qstrcmp(scannerYYtext,"private")==0)
14424  {
14426  }
14427  else if (javaLike && qstrcmp(scannerYYtext,"static")==0)
14428  {
14429  if (YY_START==FindMembers)
14431  else
14433  current->stat = TRUE;
14434  }
14435  else
14436  {
14437  if (YY_START==FindMembers)
14439  else
14441  if (current->name.left(7)=="static ")
14442  {
14443  current->stat = TRUE;
14444  current->name= current->name.mid(7);
14445  }
14446  else if (current->name.left(7)=="inline ")
14447  {
14448  if (current->type.isEmpty())
14449  {
14450  current->type="inline";
14451  }
14452  else
14453  {
14454  current->type+="inline ";
14455  }
14456  current->name= current->name.mid(7);
14457  }
14458  else if (current->name.left(6)=="const ")
14459  {
14460  if (current->type.isEmpty())
14461  {
14462  current->type="const";
14463  }
14464  else
14465  {
14466  current->type+="const ";
14467  }
14468  current->name=current->name.mid(6);
14469  }
14470  }
14472  if (nameIsOperator(tmp))
14473  {
14474  BEGIN( Operator );
14475  }
14476  else
14477  {
14478  externC=FALSE; // see bug759247
14479  BEGIN(FindMembers);
14480  }
14481  }
14482  }
14483  YY_BREAK
14484 case 196:
14486 #line 2441 "scanner.l"
14487 {
14489  roundCount=0;
14490  BEGIN(SkipRound);
14491  }
14492  YY_BREAK
14493 case 197:
14494 /* rule 197 can match eol */
14496 #line 2446 "scanner.l"
14497 { lineCount(); }
14498  YY_BREAK
14499 case 198:
14501 #line 2447 "scanner.l"
14502 { // variable with static_assert as name?
14503  unput(*scannerYYtext);
14504  BEGIN(FindMembers);
14505  }
14506  YY_BREAK
14507 case 199:
14509 #line 2451 "scanner.l"
14510 {
14514  roundCount=0;
14515  BEGIN(CopyRound);
14516  }
14517  YY_BREAK
14518 case 200:
14519 /* rule 200 can match eol */
14521 #line 2458 "scanner.l"
14522 { lineCount(); }
14523  YY_BREAK
14524 case 201:
14526 #line 2459 "scanner.l"
14527 {
14528  unput(*scannerYYtext);
14529  BEGIN(FindMembers);
14530  }
14531  YY_BREAK
14532 case 202:
14534 #line 2463 "scanner.l"
14535 {
14537  BEGIN(FindMembers);
14538  }
14539  YY_BREAK
14540 case 203:
14542 #line 2467 "scanner.l"
14543 { // some number where we did not expect one
14544  }
14545  YY_BREAK
14546 case 204:
14548 #line 2469 "scanner.l"
14549 {
14550  if (insideJava || insideCS || insideD)
14551  {
14552  current->name+=".";
14553  }
14554  }
14555  YY_BREAK
14556 case 205:
14558 #line 2475 "scanner.l"
14559 {
14561  }
14562  YY_BREAK
14563 case 206:
14565 #line 2478 "scanner.l"
14566 {
14568  BEGIN(FindMembers);
14569  }
14570  YY_BREAK
14571 case 207:
14573 #line 2482 "scanner.l"
14574 
14575  YY_BREAK
14576 case 208:
14578 #line 2483 "scanner.l"
14579 { BEGIN(FindMembers); }
14580  YY_BREAK
14581 case 209:
14582 /* rule 209 can match eol */
14584 #line 2484 "scanner.l"
14585 { lineCount(); }
14586  YY_BREAK
14587 case 210:
14589 #line 2485 "scanner.l"
14590 
14591  YY_BREAK
14592 case 211:
14593 /* rule 211 can match eol */
14595 #line 2486 "scanner.l"
14596 { lineCount(); }
14597  YY_BREAK
14598 case 212:
14600 #line 2487 "scanner.l"
14601 {
14602  curlyCount=0;
14604  BEGIN( SkipCurly );
14605  }
14606  YY_BREAK
14607 case 213:
14609 #line 2492 "scanner.l"
14610 
14611  YY_BREAK
14612 case 214:
14613 /* rule 214 can match eol */
14615 #line 2493 "scanner.l"
14616 { lineCount(); BEGIN(TryFunctionBlock); // {BN}* added to fix bug 611193
14617  }
14618  YY_BREAK
14619 case 215:
14620 /* rule 215 can match eol */
14622 #line 2495 "scanner.l"
14623 { unput(*scannerYYtext); // rule added to fix bug id 601138
14624  BEGIN( FindMembers );
14625  }
14626  YY_BREAK
14627 case 216:
14629 #line 2498 "scanner.l"
14630 { unput(*scannerYYtext);
14631  BEGIN( FindMembers );
14632  }
14633  YY_BREAK
14634 case 217:
14636 #line 2501 "scanner.l"
14637 {
14639  BEGIN(FindMembers);
14640  }
14641  YY_BREAK
14642 case 218:
14644 #line 2505 "scanner.l"
14645 { if (insidePHP)
14646  REJECT;
14648  BEGIN( SkipCPP ) ;
14649  }
14650  YY_BREAK
14651 case 219:
14653 #line 2510 "scanner.l"
14654 {
14655  if (insidePHP)
14656  REJECT;
14659  BEGIN( Define );
14660  }
14661  YY_BREAK
14662 case 220:
14663 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
14664 (yy_c_buf_p) = yy_cp -= 1;
14665 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
14667 #line 2517 "scanner.l"
14668 { /* line control directive */
14669  yyLineNr = atoi(&scannerYYtext[1]);
14670  //printf("setting line number to %d\n",yyLineNr);
14672  if (YY_START==ReadBody ||
14673  YY_START==ReadNSBody ||
14675  {
14677  }
14678  BEGIN( PreLineCtrl );
14679  }
14680  YY_BREAK
14681 case 221:
14683 #line 2529 "scanner.l"
14684 {
14689  {
14691  }
14692  }
14693  YY_BREAK
14694 case 222:
14696 #line 2538 "scanner.l"
14697 {
14701  {
14703  }
14704  }
14705  YY_BREAK
14706 case 223:
14707 /* rule 223 can match eol */
14709 #line 2546 "scanner.l"
14710 {
14714  {
14716  }
14717  lineCount();
14719  }
14720  YY_BREAK
14721 case 224:
14723 #line 2556 "scanner.l"
14724 
14725  YY_BREAK
14726 case 225:
14727 /* rule 225 can match eol */
14729 #line 2557 "scanner.l"
14730 { lineCount(); }
14731  YY_BREAK
14732 case 226:
14733 /* rule 226 can match eol */
14735 #line 2558 "scanner.l"
14736 { lineCount();
14737  BEGIN( lastCPPContext) ;
14738  }
14739  YY_BREAK
14740 case 227:
14742 #line 2561 "scanner.l"
14743 {
14745  current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
14746  current->args = "(";
14751  BEGIN( ReadFuncArgType ) ;
14752  }
14753  YY_BREAK
14754 /*
14755 <DefineArg>")" {
14756  //printf("Define with args\n");
14757  current->args += ')';
14758  BEGIN( DefineEnd );
14759  }
14760 <DefineArg>. {
14761  current->args += *scannerYYtext;
14762  }
14763  */
14764 case 228:
14766 #line 2581 "scanner.l"
14767 {
14768  //printf("Define `%s' without args\n",scannerYYtext);
14769  if (insideCpp || insideObjC)
14770  {
14772  }
14775  BEGIN(DefineEnd);
14776  }
14777  YY_BREAK
14778 case 229:
14779 /* rule 229 can match eol */
14781 #line 2591 "scanner.l"
14782 {
14783  //printf("End define: doc=%s docFile=%s docLine=%d\n",current->doc.data(),current->docFile.data(),current->docLine);
14784  lineCount();
14788  current->type.resize(0);
14793  current = new Entry ;
14794  initEntry();
14796  }
14797  YY_BREAK
14798 case 230:
14800 #line 2606 "scanner.l"
14801 {
14802  //printf("End define\n");
14806  current->type.resize(0);
14807  current->type = "const";
14809  init = init.simplifyWhiteSpace();
14810  init = init.left(init.length()-1);
14815  current = new Entry ;
14816  initEntry();
14817  BEGIN(FindMembers);
14818  }
14819  YY_BREAK
14820 case 231:
14822 #line 2624 "scanner.l"
14823 
14824  YY_BREAK
14825 case 232:
14826 /* rule 232 can match eol */
14828 #line 2625 "scanner.l"
14829 {
14830  lineCount();
14831  }
14832  YY_BREAK
14833 case 233:
14835 #line 2628 "scanner.l"
14836 {
14837  if (insideIDL && insideCppQuote)
14838  {
14839  BEGIN(EndCppQuote);
14840  }
14841  else
14842  {
14844  BEGIN(SkipString);
14845  }
14846  }
14847  YY_BREAK
14848 case 234:
14850 #line 2639 "scanner.l"
14851 
14852  YY_BREAK
14853 case 235:
14854 /* rule 235 can match eol */
14856 #line 2640 "scanner.l"
14857 {
14860  current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
14865  roundCount = 0;
14866  BEGIN( GCopyRound );
14867  }
14868  YY_BREAK
14869 case 236:
14871 #line 2652 "scanner.l"
14872 { // ^ and % are C++/CLI extensions
14873  if (insideCli)
14874  {
14875  addType( current );
14876  current->name = scannerYYtext ;
14877  }
14878  else
14879  {
14880  REJECT;
14881  }
14882  }
14883  YY_BREAK
14884 case 237:
14886 #line 2663 "scanner.l"
14887 {
14888  current->name += scannerYYtext ;
14889  addType( current );
14890  }
14891  YY_BREAK
14892 case 238:
14893 /* rule 238 can match eol */
14895 #line 2667 "scanner.l"
14896 {
14897  if (current->bodyLine==-1)
14898  {
14900  }
14903  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
14904  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
14905 
14906  QCString indent;
14908  docBlock=indent;
14909  //printf("indent=%d\n",computeIndent(scannerYYtext+1,g_column));
14910  lineCount();
14911 
14912  docBlockTerm = ';';
14914  {
14915  current->bitfields = ":"+current->args;
14916  current->args.resize(0);
14918  }
14919  if (scannerYYtext[scannerYYleng-3]=='/')
14920  {
14922  BEGIN( DocLine );
14923  }
14924  else
14925  {
14927  BEGIN( DocBlock );
14928  }
14929  }
14930  YY_BREAK
14931 case 239:
14932 /* rule 239 can match eol */
14934 #line 2701 "scanner.l"
14935 {
14938  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
14939  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
14940 
14941  QCString indent;
14943  docBlock=indent;
14944  lineCount();
14945 
14946  docBlockTerm = ',';
14948  {
14949  current->bitfields = ":"+current->args;
14950  current->args.resize(0);
14952  }
14953  if (scannerYYtext[scannerYYleng-3]=='/')
14954  {
14956  BEGIN( DocLine );
14957  }
14958  else
14959  {
14961  BEGIN( DocBlock );
14962  }
14963  }
14964  YY_BREAK
14965 case 240:
14966 /* rule 240 can match eol */
14968 #line 2730 "scanner.l"
14969 {
14970  if (current->bodyLine==-1)
14971  {
14973  }
14976  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
14977  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
14978  QCString indent;
14980  docBlock=indent;
14981  lineCount();
14982 
14983  docBlockTerm = 0;
14984  if (scannerYYtext[scannerYYleng-3]=='/')
14985  {
14987  BEGIN( DocLine );
14988  }
14989  else
14990  {
14992  BEGIN( DocBlock );
14993  }
14994  }
14995  YY_BREAK
14996 case 241:
14998 #line 2757 "scanner.l"
14999 {
15000  //handleGroupStartCommand(current->name);
15002  {
15003  // link open command to the group defined in the previous entry
15005  }
15006  else
15007  {
15008  // link open command to the current entry
15010  }
15011  //current = tmp;
15012  initEntry();
15013  if (scannerYYtext[1]=='/')
15014  {
15015  if (scannerYYtext[2]=='!' || scannerYYtext[2]=='/')
15016  {
15020  docBlock.resize(0);
15021  docBlockTerm = 0;
15023  BEGIN(DocLine);
15024  }
15025  else
15026  {
15029  }
15030  }
15031  else
15032  {
15033  if (scannerYYtext[2]=='!' || scannerYYtext[2]=='*')
15034  {
15037  docBlock.resize(0);
15038  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
15039  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
15040  docBlockTerm = 0;
15042  BEGIN(DocBlock);
15043  }
15044  else
15045  {
15047  BEGIN(SkipComment);
15048  }
15049  }
15050  }
15051  YY_BREAK
15052 case 242:
15053 /* rule 242 can match eol */
15055 #line 2809 "scanner.l"
15056 {
15057  bool insideEnum = YY_START==FindFields || (YY_START==ReadInitializer && lastInitializerContext==FindFields); // see bug746226
15058  closeGroup(current,yyFileName,yyLineNr,insideEnum);
15059  }
15060  YY_BREAK
15061 case 243:
15063 #line 2813 "scanner.l"
15064 { // in PHP code this could also be due to "<?="
15068  initBracketCount=0;
15070  }
15071  YY_BREAK
15072 case 244:
15073 /* rule 244 can match eol */
15075 #line 2820 "scanner.l"
15076 {
15077  lineCount();
15078  current->exception += " ";
15080  }
15081  YY_BREAK
15082 case 245:
15084 #line 2825 "scanner.l"
15085 {
15086  current->exception += " }";
15087  BEGIN(FindMembers);
15088  }
15089  YY_BREAK
15090 /* Read initializer rules */
15091 case 246:
15093 #line 2830 "scanner.l"
15094 {
15097  roundCount=0;
15099  BEGIN(GCopyRound);
15100  }
15101  YY_BREAK
15102 case 247:
15104 #line 2837 "scanner.l"
15105 {
15108  curlyCount=0;
15110  BEGIN(GCopyCurly);
15111  }
15112  YY_BREAK
15113 case 248:
15115 #line 2844 "scanner.l"
15116 {
15117  //printf(">> initializer `%s' <<\n",current->initializer.data());
15118  if (*scannerYYtext==';' && (current_root->spec&Entry::Enum))
15119  {
15127  current = new Entry;
15128  initEntry();
15129  BEGIN(FindMembers);
15130  }
15131  else if (*scannerYYtext==';' || (lastInitializerContext==FindFields && initBracketCount==0)) // initBracketCount==0 was added for bug 665778
15132  {
15133  unput(*scannerYYtext);
15135  }
15136  else if (*scannerYYtext==',' && initBracketCount==0) // for "int a=0,b=0"
15137  {
15138  unput(*scannerYYtext);
15140  }
15141  else
15142  {
15144  }
15145  }
15146  YY_BREAK
15147 case 249:
15148 /* rule 249 can match eol */
15150 #line 2874 "scanner.l"
15151 { // C++11 raw string
15152  if (!insideCpp)
15153  {
15154  REJECT;
15155  }
15156  else
15157  {
15158  QCString text=scannerYYtext;
15159  current->initializer+=text;
15160  int i=text.find('"');
15161  g_delimiter = scannerYYtext+i+1;
15165  BEGIN(RawGString);
15166  //printf("RawGString delimiter='%s'\n",delimiter.data());
15167  }
15168  }
15169  YY_BREAK
15170 case 250:
15171 /* rule 250 can match eol */
15173 #line 2892 "scanner.l"
15174 {
15176  QCString delimiter = scannerYYtext+1;
15177  delimiter=delimiter.left(delimiter.length()-1);
15178  if (delimiter==g_delimiter)
15179  {
15181  }
15182  }
15183  YY_BREAK
15184 case 251:
15186 #line 2901 "scanner.l"
15187 {
15189  }
15190  YY_BREAK
15191 case 252:
15193 #line 2904 "scanner.l"
15194 {
15196  }
15197  YY_BREAK
15198 case 253:
15199 /* rule 253 can match eol */
15201 #line 2907 "scanner.l"
15202 {
15204  lineCount();
15205  }
15206  YY_BREAK
15207 case 254:
15208 /* rule 254 can match eol */
15210 #line 2911 "scanner.l"
15211 {
15214  QCString delimiter = scannerYYtext+1;
15215  delimiter=delimiter.left(delimiter.length()-1);
15216  if (delimiter==g_delimiter)
15217  {
15219  }
15220  }
15221  YY_BREAK
15222 case 255:
15223 /* rule 255 can match eol */
15225 #line 2921 "scanner.l"
15226 {
15229  }
15230  YY_BREAK
15231 case 256:
15233 #line 2925 "scanner.l"
15234 {
15237  }
15238  YY_BREAK
15239 case 257:
15240 /* rule 257 can match eol */
15242 #line 2929 "scanner.l"
15243 {
15246  lineCount();
15247  }
15248  YY_BREAK
15249 case 258:
15251 #line 2934 "scanner.l"
15252 {
15253  if (insideIDL && insideCppQuote)
15254  {
15255  BEGIN(EndCppQuote);
15256  }
15257  else
15258  {
15262  BEGIN(CopyGString);
15263  }
15264  }
15265  YY_BREAK
15266 case 259:
15268 #line 2947 "scanner.l"
15269 {
15271  }
15272  YY_BREAK
15273 case 260:
15275 #line 2950 "scanner.l"
15276 {
15278  }
15279  YY_BREAK
15280 case 261:
15282 #line 2953 "scanner.l"
15283 {
15285  }
15286  YY_BREAK
15287 case 262:
15289 #line 2956 "scanner.l"
15290 {
15291  initBracketCount++;
15293  }
15294  YY_BREAK
15295 case 263:
15297 #line 2960 "scanner.l"
15298 {
15299  initBracketCount--;
15301  }
15302  YY_BREAK
15303 case 264:
15305 #line 2964 "scanner.l"
15306 {
15307  if (insidePHP)
15308  {
15313  }
15314  else
15315  {
15317  }
15318  }
15319  YY_BREAK
15320 case 265:
15322 #line 2977 "scanner.l"
15323 {
15324  if (insidePHP)
15325  {
15326  REJECT;
15327  }
15328  else
15329  {
15331  }
15332  }
15333  YY_BREAK
15334 case 266:
15335 /* rule 266 can match eol */
15337 #line 2987 "scanner.l"
15338 {
15340  lineCount();
15341  }
15342  YY_BREAK
15343 case 267:
15345 #line 2991 "scanner.l"
15346 {
15347  //printf("insideCS=%d\n",insideCS);
15349  if (!insideCS && !insideObjC)
15350  {
15351  REJECT;
15352  }
15353  else
15354  {
15355  // C#/ObjC verbatim string
15359  }
15360  }
15361  YY_BREAK
15362 case 268:
15364 #line 3006 "scanner.l"
15365 {
15367  }
15368  YY_BREAK
15369 case 269:
15371 #line 3009 "scanner.l"
15372 { // quote escape
15374  }
15375  YY_BREAK
15376 case 270:
15378 #line 3012 "scanner.l"
15379 {
15382  }
15383  YY_BREAK
15384 case 271:
15385 /* rule 271 can match eol */
15387 #line 3016 "scanner.l"
15388 {
15390  lineCount();
15391  }
15392  YY_BREAK
15393 case 272:
15395 #line 3020 "scanner.l"
15396 {
15398  }
15399  YY_BREAK
15400 case 273:
15402 #line 3023 "scanner.l"
15403 {
15404  if (insidePHP)
15405  BEGIN( FindMembersPHP );
15406  else
15408  }
15409  YY_BREAK
15410 case 274:
15412 #line 3029 "scanner.l"
15413 {
15415  }
15416  YY_BREAK
15417 /* generic quoted string copy rules */
15418 case 275:
15420 #line 3034 "scanner.l"
15421 {
15423  }
15424  YY_BREAK
15425 case 276:
15427 #line 3037 "scanner.l"
15428 {
15431  }
15432  YY_BREAK
15433 case 277:
15435 #line 3041 "scanner.l"
15436 {
15439  }
15440  YY_BREAK
15441 case 278:
15443 #line 3045 "scanner.l"
15444 {
15446  }
15447  YY_BREAK
15448 case 279:
15449 /* rule 279 can match eol */
15451 #line 3048 "scanner.l"
15452 {
15454  lineCount();
15455  }
15456  YY_BREAK
15457 case 280:
15459 #line 3052 "scanner.l"
15460 {
15462  }
15463  YY_BREAK
15464 /* generic quoted growable string copy rules */
15465 case 281:
15467 #line 3057 "scanner.l"
15468 {
15470  }
15471  YY_BREAK
15472 case 282:
15474 #line 3060 "scanner.l"
15475 {
15478  }
15479  YY_BREAK
15480 case 283:
15482 #line 3064 "scanner.l"
15483 {
15486  }
15487  YY_BREAK
15488 case 284:
15490 #line 3068 "scanner.l"
15491 {
15493  }
15494  YY_BREAK
15495 case 285:
15496 /* rule 285 can match eol */
15498 #line 3071 "scanner.l"
15499 {
15501  lineCount();
15502  }
15503  YY_BREAK
15504 case 286:
15506 #line 3075 "scanner.l"
15507 {
15509  }
15510  YY_BREAK
15511 /* generic round bracket list copy rules */
15512 case 287:
15514 #line 3080 "scanner.l"
15515 {
15519  BEGIN(CopyString);
15520  }
15521  YY_BREAK
15522 case 288:
15524 #line 3086 "scanner.l"
15525 {
15527  roundCount++;
15528  }
15529  YY_BREAK
15530 case 289:
15532 #line 3090 "scanner.l"
15533 {
15535  if (--roundCount<0)
15537  }
15538  YY_BREAK
15539 case 290:
15540 /* rule 290 can match eol */
15542 #line 3095 "scanner.l"
15543 {
15544  lineCount();
15546  }
15547  YY_BREAK
15548 case 291:
15550 #line 3099 "scanner.l"
15551 {
15552  if (insidePHP)
15553  {
15558  }
15559  else
15560  {
15562  }
15563  }
15564  YY_BREAK
15565 case 292:
15567 #line 3112 "scanner.l"
15568 {
15569  if (insidePHP)
15570  {
15571  REJECT;
15572  }
15573  else
15574  {
15576  }
15577  }
15578  YY_BREAK
15579 case 293:
15581 #line 3122 "scanner.l"
15582 {
15584  }
15585  YY_BREAK
15586 case 294:
15588 #line 3125 "scanner.l"
15589 {
15591  }
15592  YY_BREAK
15593 /* generic round bracket list copy rules for growable strings */
15594 case 295:
15596 #line 3130 "scanner.l"
15597 {
15601  BEGIN(CopyGString);
15602  }
15603  YY_BREAK
15604 case 296:
15606 #line 3136 "scanner.l"
15607 {
15609  roundCount++;
15610  }
15611  YY_BREAK
15612 case 297:
15614 #line 3140 "scanner.l"
15615 {
15617  if (--roundCount<0)
15619  }
15620  YY_BREAK
15621 case 298:
15622 /* rule 298 can match eol */
15624 #line 3145 "scanner.l"
15625 {
15626  lineCount();
15628  }
15629  YY_BREAK
15630 case 299:
15632 #line 3149 "scanner.l"
15633 {
15634  if (insidePHP)
15635  {
15640  }
15641  else
15642  {
15644  }
15645  }
15646  YY_BREAK
15647 case 300:
15649 #line 3162 "scanner.l"
15650 {
15651  if (insidePHP)
15652  {
15653  REJECT;
15654  }
15655  else
15656  {
15658  }
15659  }
15660  YY_BREAK
15661 case 301:
15663 #line 3172 "scanner.l"
15664 {
15666  }
15667  YY_BREAK
15668 case 302:
15670 #line 3175 "scanner.l"
15671 {
15673  }
15674  YY_BREAK
15675 /* generic curly bracket list copy rules */
15676 case 303:
15678 #line 3180 "scanner.l"
15679 {
15683  BEGIN(CopyString);
15684  }
15685  YY_BREAK
15686 case 304:
15688 #line 3186 "scanner.l"
15689 {
15691  if (insidePHP)
15692  {
15696  }
15697  }
15698  YY_BREAK
15699 case 305:
15701 #line 3195 "scanner.l"
15702 {
15704  curlyCount++;
15705  }
15706  YY_BREAK
15707 case 306:
15709 #line 3199 "scanner.l"
15710 {
15712  if (--curlyCount<0)
15714  }
15715  YY_BREAK
15716 case 307:
15718 #line 3204 "scanner.l"
15719 { if (insidePHP)
15720  {
15721  REJECT;
15722  }
15723  else
15724  {
15726  }
15727  }
15728  YY_BREAK
15729 case 308:
15731 #line 3213 "scanner.l"
15732 {
15734  }
15735  YY_BREAK
15736 case 309:
15738 #line 3216 "scanner.l"
15740  YY_BREAK
15741 case 310:
15742 /* rule 310 can match eol */
15744 #line 3217 "scanner.l"
15745 {
15746  lineCount();
15748  }
15749  YY_BREAK
15750 case 311:
15752 #line 3221 "scanner.l"
15753 {
15755  }
15756  YY_BREAK
15757 /* generic curly bracket list copy rules for growable strings */
15758 case 312:
15759 /* rule 312 can match eol */
15761 #line 3226 "scanner.l"
15762 { // start of included file marker
15763  }
15764  YY_BREAK
15765 case 313:
15766 /* rule 313 can match eol */
15768 #line 3228 "scanner.l"
15769 { // end of included file marker
15771  int s = line.find(' ');
15772  int e = line.find('"',s);
15773  yyLineNr = line.mid(s,e-s).toInt();
15774  if (scannerYYtext[scannerYYleng-1]=='\n')
15775  {
15776  lineCount();
15777  g_column=0;
15778  }
15779  }
15780  YY_BREAK
15781 case 314:
15783 #line 3239 "scanner.l"
15784 {
15788  BEGIN(CopyGString);
15789  }
15790  YY_BREAK
15791 case 315:
15793 #line 3245 "scanner.l"
15794 {
15796  if (insidePHP)
15797  {
15801  }
15802  }
15803  YY_BREAK
15804 case 316:
15806 #line 3254 "scanner.l"
15807 {
15809  curlyCount++;
15810  }
15811  YY_BREAK
15812 case 317:
15814 #line 3258 "scanner.l"
15815 {
15817  if (--curlyCount<0)
15819  }
15820  YY_BREAK
15821 case 318:
15823 #line 3263 "scanner.l"
15824 { if (insidePHP)
15825  {
15826  REJECT;
15827  }
15828  else
15829  {
15831  }
15832  }
15833  YY_BREAK
15834 case 319:
15836 #line 3272 "scanner.l"
15837 {
15839  }
15840  YY_BREAK
15841 case 320:
15843 #line 3275 "scanner.l"
15844 {
15846  }
15847  YY_BREAK
15848 case 321:
15850 #line 3278 "scanner.l"
15852  YY_BREAK
15853 case 322:
15854 /* rule 322 can match eol */
15856 #line 3279 "scanner.l"
15857 {
15858  lineCount();
15860  }
15861  YY_BREAK
15862 case 323:
15864 #line 3283 "scanner.l"
15865 {
15867  }
15868  YY_BREAK
15869 /* ---------------------- */
15870 case 324:
15872 #line 3290 "scanner.l"
15873 {
15874  if (current->type.isEmpty() &&
15875  current->name=="enum") // see bug 69041, C++11 style anon enum: 'enum : unsigned int {...}'
15876  {
15878  current->name.resize(0);
15879  current->args.resize(0);
15881  }
15882  else
15883  {
15884  if (current->type.isEmpty()) // anonymous padding field, e.g. "int :7;"
15885  {
15886  addType(current);
15887  current->name.sprintf("__pad%d__",padCount++);
15888  }
15889  BEGIN(BitFields);
15890  current->bitfields+=":";
15891  }
15892  }
15893  YY_BREAK
15894 case 325:
15896 #line 3310 "scanner.l"
15897 {
15899  }
15900  YY_BREAK
15901 case 326:
15903 #line 3313 "scanner.l"
15904 {
15906  }
15907  YY_BREAK
15908 case 327:
15909 /* rule 327 can match eol */
15911 #line 3316 "scanner.l"
15912 {
15913  lineCount();
15914  current->args+=' ';
15915  }
15916  YY_BREAK
15917 case 328:
15919 #line 3320 "scanner.l"
15920 {
15921  QCString oldType = current->type;
15922  if (current->bodyLine==-1)
15923  {
15925  }
15926  if ( insidePHP && current->type.left(3) == "var" )
15927  {
15928  current->type = current->type.mid(3);
15929  }
15930  if (isTypedef && current->type.left(8)!="typedef ")
15931  {
15932  current->type.prepend("typedef ");
15933  }
15934  bool needNewCurrent=FALSE;
15936  {
15940  if (current->section==Entry::CLASS_SEC) // remove spec for "struct Bla bla;"
15941  {
15942  current->spec = 0;
15943  }
15949  needNewCurrent=TRUE;
15950  }
15951  if ( *scannerYYtext == ',')
15952  {
15953  bool stat = current->stat;
15954  if (needNewCurrent)
15955  {
15956  current = new Entry(*current);
15957  initEntry();
15958  }
15959  current->stat = stat; // the static attribute holds for all variables
15960  current->name.resize(0);
15961  current->args.resize(0);
15962  current->brief.resize(0);
15963  current->doc.resize(0);
15965  current->bitfields.resize(0);
15966  int i=oldType.length();
15967  while (i>0 && (oldType[i-1]=='*' || oldType[i-1]=='&' || oldType[i-1]==' ')) i--;
15968  current->type = oldType.left(i);
15969  }
15970  else
15971  {
15972  mtype = Method;
15973  virt = Normal;
15974  if (needNewCurrent)
15975  {
15976  current = new Entry ;
15977  }
15978  else if (current->groups)
15979  {
15980  current->groups->clear();
15981  }
15982  initEntry();
15983  }
15984  }
15985  YY_BREAK
15986 case 329:
15988 #line 3386 "scanner.l"
15989 {
15990  if (!insideCS &&
15991  (current->name.isEmpty() ||
15992  current->name=="typedef"
15993  )
15994  ) // IDL function property
15995  {
15996  squareCount=1;
15998  idlAttr.resize(0);
15999  idlProp.resize(0);
16000  current->mtype = mtype;
16001 
16002  if (Config_getBool("IDL_PROPERTY_SUPPORT") &&
16003  current->mtype == Property)
16004  { // we are inside the properties section of a dispinterface
16005  odlProp = true;
16008  }
16009 
16010  BEGIN( IDLAttribute );
16011  }
16012  else if (insideCS &&
16013  current->name.isEmpty())
16014  {
16015  squareCount=1;
16017  // Skip the C# attribute
16018  // for this member
16019  current->args.resize(0);
16020  BEGIN( SkipSquare );
16021  }
16022  else
16023  {
16024  current->args += scannerYYtext ;
16025  squareCount=1;
16026  externC=FALSE; // see bug759247
16027  BEGIN( Array ) ;
16028  }
16029  }
16030  YY_BREAK
16031 case 330:
16033 #line 3427 "scanner.l"
16034 {
16035  // end of IDL function attribute
16036  if (--squareCount<=0)
16037  {
16038  lineCount();
16039  if (current->mtype == Property)
16040  BEGIN( IDLPropName );
16041  else
16043  }
16044  }
16045  YY_BREAK
16046 case 331:
16048 #line 3438 "scanner.l"
16049 {
16050  if (Config_getBool("IDL_PROPERTY_SUPPORT"))
16051  {
16052  current->mtype = Property;
16053  }
16055  }
16056  YY_BREAK
16057 case 332:
16059 #line 3445 "scanner.l"
16060 {
16061  if (Config_getBool("IDL_PROPERTY_SUPPORT"))
16062  {
16063  current->mtype = Property;
16064  }
16066  }
16067  YY_BREAK
16068 case 333:
16070 #line 3452 "scanner.l"
16071 { // UNO IDL property
16073  }
16074  YY_BREAK
16075 case 334:
16077 #line 3455 "scanner.l"
16078 { // UNO IDL attribute
16080  }
16081  YY_BREAK
16082 case 335:
16084 #line 3458 "scanner.l"
16085 { // on UNO IDL interface/service/attribute/property
16087  }
16088  YY_BREAK
16089 case 336:
16091 #line 3461 "scanner.l"
16092 { // on UNO IDL attribute or property
16093  if (Config_getBool("IDL_PROPERTY_SUPPORT") && odlProp)
16094  {
16096  }
16097  else
16098  {
16100  }
16101  }
16102  YY_BREAK
16103 case 337:
16105 #line 3471 "scanner.l"
16106 { // on UNO IDL attribute or property
16108  }
16109  YY_BREAK
16110 case 338:
16112 #line 3474 "scanner.l"
16113 { // on UNO IDL property
16115  }
16116  YY_BREAK
16117 case 339:
16119 #line 3477 "scanner.l"
16120 { // on UNO IDL property
16122  }
16123  YY_BREAK
16124 case 340:
16126 #line 3480 "scanner.l"
16127 { // on UNO IDL property
16129  }
16130  YY_BREAK
16131 case 341:
16133 #line 3483 "scanner.l"
16134 { // on UNO IDL property
16136  }
16137  YY_BREAK
16138 case 342:
16140 #line 3486 "scanner.l"
16141 { // on UNO IDL property
16143  }
16144  YY_BREAK
16145 case 343:
16147 #line 3489 "scanner.l"
16148 { // on UNO IDL property
16150  }
16151  YY_BREAK
16152 case 344:
16154 #line 3492 "scanner.l"
16155 {
16156  }
16157  YY_BREAK
16158 case 345:
16159 /* rule 345 can match eol */
16161 #line 3494 "scanner.l"
16162 {
16163  // return type (probably HRESULT) - skip it
16164 
16165  if (odlProp)
16166  { // property type
16168  }
16169  }
16170  YY_BREAK
16171 case 346:
16172 /* rule 346 can match eol */
16174 #line 3502 "scanner.l"
16175 {
16177  current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
16180  BEGIN( IDLProp );
16181  }
16182  YY_BREAK
16183 case 347:
16184 /* rule 347 can match eol */
16186 #line 3509 "scanner.l"
16187 {
16188  if (odlProp)
16189  {
16191  }
16192  }
16193  YY_BREAK
16194 case 348:
16195 /* rule 348 can match eol */
16196 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
16197 (yy_c_buf_p) = yy_cp -= 1;
16198 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
16200 #line 3515 "scanner.l"
16201 {
16202  if (odlProp)
16203  {
16206  odlProp = false;
16207 
16208  BEGIN( IDLProp );
16209  }
16210  }
16211  YY_BREAK
16212 case 349:
16213 /* rule 349 can match eol */
16215 #line 3525 "scanner.l"
16216 { // attribute of a parameter
16219  }
16220  YY_BREAK
16221 case 350:
16223 #line 3529 "scanner.l"
16224 { // property type
16226  }
16227  YY_BREAK
16228 case 351:
16229 /* rule 351 can match eol */
16231 #line 3532 "scanner.l"
16232 { // Rare: Another parameter ([propput] HRESULT Item(int index, [in] Type theRealProperty);)
16233  if (!current->args)
16234  current->args = "(";
16235  else
16236  current->args += ", ";
16237  current->args += idlAttr;
16238  current->args += " ";
16239  current->args += idlProp; // prop was actually type of extra parameter
16240  current->args += " ";
16242  current->args = current->args.left(current->args.length() - 1); // strip comma
16243  idlProp.resize(0);
16244  idlAttr.resize(0);
16245  BEGIN( IDLProp );
16246  }
16247  YY_BREAK
16248 case 352:
16249 /* rule 352 can match eol */
16251 #line 3547 "scanner.l"
16252 {
16253  // the parameter name for the property - just skip.
16254  }
16255  YY_BREAK
16256 case 353:
16258 #line 3550 "scanner.l"
16259 {
16261  current->type = idlProp;
16263  if (current->args)
16264  current->args += ")";
16268  current = new Entry;
16269  initEntry();
16270  BEGIN( FindMembers );
16271  }
16272  YY_BREAK
16273 case 354:
16275 #line 3563 "scanner.l"
16276 { // spaces, *, or other stuff
16277  //idlProp+=scannerYYtext;
16278  }
16279  YY_BREAK
16280 case 355:
16282 #line 3566 "scanner.l"
16283 { current->args += *scannerYYtext ;
16284  if (--squareCount<=0)
16285  BEGIN( FindMembers ) ;
16286  }
16287  YY_BREAK
16288 case 356:
16290 #line 3570 "scanner.l"
16291 { current->args += *scannerYYtext ;
16292  if (--squareCount<=0)
16293  BEGIN( Function ) ;
16294  }
16295  YY_BREAK
16296 case 357:
16298 #line 3574 "scanner.l"
16299 { current->args += *scannerYYtext ;
16300  squareCount++;
16301  }
16302  YY_BREAK
16303 case 358:
16305 #line 3577 "scanner.l"
16306 { current->args += *scannerYYtext ; }
16307  YY_BREAK
16308 case 359:
16310 #line 3578 "scanner.l"
16311 { squareCount++; }
16312  YY_BREAK
16313 case 360:
16315 #line 3579 "scanner.l"
16316 {
16317  if (--squareCount<=0)
16319  }
16320  YY_BREAK
16321 case 361:
16323 #line 3583 "scanner.l"
16324 {
16326  BEGIN( SkipString );
16327  }
16328  YY_BREAK
16329 case 362:
16331 #line 3587 "scanner.l"
16332 
16333  YY_BREAK
16334 case 363:
16336 #line 3588 "scanner.l"
16337 { addType( current ) ;
16338  current->type += scannerYYtext ;
16339  BEGIN( Sharp ) ;
16340  }
16341  YY_BREAK
16342 case 364:
16344 #line 3592 "scanner.l"
16345 { current->type += *scannerYYtext ;
16346  if (--sharpCount<=0)
16347  BEGIN( FindMembers ) ;
16348  }
16349  YY_BREAK
16350 case 365:
16352 #line 3596 "scanner.l"
16353 { current->type += *scannerYYtext ;
16354  sharpCount++;
16355  }
16356  YY_BREAK
16357 case 366:
16358 /* rule 366 can match eol */
16360 #line 3599 "scanner.l"
16361 {
16362  current->type += ' ';
16363  lineCount();
16364  }
16365  YY_BREAK
16366 case 367:
16368 #line 3603 "scanner.l"
16369 { current->type += *scannerYYtext ; }
16370  YY_BREAK
16371 case 368:
16373 #line 3604 "scanner.l"
16374 {
16375  if (insideCpp || insideObjC)
16376  {
16378  }
16381  }
16382  YY_BREAK
16383 case 369:
16385 #line 3612 "scanner.l"
16386 {
16387  // Java enum initializer
16388  unput('(');
16390  initBracketCount=0;
16391  current->initializer = "=";
16393  }
16394  YY_BREAK
16395 case 370:
16397 #line 3620 "scanner.l"
16398 {
16400  initBracketCount=0;
16403  }
16404  YY_BREAK
16405 case 371:
16407 #line 3626 "scanner.l"
16408 {
16409  if (insideJava) // last enum field in Java class
16410  {
16411  if (!current->name.isEmpty())
16412  {
16416  current->type = "@"; // enum marker
16421  current = new Entry ;
16422  initEntry();
16423  }
16424 
16425  BEGIN( FindMembers );
16426  }
16427  else
16428  {
16429  REJECT;
16430  }
16431  }
16432  YY_BREAK
16433 case 372:
16434 /* rule 372 can match eol */
16436 #line 3650 "scanner.l"
16437 {
16438  lineCount();
16439  }
16440  YY_BREAK
16441 case 373:
16443 #line 3653 "scanner.l"
16444 
16445  YY_BREAK
16446 case 374:
16448 #line 3654 "scanner.l"
16449 {
16450  //printf("adding `%s' `%s' `%s' to enum `%s' (mGrpId=%d)\n",
16451  // current->type.data(), current->name.data(),
16452  // current->args.data(), current_root->name.data(),current->mGrpId);
16453  if (!current->name.isEmpty())
16454  {
16458  if (!(current_root->spec&Entry::Enum))
16459  {
16460  current->type = "@"; // enum marker
16461  }
16465  // add to the scope of the enum
16467  if (!insideCS && !insideJava &&
16469  // for C# and Java 1.5+ enum values always have to be explicitly qualified,
16470  // same for C++11 style enums (enum class Name {})
16471  {
16472  current = new Entry(*current);
16473  // add to the scope surrounding the enum (copy!)
16475  }
16476  current = new Entry ;
16477  initEntry();
16478  }
16479  else // probably a redundant ,
16480  {
16481  current->reset();
16482  initEntry();
16483  }
16484  }
16485  YY_BREAK
16486 case 375:
16488 #line 3690 "scanner.l"
16489 { // attribute list in IDL
16490  squareCount=1;
16492  BEGIN(SkipSquare);
16493  }
16494  YY_BREAK
16495 /*
16496 <FindFieldArg>"," { unput(*scannerYYtext); BEGIN(FindFields); }
16497  */
16498 case 376:
16500 #line 3698 "scanner.l"
16501 { current->program += scannerYYtext ; }
16502  YY_BREAK
16503 case 377:
16505 #line 3699 "scanner.l"
16506 { current->program += scannerYYtext ; }
16507  YY_BREAK
16508 case 378:
16510 #line 3700 "scanner.l"
16511 { if (!insidePHP)
16512  REJECT;
16513  // append PHP comment.
16515  }
16516  YY_BREAK
16517 case 379:
16519 #line 3705 "scanner.l"
16520 { current->program += scannerYYtext ;
16523  BEGIN( SkipVerbString );
16524  }
16525  YY_BREAK
16526 case 380:
16528 #line 3710 "scanner.l"
16529 { if (insidePHP)
16530  {
16534  BEGIN( CopyHereDoc );
16535  }
16536  else
16537  {
16538  REJECT;
16539  }
16540  }
16541  YY_BREAK
16542 case 381:
16544 #line 3722 "scanner.l"
16545 { current->program += scannerYYtext ;
16548  BEGIN( CopyGString );
16549  }
16550  YY_BREAK
16551 case 382:
16553 #line 3727 "scanner.l"
16555  lastContext = YY_START ;
16556  BEGIN( Comment ) ;
16557  }
16558  YY_BREAK
16559 case 383:
16560 /* rule 383 can match eol */
16562 #line 3731 "scanner.l"
16564  ++yyLineNr ;
16565  lastContext = YY_START ;
16566  BEGIN( Comment ) ;
16567  }
16568  YY_BREAK
16569 case 384:
16571 #line 3736 "scanner.l"
16572 {
16573  if (!insidePHP)
16574  {
16576  }
16577  else
16578  { // begin of single quoted string
16583  }
16584  }
16585  YY_BREAK
16586 case 385:
16588 #line 3749 "scanner.l"
16589 {
16590  if (insidePHP)
16591  {
16592  REJECT; // for PHP code single quotes
16593  // are used for strings of arbitrary length
16594  }
16595  else
16596  {
16598  }
16599  }
16600  YY_BREAK
16601 case 386:
16603 #line 3760 "scanner.l"
16605  ++curlyCount ;
16606  }
16607  YY_BREAK
16608 case 387:
16610 #line 3763 "scanner.l"
16611 {
16613  --curlyCount ;
16614  }
16615  YY_BREAK
16616 case 388:
16618 #line 3767 "scanner.l"
16619 { //err("ReadBody count=%d\n",curlyCount);
16620  if ( curlyCount>0 )
16621  {
16623  --curlyCount ;
16624  }
16625  else
16626  {
16628  QCString &cn = current->name;
16629  QCString rn = current_root->name.copy();
16630  //printf("cn=`%s' rn=`%s' isTypedef=%d\n",cn.data(),rn.data(),isTypedef);
16631  if (!cn.isEmpty() && !rn.isEmpty())
16632  {
16633  prependScope();
16634  }
16635  if (isTypedef && cn.isEmpty())
16636  {
16637  //printf("Typedef Name\n");
16638  BEGIN( TypedefName );
16639  }
16640  else
16641  {
16643  {
16644  current->program+=','; // add field terminator
16645  }
16646  // add compound definition to the tree
16648  // was: current->args.simplifyWhiteSpace();
16651  //printf("adding `%s' `%s' `%s' brief=%s insideObjC=%d %x\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data(),insideObjC,current->section);
16652  if (insideObjC &&
16654  ) // method definition follows
16655  {
16656  BEGIN( ReadBodyIntf ) ;
16657  }
16658  else
16659  {
16662  current = new Entry(*current);
16666  )
16667  { // namespaces and interfaces and java classes ends with a closing bracket without semicolon
16668  current->reset();
16669  initEntry();
16670  memspecEntry = 0;
16671  BEGIN( FindMembers ) ;
16672  }
16673  else
16674  {
16675  static QRegExp re("@[0-9]+$");
16676  if (!isTypedef && memspecEntry &&
16677  memspecEntry->name.find(re)==-1) // not typedef or anonymous type (see bug691071)
16678  {
16679  // enabled the next two lines for bug 623424
16680  current->doc.resize(0);
16681  current->brief.resize(0);
16682  }
16683  BEGIN( MemberSpec ) ;
16684  }
16685  }
16686  }
16687  }
16688  }
16689  YY_BREAK
16690 case 389:
16691 /* rule 389 can match eol */
16693 #line 3837 "scanner.l"
16694 { //err("ReadBody count=%d\n",curlyCount);
16695  lineCount();
16696  if ( curlyCount>0 )
16697  {
16699  --curlyCount ;
16700  }
16701  else
16702  {
16703  isTypedef = TRUE;
16705  QCString &cn = current->name;
16706  QCString rn = current_root->name.copy();
16707  if (!cn.isEmpty() && !rn.isEmpty())
16708  {
16709  prependScope();
16710  }
16711  BEGIN( TypedefName );
16712  }
16713  }
16714  YY_BREAK
16715 case 390:
16716 /* rule 390 can match eol */
16718 #line 3857 "scanner.l"
16719 { // late "const" or "volatile" keyword
16720  lineCount();
16722  }
16723  YY_BREAK
16724 case 391:
16726 #line 3861 "scanner.l"
16727 {
16729  {
16730  current->program+=","; // add field terminator
16731  }
16733  prependScope();
16736  //printf("Adding compound %s %s %s\n",current->type.data(),current->name.data(),current->args.data());
16738  if (!firstTypedefEntry)
16739  {
16741  }
16742  current = new Entry;
16743  initEntry();
16744  isTypedef=TRUE; // to undo reset by initEntry()
16746  }
16747  YY_BREAK
16748 case 392:
16750 #line 3881 "scanner.l"
16751 { /* typedef of anonymous type */
16752  current->name.sprintf("@%d",anonCount++);
16754  {
16755  current->program+=','; // add field terminator
16756  }
16757  // add compound definition to the tree
16762  current = new Entry(*current);
16763  initEntry();
16764  unput(';');
16765  BEGIN( MemberSpec ) ;
16766  }
16767  YY_BREAK
16768 case 393:
16769 /* rule 393 can match eol */
16771 #line 3897 "scanner.l"
16772 { // the [] part could be improved.
16773  lineCount();
16774  int i=0,l=(int)scannerYYleng,j;
16775  while (i<l && (!isId(scannerYYtext[i]))) i++;
16777  j=msName.find("[");
16778  if (j!=-1)
16779  {
16781  msName=msName.left(j);
16782  }
16784 
16785  // handle *pName in: typedef { ... } name, *pName;
16786  if (firstTypedefEntry)
16787  {
16789  {
16790  msType.prepend("struct "+firstTypedefEntry->name);
16791  }
16793  {
16794  msType.prepend("union "+firstTypedefEntry->name);
16795  }
16797  {
16799  }
16800  else
16801  {
16803  }
16804  }
16805  }
16806  YY_BREAK
16807 case 394:
16809 #line 3931 "scanner.l"
16810 { // function with struct return type
16811  addType(current);
16812  current->name = msName;
16813  current->spec = 0;
16814  unput('(');
16815  BEGIN(FindMembers);
16816  }
16817  YY_BREAK
16818 case 395:
16820 #line 3938 "scanner.l"
16821 {
16822  if (msName.isEmpty() && !current->name.isEmpty())
16823  {
16824  // see if the compound does not have a name or is inside another
16825  // anonymous compound. If so we insert a
16826  // special `anonymous' variable.
16827  //Entry *p=current_root;
16828  Entry *p=current;
16829  while (p)
16830  {
16831  // only look for class scopes, not namespace scopes
16832  if ((p->section & Entry::COMPOUND_MASK) && !p->name.isEmpty())
16833  {
16834  //printf("Trying scope `%s'\n",p->name.data());
16835  int i=p->name.findRev("::");
16836  int pi = (i==-1) ? 0 : i+2;
16837  if (p->name.at(pi)=='@')
16838  {
16839  // anonymous compound inside -> insert dummy variable name
16840  //printf("Adding anonymous variable for scope %s\n",p->name.data());
16841  msName.sprintf("@%d",anonCount++);
16842  break;
16843  }
16844  }
16845  //p=p->parent;
16846  if (p==current) p=current_root; else p=p->parent();
16847  }
16848  }
16849  //printf("msName=%s current->name=%s\n",msName.data(),current->name.data());
16850  if (!msName.isEmpty()
16851  /*&& msName!=current->name*/) // skip typedef T {} T;, removed due to bug608493
16852  {
16853  static bool typedefHidesStruct = Config_getBool("TYPEDEF_HIDES_STRUCT");
16854  // case 1: typedef struct _S { ... } S_t;
16855  // -> omit typedef and use S_t as the struct name
16856  if (typedefHidesStruct &&
16857  isTypedef &&
16861  memspecEntry)
16862  {
16864  }
16865  else // case 2: create a typedef field
16866  {
16867  Entry *varEntry=new Entry;
16868  varEntry->lang = language;
16869  varEntry->protection = current->protection ;
16870  varEntry->mtype = current->mtype;
16871  varEntry->virt = current->virt;
16872  varEntry->stat = current->stat;
16873  varEntry->section = Entry::VARIABLE_SEC;
16874  varEntry->name = msName.stripWhiteSpace();
16875  varEntry->type = current->type.simplifyWhiteSpace()+" ";
16876  varEntry->args = msArgs;
16877  if (isTypedef)
16878  {
16879  varEntry->type.prepend("typedef ");
16880  // //printf("current->name = %s %s\n",current->name.data(),msName.data());
16881  }
16882  if (typedefHidesStruct &&
16883  isTypedef &&
16885  memspecEntry
16886  ) // case 1: use S_t as type for pS_t in "typedef struct _S {} S_t, *pS_t;"
16887  {
16888  varEntry->type+=memspecEntry->name+msType;
16889  }
16890  else // case 2: use _S as type for for pS_t
16891  {
16892  varEntry->type+=current->name+msType;
16893  }
16894  varEntry->fileName = yyFileName;
16895  varEntry->startLine = yyLineNr;
16896  varEntry->startColumn = yyColNr;
16897  varEntry->doc = current->doc.copy();
16898  varEntry->brief = current->brief.copy();
16899  varEntry->mGrpId = current->mGrpId;
16900  varEntry->initializer = current->initializer;
16901 
16902  // deep copy group list
16904  Grouping *g;
16905  for (;(g=gli.current());++gli)
16906  {
16907  varEntry->groups->append(new Grouping(*g));
16908  }
16909  if (current->sli) // copy special list items
16910  {
16912  ListItemInfo *lii;
16913  for (li.toFirst();(lii=li.current());++li)
16914  {
16915  varEntry->addSpecialListItem(lii->type,lii->itemId);
16916  }
16917  }
16918 
16919  //printf("Add: type=`%s',name=`%s',args=`%s' brief=%s doc=%s\n",
16920  // varEntry->type.data(),varEntry->name.data(),
16921  // varEntry->args.data(),varEntry->brief.data(),varEntry->doc.data());
16922  current_root->addSubEntry(varEntry);
16923  }
16924  }
16925  if (*scannerYYtext==';') // end of a struct/class ...
16926  {
16928  { // case where a class/struct has a doc block after it
16929  if (!current->doc.isEmpty())
16930  {
16931  memspecEntry->doc += current->doc;
16932  }
16933  if (!current->brief.isEmpty())
16934  {
16936  }
16937  }
16938  msType.resize(0);
16939  msName.resize(0);
16940  msArgs.resize(0);
16941  isTypedef=FALSE;
16943  memspecEntry=0;
16944  current->reset();
16945  initEntry();
16946  BEGIN( FindMembers );
16947  }
16948  else
16949  {
16950  current->doc.resize(0);
16951  current->brief.resize(0);
16952  }
16953 
16954  }
16955  YY_BREAK
16956 case 396:
16958 #line 4072 "scanner.l"
16959 {
16961  initBracketCount=0;
16964  /* BEGIN(MemberSpecSkip); */
16965  }
16966  YY_BREAK
16967 /*
16968 <MemberSpecSkip>"{" {
16969  curlyCount=0;
16970  lastCurlyContext = MemberSpecSkip;
16971  previous = current;
16972  BEGIN(SkipCurly);
16973  }
16974  */
16975 case 397:
16977 #line 4087 "scanner.l"
16978 { BEGIN(MemberSpec); }
16979  YY_BREAK
16980 case 398:
16982 #line 4088 "scanner.l"
16983 { unput(';'); BEGIN(MemberSpec); }
16984  YY_BREAK
16985 case 399:
16986 /* rule 399 can match eol */
16988 #line 4089 "scanner.l"
16990  lineCount() ;
16991  }
16992  YY_BREAK
16993 case 400:
16994 /* rule 400 can match eol */
16995 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
16996 (yy_c_buf_p) = yy_cp = yy_bp + 4;
16997 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
16999 #line 4092 "scanner.l"
17000 { // end of Objective C block
17002  current=new Entry;
17003  initEntry();
17004  language = current->lang = SrcLangExt_Cpp; // see bug746361
17005  insideObjC=FALSE;
17006  BEGIN( FindMembers );
17007  }
17008  YY_BREAK
17009 case 401:
17011 #line 4100 "scanner.l"
17012 { current->program += scannerYYtext ; }
17013  YY_BREAK
17014 case 402:
17015 /* rule 402 can match eol */
17016 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17017 (yy_c_buf_p) = yy_cp = yy_bp + 1;
17018 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17019 #line 4103 "scanner.l"
17020 case 403:
17021 /* rule 403 can match eol */
17023 #line 4103 "scanner.l"
17024 { /* typedef void (A::*ptr_t)(args...) or int (*func(int))[], the ^ is for Obj-C blocks */
17025  if (insidePHP) // reference parameter
17026  {
17027  REJECT
17028  }
17029  else
17030  {
17032  lineCount();
17033  addType(current);
17035  roundCount=0;
17036  //current->type += scannerYYtext;
17037  BEGIN( FuncPtr );
17038  }
17039  }
17040  YY_BREAK
17041 case 404:
17042 /* rule 404 can match eol */
17044 #line 4119 "scanner.l"
17045 {
17047  if (nameIsOperator(current->name))
17048  {
17050  }
17051  else
17052  {
17053  if (current->name=="const" || current->name=="volatile")
17054  {
17055  funcPtrType += current->name;
17056  }
17057  else
17058  {
17059  BEGIN( EndFuncPtr );
17060  }
17061  }
17062  }
17063  YY_BREAK
17064 case 405:
17066 #line 4137 "scanner.l"
17067 {
17068  //printf("error: FuncPtr `%c' unexpected at line %d of %s\n",*scannerYYtext,yyLineNr,yyFileName);
17069  }
17070  YY_BREAK
17071 case 406:
17072 /* rule 406 can match eol */
17073 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17074 (yy_c_buf_p) = yy_cp -= 1;
17075 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17077 #line 4140 "scanner.l"
17078 {
17081  lineCount();
17082  }
17083  YY_BREAK
17084 case 407:
17085 /* rule 407 can match eol */
17087 #line 4145 "scanner.l"
17088 {
17089  lineCount();
17090  current->name += *scannerYYtext;
17091  }
17092  YY_BREAK
17093 case 408:
17095 #line 4149 "scanner.l"
17096 {
17097  unput(*scannerYYtext);
17098  BEGIN( EndFuncPtr );
17099  }
17100  YY_BREAK
17101 case 409:
17103 #line 4153 "scanner.l"
17104 {
17105  current->name += *scannerYYtext;
17106  }
17107  YY_BREAK
17108 case 410:
17109 /* rule 410 can match eol */
17110 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17111 (yy_c_buf_p) = yy_cp -= 1;
17112 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17114 #line 4156 "scanner.l"
17115 { // a variable with extra braces
17116  lineCount();
17117  current->type+=funcPtrType.data()+1;
17118  BEGIN(FindMembers);
17119  }
17120  YY_BREAK
17121 case 411:
17122 /* rule 411 can match eol */
17123 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17124 (yy_c_buf_p) = yy_cp -= 1;
17125 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17127 #line 4161 "scanner.l"
17128 { // a function pointer
17129  lineCount();
17130  current->type+=funcPtrType+")";
17131  BEGIN(FindMembers);
17132  }
17133  YY_BREAK
17134 case 412:
17135 /* rule 412 can match eol */
17136 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17137 (yy_c_buf_p) = yy_cp -= 1;
17138 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17140 #line 4166 "scanner.l"
17141 { // an array of variables
17142  lineCount();
17144  current->args += ")";
17145  BEGIN(FindMembers);
17146  }
17147  YY_BREAK
17148 case 413:
17150 #line 4172 "scanner.l"
17151 { // a function returning a function or
17152  // a function returning a pointer to an array
17153  current->args += *scannerYYtext ;
17154  //roundCount=0;
17155  //BEGIN( FuncFunc );
17160  BEGIN( ReadFuncArgType ) ;
17161  }
17162  YY_BREAK
17163 case 414:
17165 #line 4183 "scanner.l"
17166 {
17168  }
17169  YY_BREAK
17170 case 415:
17172 #line 4186 "scanner.l"
17173 {
17174  BEGIN(FindMembers);
17175  }
17176  YY_BREAK
17177 case 416:
17179 #line 4189 "scanner.l"
17180 {
17181  current->args += *scannerYYtext ;
17182  ++roundCount;
17183  }
17184  YY_BREAK
17185 case 417:
17187 #line 4193 "scanner.l"
17188 {
17189  current->args += *scannerYYtext ;
17190  if ( roundCount )
17191  --roundCount;
17192  else
17193  {
17194  BEGIN(FuncFuncEnd);
17195  }
17196  }
17197  YY_BREAK
17198 case 418:
17199 /* rule 418 can match eol */
17201 #line 4202 "scanner.l"
17202 {
17203  lineCount();
17204  current->type+=funcPtrType+")(";
17206  }
17207  YY_BREAK
17208 case 419:
17209 /* rule 419 can match eol */
17210 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17211 (yy_c_buf_p) = yy_cp -= 1;
17212 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17214 #line 4207 "scanner.l"
17215 {
17216  lineCount();
17217  current->type+=funcPtrType.data()+1;
17218  BEGIN(Function);
17219  }
17220  YY_BREAK
17221 case 420:
17222 /* rule 420 can match eol */
17223 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17224 (yy_c_buf_p) = yy_cp -= 1;
17225 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17227 #line 4212 "scanner.l"
17228 { // function returning a pointer to an array
17229  lineCount();
17231  current->args+=")";
17233  }
17234  YY_BREAK
17235 case 421:
17237 #line 4218 "scanner.l"
17238 {
17239  current->args += *scannerYYtext;
17240  }
17241  YY_BREAK
17242 case 422:
17244 #line 4221 "scanner.l"
17245 {
17246  current->type += *scannerYYtext;
17247  roundCount++;
17248  }
17249  YY_BREAK
17250 case 423:
17252 #line 4225 "scanner.l"
17253 {
17254  current->type += *scannerYYtext;
17255  if (roundCount)
17256  --roundCount;
17257  else
17258  BEGIN(Function);
17259  }
17260  YY_BREAK
17261 case 424:
17262 /* rule 424 can match eol */
17264 #line 4232 "scanner.l"
17265 { lineCount() ; current->type += ", " ; }
17266  YY_BREAK
17267 case 425:
17268 /* rule 425 can match eol */
17270 #line 4233 "scanner.l"
17271 { lineCount() ; current->type += ' ' ; }
17272  YY_BREAK
17273 case 426:
17275 #line 4234 "scanner.l"
17276 {
17277  current->type += *scannerYYtext;
17278  }
17279  YY_BREAK
17280 case 427:
17281 /* rule 427 can match eol */
17282 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17283 (yy_c_buf_p) = yy_cp = yy_bp + 1;
17284 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17286 #line 4237 "scanner.l"
17287 { // for catching typedef void (__stdcall *f)() like definitions
17288  if (current->type.left(7)=="typedef" && current->bodyLine==-1)
17289  // the bodyLine check is to prevent this guard to be true more than once
17290  {
17292  BEGIN( GetCallType );
17293  }
17294  else if (!current->name.isEmpty()) // normal function
17295  {
17301  BEGIN( ReadFuncArgType ) ;
17302  //printf(">>> Read function arguments!\n");
17303  }
17304  }
17305  YY_BREAK
17306 case 428:
17307 /* rule 428 can match eol */
17309 #line 4255 "scanner.l"
17310 {
17311  lineCount();
17312  addType(current);
17313  funcPtrType="(";
17315  roundCount=0;
17316  BEGIN( FuncPtr );
17317  }
17318  YY_BREAK
17319 case 429:
17321 #line 4263 "scanner.l"
17322 {
17323  if (!current->name.isEmpty())
17324  {
17330  BEGIN( ReadFuncArgType ) ;
17331  //printf(">>> Read function arguments current->argList->count()=%d\n",current->argList->count());
17332  }
17333  }
17334  YY_BREAK
17335 /*
17336 <FindMembers>"("{BN}*("void"{BN}*)?")" {
17337  lineCount();
17338  current->args = "()";
17339  BEGIN( FuncQual );
17340  }
17341  */
17342 /*- Function argument reading rules ---------------------------------------*/
17343 case 430:
17345 #line 4285 "scanner.l"
17348  }
17349  YY_BREAK
17350 case 431:
17352 #line 4288 "scanner.l"
17355  }
17356  YY_BREAK
17357 case 432:
17359 #line 4291 "scanner.l"
17360 {
17363  }
17364  YY_BREAK
17365 case 433:
17366 /* rule 433 can match eol */
17368 #line 4295 "scanner.l"
17369 {
17370  *copyArgString+=" ";
17371  fullArgString+=" ";
17372  lineCount();
17373  }
17374  YY_BREAK
17375 case 434:
17376 /* rule 434 can match eol */
17378 #line 4300 "scanner.l"
17379 {
17386  BEGIN(RawString);
17387  }
17388  YY_BREAK
17389 case 435:
17391 #line 4309 "scanner.l"
17392 {
17396  BEGIN( CopyArgString );
17397  }
17398  YY_BREAK
17399 case 436:
17401 #line 4315 "scanner.l"
17402 {
17405  argRoundCount=0;
17407  BEGIN( CopyArgRound );
17408  }
17409  YY_BREAK
17410 case 437:
17412 #line 4322 "scanner.l"
17413 {
17417  if (insideJS)
17418  {
17420  }
17422 
17423  /* remember the current documentation block, since
17424  we could overwrite it with the documentation of
17425  a function argument, which we then have to correct later
17426  on
17427  */
17428  docBackup = current->doc;
17430 
17432  }
17433  YY_BREAK
17434 /* a special comment */
17435 case 438:
17437 #line 4343 "scanner.l"
17438 {
17440  {
17441  // for defines we interpret a comment
17442  // as documentation for the define
17443  int i;for (i=(int)scannerYYleng-1;i>=0;i--)
17444  {
17445  unput(scannerYYtext[i]);
17446  }
17450  }
17451  else // not a define
17452  {
17453  // for functions we interpret a comment
17454  // as documentation for the argument
17456  lastCopyArgChar=0;
17458  if (scannerYYtext[1]=='/')
17460  else
17461  BEGIN( CopyArgComment );
17462  }
17463  }
17464  YY_BREAK
17465 /* a non-special comment */
17466 case 439:
17468 #line 4370 "scanner.l"
17469 { /* empty comment */ }
17470  YY_BREAK
17471 case 440:
17473 #line 4371 "scanner.l"
17474 {
17476  BEGIN( SkipComment );
17477  }
17478  YY_BREAK
17479 case 441:
17481 #line 4375 "scanner.l"
17482 {
17484  BEGIN( SkipCxxComment );
17485  }
17486  YY_BREAK
17487 /*
17488 <ReadFuncArgType,ReadTempArgs>"'#" { if (insidePHP)
17489  REJECT;
17490  *copyArgString+=scannerYYtext;
17491  fullArgString+=scannerYYtext;
17492  }
17493 <ReadFuncArgType,ReadTempArgs>"#" {
17494  if (!insidePHP)
17495  REJECT;
17496  lastCContext = YY_START;
17497  BEGIN( SkipCxxComment );
17498  }
17499  */
17500 /* `)' followed by a special comment */
17501 case 442:
17502 /* rule 442 can match eol */
17504 #line 4393 "scanner.l"
17505 {
17506  lineCount();
17508  {
17509  // for defines we interpret a comment
17510  // as documentation for the define
17511  int i;for (i=(int)scannerYYleng-1;i>0;i--)
17512  {
17513  unput(scannerYYtext[i]);
17514  }
17520  }
17521  else
17522  {
17523  // for functions we interpret a comment
17524  // as documentation for the last argument
17526  QCString text=&scannerYYtext[1];
17527  text=text.stripWhiteSpace();
17529  fullArgString+=text;
17530  if (text.find("//")!=-1)
17532  else
17533  BEGIN( CopyArgComment );
17534  }
17535  }
17536  YY_BREAK
17537 case 443:
17538 /* rule 443 can match eol */
17540 #line 4424 "scanner.l"
17541 
17542  YY_BREAK
17543 case 444:
17545 #line 4425 "scanner.l"
17547  YY_BREAK
17548 case 445:
17550 #line 4426 "scanner.l"
17552  if (lastCopyArgChar!=0)
17555  }
17556  YY_BREAK
17557 case 446:
17558 /* rule 446 can match eol */
17560 #line 4431 "scanner.l"
17562  lineCount();
17563  if (lastCopyArgChar!=0)
17566  }
17567  YY_BREAK
17568 case 447:
17569 /* rule 447 can match eol */
17570 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17571 (yy_c_buf_p) = yy_cp -= 1;
17572 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17574 #line 4437 "scanner.l"
17575 { // verbatim command (which could contain nested comments!)
17579  }
17580  YY_BREAK
17581 case 448:
17583 #line 4442 "scanner.l"
17584 {
17586  if (docBlockName.at(1)=='[')
17587  {
17588  docBlockName.at(1)='}';
17589  }
17590  if (docBlockName.at(1)=='{')
17591  {
17592  docBlockName.at(1)='}';
17593  }
17596  }
17597  YY_BREAK
17598 case 449:
17599 /* rule 449 can match eol */
17600 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
17601 (yy_c_buf_p) = yy_cp -= 1;
17602 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
17604 #line 4455 "scanner.l"
17605 { // end of verbatim block
17607  if (scannerYYtext[1]=='f') // end of formula
17608  {
17610  }
17611  if (&scannerYYtext[4]==docBlockName)
17612  {
17614  }
17615  }
17616  YY_BREAK
17617 case 450:
17619 #line 4466 "scanner.l"
17621  YY_BREAK
17622 case 451:
17624 #line 4467 "scanner.l"
17626  YY_BREAK
17627 case 452:
17628 /* rule 452 can match eol */
17630 #line 4468 "scanner.l"
17632  YY_BREAK
17633 case 453:
17635 #line 4469 "scanner.l"
17637  YY_BREAK
17638 case 454:
17640 #line 4470 "scanner.l"
17641 {
17643  "Ignoring %cbrief command inside argument documentation",*scannerYYtext
17644  );
17645  fullArgString+=' ';
17646  }
17647  YY_BREAK
17648 case 455:
17650 #line 4476 "scanner.l"
17651 {
17654  argSharpCount=1;
17655  BEGIN( CopyArgSharp );
17656  }
17657  YY_BREAK
17658 case 456:
17660 #line 4482 "scanner.l"
17661 {
17664  //printf("end template list %s\n",copyArgString->data());
17667  }
17668  YY_BREAK
17669 case 457:
17671 #line 4489 "scanner.l"
17672 {
17673  argRoundCount++;
17676  }
17677  YY_BREAK
17678 case 458:
17680 #line 4494 "scanner.l"
17681 {
17684  if (argRoundCount>0)
17685  argRoundCount--;
17686  else
17688  }
17689  YY_BREAK
17690 case 459:
17692 #line 4502 "scanner.l"
17693 {
17696  argRoundCount=0;
17698  BEGIN( CopyArgRound );
17699  }
17700  YY_BREAK
17701 case 460:
17703 #line 4509 "scanner.l"
17704 {
17705  argSharpCount++;
17706  //printf("argSharpCount++=%d copy\n",argSharpCount);
17709  }
17710  YY_BREAK
17711 case 461:
17713 #line 4515 "scanner.l"
17714 {
17717  argSharpCount--;
17718  if (argSharpCount>0)
17719  {
17720  //printf("argSharpCount--=%d copy\n",argSharpCount);
17721  }
17722  else
17723  {
17724  BEGIN( ReadTempArgs );
17725  //printf("end of argSharpCount\n");
17726  }
17727  }
17728  YY_BREAK
17729 case 462:
17731 #line 4529 "scanner.l"
17732 {
17735  }
17736  YY_BREAK
17737 case 463:
17739 #line 4533 "scanner.l"
17740 {
17744  }
17745  YY_BREAK
17746 case 464:
17748 #line 4538 "scanner.l"
17749 {
17753  }
17754  YY_BREAK
17755 case 465:
17757 #line 4543 "scanner.l"
17758 {
17759  if (insidePHP)
17760  {
17761  REJECT;
17762  }
17763  else
17764  {
17767  }
17768  }
17769  YY_BREAK
17770 case 466:
17772 #line 4554 "scanner.l"
17773 {
17776  if (insidePHP)
17777  {
17780  }
17781  }
17782  YY_BREAK
17783 case 467:
17784 /* rule 467 can match eol */
17786 #line 4563 "scanner.l"
17787 {
17788  lineCount();
17791  }
17792  YY_BREAK
17793 case 468:
17795 #line 4568 "scanner.l"
17796 {
17799  }
17800  YY_BREAK
17801 /*------------------------------------------------------------------------*/
17802 case 469:
17804 #line 4578 "scanner.l"
17805 { current->args += *scannerYYtext ;
17806  ++roundCount ;
17807  }
17808  YY_BREAK
17809 case 470:
17811 #line 4581 "scanner.l"
17812 { current->args += *scannerYYtext ;
17813  if ( roundCount )
17814  --roundCount ;
17815  else
17816  BEGIN( FuncQual ) ;
17817  }
17818  YY_BREAK
17819 /*
17820 <FuncQual>"#" { if (insidePHP)
17821  REJECT;
17822  lastCPPContext = YY_START;
17823  BEGIN(SkipCPP);
17824  }
17825  */
17826 case 471:
17828 #line 4594 "scanner.l"
17829 {
17830  if ( qstrcmp(scannerYYtext,";")==0 &&
17831  insidePHP &&
17832  !containsWord(current->type,"function") )
17833  {
17834  current->reset();
17835  initEntry();
17836  BEGIN( FindMembers );
17837  }
17838  else
17839  {
17841  }
17842  }
17843  YY_BREAK
17844 case 472:
17845 /* rule 472 can match eol */
17847 #line 4608 "scanner.l"
17848 { // pure virtual member function
17849  lineCount() ;
17850  current->virt = Pure;
17851  current->args += " override ";
17852  }
17853  YY_BREAK
17854 case 473:
17855 /* rule 473 can match eol */
17857 #line 4613 "scanner.l"
17858 { // C++11 overridden virtual member function
17859  lineCount() ;
17861  current->args += " override ";
17862  BEGIN(FuncQual);
17863  }
17864  YY_BREAK
17865 case 474:
17866 /* rule 474 can match eol */
17868 #line 4619 "scanner.l"
17869 { // C++11 final method
17870  lineCount() ;
17872  current->args += " final ";
17873  BEGIN(FuncQual);
17874  }
17875  YY_BREAK
17876 case 475:
17877 /* rule 475 can match eol */
17879 #line 4625 "scanner.l"
17880 { // sealed member function
17881  lineCount() ;
17883  current->args += " sealed ";
17884  }
17885  YY_BREAK
17886 case 476:
17887 /* rule 476 can match eol */
17889 #line 4630 "scanner.l"
17890 { // new member function
17891  lineCount() ;
17892  current->spec |= Entry::New;
17893  current->args += " new ";
17894  }
17895  YY_BREAK
17896 case 477:
17897 /* rule 477 can match eol */
17899 #line 4635 "scanner.l"
17900 { // const member function
17901  lineCount() ;
17902  current->args += " const ";
17904  }
17905  YY_BREAK
17906 case 478:
17907 /* rule 478 can match eol */
17909 #line 4640 "scanner.l"
17910 { // volatile member function
17911  lineCount() ;
17912  current->args += " volatile ";
17914  }
17915  YY_BREAK
17916 case 479:
17917 /* rule 479 can match eol */
17919 #line 4645 "scanner.l"
17920 { // noexcept qualifier
17921  lineCount() ;
17922  current->args += " noexcept ";
17924  }
17925  YY_BREAK
17926 case 480:
17927 /* rule 480 can match eol */
17929 #line 4650 "scanner.l"
17930 { // noexcept expression
17931  lineCount() ;
17932  current->args += " noexcept(";
17936  roundCount=0;
17937  BEGIN(CopyRound);
17938  }
17939  YY_BREAK
17940 case 481:
17941 /* rule 481 can match eol */
17943 #line 4659 "scanner.l"
17944 { // pure virtual member function
17945  lineCount() ;
17946  current->args += " = 0";
17947  current->virt = Pure;
17949  BEGIN(FuncQual);
17950  }
17951  YY_BREAK
17952 case 482:
17953 /* rule 482 can match eol */
17955 #line 4666 "scanner.l"
17956 { // C++11 explicitly delete member
17957  lineCount();
17958  current->args += " = delete";
17961  BEGIN(FuncQual);
17962  }
17963  YY_BREAK
17964 case 483:
17965 /* rule 483 can match eol */
17967 #line 4673 "scanner.l"
17968 { // C++11 explicitly defaulted constructor/assignment operator
17969  lineCount();
17970  current->args += " = default";
17972  BEGIN(FuncQual);
17973  }
17974  YY_BREAK
17975 case 484:
17976 /* rule 484 can match eol */
17978 #line 4679 "scanner.l"
17979 {
17980  lineCount();
17981  current->argList->trailingReturnType = " -> ";
17982  current->args += " -> ";
17984  }
17985  YY_BREAK
17986 case 485:
17988 #line 4685 "scanner.l"
17989 {
17990  unput(*scannerYYtext);
17991  BEGIN(FuncQual);
17992  }
17993  YY_BREAK
17994 case 486:
17996 #line 4689 "scanner.l"
17997 {
18000  }
18001  YY_BREAK
18002 case 487:
18003 /* rule 487 can match eol */
18005 #line 4693 "scanner.l"
18006 {
18007  lineCount();
18009  current->args+=' ';
18010  }
18011  YY_BREAK
18012 case 488:
18013 /* rule 488 can match eol */
18015 #line 4698 "scanner.l"
18016 {
18017  lineCount() ;
18018  current->args += ", " ;
18019  }
18020  YY_BREAK
18021 case 489:
18022 /* rule 489 can match eol */
18024 #line 4702 "scanner.l"
18025 {
18026  lineCount() ;
18027  current->args += ' ' ;
18028  }
18029  YY_BREAK
18030 case 490:
18032 #line 4706 "scanner.l"
18033 { if (insidePHP)
18034  REJECT;
18036  BEGIN(SkipCPP);
18037  }
18038  YY_BREAK
18039 case 491:
18041 #line 4711 "scanner.l"
18042 {
18043  if (insideCli &&
18045  )
18046  {
18047  BEGIN(CliOverride);
18048  }
18049  else
18050  {
18051  // typically an initialized function pointer
18053  initBracketCount=0;
18056  }
18057  }
18058  YY_BREAK
18059 case 492:
18061 #line 4727 "scanner.l"
18062 {
18063  }
18064  YY_BREAK
18065 case 493:
18067 #line 4729 "scanner.l"
18068 {
18069  unput(*scannerYYtext);
18070  BEGIN(FuncQual);
18071  }
18072  YY_BREAK
18073 case 494:
18074 /* rule 494 can match eol */
18076 #line 4733 "scanner.l"
18077 {
18078  lineCount();
18079  }
18080  YY_BREAK
18081 case 495:
18083 #line 4736 "scanner.l"
18084 {
18085  }
18086  YY_BREAK
18087 case 496:
18089 #line 4738 "scanner.l"
18090 {
18091  unput(*scannerYYtext);
18092  BEGIN(FuncQual);
18093  }
18094  YY_BREAK
18095 case 497:
18097 #line 4742 "scanner.l"
18098 {
18099  current->args += *scannerYYtext;
18102  BEGIN(CopyString);
18103  }
18104  YY_BREAK
18105 case 498:
18107 #line 4748 "scanner.l"
18108 {
18109  current->args += *scannerYYtext;
18110  if (insidePHP)
18111  {
18115  }
18116  }
18117  YY_BREAK
18118 case 499:
18120 #line 4757 "scanner.l"
18121 {
18122  if (insidePHP)
18123  {
18124  REJECT;
18125  }
18126  else
18127  {
18128  current->args += scannerYYtext;
18129  }
18130  }
18131  YY_BREAK
18132 case 500:
18134 #line 4767 "scanner.l"
18135 {
18136  current->args += scannerYYtext;
18137  }
18138  YY_BREAK
18139 case 501:
18141 #line 4770 "scanner.l"
18142 {
18143  current->args += *scannerYYtext;
18144  }
18145  YY_BREAK
18146 case 502:
18147 /* rule 502 can match eol */
18149 #line 4773 "scanner.l"
18150 {
18151  current->args += *scannerYYtext;
18152  lineCount();
18153  }
18154  YY_BREAK
18155 case 503:
18157 #line 4777 "scanner.l"
18158 { // typically a K&R style C function
18159  if (insideCS && qstrcmp(scannerYYtext,"where")==0)
18160  {
18161  // type contraint for a method
18162  delete current->typeConstr;
18167  }
18168  else if (checkForKnRstyleC())
18169  {
18173  }
18174  else
18175  {
18176  current->args += scannerYYtext;
18177  }
18178  }
18179  YY_BREAK
18180 case 504:
18182 #line 4798 "scanner.l"
18183 {
18184  QCString oldStyleArgPtr;
18185  QCString oldStyleArgName;
18186  splitKnRArg(oldStyleArgPtr,oldStyleArgName);
18187  QCString doc,brief;
18188  if (current->doc!=docBackup)
18189  {
18190  doc=current->doc.copy();
18192  }
18193  if (current->brief!=briefBackup)
18194  {
18195  brief=current->brief.copy();
18197  }
18198  addKnRArgInfo(oldStyleArgType+oldStyleArgPtr,
18199  oldStyleArgName,brief,doc);
18200  current->args.resize(0);
18201  if (*scannerYYtext==';') oldStyleArgType.resize(0);
18202  }
18203  YY_BREAK
18204 case 505:
18206 #line 4818 "scanner.l"
18207 { current->args += scannerYYtext; }
18208  YY_BREAK
18209 case 506:
18211 #line 4819 "scanner.l"
18212 {
18214  unput('{');
18215  BEGIN(FuncQual);
18216  }
18217  YY_BREAK
18218 case 507:
18220 #line 4824 "scanner.l"
18221 { current->args += *scannerYYtext; }
18222  YY_BREAK
18223 case 508:
18225 #line 4825 "scanner.l"
18226 { current->args += *scannerYYtext; }
18227  YY_BREAK
18228 case 509:
18229 /* rule 509 can match eol */
18230 #line 4827 "scanner.l"
18231 case 510:
18232 /* rule 510 can match eol */
18234 #line 4827 "scanner.l"
18235 { /* try-function-block */
18237  lineCount();
18238  if (scannerYYtext[scannerYYleng-1]==':')
18239  {
18240  unput(':');
18241  BEGIN( Function );
18242  }
18243  }
18244  YY_BREAK
18245 case 511:
18246 /* rule 511 can match eol */
18248 #line 4836 "scanner.l"
18249 { // C++ style throw clause
18250  current->exception = " throw (" ;
18251  roundCount=0;
18252  lineCount() ;
18253  BEGIN( ExcpRound ) ;
18254  }
18255  YY_BREAK
18256 case 512:
18257 /* rule 512 can match eol */
18259 #line 4842 "scanner.l"
18260 {
18261  current->exception = " raises (" ;
18262  lineCount() ;
18263  roundCount=0;
18264  BEGIN( ExcpRound ) ;
18265  }
18266  YY_BREAK
18267 case 513:
18268 /* rule 513 can match eol */
18270 #line 4848 "scanner.l"
18271 { // Java style throw clause
18272  current->exception = " throws " ;
18273  lineCount() ;
18274  BEGIN( ExcpList );
18275  }
18276  YY_BREAK
18277 case 514:
18279 #line 4853 "scanner.l"
18281  ++roundCount ;
18282  }
18283  YY_BREAK
18284 case 515:
18286 #line 4856 "scanner.l"
18288  if ( roundCount )
18289  --roundCount ;
18290  else
18291  BEGIN( FuncQual ) ;
18292  }
18293  YY_BREAK
18294 case 516:
18296 #line 4862 "scanner.l"
18297 {
18299  }
18300  YY_BREAK
18301 case 517:
18303 #line 4865 "scanner.l"
18304 {
18305  unput('{'); BEGIN( FuncQual );
18306  }
18307  YY_BREAK
18308 case 518:
18310 #line 4868 "scanner.l"
18311 {
18312  unput(';'); BEGIN( FuncQual );
18313  }
18314  YY_BREAK
18315 case 519:
18316 /* rule 519 can match eol */
18318 #line 4871 "scanner.l"
18319 {
18320  current->exception += ' ';
18321  lineCount();
18322  }
18323  YY_BREAK
18324 case 520:
18326 #line 4875 "scanner.l"
18327 {
18329  }
18330  YY_BREAK
18331 case 521:
18333 #line 4878 "scanner.l"
18334 { current->type += current->name ;
18335  current->name = current->args ;
18337  roundCount=0;
18338  BEGIN( FuncRound ) ;
18339  }
18340  YY_BREAK
18341 case 522:
18343 #line 4884 "scanner.l"
18344 {
18345  if (!insidePHP) BEGIN(SkipInits);
18346  }
18347  YY_BREAK
18348 case 523:
18350 #line 4887 "scanner.l"
18351 {
18355  // was: current->args.simplifyWhiteSpace();
18359  static QRegExp re("([^)]*[*&][^)]*)"); // (...*...)
18361  {
18362  int tempArg=current->name.find('<');
18363  int ts=current->type.find('<');
18364  int te=current->type.findRev('>');
18365  int ti=current->type.find(re,0);
18366 
18367  // bug677315: A<int(void *, char *)> get(); is not a function pointer
18368  bool isFunction = ti==-1 || // not a (...*...) pattern
18369  (ts!=-1 && ts<te && ts<ti && ti<te); // (...*...) is part of a template argument list
18370 
18371  //printf("type=%s ts=%d te=%d ti=%d isFunction=%d\n",
18372  // current->type.data(),ts,te,ti,isFunction);
18373  QCString tempName;
18374  if (tempArg==-1) tempName=current->name; else tempName=current->name.left(tempArg);
18375  if (!current->type.isEmpty() &&
18376  (!isFunction || current->type.left(8)=="typedef "))
18377  {
18378  //printf("Scanner.l: found in class variable: `%s' `%s' `%s'\n", current->type.data(),current->name.data(),current->args.data());
18379  if (isTypedef && current->type.left(8)!="typedef ")
18380  {
18381  current->type.prepend("typedef ");
18382  }
18384  }
18385  else
18386  {
18387  //printf("Scanner.l: found in class function: `%s' `%s' `%s'\n", current->type.data(),current->name.data(),current->args.data());
18389  current->proto = *scannerYYtext==';';
18390  }
18391  }
18392  else // a global function prototype or function variable
18393  {
18394  //printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
18395  if (!current->type.isEmpty() &&
18396  (current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
18397  {
18398  if (isTypedef && current->type.left(8)!="typedef ")
18399  {
18400  current->type.prepend("typedef ");
18401  }
18402  //printf("Scanner.l: found function variable!\n");
18404  }
18405  else
18406  {
18407  //printf("Scanner.l: found prototype\n");
18409  current->proto = TRUE;
18410  }
18411  }
18412  //printf("Adding entry `%s'\n",current->name.data());
18413  if ( insidePHP)
18414  {
18415  if (findAndRemoveWord(current->type,"final"))
18416  {
18418  }
18419  if (findAndRemoveWord(current->type,"abstract"))
18420  {
18422  }
18423  }
18424  if ( insidePHP && !containsWord(current->type,"function"))
18425  {
18426  initEntry();
18427  if ( *scannerYYtext == '{' )
18428  {
18430  curlyCount=0;
18431  BEGIN( SkipCurly );
18432  }
18433  else
18434  {
18435  BEGIN( FindMembers );
18436  }
18437  }
18438  else
18439  {
18440  if ( insidePHP)
18441  {
18442  findAndRemoveWord(current->type,"function");
18443  }
18444  previous = current;
18446  current = new Entry ;
18447  initEntry();
18448  // Objective C 2.0: Required/Optional section
18450  {
18452  }
18454  if ( *scannerYYtext == ',' )
18455  {
18456  current->type = previous->type;
18457  // we need to strip any trailing * and & (see bugs 623023 and 649103 for test cases)
18458  int i=current->type.length();
18459  while (i>0 && (current->type[i-1]=='*' || current->type[i-1]=='&' || current->type[i-1]==' ')) i--;
18460  current->type = current->type.left(i);
18461  }
18462  if ( *scannerYYtext == '{' )
18463  {
18465  {
18467  }
18468  //addToBody(scannerYYtext);
18469  curlyCount=0;
18470  BEGIN( SkipCurly ) ;
18471  }
18472  else
18473  {
18475  previous->bodyLine=-1; // a function/member declaration
18476  BEGIN( FindMembers ) ;
18477  }
18478  }
18479  }
18480  YY_BREAK
18481 case 524:
18482 /* rule 524 can match eol */
18484 #line 5016 "scanner.l"
18485 { // C++11 style initializer (see bug 688647)
18486  lineCount();
18487  curlyCount=1;
18489  }
18490  YY_BREAK
18491 case 525:
18493 #line 5021 "scanner.l"
18494 {
18495  ++curlyCount;
18496  }
18497  YY_BREAK
18498 case 526:
18500 #line 5024 "scanner.l"
18501 {
18502  if ( --curlyCount<=0 )
18503  {
18504  BEGIN(SkipInits);
18505  }
18506  }
18507  YY_BREAK
18508 case 527:
18510 #line 5030 "scanner.l"
18511 {
18513  }
18514  YY_BREAK
18515 case 528:
18517 #line 5033 "scanner.l"
18518 { // C++11 style initializer
18519  unput('{');
18520  BEGIN( Function );
18521  }
18522  YY_BREAK
18523 case 529:
18525 #line 5037 "scanner.l"
18526 {
18527  //addToBody(scannerYYtext);
18528  ++curlyCount ;
18529  }
18530  YY_BREAK
18531 case 530:
18532 /* rule 530 can match eol */
18533 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
18534 (yy_c_buf_p) = yy_cp = yy_bp + 1;
18535 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
18536 #line 5042 "scanner.l"
18537 case 531:
18538 /* rule 531 can match eol */
18540 #line 5042 "scanner.l"
18541 {
18542  //addToBody(scannerYYtext);
18543  if( curlyCount )
18544  {
18545  --curlyCount ;
18546  }
18547  else
18548  {
18549  if (current->sli && previous) // copy special list items
18550  {
18552  ListItemInfo *lii;
18553  for (li.toFirst();(lii=li.current());++li)
18554  {
18555  previous->addSpecialListItem(lii->type,lii->itemId);
18556  }
18557  delete current->sli;
18558  current->sli = 0;
18559  }
18561  BEGIN( lastCurlyContext ) ;
18562  }
18563  }
18564  YY_BREAK
18565 case 532:
18566 /* rule 532 can match eol */
18568 #line 5065 "scanner.l"
18569 {
18570  lineCount();
18571  if ( curlyCount )
18572  {
18573  //addToBody(scannerYYtext);
18574  --curlyCount ;
18575  }
18576  else
18577  {
18579 
18580  tempEntry = current; // temporarily switch to the previous entry
18581  current = previous;
18582  previous = 0;
18583 
18586  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
18587  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
18588  docBlock.resize(0);
18589  docBlockTerm = '}';
18590  if (scannerYYtext[scannerYYleng-3]=='/')
18591  {
18593  BEGIN( DocLine );
18594  }
18595  else
18596  {
18598  BEGIN( DocBlock );
18599  }
18600  }
18601  }
18602  YY_BREAK
18603 case 533:
18604 /* rule 533 can match eol */
18606 #line 5098 "scanner.l"
18607 { // desc is followed by another one
18610  docBlockAutoBrief = ( scannerYYtext[scannerYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
18611  ( scannerYYtext[scannerYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
18612  docBlock.resize(0);
18613  docBlockTerm = '}';
18614  if (scannerYYtext[scannerYYleng-3]=='/')
18615  {
18617  BEGIN( DocLine );
18618  }
18619  else
18620  {
18622  BEGIN( DocBlock );
18623  }
18624  }
18625  YY_BREAK
18626 case 534:
18628 #line 5116 "scanner.l"
18629 {
18630  //addToBody("}");
18631  if (tempEntry) // we can only switch back to current if no new item was created
18632  {
18633  current = tempEntry;
18634  tempEntry = 0;
18635  }
18637  }
18638  YY_BREAK
18639 case 535:
18641 #line 5125 "scanner.l"
18642 {
18643  //addToBody(scannerYYtext);
18645  BEGIN( SkipString );
18646  }
18647  YY_BREAK
18648 case 536:
18650 #line 5130 "scanner.l"
18651 {
18652  if (insidePHP)
18653  REJECT;
18654  //addToBody(scannerYYtext);
18655  BEGIN( SkipCurlyCpp );
18656  }
18657  YY_BREAK
18658 case 537:
18659 /* rule 537 can match eol */
18661 #line 5136 "scanner.l"
18662 {
18663  lineCount();
18664  //addToBody(scannerYYtext);
18665  }
18666  YY_BREAK
18667 case 538:
18669 #line 5140 "scanner.l"
18670 {
18671  if (!insidePHP)
18672  {
18673  REJECT;
18674  }
18675  else
18676  {
18678  BEGIN(HereDoc);
18679  }
18680  }
18681  YY_BREAK
18682 case 539:
18684 #line 5151 "scanner.l"
18685 {
18686  lineCount(); // for g_column updates
18687  //addToBody(scannerYYtext);
18688  }
18689  YY_BREAK
18690 case 540:
18691 /* rule 540 can match eol */
18693 #line 5155 "scanner.l"
18694 {
18695  //addToBody(scannerYYtext);
18696  lineCount();
18698  BEGIN( SkipCurly );
18699  }
18700  YY_BREAK
18701 case 541:
18702 /* rule 541 can match eol */
18704 #line 5161 "scanner.l"
18705 {
18706  //addToBody(scannerYYtext);
18707  lineCount();
18708  }
18709  YY_BREAK
18710 case 542:
18712 #line 5165 "scanner.l"
18713 {
18714  //addToBody(scannerYYtext);
18716  BEGIN(SkipComment);
18717  }
18718  YY_BREAK
18719 case 543:
18721 #line 5170 "scanner.l"
18722 {
18723  //addToBody(scannerYYtext);
18726  }
18727  YY_BREAK
18728 case 544:
18730 #line 5175 "scanner.l"
18731 {
18732  roundCount=0;
18734  BEGIN(SkipRound);
18735  }
18736  YY_BREAK
18737 case 545:
18739 #line 5180 "scanner.l"
18740 {
18742  BEGIN( SkipString );
18743  }
18744  YY_BREAK
18745 case 546:
18747 #line 5184 "scanner.l"
18748 {
18750  "Found ';' while parsing initializer list! "
18751  "(doxygen could be confused by a macro call without semicolon)"
18752  );
18753  BEGIN( FindMembers );
18754  }
18755  YY_BREAK
18756 case 547:
18758 #line 5191 "scanner.l"
18759 {
18760  if (!insidePHP)
18761  REJECT;
18762  //addToBody(scannerYYtext);
18765  }
18766  YY_BREAK
18767 case 548:
18769 #line 5198 "scanner.l"
18770 {
18771  if (!insideCS) REJECT;
18772  // C# verbatim string
18776  }
18777  YY_BREAK
18778 case 549:
18780 #line 5205 "scanner.l"
18781 {
18782  if (insidePHP) REJECT;
18783  }
18784  YY_BREAK
18785 case 550:
18787 #line 5208 "scanner.l"
18788 {
18789  if (insidePHP)
18790  {
18793  }
18794  }
18795  YY_BREAK
18796 case 551:
18798 #line 5215 "scanner.l"
18799 { }
18800  YY_BREAK
18801 case 552:
18803 #line 5216 "scanner.l"
18804 { }
18805  YY_BREAK
18806 case 553:
18808 #line 5217 "scanner.l"
18809 {
18811  }
18812  YY_BREAK
18813 case 554:
18815 #line 5220 "scanner.l"
18816 {
18818  }
18819  YY_BREAK
18820 case 555:
18822 #line 5223 "scanner.l"
18823 { }
18824  YY_BREAK
18825 case 556:
18826 /* rule 556 can match eol */
18828 #line 5224 "scanner.l"
18829 {
18830  lineCount();
18831  }
18832  YY_BREAK
18833 case 557:
18835 #line 5227 "scanner.l"
18836 { }
18837  YY_BREAK
18838 case 558:
18840 #line 5228 "scanner.l"
18841 { // for "class : public base {} var;" construct, see bug 608359
18842  unput(':');
18843  BEGIN(ClassVar);
18844  }
18845  YY_BREAK
18846 case 559:
18848 #line 5232 "scanner.l"
18849 {
18851  current->type.resize(0) ;
18852  current->name.resize(0) ;
18853  current->args.resize(0) ;
18854  current->argList->clear();
18855  BEGIN( FindMembers ) ;
18856  }
18857  YY_BREAK
18858 case 560:
18860 #line 5240 "scanner.l"
18861 {
18862  if (insideIDL && (current->spec & (Entry::Singleton |
18863  Entry::Service)))
18864  {
18865  // in UNO IDL a service or singleton may be defined
18866  // completely like this: "service Foo : XFoo;"
18867  if (!current->name.isEmpty() && !current_root->name.isEmpty())
18868  {
18869  prependScope();
18870  }
18872  // there can be only one base class here
18873  if (!baseName.isEmpty())
18874  {
18877  baseName.resize(0);
18878  }
18880  current = new Entry;
18881  }
18882  else
18883  {
18885  current->type.resize(0) ;
18886  current->name.resize(0) ;
18887  current->args.resize(0) ;
18888  current->argList->clear();
18889  }
18890  BEGIN( FindMembers ) ;
18891  }
18892  YY_BREAK
18893 case 561:
18894 /* rule 561 can match eol */
18895 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
18896 (yy_c_buf_p) = yy_cp -= 1;
18897 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
18899 #line 5271 "scanner.l"
18900 {
18901  sharpCount = 0;
18903  if (current->spec & Entry::Protocol)
18904  {
18905  current->name+="-p";
18906  }
18907  lineCount();
18909  if (insideObjC) // protocol list
18910  {
18912  }
18913  else if (insideCS) // C# generic class
18914  {
18915  //current->name+="-g";
18916  BEGIN( CSGeneric );
18917  }
18918  else // C++ template specialization
18919  {
18920  roundCount=0;
18921  BEGIN( ClassTemplSpec );
18922  }
18923  }
18924  YY_BREAK
18925 case 562:
18927 #line 5295 "scanner.l"
18928 {
18929  if (current->tArgLists==0)
18930  {
18933  }
18934  ArgumentList *al = new ArgumentList;
18935  // check bug 612858 before enabling the next line
18936  //current->spec |= Entry::Template;
18937  current->tArgLists->append(al);
18938  currentArgumentList = al;
18939  templateStr="<";
18940  current->name += "<";
18943  //copyArgString = &templateStr;
18945  BEGIN( ReadTempArgs );
18946  }
18947  YY_BREAK
18948 case 563:
18950 #line 5314 "scanner.l"
18951 {
18953  BEGIN( Bases );
18954  }
18955  YY_BREAK
18956 case 564:
18957 /* rule 564 can match eol */
18959 #line 5318 "scanner.l"
18960 {
18962  lineCount();
18963  if (--sharpCount<=0)
18964  {
18966  if (current->spec & Entry::Protocol)
18967  { // Objective-C protocol
18968  unput('{'); // fake start of body
18969  BEGIN( ClassVar );
18970  }
18971  else
18972  {
18974  }
18975  }
18976  }
18977  YY_BREAK
18978 case 565:
18980 #line 5335 "scanner.l"
18981 {
18983  if (roundCount==0) sharpCount++;
18984  }
18985  YY_BREAK
18986 case 566:
18988 #line 5339 "scanner.l"
18989 {
18991  }
18992  YY_BREAK
18993 case 567:
18994 /* rule 567 can match eol */
18996 #line 5342 "scanner.l"
18997 { // forward declaration
18998  if (current->tArgLists && current->tArgLists->count()>0)
18999  {
19000  // found a forward template declaration, this has
19001  // a purpose of its own
19003  current->name=current->name.left(current->name.length()-1).stripWhiteSpace();
19004  //printf("template class declaration for %s!\n",current->name.data());
19005  QCString rn = current_root->name.copy();
19006  //printf("cn=`%s' rn=`%s' isTypedef=%d\n",cn.data(),rn.data(),isTypedef);
19007  if (!current->name.isEmpty() && !rn.isEmpty())
19008  {
19009  prependScope();
19010  }
19013  current = new Entry;
19014  }
19015  else if (insideIDL &&
19017  Entry::Service)) &&
19018  (current->spec & Entry::Interface)) ||
19020  Entry::Singleton)) &&
19021  (current->spec & Entry::Service))))
19022  {
19023  // interface inside of UNO IDL service or interface
19024  // service inside of UNO IDL service or singleton
19025  // there may be documentation on the member,
19026  // so do not throw it away...
19028  current->name=current->name.left(current->name.length()-1).stripWhiteSpace();
19032 // current->section = Entry::MEMBERDOC_SEC;
19033  current->spec &= ~(Entry::Interface|Entry::Service); // FIXME: horrible: Interface == Gettable, so need to clear it - actually we're mixing values from different enums in this case... granted only Optional and Interface are actually valid in this context but urgh...
19035  current = new Entry;
19036  }
19037 
19038  unput(';');
19039  current->reset();
19040  initEntry();
19041  if (insideObjC) // see bug746361
19042  {
19044  insideObjC = FALSE;
19045  }
19046  if (isTypedef) // typedef of a class, put typedef keyword back
19047  {
19048  current->type.prepend("typedef");
19049  }
19050  BEGIN( FindMembers );
19051  }
19052  YY_BREAK
19053 case 568:
19054 /* rule 568 can match eol */
19056 #line 5397 "scanner.l"
19057 {
19059  lineCount();
19060  if (insideCpp && current->name=="alignas") // C++11
19061  {
19063  BEGIN( AlignAs );
19064  }
19065  else
19066  {
19067  if (current->spec & Entry::Protocol)
19068  {
19069  current->name += "-p";
19070  }
19071  BEGIN( ClassVar );
19072  }
19073  }
19074  YY_BREAK
19075 case 569:
19077 #line 5414 "scanner.l"
19078 { roundCount=0;
19079  BEGIN( AlignAsEnd );
19080  }
19081  YY_BREAK
19082 case 570:
19083 /* rule 570 can match eol */
19085 #line 5417 "scanner.l"
19086 { lineCount(); }
19087  YY_BREAK
19088 case 571:
19090 #line 5418 "scanner.l"
19091 
19092  YY_BREAK
19093 case 572:
19095 #line 5419 "scanner.l"
19096 { roundCount++; }
19097  YY_BREAK
19098 case 573:
19100 #line 5420 "scanner.l"
19101 { if (--roundCount<0)
19102  {
19104  }
19105  }
19106  YY_BREAK
19107 case 574:
19108 /* rule 574 can match eol */
19110 #line 5425 "scanner.l"
19111 { lineCount(); }
19112  YY_BREAK
19113 case 575:
19115 #line 5426 "scanner.l"
19116 
19117  YY_BREAK
19118 case 576:
19119 /* rule 576 can match eol */
19121 #line 5427 "scanner.l"
19122 { // multiple forward declarations on one line
19123  // e.g. @protocol A,B;
19124  current->reset();
19125  initEntry();
19126  }
19127  YY_BREAK
19128 case 577:
19129 /* rule 577 can match eol */
19131 #line 5432 "scanner.l"
19132 {
19134  if (insideCpp || insideObjC)
19135  {
19137  }
19138  lineCount();
19139  if (current->spec & Entry::Protocol)
19140  {
19141  current->name += "-p";
19142  }
19143  if ((current->spec & Entry::Protocol) ||
19145  {
19146  unput('{'); // fake start of body
19147  }
19148  BEGIN( ClassVar );
19149  }
19150  YY_BREAK
19151 case 578:
19152 /* rule 578 can match eol */
19154 #line 5450 "scanner.l"
19155 { // C# style scope
19156  current->name = substitute(scannerYYtext,".","::");
19157  lineCount();
19158  BEGIN( ClassVar );
19159  }
19160  YY_BREAK
19161 case 579:
19162 /* rule 579 can match eol */
19163 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19164 (yy_c_buf_p) = yy_cp -= 1;
19165 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19167 #line 5455 "scanner.l"
19168 {
19169  if (insideIDL && qstrncmp(scannerYYtext,"switch",6)==0 && !isId(scannerYYtext[6]))
19170  {
19171  // Corba IDL style union
19172  roundCount=0;
19174  }
19175  else
19176  {
19177  addType(current);
19180  lineCount();
19181  BEGIN( FindMembers );
19182  }
19183  }
19184  YY_BREAK
19185 case 580:
19187 #line 5471 "scanner.l"
19188 {
19189  if (isTypedef)
19190  {
19191  // multiple types in one typedef
19192  unput(',');
19193  current->type.prepend("typedef ");
19194  BEGIN(FindMembers);
19195  }
19196  else
19197  {
19198  // Multiple class forward declaration
19199  }
19200  }
19201  YY_BREAK
19202 case 581:
19203 /* rule 581 can match eol */
19205 #line 5484 "scanner.l"
19206 {
19207  if (insideCli)
19208  {
19209  if (scannerYYtext[0]=='s') // sealed
19211  else // abstract
19213  BEGIN( ClassVar );
19214  }
19215  else
19216  {
19217  REJECT;
19218  }
19219  }
19220  YY_BREAK
19221 case 582:
19223 #line 5498 "scanner.l"
19224 {
19225  if (insideCpp || insideObjC)
19226  {
19228  }
19229  if (insideIDL && qstrcmp(scannerYYtext,"switch")==0)
19230  {
19231  // Corba IDL style union
19232  roundCount=0;
19234  }
19235  else if ((insideJava || insidePHP || insideJS) && (qstrcmp(scannerYYtext,"implements")==0 || qstrcmp(scannerYYtext,"extends")==0))
19236  {
19237  current->type.resize(0);
19238  baseProt=Public;
19239  baseVirt=Normal;
19240  baseName.resize(0);
19241  BEGIN( BasesProt ) ;
19242  }
19243  else if (insideCS && qstrcmp(scannerYYtext,"where")==0) // C# type contraint
19244  {
19245  delete current->typeConstr;
19250  }
19251  else if (insideCli && qstrcmp(scannerYYtext,"abstract")==0)
19252  {
19254  }
19255  else if (insideCli && qstrcmp(scannerYYtext,"sealed")==0)
19256  {
19258  }
19259  else if (qstrcmp(scannerYYtext,"final")==0)
19260  {
19262  }
19263  else
19264  {
19266  { // found "enum a b" -> variable
19268  }
19269  current->type += ' ' ;
19270  current->type += current->name ;
19272 
19273  if (nameIsOperator(current->name))
19274  {
19275  BEGIN( Operator );
19276  }
19277  }
19278  }
19279  YY_BREAK
19280 case 583:
19282 #line 5553 "scanner.l"
19283 {
19284  if (insideObjC && *scannerYYtext=='(') // class category
19285  {
19286  current->name+='(';
19287  //if (current->section!=Entry::OBJCIMPL_SEC)
19288  //{
19290  //}
19291  BEGIN( ClassCategory );
19292  }
19293  else
19294  {
19295  // probably a function anyway
19296  unput(*scannerYYtext);
19297  BEGIN( FindMembers );
19298  }
19299  }
19300  YY_BREAK
19301 case 584:
19303 #line 5570 "scanner.l"
19304 { /* empty comment */ }
19305  YY_BREAK
19306 case 585:
19308 #line 5571 "scanner.l"
19309 { // special comment
19310  fullArgString.resize(0);
19311  lastCopyArgChar='#'; // end marker
19313  if (scannerYYtext[1]=='/')
19315  else
19316  BEGIN( CopyArgComment );
19317  }
19318  YY_BREAK
19319 case 586:
19321 #line 5580 "scanner.l"
19322 { // artificially inserted token to signal end of comment block
19324  }
19325  YY_BREAK
19326 case 587:
19328 #line 5583 "scanner.l"
19329 { // end of type constraint reached
19330  // parse documentation of the constraints
19332  unput('{');
19334  }
19335  YY_BREAK
19336 case 588:
19338 #line 5589 "scanner.l"
19339 {
19341  unput(';');
19343  }
19344  YY_BREAK
19345 case 589:
19347 #line 5594 "scanner.l"
19348 {
19350  }
19351  YY_BREAK
19352 case 590:
19354 #line 5597 "scanner.l"
19355 {
19356  // parameter name
19358  }
19359  YY_BREAK
19360 case 591:
19362 #line 5601 "scanner.l"
19363 { // another constraint for a different param
19366  }
19367  YY_BREAK
19368 case 592:
19370 #line 5605 "scanner.l"
19371 {
19372  if (current->typeConstr->getLast()->type.isEmpty())
19373  // first type constraint for this parameter
19374  {
19376  }
19377  else // new type constraint for same parameter
19378  {
19383  }
19384  }
19385  YY_BREAK
19386 case 593:
19387 /* rule 593 can match eol */
19389 #line 5619 "scanner.l"
19390 {
19391  lineCount();
19392  }
19393  YY_BREAK
19394 case 594:
19396 #line 5622 "scanner.l"
19397 {
19398  }
19399  YY_BREAK
19400 case 595:
19402 #line 5624 "scanner.l"
19403 {
19405  }
19406  YY_BREAK
19407 case 596:
19408 /* rule 596 can match eol */
19409 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19410 (yy_c_buf_p) = yy_cp = yy_bp + 1;
19411 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19413 #line 5627 "scanner.l"
19414 {
19415  current->name+=')';
19416  BEGIN( ClassVar );
19417  }
19418  YY_BREAK
19419 case 597:
19420 /* rule 597 can match eol */
19421 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19422 (yy_c_buf_p) = yy_cp = yy_bp + 1;
19423 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19425 #line 5631 "scanner.l"
19426 {
19427  current->name+=')';
19429  }
19430  YY_BREAK
19431 case 598:
19433 #line 5635 "scanner.l"
19434 {
19435  current->name+=')';
19436  if ((current->section & Entry::Protocol) ||
19438  {
19439  unput('{'); // fake start of body
19440  }
19441  else // category has no variables so push back an empty body
19442  {
19443  unput('}');
19444  unput('{');
19445  }
19446  BEGIN( ClassVar );
19447  }
19448  YY_BREAK
19449 case 599:
19451 #line 5649 "scanner.l"
19452 {
19453  if (current->section==Entry::VARIABLE_SEC) // enum A B:2, see bug 748208
19454  {
19455  current->bitfields+=":";
19456  current->args.resize(0);
19457  BEGIN(BitFields);
19458  }
19459  else if (current->section==Entry::ENUM_SEC) // enum E:2, see bug 313527,
19460  // or C++11 style enum: 'E : unsigned int {...}'
19461  {
19462  current->args.resize(0);
19464  }
19465  else
19466  {
19467  current->type.resize(0);
19468  if ((current->spec & Entry::Interface) ||
19469  (current->spec & Entry::Struct) ||
19470  (current->spec & Entry::Ref) ||
19471  (current->spec & Entry::Value) ||
19473  )
19474  baseProt=Public;
19475  else
19476  baseProt=Private;
19477  baseVirt=Normal;
19478  baseName.resize(0);
19479  BEGIN( BasesProt ) ;
19480  }
19481  }
19482  YY_BREAK
19483 case 600:
19485 #line 5679 "scanner.l"
19486 {
19487  unput(*scannerYYtext);
19488  if (isTypedef) // typedef of a class, put typedef keyword back
19489  {
19490  current->type.prepend("typedef");
19491  }
19492  if ((scannerYYtext[0]=='*' || scannerYYtext[0]=='&') &&
19494  { // found "enum a *b" -> variable
19496  }
19497  BEGIN( FindMembers );
19498  }
19499  YY_BREAK
19500 case 601:
19501 /* rule 601 can match eol */
19502 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19503 (yy_c_buf_p) = yy_cp = yy_bp + 3;
19504 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19506 #line 5692 "scanner.l"
19507 {
19508  if (!insideObjC)
19509  {
19510  REJECT;
19511  }
19512  else
19513  {
19514  lineCount();
19519  curlyCount=0;
19520  BEGIN( ReadBodyIntf );
19521  }
19522  }
19523  YY_BREAK
19524 case 602:
19525 /* rule 602 can match eol */
19526 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19527 (yy_c_buf_p) = yy_cp -= 1;
19528 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19529 #line 5709 "scanner.l"
19530 case 603:
19531 /* rule 603 can match eol */
19532 #line 5710 "scanner.l"
19533 case 604:
19534 /* rule 604 can match eol */
19535 #line 5711 "scanner.l"
19536 case 605:
19537 /* rule 605 can match eol */
19539 #line 5711 "scanner.l"
19540 {
19541  if (!insideObjC)
19542  {
19543  REJECT;
19544  }
19545  else
19546  {
19547  lineCount();
19552  curlyCount=0;
19553  BEGIN( ReadBodyIntf );
19554  }
19555  }
19556  YY_BREAK
19557 case 606:
19559 #line 5727 "scanner.l"
19560 {
19565  if (current->name.isEmpty() && !isTypedef) // anonymous compound
19566  {
19567  if (current->section==Entry::NAMESPACE_SEC) // allow reopening of anonymous namespaces
19568  {
19569  if (Config_getBool("EXTRACT_ANON_NSPACES")) // use visible name
19570  {
19571  current->name="anonymous_namespace{"+stripPath(current->fileName)+"}";
19572  }
19573  else // use invisible name
19574  {
19575  current->name.sprintf("@%d",anonNSCount);
19576  }
19577  }
19578  else
19579  {
19580  current->name.sprintf("@%d",anonCount++);
19581  }
19582  }
19583  curlyCount=0;
19584  if (current_root && // not a nested struct inside an @interface section
19588  ) &&
19589  insideObjC
19590  )
19591  { // ObjC body that ends with @end
19592  BEGIN( ReadBodyIntf );
19593  }
19595  { // namespace body
19596  BEGIN( ReadNSBody );
19597  }
19598  else
19599  { // class body
19600  BEGIN( ReadBody ) ;
19601  }
19602  }
19603  YY_BREAK
19604 case 607:
19605 /* rule 607 can match eol */
19607 #line 5770 "scanner.l"
19608 { lineCount(); baseVirt = Virtual; }
19609  YY_BREAK
19610 case 608:
19611 /* rule 608 can match eol */
19613 #line 5771 "scanner.l"
19614 { lineCount(); baseProt = Public; }
19615  YY_BREAK
19616 case 609:
19617 /* rule 609 can match eol */
19619 #line 5772 "scanner.l"
19620 { lineCount(); baseProt = Protected; }
19621  YY_BREAK
19622 case 610:
19623 /* rule 610 can match eol */
19625 #line 5773 "scanner.l"
19626 { lineCount(); baseProt = Package; }
19627  YY_BREAK
19628 case 611:
19629 /* rule 611 can match eol */
19631 #line 5774 "scanner.l"
19632 { lineCount(); baseProt = Private; }
19633  YY_BREAK
19634 case 612:
19635 /* rule 612 can match eol */
19637 #line 5775 "scanner.l"
19638 { lineCount(); }
19639  YY_BREAK
19640 case 613:
19642 #line 5776 "scanner.l"
19643 { unput(*scannerYYtext); BEGIN(Bases); }
19644  YY_BREAK
19645 case 614:
19647 #line 5777 "scanner.l"
19648 { // PHP namespace token, not sure if interspacing is allowed but it gives problems (see bug 640847)
19649  if (!insidePHP)
19650  {
19651  REJECT;
19652  }
19653  else // PHP base class of the form \Ns\Cl or Ns\Cl
19654  {
19655  lineCount();
19657  bn = substitute(bn,"\\","::");
19658  baseName += bn;
19659  current->args += ' ';
19661  }
19662  }
19663  YY_BREAK
19664 case 615:
19665 /* rule 615 can match eol */
19667 #line 5792 "scanner.l"
19668 {
19669  lineCount();
19670  QCString baseScope = scannerYYtext;
19671  if (insideCS && baseScope.stripWhiteSpace()=="where")
19672  {
19673  // type contraint for a class
19674  delete current->typeConstr;
19679  }
19680  else
19681  {
19683  current->args += ' ';
19685  }
19686  }
19687  YY_BREAK
19688 case 616:
19689 /* rule 616 can match eol */
19691 #line 5811 "scanner.l"
19692 { // Java style class
19693  QCString name = substitute(scannerYYtext,".","::");
19694  baseName += name;
19695  current->args += ' ';
19696  current->args += name;
19697  }
19698  YY_BREAK
19699 case 617:
19700 /* rule 617 can match eol */
19701 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19702 (yy_c_buf_p) = yy_cp = yy_bp + 1;
19703 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19705 #line 5817 "scanner.l"
19706 {
19707  if (!insideObjC)
19708  {
19709  REJECT;
19710  }
19711  else
19712  {
19713  lineCount();
19714  unput('{');
19715  }
19716  }
19717  YY_BREAK
19718 case 618:
19720 #line 5828 "scanner.l"
19721 { // empty ObjC interface
19722  unput('d'); // insert fake body: {}@end
19723  unput('n');
19724  unput('e');
19725  unput('@');
19726  unput('}');
19727  unput('{');
19728  }
19729  YY_BREAK
19730 case 619:
19732 #line 5836 "scanner.l"
19733 { current->name += *scannerYYtext;
19734  sharpCount=1;
19735  roundCount=0;
19737  specName = &current->name;
19738  BEGIN ( Specialization );
19739  }
19740  YY_BREAK
19741 case 620:
19742 /* rule 620 can match eol */
19744 #line 5843 "scanner.l"
19745 {
19746  lineCount();
19747  sharpCount=1;
19748  roundCount=0;
19750  if (insideObjC) // start of protocol list
19751  {
19752  unput(',');
19753  }
19754  else // template specialization
19755  {
19756  //if (insideCS) // generic
19757  //{
19758  // baseName+="-g";
19759  //}
19761  specName = &templateStr;
19762  BEGIN ( Specialization );
19763  }
19764  }
19765  YY_BREAK
19766 case 621:
19768 #line 5863 "scanner.l"
19769 { *specName += *scannerYYtext;
19770  if (roundCount==0) sharpCount++;
19771  }
19772  YY_BREAK
19773 case 622:
19775 #line 5866 "scanner.l"
19776 {
19777  *specName += *scannerYYtext;
19778  if (roundCount==0 && --sharpCount<=0)
19779  {
19782  }
19783  }
19784  YY_BREAK
19785 case 623:
19786 /* rule 623 can match eol */
19788 #line 5874 "scanner.l"
19789 { lineCount(); *specName +=' '; }
19790  YY_BREAK
19791 case 624:
19793 #line 5875 "scanner.l"
19794 { *specName += scannerYYtext; }
19795  YY_BREAK
19796 case 625:
19797 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
19798 (yy_c_buf_p) = yy_cp = yy_bp + 2;
19799 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
19801 #line 5876 "scanner.l"
19802 { // M$ C++ extension to allow >> to close a template...
19803  unput('>');
19804  unput(' ');
19805  unput('>');
19806  }
19807  YY_BREAK
19808 case 626:
19810 #line 5881 "scanner.l"
19811 {
19812  if (insideCS) // for C# >> ends a nested template
19813  {
19814  REJECT;
19815  }
19816  else // for C++ >> is a bitshift
19817  // operator and > > would end
19818  // a nested template.
19819  // We require the bitshift to be enclosed in braces.
19820  // See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
19821  {
19822  if (roundCount>0)
19823  {
19824  *specName += scannerYYtext;
19825  }
19826  else
19827  {
19828  unput('>');
19829  unput(' ');
19830  unput('>');
19831  }
19832  }
19833  }
19834  YY_BREAK
19835 case 627:
19836 /* rule 627 can match eol */
19838 #line 5904 "scanner.l"
19839 { lineCount(); }
19840  YY_BREAK
19841 case 628:
19843 #line 5905 "scanner.l"
19844 { *specName += *scannerYYtext; roundCount++; }
19845  YY_BREAK
19846 case 629:
19848 #line 5906 "scanner.l"
19849 { *specName += *scannerYYtext; roundCount--; }
19850  YY_BREAK
19851 case 630:
19853 #line 5907 "scanner.l"
19854 {
19855  *specName += *scannerYYtext;
19856  }
19857  YY_BREAK
19858 case 631:
19860 #line 5910 "scanner.l"
19861 { ++roundCount; }
19862  YY_BREAK
19863 case 632:
19865 #line 5911 "scanner.l"
19866 { if (--roundCount<0)
19868  }
19869  YY_BREAK
19870 case 633:
19872 #line 5914 "scanner.l"
19873 {
19875  BEGIN(SkipString);
19876  }
19877  YY_BREAK
19878 case 634:
19879 /* rule 634 can match eol */
19881 #line 5918 "scanner.l"
19882 { lineCount();
19883  if (insideProtocolList)
19884  {
19885  baseName+="-p";
19886  }
19887  else
19888  {
19889  current->args += ',' ;
19890  }
19892  if (!baseName.isEmpty())
19893  {
19896  );
19897  }
19899  insideJava || insidePHP || insideCS ||
19901  {
19902  baseProt=Public;
19903  }
19904  else
19905  {
19906  baseProt=Private;
19907  }
19908  baseVirt=Normal;
19909  baseName.resize(0);
19910  if (*scannerYYtext=='>')
19911  { // end of a ObjC protocol list
19913  if (scannerYYleng==1)
19914  {
19915  unput('{'); // dummy start body
19916  }
19917  else
19918  {
19919  yyless(1);
19920  }
19921  }
19922  else
19923  {
19924  if (*scannerYYtext==',' && insideObjC) // Begin of protocol list
19925  {
19927  }
19928  BEGIN(BasesProt);
19929  }
19930  }
19931  YY_BREAK
19932 case 635:
19934 #line 5967 "scanner.l"
19939  if (!baseName.isEmpty())
19942  );
19943  curlyCount=0;
19944  if (insideObjC)
19945  {
19946  BEGIN( ReadBodyIntf );
19947  }
19948  else
19949  {
19950  BEGIN( ReadBody ) ;
19951  }
19952  }
19953  YY_BREAK
19954 case 636:
19956 #line 5985 "scanner.l"
19957 {
19958  roundCount++;
19959  }
19960  YY_BREAK
19961 case 637:
19963 #line 5988 "scanner.l"
19964 {
19965  if (--roundCount==0)
19966  {
19967  BEGIN(ClassVar);
19968  }
19969  }
19970  YY_BREAK
19971 case 638:
19972 /* rule 638 can match eol */
19974 #line 5994 "scanner.l"
19975 { lineCount(); }
19976  YY_BREAK
19977 case 639:
19979 #line 5995 "scanner.l"
19980 
19981  YY_BREAK
19982 case 640:
19983 /* rule 640 can match eol */
19985 #line 5996 "scanner.l"
19987  lineCount() ;
19988  }
19989  YY_BREAK
19990 case 641:
19992 #line 5999 "scanner.l"
19993 { current->program += scannerYYtext ; }
19994  YY_BREAK
19995 case 642:
19997 #line 6000 "scanner.l"
19998 { current->program += scannerYYtext ; }
19999  YY_BREAK
20000 case 643:
20002 #line 6001 "scanner.l"
20003 {
20004  insideCode=TRUE;
20006  }
20007  YY_BREAK
20008 case 644:
20010 #line 6005 "scanner.l"
20011 {
20012  insideCode=FALSE;
20014  }
20015  YY_BREAK
20016 case 645:
20018 #line 6009 "scanner.l"
20019 { current->program += scannerYYtext ; }
20020  YY_BREAK
20021 case 646:
20023 #line 6010 "scanner.l"
20025  if (!insideCode) BEGIN( lastContext ) ;
20026  }
20027  YY_BREAK
20028 case 647:
20030 #line 6013 "scanner.l"
20031 { current->program += *scannerYYtext ; }
20032  YY_BREAK
20033 case 648:
20035 #line 6015 "scanner.l"
20036 {
20037  //printf("Start doc block at %d\n",yyLineNr);
20038  removeSlashes=(scannerYYtext[1]=='/');
20039  tmpDocType=-1;
20040  if (!current->doc.isEmpty())
20041  {
20042  current->doc+="\n\n";
20043  }
20044  else
20045  {
20048  }
20049 
20052  {
20053  current->inside = current_root->name+"::";
20054  }
20057  docBlockAutoBrief = Config_getBool("QT_AUTOBRIEF");
20058 
20059  QCString indent;
20061  docBlock=indent;
20062 
20063  if (docBlockAutoBrief)
20064  {
20067  }
20069  BEGIN( DocBlock );
20070  }
20071  YY_BREAK
20072 case 649:
20073 /* rule 649 can match eol */
20074 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20075 (yy_c_buf_p) = yy_cp -= 1;
20076 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20078 #line 6050 "scanner.l"
20079 {
20080  removeSlashes=(scannerYYtext[1]=='/');
20082 
20083  //printf("Found comment block at %s:%d\n",yyFileName,yyLineNr);
20085  {
20086  current->inside = current_root->name+"::";
20087  }
20092  static bool javadocAutoBrief = Config_getBool("JAVADOC_AUTOBRIEF");
20093  docBlockAutoBrief = javadocAutoBrief;
20094 
20095  QCString indent;
20097  docBlock=indent;
20098 
20099  if (docBlockAutoBrief)
20100  {
20103  }
20105  BEGIN( DocBlock );
20106  }
20107  YY_BREAK
20108 case 650:
20110 #line 6078 "scanner.l"
20111 {
20112  tmpDocType=-1;
20115  {
20116  current->inside = current_root->name+"::";
20117  }
20121 
20122  QCString indent;
20124  docBlock=indent;
20125 
20127  BEGIN( DocLine );
20128  }
20129  YY_BREAK
20130 case 651:
20131 /* rule 651 can match eol */
20132 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20133 (yy_c_buf_p) = yy_cp = yy_bp + 3;
20134 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20136 #line 6096 "scanner.l"
20137 {
20138  tmpDocType=-1;
20141  {
20142  current->inside = current_root->name+"::";
20143  }
20147  QCString indent;
20149  docBlock=indent;
20151  BEGIN( DocLine );
20152  }
20153  YY_BREAK
20154 case 652:
20155 /* rule 652 can match eol */
20157 #line 6112 "scanner.l"
20158 {
20159  lineCount();
20160  externC=TRUE;
20161  }
20162  YY_BREAK
20163 case 653:
20165 #line 6116 "scanner.l"
20166 {
20167  if (externC)
20168  {
20169  externC=FALSE;
20170  }
20171  else if (insideCS &&
20172  !current->name.isEmpty() &&
20173  !current->type.isEmpty())
20174  {
20175  if (containsWord(current->type,"event")) // event
20176  {
20177  current->mtype = mtype = Event;
20178  }
20179  else // property
20180  {
20181  current->mtype = mtype = Property;
20182  }
20184  curlyCount=0;
20185  BEGIN( CSAccessorDecl );
20186  }
20187  else if (insideIDL && (current->spec & Entry::Attribute))
20188  {
20189  // UNO IDL: attributes may have setter and getter
20190  // exception specifications
20191  current->exception = " {";
20193  }
20194  else
20195  {
20196  if ((insideJava || insideCS || insideD) &&
20197  current->name.isEmpty()
20198  )
20199  {
20200  // static Java initializer
20201  needsSemi = FALSE;
20202  if (current->stat)
20203  {
20204  current->name="[static initializer]";
20205  current->type.resize(0);
20206  }
20207  else
20208  {
20209  current->name="[instance initializer]";
20210  }
20211  unput(*scannerYYtext);
20212  BEGIN( Function );
20213  }
20214  else
20215  {
20216  // pre C++11 code -> ignore the initializer
20217  //needsSemi = TRUE;
20218  //current->type.resize(0);
20219  //current->name.resize(0);
20220  //current->args.resize(0);
20221  //current->argList->clear();
20222  //curlyCount=0;
20223  //BEGIN( SkipCurlyBlock );
20224 
20225  // C++11 style initializer list
20229  initBracketCount=1;
20231  }
20232  }
20233  }
20234  YY_BREAK
20235 case 654:
20237 #line 6184 "scanner.l"
20238 { curlyCount++; }
20239  YY_BREAK
20240 case 655:
20242 #line 6185 "scanner.l"
20243 {
20244  if (curlyCount)
20245  {
20246  curlyCount--;
20247  }
20248  else
20249  {
20250  mtype = Method;
20251  virt = Normal;
20252  unput(';');
20253  BEGIN(FindMembers);
20254  }
20255  }
20256  YY_BREAK
20257 case 656:
20258 /* rule 656 can match eol */
20260 #line 6198 "scanner.l"
20262  YY_BREAK
20263 case 657:
20264 /* rule 657 can match eol */
20266 #line 6199 "scanner.l"
20268  YY_BREAK
20269 case 658:
20270 /* rule 658 can match eol */
20272 #line 6200 "scanner.l"
20274  YY_BREAK
20275 case 659:
20276 /* rule 659 can match eol */
20278 #line 6201 "scanner.l"
20280  YY_BREAK
20281 case 660:
20283 #line 6202 "scanner.l"
20284 { if (curlyCount==0) current->spec |= Entry::Settable; }
20285  YY_BREAK
20286 case 661:
20288 #line 6203 "scanner.l"
20289 { if (curlyCount==0) current->spec |= Entry::Gettable; }
20290  YY_BREAK
20291 case 662:
20293 #line 6204 "scanner.l"
20294 { if (curlyCount==0) current->spec |= Entry::Addable; }
20295  YY_BREAK
20296 case 663:
20298 #line 6205 "scanner.l"
20299 { if (curlyCount==0) current->spec |= Entry::Removable; }
20300  YY_BREAK
20301 case 664:
20303 #line 6206 "scanner.l"
20304 { if (curlyCount==0) current->spec |= Entry::Raisable; }
20305  YY_BREAK
20306 case 665:
20308 #line 6207 "scanner.l"
20309 {}
20310  YY_BREAK
20311 case 666:
20312 /* rule 666 can match eol */
20314 #line 6208 "scanner.l"
20315 { lineCount(); }
20316  YY_BREAK
20317 /**********************************************************************************/
20318 /******************** Documentation block related rules ***************************/
20319 /**********************************************************************************/
20320 /* ---- Single line comments ------ */
20321 case 667:
20322 /* rule 667 can match eol */
20324 #line 6218 "scanner.l"
20325 { // continuation of multiline C++-style comment
20327  docBlock.resize(docBlock.length() - 3);
20328  lineCount();
20329  }
20330  YY_BREAK
20331 case 668:
20332 /* rule 668 can match eol */
20333 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20334 (yy_c_buf_p) = yy_cp -= 1;
20335 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20337 #line 6223 "scanner.l"
20338 { // ignore marker line (see bug700345)
20341  }
20342  YY_BREAK
20343 case 669:
20344 /* rule 669 can match eol */
20345 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20346 (yy_c_buf_p) = yy_cp -= 1;
20347 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20349 #line 6227 "scanner.l"
20350 { // whole line
20354  }
20355  YY_BREAK
20356 /* ---- Comments blocks ------ */
20357 case 670:
20359 #line 6235 "scanner.l"
20360 { // end of comment block
20363  }
20364  YY_BREAK
20365 case 671:
20366 /* rule 671 can match eol */
20367 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20368 (yy_c_buf_p) = yy_cp -= 1;
20369 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20371 #line 6239 "scanner.l"
20372 {
20373 
20374  QCString indent;
20376  docBlock+=indent;
20377  }
20378  YY_BREAK
20379 case 672:
20380 /* rule 672 can match eol */
20381 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20382 (yy_c_buf_p) = yy_cp -= 1;
20383 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20385 #line 6245 "scanner.l"
20386 { // start of a comment line
20387  QCString indent;
20389  docBlock+=indent;
20390  }
20391  YY_BREAK
20392 case 673:
20394 #line 6250 "scanner.l"
20395 { // strip embedded C++ comments if at the start of a line
20396  }
20397  YY_BREAK
20398 case 674:
20400 #line 6252 "scanner.l"
20401 { // slashes in the middle of a comment block
20403  }
20404  YY_BREAK
20405 case 675:
20407 #line 6255 "scanner.l"
20408 { // start of a new comment in the
20409  // middle of a comment block
20411  }
20412  YY_BREAK
20413 case 676:
20414 /* rule 676 can match eol */
20415 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20416 (yy_c_buf_p) = yy_cp -= 1;
20417 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20419 #line 6259 "scanner.l"
20420 { // escaped command
20422  }
20423  YY_BREAK
20424 case 677:
20426 #line 6262 "scanner.l"
20427 {
20430  if (docBlockName.at(1)=='{')
20431  {
20432  docBlockName.at(1)='}';
20433  }
20434  g_fencedSize=0;
20437  }
20438  YY_BREAK
20439 case 678:
20441 #line 6273 "scanner.l"
20442 {
20444  docBlockName="<pre>";
20445  g_fencedSize=0;
20448  }
20449  YY_BREAK
20450 case 679:
20451 /* rule 679 can match eol */
20452 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20453 (yy_c_buf_p) = yy_cp -= 1;
20454 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20456 #line 6280 "scanner.l"
20457 { // verbatim command (which could contain nested comments!)
20460  g_fencedSize=0;
20463  }
20464  YY_BREAK
20465 case 680:
20467 #line 6287 "scanner.l"
20468 {
20469  docBlock+=substitute(scannerYYtext,"*"," ");
20470  docBlockName="~~~";
20474  }
20475  YY_BREAK
20476 case 681:
20478 #line 6294 "scanner.l"
20479 {
20480  docBlock+=substitute(scannerYYtext,"*"," ");
20481  docBlockName="```";
20485  }
20486  YY_BREAK
20487 case 682:
20489 #line 6301 "scanner.l"
20490 {
20491  if (insideCS)
20492  {
20494  docBlockName="<code>";
20497  }
20498  else
20499  {
20500  REJECT;
20501  }
20502  }
20503  YY_BREAK
20504 case 683:
20506 #line 6314 "scanner.l"
20507 { // any character that isn't special
20509  }
20510  YY_BREAK
20511 case 684:
20512 /* rule 684 can match eol */
20514 #line 6317 "scanner.l"
20515 { // newline
20516  lineCount();
20518  }
20519  YY_BREAK
20520 case 685:
20522 #line 6321 "scanner.l"
20523 { // command block
20525  }
20526  YY_BREAK
20527 /* ---- Copy verbatim sections ------ */
20528 case 686:
20530 #line 6327 "scanner.l"
20531 { // end of a <pre> block
20533  if (docBlockName=="<pre>")
20534  {
20535  BEGIN(DocBlock);
20536  }
20537  }
20538  YY_BREAK
20539 case 687:
20541 #line 6334 "scanner.l"
20542 { // end of a <code> block
20544  if (docBlockName=="<code>")
20545  {
20546  BEGIN(DocBlock);
20547  }
20548  }
20549  YY_BREAK
20550 case 688:
20552 #line 6341 "scanner.l"
20553 {
20555  BEGIN(DocBlock);
20556  }
20557  YY_BREAK
20558 case 689:
20559 /* rule 689 can match eol */
20560 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20561 (yy_c_buf_p) = yy_cp -= 1;
20562 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20564 #line 6345 "scanner.l"
20565 { // end of verbatim block
20567  if (&scannerYYtext[4]==docBlockName)
20568  {
20569  BEGIN(DocBlock);
20570  }
20571  }
20572  YY_BREAK
20573 case 690:
20574 /* rule 690 can match eol */
20576 #line 6352 "scanner.l"
20577 { // start of a comment line
20578  if (docBlockName=="verbatim")
20579  {
20580  REJECT;
20581  }
20582  else if (docBlockName=="code")
20583  {
20584  REJECT;
20585  }
20586  else
20587  {
20588  QCString indent;
20589  indent.fill(' ',computeIndent(scannerYYtext,0));
20590  docBlock+=indent;
20591  }
20592  }
20593  YY_BREAK
20594 case 691:
20595 /* rule 691 can match eol */
20597 #line 6368 "scanner.l"
20598 { // start of a comment line with two *'s
20599  if (docBlockName=="code")
20600  {
20601  QCString indent;
20602  indent.fill(' ',computeIndent(scannerYYtext,0));
20603  docBlock+=indent;
20604  }
20605  else
20606  {
20607  REJECT;
20608  }
20609  }
20610  YY_BREAK
20611 case 692:
20613 #line 6380 "scanner.l"
20614 { // Assume *var or *(... is part of source code (see bug723516)
20615  if (docBlockName=="code")
20616  {
20617  QCString indent;
20618  indent.fill(' ',computeIndent(scannerYYtext,-1));
20619  docBlock+=indent+"*";
20620  }
20621  else
20622  {
20623  REJECT;
20624  }
20625  }
20626  YY_BREAK
20627 case 693:
20628 /* rule 693 can match eol */
20630 #line 6392 "scanner.l"
20631 { // start of a comment line with one *
20632  if (docBlockName=="code")
20633  {
20634  QCString indent;
20635  if (g_nestedComment) // keep * it is part of the code
20636  {
20637  indent.fill(' ',computeIndent(scannerYYtext,-1));
20638  docBlock+=indent+"*";
20639  }
20640  else // remove * it is part of the comment block
20641  {
20642  indent.fill(' ',computeIndent(scannerYYtext,0));
20643  docBlock+=indent;
20644  }
20645  }
20646  else
20647  {
20648  REJECT;
20649  }
20650  }
20651  YY_BREAK
20652 case 694:
20654 #line 6412 "scanner.l"
20655 {
20656  docBlock+=substitute(scannerYYtext,"*"," ");
20658  {
20659  BEGIN(DocBlock);
20660  }
20661  }
20662  YY_BREAK
20663 case 695:
20665 #line 6419 "scanner.l"
20666 {
20667  docBlock+=substitute(scannerYYtext,"*"," ");
20669  {
20670  BEGIN(DocBlock);
20671  }
20672  }
20673  YY_BREAK
20674 case 696:
20676 #line 6426 "scanner.l"
20677 { // any character that is not special
20679  }
20680  YY_BREAK
20681 case 697:
20683 #line 6429 "scanner.l"
20684 {
20685  if (scannerYYtext[1]=='*')
20686  {
20688  }
20689  else if (scannerYYtext[0]=='*')
20690  {
20692  }
20694  }
20695  YY_BREAK
20696 case 698:
20697 /* rule 698 can match eol */
20699 #line 6440 "scanner.l"
20700 { // newline
20702  lineCount();
20703  }
20704  YY_BREAK
20705 case 699:
20707 #line 6444 "scanner.l"
20708 { // any other character
20710  }
20711  YY_BREAK
20713 #line 6447 "scanner.l"
20714 {
20716  "reached end of file while inside a %s block!\n"
20717  "The command that should end the block seems to be missing!\n",
20718  docBlockName.data());
20719  yyterminate();
20720  }
20721  YY_BREAK
20722 /* ------------- Prototype parser -------------- */
20723 case 700:
20725 #line 6458 "scanner.l"
20726 {
20728  }
20729  YY_BREAK
20730 case 701:
20732 #line 6461 "scanner.l"
20733 {
20738  BEGIN( ReadFuncArgType ) ;
20739  }
20740  YY_BREAK
20741 case 702:
20743 #line 6468 "scanner.l"
20744 {
20746  current->name.resize(0);
20747  BEGIN( PrototypePtr );
20748  }
20749  YY_BREAK
20750 case 703:
20751 /* rule 703 can match eol */
20753 #line 6473 "scanner.l"
20754 {
20756  }
20757  YY_BREAK
20758 case 704:
20760 #line 6476 "scanner.l"
20761 {
20766  BEGIN( ReadFuncArgType ) ;
20767  }
20768  YY_BREAK
20769 case 705:
20771 #line 6483 "scanner.l"
20772 {
20773  current->type+=')';
20774  BEGIN( Prototype );
20775  }
20776  YY_BREAK
20777 case 706:
20779 #line 6487 "scanner.l"
20780 {
20782  }
20783  YY_BREAK
20784 case 707:
20786 #line 6490 "scanner.l"
20787 {
20789  }
20790  YY_BREAK
20791 case 708:
20793 #line 6493 "scanner.l"
20794 {
20795  current->args += " const ";
20797  }
20798  YY_BREAK
20799 case 709:
20801 #line 6497 "scanner.l"
20802 {
20803  current->args += " volatile ";
20805  }
20806  YY_BREAK
20807 case 710:
20809 #line 6501 "scanner.l"
20810 {
20811  current->args += " = 0";
20812  current->virt = Pure;
20814  }
20815  YY_BREAK
20816 case 711:
20818 #line 6506 "scanner.l"
20819 {
20820  current->exception = "throw(";
20822  }
20823  YY_BREAK
20824 case 712:
20826 #line 6510 "scanner.l"
20827 {
20828  current->exception += ')';
20830  }
20831  YY_BREAK
20832 case 713:
20834 #line 6514 "scanner.l"
20835 {
20837  }
20838  YY_BREAK
20839 case 714:
20841 #line 6517 "scanner.l"
20842 {
20843  current->args += *scannerYYtext;
20844  }
20845  YY_BREAK
20846 case 715:
20848 #line 6520 "scanner.l"
20849 {
20850  current->name += *scannerYYtext;
20851  }
20852  YY_BREAK
20853 case 716:
20855 #line 6523 "scanner.l"
20856 {
20857  }
20858  YY_BREAK
20859 /* ------------ Generic rules -------------- */
20860 case 717:
20861 /* rule 717 can match eol */
20863 #line 6530 "scanner.l"
20864 { // line continuation
20865  if (insideCS)
20866  {
20867  REJECT;
20868  }
20869  else
20870  {
20871  lineCount();
20872  }
20873  }
20874  YY_BREAK
20875 case 718:
20876 /* rule 718 can match eol */
20877 *yy_cp = (yy_hold_char); /* undo effects of setting up scannerYYtext */
20878 (yy_c_buf_p) = yy_cp -= 1;
20879 YY_DO_BEFORE_ACTION; /* set up scannerYYtext again */
20881 #line 6540 "scanner.l"
20882 {
20883  BEGIN( lastCContext ) ;
20884  }
20885  YY_BREAK
20886 case 719:
20888 #line 6543 "scanner.l"
20889 
20890  YY_BREAK
20891 case 720:
20893 #line 6545 "scanner.l"
20894 { // C++11 attribute
20897  }
20898  YY_BREAK
20899 case 721:
20900 /* rule 721 can match eol */
20902 #line 6550 "scanner.l"
20903 { lineCount(); }
20904  YY_BREAK
20905 case 722:
20907 #line 6551 "scanner.l"
20908 {
20909  if (insideIDL && insideCppQuote)
20910  {
20911  BEGIN(EndCppQuote);
20912  }
20913  }
20914  YY_BREAK
20915 case 723:
20917 #line 6557 "scanner.l"
20918 {
20919  if (!insidePHP)
20920  REJECT;
20922  BEGIN( SkipCxxComment ) ;
20923  }
20924  YY_BREAK
20925 case 724:
20927 #line 6563 "scanner.l"
20928 {
20929  if (insidePHP)
20930  {
20933  }
20934  }
20935  YY_BREAK
20936 case 725:
20938 #line 6570 "scanner.l"
20939 {
20940  if (insidePHP)
20941  {
20943  BEGIN(SkipString);
20944  }
20945  }
20946  YY_BREAK
20947 case 726:
20949 #line 6577 "scanner.l"
20950 
20951  YY_BREAK
20952 case 727:
20954 #line 6578 "scanner.l"
20955 
20956  YY_BREAK
20957 case 728:
20959 #line 6579 "scanner.l"
20960 { lastCContext = YY_START ;
20961  BEGIN( SkipComment ) ;
20962  }
20963  YY_BREAK
20964 case 729:
20966 #line 6582 "scanner.l"
20967 { BEGIN( lastCContext ) ; }
20968  YY_BREAK
20969 case 730:
20971 #line 6583 "scanner.l"
20972 {
20974  BEGIN( SkipCxxComment ) ;
20975  }
20976  YY_BREAK
20977 case 731:
20979 #line 6587 "scanner.l"
20980 ECHO;
20981  YY_BREAK
20982 #line 20983 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/scanner.cpp"
20983  case YY_STATE_EOF(INITIAL):
20984  case YY_STATE_EOF(AlignAs):
20985  case YY_STATE_EOF(AlignAsEnd):
20986  case YY_STATE_EOF(Define):
20987  case YY_STATE_EOF(DefineEnd):
20988  case YY_STATE_EOF(CompoundName):
20989  case YY_STATE_EOF(ClassVar):
20990  case YY_STATE_EOF(CSConstraintName):
20991  case YY_STATE_EOF(CSConstraintType):
20992  case YY_STATE_EOF(CSIndexer):
20993  case YY_STATE_EOF(ClassCategory):
20994  case YY_STATE_EOF(ClassTemplSpec):
20995  case YY_STATE_EOF(CliPropertyType):
20996  case YY_STATE_EOF(CliPropertyIndex):
20997  case YY_STATE_EOF(CliOverride):
20998  case YY_STATE_EOF(Bases):
20999  case YY_STATE_EOF(BasesProt):
21000  case YY_STATE_EOF(NextSemi):
21001  case YY_STATE_EOF(BitFields):
21002  case YY_STATE_EOF(EnumBaseType):
21003  case YY_STATE_EOF(FindMembers):
21004  case YY_STATE_EOF(FindMembersPHP):
21005  case YY_STATE_EOF(FindMemberName):
21006  case YY_STATE_EOF(FindFields):
21007  case YY_STATE_EOF(FindFieldArg):
21008  case YY_STATE_EOF(Function):
21009  case YY_STATE_EOF(FuncRound):
21010  case YY_STATE_EOF(ExcpRound):
21011  case YY_STATE_EOF(ExcpList):
21012  case YY_STATE_EOF(FuncQual):
21013  case YY_STATE_EOF(TrailingReturn):
21014  case YY_STATE_EOF(Operator):
21015  case YY_STATE_EOF(Array):
21016  case YY_STATE_EOF(ReadBody):
21017  case YY_STATE_EOF(ReadNSBody):
21018  case YY_STATE_EOF(ReadBodyIntf):
21019  case YY_STATE_EOF(Using):
21020  case YY_STATE_EOF(UsingAlias):
21021  case YY_STATE_EOF(UsingAliasEnd):
21022  case YY_STATE_EOF(UsingDirective):
21023  case YY_STATE_EOF(SkipCurly):
21024  case YY_STATE_EOF(SkipCurlyCpp):
21025  case YY_STATE_EOF(SkipCurlyEndDoc):
21026  case YY_STATE_EOF(SkipString):
21027  case YY_STATE_EOF(SkipPHPString):
21028  case YY_STATE_EOF(SkipInits):
21029  case YY_STATE_EOF(SkipC11Inits):
21030  case YY_STATE_EOF(SkipC11Attribute):
21031  case YY_STATE_EOF(SkipCPP):
21032  case YY_STATE_EOF(SkipCPPBlock):
21033  case YY_STATE_EOF(SkipComment):
21034  case YY_STATE_EOF(SkipCxxComment):
21035  case YY_STATE_EOF(SkipCurlyBlock):
21036  case YY_STATE_EOF(SkipRoundBlock):
21037  case YY_STATE_EOF(Sharp):
21038  case YY_STATE_EOF(SkipRound):
21039  case YY_STATE_EOF(SkipSquare):
21040  case YY_STATE_EOF(SkipRemainder):
21041  case YY_STATE_EOF(StaticAssert):
21042  case YY_STATE_EOF(DeclType):
21043  case YY_STATE_EOF(TypedefName):
21044  case YY_STATE_EOF(TryFunctionBlock):
21045  case YY_STATE_EOF(TryFunctionBlockEnd):
21046  case YY_STATE_EOF(Comment):
21047  case YY_STATE_EOF(PackageName):
21048  case YY_STATE_EOF(JavaImport):
21049  case YY_STATE_EOF(PHPUse):
21050  case YY_STATE_EOF(PHPUseAs):
21051  case YY_STATE_EOF(CSAccessorDecl):
21052  case YY_STATE_EOF(CSGeneric):
21053  case YY_STATE_EOF(PreLineCtrl):
21054  case YY_STATE_EOF(DefinePHP):
21055  case YY_STATE_EOF(DefinePHPEnd):
21056  case YY_STATE_EOF(OldStyleArgs):
21057  case YY_STATE_EOF(SkipVerbString):
21058  case YY_STATE_EOF(ObjCMethod):
21059  case YY_STATE_EOF(ObjCReturnType):
21060  case YY_STATE_EOF(ObjCParams):
21061  case YY_STATE_EOF(ObjCParamType):
21062  case YY_STATE_EOF(ObjCProtocolList):
21063  case YY_STATE_EOF(ObjCPropAttr):
21064  case YY_STATE_EOF(ObjCSkipStatement):
21065  case YY_STATE_EOF(QtPropType):
21066  case YY_STATE_EOF(QtPropName):
21067  case YY_STATE_EOF(QtPropAttr):
21068  case YY_STATE_EOF(QtPropRead):
21069  case YY_STATE_EOF(QtPropWrite):
21070  case YY_STATE_EOF(ReadInitializer):
21071  case YY_STATE_EOF(UNOIDLAttributeBlock):
21072  case YY_STATE_EOF(GetCallType):
21073  case YY_STATE_EOF(CppQuote):
21074  case YY_STATE_EOF(EndCppQuote):
21075  case YY_STATE_EOF(MemberSpec):
21076  case YY_STATE_EOF(MemberSpecSkip):
21077  case YY_STATE_EOF(EndTemplate):
21078  case YY_STATE_EOF(FuncPtr):
21079  case YY_STATE_EOF(FuncPtrOperator):
21080  case YY_STATE_EOF(EndFuncPtr):
21081  case YY_STATE_EOF(ReadFuncArgType):
21082  case YY_STATE_EOF(ReadTempArgs):
21083  case YY_STATE_EOF(IDLUnionCase):
21084  case YY_STATE_EOF(NSAliasName):
21085  case YY_STATE_EOF(NSAliasArg):
21086  case YY_STATE_EOF(CopyString):
21087  case YY_STATE_EOF(CopyPHPString):
21088  case YY_STATE_EOF(CopyGString):
21089  case YY_STATE_EOF(CopyPHPGString):
21090  case YY_STATE_EOF(CopyRound):
21091  case YY_STATE_EOF(CopyCurly):
21092  case YY_STATE_EOF(GCopyRound):
21093  case YY_STATE_EOF(GCopyCurly):
21094  case YY_STATE_EOF(SkipUnionSwitch):
21095  case YY_STATE_EOF(Specialization):
21096  case YY_STATE_EOF(FuncPtrInit):
21097  case YY_STATE_EOF(FuncFunc):
21098  case YY_STATE_EOF(FuncFuncEnd):
21099  case YY_STATE_EOF(FuncFuncType):
21100  case YY_STATE_EOF(FuncFuncArray):
21101  case YY_STATE_EOF(CopyArgString):
21102  case YY_STATE_EOF(CopyArgPHPString):
21103  case YY_STATE_EOF(CopyArgRound):
21104  case YY_STATE_EOF(CopyArgSharp):
21105  case YY_STATE_EOF(CopyArgComment):
21106  case YY_STATE_EOF(CopyArgCommentLine):
21107  case YY_STATE_EOF(CopyArgVerbatim):
21108  case YY_STATE_EOF(HereDoc):
21109  case YY_STATE_EOF(HereDocEnd):
21110  case YY_STATE_EOF(CopyHereDoc):
21111  case YY_STATE_EOF(CopyHereDocEnd):
21112  case YY_STATE_EOF(RawString):
21113  case YY_STATE_EOF(RawGString):
21114  case YY_STATE_EOF(IDLAttribute):
21115  case YY_STATE_EOF(IDLProp):
21116  case YY_STATE_EOF(IDLPropName):
21117  case YY_STATE_EOF(Prototype):
21118  case YY_STATE_EOF(PrototypePtr):
21119  case YY_STATE_EOF(PrototypeQual):
21120  case YY_STATE_EOF(PrototypeExc):
21121  case YY_STATE_EOF(PrototypeSkipLine):
21122  case YY_STATE_EOF(DocLine):
21123  case YY_STATE_EOF(DocBlock):
21124  yyterminate();
21125 
21126  case YY_END_OF_BUFFER:
21127  {
21128  /* Amount of text matched not including the EOB char. */
21129  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
21130 
21131  /* Undo the effects of YY_DO_BEFORE_ACTION. */
21132  *yy_cp = (yy_hold_char);
21134 
21135  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
21136  {
21137  /* We're scanning a new file or input source. It's
21138  * possible that this happened because the user
21139  * just pointed scannerYYin at a new source and called
21140  * scannerYYlex(). If so, then we have to assure
21141  * consistency between YY_CURRENT_BUFFER and our
21142  * globals. Here is the right place to do so, because
21143  * this is the first action (other than possibly a
21144  * back-up) that will match for the new input source.
21145  */
21146  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
21147  YY_CURRENT_BUFFER_LVALUE->yy_input_file = scannerYYin;
21148  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
21149  }
21150 
21151  /* Note that here we test for yy_c_buf_p "<=" to the position
21152  * of the first EOB in the buffer, since yy_c_buf_p will
21153  * already have been incremented past the NUL character
21154  * (since all states make transitions on EOB to the
21155  * end-of-buffer state). Contrast this with the test
21156  * in input().
21157  */
21158  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
21159  { /* This was really a NUL. */
21160  yy_state_type yy_next_state;
21161 
21162  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
21163 
21164  yy_current_state = yy_get_previous_state( );
21165 
21166  /* Okay, we're now positioned to make the NUL
21167  * transition. We couldn't have
21168  * yy_get_previous_state() go ahead and do it
21169  * for us because it doesn't know how to deal
21170  * with the possibility of jamming (and we don't
21171  * want to build jamming into it because then it
21172  * will run more slowly).
21173  */
21174 
21175  yy_next_state = yy_try_NUL_trans( yy_current_state );
21176 
21178 
21179  if ( yy_next_state )
21180  {
21181  /* Consume the NUL. */
21182  yy_cp = ++(yy_c_buf_p);
21183  yy_current_state = yy_next_state;
21184  goto yy_match;
21185  }
21186 
21187  else
21188  {
21189  yy_cp = (yy_c_buf_p);
21190  goto yy_find_action;
21191  }
21192  }
21193 
21194  else switch ( yy_get_next_buffer( ) )
21195  {
21196  case EOB_ACT_END_OF_FILE:
21197  {
21199 
21200  if ( scannerYYwrap( ) )
21201  {
21202  /* Note: because we've taken care in
21203  * yy_get_next_buffer() to have set up
21204  * scannerYYtext, we can now set up
21205  * yy_c_buf_p so that if some total
21206  * hoser (like flex itself) wants to
21207  * call the scanner after we return the
21208  * YY_NULL, it'll still work - another
21209  * YY_NULL will get returned.
21210  */
21212 
21214  goto do_action;
21215  }
21216 
21217  else
21218  {
21219  if ( ! (yy_did_buffer_switch_on_eof) )
21220  YY_NEW_FILE;
21221  }
21222  break;
21223  }
21224 
21225  case EOB_ACT_CONTINUE_SCAN:
21226  (yy_c_buf_p) =
21227  (yytext_ptr) + yy_amount_of_matched_text;
21228 
21229  yy_current_state = yy_get_previous_state( );
21230 
21231  yy_cp = (yy_c_buf_p);
21233  goto yy_match;
21234 
21235  case EOB_ACT_LAST_MATCH:
21236  (yy_c_buf_p) =
21237  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
21238 
21239  yy_current_state = yy_get_previous_state( );
21240 
21241  yy_cp = (yy_c_buf_p);
21243  goto yy_find_action;
21244  }
21245  break;
21246  }
21247 
21248  default:
21250  "fatal flex scanner internal error--no action found" );
21251  } /* end of action switch */
21252  } /* end of scanning one token */
static QGString * pSkipVerbString
Definition: scanner.cpp:10930
static yyconst flex_int16_t yy_accept[4614]
Definition: scanner.cpp:987
#define YY_DO_BEFORE_ACTION
Definition: scanner.cpp:378
static QCString name
Definition: declinfo.cpp:673
static int yy_did_buffer_switch_on_eof
Definition: scanner.cpp:304
static const uint64 Gettable
Definition: entry.h:147
static int anonCount
Definition: scanner.cpp:10874
Definition: types.h:61
QGString program
the program text
Definition: entry.h:256
static QCString * specName
Definition: scanner.cpp:10891
QCString type
Definition: arguments.h:67
static bool insideProtocolList
Definition: scanner.cpp:10907
bool resize(uint newlen)
Definition: qcstring.h:225
Q_EXPORT int qstrncmp(const char *str1, const char *str2, uint len)
Definition: qcstring.h:101
#define StaticAssert
Definition: scanner.cpp:11575
static int lastCContext
Definition: scanner.cpp:10836
static int sharpCount
Definition: scanner.cpp:10858
static bool needsSemi
Definition: scanner.cpp:10936
static int curlyCount
Definition: scanner.cpp:10860
static yyconst flex_int16_t yy_def[5274]
Definition: scanner.cpp:2128
void reset()
Definition: entry.cpp:217
static char docBlockTerm
Definition: scanner.cpp:10950
static const uint64 NonAtomic
Definition: entry.h:161
static int yy_start
Definition: scanner.cpp:299
static const uint64 Published
Definition: entry.h:182
#define SkipInits
Definition: scanner.cpp:11562
#define ObjCParamType
Definition: scanner.cpp:11595
static const uint64 Ref
Definition: entry.h:123
This class represents an function or template argument list.
Definition: arguments.h:82
char * data() const
Definition: qgstring.h:42
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
static QCString scope
Definition: declinfo.cpp:668
bool proto
prototype ?
Definition: entry.h:247
static QCString aliasName
Definition: scanner.cpp:10889
#define SkipCurly
Definition: scanner.cpp:11557
uint64 spec
class/member specifiers
Definition: entry.h:243
static int lastSquareContext
Definition: scanner.cpp:10844
bool stat
static ?
Definition: entry.h:245
#define YY_BUFFER_NEW
Definition: scanner.cpp:254
static QCString fullArgString
Definition: scanner.cpp:10915
#define CopyHereDoc
Definition: scanner.cpp:11644
bool brief
Definition: types.h:32
Definition: types.h:29
static QCString idlAttr
Definition: scanner.cpp:10952
#define DefineEnd
Definition: scanner.cpp:11521
#define NSAliasArg
Definition: scanner.cpp:11619
void fixArgumentListForJavaScript(ArgumentList *al)
Definition: scanner.cpp:11339
static constexpr double g
Definition: Units.h:144
#define Specialization
Definition: scanner.cpp:11629
bool isEmpty() const
Definition: qcstring.h:189
#define FindMemberName
Definition: scanner.cpp:11539
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
static void addType(Entry *current)
Definition: scanner.cpp:11099
Class representing operators that can appear in template expressions.
Definition: template.cpp:428
#define FindMembers
Definition: scanner.cpp:11537
static void initEntry()
Definition: scanner.cpp:11002
#define REJECT
Definition: scanner.cpp:10763
static bool isTypedef
Definition: scanner.cpp:10883
static const uint64 Mutable
Definition: entry.h:145
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
static Entry * current
Definition: scanner.cpp:10865
uint length() const
Definition: qgstring.h:40
uint length() const
Definition: qcstring.h:195
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
#define CopyArgComment
Definition: scanner.cpp:11639
void append(const type *d)
Definition: qlist.h:73
#define CopyArgSharp
Definition: scanner.cpp:11638
static int yyBegColNr
Definition: scanner.cpp:10873
static QCString msArgs
Definition: scanner.cpp:10882
Definition: types.h:29
#define ReadBodyIntf
Definition: scanner.cpp:11552
Definition: entry.h:63
#define IDLUnionCase
Definition: scanner.cpp:11617
QCString read
property read accessor
Definition: entry.h:271
static QCString g_delimiter
Definition: scanner.cpp:10959
static const uint64 Abstract
Definition: entry.h:151
Definition: types.h:26
static yy_state_type yy_try_NUL_trans(yy_state_type current_state)
Definition: scanner.cpp:21399
static QGString docBlock
Definition: scanner.cpp:10946
static QCString * pCopyQuotedString
Definition: scanner.cpp:10920
#define EndFuncPtr
Definition: scanner.cpp:11614
static const uint64 ForwardDecl
Definition: entry.h:136
#define QtPropWrite
Definition: scanner.cpp:11603
static char * yy_full_match
Definition: scanner.cpp:10756
static QCString * pCopyRawString
Definition: scanner.cpp:10923
static const uint64 Exception
Definition: entry.h:128
#define SkipCurlyBlock
Definition: scanner.cpp:11569
#define DocBlock
Definition: scanner.cpp:11657
static const uint64 Sealed
Definition: entry.h:157
static const uint64 Settable
Definition: entry.h:146
char & at(uint i) const
Definition: qcstring.h:326
static bool docBlockInBody
Definition: scanner.cpp:10948
QCString argListToString(ArgumentList *al, bool useCanonicalType, bool showDefVals)
Definition: util.cpp:2151
static Entry * previous
Definition: scanner.cpp:10866
int briefLine
line number at which the brief desc. was found
Definition: entry.h:264
static int roundCount
Definition: scanner.cpp:10859
#define ExcpRound
Definition: scanner.cpp:11544
static char * yy_c_buf_p
Definition: scanner.cpp:297
#define CliOverride
Definition: scanner.cpp:11531
register char * yy_cp
Definition: scanner.cpp:11838
#define ObjCParams
Definition: scanner.cpp:11594
#define MemberSpecSkip
Definition: scanner.cpp:11610
#define IDLPropName
Definition: scanner.cpp:11650
static void splitKnRArg(QCString &oldStyleArgPtr, QCString &oldStyleArgName)
Definition: scanner.cpp:11226
static const uint64 Weak
Definition: entry.h:166
int docLine
line number at which the documentation was found
Definition: entry.h:261
const bool FALSE
Definition: qglobal.h:370
static const uint64 SealedClass
Definition: entry.h:131
Definition: types.h:26
ArgumentList * argList
member arguments as a list
Definition: entry.h:254
#define ReadNSBody
Definition: scanner.cpp:11551
static QCString * pCopyCurlyString
Definition: scanner.cpp:10922
void addSubEntry(Entry *e)
Definition: entry.cpp:206
#define EndCppQuote
Definition: scanner.cpp:11608
#define EOB_ACT_LAST_MATCH
Definition: scanner.cpp:181
static const uint64 ProtectedGettable
Definition: entry.h:140
static QGString * pCopyRoundGString
Definition: scanner.cpp:10926
#define HereDocEnd
Definition: scanner.cpp:11643
#define YY_MORE_ADJ
Definition: scanner.cpp:10775
QCString name
member name
Definition: entry.h:237
bool resize(uint newlen)
Definition: qgstring.cpp:96
#define CliPropertyType
Definition: scanner.cpp:11529
#define ObjCMethod
Definition: scanner.cpp:11592
static QCString stripPath(const QCString &s)
Definition: tagreader.cpp:1287
#define CopyArgVerbatim
Definition: scanner.cpp:11641
static const uint64 MaybeDefault
Definition: entry.h:180
static const uint64 NoExcept
Definition: entry.h:172
#define YY_END_OF_BUFFER
Definition: scanner.cpp:386
QCString left(uint len) const
Definition: qcstring.cpp:213
#define QtPropRead
Definition: scanner.cpp:11602
static const uint64 Assign
Definition: entry.h:164
#define ReadBody
Definition: scanner.cpp:11550
register int yy_act
Definition: scanner.cpp:11839
#define FindMembersPHP
Definition: scanner.cpp:11538
static int argSharpCount
Definition: scanner.cpp:10910
init
Definition: train.py:42
#define FuncRound
Definition: scanner.cpp:11543
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
static const uint64 Default
Definition: entry.h:170
void addSpecialListItem(const char *listName, int index)
Definition: entry.cpp:309
static int anonNSCount
Definition: scanner.cpp:10875
#define SkipC11Inits
Definition: scanner.cpp:11563
QCString id
libclang id
Definition: entry.h:290
static Entry * firstTypedefEntry
Definition: scanner.cpp:10868
#define YY_BREAK
Definition: scanner.cpp:11824
#define FuncPtrInit
Definition: scanner.cpp:11630
#define Comment
Definition: scanner.cpp:11580
#define SkipCurlyEndDoc
Definition: scanner.cpp:11559
static ArgumentList * currentArgumentList
Definition: scanner.cpp:10917
static Entry * memspecEntry
Definition: scanner.cpp:10869
static int yy_full_lp
Definition: scanner.cpp:10759
static QStrList * l
Definition: config.cpp:1044
Definition: types.h:26
static QCString * pCopyRoundString
Definition: scanner.cpp:10921
int yy_state_type
Definition: code.cpp:361
Definition: types.h:32
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
Entry * parent() const
Definition: entry.h:205
static int lastCommentInArgContext
Definition: scanner.cpp:10849
#define CopyArgCommentLine
Definition: scanner.cpp:11640
#define BitFields
Definition: scanner.cpp:11535
static void lineCount()
Definition: scanner.cpp:11062
Definition: types.h:29
static int initBracketCount
Definition: scanner.cpp:10939
static QCString yyFileName
Definition: scanner.cpp:10876
static bool insideD
processing D code?
Definition: scanner.cpp:10899
int mGrpId
member group id
Definition: entry.h:278
#define SkipString
Definition: scanner.cpp:11560
#define CppQuote
Definition: scanner.cpp:11607
static bool checkForKnRstyleC()
Definition: scanner.cpp:11209
#define PreLineCtrl
Definition: scanner.cpp:11587
#define ClassVar
Definition: scanner.cpp:11523
#define UsingAliasEnd
Definition: scanner.cpp:11555
#define SkipVerbString
Definition: scanner.cpp:11591
#define SkipCxxComment
Definition: scanner.cpp:11568
static int lastSkipSharpContext
Definition: scanner.cpp:10839
QList< ArgumentList > * tArgLists
template argument declarations
Definition: entry.h:255
QCString copy() const
Definition: qcstring.h:250
static int yyLineNr
Definition: scanner.cpp:10870
static int lastCopyArgContext
Definition: scanner.cpp:10913
int startColumn
start column of entry in the source
Definition: entry.h:284
bool constSpecifier
Definition: arguments.h:99
#define SkipCurlyCpp
Definition: scanner.cpp:11558
static const uint64 Raisable
Definition: entry.h:154
static QCString msType
Definition: scanner.cpp:10882
static const uint64 Optional
Definition: entry.h:159
static const uint64 Explicit
Definition: entry.h:144
static int lastHereDocContext
Definition: scanner.cpp:10852
static int computeIndent(const char *s, int startIndent)
Definition: scanner.cpp:11084
#define INITIAL
Definition: scanner.cpp:11517
static yyconst flex_int32_t yy_ec[256]
Definition: scanner.cpp:1499
static QCString briefBackup
Definition: scanner.cpp:10943
int itemId
Definition: types.h:101
static const uint64 Inline
Definition: entry.h:143
static void startCommentBlock(bool)
Definition: scanner.cpp:22099
static yy_state_type * yy_state_buf
Definition: scanner.cpp:10755
static Protection protection
Definition: scanner.cpp:10856
static int yyBegLineNr
Definition: scanner.cpp:10871
#define CSConstraintType
Definition: scanner.cpp:11525
#define scannerYYwrap(n)
Definition: scanner.cpp:354
static const uint64 Strong
Definition: entry.h:165
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
static const uint64 Final
Definition: entry.h:150
#define SkipRoundBlock
Definition: scanner.cpp:11570
static Entry * tempEntry
Definition: scanner.cpp:10867
uint count() const
Definition: qlist.h:66
static SrcLangExt language
Definition: scanner.cpp:10895
#define ReadFuncArgType
Definition: scanner.cpp:11615
bool findAndRemoveWord(QCString &s, const QCString &word)
Definition: util.cpp:6848
bool volatileSpecifier
Definition: arguments.h:101
static bool insidePHP
processing PHP code?
Definition: scanner.cpp:10900
type * getLast() const
Definition: qlist.h:96
#define Sharp
Definition: scanner.cpp:11571
static QGString * pCopyRawGString
Definition: scanner.cpp:10929
#define DefinePHPEnd
Definition: scanner.cpp:11589
static const uint64 Retain
Definition: entry.h:163
Definition: types.h:32
#define IDLProp
Definition: scanner.cpp:11649
static Protection baseProt
Definition: scanner.cpp:10857
#define unput(c)
Definition: scanner.cpp:199
const double e
#define FuncFuncType
Definition: scanner.cpp:11633
#define ObjCReturnType
Definition: scanner.cpp:11593
static bool insideIDL
processing IDL code?
Definition: scanner.cpp:10896
static bool insideTryBlock
Definition: scanner.cpp:10934
static bool insideCS
processing C# code?
Definition: scanner.cpp:10898
static bool removeSlashes
Definition: scanner.cpp:10879
#define EndTemplate
Definition: scanner.cpp:11611
QList< Grouping > * groups
list of groups this entry belongs to
Definition: entry.h:280
QGString initializer
initial value (for variables)
Definition: entry.h:257
static const uint64 Transient
Definition: entry.h:178
#define PrototypeExc
Definition: scanner.cpp:11654
#define HereDoc
Definition: scanner.cpp:11642
#define MemberSpec
Definition: scanner.cpp:11609
QCString brief
brief description (doc block)
Definition: entry.h:263
#define Array
Definition: scanner.cpp:11549
int endBodyLine
line number where the definition ends
Definition: entry.h:277
bool containsWord(const QCString &s, const QCString &word)
Definition: util.cpp:6836
#define AlignAsEnd
Definition: scanner.cpp:11519
ArgumentList * typeConstr
where clause (C#) for type constraints
Definition: entry.h:275
#define DocLine
Definition: scanner.cpp:11656
#define TypedefName
Definition: scanner.cpp:11577
#define CopyHereDocEnd
Definition: scanner.cpp:11645
Definition: define.h:27
static yyconst flex_int16_t yy_acclist[5360]
Definition: scanner.cpp:394
static bool g_nestedComment
Definition: scanner.cpp:10964
#define YY_START
Definition: scanner.cpp:150
Definition: types.h:32
static int lastCPPContext
Definition: scanner.cpp:10838
#define TryFunctionBlock
Definition: scanner.cpp:11578
static int lastContext
Definition: scanner.cpp:10835
static bool nameIsOperator(QCString &name)
Definition: scanner.cpp:11139
QCString right(uint len) const
Definition: qcstring.cpp:231
static const uint64 Interface
Definition: entry.h:125
std::void_t< T > n
QCString lookup(uint line, const char *symbol)
#define CSConstraintName
Definition: scanner.cpp:11524
const double a
int toInt(bool *ok=0) const
Definition: qcstring.cpp:439
#define CliPropertyIndex
Definition: scanner.cpp:11530
static const uint64 Alias
Definition: entry.h:168
static const uint64 Protocol
Definition: entry.h:129
static const uint64 Enum
Definition: entry.h:133
static int lastRawStringContext
Definition: scanner.cpp:10850
#define Bases
Definition: scanner.cpp:11532
static void handleParametersCommentBlocks(ArgumentList *al)
Definition: scanner.cpp:22183
static const uint64 Addable
Definition: entry.h:152
#define ECHO
Definition: scanner.cpp:11745
#define PHPUse
Definition: scanner.cpp:11583
#define YY_RESTORE_YY_MORE_OFFSET
Definition: scanner.cpp:10776
static const uint64 New
Definition: entry.h:156
#define Function
Definition: scanner.cpp:11542
#define CopyPHPString
Definition: scanner.cpp:11621
static int squareCount
Definition: scanner.cpp:10861
#define GCopyRound
Definition: scanner.cpp:11626
#define UsingAlias
Definition: scanner.cpp:11554
#define AlignAs
Definition: scanner.cpp:11518
QCString exception
throw specification
Definition: entry.h:274
int startLine
start line of entry in the source
Definition: entry.h:283
#define SkipComment
Definition: scanner.cpp:11567
static int padCount
Definition: scanner.cpp:10862
static Specifier virt
Definition: scanner.cpp:10880
void stringToArgumentList(const char *argsString, ArgumentList *al, QCString *extraTypeChars)
Definition: defargs.cpp:2922
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
static void addKnRArgInfo(const QCString &type, const QCString &name, const QCString &brief, const QCString &docs)
Definition: scanner.cpp:11304
static int currentArgumentContext
Definition: scanner.cpp:10911
static int lastCSConstraint
Definition: scanner.cpp:10851
#define ReadTempArgs
Definition: scanner.cpp:11616
p
Definition: test.py:223
#define RawString
Definition: scanner.cpp:11646
QCString args
member argument string
Definition: entry.h:252
QCString write
property write accessor
Definition: entry.h:272
#define IDLAttribute
Definition: scanner.cpp:11648
#define CopyPHPGString
Definition: scanner.cpp:11623
#define CSAccessorDecl
Definition: scanner.cpp:11585
void clear()
Definition: qlist.h:82
void openGroup(Entry *e, const char *file, int line)
const char * data() const
Definition: qcstring.h:207
#define GCopyCurly
Definition: scanner.cpp:11627
#define PrototypeSkipLine
Definition: scanner.cpp:11655
static char yy_hold_char
Definition: scanner.cpp:292
string tmp
Definition: languages.py:63
static char lastCopyArgChar
Definition: scanner.cpp:10918
#define YY_BUFFER_NORMAL
Definition: scanner.cpp:255
Protection protection
class protection
Definition: entry.h:241
#define ClassCategory
Definition: scanner.cpp:11527
#define PackageName
Definition: scanner.cpp:11581
#define Config_getBool(val)
Definition: config.cpp:664
#define SkipSquare
Definition: scanner.cpp:11573
#define SkipPHPString
Definition: scanner.cpp:11561
static int yy_lp
Definition: scanner.cpp:10757
char * scannerYYtext
Definition: scanner.cpp:10777
static const uint64 Removable
Definition: entry.h:153
static const uint64 Required
Definition: entry.h:160
unsigned char YY_CHAR
Definition: code.cpp:357
#define YY_RULE_SETUP
Definition: scanner.cpp:11827
static const uint64 Property
Definition: entry.h:174
static int lastDocContext
Definition: scanner.cpp:10837
#define BasesProt
Definition: scanner.cpp:11533
static const uint64 Value
Definition: entry.h:124
#define CSIndexer
Definition: scanner.cpp:11526
#define SkipCPP
Definition: scanner.cpp:11565
register char * yy_bp
Definition: scanner.cpp:11838
static const uint64 Override
Definition: entry.h:155
#define FindFieldArg
Definition: scanner.cpp:11541
#define YY_STATE_EOF(state)
Definition: scanner.cpp:154
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static yyconst flex_int16_t yy_chk[36507]
Definition: scanner.cpp:6732
static void handleCommentBlock(const QCString &doc, bool brief)
Definition: scanner.cpp:22130
static bool insideCode
Definition: scanner.cpp:10935
#define PHPUseAs
Definition: scanner.cpp:11584
#define BEGIN
Definition: scanner.cpp:144
static int argRoundCount
Definition: scanner.cpp:10909
static bool insideCli
processing C++/CLI code?
Definition: scanner.cpp:10902
static int lastCopyArgStringContext
Definition: scanner.cpp:10912
static QCString funcPtrType
Definition: scanner.cpp:10887
static int lastSkipRoundContext
Definition: scanner.cpp:10840
static MethodTypes mtype
Definition: scanner.cpp:10877
static QCString oldStyleArgType
Definition: scanner.cpp:10941
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
#define RawGString
Definition: scanner.cpp:11647
#define yyterminate()
Definition: scanner.cpp:11789
static const uint64 Attribute
Definition: entry.h:173
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
int scannerYYleng
Definition: scanner.cpp:294
static int g_column
Definition: scanner.cpp:10961
#define DefinePHP
Definition: scanner.cpp:11588
#define QtPropAttr
Definition: scanner.cpp:11601
static bool insideObjC
processing Objective C code?
Definition: scanner.cpp:10901
QCString & sprintf(const char *format,...)
Definition: qcstring.cpp:27
#define CopyRound
Definition: scanner.cpp:11624
#define YY_SC_TO_UI(c)
Definition: scanner.cpp:138
#define YY_NEW_FILE
Definition: scanner.cpp:157
#define CopyString
Definition: scanner.cpp:11620
static yyconst flex_int32_t yy_base[5274]
Definition: scanner.cpp:1544
static Specifier baseVirt
Definition: scanner.cpp:10881
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
void closeGroup(Entry *e, const char *file, int line, bool foundInline=FALSE)
Specifier virt
virtualness of the entry
Definition: entry.h:251
bool pureSpecifier
Definition: arguments.h:103
#define OldStyleArgs
Definition: scanner.cpp:11590
static const uint64 Constrained
Definition: entry.h:177
static bool insideJava
processing Java code?
Definition: scanner.cpp:10897
QCString attrib
Definition: arguments.h:66
static const uint64 Unretained
Definition: entry.h:167
#define CopyCurly
Definition: scanner.cpp:11625
#define PrototypePtr
Definition: scanner.cpp:11652
#define YY_TRAILING_MASK
Definition: scanner.cpp:10761
static int lastSkipVerbStringContext
Definition: scanner.cpp:10848
#define CSGeneric
Definition: scanner.cpp:11586
#define ObjCProtocolList
Definition: scanner.cpp:11596
static const uint64 AbstractClass
Definition: entry.h:132
static const uint64 Initonly
Definition: entry.h:158
#define SkipUnionSwitch
Definition: scanner.cpp:11628
#define ObjCPropAttr
Definition: scanner.cpp:11597
static bool externC
Definition: scanner.cpp:10957
#define SkipCPPBlock
Definition: scanner.cpp:11566
#define yytext_ptr
Definition: scanner.cpp:368
#define CompoundName
Definition: scanner.cpp:11522
static int lastPreLineCtrlContext
Definition: scanner.cpp:10847
FILE * scannerYYin
Definition: scanner.cpp:359
bool isDeleted
Definition: arguments.h:107
static const uint64 Bound
Definition: entry.h:176
#define YY_AT_BOL()
Definition: scanner.cpp:350
static const uint64 PrivateSettable
Definition: entry.h:141
static const uint64 Readonly
Definition: entry.h:175
#define ExcpList
Definition: scanner.cpp:11545
static const uint64 Writable
Definition: entry.h:149
#define SkipC11Attribute
Definition: scanner.cpp:11564
#define FuncFuncArray
Definition: scanner.cpp:11634
static const uint64 Category
Definition: entry.h:130
static bool docBlockAutoBrief
Definition: scanner.cpp:10949
Definition: types.h:32
static QGString * pCopyQuotedGString
Definition: scanner.cpp:10927
#define JavaImport
Definition: scanner.cpp:11582
QCString name
Definition: arguments.h:69
void line(double t, double *p, double &x, double &y, double &z)
static StringDict namespaceAliasDict
Definition: doxygen.h:118
#define CopyArgString
Definition: scanner.cpp:11635
#define Using
Definition: scanner.cpp:11553
static int lastCurlyContext
Definition: scanner.cpp:10842
bool fill(char c, int len=-1)
Definition: qcstring.h:243
QCString fileName
file this entry was extracted from
Definition: entry.h:282
bool explicitExternal
explicitly defined as external?
Definition: entry.h:246
QCString doc
static Entry * current_root
Definition: scanner.cpp:10863
#define NextSemi
Definition: scanner.cpp:11534
QCString bitfields
member&#39;s bit fields
Definition: entry.h:253
QCString type
Definition: types.h:100
QCString inside
name of the class in which documents are found
Definition: entry.h:273
static QGString * pCopyCurlyGString
Definition: scanner.cpp:10925
#define QtPropName
Definition: scanner.cpp:11600
QCString trailingReturnType
Definition: arguments.h:105
#define NSAliasName
Definition: scanner.cpp:11618
static int lastRoundContext
Definition: scanner.cpp:10843
#define TryFunctionBlockEnd
Definition: scanner.cpp:11579
static yy_state_type * yy_state_ptr
Definition: scanner.cpp:10755
static int lastDefineContext
Definition: scanner.cpp:10853
static int lastAlignAsContext
Definition: scanner.cpp:10854
static QCString docBackup
Definition: scanner.cpp:10942
static int yy_get_next_buffer(void)
Definition: scanner.cpp:21262
static yy_state_type yy_get_previous_state(void)
Definition: scanner.cpp:21367
QCString docFile
file in which the documentation was found
Definition: entry.h:262
static QCString * copyArgString
Definition: scanner.cpp:10914
bool isId(int c)
Definition: util.h:224
#define GetCallType
Definition: scanner.cpp:11606
MethodTypes mtype
signal, slot, (dcop) method, or property?
Definition: entry.h:242
#define YY_TRAILING_HEAD_MASK
Definition: scanner.cpp:10762
static int * yy_full_state
Definition: scanner.cpp:10760
#define yyless(n)
Definition: scanner.cpp:21893
#define EOB_ACT_CONTINUE_SCAN
Definition: scanner.cpp:179
static int lastInitializerContext
Definition: scanner.cpp:10845
static int yyColNr
Definition: scanner.cpp:10872
float pi
Definition: units.py:11
static QCString docBlockName
Definition: scanner.cpp:10947
static int tmpDocType
Definition: scanner.cpp:10884
static int lastClassTemplSpecContext
Definition: scanner.cpp:10846
#define SkipRound
Definition: scanner.cpp:11572
static const uint64 Struct
Definition: entry.h:126
static QCString baseName
Definition: scanner.cpp:10890
#define SkipRemainder
Definition: scanner.cpp:11574
#define FuncPtrOperator
Definition: scanner.cpp:11613
static void prependScope()
Definition: scanner.cpp:11174
static ClangParser * instance()
Definition: clangparser.cpp:30
#define PrototypeQual
Definition: scanner.cpp:11653
static int yy_looking_for_trail_begin
Definition: scanner.cpp:10758
static int lastStringContext
Definition: scanner.cpp:10841
static const uint64 PrivateGettable
Definition: entry.h:139
static bool insideCpp
processing C/C++ code
Definition: scanner.cpp:10904
static QCString idlProp
Definition: scanner.cpp:10953
#define DeclType
Definition: scanner.cpp:11576
static const uint64 Union
Definition: entry.h:127
Q_EXPORT int qstrcmp(const char *str1, const char *str2)
Definition: qcstring.h:95
#define FindFields
Definition: scanner.cpp:11540
SrcLangExt lang
programming language in which this entry was found
Definition: entry.h:286
static const uint64 Service
Definition: entry.h:134
static QCString templateStr
Definition: scanner.cpp:10888
#define UNOIDLAttributeBlock
Definition: scanner.cpp:11605
static bool insideJS
processing JavaScript code?
Definition: scanner.cpp:10903
#define ClassTemplSpec
Definition: scanner.cpp:11528
Definition: entry.h:37
static const uint64 ProtectedSettable
Definition: entry.h:142
static QCString msName
Definition: scanner.cpp:10882
#define Prototype
Definition: scanner.cpp:11651
static yyconst flex_int32_t yy_meta[89]
Definition: scanner.cpp:1531
#define DocCopyBlock
Definition: scanner.cpp:11658
void setAutoDelete(bool enable)
Definition: qlist.h:99
#define CopyArgRound
Definition: scanner.cpp:11637
static int lastC11AttributeContext
Definition: scanner.cpp:10855
#define FuncPtr
Definition: scanner.cpp:11612
static bool insideCppQuote
Definition: scanner.cpp:10906
static int docBlockContext
Definition: scanner.cpp:10945
Definition: types.h:32
#define FuncFuncEnd
Definition: scanner.cpp:11632
static QCString * s
Definition: config.cpp:1042
#define UsingDirective
Definition: scanner.cpp:11556
static const uint64 Copy
Definition: entry.h:162
const bool TRUE
Definition: qglobal.h:371
static int yy_n_chars
Definition: scanner.cpp:293
QList< BaseInfo > * extends
list of base classes
Definition: entry.h:279
#define EnumBaseType
Definition: scanner.cpp:11536
#define TrailingReturn
Definition: scanner.cpp:11547
#define CopyGString
Definition: scanner.cpp:11622
QCString simplifyWhiteSpace() const
Definition: qcstring.cpp:323
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
#define ReadInitializer
Definition: scanner.cpp:11604
#define CopyArgPHPString
Definition: scanner.cpp:11636
static bool odlProp
Definition: scanner.cpp:10954
#define QtPropType
Definition: scanner.cpp:11599
static yyconst flex_int16_t yy_nxt[36507]
Definition: scanner.cpp:2712
#define FuncQual
Definition: scanner.cpp:11546
QCString type
member type
Definition: entry.h:236
static QGString * pCopyHereDocGString
Definition: scanner.cpp:10928
static QCString stripQuotes(const char *s)
Definition: scanner.cpp:11119
static const uint64 MaybeVoid
Definition: entry.h:179
#define EOB_ACT_END_OF_FILE
Definition: scanner.cpp:180
static const uint64 Singleton
Definition: entry.h:135
#define ObjCSkipStatement
Definition: scanner.cpp:11598
int section
entry type (see Sections);
Definition: entry.h:235
QCString docs
Definition: arguments.h:72
#define FuncFunc
Definition: scanner.cpp:11631
int bodyLine
line number of the definition in the source
Definition: entry.h:276
QCString briefFile
file in which the brief desc. was found
Definition: entry.h:265
QList< ListItemInfo > * sli
special lists (test/todo/bug/deprecated/..) this entry is in
Definition: entry.h:285
static const uint64 Readable
Definition: entry.h:148
static const uint64 Delete
Definition: entry.h:171
static int g_fencedSize
Definition: scanner.cpp:10963
static const uint64 MaybeAmbiguous
Definition: entry.h:181
static void yy_fatal_error ( yyconst char  msg[])
static
static void yy_fatal_error ( yyconst char *  msg)
static

Definition at line 21884 of file scanner.cpp.

21885 {
21886  (void) fprintf( stderr, "%s\n", msg );
21887  exit( YY_EXIT_FAILURE );
21888 }
void msg(const char *fmt,...)
Definition: message.cpp:107
#define YY_EXIT_FAILURE
Definition: scanner.cpp:21881
static int yy_get_next_buffer ( void  )
static

Definition at line 21262 of file scanner.cpp.

21263 {
21264  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
21265  register char *source = (yytext_ptr);
21266  register int number_to_move, i;
21267  int ret_val;
21268 
21269  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
21271  "fatal flex scanner internal error--end of buffer missed" );
21272 
21273  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
21274  { /* Don't try to fill the buffer, so this is an EOF. */
21275  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
21276  {
21277  /* We matched a single character, the EOB, so
21278  * treat this as a final EOF.
21279  */
21280  return EOB_ACT_END_OF_FILE;
21281  }
21282 
21283  else
21284  {
21285  /* We matched some text prior to the EOB, first
21286  * process it.
21287  */
21288  return EOB_ACT_LAST_MATCH;
21289  }
21290  }
21291 
21292  /* Try to read more data. */
21293 
21294  /* First move last chars to start of buffer. */
21295  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
21296 
21297  for ( i = 0; i < number_to_move; ++i )
21298  *(dest++) = *(source++);
21299 
21300  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
21301  /* don't do the read, it's not guaranteed to return an EOF,
21302  * just force an EOF
21303  */
21304  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
21305 
21306  else
21307  {
21308  int num_to_read =
21309  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
21310 
21311  while ( num_to_read <= 0 )
21312  { /* Not enough room in the buffer - grow it. */
21313 
21315 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
21316 
21317  }
21318 
21319  if ( num_to_read > YY_READ_BUF_SIZE )
21320  num_to_read = YY_READ_BUF_SIZE;
21321 
21322  /* Read in more data. */
21323  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
21324  (yy_n_chars), (size_t) num_to_read );
21325 
21326  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
21327  }
21328 
21329  if ( (yy_n_chars) == 0 )
21330  {
21331  if ( number_to_move == YY_MORE_ADJ )
21332  {
21333  ret_val = EOB_ACT_END_OF_FILE;
21335  }
21336 
21337  else
21338  {
21339  ret_val = EOB_ACT_LAST_MATCH;
21340  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
21342  }
21343  }
21344 
21345  else
21346  ret_val = EOB_ACT_CONTINUE_SCAN;
21347 
21348  if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
21349  /* Extend the array by 50%, plus the number we really need. */
21350  yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
21351  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) scannerYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
21352  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
21353  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
21354  }
21355 
21356  (yy_n_chars) += number_to_move;
21359 
21360  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
21361 
21362  return ret_val;
21363 }
#define YY_END_OF_BUFFER_CHAR
Definition: scanner.cpp:159
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
static char * yy_c_buf_p
Definition: scanner.cpp:297
#define EOB_ACT_LAST_MATCH
Definition: scanner.cpp:181
#define YY_MORE_ADJ
Definition: scanner.cpp:10775
void * scannerYYrealloc(void *, yy_size_t)
Definition: scanner.cpp:22074
void scannerYYrestart(FILE *input_file)
Definition: scanner.cpp:21536
#define YY_BUFFER_EOF_PENDING
Definition: scanner.cpp:266
#define yytext_ptr
Definition: scanner.cpp:368
FILE * scannerYYin
Definition: scanner.cpp:359
#define YY_READ_BUF_SIZE
Definition: scanner.cpp:11737
#define EOB_ACT_CONTINUE_SCAN
Definition: scanner.cpp:179
#define YY_INPUT(buf, result, max_size)
Definition: scanner.cpp:11356
size_t yy_size_t
Definition: code.cpp:203
static int yy_n_chars
Definition: scanner.cpp:293
#define EOB_ACT_END_OF_FILE
Definition: scanner.cpp:180
static yy_state_type yy_get_previous_state ( void  )
static

Definition at line 21367 of file scanner.cpp.

21368 {
21369  register yy_state_type yy_current_state;
21370  register char *yy_cp;
21371 
21372  yy_current_state = (yy_start);
21373  yy_current_state += YY_AT_BOL();
21374 
21375  (yy_state_ptr) = (yy_state_buf);
21376  *(yy_state_ptr)++ = yy_current_state;
21377 
21378  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
21379  {
21380  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
21381  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
21382  {
21383  yy_current_state = (int) yy_def[yy_current_state];
21384  if ( yy_current_state >= 4613 )
21385  yy_c = yy_meta[(unsigned int) yy_c];
21386  }
21387  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
21388  *(yy_state_ptr)++ = yy_current_state;
21389  }
21390 
21391  return yy_current_state;
21392 }
static yyconst flex_int16_t yy_def[5274]
Definition: scanner.cpp:2128
static int yy_start
Definition: scanner.cpp:299
static char * yy_c_buf_p
Definition: scanner.cpp:297
register char * yy_cp
Definition: scanner.cpp:11838
#define YY_MORE_ADJ
Definition: scanner.cpp:10775
int yy_state_type
Definition: code.cpp:361
static yyconst flex_int32_t yy_ec[256]
Definition: scanner.cpp:1499
static yy_state_type * yy_state_buf
Definition: scanner.cpp:10755
unsigned char YY_CHAR
Definition: code.cpp:357
static yyconst flex_int16_t yy_chk[36507]
Definition: scanner.cpp:6732
#define YY_SC_TO_UI(c)
Definition: scanner.cpp:138
static yyconst flex_int32_t yy_base[5274]
Definition: scanner.cpp:1544
#define yytext_ptr
Definition: scanner.cpp:368
#define YY_AT_BOL()
Definition: scanner.cpp:350
static yy_state_type * yy_state_ptr
Definition: scanner.cpp:10755
static yyconst flex_int32_t yy_meta[89]
Definition: scanner.cpp:1531
static yyconst flex_int16_t yy_nxt[36507]
Definition: scanner.cpp:2712
static int yy_init_globals ( void  )
static

Definition at line 21987 of file scanner.cpp.

21988 {
21989  /* Initialization is the same as for the non-reentrant scanner.
21990  * This function is called from scannerYYlex_destroy(), so don't allocate here.
21991  */
21992 
21993  (yy_buffer_stack) = 0;
21994  (yy_buffer_stack_top) = 0;
21995  (yy_buffer_stack_max) = 0;
21996  (yy_c_buf_p) = (char *) 0;
21997  (yy_init) = 0;
21998  (yy_start) = 0;
21999 
22000  (yy_state_buf) = 0;
22001  (yy_state_ptr) = 0;
22002  (yy_full_match) = 0;
22003  (yy_lp) = 0;
22004 
22005 /* Defined in main.c */
22006 #ifdef YY_STDINIT
22007  scannerYYin = stdin;
22008  scannerYYout = stdout;
22009 #else
22010  scannerYYin = (FILE *) 0;
22011  scannerYYout = (FILE *) 0;
22012 #endif
22013 
22014  /* For future reference: Set errno on error, since we are called by
22015  * scannerYYlex_init()
22016  */
22017  return 0;
22018 }
static int yy_start
Definition: scanner.cpp:299
static char * yy_full_match
Definition: scanner.cpp:10756
static char * yy_c_buf_p
Definition: scanner.cpp:297
static YY_BUFFER_STATE * yy_buffer_stack
Definition: scanner.cpp:274
static size_t yy_buffer_stack_max
Definition: scanner.cpp:273
static yy_state_type * yy_state_buf
Definition: scanner.cpp:10755
static size_t yy_buffer_stack_top
Definition: scanner.cpp:272
static int yy_lp
Definition: scanner.cpp:10757
FILE * scannerYYin
Definition: scanner.cpp:359
FILE * scannerYYout
Definition: scanner.cpp:359
static yy_state_type * yy_state_ptr
Definition: scanner.cpp:10755
static int yy_init
Definition: scanner.cpp:298
static yy_state_type yy_try_NUL_trans ( yy_state_type  current_state)
static

Definition at line 21399 of file scanner.cpp.

21400 {
21401  register int yy_is_jam;
21402 
21403  register YY_CHAR yy_c = 1;
21404  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
21405  {
21406  yy_current_state = (int) yy_def[yy_current_state];
21407  if ( yy_current_state >= 4613 )
21408  yy_c = yy_meta[(unsigned int) yy_c];
21409  }
21410  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
21411  yy_is_jam = (yy_current_state == 4612);
21412  if ( ! yy_is_jam )
21413  *(yy_state_ptr)++ = yy_current_state;
21414 
21415  return yy_is_jam ? 0 : yy_current_state;
21416 }
static yyconst flex_int16_t yy_def[5274]
Definition: scanner.cpp:2128
unsigned char YY_CHAR
Definition: code.cpp:357
static yyconst flex_int16_t yy_chk[36507]
Definition: scanner.cpp:6732
static yyconst flex_int32_t yy_base[5274]
Definition: scanner.cpp:1544
static yy_state_type * yy_state_ptr
Definition: scanner.cpp:10755
static yyconst flex_int32_t yy_meta[89]
Definition: scanner.cpp:1531
static yyconst flex_int16_t yy_nxt[36507]
Definition: scanner.cpp:2712
static int yyread ( char *  buf,
int  max_size 
)
static

Definition at line 11358 of file scanner.cpp.

11359 {
11360  int c=0;
11361  while( c < max_size && inputString[inputPosition] )
11362  {
11363  *buf = inputString[inputPosition++] ;
11364  //printf("%d (%c)\n",*buf,*buf);
11365  c++; buf++;
11366  }
11367  return c;
11368 }
static const char * inputString
Definition: scanner.cpp:10832
static int inputPosition
Definition: scanner.cpp:10833
static void yyunput ( int  c,
char *  buf_ptr 
)
static
static void yyunput ( int  c,
register char *  yy_bp 
)
static

Definition at line 21418 of file scanner.cpp.

21419 {
21420  register char *yy_cp;
21421 
21422  yy_cp = (yy_c_buf_p);
21423 
21424  /* undo effects of setting up scannerYYtext */
21425  *yy_cp = (yy_hold_char);
21426 
21427  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
21428  { /* need to shift things up to make room */
21429  /* +2 for EOB chars. */
21430  register int number_to_move = (yy_n_chars) + 2;
21431  register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
21432  YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
21433  register char *source =
21434  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
21435 
21436  while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
21437  *--dest = *--source;
21438 
21439  yy_cp += (int) (dest - source);
21440  yy_bp += (int) (dest - source);
21441  YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
21442  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
21443 
21444  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
21445  YY_FATAL_ERROR( "flex scanner push-back overflow" );
21446  }
21447 
21448  *--yy_cp = (char) c;
21449 
21450  (yytext_ptr) = yy_bp;
21451  (yy_hold_char) = *yy_cp;
21452  (yy_c_buf_p) = yy_cp;
21453 }
#define YY_CURRENT_BUFFER_LVALUE
Definition: scanner.cpp:289
#define YY_FATAL_ERROR(msg)
Definition: scanner.cpp:11799
static char * yy_c_buf_p
Definition: scanner.cpp:297
register char * yy_cp
Definition: scanner.cpp:11838
static char yy_hold_char
Definition: scanner.cpp:292
register char * yy_bp
Definition: scanner.cpp:11838
#define yytext_ptr
Definition: scanner.cpp:368
static int yy_n_chars
Definition: scanner.cpp:293
if(!(yy_init))
Definition: scanner.cpp:11846

Variable Documentation

QCString aliasName
static

Definition at line 10889 of file scanner.cpp.

int anonCount = 0
static

Definition at line 10874 of file scanner.cpp.

int anonNSCount = 0
static

Definition at line 10875 of file scanner.cpp.

int argRoundCount
static

Definition at line 10909 of file scanner.cpp.

int argSharpCount
static

Definition at line 10910 of file scanner.cpp.

QStack<Grouping> autoGroupStack
static

Definition at line 10931 of file scanner.cpp.

QCString baseName
static

Definition at line 10890 of file scanner.cpp.

Protection baseProt
static

Definition at line 10857 of file scanner.cpp.

Specifier baseVirt
static

Definition at line 10881 of file scanner.cpp.

QCString briefBackup
static

Definition at line 10943 of file scanner.cpp.

QCString* copyArgString
static

Definition at line 10914 of file scanner.cpp.

int curlyCount = 0
static

Definition at line 10860 of file scanner.cpp.

Entry* current = 0
static

Definition at line 10865 of file scanner.cpp.

Entry* current_root = 0
static

Definition at line 10863 of file scanner.cpp.

int currentArgumentContext
static

Definition at line 10911 of file scanner.cpp.

ArgumentList* currentArgumentList
static

Definition at line 10917 of file scanner.cpp.

QCString docBackup
static

Definition at line 10942 of file scanner.cpp.

QGString docBlock
static

Definition at line 10946 of file scanner.cpp.

bool docBlockAutoBrief
static

Definition at line 10949 of file scanner.cpp.

int docBlockContext
static

Definition at line 10945 of file scanner.cpp.

bool docBlockInBody
static

Definition at line 10948 of file scanner.cpp.

QCString docBlockName
static

Definition at line 10947 of file scanner.cpp.

char docBlockTerm
static

Definition at line 10950 of file scanner.cpp.

bool externC
static

Definition at line 10957 of file scanner.cpp.

Entry* firstTypedefEntry = 0
static

Definition at line 10868 of file scanner.cpp.

QCString formulaText
static

Definition at line 10892 of file scanner.cpp.

QCString fullArgString
static

Definition at line 10915 of file scanner.cpp.

QCString funcPtrType
static

Definition at line 10887 of file scanner.cpp.

int g_column
static

Definition at line 10961 of file scanner.cpp.

QCString g_delimiter
static

Definition at line 10959 of file scanner.cpp.

int g_fencedSize =0
static

Definition at line 10963 of file scanner.cpp.

bool g_lexInit = FALSE
static

Definition at line 10956 of file scanner.cpp.

bool g_nestedComment =0
static

Definition at line 10964 of file scanner.cpp.

ParserInterface* g_thisParser
static

Definition at line 10831 of file scanner.cpp.

Entry* global_root = 0
static

Definition at line 10864 of file scanner.cpp.

bool gstat
static

Definition at line 10878 of file scanner.cpp.

QCString idlAttr
static

Definition at line 10952 of file scanner.cpp.

QCString idlProp
static

Definition at line 10953 of file scanner.cpp.

int initBracketCount
static

Definition at line 10939 of file scanner.cpp.

QFile inputFile
static

Definition at line 10834 of file scanner.cpp.

int inputPosition
static

Definition at line 10833 of file scanner.cpp.

const char* inputString
static

Definition at line 10832 of file scanner.cpp.

bool insideCli = FALSE
static

processing C++/CLI code?

Definition at line 10902 of file scanner.cpp.

bool insideCode
static

Definition at line 10935 of file scanner.cpp.

bool insideCpp = TRUE
static

processing C/C++ code

Definition at line 10904 of file scanner.cpp.

bool insideCppQuote = FALSE
static

Definition at line 10906 of file scanner.cpp.

bool insideCS = FALSE
static

processing C# code?

Definition at line 10898 of file scanner.cpp.

bool insideD = FALSE
static

processing D code?

Definition at line 10899 of file scanner.cpp.

bool insideFormula
static

Definition at line 10933 of file scanner.cpp.

bool insideIDL = FALSE
static

processing IDL code?

Definition at line 10896 of file scanner.cpp.

bool insideJava = FALSE
static

processing Java code?

Definition at line 10897 of file scanner.cpp.

bool insideJS = FALSE
static

processing JavaScript code?

Definition at line 10903 of file scanner.cpp.

bool insideObjC = FALSE
static

processing Objective C code?

Definition at line 10901 of file scanner.cpp.

bool insidePHP = FALSE
static

processing PHP code?

Definition at line 10900 of file scanner.cpp.

bool insideProtocolList = FALSE
static

Definition at line 10907 of file scanner.cpp.

bool insideTryBlock =FALSE
static

Definition at line 10934 of file scanner.cpp.

bool isTypedef
static

Definition at line 10883 of file scanner.cpp.

SrcLangExt language
static

Definition at line 10895 of file scanner.cpp.

int lastAlignAsContext
static

Definition at line 10854 of file scanner.cpp.

int lastC11AttributeContext
static

Definition at line 10855 of file scanner.cpp.

int lastCContext
static

Definition at line 10836 of file scanner.cpp.

int lastClassTemplSpecContext
static

Definition at line 10846 of file scanner.cpp.

int lastCommentInArgContext
static

Definition at line 10849 of file scanner.cpp.

int lastContext
static

Definition at line 10835 of file scanner.cpp.

char lastCopyArgChar
static

Definition at line 10918 of file scanner.cpp.

int lastCopyArgContext
static

Definition at line 10913 of file scanner.cpp.

int lastCopyArgStringContext
static

Definition at line 10912 of file scanner.cpp.

int lastCPPContext
static

Definition at line 10838 of file scanner.cpp.

int lastCSConstraint
static

Definition at line 10851 of file scanner.cpp.

int lastCurlyContext
static

Definition at line 10842 of file scanner.cpp.

int lastDefineContext
static

Definition at line 10853 of file scanner.cpp.

int lastDocContext
static

Definition at line 10837 of file scanner.cpp.

int lastHereDocContext
static

Definition at line 10852 of file scanner.cpp.

int lastInitializerContext
static

Definition at line 10845 of file scanner.cpp.

int lastPreLineCtrlContext
static

Definition at line 10847 of file scanner.cpp.

int lastRawStringContext
static

Definition at line 10850 of file scanner.cpp.

int lastRoundContext
static

Definition at line 10843 of file scanner.cpp.

int lastSkipRoundContext
static

Definition at line 10840 of file scanner.cpp.

int lastSkipSharpContext
static

Definition at line 10839 of file scanner.cpp.

int lastSkipVerbStringContext
static

Definition at line 10848 of file scanner.cpp.

int lastSquareContext
static

Definition at line 10844 of file scanner.cpp.

int lastStringContext
static

Definition at line 10841 of file scanner.cpp.

Entry* memspecEntry = 0
static

Definition at line 10869 of file scanner.cpp.

QCString msArgs
static

Definition at line 10882 of file scanner.cpp.

QCString msName
static

Definition at line 10882 of file scanner.cpp.

QCString msType
static

Definition at line 10882 of file scanner.cpp.

MethodTypes mtype
static

Definition at line 10877 of file scanner.cpp.

bool needsSemi
static

Definition at line 10936 of file scanner.cpp.

bool odlProp
static

Definition at line 10954 of file scanner.cpp.

QCString oldStyleArgType
static

Definition at line 10941 of file scanner.cpp.

int padCount = 0
static

Definition at line 10862 of file scanner.cpp.

QGString* pCopyCurlyGString
static

Definition at line 10925 of file scanner.cpp.

QCString* pCopyCurlyString
static

Definition at line 10922 of file scanner.cpp.

QGString* pCopyHereDocGString
static

Definition at line 10928 of file scanner.cpp.

QGString* pCopyQuotedGString
static

Definition at line 10927 of file scanner.cpp.

QCString* pCopyQuotedString
static

Definition at line 10920 of file scanner.cpp.

QGString* pCopyRawGString
static

Definition at line 10929 of file scanner.cpp.

QCString* pCopyRawString
static

Definition at line 10923 of file scanner.cpp.

QGString* pCopyRoundGString
static

Definition at line 10926 of file scanner.cpp.

QCString* pCopyRoundString
static

Definition at line 10921 of file scanner.cpp.

Entry* previous = 0
static

Definition at line 10866 of file scanner.cpp.

Protection protection
static

Definition at line 10856 of file scanner.cpp.

QGString* pSkipVerbString
static

Definition at line 10930 of file scanner.cpp.

bool removeSlashes
static

Definition at line 10879 of file scanner.cpp.

int roundCount = 0
static

Definition at line 10859 of file scanner.cpp.

int scannerYY_flex_debug = 0

Definition at line 10753 of file scanner.cpp.

FILE * scannerYYin = (FILE *) 0

Definition at line 359 of file scanner.cpp.

int scannerYYleng

Definition at line 294 of file scanner.cpp.

int scannerYYlineno = 1

Definition at line 365 of file scanner.cpp.

FILE * scannerYYout = (FILE *) 0

Definition at line 359 of file scanner.cpp.

char * scannerYYtext

Definition at line 10777 of file scanner.cpp.

QCString sectionLabel
static

Definition at line 10885 of file scanner.cpp.

QCString sectionTitle
static

Definition at line 10886 of file scanner.cpp.

int sharpCount = 0
static

Definition at line 10858 of file scanner.cpp.

QCString* specName
static

Definition at line 10891 of file scanner.cpp.

int squareCount = 0
static

Definition at line 10861 of file scanner.cpp.

Entry* tempEntry = 0
static

Definition at line 10867 of file scanner.cpp.

QCString templateStr
static

Definition at line 10888 of file scanner.cpp.

int tmpDocType
static

Definition at line 10884 of file scanner.cpp.

bool useOverrideCommands = FALSE
static

Definition at line 10893 of file scanner.cpp.

Specifier virt
static

Definition at line 10880 of file scanner.cpp.

yyconst flex_int16_t yy_accept[4614]
static

Definition at line 987 of file scanner.cpp.

yyconst flex_int16_t yy_acclist[5360]
static

Definition at line 394 of file scanner.cpp.

register int yy_act

Definition at line 11839 of file scanner.cpp.

yyconst flex_int32_t yy_base[5274]
static

Definition at line 1544 of file scanner.cpp.

register char * yy_bp

Definition at line 11838 of file scanner.cpp.

YY_BUFFER_STATE* yy_buffer_stack = 0
static

Stack as an array.

Definition at line 274 of file scanner.cpp.

size_t yy_buffer_stack_max = 0
static

capacity of stack.

Definition at line 273 of file scanner.cpp.

size_t yy_buffer_stack_top = 0
static

index of top of stack.

Definition at line 272 of file scanner.cpp.

char* yy_c_buf_p = (char *) 0
static

Definition at line 297 of file scanner.cpp.

yyconst flex_int16_t yy_chk[36507]
static

Definition at line 6732 of file scanner.cpp.

register char* yy_cp

Definition at line 11838 of file scanner.cpp.

YY_DECL
Initial value:
{
register yy_state_type yy_current_state
int yy_state_type
Definition: code.cpp:361

The main scanner function which does all the work.

Definition at line 11836 of file scanner.cpp.

yyconst flex_int16_t yy_def[5274]
static

Definition at line 2128 of file scanner.cpp.

int yy_did_buffer_switch_on_eof
static

Definition at line 304 of file scanner.cpp.

yyconst flex_int32_t yy_ec[256]
static

Definition at line 1499 of file scanner.cpp.

int yy_full_lp
static

Definition at line 10759 of file scanner.cpp.

char* yy_full_match
static

Definition at line 10756 of file scanner.cpp.

int* yy_full_state
static

Definition at line 10760 of file scanner.cpp.

char yy_hold_char
static

Definition at line 292 of file scanner.cpp.

int yy_init = 0
static

Definition at line 298 of file scanner.cpp.

int yy_looking_for_trail_begin = 0
static

Definition at line 10758 of file scanner.cpp.

int yy_lp
static

Definition at line 10757 of file scanner.cpp.

yyconst flex_int32_t yy_meta[89]
static
Initial value:
=
{ 0,
1, 2, 3, 4, 2, 5, 6, 7, 8, 1,
9, 10, 11, 12, 13, 1, 14, 1, 15, 16,
17, 17, 17, 17, 17, 17, 18, 19, 20, 21,
22, 1, 23, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 25, 26, 27, 28, 24, 29, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 30, 1, 31, 32, 33
}

Definition at line 1531 of file scanner.cpp.

int yy_n_chars
static

Definition at line 293 of file scanner.cpp.

yyconst flex_int16_t yy_nxt[36507]
static

Definition at line 2712 of file scanner.cpp.

int yy_start = 0
static

Definition at line 299 of file scanner.cpp.

yy_state_type* yy_state_buf =0
static

Definition at line 10755 of file scanner.cpp.

yy_state_type * yy_state_ptr =0
static

Definition at line 10755 of file scanner.cpp.

int yyBegColNr = yyColNr
static

Definition at line 10873 of file scanner.cpp.

int yyBegLineNr = yyLineNr
static

Definition at line 10871 of file scanner.cpp.

int yyColNr = 1
static

Definition at line 10872 of file scanner.cpp.

QCString yyFileName
static

Definition at line 10876 of file scanner.cpp.

int yyLineNr = 1
static

Definition at line 10870 of file scanner.cpp.