Classes | Macros | Typedefs | Enumerations | Functions | Variables
commentscan.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 "doxygen.h"
#include "message.h"
#include "config.h"
#include "util.h"
#include "index.h"
#include "defargs.h"
#include "language.h"
#include "outputlist.h"
#include "membergroup.h"
#include "reflist.h"
#include "debug.h"
#include "parserintf.h"
#include "cite.h"
#include "markdown.h"
#include "condparser.h"
#include "formula.h"

Go to the source code of this file.

Classes

struct  yy_buffer_state
 
struct  yy_trans_info
 
struct  DocCmdMap
 
class  DocCmdMapper
 Command mapper. More...
 
struct  DocCmdMapper::Cmd
 
class  GuardedSection
 

Macros

#define YY_INT_ALIGNED   short int
 
#define yy_create_buffer   commentscanYY_create_buffer
 
#define yy_delete_buffer   commentscanYY_delete_buffer
 
#define yy_flex_debug   commentscanYY_flex_debug
 
#define yy_init_buffer   commentscanYY_init_buffer
 
#define yy_flush_buffer   commentscanYY_flush_buffer
 
#define yy_load_buffer_state   commentscanYY_load_buffer_state
 
#define yy_switch_to_buffer   commentscanYY_switch_to_buffer
 
#define yyin   commentscanYYin
 
#define yyleng   commentscanYYleng
 
#define yylex   commentscanYYlex
 
#define yylineno   commentscanYYlineno
 
#define yyout   commentscanYYout
 
#define yyrestart   commentscanYYrestart
 
#define yytext   commentscanYYtext
 
#define yywrap   commentscanYYwrap
 
#define yyalloc   commentscanYYalloc
 
#define yyrealloc   commentscanYYrealloc
 
#define yyfree   commentscanYYfree
 
#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   commentscanYYrestart(commentscanYYin )
 
#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   commentscanYY_flush_buffer(YY_CURRENT_BUFFER )
 
#define yy_new_buffer   commentscanYY_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 commentscanYYwrap(n)   1
 
#define YY_SKIP_YYWRAP
 
#define yytext_ptr   commentscanYYtext
 
#define YY_DO_BEFORE_ACTION
 
#define YY_NUM_RULES   205
 
#define YY_END_OF_BUFFER   206
 
#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_NEVER_INTERACTIVE   1
 
#define YY_INPUT(buf, result, max_size)   result=yyread(buf,max_size);
 
#define INITIAL   0
 
#define Comment   1
 
#define PageDocArg1   2
 
#define PageDocArg2   3
 
#define RelatesParam1   4
 
#define ClassDocArg1   5
 
#define ClassDocArg2   6
 
#define ClassDocArg3   7
 
#define CategoryDocArg1   8
 
#define XRefItemParam1   9
 
#define XRefItemParam2   10
 
#define XRefItemParam3   11
 
#define FileDocArg1   12
 
#define EnumDocArg1   13
 
#define NameSpaceDocArg1   14
 
#define PackageDocArg1   15
 
#define GroupDocArg1   16
 
#define GroupDocArg2   17
 
#define SectionLabel   18
 
#define SectionTitle   19
 
#define SubpageLabel   20
 
#define SubpageTitle   21
 
#define FormatBlock   22
 
#define LineParam   23
 
#define GuardParam   24
 
#define GuardParamEnd   25
 
#define SkipGuardedSection   26
 
#define SkipInternal   27
 
#define NameParam   28
 
#define InGroupParam   29
 
#define FnParam   30
 
#define OverloadParam   31
 
#define InheritParam   32
 
#define ExtendsParam   33
 
#define ReadFormulaShort   34
 
#define ReadFormulaLong   35
 
#define AnchorLabel   36
 
#define HtmlComment   37
 
#define SkipLang   38
 
#define CiteLabel   39
 
#define CopyDoc   40
 
#define GuardExpr   41
 
#define YY_EXTRA_TYPE   void *
 
#define YY_READ_BUF_SIZE   8192
 
#define ECHO   do { if (fwrite( commentscanYYtext, commentscanYYleng, 1, commentscanYYout )) {} } 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 commentscanYYlex (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
 
typedef bool(* DocCmdFunc) (const QCString &name)
 

Enumerations

enum  XRefKind {
  XRef_Item, XRef_Todo, XRef_Test, XRef_Bug,
  XRef_Deprecated, XRef_None
}
 
enum  OutputContext { OutputDoc, OutputBrief, OutputXRef, OutputInbody }
 
enum  GuardType { Guard_If, Guard_IfNot, Guard_Skip }
 

Functions

void commentscanYYrestart (FILE *input_file)
 
void commentscanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer)
 
YY_BUFFER_STATE commentscanYY_create_buffer (FILE *file, int size)
 
void commentscanYY_delete_buffer (YY_BUFFER_STATE b)
 
void commentscanYY_flush_buffer (YY_BUFFER_STATE b)
 
void commentscanYYpush_buffer_state (YY_BUFFER_STATE new_buffer)
 
void commentscanYYpop_buffer_state (void)
 
static void commentscanYYensure_buffer_stack (void)
 
static void commentscanYY_load_buffer_state (void)
 
static void commentscanYY_init_buffer (YY_BUFFER_STATE b, FILE *file)
 
YY_BUFFER_STATE commentscanYY_scan_buffer (char *base, yy_size_t size)
 
YY_BUFFER_STATE commentscanYY_scan_string (yyconst char *yy_str)
 
YY_BUFFER_STATE commentscanYY_scan_bytes (yyconst char *bytes, int len)
 
void * commentscanYYalloc (yy_size_t)
 
void * commentscanYYrealloc (void *, yy_size_t)
 
void commentscanYYfree (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 bool handleBrief (const QCString &)
 
static bool handleFn (const QCString &)
 
static bool handleDef (const QCString &)
 
static bool handleOverload (const QCString &)
 
static bool handleEnum (const QCString &)
 
static bool handleDefGroup (const QCString &)
 
static bool handleAddToGroup (const QCString &)
 
static bool handleWeakGroup (const QCString &)
 
static bool handleNamespace (const QCString &)
 
static bool handlePackage (const QCString &)
 
static bool handleClass (const QCString &)
 
static bool handleHeaderFile (const QCString &)
 
static bool handleProtocol (const QCString &)
 
static bool handleCategory (const QCString &)
 
static bool handleUnion (const QCString &)
 
static bool handleStruct (const QCString &)
 
static bool handleInterface (const QCString &)
 
static bool handleIdlException (const QCString &)
 
static bool handlePage (const QCString &)
 
static bool handleMainpage (const QCString &)
 
static bool handleFile (const QCString &)
 
static bool handleDir (const QCString &)
 
static bool handleExample (const QCString &)
 
static bool handleDetails (const QCString &)
 
static bool handleName (const QCString &)
 
static bool handleTodo (const QCString &)
 
static bool handleTest (const QCString &)
 
static bool handleBug (const QCString &)
 
static bool handleSubpage (const QCString &s)
 
static bool handleDeprecated (const QCString &)
 
static bool handleXRefItem (const QCString &)
 
static bool handleRelated (const QCString &)
 
static bool handleRelatedAlso (const QCString &)
 
static bool handleMemberOf (const QCString &)
 
static bool handleRefItem (const QCString &)
 
static bool handleSection (const QCString &)
 
static bool handleAnchor (const QCString &)
 
static bool handleCite (const QCString &)
 
static bool handleFormatBlock (const QCString &)
 
static bool handleAddIndex (const QCString &)
 
static bool handleIf (const QCString &)
 
static bool handleIfNot (const QCString &)
 
static bool handleElseIf (const QCString &)
 
static bool handleElse (const QCString &)
 
static bool handleEndIf (const QCString &)
 
static bool handleIngroup (const QCString &)
 
static bool handleNoSubGrouping (const QCString &)
 
static bool handleShowInitializer (const QCString &)
 
static bool handleHideInitializer (const QCString &)
 
static bool handleCallgraph (const QCString &)
 
static bool handleHideCallgraph (const QCString &)
 
static bool handleCallergraph (const QCString &)
 
static bool handleHideCallergraph (const QCString &)
 
static bool handleInternal (const QCString &)
 
static bool handleLineBr (const QCString &)
 
static bool handleStatic (const QCString &)
 
static bool handlePure (const QCString &)
 
static bool handlePrivate (const QCString &)
 
static bool handlePrivateSection (const QCString &)
 
static bool handleProtected (const QCString &)
 
static bool handleProtectedSection (const QCString &)
 
static bool handlePublic (const QCString &s)
 
static bool handlePublicSection (const QCString &s)
 
static bool handleToc (const QCString &s)
 
static bool handleInherit (const QCString &)
 
static bool handleExtends (const QCString &)
 
static bool handleCopyDoc (const QCString &)
 
static bool handleCopyBrief (const QCString &)
 
static bool handleCopyDetails (const QCString &)
 
static bool handleParBlock (const QCString &)
 
static bool handleEndParBlock (const QCString &)
 
void openGroup (Entry *e, const char *file, int line)
 
void closeGroup (Entry *e, const char *file, int line, bool foundInline=FALSE)
 
void initGroupInfo (Entry *e)
 
static void groupAddDocs (Entry *e)
 
static void initParser ()
 
static bool getDocSectionName (int s)
 
static bool makeStructuralIndicator (Entry::Sections s)
 
static void lineCount ()
 
static QCString stripQuotes (const char *s)
 
static void addXRefItem (const char *listName, const char *itemTitle, const char *listTitle, bool append)
 
static QCString addFormula ()
 
static void checkFormula ()
 
static SectionInfo::SectionType sectionLevelToType (int level)
 
static void addSection ()
 
static void addCite ()
 
static void stripTrailingWhiteSpace (QCString &s)
 
static void setOutput (OutputContext ctx)
 
static void addAnchor (const char *anchor)
 
static void addOutput (const char *s)
 
static void addOutput (char c)
 
static void endBrief (bool addToOutput=TRUE)
 
static void handleGuard (const QCString &expr)
 
static int yyread (char *buf, int max_size)
 
static int yy_init_globals (void)
 
int commentscanYYlex_destroy (void)
 
int commentscanYYget_debug (void)
 
void commentscanYYset_debug (int debug_flag)
 
YY_EXTRA_TYPE commentscanYYget_extra (void)
 
void commentscanYYset_extra (YY_EXTRA_TYPE user_defined)
 
FILE * commentscanYYget_in (void)
 
void commentscanYYset_in (FILE *in_str)
 
FILE * commentscanYYget_out (void)
 
void commentscanYYset_out (FILE *out_str)
 
int commentscanYYget_leng (void)
 
char * commentscanYYget_text (void)
 
int commentscanYYget_lineno (void)
 
void commentscanYYset_lineno (int line_number)
 
static void yyunput (int c, char *buf_ptr)
 
int commentscanYYlex (void)
 
 if (!(yy_init))
 
 while (1)
 
static void yyunput (int c, register char *yy_bp)
 
static void yy_fatal_error (yyconst char *msg)
 
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)
 
void groupEnterFile (const char *fileName, int)
 
void groupLeaveFile (const char *fileName, int line)
 
void groupEnterCompound (const char *fileName, int line, const char *name)
 
void groupLeaveCompound (const char *, int, const char *)
 
static int findExistingGroup (int &groupId, const MemberGroupInfo *info)
 

Variables

int commentscanYYleng
 
FILE * commentscanYYin = (FILE *) 0
 
FILE * commentscanYYout = (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 commentscanYYlineno = 1
 
char * commentscanYYtext
 
static yyconst flex_int16_t yy_acclist [759]
 
static yyconst flex_int16_t yy_accept [1139]
 
static yyconst flex_int32_t yy_ec [256]
 
static yyconst flex_int32_t yy_meta [76]
 
static yyconst flex_int16_t yy_base [1371]
 
static yyconst flex_int16_t yy_def [1371]
 
static yyconst flex_int16_t yy_nxt [9667]
 
static yyconst flex_int16_t yy_chk [9667]
 
int commentscanYY_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 DocCmdMap docCmdMap []
 
bool inInternalDocs = FALSE
 
static ParserInterfacelangParser
 
static QCString inputString
 
static int inputPosition
 
static QCString yyFileName
 
static int yyLineNr
 
static bool inBody
 
static OutputContext inContext
 
static bool briefEndsAtDot
 
static QCString formulaText
 
static QCString formulaEnv
 
static int formulaNewLines
 
static QCStringpOutputString
 
static QCString outputXRef
 
static QCString blockName
 
static XRefKind xrefKind
 
static XRefKind newXRefKind
 
static GuardType guardType
 
static bool enabledSectionFound
 
static QCString functionProto
 
static QStack< GuardedSectionguards
 
static Entrycurrent = 0
 
static bool needNewEntry
 
static QCString g_sectionLabel
 
static QCString g_sectionTitle
 
static int g_sectionLevel
 
static QCString xrefItemKey
 
static QCString newXRefItemKey
 
static QCString xrefItemTitle
 
static QCString xrefListTitle
 
static Protection protection
 
static bool xrefAppendFlag
 
static bool inGroupParamFound
 
static int braceCount
 
static bool insidePre
 
static bool parseMore
 
static int g_condCount
 
static int g_commentCount
 
static QCString g_spaceBeforeCmd
 
static QCString g_spaceBeforeIf
 
static QCString g_copyDocArg
 
static QCString g_guardExpr
 
static int g_roundCount
 
static bool g_insideParBlock
 
static QStack< Groupingg_autoGroupStack
 
static int g_memberGroupId = DOX_NOGROUP
 
static QCString g_memberGroupHeader
 
static QCString g_memberGroupDocs
 
static QCString g_memberGroupRelates
 
static QCString g_compoundName
 
static int prevPosition =0
 
 YY_DECL
 
register char * yy_cp
 
register char * yy_bp
 
register int yy_act
 

Macro Definition Documentation

#define AnchorLabel   36

Definition at line 4097 of file commentscan.cpp.

#define BEGIN   (yy_start) = 1 + 2 *

Definition at line 144 of file commentscan.cpp.

#define CategoryDocArg1   8

Definition at line 4069 of file commentscan.cpp.

#define CiteLabel   39

Definition at line 4100 of file commentscan.cpp.

#define ClassDocArg1   5

Definition at line 4066 of file commentscan.cpp.

#define ClassDocArg2   6

Definition at line 4067 of file commentscan.cpp.

#define ClassDocArg3   7

Definition at line 4068 of file commentscan.cpp.

#define Comment   1

Definition at line 4062 of file commentscan.cpp.

#define commentscanYYwrap (   n)    1

Definition at line 354 of file commentscan.cpp.

#define CopyDoc   40

Definition at line 4101 of file commentscan.cpp.

#define ECHO   do { if (fwrite( commentscanYYtext, commentscanYYleng, 1, commentscanYYout )) {} } while (0)

Definition at line 4189 of file commentscan.cpp.

#define EnumDocArg1   13

Definition at line 4074 of file commentscan.cpp.

#define EOB_ACT_CONTINUE_SCAN   0

Definition at line 179 of file commentscan.cpp.

#define EOB_ACT_END_OF_FILE   1

Definition at line 180 of file commentscan.cpp.

#define EOB_ACT_LAST_MATCH   2

Definition at line 181 of file commentscan.cpp.

#define ExtendsParam   33

Definition at line 4094 of file commentscan.cpp.

#define FileDocArg1   12

Definition at line 4073 of file commentscan.cpp.

#define FLEX_BETA

Definition at line 33 of file commentscan.cpp.

#define FLEX_SCANNER

Definition at line 28 of file commentscan.cpp.

#define FLEXINT_H

Definition at line 49 of file commentscan.cpp.

#define FnParam   30

Definition at line 4091 of file commentscan.cpp.

#define FormatBlock   22

Definition at line 4083 of file commentscan.cpp.

#define GroupDocArg1   16

Definition at line 4077 of file commentscan.cpp.

#define GroupDocArg2   17

Definition at line 4078 of file commentscan.cpp.

#define GuardExpr   41

Definition at line 4102 of file commentscan.cpp.

#define GuardParam   24

Definition at line 4085 of file commentscan.cpp.

#define GuardParamEnd   25

Definition at line 4086 of file commentscan.cpp.

#define HtmlComment   37

Definition at line 4098 of file commentscan.cpp.

#define InGroupParam   29

Definition at line 4090 of file commentscan.cpp.

#define InheritParam   32

Definition at line 4093 of file commentscan.cpp.

#define INITIAL   0

Definition at line 4061 of file commentscan.cpp.

#define INT16_MAX   (32767)

Definition at line 92 of file commentscan.cpp.

#define INT16_MIN   (-32767-1)

Definition at line 83 of file commentscan.cpp.

#define INT32_MAX   (2147483647)

Definition at line 95 of file commentscan.cpp.

#define INT32_MIN   (-2147483647-1)

Definition at line 86 of file commentscan.cpp.

#define INT8_MAX   (127)

Definition at line 89 of file commentscan.cpp.

#define INT8_MIN   (-128)

Definition at line 80 of file commentscan.cpp.

#define LineParam   23

Definition at line 4084 of file commentscan.cpp.

#define NameParam   28

Definition at line 4089 of file commentscan.cpp.

#define NameSpaceDocArg1   14

Definition at line 4075 of file commentscan.cpp.

#define OverloadParam   31

Definition at line 4092 of file commentscan.cpp.

#define PackageDocArg1   15

Definition at line 4076 of file commentscan.cpp.

#define PageDocArg1   2

Definition at line 4063 of file commentscan.cpp.

#define PageDocArg2   3

Definition at line 4064 of file commentscan.cpp.

#define ReadFormulaLong   35

Definition at line 4096 of file commentscan.cpp.

#define ReadFormulaShort   34

Definition at line 4095 of file commentscan.cpp.

#define REJECT
Value:
{ \
*yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */ \
yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
++(yy_lp); \
goto find_rule; \
}
static char yy_hold_char
register char * yy_cp
static int yy_lp
static char * yy_full_match

Definition at line 3102 of file commentscan.cpp.

#define RelatesParam1   4

Definition at line 4065 of file commentscan.cpp.

#define SectionLabel   18

Definition at line 4079 of file commentscan.cpp.

#define SectionTitle   19

Definition at line 4080 of file commentscan.cpp.

#define SkipGuardedSection   26

Definition at line 4087 of file commentscan.cpp.

#define SkipInternal   27

Definition at line 4088 of file commentscan.cpp.

#define SkipLang   38

Definition at line 4099 of file commentscan.cpp.

#define SubpageLabel   20

Definition at line 4081 of file commentscan.cpp.

#define SubpageTitle   21

Definition at line 4082 of file commentscan.cpp.

#define UINT16_MAX   (65535U)

Definition at line 101 of file commentscan.cpp.

#define UINT32_MAX   (4294967295U)

Definition at line 104 of file commentscan.cpp.

#define UINT8_MAX   (255U)

Definition at line 98 of file commentscan.cpp.

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

Definition at line 199 of file commentscan.cpp.

#define XRefItemParam1   9

Definition at line 4070 of file commentscan.cpp.

#define XRefItemParam2   10

Definition at line 4071 of file commentscan.cpp.

#define XRefItemParam3   11

Definition at line 4072 of file commentscan.cpp.

#define YY_AT_BOL ( )    (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

Definition at line 350 of file commentscan.cpp.

#define YY_BREAK   break;

Definition at line 4268 of file commentscan.cpp.

#define YY_BUF_SIZE   16384

Definition at line 163 of file commentscan.cpp.

#define YY_BUFFER_EOF_PENDING   2

Definition at line 266 of file commentscan.cpp.

#define YY_BUFFER_NEW   0

Definition at line 254 of file commentscan.cpp.

#define YY_BUFFER_NORMAL   1

Definition at line 255 of file commentscan.cpp.

#define yy_create_buffer   commentscanYY_create_buffer

Definition at line 9 of file commentscan.cpp.

#define YY_CURRENT_BUFFER
Value:
: NULL)
static size_t yy_buffer_stack_top
static YY_BUFFER_STATE * yy_buffer_stack

Definition at line 282 of file commentscan.cpp.

#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]

Definition at line 289 of file commentscan.cpp.

#define YY_DECL   int commentscanYYlex (void)

Definition at line 4256 of file commentscan.cpp.

#define YY_DECL_IS_OURS   1

Definition at line 4252 of file commentscan.cpp.

#define yy_delete_buffer   commentscanYY_delete_buffer

Definition at line 10 of file commentscan.cpp.

#define YY_DO_BEFORE_ACTION
Value:
commentscanYYleng = (size_t) (yy_cp - yy_bp); \
*yy_cp = '\0'; \
int commentscanYYleng
static char yy_hold_char
register char * yy_bp
#define yytext_ptr
static char * yy_c_buf_p
register char * yy_cp

Definition at line 378 of file commentscan.cpp.

#define YY_END_OF_BUFFER   206

Definition at line 386 of file commentscan.cpp.

#define YY_END_OF_BUFFER_CHAR   0

Definition at line 159 of file commentscan.cpp.

#define YY_EXIT_FAILURE   2

Definition at line 7293 of file commentscan.cpp.

#define YY_EXTRA_TYPE   void *

Definition at line 4113 of file commentscan.cpp.

#define YY_FATAL_ERROR (   msg)    yy_fatal_error( msg )

Definition at line 4243 of file commentscan.cpp.

#define yy_flex_debug   commentscanYY_flex_debug

Definition at line 11 of file commentscan.cpp.

#define YY_FLEX_MAJOR_VERSION   2

Definition at line 29 of file commentscan.cpp.

#define YY_FLEX_MINOR_VERSION   5

Definition at line 30 of file commentscan.cpp.

#define YY_FLEX_SUBMINOR_VERSION   35

Definition at line 31 of file commentscan.cpp.

#define yy_flush_buffer   commentscanYY_flush_buffer

Definition at line 13 of file commentscan.cpp.

#define YY_FLUSH_BUFFER   commentscanYY_flush_buffer(YY_CURRENT_BUFFER )

Definition at line 318 of file commentscan.cpp.

#define yy_init_buffer   commentscanYY_init_buffer

Definition at line 12 of file commentscan.cpp.

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

Definition at line 3999 of file commentscan.cpp.

#define YY_INT_ALIGNED   short int

Definition at line 5 of file commentscan.cpp.

#define YY_LESS_LINENO (   n)

Definition at line 183 of file commentscan.cpp.

#define yy_load_buffer_state   commentscanYY_load_buffer_state

Definition at line 14 of file commentscan.cpp.

#define YY_MORE_ADJ   0

Definition at line 3111 of file commentscan.cpp.

#define YY_NEVER_INTERACTIVE   1

Definition at line 3446 of file commentscan.cpp.

#define yy_new_buffer   commentscanYY_create_buffer

Definition at line 328 of file commentscan.cpp.

#define YY_NEW_FILE   commentscanYYrestart(commentscanYYin )

Definition at line 157 of file commentscan.cpp.

#define YY_NO_INPUT   1

Definition at line 3163 of file commentscan.cpp.

#define YY_NO_UNISTD_H   1

Definition at line 3164 of file commentscan.cpp.

#define YY_NULL   0

Definition at line 131 of file commentscan.cpp.

#define YY_NUM_RULES   205

Definition at line 385 of file commentscan.cpp.

#define YY_READ_BUF_SIZE   8192

Definition at line 4181 of file commentscan.cpp.

#define YY_RESTORE_YY_MORE_OFFSET

Definition at line 3112 of file commentscan.cpp.

#define YY_RULE_SETUP
Value:
if ( commentscanYYleng > 0 ) \
int commentscanYYleng
#define YY_USER_ACTION
char * commentscanYYtext
#define YY_CURRENT_BUFFER_LVALUE

Definition at line 4271 of file commentscan.cpp.

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

Definition at line 138 of file commentscan.cpp.

#define yy_set_bol (   at_bol)
Value:
{ \
commentscanYYensure_buffer_stack (); \
commentscanYY_create_buffer(commentscanYYin,YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
}
#define YY_CURRENT_BUFFER_LVALUE
#define YY_BUF_SIZE
#define YY_CURRENT_BUFFER
if(!(yy_init))
FILE * commentscanYYin

Definition at line 340 of file commentscan.cpp.

#define yy_set_interactive (   is_interactive)
Value:
{ \
commentscanYYensure_buffer_stack (); \
commentscanYY_create_buffer(commentscanYYin,YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
}
#define YY_CURRENT_BUFFER_LVALUE
#define YY_BUF_SIZE
#define YY_CURRENT_BUFFER
if(!(yy_init))
FILE * commentscanYYin

Definition at line 330 of file commentscan.cpp.

#define YY_SKIP_YYWRAP

Definition at line 355 of file commentscan.cpp.

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

Definition at line 150 of file commentscan.cpp.

#define YY_START_STACK_INCR   25

Definition at line 4238 of file commentscan.cpp.

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

Definition at line 168 of file commentscan.cpp.

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

Definition at line 154 of file commentscan.cpp.

#define YY_STRUCT_YY_BUFFER_STATE

Definition at line 207 of file commentscan.cpp.

#define yy_switch_to_buffer   commentscanYY_switch_to_buffer

Definition at line 15 of file commentscan.cpp.

#define YY_TYPEDEF_YY_BUFFER_STATE

Definition at line 171 of file commentscan.cpp.

#define YY_TYPEDEF_YY_SIZE_T

Definition at line 202 of file commentscan.cpp.

#define YY_USER_ACTION

Definition at line 4263 of file commentscan.cpp.

Definition at line 24 of file commentscan.cpp.

#define yyconst

Definition at line 127 of file commentscan.cpp.

#define yyfree   commentscanYYfree

Definition at line 26 of file commentscan.cpp.

#define yyin   commentscanYYin

Definition at line 16 of file commentscan.cpp.

#define yyleng   commentscanYYleng

Definition at line 17 of file commentscan.cpp.

#define yyless (   n)
Value:
do \
{ \
/* Undo effects of setting up commentscanYYtext. */ \
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 commentscanYYtext again */ \
} \
while ( 0 )
#define YY_RESTORE_YY_MORE_OFFSET
while(1)
#define YY_DO_BEFORE_ACTION
static char yy_hold_char
#define YY_MORE_ADJ
std::void_t< T > n
register char * yy_bp
static char * yy_c_buf_p
register char * yy_cp

Definition at line 7305 of file commentscan.cpp.

#define yyless (   n)
Value:
do \
{ \
/* Undo effects of setting up commentscanYYtext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
(yy_c_buf_p) = commentscanYYtext + yyless_macro_arg; \
*(yy_c_buf_p) = '\0'; \
commentscanYYleng = yyless_macro_arg; \
} \
while ( 0 )
int commentscanYYleng
while(1)
static char yy_hold_char
char * commentscanYYtext
std::void_t< T > n
static char * yy_c_buf_p

Definition at line 7305 of file commentscan.cpp.

#define yylex   commentscanYYlex

Definition at line 18 of file commentscan.cpp.

#define yylineno   commentscanYYlineno

Definition at line 19 of file commentscan.cpp.

#define yymore ( )    yymore_used_but_not_detected

Definition at line 3110 of file commentscan.cpp.

#define yyout   commentscanYYout

Definition at line 20 of file commentscan.cpp.

#define yyrealloc   commentscanYYrealloc

Definition at line 25 of file commentscan.cpp.

#define yyrestart   commentscanYYrestart

Definition at line 21 of file commentscan.cpp.

#define YYSTATE   YY_START

Definition at line 151 of file commentscan.cpp.

#define YYTABLES_NAME   "yytables"

Definition at line 7503 of file commentscan.cpp.

#define yyterminate ( )    return YY_NULL

Definition at line 4233 of file commentscan.cpp.

#define yytext   commentscanYYtext

Definition at line 22 of file commentscan.cpp.

#define yytext_ptr   commentscanYYtext

Definition at line 368 of file commentscan.cpp.

#define yywrap   commentscanYYwrap

Definition at line 23 of file commentscan.cpp.

Typedef Documentation

typedef bool(* DocCmdFunc) (const QCString &name)

Definition at line 3239 of file commentscan.cpp.

typedef short int flex_int16_t

Definition at line 71 of file commentscan.cpp.

typedef int flex_int32_t

Definition at line 72 of file commentscan.cpp.

typedef signed char flex_int8_t

Definition at line 70 of file commentscan.cpp.

typedef unsigned short int flex_uint16_t

Definition at line 74 of file commentscan.cpp.

typedef unsigned int flex_uint32_t

Definition at line 75 of file commentscan.cpp.

typedef unsigned char flex_uint8_t

Definition at line 73 of file commentscan.cpp.

Definition at line 172 of file commentscan.cpp.

typedef unsigned char YY_CHAR

Definition at line 357 of file commentscan.cpp.

typedef size_t yy_size_t

Definition at line 203 of file commentscan.cpp.

typedef int yy_state_type

Definition at line 361 of file commentscan.cpp.

Enumeration Type Documentation

enum GuardType
Enumerator
Guard_If 
Guard_IfNot 
Guard_Skip 

Definition at line 3466 of file commentscan.cpp.

3467 {
3468  Guard_If,
3469  Guard_IfNot,
3470  Guard_Skip
3471 };
Enumerator
OutputDoc 
OutputBrief 
OutputXRef 
OutputInbody 

Definition at line 3458 of file commentscan.cpp.

enum XRefKind
Enumerator
XRef_Item 
XRef_Todo 
XRef_Test 
XRef_Bug 
XRef_Deprecated 
XRef_None 

Definition at line 3448 of file commentscan.cpp.

Function Documentation

static void addAnchor ( const char *  anchor)
static

Definition at line 3950 of file commentscan.cpp.

3951 {
3952  SectionInfo *si = Doxygen::sectionDict->find(anchor);
3953  if (si)
3954  {
3955  if (si->lineNr != -1)
3956  {
3957  warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding anchor, (first occurrence: %s, line %d)",anchor,si->fileName.data(),si->lineNr);
3958  }
3959  else
3960  {
3961  warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding anchor, (first occurrence: %s)",anchor,si->fileName.data());
3962  }
3963  }
3964  else
3965  {
3966  si = new SectionInfo(yyFileName,yyLineNr,anchor,0,SectionInfo::Anchor,0);
3967  Doxygen::sectionDict->append(anchor,si);
3968  current->anchors->append(si);
3969  }
3970 }
void append(const type *d)
Definition: qlist.h:73
static int yyLineNr
void append(const char *key, const T *d)
Definition: sortdict.h:135
QList< SectionInfo > * anchors
list of anchors defined in this entry
Definition: entry.h:281
QCString fileName
Definition: section.h:61
static SectionDict * sectionDict
Definition: doxygen.h:117
static Entry * current
const char * data() const
Definition: qcstring.h:207
int lineNr
Definition: section.h:62
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
T * find(const char *key)
Definition: sortdict.h:232
static QCString yyFileName
static void addCite ( )
static

Definition at line 3810 of file commentscan.cpp.

3811 {
3813 }
static CiteDict * citeDict
Definition: doxygen.h:146
char * commentscanYYtext
void insert(const char *label)
Definition: cite.cpp:93
static QCString addFormula ( )
static

Definition at line 3743 of file commentscan.cpp.

3744 {
3745  QCString formLabel;
3747  Formula *f=0;
3748  if ((f=Doxygen::formulaDict->find(fText))==0)
3749  {
3750  f = new Formula(fText);
3752  Doxygen::formulaDict->insert(fText,f);
3753  formLabel.sprintf("\\form#%d",f->getId());
3754  Doxygen::formulaNameDict->insert(formLabel,f);
3755  }
3756  else
3757  {
3758  formLabel.sprintf("\\form#%d",f->getId());
3759  }
3760  int i;
3761  for (i=0;i<formulaNewLines;i++) formLabel+="@_fakenl"; // add fake newlines to
3762  // keep the warnings
3763  // correctly aligned.
3764  return formLabel;
3765 }
void append(const type *d)
Definition: qlist.h:73
static FormulaDict * formulaDict
Definition: doxygen.h:122
static FormulaDict * formulaNameDict
Definition: doxygen.h:123
static QCString formulaText
static FormulaList * formulaList
Definition: doxygen.h:121
static int formulaNewLines
QCString & sprintf(const char *format,...)
Definition: qcstring.cpp:27
int getId()
Definition: formula.cpp:44
QCString simplifyWhiteSpace() const
Definition: qcstring.cpp:323
static void addOutput ( const char *  s)
inlinestatic

Definition at line 3973 of file commentscan.cpp.

3974 {
3975  //printf("addOutput(%s)\n",s);
3976  *pOutputString+=s;
3977 }
static QCString * pOutputString
static QCString * s
Definition: config.cpp:1042
static void addOutput ( char  c)
inlinestatic

Definition at line 3980 of file commentscan.cpp.

3981 {
3982  *pOutputString+=c;
3983 }
static QCString * pOutputString
static void addSection ( )
static

Definition at line 3778 of file commentscan.cpp.

3779 {
3781  if (si)
3782  {
3783  if (si->lineNr != -1)
3784  {
3785  warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding section, (first occurrence: %s, line %d)",g_sectionLabel.data(),si->fileName.data(),si->lineNr);
3786  }
3787  else
3788  {
3789  warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding section, (first occurrence: %s)",g_sectionLabel.data(),si->fileName.data());
3790  }
3791  }
3792  else
3793  {
3794  // create a new section element
3799 
3800  // add section to this entry
3801  current->anchors->append(si);
3802 
3803  // add section to the global dictionary
3805  }
3806 }
static QCString g_sectionLabel
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
void append(const type *d)
Definition: qlist.h:73
static int yyLineNr
static int g_sectionLevel
static SectionInfo::SectionType sectionLevelToType(int level)
void append(const char *key, const T *d)
Definition: sortdict.h:135
char * commentscanYYtext
QList< SectionInfo > * anchors
list of anchors defined in this entry
Definition: entry.h:281
QCString fileName
Definition: section.h:61
static SectionDict * sectionDict
Definition: doxygen.h:117
static Entry * current
const char * data() const
Definition: qcstring.h:207
int lineNr
Definition: section.h:62
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static QCString g_sectionTitle
T * find(const char *key)
Definition: sortdict.h:232
static QCString yyFileName
static void addXRefItem ( const char *  listName,
const char *  itemTitle,
const char *  listTitle,
bool  append 
)
static

Definition at line 3640 of file commentscan.cpp.

3642 {
3643  Entry *docEntry = current; // inBody && previous ? previous : current;
3644  if (listName==0) return;
3645  //printf("addXRefItem(%s,%s,%s,%d)\n",listName,itemTitle,listTitle,append);
3646 
3647  ListItemInfo *lii=0;
3648  RefList *refList = Doxygen::xrefLists->find(listName);
3649  if (refList==0) // new list
3650  {
3651  refList = new RefList(listName,listTitle,itemTitle);
3652  Doxygen::xrefLists->insert(listName,refList);
3653  //printf("new list!\n");
3654  }
3655  if (docEntry->sli)
3656  {
3657  QListIterator<ListItemInfo> slii(*docEntry->sli);
3658  for (slii.toFirst();(lii=slii.current());++slii)
3659  {
3660  if (qstrcmp(lii->type,listName)==0)
3661  {
3662  //printf("found %s lii->type=%s\n",listName,lii->type);
3663  break;
3664  }
3665  }
3666  }
3667  if (lii && append) // already found item of same type just before this one
3668  {
3669  //printf("listName=%s item id = %d existing\n",listName,lii->itemId);
3670  RefItem *item = refList->getRefItem(lii->itemId);
3671  ASSERT(item!=0);
3672  item->text += " <p>";
3674  {
3676  }
3677  else
3678  {
3679  item->text += outputXRef;
3680  }
3681  //printf("%s: text +=%s\n",listName,item->text.data());
3682  }
3683  else // new item
3684  {
3685  int itemId = refList->addRefItem();
3686  //printf("listName=%s item id = %d new current=%p\n",listName,itemId,current);
3687 
3688  // if we have already an item from the same list type (e.g. a second @todo)
3689  // in the same Entry (i.e. lii!=0) then we reuse its link anchor.
3690  char anchorLabel[1024];
3691  //sprintf(anchorLabel,"_%s%06d",listName,lii ? lii->itemId : itemId);
3692  sprintf(anchorLabel,"_%s%06d",listName,itemId);
3693  RefItem *item = refList->getRefItem(itemId);
3694  ASSERT(item!=0);
3696  {
3698  }
3699  else
3700  {
3701  item->text = outputXRef;
3702  }
3703  item->listAnchor = anchorLabel;
3704  docEntry->addSpecialListItem(listName,itemId);
3705  QCString cmdString;
3706  cmdString.sprintf("\\xrefitem %s %d.",listName,itemId);
3707  if (inBody)
3708  {
3709  docEntry->inbodyDocs += cmdString;
3710  }
3711  else
3712  {
3713  docEntry->doc += cmdString;
3714  }
3715  SectionInfo *si = Doxygen::sectionDict->find(anchorLabel);
3716  if (si)
3717  {
3718  if (si->lineNr != -1)
3719  {
3720  warn(listName,yyLineNr,"multiple use of section label '%s', (first occurrence: %s, line %d)",anchorLabel,si->fileName.data(),si->lineNr);
3721  }
3722  else
3723  {
3724  warn(listName,yyLineNr,"multiple use of section label '%s', (first occurrence: %s)",anchorLabel,si->fileName.data());
3725  }
3726  }
3727  else
3728  {
3729  si=new SectionInfo(listName,yyLineNr,anchorLabel,
3731  g_sectionLevel);
3732  Doxygen::sectionDict->append(anchorLabel,si);
3733  docEntry->anchors->append(si);
3734  }
3735  }
3736  outputXRef.resize(0);
3737 }
static QDict< RefList > * xrefLists
Definition: doxygen.h:129
static bool markdownSupport
Definition: doxygen.h:153
QCString listAnchor
anchor in the list
Definition: reflist.h:33
bool resize(uint newlen)
Definition: qcstring.h:225
QCString text
text of the item.
Definition: reflist.h:32
void append(const type *d)
Definition: qlist.h:73
Definition: entry.h:63
static QCString outputXRef
static int yyLineNr
static int g_sectionLevel
RefItem * getRefItem(int todoItemId)
Definition: reflist.cpp:74
void addSpecialListItem(const char *listName, int index)
Definition: entry.cpp:309
void append(const char *key, const T *d)
Definition: sortdict.h:135
static bool inBody
int itemId
Definition: types.h:101
QList< SectionInfo > * anchors
list of anchors defined in this entry
Definition: entry.h:281
QCString fileName
Definition: section.h:61
static SectionDict * sectionDict
Definition: doxygen.h:117
static Entry * current
const char * data() const
Definition: qcstring.h:207
int lineNr
Definition: section.h:62
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
QCString & sprintf(const char *format,...)
Definition: qcstring.cpp:27
QCString inbodyDocs
documentation inside the body of a function
Definition: entry.h:266
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
QCString processMarkdown(const QCString &fileName, const int lineNr, Entry *e, const QCString &input)
Definition: markdown.cpp:2298
static QCString g_sectionTitle
QCString type
Definition: types.h:100
Q_EXPORT int qstrcmp(const char *str1, const char *str2)
Definition: qcstring.h:95
T * find(const char *key)
Definition: sortdict.h:232
static QCString yyFileName
#define ASSERT(x)
Definition: qglobal.h:590
int addRefItem()
Definition: reflist.cpp:56
QList< ListItemInfo > * sli
special lists (test/todo/bug/deprecated/..) this entry is in
Definition: entry.h:285
static void checkFormula ( )
static

Definition at line 8139 of file commentscan.cpp.

8140 {
8142  {
8143  warn(yyFileName,yyLineNr,"End of comment block while inside formula.");
8144  }
8145 }
#define ReadFormulaShort
static int yyLineNr
#define YY_START
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
#define ReadFormulaLong
static QCString yyFileName
void closeGroup ( Entry e,
const char *  file,
int  line,
bool  foundInline = FALSE 
)

Definition at line 8382 of file commentscan.cpp.

8383 {
8384  //printf("==> closeGroup(name=%s,sec=%x,file=%s,line=%d) g_autoGroupStack=%d\n",
8385  // e->name.data(),e->section,fileName,line,g_autoGroupStack.count());
8386  if (g_memberGroupId!=DOX_NOGROUP) // end of member group
8387  {
8389  if (info) // known group
8390  {
8391  info->doc = g_memberGroupDocs;
8392  info->docFile = fileName;
8393  info->docLine = line;
8394  }
8398  if (!foundInline) e->mGrpId=DOX_NOGROUP;
8399  //printf("new group id=%d\n",g_memberGroupId);
8400  }
8401  else if (!g_autoGroupStack.isEmpty()) // end of auto group
8402  {
8403  Grouping *grp = g_autoGroupStack.pop();
8404  // see bug577005: we should not remove the last group for e
8405  if (!foundInline) e->groups->removeLast();
8406  //printf("Removing %s e=%p\n",grp->groupname.data(),e);
8407  delete grp;
8408  if (!foundInline) initGroupInfo(e);
8409  }
8410 }
Definition: types.h:61
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_memberGroupRelates
int mGrpId
member group id
Definition: entry.h:278
#define DOX_NOGROUP
Definition: membergroup.h:25
static QCString g_memberGroupDocs
QList< Grouping > * groups
list of groups this entry belongs to
Definition: entry.h:280
fileName
Definition: dumpTree.py:9
static int g_memberGroupId
static QIntDict< MemberGroupInfo > memGrpInfoDict
Definition: doxygen.h:126
void initGroupInfo(Entry *e)
void line(double t, double *p, double &x, double &y, double &z)
QCString docFile
Definition: membergroup.h:149
bool removeLast()
Definition: qlist.h:80
static QStack< Grouping > g_autoGroupStack
type * find(long k) const
Definition: qintdict.h:63
YY_BUFFER_STATE commentscanYY_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 7010 of file commentscan.cpp.

7011 {
7013 
7014  b = (YY_BUFFER_STATE) commentscanYYalloc(sizeof( struct yy_buffer_state ) );
7015  if ( ! b )
7016  YY_FATAL_ERROR( "out of dynamic memory in commentscanYY_create_buffer()" );
7017 
7018  b->yy_buf_size = size;
7019 
7020  /* yy_ch_buf has to be 2 characters longer than the size given because
7021  * we need to put in 2 end-of-buffer characters.
7022  */
7023  b->yy_ch_buf = (char *) commentscanYYalloc(b->yy_buf_size + 2 );
7024  if ( ! b->yy_ch_buf )
7025  YY_FATAL_ERROR( "out of dynamic memory in commentscanYY_create_buffer()" );
7026 
7027  b->yy_is_our_buffer = 1;
7028 
7030 
7031  return b;
7032 }
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
static void commentscanYY_init_buffer(YY_BUFFER_STATE b, FILE *file)
char * yy_ch_buf
Definition: code.cpp:212
int yy_is_our_buffer
Definition: code.cpp:229
static bool * b
Definition: config.cpp:1043
void * commentscanYYalloc(yy_size_t)
struct yy_buffer_state * YY_BUFFER_STATE
#define YY_FATAL_ERROR(msg)
void commentscanYY_delete_buffer ( YY_BUFFER_STATE  b)

Destroy the buffer.

Parameters
ba buffer created with commentscanYY_create_buffer()

Definition at line 7038 of file commentscan.cpp.

7039 {
7040 
7041  if ( ! b )
7042  return;
7043 
7044  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
7046 
7047  if ( b->yy_is_our_buffer )
7048  commentscanYYfree((void *) b->yy_ch_buf );
7049 
7050  commentscanYYfree((void *) b );
7051 }
#define YY_CURRENT_BUFFER_LVALUE
char * yy_ch_buf
Definition: code.cpp:212
int yy_is_our_buffer
Definition: code.cpp:229
void commentscanYYfree(void *)
#define YY_CURRENT_BUFFER
struct yy_buffer_state * YY_BUFFER_STATE
void commentscanYY_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 7085 of file commentscan.cpp.

7086 {
7087  if ( ! b )
7088  return;
7089 
7090  b->yy_n_chars = 0;
7091 
7092  /* We always need two end-of-buffer characters. The first causes
7093  * a transition to the end-of-buffer state. The second causes
7094  * a jam in that state.
7095  */
7098 
7099  b->yy_buf_pos = &b->yy_ch_buf[0];
7100 
7101  b->yy_at_bol = 1;
7103 
7104  if ( b == YY_CURRENT_BUFFER )
7106 }
char * yy_buf_pos
Definition: code.cpp:213
int yy_n_chars
Definition: code.cpp:223
#define YY_END_OF_BUFFER_CHAR
char * yy_ch_buf
Definition: code.cpp:212
static void commentscanYY_load_buffer_state(void)
#define YY_CURRENT_BUFFER
#define YY_BUFFER_NEW
int yy_buffer_status
Definition: code.cpp:252
static void commentscanYY_init_buffer ( YY_BUFFER_STATE  b,
FILE *  file 
)
static

Definition at line 7057 of file commentscan.cpp.

7059 {
7060  int oerrno = errno;
7061 
7063 
7064  b->yy_input_file = file;
7065  b->yy_fill_buffer = 1;
7066 
7067  /* If b is the current buffer, then commentscanYY_init_buffer was _probably_
7068  * called from commentscanYYrestart() or through yy_get_next_buffer.
7069  * In that case, we don't want to reset the lineno or column.
7070  */
7071  if (b != YY_CURRENT_BUFFER){
7072  b->yy_bs_lineno = 1;
7073  b->yy_bs_column = 0;
7074  }
7075 
7076  b->yy_is_interactive = 0;
7077 
7078  errno = oerrno;
7079 }
FILE * yy_input_file
Definition: code.cpp:210
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
int yy_bs_column
Definition: code.cpp:245
void commentscanYY_flush_buffer(YY_BUFFER_STATE b)
int yy_is_interactive
Definition: code.cpp:236
#define YY_CURRENT_BUFFER
static void commentscanYY_load_buffer_state ( void  )
static

Definition at line 6996 of file commentscan.cpp.

6997 {
6998  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6999  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
7000  commentscanYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
7001  (yy_hold_char) = *(yy_c_buf_p);
7002 }
static int yy_n_chars
static char yy_hold_char
#define YY_CURRENT_BUFFER_LVALUE
#define yytext_ptr
static char * yy_c_buf_p
FILE * commentscanYYin
YY_BUFFER_STATE commentscanYY_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 7212 of file commentscan.cpp.

7213 {
7215 
7216  if ( size < 2 ||
7219  /* They forgot to leave room for the EOB's. */
7220  return 0;
7221 
7222  b = (YY_BUFFER_STATE) commentscanYYalloc(sizeof( struct yy_buffer_state ) );
7223  if ( ! b )
7224  YY_FATAL_ERROR( "out of dynamic memory in commentscanYY_scan_buffer()" );
7225 
7226  b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
7227  b->yy_buf_pos = b->yy_ch_buf = base;
7228  b->yy_is_our_buffer = 0;
7229  b->yy_input_file = 0;
7230  b->yy_n_chars = b->yy_buf_size;
7231  b->yy_is_interactive = 0;
7232  b->yy_at_bol = 1;
7233  b->yy_fill_buffer = 0;
7235 
7237 
7238  return b;
7239 }
char * yy_buf_pos
Definition: code.cpp:213
FILE * yy_input_file
Definition: code.cpp:210
int yy_n_chars
Definition: code.cpp:223
void commentscanYY_switch_to_buffer(YY_BUFFER_STATE new_buffer)
int yy_fill_buffer
Definition: code.cpp:250
#define YY_END_OF_BUFFER_CHAR
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 * commentscanYYalloc(yy_size_t)
#define YY_BUFFER_NEW
int yy_buffer_status
Definition: code.cpp:252
struct yy_buffer_state * YY_BUFFER_STATE
#define YY_FATAL_ERROR(msg)
YY_BUFFER_STATE commentscanYY_scan_bytes ( yyconst char *  yybytes,
int  _yybytes_len 
)

Setup the input buffer state to scan the given bytes. The next call to commentscanYYlex() 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 7262 of file commentscan.cpp.

7263 {
7265  char *buf;
7266  yy_size_t n;
7267  int i;
7268 
7269  /* Get memory for full buffer, including space for trailing EOB's. */
7270  n = _yybytes_len + 2;
7271  buf = (char *) commentscanYYalloc(n );
7272  if ( ! buf )
7273  YY_FATAL_ERROR( "out of dynamic memory in commentscanYY_scan_bytes()" );
7274 
7275  for ( i = 0; i < _yybytes_len; ++i )
7276  buf[i] = yybytes[i];
7277 
7278  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
7279 
7280  b = commentscanYY_scan_buffer(buf,n );
7281  if ( ! b )
7282  YY_FATAL_ERROR( "bad buffer in commentscanYY_scan_bytes()" );
7283 
7284  /* It's okay to grow etc. this buffer, and we should throw it
7285  * away when we're done.
7286  */
7287  b->yy_is_our_buffer = 1;
7288 
7289  return b;
7290 }
YY_BUFFER_STATE commentscanYY_scan_buffer(char *base, yy_size_t size)
#define YY_END_OF_BUFFER_CHAR
std::void_t< T > n
int yy_is_our_buffer
Definition: code.cpp:229
static bool * b
Definition: config.cpp:1043
void * commentscanYYalloc(yy_size_t)
size_t yy_size_t
Definition: code.cpp:203
#define YY_FATAL_ERROR(msg)
YY_BUFFER_STATE commentscanYY_scan_string ( yyconst char *  yystr)

Setup the input buffer state to scan a string. The next call to commentscanYYlex() 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 commentscanYY_scan_bytes() instead.

Definition at line 7249 of file commentscan.cpp.

7250 {
7251 
7252  return commentscanYY_scan_bytes(yystr,strlen(yystr) );
7253 }
YY_BUFFER_STATE commentscanYY_scan_bytes(yyconst char *bytes, int len)
void commentscanYY_switch_to_buffer ( YY_BUFFER_STATE  new_buffer)

Switch to a different input buffer.

Parameters
new_bufferThe new input buffer.

Definition at line 6965 of file commentscan.cpp.

6966 {
6967 
6968  /* TODO. We should be able to replace this entire function body
6969  * with
6970  * commentscanYYpop_buffer_state();
6971  * commentscanYYpush_buffer_state(new_buffer);
6972  */
6974  if ( YY_CURRENT_BUFFER == new_buffer )
6975  return;
6976 
6977  if ( YY_CURRENT_BUFFER )
6978  {
6979  /* Flush out information for old buffer. */
6980  *(yy_c_buf_p) = (yy_hold_char);
6981  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6982  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6983  }
6984 
6985  YY_CURRENT_BUFFER_LVALUE = new_buffer;
6987 
6988  /* We don't actually know whether we did this switch during
6989  * EOF (commentscanYYwrap()) processing, but the only time this flag
6990  * is looked at is after commentscanYYwrap() is called, so it's safe
6991  * to go ahead and always set it.
6992  */
6994 }
static int yy_n_chars
static void commentscanYYensure_buffer_stack(void)
static char yy_hold_char
#define YY_CURRENT_BUFFER_LVALUE
static int yy_did_buffer_switch_on_eof
static void commentscanYY_load_buffer_state(void)
static char * yy_c_buf_p
#define YY_CURRENT_BUFFER
void * commentscanYYalloc ( yy_size_t  size)

Definition at line 7481 of file commentscan.cpp.

7482 {
7483  return (void *) malloc( size );
7484 }
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
static void commentscanYYensure_buffer_stack ( void  )
static

Definition at line 7163 of file commentscan.cpp.

7164 {
7165  int num_to_alloc;
7166 
7167  if (!(yy_buffer_stack)) {
7168 
7169  /* First allocation is just for 2 elements, since we don't know if this
7170  * scanner will even need a stack. We use 2 instead of 1 to avoid an
7171  * immediate realloc on the next call.
7172  */
7173  num_to_alloc = 1;
7175  (num_to_alloc * sizeof(struct yy_buffer_state*)
7176  );
7177  if ( ! (yy_buffer_stack) )
7178  YY_FATAL_ERROR( "out of dynamic memory in commentscanYYensure_buffer_stack()" );
7179 
7180  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
7181 
7182  (yy_buffer_stack_max) = num_to_alloc;
7183  (yy_buffer_stack_top) = 0;
7184  return;
7185  }
7186 
7187  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
7188 
7189  /* Increase the buffer to prepare for a possible push. */
7190  int grow_size = 8 /* arbitrary grow size */;
7191 
7192  num_to_alloc = (yy_buffer_stack_max) + grow_size;
7194  ((yy_buffer_stack),
7195  num_to_alloc * sizeof(struct yy_buffer_state*)
7196  );
7197  if ( ! (yy_buffer_stack) )
7198  YY_FATAL_ERROR( "out of dynamic memory in commentscanYYensure_buffer_stack()" );
7199 
7200  /* zero only the new slots.*/
7201  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
7202  (yy_buffer_stack_max) = num_to_alloc;
7203  }
7204 }
static size_t yy_buffer_stack_top
static YY_BUFFER_STATE * yy_buffer_stack
static size_t yy_buffer_stack_max
void * commentscanYYrealloc(void *, yy_size_t)
void * commentscanYYalloc(yy_size_t)
#define YY_FATAL_ERROR(msg)
void commentscanYYfree ( void *  ptr)

Definition at line 7498 of file commentscan.cpp.

7499 {
7500  free( (char *) ptr ); /* see commentscanYYrealloc() for (char *) cast */
7501 }
int commentscanYYget_debug ( void  )

Definition at line 7389 of file commentscan.cpp.

7390 {
7391  return commentscanYY_flex_debug;
7392 }
int commentscanYY_flex_debug
YY_EXTRA_TYPE commentscanYYget_extra ( void  )
FILE * commentscanYYget_in ( void  )

Get the input stream.

Definition at line 7333 of file commentscan.cpp.

7334 {
7335  return commentscanYYin;
7336 }
FILE * commentscanYYin
int commentscanYYget_leng ( void  )

Get the length of the current token.

Definition at line 7349 of file commentscan.cpp.

7350 {
7351  return commentscanYYleng;
7352 }
int commentscanYYleng
int commentscanYYget_lineno ( void  )

Get the current line number.

Definition at line 7324 of file commentscan.cpp.

7325 {
7326 
7327  return commentscanYYlineno;
7328 }
int commentscanYYlineno
FILE * commentscanYYget_out ( void  )

Get the output stream.

Definition at line 7341 of file commentscan.cpp.

7342 {
7343  return commentscanYYout;
7344 }
FILE * commentscanYYout
char * commentscanYYget_text ( void  )

Get the current token.

Definition at line 7358 of file commentscan.cpp.

7359 {
7360  return commentscanYYtext;
7361 }
char * commentscanYYtext
int commentscanYYlex ( void  )
int commentscanYYlex_destroy ( void  )

Definition at line 7433 of file commentscan.cpp.

7434 {
7435 
7436  /* Pop the buffer stack, destroying each element. */
7437  while(YY_CURRENT_BUFFER){
7439  YY_CURRENT_BUFFER_LVALUE = NULL;
7441  }
7442 
7443  /* Destroy the stack itself. */
7445  (yy_buffer_stack) = NULL;
7446 
7448  (yy_state_buf) = NULL;
7449 
7450  /* Reset the globals. This is important in a non-reentrant scanner so the next time
7451  * commentscanYYlex() is called, initialization will occur. */
7452  yy_init_globals( );
7453 
7454  return 0;
7455 }
static YY_BUFFER_STATE * yy_buffer_stack
static int yy_init_globals(void)
#define YY_CURRENT_BUFFER_LVALUE
static yy_state_type * yy_state_buf
void commentscanYY_delete_buffer(YY_BUFFER_STATE b)
void commentscanYYfree(void *)
#define YY_CURRENT_BUFFER
void commentscanYYpop_buffer_state(void)
void commentscanYYpop_buffer_state ( void  )

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

Definition at line 7144 of file commentscan.cpp.

7145 {
7146  if (!YY_CURRENT_BUFFER)
7147  return;
7148 
7150  YY_CURRENT_BUFFER_LVALUE = NULL;
7151  if ((yy_buffer_stack_top) > 0)
7152  --(yy_buffer_stack_top);
7153 
7154  if (YY_CURRENT_BUFFER) {
7157  }
7158 }
static size_t yy_buffer_stack_top
#define YY_CURRENT_BUFFER_LVALUE
static int yy_did_buffer_switch_on_eof
static void commentscanYY_load_buffer_state(void)
void commentscanYY_delete_buffer(YY_BUFFER_STATE b)
#define YY_CURRENT_BUFFER
void commentscanYYpush_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 7114 of file commentscan.cpp.

7115 {
7116  if (new_buffer == NULL)
7117  return;
7118 
7120 
7121  /* This block is copied from commentscanYY_switch_to_buffer. */
7122  if ( YY_CURRENT_BUFFER )
7123  {
7124  /* Flush out information for old buffer. */
7125  *(yy_c_buf_p) = (yy_hold_char);
7126  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
7127  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
7128  }
7129 
7130  /* Only push if top exists. Otherwise, replace top. */
7131  if (YY_CURRENT_BUFFER)
7132  (yy_buffer_stack_top)++;
7133  YY_CURRENT_BUFFER_LVALUE = new_buffer;
7134 
7135  /* copied from commentscanYY_switch_to_buffer. */
7138 }
static int yy_n_chars
static size_t yy_buffer_stack_top
static void commentscanYYensure_buffer_stack(void)
static char yy_hold_char
#define YY_CURRENT_BUFFER_LVALUE
static int yy_did_buffer_switch_on_eof
static void commentscanYY_load_buffer_state(void)
static char * yy_c_buf_p
#define YY_CURRENT_BUFFER
void * commentscanYYrealloc ( void *  ptr,
yy_size_t  size 
)

Definition at line 7486 of file commentscan.cpp.

7487 {
7488  /* The cast to (char *) in the following accommodates both
7489  * implementations that use char* generic pointers, and those
7490  * that use void* generic pointers. It works with the latter
7491  * because both ANSI C and C++ allow castless assignment from
7492  * any pointer type to void*, and deal with argument conversions
7493  * as though doing an assignment.
7494  */
7495  return (void *) realloc( (char *) ptr, size );
7496 }
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
void commentscanYYrestart ( 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 6948 of file commentscan.cpp.

6949 {
6950 
6951  if ( ! YY_CURRENT_BUFFER ){
6955  }
6956 
6959 }
static void commentscanYYensure_buffer_stack(void)
static void commentscanYY_init_buffer(YY_BUFFER_STATE b, FILE *file)
#define YY_CURRENT_BUFFER_LVALUE
YY_BUFFER_STATE commentscanYY_create_buffer(FILE *file, int size)
static void commentscanYY_load_buffer_state(void)
#define YY_BUF_SIZE
#define YY_CURRENT_BUFFER
FILE * commentscanYYin
void commentscanYYset_debug ( int  debug_flag)

Definition at line 7394 of file commentscan.cpp.

7395 {
7396  commentscanYY_flex_debug = bdebug ;
7397 }
int commentscanYY_flex_debug
void commentscanYYset_extra ( YY_EXTRA_TYPE  user_defined)
void commentscanYYset_in ( FILE *  in_str)

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

Parameters
in_strA readable stream.
See also
commentscanYY_switch_to_buffer

Definition at line 7379 of file commentscan.cpp.

7380 {
7381  commentscanYYin = in_str ;
7382 }
FILE * commentscanYYin
void commentscanYYset_lineno ( int  line_number)

Set the current line number.

Parameters
line_number

Definition at line 7367 of file commentscan.cpp.

7368 {
7369 
7370  commentscanYYlineno = line_number;
7371 }
int commentscanYYlineno
void commentscanYYset_out ( FILE *  out_str)

Definition at line 7384 of file commentscan.cpp.

7385 {
7386  commentscanYYout = out_str ;
7387 }
FILE * commentscanYYout
static void endBrief ( bool  addToOutput = TRUE)
static

Definition at line 3985 of file commentscan.cpp.

3986 {
3988  { // only go to the detailed description if we have
3989  // found some brief description and not just whitespace
3992  if (addToOutput) addOutput(commentscanYYtext);
3993  }
3994 }
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
char * commentscanYYtext
QCString brief
brief description (doc block)
Definition: entry.h:263
static Entry * current
static void addOutput(const char *s)
static bool briefEndsAtDot
static int findExistingGroup ( int &  groupId,
const MemberGroupInfo info 
)
static

Definition at line 8334 of file commentscan.cpp.

8335 {
8336  //printf("findExistingGroup %s:%s\n",info->header.data(),info->compoundName.data());
8338  MemberGroupInfo *mi;
8339  for (di.toFirst();(mi=di.current());++di)
8340  {
8341  if (g_compoundName==mi->compoundName && // same file or scope
8342  !mi->header.isEmpty() && // not a nameless group
8343  qstricmp(mi->header,info->header)==0 // same header name
8344  )
8345  {
8346  //printf("Found it!\n");
8347  return (int)di.currentKey(); // put the item in this group
8348  }
8349  }
8350  groupId++; // start new group
8351  return groupId;
8352 }
bool isEmpty() const
Definition: qcstring.h:189
QCString header
Definition: membergroup.h:147
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:567
static QCString g_compoundName
static QIntDict< MemberGroupInfo > memGrpInfoDict
Definition: doxygen.h:126
QCString compoundName
Definition: membergroup.h:151
static bool getDocSectionName ( int  s)
static

Definition at line 3570 of file commentscan.cpp.

3571 {
3572  switch(s)
3573  {
3574  case Entry::CLASSDOC_SEC:
3575  case Entry::STRUCTDOC_SEC:
3576  case Entry::UNIONDOC_SEC:
3581  case Entry::ENUMDOC_SEC:
3582  case Entry::PAGEDOC_SEC:
3584  case Entry::MEMBERDOC_SEC:
3586  case Entry::FILEDOC_SEC:
3587  case Entry::DEFINEDOC_SEC:
3588  case Entry::GROUPDOC_SEC:
3590  case Entry::PACKAGEDOC_SEC:
3591  case Entry::DIRDOC_SEC:
3592  case Entry::EXAMPLE_SEC:
3593  case Entry::MEMBERGRP_SEC:
3594  return TRUE;
3595  default:
3596  return FALSE;
3597  }
3598 }
const bool FALSE
Definition: qglobal.h:370
static QCString * s
Definition: config.cpp:1042
const bool TRUE
Definition: qglobal.h:371
static void groupAddDocs ( Entry e)
static

Definition at line 8427 of file commentscan.cpp.

8428 {
8429  if (e->section==Entry::MEMBERGRP_SEC)
8430  {
8433  if (!g_memberGroupDocs.isEmpty() && !e->doc.isEmpty())
8434  {
8435  g_memberGroupDocs+="\n\n";
8436  }
8437  g_memberGroupDocs+=e->doc;
8439  if (info)
8440  {
8441  info->doc = g_memberGroupDocs;
8442  info->docFile = e->docFile;
8443  info->docLine = e->docLine;
8444  info->setRefItems(e->sli);
8445  }
8446  e->doc.resize(0);
8447  e->brief.resize(0);
8448  }
8449 }
bool resize(uint newlen)
Definition: qcstring.h:225
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
void setRefItems(const QList< ListItemInfo > *sli)
int docLine
line number at which the documentation was found
Definition: entry.h:261
static QCString g_memberGroupDocs
QCString brief
brief description (doc block)
Definition: entry.h:263
static int g_memberGroupId
static QIntDict< MemberGroupInfo > memGrpInfoDict
Definition: doxygen.h:126
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
QCString docFile
file in which the documentation was found
Definition: entry.h:262
QCString docFile
Definition: membergroup.h:149
QCString stripLeadingAndTrailingEmptyLines(const QCString &s, int &docLine)
Definition: util.cpp:6876
type * find(long k) const
Definition: qintdict.h:63
int section
entry type (see Sections);
Definition: entry.h:235
QList< ListItemInfo > * sli
special lists (test/todo/bug/deprecated/..) this entry is in
Definition: entry.h:285
void groupEnterCompound ( const char *  fileName,
int  line,
const char *  name 
)

Definition at line 8299 of file commentscan.cpp.

8300 {
8302  {
8303  warn(fileName,line,"try to put compound %s inside a member group\n",name);
8304  }
8308  g_compoundName = name;
8309  int i = g_compoundName.find('(');
8310  if (i!=-1)
8311  {
8312  g_compoundName=g_compoundName.left(i); // strip category (Obj-C)
8313  }
8314  if (g_compoundName.isEmpty())
8315  {
8317  }
8318  //printf("groupEnterCompound(%s)\n",name);
8319 }
static QCString name
Definition: declinfo.cpp:673
bool resize(uint newlen)
Definition: qcstring.h:225
bool isEmpty() const
Definition: qcstring.h:189
static QCString g_memberGroupRelates
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
#define DOX_NOGROUP
Definition: membergroup.h:25
static QCString g_memberGroupDocs
fileName
Definition: dumpTree.py:9
static int g_memberGroupId
static QCString g_compoundName
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
void line(double t, double *p, double &x, double &y, double &z)
void groupEnterFile ( const char *  fileName,
int   
)

Definition at line 8274 of file commentscan.cpp.

8275 {
8276  g_autoGroupStack.setAutoDelete(TRUE);
8277  g_autoGroupStack.clear();
8282 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_memberGroupRelates
#define DOX_NOGROUP
Definition: membergroup.h:25
static QCString g_memberGroupDocs
fileName
Definition: dumpTree.py:9
static int g_memberGroupId
static QCString g_compoundName
static QStack< Grouping > g_autoGroupStack
const bool TRUE
Definition: qglobal.h:371
void groupLeaveCompound ( const char *  ,
int  ,
const char *   
)

Definition at line 8321 of file commentscan.cpp.

8322 {
8323  //printf("groupLeaveCompound(%s)\n",name);
8324  //if (g_memberGroupId!=DOX_NOGROUP)
8325  //{
8326  // warn(fileName,line,"end of compound %s while inside a member group\n",name);
8327  //}
8332 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_memberGroupRelates
#define DOX_NOGROUP
Definition: membergroup.h:25
static QCString g_memberGroupDocs
static int g_memberGroupId
static QCString g_compoundName
void groupLeaveFile ( const char *  fileName,
int  line 
)

Definition at line 8284 of file commentscan.cpp.

8285 {
8286  //if (g_memberGroupId!=DOX_NOGROUP)
8287  //{
8288  // warn(fileName,line,"end of file while inside a member group\n");
8289  //}
8293  if (!g_autoGroupStack.isEmpty())
8294  {
8295  warn(fileName,line,"end of file while inside a group\n");
8296  }
8297 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_memberGroupRelates
#define DOX_NOGROUP
Definition: membergroup.h:25
static QCString g_memberGroupDocs
fileName
Definition: dumpTree.py:9
static int g_memberGroupId
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
void line(double t, double *p, double &x, double &y, double &z)
static QStack< Grouping > g_autoGroupStack
static bool handleAddIndex ( const QCString )
static

Definition at line 7870 of file commentscan.cpp.

7871 {
7872  addOutput("@addindex ");
7873  BEGIN(LineParam);
7874  return FALSE;
7875 }
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
static void addOutput(const char *s)
#define LineParam
static bool handleAddToGroup ( const QCString )
static

Definition at line 7557 of file commentscan.cpp.

7558 {
7561  BEGIN( GroupDocArg1 );
7562  return stop;
7563 }
static bool makeStructuralIndicator(Entry::Sections s)
addgroup
Definition: entry.h:187
#define BEGIN
static Entry * current
#define GroupDocArg1
GroupDocType groupDocType
Definition: entry.h:289
static bool handleAnchor ( const QCString s)
static

Definition at line 7841 of file commentscan.cpp.

7842 {
7843  addOutput("@"+s+" ");
7844  BEGIN(AnchorLabel);
7845  return FALSE;
7846 }
const bool FALSE
Definition: qglobal.h:370
#define AnchorLabel
#define BEGIN
static void addOutput(const char *s)
static bool handleBrief ( const QCString )
static

Definition at line 7511 of file commentscan.cpp.

7512 {
7513  //printf("handleBrief\n");
7515  return FALSE;
7516 }
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static bool handleBug ( const QCString )
static

Definition at line 7729 of file commentscan.cpp.

7730 {
7733  xrefKind = XRef_Bug;
7734  return FALSE;
7735 }
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static XRefKind xrefKind
static XRefKind newXRefKind
static bool handleCallergraph ( const QCString )
static

Definition at line 7982 of file commentscan.cpp.

7983 {
7984  current->callerGraph = TRUE; // ON
7985  return FALSE;
7986 }
const bool FALSE
Definition: qglobal.h:370
bool callerGraph
do we need to draw the caller graph?
Definition: entry.h:250
static Entry * current
const bool TRUE
Definition: qglobal.h:371
static bool handleCallgraph ( const QCString )
static

Definition at line 7970 of file commentscan.cpp.

7971 {
7972  current->callGraph = TRUE; // ON
7973  return FALSE;
7974 }
bool callGraph
do we need to draw the call graph?
Definition: entry.h:249
const bool FALSE
Definition: qglobal.h:370
static Entry * current
const bool TRUE
Definition: qglobal.h:371
static bool handleCategory ( const QCString )
static

Definition at line 7607 of file commentscan.cpp.

7608 { // Obj-C category
7610  BEGIN( CategoryDocArg1 );
7611  return stop;
7612 }
#define CategoryDocArg1
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static bool handleCite ( const QCString s)
static

Definition at line 7848 of file commentscan.cpp.

7849 {
7850  if (!g_spaceBeforeCmd.isEmpty())
7851  {
7854  }
7855  addOutput("@"+s+" ");
7856  BEGIN(CiteLabel);
7857  return FALSE;
7858 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
#define CiteLabel
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
static void addOutput(const char *s)
static bool handleClass ( const QCString )
static

Definition at line 7587 of file commentscan.cpp.

7588 {
7590  BEGIN( ClassDocArg1 );
7591  return stop;
7592 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define ClassDocArg1
static bool handleCopyBrief ( const QCString )
static

Definition at line 8094 of file commentscan.cpp.

8095 {
8096  if (current->brief.isEmpty() && current->doc.isEmpty())
8097  { // if we don't have a brief or detailed description yet,
8098  // then the @copybrief should end up in the brief description.
8099  // otherwise it will be copied inline (see bug691315 & bug700788)
8101  }
8102  if (!g_spaceBeforeCmd.isEmpty())
8103  {
8106  }
8107  addOutput("\\copybrief ");
8108  return FALSE;
8109 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
QCString brief
brief description (doc block)
Definition: entry.h:263
static Entry * current
static void addOutput(const char *s)
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
static bool handleCopyDetails ( const QCString )
static

Definition at line 8111 of file commentscan.cpp.

8112 {
8114  if (!g_spaceBeforeCmd.isEmpty())
8115  {
8118  }
8119  addOutput("\\copydetails ");
8120  return FALSE;
8121 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static void addOutput(const char *s)
static bool handleCopyDoc ( const QCString )
static

Definition at line 8123 of file commentscan.cpp.

8124 {
8126  if (!g_spaceBeforeCmd.isEmpty())
8127  {
8130  }
8131  addOutput("\\copybrief ");
8132  g_copyDocArg.resize(0);
8133  BEGIN(CopyDoc);
8134  return FALSE;
8135 }
static QCString g_copyDocArg
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_spaceBeforeCmd
#define CopyDoc
bool isEmpty() const
Definition: qcstring.h:189
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
#define BEGIN
static void addOutput(const char *s)
static bool handleDef ( const QCString )
static

Definition at line 7527 of file commentscan.cpp.

7528 {
7530  functionProto.resize(0);
7531  BEGIN(FnParam);
7532  return stop;
7533 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString functionProto
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define FnParam
static bool handleDefGroup ( const QCString )
static

Definition at line 7549 of file commentscan.cpp.

7550 {
7553  BEGIN( GroupDocArg1 );
7554  return stop;
7555 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static Entry * current
#define GroupDocArg1
GroupDocType groupDocType
Definition: entry.h:289
static bool handleDeprecated ( const QCString )
static

Definition at line 7737 of file commentscan.cpp.

7738 {
7742  return FALSE;
7743 }
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static XRefKind xrefKind
static XRefKind newXRefKind
static bool handleDetails ( const QCString )
static

Definition at line 7687 of file commentscan.cpp.

7688 {
7689  if (inContext!=OutputBrief)
7690  {
7691  addOutput("\n\n"); // treat @details outside brief description
7692  // as a new paragraph
7693  }
7695  return FALSE;
7696 }
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static void addOutput(const char *s)
static OutputContext inContext
static bool handleDir ( const QCString )
static

Definition at line 7671 of file commentscan.cpp.

7672 {
7674  if (!stop) current->name = yyFileName;
7675  BEGIN( FileDocArg1 );
7676  return stop;
7677 }
QCString name
member name
Definition: entry.h:237
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static Entry * current
#define FileDocArg1
static QCString yyFileName
static bool handleElse ( const QCString )
static

Definition at line 7910 of file commentscan.cpp.

7911 {
7912  if (guards.isEmpty())
7913  {
7915  "found \\else without matching start command");
7916  }
7917  else
7918  {
7920  }
7921  return FALSE;
7922 }
static QStack< GuardedSection > guards
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
#define BEGIN
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
#define SkipGuardedSection
static QCString yyFileName
static bool handleElseIf ( const QCString )
static

Definition at line 7895 of file commentscan.cpp.

7896 {
7897  if (guards.isEmpty())
7898  {
7900  "found \\else without matching start command");
7901  }
7902  else
7903  {
7905  BEGIN(GuardParam);
7906  }
7907  return FALSE;
7908 }
static QStack< GuardedSection > guards
static bool enabledSectionFound
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
#define GuardParam
#define BEGIN
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static GuardType guardType
static QCString yyFileName
static bool handleEndIf ( const QCString )
static

Definition at line 7924 of file commentscan.cpp.

7925 {
7926  if (guards.isEmpty())
7927  {
7929  "found \\endif without matching start command");
7930  }
7931  else
7932  {
7933  delete guards.pop();
7934  }
7936  if (!g_spaceBeforeCmd.isEmpty())
7937  {
7940  }
7941  BEGIN( GuardParamEnd );
7942  return FALSE;
7943 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QStack< GuardedSection > guards
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
static bool enabledSectionFound
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
#define BEGIN
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static void addOutput(const char *s)
#define GuardParamEnd
static QCString yyFileName
static bool handleEndParBlock ( const QCString )
static

Definition at line 7769 of file commentscan.cpp.

7770 {
7771  if (!g_insideParBlock)
7772  {
7774  "found \\endparblock command without matching \\parblock!");
7775  }
7776  addOutput("@endparblock");
7777  setOutput(OutputDoc); // to end a parblock inside a xrefitem like context
7779  return FALSE;
7780 }
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
static void setOutput(OutputContext ctx)
static bool g_insideParBlock
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static void addOutput(const char *s)
static QCString yyFileName
static bool handleEnum ( const QCString )
static

Definition at line 7542 of file commentscan.cpp.

7543 {
7545  BEGIN(EnumDocArg1);
7546  return stop;
7547 }
#define EnumDocArg1
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static bool handleExample ( const QCString )
static

Definition at line 7679 of file commentscan.cpp.

7680 {
7682  if (!stop) current->name = yyFileName;
7683  BEGIN( FileDocArg1 );
7684  return stop;
7685 }
QCString name
member name
Definition: entry.h:237
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static Entry * current
#define FileDocArg1
static QCString yyFileName
static bool handleExtends ( const QCString )
static

Definition at line 8088 of file commentscan.cpp.

8089 {
8091  return FALSE;
8092 }
const bool FALSE
Definition: qglobal.h:370
#define ExtendsParam
#define BEGIN
static bool handleFile ( const QCString )
static

Definition at line 7660 of file commentscan.cpp.

7661 {
7663  if (!stop)
7664  {
7665  current->name = yyFileName;
7666  }
7667  BEGIN( FileDocArg1 );
7668  return stop;
7669 }
QCString name
member name
Definition: entry.h:237
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static Entry * current
#define FileDocArg1
static QCString yyFileName
static bool handleFn ( const QCString )
static

Definition at line 7518 of file commentscan.cpp.

7519 {
7521  functionProto.resize(0);
7522  braceCount=0;
7523  BEGIN(FnParam);
7524  return stop;
7525 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString functionProto
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static int braceCount
#define FnParam
static bool handleFormatBlock ( const QCString s)
static

Definition at line 7860 of file commentscan.cpp.

7861 {
7862  addOutput("@"+s+" ");
7863  //printf("handleFormatBlock(%s)\n",s.data());
7864  blockName=s;
7865  g_commentCount=0;
7866  BEGIN(FormatBlock);
7867  return FALSE;
7868 }
#define FormatBlock
static QCString blockName
const bool FALSE
Definition: qglobal.h:370
static int g_commentCount
#define BEGIN
static void addOutput(const char *s)
static QCString * s
Definition: config.cpp:1042
static void handleGuard ( const QCString expr)
static

Definition at line 8451 of file commentscan.cpp.

8452 {
8453  CondParser prs;
8454  bool sectionEnabled=prs.parse(yyFileName,yyLineNr,expr.stripWhiteSpace());
8455  bool parentEnabled = TRUE;
8456  if (!guards.isEmpty()) parentEnabled = guards.top()->isEnabled();
8457  if (parentEnabled)
8458  {
8459  if (
8460  (sectionEnabled && guardType==Guard_If) ||
8461  (!sectionEnabled && guardType==Guard_IfNot)
8462  ) // section is visible
8463  {
8464  guards.push(new GuardedSection(TRUE,TRUE));
8466  BEGIN( GuardParamEnd );
8467  }
8468  else // section is invisible
8469  {
8470  if (guardType!=Guard_Skip)
8471  {
8472  guards.push(new GuardedSection(FALSE,TRUE));
8473  }
8475  }
8476  }
8477  else // invisible because of parent
8478  {
8479  guards.push(new GuardedSection(FALSE,FALSE));
8481  }
8482 }
static QStack< GuardedSection > guards
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
static bool enabledSectionFound
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
#define BEGIN
#define SkipGuardedSection
static GuardType guardType
bool parse(const char *fileName, int lineNr, const char *expr)
Definition: condparser.cpp:34
#define GuardParamEnd
const bool TRUE
Definition: qglobal.h:371
static QCString yyFileName
static bool handleHeaderFile ( const QCString )
static

Definition at line 7594 of file commentscan.cpp.

7595 {
7596  BEGIN( ClassDocArg2 );
7597  return FALSE;
7598 }
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
#define ClassDocArg2
static bool handleHideCallergraph ( const QCString )
static

Definition at line 7988 of file commentscan.cpp.

7989 {
7990  current->callerGraph = FALSE; // OFF
7991  return FALSE;
7992 }
const bool FALSE
Definition: qglobal.h:370
bool callerGraph
do we need to draw the caller graph?
Definition: entry.h:250
static Entry * current
static bool handleHideCallgraph ( const QCString )
static

Definition at line 7976 of file commentscan.cpp.

7977 {
7978  current->callGraph = FALSE; // OFF
7979  return FALSE;
7980 }
bool callGraph
do we need to draw the call graph?
Definition: entry.h:249
const bool FALSE
Definition: qglobal.h:370
static Entry * current
static bool handleHideInitializer ( const QCString )
static

Definition at line 7964 of file commentscan.cpp.

7965 {
7966  current->initLines = 0; // OFF
7967  return FALSE;
7968 }
const bool FALSE
Definition: qglobal.h:370
int initLines
define/variable initializer lines to show
Definition: entry.h:244
static Entry * current
static bool handleIdlException ( const QCString )
static

Definition at line 7635 of file commentscan.cpp.

7636 {
7638  BEGIN( ClassDocArg1 );
7639  return stop;
7640 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define ClassDocArg1
static bool handleIf ( const QCString )
static

Definition at line 7877 of file commentscan.cpp.

7878 {
7880  guardType = Guard_If;
7882  BEGIN(GuardParam);
7883  return FALSE;
7884 }
static QCString g_spaceBeforeCmd
static bool enabledSectionFound
const bool FALSE
Definition: qglobal.h:370
#define GuardParam
static QCString g_spaceBeforeIf
#define BEGIN
static GuardType guardType
static bool handleIfNot ( const QCString )
static

Definition at line 7886 of file commentscan.cpp.

7887 {
7891  BEGIN(GuardParam);
7892  return FALSE;
7893 }
static QCString g_spaceBeforeCmd
static bool enabledSectionFound
const bool FALSE
Definition: qglobal.h:370
#define GuardParam
static QCString g_spaceBeforeIf
#define BEGIN
static GuardType guardType
static bool handleIngroup ( const QCString )
static

Definition at line 7945 of file commentscan.cpp.

7946 {
7948  BEGIN( InGroupParam );
7949  return FALSE;
7950 }
const bool FALSE
Definition: qglobal.h:370
static bool inGroupParamFound
#define BEGIN
#define InGroupParam
static bool handleInherit ( const QCString )
static

Definition at line 8082 of file commentscan.cpp.

8083 {
8085  return FALSE;
8086 }
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
#define InheritParam
static bool handleInterface ( const QCString )
static

Definition at line 7628 of file commentscan.cpp.

7629 {
7631  BEGIN( ClassDocArg1 );
7632  return stop;
7633 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define ClassDocArg1
static bool handleInternal ( const QCString )
static

Definition at line 7994 of file commentscan.cpp.

7995 {
7996  if (!Config_getBool("INTERNAL_DOCS"))
7997  {
7998  // make sure some whitespace before a \internal command
7999  // is not treated as "documentation"
8001  {
8002  current->doc.resize(0);
8003  }
8004  g_condCount=0;
8005  BEGIN( SkipInternal );
8006  }
8007  else
8008  {
8009  // re-enabled for bug640828
8010  addOutput("\\internal ");
8011  inInternalDocs = TRUE;
8012  }
8013  return FALSE;
8014 }
bool resize(uint newlen)
Definition: qcstring.h:225
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
static int g_condCount
const bool FALSE
Definition: qglobal.h:370
#define SkipInternal
bool inInternalDocs
#define BEGIN
static Entry * current
#define Config_getBool(val)
Definition: config.cpp:664
static void addOutput(const char *s)
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
const bool TRUE
Definition: qglobal.h:371
static bool handleLineBr ( const QCString )
static

Definition at line 8016 of file commentscan.cpp.

8017 {
8018  addOutput('\n');
8019  return FALSE;
8020 }
const bool FALSE
Definition: qglobal.h:370
static void addOutput(const char *s)
static bool handleMainpage ( const QCString )
static

Definition at line 7649 of file commentscan.cpp.

7650 {
7652  if (!stop)
7653  {
7654  current->name = "mainpage";
7655  }
7656  BEGIN( PageDocArg2 );
7657  return stop;
7658 }
QCString name
member name
Definition: entry.h:237
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static Entry * current
#define PageDocArg2
static bool handleMemberOf ( const QCString )
static

Definition at line 7795 of file commentscan.cpp.

7796 {
7799  return FALSE;
7800 }
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:35
#define BEGIN
static Entry * current
RelatesType relatesType
how relates is handled
Definition: entry.h:270
#define RelatesParam1
static bool handleName ( const QCString )
static

Definition at line 7698 of file commentscan.cpp.

7699 {
7701  if (!stop)
7702  {
7704  BEGIN( NameParam );
7705  if (g_memberGroupId!=DOX_NOGROUP) // end of previous member group
7706  {
7708  }
7709  }
7710  return stop;
7711 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_memberGroupHeader
static int yyLineNr
#define DOX_NOGROUP
Definition: membergroup.h:25
static bool makeStructuralIndicator(Entry::Sections s)
static int g_memberGroupId
#define BEGIN
static Entry * current
void closeGroup(Entry *e, const char *file, int line, bool foundInline=FALSE)
#define NameParam
const bool TRUE
Definition: qglobal.h:371
static QCString yyFileName
static bool handleNamespace ( const QCString )
static

Definition at line 7573 of file commentscan.cpp.

7574 {
7577  return stop;
7578 }
static bool makeStructuralIndicator(Entry::Sections s)
#define NameSpaceDocArg1
#define BEGIN
static bool handleNoSubGrouping ( const QCString )
static

Definition at line 7952 of file commentscan.cpp.

7953 {
7955  return FALSE;
7956 }
const bool FALSE
Definition: qglobal.h:370
bool subGrouping
automatically group class members?
Definition: entry.h:248
static Entry * current
static bool handleOverload ( const QCString )
static

Definition at line 7535 of file commentscan.cpp.

7536 {
7537  functionProto.resize(0);
7539  return FALSE;
7540 }
bool resize(uint newlen)
Definition: qcstring.h:225
const bool FALSE
Definition: qglobal.h:370
static QCString functionProto
#define OverloadParam
#define BEGIN
static bool handlePackage ( const QCString )
static

Definition at line 7580 of file commentscan.cpp.

7581 {
7583  BEGIN( PackageDocArg1 );
7584  return stop;
7585 }
static bool makeStructuralIndicator(Entry::Sections s)
#define PackageDocArg1
#define BEGIN
static bool handlePage ( const QCString )
static

Definition at line 7642 of file commentscan.cpp.

7643 {
7645  BEGIN( PageDocArg1 );
7646  return stop;
7647 }
#define PageDocArg1
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static bool handleParBlock ( const QCString )
static

Definition at line 7752 of file commentscan.cpp.

7753 {
7754  if (g_insideParBlock)
7755  {
7757  "found \\parblock command while already in a parblock!");
7758  }
7759  if (!g_spaceBeforeCmd.isEmpty())
7760  {
7763  }
7764  addOutput("@parblock ");
7766  return FALSE;
7767 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
static bool g_insideParBlock
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static void addOutput(const char *s)
const bool TRUE
Definition: qglobal.h:371
static QCString yyFileName
static bool handlePrivate ( const QCString )
static

Definition at line 8036 of file commentscan.cpp.

8037 {
8039  return FALSE;
8040 }
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
static Entry * current
Protection protection
class protection
Definition: entry.h:241
static bool handlePrivateSection ( const QCString )
static

Definition at line 8042 of file commentscan.cpp.

8043 {
8045  return FALSE;
8046 }
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
static Protection protection
static Entry * current
Protection protection
class protection
Definition: entry.h:241
static bool handleProtected ( const QCString )
static

Definition at line 8048 of file commentscan.cpp.

8049 {
8051  return FALSE;
8052 }
const bool FALSE
Definition: qglobal.h:370
static Entry * current
Protection protection
class protection
Definition: entry.h:241
static bool handleProtectedSection ( const QCString )
static

Definition at line 8054 of file commentscan.cpp.

8055 {
8057  return FALSE;
8058 }
const bool FALSE
Definition: qglobal.h:370
static Protection protection
static Entry * current
Protection protection
class protection
Definition: entry.h:241
static bool handleProtocol ( const QCString )
static

Definition at line 7600 of file commentscan.cpp.

7601 { // Obj-C protocol
7603  BEGIN( ClassDocArg1 );
7604  return stop;
7605 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define ClassDocArg1
static bool handlePublic ( const QCString s)
static

Definition at line 8060 of file commentscan.cpp.

8061 {
8063  return FALSE;
8064 }
Definition: types.h:26
const bool FALSE
Definition: qglobal.h:370
static Entry * current
Protection protection
class protection
Definition: entry.h:241
static bool handlePublicSection ( const QCString s)
static

Definition at line 8066 of file commentscan.cpp.

8067 {
8069  return FALSE;
8070 }
Definition: types.h:26
const bool FALSE
Definition: qglobal.h:370
static Protection protection
static Entry * current
Protection protection
class protection
Definition: entry.h:241
static bool handlePure ( const QCString )
static

Definition at line 8029 of file commentscan.cpp.

8030 {
8031  endBrief();
8032  current->virt = Pure;
8033  return FALSE;
8034 }
static void endBrief(bool addToOutput=TRUE)
Definition: types.h:29
const bool FALSE
Definition: qglobal.h:370
static Entry * current
Specifier virt
virtualness of the entry
Definition: entry.h:251
static bool handleRefItem ( const QCString )
static

Definition at line 7802 of file commentscan.cpp.

7803 {
7804  addOutput("@refitem ");
7805  BEGIN(LineParam);
7806  return FALSE;
7807 }
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
static void addOutput(const char *s)
#define LineParam
static bool handleRelated ( const QCString )
static

Definition at line 7782 of file commentscan.cpp.

7783 {
7785  return FALSE;
7786 }
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
#define RelatesParam1
static bool handleRelatedAlso ( const QCString )
static

Definition at line 7788 of file commentscan.cpp.

7789 {
7792  return FALSE;
7793 }
const bool FALSE
Definition: qglobal.h:370
#define BEGIN
static Entry * current
RelatesType relatesType
how relates is handled
Definition: entry.h:270
#define RelatesParam1
static bool handleSection ( const QCString s)
static

Definition at line 7809 of file commentscan.cpp.

7810 {
7812  addOutput("@"+s+" ");
7814  if (s=="section") g_sectionLevel=1;
7815  else if (s=="subsection") g_sectionLevel=2;
7816  else if (s=="subsubsection") g_sectionLevel=3;
7817  else if (s=="paragraph") g_sectionLevel=4;
7818  return FALSE;
7819 }
const bool FALSE
Definition: qglobal.h:370
static int g_sectionLevel
static void setOutput(OutputContext ctx)
#define BEGIN
static void addOutput(const char *s)
#define SectionLabel
static bool handleShowInitializer ( const QCString )
static

Definition at line 7958 of file commentscan.cpp.

7959 {
7960  current->initLines = 100000; // ON
7961  return FALSE;
7962 }
const bool FALSE
Definition: qglobal.h:370
int initLines
define/variable initializer lines to show
Definition: entry.h:244
static Entry * current
static bool handleStatic ( const QCString )
static

Definition at line 8022 of file commentscan.cpp.

8023 {
8024  endBrief();
8025  current->stat = TRUE;
8026  return FALSE;
8027 }
bool stat
static ?
Definition: entry.h:245
static void endBrief(bool addToOutput=TRUE)
const bool FALSE
Definition: qglobal.h:370
static Entry * current
const bool TRUE
Definition: qglobal.h:371
static bool handleStruct ( const QCString )
static

Definition at line 7621 of file commentscan.cpp.

7622 {
7624  BEGIN( ClassDocArg1 );
7625  return stop;
7626 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define ClassDocArg1
static bool handleSubpage ( const QCString s)
static

Definition at line 7821 of file commentscan.cpp.

7822 {
7823  if (current->section!=Entry::EMPTY_SEC &&
7826  )
7827  {
7829  "found \\subpage command in a comment block that is not marked as a page!");
7830  }
7831  if (!g_spaceBeforeCmd.isEmpty())
7832  {
7835  }
7836  addOutput("@"+s+" ");
7838  return FALSE;
7839 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
#define BEGIN
static Entry * current
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static void addOutput(const char *s)
#define SubpageLabel
static QCString yyFileName
int section
entry type (see Sections);
Definition: entry.h:235
static bool handleTest ( const QCString )
static

Definition at line 7721 of file commentscan.cpp.

7722 {
7725  xrefKind = XRef_Test;
7726  return FALSE;
7727 }
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static XRefKind xrefKind
static XRefKind newXRefKind
static bool handleToc ( const QCString s)
static

Definition at line 8072 of file commentscan.cpp.

8073 {
8076  {
8077  current->stat=TRUE; // we 'abuse' stat to pass whether or the TOC is enabled
8078  }
8079  return FALSE;
8080 }
bool stat
static ?
Definition: entry.h:245
const bool FALSE
Definition: qglobal.h:370
static Entry * current
const bool TRUE
Definition: qglobal.h:371
int section
entry type (see Sections);
Definition: entry.h:235
static bool handleTodo ( const QCString )
static

Definition at line 7713 of file commentscan.cpp.

7714 {
7717  xrefKind = XRef_Todo;
7718  return FALSE;
7719 }
const bool FALSE
Definition: qglobal.h:370
static void setOutput(OutputContext ctx)
static XRefKind xrefKind
static XRefKind newXRefKind
static bool handleUnion ( const QCString )
static

Definition at line 7614 of file commentscan.cpp.

7615 {
7617  BEGIN( ClassDocArg1 );
7618  return stop;
7619 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
#define ClassDocArg1
static bool handleWeakGroup ( const QCString )
static

Definition at line 7565 of file commentscan.cpp.

7566 {
7569  BEGIN( GroupDocArg1 );
7570  return stop;
7571 }
static bool makeStructuralIndicator(Entry::Sections s)
#define BEGIN
static Entry * current
#define GroupDocArg1
weakgroup
Definition: entry.h:188
GroupDocType groupDocType
Definition: entry.h:289
static bool handleXRefItem ( const QCString )
static

Definition at line 7745 of file commentscan.cpp.

7746 {
7749  return FALSE;
7750 }
const bool FALSE
Definition: qglobal.h:370
#define XRefItemParam1
#define BEGIN
static XRefKind newXRefKind
if ( yy_init)

Definition at line 4307 of file commentscan.cpp.

4308  {
4309  (yy_init) = 1;
4310 
4311 #ifdef YY_USER_INIT
4312  YY_USER_INIT;
4313 #endif
4314 
4315  /* Create the reject buffer large enough to save one state per allowed character. */
4316  if ( ! (yy_state_buf) )
4318  if ( ! (yy_state_buf) )
4319  YY_FATAL_ERROR( "out of dynamic memory in commentscanYYlex()" );
4320 
4321  if ( ! (yy_start) )
4322  (yy_start) = 1; /* first start state */
4323 
4324  if ( ! commentscanYYin )
4325  commentscanYYin = stdin;
4326 
4327  if ( ! commentscanYYout )
4329 
4330  if ( ! YY_CURRENT_BUFFER ) {
4334  }
4335 
4337  }
static void commentscanYYensure_buffer_stack(void)
static int yy_start
static int yy_init
int yy_state_type
Definition: code.cpp:361
#define YY_STATE_BUF_SIZE
#define YY_CURRENT_BUFFER_LVALUE
static yy_state_type * yy_state_buf
FILE * commentscanYYout
YY_BUFFER_STATE commentscanYY_create_buffer(FILE *file, int size)
static void commentscanYY_load_buffer_state(void)
#define YY_BUF_SIZE
#define YY_CURRENT_BUFFER
void * commentscanYYalloc(yy_size_t)
FILE * commentscanYYin
#define YY_FATAL_ERROR(msg)
void initGroupInfo ( Entry e)

Definition at line 8412 of file commentscan.cpp.

8413 {
8414  //printf("==> initGroup(id=%d,related=%s,e=%p)\n",g_memberGroupId,
8415  // g_memberGroupRelates.data(),e);
8416  e->mGrpId = g_memberGroupId;
8418  if (!g_autoGroupStack.isEmpty())
8419  {
8420  //printf("Appending group %s to %s: count=%d entry=%p\n",
8421  // g_autoGroupStack.top()->groupname.data(),
8422  // e->name.data(),e->groups->count(),e);
8423  e->groups->append(new Grouping(*g_autoGroupStack.top()));
8424  }
8425 }
Definition: types.h:61
void append(const type *d)
Definition: qlist.h:73
static QCString g_memberGroupRelates
int mGrpId
member group id
Definition: entry.h:278
QList< Grouping > * groups
list of groups this entry belongs to
Definition: entry.h:280
static int g_memberGroupId
QCString relates
related class (doc block)
Definition: entry.h:269
static QStack< Grouping > g_autoGroupStack
static void initParser ( )
static

Definition at line 3560 of file commentscan.cpp.

3561 {
3566 }
bool resize(uint newlen)
Definition: qcstring.h:225
static QCString g_sectionLabel
static QCString g_memberGroupHeader
const bool FALSE
Definition: qglobal.h:370
static bool g_insideParBlock
static QCString g_sectionTitle
static void lineCount ( )
static

Definition at line 3619 of file commentscan.cpp.

3620 {
3621  for( const char* c = commentscanYYtext ; *c ; ++c )
3622  yyLineNr += (*c == '\n') ;
3623 }
static int yyLineNr
char * commentscanYYtext
static bool makeStructuralIndicator ( Entry::Sections  s)
static

Definition at line 3602 of file commentscan.cpp.

3603 {
3604  //printf("current->section=%x\n",current->section);
3606  {
3607  return TRUE;
3608  }
3609  else
3610  {
3611  needNewEntry = TRUE;
3612  current->section = s;
3615  return FALSE;
3616  }
3617 }
static bool needNewEntry
const bool FALSE
Definition: qglobal.h:370
static int yyLineNr
static bool getDocSectionName(int s)
int startLine
start line of entry in the source
Definition: entry.h:283
static Entry * current
QCString fileName
file this entry was extracted from
Definition: entry.h:282
static QCString * s
Definition: config.cpp:1042
const bool TRUE
Definition: qglobal.h:371
static QCString yyFileName
int section
entry type (see Sections);
Definition: entry.h:235
void openGroup ( Entry e,
const char *  file,
int  line 
)

Definition at line 8354 of file commentscan.cpp.

8355 {
8356  //printf("==> openGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
8357  // e->name.data(),e->section,g_autoGroupStack.count());
8358  if (e->section==Entry::GROUPDOC_SEC) // auto group
8359  {
8360  g_autoGroupStack.push(new Grouping(e->name,e->groupingPri()));
8361  }
8362  else // start of a member group
8363  {
8364  //printf(" membergroup id=%d %s\n",g_memberGroupId,g_memberGroupHeader.data());
8365  if (g_memberGroupId==DOX_NOGROUP) // no group started yet
8366  {
8367  static int curGroupId=0;
8368 
8371  info->compoundName = g_compoundName;
8372  g_memberGroupId = findExistingGroup(curGroupId,info);
8373  //printf(" use membergroup %d\n",g_memberGroupId);
8375 
8377  e->mGrpId = g_memberGroupId;
8378  }
8379  }
8380 }
Definition: types.h:61
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
static QCString g_memberGroupHeader
static QCString g_memberGroupRelates
static int findExistingGroup(int &groupId, const MemberGroupInfo *info)
QCString name
member name
Definition: entry.h:237
QCString header
Definition: membergroup.h:147
int mGrpId
member group id
Definition: entry.h:278
#define DOX_NOGROUP
Definition: membergroup.h:25
void insert(long k, const type *d)
Definition: qintdict.h:57
static int g_memberGroupId
static QCString g_compoundName
Grouping::GroupPri_t groupingPri() const
Definition: entry.h:306
static QIntDict< MemberGroupInfo > memGrpInfoDict
Definition: doxygen.h:126
QCString relates
related class (doc block)
Definition: entry.h:269
static QStack< Grouping > g_autoGroupStack
QCString compoundName
Definition: membergroup.h:151
int section
entry type (see Sections);
Definition: entry.h:235
bool parseCommentBlock ( ParserInterface parser,
Entry curEntry,
const QCString comment,
const QCString fileName,
int &  lineNr,
bool  isBrief,
bool  isJavaDocStyle,
bool  isInbody,
Protection prot,
int &  position,
bool newEntryNeeded 
)

Invokes the comment block parser with the request to parse a single comment block.

Parameters
[in]parserThe language parse that invoked this function. The comment block parse may invoke ParserInterface::parsePrototype() in order to parse the argument of a @fn command.
[in]curEntryThe Entry to which the comment block belongs. Any information (like documentation) that is found in the comment block will be stored in this entry.
[in]commentA string representing the actual comment block. Note that leading *'s are already stripped from the comment block.
[in]fileNameThe name of the file in which the comment is found. Mainly used for producing warnings.
[in,out]lineNrThe line number at which the comment block was found. When the function returns it will be set to the last line parsed.
[in]isBriefTRUE iff this comment block represents a brief description.
[in]isJavaDocStyleTRUE iff this comment block is in "JavaDoc" style. This means that it starts as a brief description until the end of the sentences is found and then proceeds as a detailed description.
[in]isInbodyTRUE iff this comment block is located in the body of a function.
[in,out]protThe protection level in which this comment block was found. Commands in the comment block may override this.
[in,out]positionThe character position within comment where the comment block starts. Typically used in case the comment block contains multiple structural commands.
[out]newEntryNeededBoolean that is TRUE if the comment block parser finds that a the comment block finishes the entry and a new one needs to be started.
Returns
TRUE if the comment requires further processing. The parameter newEntryNeeded will typically be true in this case and position will indicate the offset inside the comment string where to proceed parsing. FALSE indicates no further processing is needed.

Definition at line 8149 of file commentscan.cpp.

8161 {
8162  //printf("parseCommentBlock() isBrief=%d isAutoBriefOn=%d lineNr=%d\n",
8163  // isBrief,isAutoBriefOn,lineNr);
8164 
8165  initParser();
8166  guards.setAutoDelete(TRUE);
8167  guards.clear();
8168  langParser = parser;
8169  current = curEntry;
8170  if (comment.isEmpty()) return FALSE; // avoid empty strings
8171  inputString = comment;
8172  inputString.append(" ");
8174  yyLineNr = lineNr;
8175  yyFileName = fileName;
8176  protection = prot;
8177  needNewEntry = FALSE;
8178  xrefKind = XRef_None;
8180  insidePre = FALSE;
8181  parseMore = FALSE;
8182  inBody = isInbody;
8183  outputXRef.resize(0);
8184  setOutput( isBrief || isAutoBriefOn ? OutputBrief : OutputDoc );
8185  briefEndsAtDot = isAutoBriefOn;
8186  g_condCount = 0;
8187  g_sectionLevel = 0;
8190 
8191  printlex(commentscanYY_flex_debug, TRUE, __FILE__, fileName ? fileName.data(): NULL);
8192  if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments
8193  {
8194  current->inbodyDocs+="\n\n";
8195  }
8196 
8197  Debug::print(Debug::CommentScan,0,"-----------\nCommentScanner: %s:%d\n"
8198  "input=[\n%s]\n",qPrint(fileName),lineNr,qPrint(comment)
8199  );
8200 
8202  BEGIN( Comment );
8203  commentscanYYlex();
8204  setOutput( OutputDoc );
8205 
8206  if (YY_START==OverloadParam) // comment ended with \overload
8207  {
8209  }
8210 
8211  if (!guards.isEmpty())
8212  {
8213  warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
8214  }
8215 
8216  if (g_insideParBlock)
8217  {
8219  "Documentation block ended while inside a \\parblock. Missing \\endparblock");
8220  }
8221 
8223 
8225  {
8226  // to allow a comment block with just a @file command.
8227  current->doc="\n\n";
8228  }
8229 
8231  g_memberGroupId==DOX_NOGROUP) // @name section but no group started yet
8232  {
8234  }
8235 
8237  {
8238  current->brief = processMarkdown(fileName,lineNr,current,current->brief);
8239  current->doc = processMarkdown(fileName,lineNr,current,current->doc);
8241  }
8242 
8244  "brief=[line=%d\n%s]\ndocs=[line=%d\n%s]\ninbody=[line=%d\n%s]\n===========\n",
8248  );
8249 
8250  checkFormula();
8251  prot = protection;
8252 
8253  groupAddDocs(curEntry);
8254 
8255  newEntryNeeded = needNewEntry;
8256 
8257  // if we did not proceed during this call, it does not make
8258  // sense to continue, since we get stuck. See bug 567346 for situations
8259  // were this happens
8261 
8263 
8264  lineNr = yyLineNr;
8265  //printf("position=%d parseMore=%d newEntryNeeded=%d\n",
8266  // position,parseMore,newEntryNeeded);
8267 
8268  printlex(commentscanYY_flex_debug, FALSE, __FILE__, fileName ? fileName.data(): NULL);
8269  return parseMore;
8270 }
static bool markdownSupport
Definition: doxygen.h:153
static void checkFormula()
bool resize(uint newlen)
Definition: qcstring.h:225
static QStack< GuardedSection > guards
static QCString g_spaceBeforeCmd
bool isEmpty() const
Definition: qcstring.h:189
static int inputPosition
void printlex(int dbg, bool enter, const char *lexName, const char *fileName)
Definition: message.cpp:242
static void initParser()
static int g_condCount
static bool needNewEntry
static QCString outputXRef
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 bool parseMore
static int yyLineNr
static int g_sectionLevel
static ParserInterface * langParser
QCString getOverloadDocs()
Definition: util.cpp:5859
static void setOutput(OutputContext ctx)
static bool inBody
int comment
void commentscanYYrestart(FILE *input_file)
static QCString inputString
static XRefKind xrefKind
#define YY_START
#define DOX_NOGROUP
Definition: membergroup.h:25
static QCString g_spaceBeforeIf
static Protection protection
fileName
Definition: dumpTree.py:9
QCString brief
brief description (doc block)
Definition: entry.h:263
static int g_memberGroupId
#define OverloadParam
#define BEGIN
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:84
int commentscanYY_flex_debug
static bool g_insideParBlock
static Entry * current
void openGroup(Entry *e, const char *file, int line)
const char * data() const
Definition: qcstring.h:207
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static void addOutput(const char *s)
int commentscanYYlex(void)
static bool briefEndsAtDot
QCString inbodyDocs
documentation inside the body of a function
Definition: entry.h:266
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
static void groupAddDocs(Entry *e)
#define Comment
QCString processMarkdown(const QCString &fileName, const int lineNr, Entry *e, const QCString &input)
Definition: markdown.cpp:2298
QCString stripLeadingAndTrailingEmptyLines(const QCString &s, int &docLine)
Definition: util.cpp:6876
int inbodyLine
line number at which the body doc was found
Definition: entry.h:267
static bool insidePre
FILE * commentscanYYin
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
static bool xrefAppendFlag
static QCString yyFileName
QCString & append(const char *s)
Definition: qcstring.cpp:383
int section
entry type (see Sections);
Definition: entry.h:235
static SectionInfo::SectionType sectionLevelToType ( int  level)
static

Definition at line 3772 of file commentscan.cpp.

3773 {
3774  if (level>=0 && level<5) return (SectionInfo::SectionType)level;
3775  return SectionInfo::Anchor;
3776 }
static void setOutput ( OutputContext  ctx)
inlinestatic

Definition at line 3831 of file commentscan.cpp.

3832 {
3833  bool xrefAppendToPrev = xrefAppendFlag;
3834  // determine append flag for the next item (i.e. the end of this item)
3835  xrefAppendFlag = !inBody &&
3836  inContext==OutputXRef && ctx==OutputXRef && // two consecutive xref items
3837  newXRefKind==xrefKind && // of the same kind
3838  (xrefKind!=XRef_Item ||
3839  newXRefItemKey==xrefItemKey); // with the same key if \xrefitem
3840  //printf("%d && %d && %d && (%d || %d)\n",
3841  // inContext==OutputXRef,
3842  // ctx==OutputXRef,
3843  // newXRefKind==xrefKind,
3844  // xrefKind!=XRef_Item,
3845  // newXRefItemKey==xrefItemKey);
3846 
3847  //printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
3848  // xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
3849 
3850  //printf("setOutput(inContext=%d ctx=%d)\n",inContext,ctx);
3851  if (inContext==OutputXRef) // end of XRef section => add the item
3852  {
3853  // See if we can append this new xref item to the previous one.
3854  // We know this at the start of the next item of the same
3855  // type and need to remember this until the end of that item.
3856  switch(xrefKind)
3857  {
3858  case XRef_Todo:
3859  addXRefItem("todo",
3860  theTranslator->trTodo(),
3862  xrefAppendToPrev
3863  );
3864  break;
3865  case XRef_Test:
3866  addXRefItem("test",
3867  theTranslator->trTest(),
3869  xrefAppendToPrev
3870  );
3871  break;
3872  case XRef_Bug:
3873  addXRefItem("bug",
3874  theTranslator->trBug(),
3876  xrefAppendToPrev
3877  );
3878  break;
3879  case XRef_Deprecated:
3880  addXRefItem("deprecated",
3883  xrefAppendToPrev
3884  );
3885  break;
3886  case XRef_Item: // user defined list
3888  xrefItemTitle,
3889  xrefListTitle,
3890  xrefAppendToPrev
3891  );
3892  break;
3893  case XRef_None:
3894  ASSERT(0);
3895  break;
3896  }
3897  }
3899 
3900  int oldContext = inContext;
3901  inContext = ctx;
3902  if (inContext!=OutputXRef && inBody) inContext=OutputInbody;
3903  switch(inContext)
3904  {
3905  case OutputDoc:
3906  if (oldContext!=inContext)
3907  {
3909  if (current->docFile.isEmpty())
3910  {
3913  }
3914  }
3916  break;
3917  case OutputBrief:
3918  if (oldContext!=inContext)
3919  {
3920  if (current->briefFile.isEmpty())
3921  {
3924  }
3925  }
3926  if (current->brief.stripWhiteSpace().isEmpty()) // we only want one brief
3927  // description even if multiple
3928  // are given...
3929  {
3931  }
3932  else
3933  {
3935  inContext = OutputDoc; // need to switch to detailed docs, see bug 631380
3936  }
3937  break;
3938  case OutputXRef:
3940  // first item found, so can't append to previous
3941  //xrefAppendFlag = FALSE;
3942  break;
3943  case OutputInbody:
3945  break;
3946  }
3947 }
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
virtual QCString trDeprecatedList()=0
virtual QCString trDeprecated()=0
static void stripTrailingWhiteSpace(QCString &s)
static QCString outputXRef
int briefLine
line number at which the brief desc. was found
Definition: entry.h:264
virtual QCString trBug()=0
static QCString xrefListTitle
int docLine
line number at which the documentation was found
Definition: entry.h:261
static int yyLineNr
virtual QCString trTodoList()=0
static bool inBody
static XRefKind xrefKind
QCString brief
brief description (doc block)
Definition: entry.h:263
static QCString xrefItemKey
virtual QCString trBugList()=0
static Entry * current
virtual QCString trTodo()=0
virtual QCString trTest()=0
static OutputContext inContext
QCString inbodyDocs
documentation inside the body of a function
Definition: entry.h:266
QCString doc
documentation block (partly parsed)
Definition: entry.h:260
static QCString * pOutputString
static QCString xrefItemTitle
static QCString newXRefItemKey
static XRefKind newXRefKind
Translator * theTranslator
Definition: language.cpp:157
virtual QCString trTestList()=0
QCString docFile
file in which the documentation was found
Definition: entry.h:262
static bool xrefAppendFlag
static QCString yyFileName
#define ASSERT(x)
Definition: qglobal.h:590
static void addXRefItem(const char *listName, const char *itemTitle, const char *listTitle, bool append)
QCString briefFile
file in which the brief desc. was found
Definition: entry.h:265
static QCString stripQuotes ( const char *  s)
static

Definition at line 3626 of file commentscan.cpp.

3627 {
3628  QCString name;
3629  if (s==0 || *s==0) return name;
3630  name=s;
3631  if (name.at(0)=='"' && name.at(name.length()-1)=='"')
3632  {
3633  name=name.mid(1,name.length()-2);
3634  }
3635  return name;
3636 }
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
static void stripTrailingWhiteSpace ( QCString s)
static

Definition at line 3818 of file commentscan.cpp.

3819 {
3820  uint len = s.length();
3821  int i = (int)len-1;
3822  char c;
3823  while (i>=0 && ((c = s.at(i))==' ' || c=='\t' || c=='\r')) i--;
3824  if (i!=(int)len-1)
3825  {
3826  s.resize(i+2); // string up to and including char at pos i and \0 terminator
3827  }
3828 }
bool resize(uint newlen)
Definition: qcstring.h:225
uint length() const
Definition: qcstring.h:195
char & at(uint i) const
Definition: qcstring.h:326
unsigned uint
Definition: qglobal.h:351
while ( )

Definition at line 4339 of file commentscan.cpp.

4340  {
4341  yy_cp = (yy_c_buf_p);
4342 
4343  /* Support of commentscanYYtext. */
4344  *yy_cp = (yy_hold_char);
4345 
4346  /* yy_bp points to the position in yy_ch_buf of the start of
4347  * the current run.
4348  */
4349  yy_bp = yy_cp;
4350 
4351  yy_current_state = (yy_start);
4352  yy_current_state += YY_AT_BOL();
4353 
4354  (yy_state_ptr) = (yy_state_buf);
4355  *(yy_state_ptr)++ = yy_current_state;
4356 
4357 yy_match:
4358  do
4359  {
4360  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4361  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4362  {
4363  yy_current_state = (int) yy_def[yy_current_state];
4364  if ( yy_current_state >= 1138 )
4365  yy_c = yy_meta[(unsigned int) yy_c];
4366  }
4367  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4368  *(yy_state_ptr)++ = yy_current_state;
4369  ++yy_cp;
4370  }
4371  while ( yy_current_state != 1137 );
4372 
4373 yy_find_action:
4374  yy_current_state = *--(yy_state_ptr);
4375  (yy_lp) = yy_accept[yy_current_state];
4376 find_rule: /* we branch to this label when backing up */
4377  for ( ; ; ) /* until we find what rule we matched */
4378  {
4379  if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
4380  {
4381  yy_act = yy_acclist[(yy_lp)];
4382  {
4383  (yy_full_match) = yy_cp;
4384  break;
4385  }
4386  }
4387  --yy_cp;
4388  yy_current_state = *--(yy_state_ptr);
4389  (yy_lp) = yy_accept[yy_current_state];
4390  }
4391 
4393 
4394 do_action: /* This label is used only to access EOF actions. */
4395 
4396  switch ( yy_act )
4397  { /* beginning of action switch */
4398 case 1:
4400 #line 1020 "commentscan.l"
4401 { // escaped command
4403  }
4404  YY_BREAK
4405 case 2:
4407 #line 1023 "commentscan.l"
4408 { // escaped command
4410  }
4411  YY_BREAK
4412 case 3:
4414 #line 1026 "commentscan.l"
4415 { // mail address
4417  }
4418  YY_BREAK
4419 case 4:
4421 #line 1029 "commentscan.l"
4422 { // quoted text
4424  }
4425  YY_BREAK
4426 case 5:
4428 #line 1032 "commentscan.l"
4429 { // directory (or chain of commands!)
4431  }
4432  YY_BREAK
4433 case 6:
4435 #line 1035 "commentscan.l"
4436 { // HTML command that ends a brief description
4438  // continue with the same input
4439  REJECT;
4440  }
4441  YY_BREAK
4442 case 7:
4444 #line 1040 "commentscan.l"
4445 { // HTML command that ends a brief description
4447  {
4449  }
4450  // continue with the same input
4451  REJECT;
4452  }
4453  YY_BREAK
4454 case 8:
4456 #line 1048 "commentscan.l"
4457 { // start of a .NET XML style brief description
4460  }
4461  YY_BREAK
4462 case 9:
4464 #line 1052 "commentscan.l"
4465 { // start of a .NET XML style detailed description
4468  }
4469  YY_BREAK
4470 case 10:
4472 #line 1056 "commentscan.l"
4473 { // start of a .NET XML style detailed description
4476  }
4477  YY_BREAK
4478 case 11:
4480 #line 1060 "commentscan.l"
4481 { // end of a brief or detailed description
4483  }
4484  YY_BREAK
4485 case 12:
4487 #line 1063 "commentscan.l"
4488 {
4490  int s=tag.find("id=");
4491  if (s!=-1) // command has id attribute
4492  {
4493  char c=tag[s+3];
4494  if (c=='\'' || c=='"') // valid start
4495  {
4496  int e=tag.find(c,s+4);
4497  if (e!=-1) // found matching end
4498  {
4499  QCString id=tag.mid(s+4,e-s-4); // extract id
4500  addAnchor(id);
4501  }
4502  }
4503  }
4505  }
4506  YY_BREAK
4507 case 13:
4509 #line 1081 "commentscan.l"
4510 {
4511  insidePre=TRUE;
4513  }
4514  YY_BREAK
4515 case 14:
4517 #line 1085 "commentscan.l"
4518 {
4519  insidePre=FALSE;
4521  }
4522  YY_BREAK
4523 case 15:
4525 #line 1089 "commentscan.l"
4526 { // RCS tag which end a brief description
4528  REJECT;
4529  }
4530  YY_BREAK
4531 case 16:
4533 #line 1093 "commentscan.l"
4534 {
4535  BEGIN(HtmlComment);
4536  }
4537  YY_BREAK
4538 case 17:
4540 #line 1096 "commentscan.l"
4541 {
4542  addOutput("\\endinternal ");
4543  if (!inInternalDocs)
4545  "found \\endinternal without matching \\internal"
4546  );
4548  }
4549  YY_BREAK
4550 case 18:
4552 #line 1104 "commentscan.l"
4553 { // potentially interesting command
4554  // the {B}* in the front was added for bug620924
4556  DocCmdMapper::Cmd *cmdPtr = DocCmdMapper::map(cmdName);
4557  if (cmdPtr) // special action is required
4558  {
4559  int i=0;
4560  while (commentscanYYtext[i]==' ' || commentscanYYtext[i]=='\t') i++;
4562  if (cmdPtr->endsBrief && !(inContext==OutputXRef && cmdName=="parblock"))
4563  {
4565  // this command forces the end of brief description
4567  }
4568  //if (i>0) addOutput(QCString(commentscanYYtext).left(i)); // removed for bug 689341
4569  if (cmdPtr->func && cmdPtr->func(cmdName))
4570  {
4571  // implicit split of the comment block into two
4572  // entries. Restart the next block at the start
4573  // of this command.
4574  parseMore=TRUE;
4575 
4576  // yuk, this is probably not very portable across lex implementations,
4577  // but we need to know the position in the input buffer where this
4578  // rule matched.
4579  // for flex 2.5.33+ we should use YY_CURRENT_BUFFER_LVALUE
4580 #if YY_FLEX_MAJOR_VERSION>=2 && (YY_FLEX_MINOR_VERSION>5 || (YY_FLEX_MINOR_VERSION==5 && YY_FLEX_SUBMINOR_VERSION>=33))
4582 #else
4583  inputPosition=prevPosition + (int)(yy_bp - yy_current_buffer->yy_ch_buf);
4584 #endif
4585  yyterminate();
4586  }
4587  else if (cmdPtr->func==0)
4588  {
4589  // command without handler, to be processed
4590  // later by parsedoc.cpp
4592  }
4593  }
4594  else // command not relevant
4595  {
4597  }
4598  }
4599  YY_BREAK
4600 case 19:
4602 #line 1150 "commentscan.l"
4603 { // escaped formula command
4605  }
4606  YY_BREAK
4607 case 20:
4609 #line 1153 "commentscan.l"
4610 { // language switch command
4612  if (!langId.isEmpty() &&
4613  qstricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)!=0)
4614  { // enable language specific section
4615  BEGIN(SkipLang);
4616  }
4617  }
4618  YY_BREAK
4619 case 21:
4621 #line 1161 "commentscan.l"
4622 { // start of a formula with custom environment
4623  formulaText="\\begin";
4625  if (formulaEnv.at(formulaEnv.length()-1)=='{')
4626  {
4627  // remove trailing open brace
4629  }
4631  formulaNewLines=0;
4633  }
4634  YY_BREAK
4635 case 22:
4637 #line 1173 "commentscan.l"
4638 { // start of a inline formula
4639  formulaText="$";
4640  formulaNewLines=0;
4642  }
4643  YY_BREAK
4644 case 23:
4646 #line 1178 "commentscan.l"
4647 { // start of a block formula
4648  formulaText="\\[";
4649  formulaNewLines=0;
4651  }
4652  YY_BREAK
4653 case 24:
4655 #line 1183 "commentscan.l"
4656 { // begin of a group
4657  //langParser->handleGroupStartCommand(g_memberGroupHeader);
4659  }
4660  YY_BREAK
4661 case 25:
4663 #line 1187 "commentscan.l"
4664 { // end of a group
4665  //langParser->handleGroupEndCommand();
4668  parseMore=TRUE;
4669  needNewEntry = TRUE;
4670 #if YY_FLEX_MAJOR_VERSION>=2 && (YY_FLEX_MINOR_VERSION>5 || (YY_FLEX_MINOR_VERSION==5 && YY_FLEX_SUBMINOR_VERSION>=33))
4672 #else
4673  inputPosition=prevPosition + (int)(yy_bp - yy_current_buffer->yy_ch_buf) + strlen(commentscanYYtext);
4674 #endif
4675  yyterminate();
4676  }
4677  YY_BREAK
4678 case 26:
4680 #line 1200 "commentscan.l"
4681 { // escaped character
4683  }
4684  YY_BREAK
4685 case 27:
4687 #line 1203 "commentscan.l"
4688 { // normal word
4690  }
4691  YY_BREAK
4692 case 28:
4693 /* rule 28 can match eol */
4694 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
4695 (yy_c_buf_p) = yy_cp -= 1;
4696 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
4698 #line 1206 "commentscan.l"
4699 { // explicit end autolist: e.g " ."
4701  }
4702  YY_BREAK
4703 case 29:
4704 #line 1210 "commentscan.l"
4705 case 30:
4707 #line 1210 "commentscan.l"
4708 { // start of autolist
4710  {
4711  REJECT;
4712  }
4713  else
4714  {
4715  if (inContext!=OutputXRef)
4716  {
4719  }
4721  }
4722  }
4723  YY_BREAK
4724 case 31:
4726 #line 1225 "commentscan.l"
4727 { // start of autolist
4728  if (inContext!=OutputXRef)
4729  {
4732  }
4734  }
4735  YY_BREAK
4736 case 32:
4737 /* rule 32 can match eol */
4738 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
4739 (yy_c_buf_p) = yy_cp -= 1;
4740 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
4742 #line 1233 "commentscan.l"
4743 { // horizontal line (dashed)
4745  }
4746  YY_BREAK
4747 case 33:
4749 #line 1236 "commentscan.l"
4750 { // escaped mdash
4752  }
4753  YY_BREAK
4754 case 34:
4756 #line 1239 "commentscan.l"
4757 { // escaped mdash
4759  }
4760  YY_BREAK
4761 case 35:
4763 #line 1242 "commentscan.l"
4764 { // mdash
4766  }
4767  YY_BREAK
4768 case 36:
4770 #line 1245 "commentscan.l"
4771 { // ndash
4773  }
4774  YY_BREAK
4775 case 37:
4777 #line 1248 "commentscan.l"
4778 { // numbered item
4780  }
4781  YY_BREAK
4782 case 38:
4784 #line 1251 "commentscan.l"
4785 { // . at start or in the middle of a word, or ellipsis
4787  }
4788  YY_BREAK
4789 case 39:
4791 #line 1254 "commentscan.l"
4792 { // . with escaped space.
4795  }
4796  YY_BREAK
4797 case 40:
4799 #line 1258 "commentscan.l"
4800 { // . with comma such as "e.g.,"
4802  }
4803  YY_BREAK
4804 case 41:
4806 #line 1261 "commentscan.l"
4807 { // ellipsis with escaped space.
4808  addOutput("... ");
4809  }
4810  YY_BREAK
4811 case 42:
4812 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
4813 (yy_c_buf_p) = yy_cp -= 1;
4814 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
4816 #line 1264 "commentscan.l"
4817 { // internal ellipsis
4819  }
4820  YY_BREAK
4821 case 43:
4822 /* rule 43 can match eol */
4824 #line 1267 "commentscan.l"
4825 { // at least one blank line (or blank line command)
4826  if (inContext==OutputXRef)
4827  {
4828  // see bug 613024, we need to put the newlines after ending the XRef section.
4830  int i;
4831  for (i=0;i<commentscanYYleng;)
4832  {
4833  if (commentscanYYtext[i]=='\n') addOutput('\n'),i++;
4834  else if (strcmp(commentscanYYtext+i,"\\_linebr")==0) addOutput('\n'),i+=8;
4835  else i++;
4836  }
4837  }
4838  else if (inContext!=OutputBrief)
4839  {
4840  int i;
4841  for (i=0;i<commentscanYYleng;)
4842  {
4843  if (commentscanYYtext[i]=='\n') addOutput('\n'),i++;
4844  else if (strcmp(commentscanYYtext+i,"\\_linebr")==0) addOutput('\n'),i+=8;
4845  else i++;
4846  }
4848  }
4849  else // inContext==OutputBrief
4850  { // only go to the detailed description if we have
4851  // found some brief description and not just whitespace
4852  endBrief(FALSE);
4853  }
4854  lineCount();
4855  }
4856  YY_BREAK
4857 case 44:
4859 #line 1298 "commentscan.l"
4860 { // potential end of a JavaDoc style comment
4862  if (briefEndsAtDot)
4863  {
4866  }
4867  }
4868  YY_BREAK
4869 case 45:
4870 /* rule 45 can match eol */
4872 #line 1306 "commentscan.l"
4873 { // newline
4875  yyLineNr++;
4876  }
4877  YY_BREAK
4878 case 46:
4880 #line 1310 "commentscan.l"
4881 { // catch-all for anything else
4883  }
4884  YY_BREAK
4885 /* -------------- Rules for handling HTML comments ----------- */
4886 case 47:
4888 #line 1317 "commentscan.l"
4889 { BEGIN( Comment ); }
4890  YY_BREAK
4891 case 48:
4892 /* rule 48 can match eol */
4894 #line 1318 "commentscan.l"
4895 {
4896  if (*commentscanYYtext=='\n') yyLineNr++;
4897  }
4898  YY_BREAK
4899 case 49:
4901 #line 1321 "commentscan.l"
4902 { // ignore unimportant characters
4903  }
4904  YY_BREAK
4905 case 50:
4907 #line 1323 "commentscan.l"
4908 { // ignore every else
4909  }
4910  YY_BREAK
4911 /* -------------- Rules for handling formulas ---------------- */
4912 case 51:
4914 #line 1328 "commentscan.l"
4915 { // end of inline formula
4916  formulaText+="$";
4917  addOutput(" "+addFormula());
4918  BEGIN(Comment);
4919  }
4920  YY_BREAK
4921 case 52:
4923 #line 1333 "commentscan.l"
4924 { // end of block formula
4925  formulaText+="\\]";
4926  addOutput(" "+addFormula());
4927  BEGIN(Comment);
4928  }
4929  YY_BREAK
4930 case 53:
4932 #line 1338 "commentscan.l"
4933 { // end of custom env formula
4934  formulaText+="\\end";
4936  addOutput(" "+addFormula());
4937  BEGIN(Comment);
4938  }
4939  YY_BREAK
4940 case 54:
4942 #line 1344 "commentscan.l"
4943 { // any non-special character
4945  }
4946  YY_BREAK
4947 case 55:
4948 /* rule 55 can match eol */
4950 #line 1347 "commentscan.l"
4951 { // new line
4952  formulaNewLines++;
4954  yyLineNr++;
4955  }
4956  YY_BREAK
4957 case 56:
4959 #line 1352 "commentscan.l"
4960 { // any othe character
4962  }
4963  YY_BREAK
4964 /* ------------ handle argument of enum command --------------- */
4965 case 57:
4966 /* rule 57 can match eol */
4968 #line 1358 "commentscan.l"
4969 { // handle argument
4971  BEGIN( Comment );
4972  }
4973  YY_BREAK
4974 case 58:
4975 /* rule 58 can match eol */
4977 #line 1362 "commentscan.l"
4978 { // line continuation
4979  yyLineNr++;
4980  addOutput('\n');
4981  }
4982  YY_BREAK
4983 case 59:
4984 /* rule 59 can match eol */
4986 #line 1366 "commentscan.l"
4987 { // missing argument
4989  "missing argument after \\enum."
4990  );
4991  addOutput('\n');
4992  if (*commentscanYYtext=='\n') yyLineNr++;
4993  BEGIN( Comment );
4994  }
4995  YY_BREAK
4996 case 60:
4998 #line 1374 "commentscan.l"
4999 { // ignore other stuff
5000  }
5001  YY_BREAK
5002 /* ------------ handle argument of namespace command --------------- */
5003 case 61:
5004 /* rule 61 can match eol */
5006 #line 1379 "commentscan.l"
5007 { // handle argument
5009  BEGIN( Comment );
5010  }
5011  YY_BREAK
5012 case 62:
5013 /* rule 62 can match eol */
5015 #line 1383 "commentscan.l"
5016 { // line continuation
5017  yyLineNr++;
5018  addOutput('\n');
5019  }
5020  YY_BREAK
5021 case 63:
5022 /* rule 63 can match eol */
5024 #line 1387 "commentscan.l"
5025 { // missing argument
5027  "missing argument after "
5028  "\\namespace."
5029  );
5030  addOutput('\n');
5031  if (*commentscanYYtext=='\n') yyLineNr++;
5032  BEGIN( Comment );
5033  }
5034  YY_BREAK
5035 case 64:
5037 #line 1396 "commentscan.l"
5038 { // ignore other stuff
5039  }
5040  YY_BREAK
5041 /* ------------ handle argument of package command --------------- */
5042 case 65:
5044 #line 1401 "commentscan.l"
5045 { // handle argument
5047  BEGIN( Comment );
5048  }
5049  YY_BREAK
5050 case 66:
5051 /* rule 66 can match eol */
5053 #line 1405 "commentscan.l"
5054 { // line continuation
5055  yyLineNr++;
5056  addOutput('\n');
5057  }
5058  YY_BREAK
5059 case 67:
5060 /* rule 67 can match eol */
5062 #line 1409 "commentscan.l"
5063 { // missing argument
5065  "missing argument after "
5066  "\\package."
5067  );
5068  addOutput('\n');
5069  if (*commentscanYYtext=='\n') yyLineNr++;
5070  BEGIN( Comment );
5071  }
5072  YY_BREAK
5073 case 68:
5075 #line 1418 "commentscan.l"
5076 { // ignore other stuff
5077  }
5078  YY_BREAK
5079 /* ------ handle argument of class/struct/union command --------------- */
5080 case 69:
5081 /* rule 69 can match eol */
5083 #line 1423 "commentscan.l"
5084 {
5086  BEGIN( ClassDocArg2 );
5087  }
5088  YY_BREAK
5089 case 70:
5090 /* rule 70 can match eol */
5092 #line 1427 "commentscan.l"
5093 { // first argument
5096  {
5097  current->name+="-p";
5098  }
5099  // prepend outer scope name
5100  BEGIN( ClassDocArg2 );
5101  }
5102  YY_BREAK
5103 case 71:
5104 /* rule 71 can match eol */
5106 #line 1436 "commentscan.l"
5107 {
5109  BEGIN( ClassDocArg2 );
5110  }
5111  YY_BREAK
5112 case 72:
5113 /* rule 72 can match eol */
5115 #line 1440 "commentscan.l"
5116 { // line continuation
5117  yyLineNr++;
5118  addOutput('\n');
5119  }
5120  YY_BREAK
5121 case 73:
5122 /* rule 73 can match eol */
5124 #line 1444 "commentscan.l"
5125 {
5127  "missing argument after "
5128  "\\%s.",YY_START==ClassDocArg1?"class":"category"
5129  );
5130  addOutput('\n');
5131  if (*commentscanYYtext=='\n') yyLineNr++;
5132  BEGIN( Comment );
5133  }
5134  YY_BREAK
5135 case 74:
5137 #line 1453 "commentscan.l"
5138 { // ignore other stuff
5139  }
5140  YY_BREAK
5141 case 75:
5143 #line 1456 "commentscan.l"
5144 { // second argument; include file
5146  BEGIN( ClassDocArg3 );
5147  }
5148  YY_BREAK
5149 case 76:
5150 /* rule 76 can match eol */
5152 #line 1460 "commentscan.l"
5153 { // line continuation
5154  yyLineNr++;
5155  addOutput('\n');
5156  }
5157  YY_BREAK
5158 case 77:
5159 /* rule 77 can match eol */
5161 #line 1464 "commentscan.l"
5162 {
5163  addOutput('\n');
5164  if (*commentscanYYtext=='\n') yyLineNr++;
5165  BEGIN( Comment );
5166  }
5167  YY_BREAK
5168 case 78:
5170 #line 1469 "commentscan.l"
5171 { // ignore other stuff
5172  }
5173  YY_BREAK
5174 case 79:
5176 #line 1472 "commentscan.l"
5177 { // third argument; include file name
5179  BEGIN( Comment );
5180  }
5181  YY_BREAK
5182 case 80:
5183 /* rule 80 can match eol */
5185 #line 1476 "commentscan.l"
5186 { // line continuation
5187  yyLineNr++;
5188  addOutput('\n');
5189  }
5190  YY_BREAK
5191 case 81:
5192 /* rule 81 can match eol */
5194 #line 1480 "commentscan.l"
5195 {
5196  if (*commentscanYYtext=='\n') yyLineNr++;
5197  BEGIN( Comment );
5198  }
5199  YY_BREAK
5200 case 82:
5202 #line 1484 "commentscan.l"
5203 { // ignore other stuff
5204  }
5205  YY_BREAK
5206 /* --------- handle arguments of {def,add,weak}group commands --------- */
5207 case 83:
5209 #line 1489 "commentscan.l"
5210 { // group name
5212  //lastDefGroup.groupname = commentscanYYtext;
5213  //lastDefGroup.pri = current->groupingPri();
5214  // the .html stuff is for Qt compatibility
5215  if (current->name.right(5)==".html")
5216  {
5218  }
5219  current->type.resize(0);
5221  }
5222  YY_BREAK
5223 case 84:
5224 /* rule 84 can match eol */
5226 #line 1501 "commentscan.l"
5227 { // line continuation
5228  yyLineNr++;
5229  addOutput('\n');
5230  }
5231  YY_BREAK
5232 case 85:
5233 /* rule 85 can match eol */
5235 #line 1505 "commentscan.l"
5236 { // missing argument!
5238  "missing group name after %s",
5239  current->groupDocCmd()
5240  );
5241  addOutput('\n');
5242  if (*commentscanYYtext=='\n') yyLineNr++;
5243  BEGIN( Comment );
5244  }
5245  YY_BREAK
5246 case 86:
5247 /* rule 86 can match eol */
5249 #line 1514 "commentscan.l"
5250 { // line continuation
5251  yyLineNr++;
5252  addOutput('\n');
5253  }
5254  YY_BREAK
5255 case 87:
5257 #line 1518 "commentscan.l"
5258 { // title (stored in type)
5261  }
5262  YY_BREAK
5263 case 88:
5264 /* rule 88 can match eol */
5266 #line 1522 "commentscan.l"
5267 {
5269  current->type.isEmpty()
5270  ) // defgroup requires second argument
5271  {
5273  "missing title after "
5274  "\\defgroup %s", current->name.data()
5275  );
5276  }
5277  if (*commentscanYYtext=='\n') yyLineNr++;
5278  addOutput('\n');
5279  BEGIN( Comment );
5280  }
5281  YY_BREAK
5282 /* --------- handle arguments of page/mainpage command ------------------- */
5283 case 89:
5285 #line 1539 "commentscan.l"
5286 { // first argument; page name
5288  BEGIN( PageDocArg2 );
5289  }
5290  YY_BREAK
5291 case 90:
5292 /* rule 90 can match eol */
5294 #line 1543 "commentscan.l"
5295 { yyLineNr++;
5296  addOutput('\n');
5297  }
5298  YY_BREAK
5299 case 91:
5300 /* rule 91 can match eol */
5302 #line 1546 "commentscan.l"
5303 {
5305  "missing argument after "
5306  "\\page."
5307  );
5308  if (*commentscanYYtext=='\n') yyLineNr++;
5309  addOutput('\n');
5310  BEGIN( Comment );
5311  }
5312  YY_BREAK
5313 case 92:
5315 #line 1555 "commentscan.l"
5316 { // ignore other stuff
5317  }
5318  YY_BREAK
5319 case 93:
5320 /* rule 93 can match eol */
5322 #line 1557 "commentscan.l"
5323 { // second argument; page title
5324  yyLineNr++;
5326  addOutput('\n');
5327  BEGIN( Comment );
5328  }
5329  YY_BREAK
5330 /* --------- handle arguments of the file/dir/example command ------------ */
5331 case 94:
5332 /* rule 94 can match eol */
5334 #line 1566 "commentscan.l"
5335 { // no file name specfied
5336  if (*commentscanYYtext=='\n') yyLineNr++;
5337  addOutput('\n');
5338  BEGIN( Comment );
5339  }
5340  YY_BREAK
5341 case 95:
5343 #line 1571 "commentscan.l"
5344 { // first argument; name
5346  BEGIN( Comment );
5347  }
5348  YY_BREAK
5349 case 96:
5350 /* rule 96 can match eol */
5352 #line 1575 "commentscan.l"
5353 { yyLineNr++;
5354  addOutput('\n');
5355  }
5356  YY_BREAK
5357 case 97:
5359 #line 1578 "commentscan.l"
5360 { // ignore other stuff
5361  }
5362  YY_BREAK
5363 /* --------- handle arguments of the xrefitem command ------------ */
5364 case 98:
5366 #line 1583 "commentscan.l"
5367 { // first argument
5371  }
5372  YY_BREAK
5373 case 99:
5374 /* rule 99 can match eol */
5376 #line 1588 "commentscan.l"
5377 { // line continuation
5378  yyLineNr++;
5379  addOutput('\n');
5380  }
5381  YY_BREAK
5382 case 100:
5383 /* rule 100 can match eol */
5385 #line 1592 "commentscan.l"
5386 { // missing arguments
5388  "Missing first argument of \\xrefitem"
5389  );
5390  if (*commentscanYYtext=='\n') yyLineNr++;
5391  addOutput('\n');
5392  inContext = OutputDoc;
5393  BEGIN( Comment );
5394  }
5395  YY_BREAK
5396 case 101:
5398 #line 1601 "commentscan.l"
5399 { // ignore other stuff
5400  }
5401  YY_BREAK
5402 case 102:
5404 #line 1604 "commentscan.l"
5405 { // second argument
5408  }
5409  YY_BREAK
5410 case 103:
5411 /* rule 103 can match eol */
5413 #line 1608 "commentscan.l"
5414 { // line continuation
5415  yyLineNr++;
5416  addOutput('\n');
5417  }
5418  YY_BREAK
5419 case 104:
5420 /* rule 104 can match eol */
5422 #line 1612 "commentscan.l"
5423 { // missing argument
5425  "Missing second argument of \\xrefitem"
5426  );
5427  if (*commentscanYYtext=='\n') yyLineNr++;
5428  addOutput('\n');
5429  inContext = OutputDoc;
5430  BEGIN( Comment );
5431  }
5432  YY_BREAK
5433 case 105:
5435 #line 1621 "commentscan.l"
5436 { // ignore other stuff
5437  }
5438  YY_BREAK
5439 case 106:
5441 #line 1624 "commentscan.l"
5442 { // third argument
5444  xrefKind = XRef_Item;
5445  BEGIN( Comment );
5446  }
5447  YY_BREAK
5448 case 107:
5449 /* rule 107 can match eol */
5451 #line 1629 "commentscan.l"
5452 { // line continuation
5453  yyLineNr++;
5454  addOutput('\n');
5455  }
5456  YY_BREAK
5457 case 108:
5458 /* rule 108 can match eol */
5460 #line 1633 "commentscan.l"
5461 { // missing argument
5463  "Missing third argument of \\xrefitem"
5464  );
5465  if (*commentscanYYtext=='\n') yyLineNr++;
5466  addOutput('\n');
5467  inContext = OutputDoc;
5468  BEGIN( Comment );
5469  }
5470  YY_BREAK
5471 case 109:
5473 #line 1642 "commentscan.l"
5474 { // ignore other stuff
5475  }
5476  YY_BREAK
5477 /* ----- handle arguments of the relates(also)/memberof command ------- */
5478 case 110:
5480 #line 1648 "commentscan.l"
5481 { // argument
5483  //if (current->mGrpId!=DOX_NOGROUP)
5484  //{
5485  // memberGroupRelates = commentscanYYtext;
5486  //}
5487  BEGIN( Comment );
5488  }
5489  YY_BREAK
5490 case 111:
5491 /* rule 111 can match eol */
5493 #line 1656 "commentscan.l"
5494 { // line continuation
5495  yyLineNr++;
5496  addOutput('\n');
5497  }
5498  YY_BREAK
5499 case 112:
5500 /* rule 112 can match eol */
5502 #line 1660 "commentscan.l"
5503 { // missing argument
5505  "Missing argument of \\relates or \\memberof command"
5506  );
5507  if (*commentscanYYtext=='\n') yyLineNr++;
5508  addOutput('\n');
5509  BEGIN( Comment );
5510  }
5511  YY_BREAK
5512 case 113:
5514 #line 1668 "commentscan.l"
5515 { // ignore other stuff
5516  }
5517  YY_BREAK
5518 /* ----- handle arguments of the relates(also)/addindex commands ----- */
5519 case 114:
5520 /* rule 114 can match eol */
5522 #line 1674 "commentscan.l"
5523 { // end of argument
5524  if (*commentscanYYtext=='\n') yyLineNr++;
5525  addOutput('\n');
5526  BEGIN( Comment );
5527  }
5528  YY_BREAK
5529 case 115:
5530 /* rule 115 can match eol */
5532 #line 1679 "commentscan.l"
5533 { // line continuation
5534  yyLineNr++;
5535  addOutput('\n');
5536  }
5537  YY_BREAK
5538 case 116:
5540 #line 1683 "commentscan.l"
5541 { // ignore other stuff
5543  }
5544  YY_BREAK
5545 /* ----- handle arguments of the section/subsection/.. commands ------- */
5546 case 117:
5548 #line 1689 "commentscan.l"
5549 { // first argyment
5554  }
5555  YY_BREAK
5556 case 118:
5557 /* rule 118 can match eol */
5559 #line 1695 "commentscan.l"
5560 { // missing argument
5562  "\\section command has no label"
5563  );
5564  if (*commentscanYYtext=='\n') yyLineNr++;
5565  addOutput('\n');
5566  BEGIN( Comment );
5567  }
5568  YY_BREAK
5569 case 119:
5571 #line 1703 "commentscan.l"
5572 { // invalid character for section label
5574  "Invalid or missing section label"
5575  );
5576  BEGIN(Comment);
5577  }
5578  YY_BREAK
5579 case 120:
5580 /* rule 120 can match eol */
5581 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5582 (yy_c_buf_p) = yy_cp -= 1;
5583 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5585 #line 1709 "commentscan.l"
5586 { // end of section title
5587  addSection();
5589  BEGIN( Comment );
5590  }
5591  YY_BREAK
5592 case 121:
5593 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5594 (yy_c_buf_p) = yy_cp -= 8;
5595 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5597 #line 1714 "commentscan.l"
5598 { // end of section title
5599  addSection();
5601  BEGIN( Comment );
5602  }
5603  YY_BREAK
5604 case 122:
5605 /* rule 122 can match eol */
5607 #line 1719 "commentscan.l"
5608 { // line continuation
5609  yyLineNr++;
5610  addOutput('\n');
5611  }
5612  YY_BREAK
5613 case 123:
5615 #line 1723 "commentscan.l"
5616 { // any character without special meaning
5619  }
5620  YY_BREAK
5621 case 124:
5623 #line 1727 "commentscan.l"
5624 { // unescape escaped command
5627  }
5628  YY_BREAK
5629 case 125:
5631 #line 1731 "commentscan.l"
5632 { // unescape escaped character
5635  }
5636  YY_BREAK
5637 case 126:
5639 #line 1735 "commentscan.l"
5640 { // anything else
5643  }
5644  YY_BREAK
5645 /* ----- handle arguments of the subpage command ------- */
5646 case 127:
5648 #line 1742 "commentscan.l"
5649 { // first argument
5651  // we add subpage labels as a kind of "inheritance" relation to prevent
5652  // needing to add another list to the Entry class.
5655  }
5656  YY_BREAK
5657 case 128:
5658 /* rule 128 can match eol */
5660 #line 1749 "commentscan.l"
5661 { // missing argument
5663  "\\subpage command has no label"
5664  );
5665  if (*commentscanYYtext=='\n') yyLineNr++;
5666  addOutput('\n');
5667  BEGIN( Comment );
5668  }
5669  YY_BREAK
5670 case 129:
5671 /* rule 129 can match eol */
5673 #line 1757 "commentscan.l"
5674 { // no title, end command
5676  BEGIN( Comment );
5677  }
5678  YY_BREAK
5679 case 130:
5681 #line 1761 "commentscan.l"
5682 { // add title, end of command
5684  BEGIN( Comment );
5685  }
5686  YY_BREAK
5687 case 131:
5689 #line 1765 "commentscan.l"
5690 { // no title, end of command
5692  BEGIN( Comment );
5693  }
5694  YY_BREAK
5695 /* ----- handle arguments of the anchor command ------- */
5696 case 132:
5698 #line 1772 "commentscan.l"
5699 { // found argument
5702  BEGIN( Comment );
5703  }
5704  YY_BREAK
5705 case 133:
5706 /* rule 133 can match eol */
5708 #line 1777 "commentscan.l"
5709 { // missing argument
5711  "\\anchor command has no label"
5712  );
5713  if (*commentscanYYtext=='\n') yyLineNr++;
5714  addOutput('\n');
5715  BEGIN( Comment );
5716  }
5717  YY_BREAK
5718 case 134:
5720 #line 1785 "commentscan.l"
5721 { // invalid character for anchor label
5723  "Invalid or missing anchor label"
5724  );
5725  BEGIN(Comment);
5726  }
5727  YY_BREAK
5728 /* ----- handle arguments of the preformatted block commands ------- */
5729 case 135:
5730 /* rule 135 can match eol */
5731 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5732 (yy_c_buf_p) = yy_cp -= 1;
5733 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5735 #line 1795 "commentscan.l"
5736 { // possible ends
5738  if (&commentscanYYtext[4]==blockName) // found end of the block
5739  {
5740  BEGIN(Comment);
5741  }
5742  }
5743  YY_BREAK
5744 case 136:
5746 #line 1802 "commentscan.l"
5747 {
5749  if (blockName=="startuml") // found end of the block
5750  {
5751  BEGIN(Comment);
5752  }
5753  }
5754  YY_BREAK
5755 case 137:
5757 #line 1809 "commentscan.l"
5758 { // some word
5760  }
5761  YY_BREAK
5762 case 138:
5763 /* rule 138 can match eol */
5765 #line 1812 "commentscan.l"
5766 { // new line
5767  if (*commentscanYYtext=='\n') yyLineNr++;
5768  addOutput('\n');
5769  }
5770  YY_BREAK
5771 case 139:
5773 #line 1816 "commentscan.l"
5774 { // start of a C-comment
5775  g_commentCount++;
5777  }
5778  YY_BREAK
5779 case 140:
5781 #line 1820 "commentscan.l"
5782 { // end of a C-comment
5784  g_commentCount--;
5785  if (g_commentCount<0 && blockName!="verbatim")
5786  {
5788  "found */ without matching /* while inside a \\%s block! Perhaps a missing \\end%s?\n",blockName.data(),blockName.data());
5789  }
5790  }
5791  YY_BREAK
5792 case 141:
5794 #line 1829 "commentscan.l"
5795 {
5797  }
5798  YY_BREAK
5800 #line 1832 "commentscan.l"
5801 {
5802  QCString endTag = "@end"+blockName;
5803  if (blockName=="startuml") endTag="enduml";
5805  "reached end of comment while inside a @%s block; check for missing @%s tag!",
5806  blockName.data(),endTag.data()
5807  );
5808  yyterminate();
5809  }
5810  YY_BREAK
5811 /* ----- handle arguments of if/ifnot commands ------- */
5812 case 142:
5814 #line 1844 "commentscan.l"
5815 {
5817  g_roundCount=1;
5818  BEGIN(GuardExpr);
5819  }
5820  YY_BREAK
5821 case 143:
5822 /* rule 143 can match eol */
5824 #line 1849 "commentscan.l"
5825 {
5827  }
5828  YY_BREAK
5829 case 144:
5831 #line 1852 "commentscan.l"
5832 {
5834  g_roundCount++;
5835  }
5836  YY_BREAK
5837 case 145:
5839 #line 1856 "commentscan.l"
5840 {
5842  g_roundCount--;
5843  if (g_roundCount==0)
5844  {
5846  }
5847  }
5848  YY_BREAK
5849 case 146:
5850 /* rule 146 can match eol */
5852 #line 1864 "commentscan.l"
5853 {
5855  "invalid expression '%s' for guard",g_guardExpr.data());
5857  BEGIN(GuardParam);
5858  }
5859  YY_BREAK
5860 case 147:
5862 #line 1870 "commentscan.l"
5863 { // parameter of if/ifnot guard
5865  }
5866  YY_BREAK
5867 case 148:
5868 /* rule 148 can match eol */
5870 #line 1873 "commentscan.l"
5871 { // end of argument
5872  if (*commentscanYYtext=='\n') yyLineNr++;
5873  //next line is commented out due to bug620924
5874  //addOutput('\n');
5875  BEGIN( Comment );
5876  }
5877  YY_BREAK
5878 case 149:
5879 /* rule 149 can match eol */
5881 #line 1879 "commentscan.l"
5882 { // line continuation
5883  yyLineNr++;
5884  addOutput('\n');
5885  }
5886  YY_BREAK
5887 case 150:
5889 #line 1883 "commentscan.l"
5890 { // ignore other stuff
5892  }
5893  YY_BREAK
5894 case 151:
5895 /* rule 151 can match eol */
5897 #line 1886 "commentscan.l"
5898 {
5900  BEGIN(Comment);
5901  }
5902  YY_BREAK
5903 case 152:
5905 #line 1890 "commentscan.l"
5906 {
5907  if (!g_spaceBeforeIf.isEmpty()) // needed for 665313 in combation with bug620924
5908  {
5910  }
5912  BEGIN(Comment);
5913  }
5914  YY_BREAK
5915 case 153:
5917 #line 1898 "commentscan.l"
5918 {
5920  BEGIN(Comment);
5921  }
5922  YY_BREAK
5923 /* ----- handle skipping of conditional sections ------- */
5924 case 154:
5925 /* rule 154 can match eol */
5926 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5927 (yy_c_buf_p) = yy_cp -= 1;
5928 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5930 #line 1905 "commentscan.l"
5931 {
5933  BEGIN( GuardParam );
5934  }
5935  YY_BREAK
5936 case 155:
5937 /* rule 155 can match eol */
5938 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5939 (yy_c_buf_p) = yy_cp -= 1;
5940 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5942 #line 1909 "commentscan.l"
5943 {
5944  guardType = Guard_If;
5945  BEGIN( GuardParam );
5946  }
5947  YY_BREAK
5948 case 156:
5949 /* rule 156 can match eol */
5950 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5951 (yy_c_buf_p) = yy_cp -= 1;
5952 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5954 #line 1913 "commentscan.l"
5955 {
5956  if (guards.isEmpty())
5957  {
5959  "found @endif without matching start command");
5960  }
5961  else
5962  {
5963  GuardedSection *s = guards.pop();
5964  bool parentVisible = s->parentVisible();
5965  delete s;
5966  if (parentVisible)
5967  {
5969  BEGIN( GuardParamEnd );
5970  }
5971  }
5972  }
5973  YY_BREAK
5974 case 157:
5975 /* rule 157 can match eol */
5976 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
5977 (yy_c_buf_p) = yy_cp -= 1;
5978 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
5980 #line 1931 "commentscan.l"
5981 {
5982  if (guards.isEmpty())
5983  {
5985  "found @else without matching start command");
5986  }
5987  else
5988  {
5989  if (!enabledSectionFound && guards.top()->parentVisible())
5990  {
5991  delete guards.pop();
5992  guards.push(new GuardedSection(TRUE,TRUE));
5994  BEGIN( GuardParamEnd );
5995  }
5996  }
5997  }
5998  YY_BREAK
5999 case 158:
6000 /* rule 158 can match eol */
6001 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6002 (yy_c_buf_p) = yy_cp -= 1;
6003 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6005 #line 1948 "commentscan.l"
6006 {
6007  if (guards.isEmpty())
6008  {
6010  "found @elseif without matching start command");
6011  }
6012  else
6013  {
6014  if (!enabledSectionFound && guards.top()->parentVisible())
6015  {
6017  delete guards.pop();
6018  BEGIN( GuardParam );
6019  }
6020  }
6021  }
6022  YY_BREAK
6023 case 159:
6024 /* rule 159 can match eol */
6026 #line 1964 "commentscan.l"
6027 { // skip line
6028  if (*commentscanYYtext=='\n') yyLineNr++;
6029  //addOutput('\n');
6030  }
6031  YY_BREAK
6032 case 160:
6034 #line 1968 "commentscan.l"
6035 { // skip non-special characters
6036  }
6037  YY_BREAK
6038 case 161:
6040 #line 1970 "commentscan.l"
6041 { // any other character
6042  }
6043  YY_BREAK
6044 /* ----- handle skipping of internal section ------- */
6045 case 162:
6046 /* rule 162 can match eol */
6048 #line 1976 "commentscan.l"
6049 { // skip line
6050  if (*commentscanYYtext=='\n') yyLineNr++;
6051  addOutput('\n');
6052  }
6053  YY_BREAK
6054 case 163:
6055 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6056 (yy_c_buf_p) = yy_cp = yy_bp + 3;
6057 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6059 #line 1980 "commentscan.l"
6060 {
6061  g_condCount++;
6062  }
6063  YY_BREAK
6064 case 164:
6065 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6066 (yy_c_buf_p) = yy_cp = yy_bp + 6;
6067 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6069 #line 1983 "commentscan.l"
6070 {
6071  g_condCount++;
6072  }
6073  YY_BREAK
6074 case 165:
6075 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6076 (yy_c_buf_p) = yy_cp = yy_bp + 1;
6077 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6079 #line 1986 "commentscan.l"
6080 {
6081  g_condCount--;
6082  if (g_condCount<0) // handle conditional section around of \internal, see bug607743
6083  {
6084  unput('\\');
6085  BEGIN(Comment);
6086  }
6087  }
6088  YY_BREAK
6089 case 166:
6090 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6091 (yy_c_buf_p) = yy_cp = yy_bp + 1;
6092 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6094 #line 1994 "commentscan.l"
6095 {
6096  if (g_sectionLevel>0)
6097  {
6098  unput('\\');
6099  BEGIN(Comment);
6100  }
6101  }
6102  YY_BREAK
6103 case 167:
6104 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6105 (yy_c_buf_p) = yy_cp = yy_bp + 1;
6106 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6108 #line 2001 "commentscan.l"
6109 {
6110  if (g_sectionLevel>1)
6111  {
6112  unput('\\');
6113  BEGIN(Comment);
6114  }
6115  }
6116  YY_BREAK
6117 case 168:
6118 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6119 (yy_c_buf_p) = yy_cp = yy_bp + 1;
6120 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6122 #line 2008 "commentscan.l"
6123 {
6124  if (g_sectionLevel>2)
6125  {
6126  unput('\\');
6127  BEGIN(Comment);
6128  }
6129  }
6130  YY_BREAK
6131 case 169:
6132 *yy_cp = (yy_hold_char); /* undo effects of setting up commentscanYYtext */
6133 (yy_c_buf_p) = yy_cp = yy_bp + 1;
6134 YY_DO_BEFORE_ACTION; /* set up commentscanYYtext again */
6136 #line 2015 "commentscan.l"
6137 {
6138  if (g_sectionLevel>3)
6139  {
6140  unput('\\');
6141  BEGIN(Comment);
6142  }
6143  }
6144  YY_BREAK
6145 case 170:
6147 #line 2022 "commentscan.l"
6148 {
6149  addOutput("\\endinternal ");
6150  BEGIN(Comment);
6151  }
6152  YY_BREAK
6153 case 171:
6155 #line 2026 "commentscan.l"
6156 { // skip non-special characters
6157  }
6158  YY_BREAK
6159 case 172:
6161 #line 2028 "commentscan.l"
6162 { // any other character
6163  }
6164  YY_BREAK
6165 /* ----- handle argument of name command ------- */
6166 case 173:
6167 /* rule 173 can match eol */
6169 #line 2034 "commentscan.l"
6170 { // end of argument
6171  if (*commentscanYYtext=='\n') yyLineNr++;
6172  addOutput('\n');
6173  BEGIN( Comment );
6174  }
6175  YY_BREAK
6176 case 174:
6177 /* rule 174 can match eol */
6179 #line 2039 "commentscan.l"
6180 { // line continuation
6181  yyLineNr++;
6182  addOutput('\n');
6183  g_memberGroupHeader+=' ';
6184  }
6185  YY_BREAK
6186 case 175:
6188 #line 2044 "commentscan.l"
6189 { // ignore other stuff
6192  }
6193  YY_BREAK
6194 /* ----- handle argument of ingroup command ------- */
6195 case 176:
6197 #line 2051 "commentscan.l"
6198 { // group id
6199  current->groups->append(
6201  );
6203  }
6204  YY_BREAK
6205 case 177:
6206 /* rule 177 can match eol */
6208 #line 2057 "commentscan.l"
6209 { // missing argument
6210  if (!inGroupParamFound)
6211  {
6213  "Missing group name for \\ingroup command"
6214  );
6215  }
6216  if (*commentscanYYtext=='\n') yyLineNr++;
6217  addOutput('\n');
6218  BEGIN( Comment );
6219  }
6220  YY_BREAK
6221 case 178:
6222 /* rule 178 can match eol */
6224 #line 2068 "commentscan.l"
6225 { // line continuation
6226  yyLineNr++;
6227  addOutput('\n');
6228  }
6229  YY_BREAK
6230 case 179:
6232 #line 2072 "commentscan.l"
6233 { // ignore other stuff
6235  }
6236  YY_BREAK
6237 /* ----- handle argument of fn command ------- */
6238 case 180:
6239 /* rule 180 can match eol */
6241 #line 2078 "commentscan.l"
6242 { // end of argument
6243  if (braceCount==0)
6244  {
6245  if (*commentscanYYtext=='\n') yyLineNr++;
6246  addOutput('\n');
6248  BEGIN( Comment );
6249  }
6250  }
6251  YY_BREAK
6252 case 181:
6253 /* rule 181 can match eol */
6255 #line 2087 "commentscan.l"
6256 { // line continuation
6257  yyLineNr++;
6258  functionProto+=' ';
6259  }
6260  YY_BREAK
6261 case 182:
6263 #line 2091 "commentscan.l"
6264 { // non-special characters
6266  }
6267  YY_BREAK
6268 case 183:
6270 #line 2094 "commentscan.l"
6271 {
6273  braceCount++;
6274  }
6275  YY_BREAK
6276 case 184:
6278 #line 2098 "commentscan.l"
6279 {
6281  braceCount--;
6282  }
6283  YY_BREAK
6284 case 185:
6286 #line 2102 "commentscan.l"
6287 { // add other stuff
6289  }
6290  YY_BREAK
6291 /* ----- handle argument of overload command ------- */
6292 case 186:
6293 /* rule 186 can match eol */
6295 #line 2110 "commentscan.l"
6296 { // end of argument
6297  if (*commentscanYYtext=='\n') yyLineNr++;
6299  { // plain overload command
6301  addOutput('\n');
6302  }
6303  else // overload declaration
6304  {
6307  }
6308  BEGIN( Comment );
6309  }
6310  YY_BREAK
6311 case 187:
6312 /* rule 187 can match eol */
6314 #line 2124 "commentscan.l"
6315 { // line continuation
6316  yyLineNr++;
6317  functionProto+=' ';
6318  }
6319  YY_BREAK
6320 case 188:
6322 #line 2128 "commentscan.l"
6323 { // add other stuff
6325  }
6326  YY_BREAK
6327 /* ----- handle argument of inherit command ------- */
6328 case 189:
6330 #line 2134 "commentscan.l"
6331 { // found argument
6334  );
6335  BEGIN( Comment );
6336  }
6337  YY_BREAK
6338 case 190:
6339 /* rule 190 can match eol */
6341 #line 2140 "commentscan.l"
6342 { // missing argument
6344  "\\inherit command has no argument"
6345  );
6346  if (*commentscanYYtext=='\n') yyLineNr++;
6347  addOutput('\n');
6348  BEGIN( Comment );
6349  }
6350  YY_BREAK
6351 case 191:
6353 #line 2148 "commentscan.l"
6354 { // invalid character for anchor label
6356  "Invalid or missing name for \\inherit command"
6357  );
6358  BEGIN(Comment);
6359  }
6360  YY_BREAK
6361 /* ----- handle argument of extends and implements commands ------- */
6362 case 192:
6364 #line 2157 "commentscan.l"
6365 { // found argument
6368  );
6369  BEGIN( Comment );
6370  }
6371  YY_BREAK
6372 case 193:
6373 /* rule 193 can match eol */
6375 #line 2163 "commentscan.l"
6376 { // missing argument
6378  "\\extends or \\implements command has no argument"
6379  );
6380  if (*commentscanYYtext=='\n') yyLineNr++;
6381  addOutput('\n');
6382  BEGIN( Comment );
6383  }
6384  YY_BREAK
6385 case 194:
6387 #line 2171 "commentscan.l"
6388 { // ignore other stuff
6389  }
6390  YY_BREAK
6391 /* ----- handle language specific sections ------- */
6392 case 195:
6394 #line 2176 "commentscan.l"
6395 { /* language switch */
6396  QCString langId = &commentscanYYtext[2];
6397  if (langId.isEmpty() ||
6398  qstricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)==0)
6399  { // enable language specific section
6400  BEGIN(Comment);
6401  }
6402  }
6403  YY_BREAK
6404 case 196:
6406 #line 2184 "commentscan.l"
6407 { /* any character not a *, @, backslash or new line */
6408  }
6409  YY_BREAK
6410 case 197:
6411 /* rule 197 can match eol */
6413 #line 2186 "commentscan.l"
6414 { /* new line in verbatim block */
6415  if (*commentscanYYtext=='\n') yyLineNr++;
6416  }
6417  YY_BREAK
6418 case 198:
6420 #line 2189 "commentscan.l"
6421 { /* any other character */
6422  }
6423  YY_BREAK
6424 /* ----- handle arguments of the cite command ------- */
6425 case 199:
6427 #line 2194 "commentscan.l"
6428 { // found argyment
6429  addCite();
6431  BEGIN(Comment);
6432  }
6433  YY_BREAK
6434 case 200:
6435 /* rule 200 can match eol */
6437 #line 2199 "commentscan.l"
6438 { // missing argument
6440  "\\cite command has no label"
6441  );
6442  if (*commentscanYYtext=='\n') yyLineNr++;
6443  addOutput('\n');
6444  BEGIN( Comment );
6445  }
6446  YY_BREAK
6447 case 201:
6449 #line 2207 "commentscan.l"
6450 { // invalid character for cite label
6452  "Invalid or missing cite label"
6453  );
6454  BEGIN(Comment);
6455  }
6456  YY_BREAK
6457 /* ----- handle argument of the copydoc command ------- */
6458 case YY_STATE_EOF(CopyDoc):
6459 #line 2216 "commentscan.l"
6460 case 202:
6461 /* rule 202 can match eol */
6463 #line 2217 "commentscan.l"
6464 {
6465  if (*commentscanYYtext=='\n') yyLineNr++;
6466  addOutput('\n');
6468  addOutput("\\copydetails ");
6470  addOutput("\n");
6471  BEGIN(Comment);
6472  }
6473  YY_BREAK
6474 case 203:
6476 #line 2226 "commentscan.l"
6477 {
6480  }
6481  YY_BREAK
6482 case 204:
6484 #line 2230 "commentscan.l"
6485 {
6488  }
6489  YY_BREAK
6490 case 205:
6492 #line 2236 "commentscan.l"
6493 ECHO;
6494  YY_BREAK
6495 #line 6496 "/nova/app/home/novasoft/doxygen/doxygen-1.8.11/build/generated_src/commentscan.cpp"
6496  case YY_STATE_EOF(INITIAL):
6497  case YY_STATE_EOF(Comment):
6498  case YY_STATE_EOF(PageDocArg1):
6499  case YY_STATE_EOF(PageDocArg2):
6500  case YY_STATE_EOF(RelatesParam1):
6501  case YY_STATE_EOF(ClassDocArg1):
6502  case YY_STATE_EOF(ClassDocArg2):
6503  case YY_STATE_EOF(ClassDocArg3):
6504  case YY_STATE_EOF(CategoryDocArg1):
6505  case YY_STATE_EOF(XRefItemParam1):
6506  case YY_STATE_EOF(XRefItemParam2):
6507  case YY_STATE_EOF(XRefItemParam3):
6508  case YY_STATE_EOF(FileDocArg1):
6509  case YY_STATE_EOF(EnumDocArg1):
6510  case YY_STATE_EOF(NameSpaceDocArg1):
6511  case YY_STATE_EOF(PackageDocArg1):
6512  case YY_STATE_EOF(GroupDocArg1):
6513  case YY_STATE_EOF(GroupDocArg2):
6514  case YY_STATE_EOF(SectionLabel):
6515  case YY_STATE_EOF(SectionTitle):
6516  case YY_STATE_EOF(SubpageLabel):
6517  case YY_STATE_EOF(SubpageTitle):
6518  case YY_STATE_EOF(LineParam):
6519  case YY_STATE_EOF(GuardParam):
6520  case YY_STATE_EOF(GuardParamEnd):
6521  case YY_STATE_EOF(SkipGuardedSection):
6522  case YY_STATE_EOF(SkipInternal):
6523  case YY_STATE_EOF(NameParam):
6524  case YY_STATE_EOF(InGroupParam):
6525  case YY_STATE_EOF(FnParam):
6526  case YY_STATE_EOF(OverloadParam):
6527  case YY_STATE_EOF(InheritParam):
6528  case YY_STATE_EOF(ExtendsParam):
6529  case YY_STATE_EOF(ReadFormulaShort):
6530  case YY_STATE_EOF(ReadFormulaLong):
6531  case YY_STATE_EOF(AnchorLabel):
6532  case YY_STATE_EOF(HtmlComment):
6533  case YY_STATE_EOF(SkipLang):
6534  case YY_STATE_EOF(CiteLabel):
6535  case YY_STATE_EOF(GuardExpr):
6536  yyterminate();
6537 
6538  case YY_END_OF_BUFFER:
6539  {
6540  /* Amount of text matched not including the EOB char. */
6541  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
6542 
6543  /* Undo the effects of YY_DO_BEFORE_ACTION. */
6544  *yy_cp = (yy_hold_char);
6546 
6547  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
6548  {
6549  /* We're scanning a new file or input source. It's
6550  * possible that this happened because the user
6551  * just pointed commentscanYYin at a new source and called
6552  * commentscanYYlex(). If so, then we have to assure
6553  * consistency between YY_CURRENT_BUFFER and our
6554  * globals. Here is the right place to do so, because
6555  * this is the first action (other than possibly a
6556  * back-up) that will match for the new input source.
6557  */
6558  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6559  YY_CURRENT_BUFFER_LVALUE->yy_input_file = commentscanYYin;
6560  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6561  }
6562 
6563  /* Note that here we test for yy_c_buf_p "<=" to the position
6564  * of the first EOB in the buffer, since yy_c_buf_p will
6565  * already have been incremented past the NUL character
6566  * (since all states make transitions on EOB to the
6567  * end-of-buffer state). Contrast this with the test
6568  * in input().
6569  */
6570  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6571  { /* This was really a NUL. */
6572  yy_state_type yy_next_state;
6573 
6574  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
6575 
6576  yy_current_state = yy_get_previous_state( );
6577 
6578  /* Okay, we're now positioned to make the NUL
6579  * transition. We couldn't have
6580  * yy_get_previous_state() go ahead and do it
6581  * for us because it doesn't know how to deal
6582  * with the possibility of jamming (and we don't
6583  * want to build jamming into it because then it
6584  * will run more slowly).
6585  */
6586 
6587  yy_next_state = yy_try_NUL_trans( yy_current_state );
6588 
6590 
6591  if ( yy_next_state )
6592  {
6593  /* Consume the NUL. */
6594  yy_cp = ++(yy_c_buf_p);
6595  yy_current_state = yy_next_state;
6596  goto yy_match;
6597  }
6598 
6599  else
6600  {
6601  yy_cp = (yy_c_buf_p);
6602  goto yy_find_action;
6603  }
6604  }
6605 
6606  else switch ( yy_get_next_buffer( ) )
6607  {
6608  case EOB_ACT_END_OF_FILE:
6609  {
6611 
6612  if ( commentscanYYwrap( ) )
6613  {
6614  /* Note: because we've taken care in
6615  * yy_get_next_buffer() to have set up
6616  * commentscanYYtext, we can now set up
6617  * yy_c_buf_p so that if some total
6618  * hoser (like flex itself) wants to
6619  * call the scanner after we return the
6620  * YY_NULL, it'll still work - another
6621  * YY_NULL will get returned.
6622  */
6624 
6626  goto do_action;
6627  }
6628 
6629  else
6630  {
6631  if ( ! (yy_did_buffer_switch_on_eof) )
6632  YY_NEW_FILE;
6633  }
6634  break;
6635  }
6636 
6637  case EOB_ACT_CONTINUE_SCAN:
6638  (yy_c_buf_p) =
6639  (yytext_ptr) + yy_amount_of_matched_text;
6640 
6641  yy_current_state = yy_get_previous_state( );
6642 
6643  yy_cp = (yy_c_buf_p);
6645  goto yy_match;
6646 
6647  case EOB_ACT_LAST_MATCH:
6648  (yy_c_buf_p) =
6649  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
6650 
6651  yy_current_state = yy_get_previous_state( );
6652 
6653  yy_cp = (yy_c_buf_p);
6655  goto yy_find_action;
6656  }
6657  break;
6658  }
6659 
6660  default:
6662  "fatal flex scanner internal error--no action found" );
6663  } /* end of action switch */
6664  } /* end of scanning one token */
#define YY_RESTORE_YY_MORE_OFFSET
static bool markdownSupport
Definition: doxygen.h:153
Definition: types.h:61
static yyconst flex_int32_t yy_ec[256]
static QCString g_copyDocArg
bool resize(uint newlen)
Definition: qcstring.h:225
register int yy_act
QCString includeName
include name (3 arg of \class)
Definition: entry.h:259
static QStack< GuardedSection > guards
#define PageDocArg1
#define EOB_ACT_END_OF_FILE
static QCString g_sectionLabel
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
#define ECHO
#define unput(c)
static Cmd * map(const char *name)
static QCString g_spaceBeforeCmd
#define ReadFormulaShort
static void endBrief(bool addToOutput=TRUE)
#define CopyDoc
bool isEmpty() const
Definition: qcstring.h:189
static QCString g_memberGroupHeader
static int inputPosition
static void addSection()
int commentscanYYleng
#define REJECT
uint length() const
Definition: qcstring.h:195
void append(const type *d)
Definition: qlist.h:73
static int g_condCount
static bool needNewEntry
#define EnumDocArg1
Definition: types.h:26
const char * groupDocCmd() const
return the command name used to define GROUPDOC_SEC
Definition: entry.h:296
static bool enabledSectionFound
static int prevPosition
#define FormatBlock
static int yy_n_chars
char & at(uint i) const
Definition: qcstring.h:326
static yy_state_type yy_get_previous_state(void)
#define CiteLabel
static QCString blockName
static void lineCount()
static QCString xrefListTitle
const bool FALSE
Definition: qglobal.h:370
static bool parseMore
static void handleGuard(const QCString &expr)
static QCString functionProto
#define YY_AT_BOL()
static int yyLineNr
QCString name
member name
Definition: entry.h:237
static yyconst flex_int16_t yy_accept[1139]
#define SkipInternal
static int g_sectionLevel
bool parentVisible() const
static int yy_start
#define SectionTitle
QCString left(uint len) const
Definition: qcstring.cpp:213
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
static ParserInterface * langParser
#define YY_END_OF_BUFFER
QCString getOverloadDocs()
Definition: util.cpp:5859
#define YY_BUFFER_NORMAL
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
static void setOutput(OutputContext ctx)
#define YY_DO_BEFORE_ACTION
bool inInternalDocs
#define XRefItemParam2
int yy_state_type
Definition: code.cpp:361
static QCString g_guardExpr
#define XRefItemParam3
Definition: types.h:29
#define GuardParam
#define YY_SC_TO_UI(c)
#define CategoryDocArg1
#define yyterminate()
virtual void parsePrototype(const char *text)=0
static XRefKind xrefKind
#define XRefItemParam1
#define AnchorLabel
#define Config_getEnum(val)
Definition: config.cpp:663
static char yy_hold_char
#define YY_START
#define GuardExpr
static bool makeStructuralIndicator(Entry::Sections s)
#define GroupDocArg2
static QCString stripQuotes(const char *s)
const char * data() const
Definition: qstring.h:542
static QCString formulaText
#define ExtendsParam
static QCString g_spaceBeforeIf
#define YY_MORE_ADJ
QCString includeFile
include file (2 arg of \class, must be unique)
Definition: entry.h:258
static int formulaNewLines
const double e
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:567
QList< Grouping > * groups
list of groups this entry belongs to
Definition: entry.h:280
char * commentscanYYtext
membership in group was defined by @ingroup
Definition: types.h:71
static yyconst flex_int32_t yy_meta[76]
#define YY_CURRENT_BUFFER_LVALUE
static bool inGroupParamFound
static yy_state_type * yy_state_buf
static int yy_get_next_buffer(void)
#define NameSpaceDocArg1
#define PackageDocArg1
QCString right(uint len) const
Definition: qcstring.cpp:231
static int g_commentCount
#define OverloadParam
#define BEGIN
static int g_roundCount
register char * yy_bp
#define ClassDocArg3
static void addAnchor(const char *anchor)
QCString args
member argument string
Definition: entry.h:252
#define yytext_ptr
#define ClassDocArg2
static bool g_insideParBlock
static Entry * current
#define GroupDocArg1
void openGroup(Entry *e, const char *file, int line)
const char * data() const
Definition: qcstring.h:207
#define PageDocArg2
unsigned char YY_CHAR
Definition: code.cpp:357
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
static QCString formulaEnv
#define FileDocArg1
static void addOutput(const char *s)
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
QString stripWhiteSpace() const
Definition: qstring.cpp:13438
#define ReadFormulaLong
static OutputContext inContext
static int yy_did_buffer_switch_on_eof
static bool briefEndsAtDot
static yyconst flex_int16_t yy_nxt[9667]
void closeGroup(Entry *e, const char *file, int line, bool foundInline=FALSE)
#define InGroupParam
static yyconst flex_int16_t yy_chk[9667]
static yyconst flex_int16_t yy_acclist[759]
#define EOB_ACT_CONTINUE_SCAN
static yy_state_type yy_try_NUL_trans(yy_state_type current_state)
#define SkipGuardedSection
#define Comment
#define HtmlComment
static void addCite()
static QCString xrefItemTitle
int strcmp(const String &s1, const String &s2)
Definition: relates.cpp:14
GroupDocType groupDocType
Definition: entry.h:289
static GuardType guardType
static QCString newXRefItemKey
static char * yy_c_buf_p
register char * yy_cp
static QCString g_sectionTitle
#define RelatesParam1
void line(double t, double *p, double &x, double &y, double &z)
#define InheritParam
static int yy_lp
#define SectionLabel
static QCString addFormula()
static yyconst flex_int16_t yy_def[1371]
#define commentscanYYwrap(n)
#define SubpageLabel
#define INITIAL
static yy_state_type * yy_state_ptr
QCString relates
related class (doc block)
Definition: entry.h:269
#define SkipLang
#define NameParam
#define LineParam
static int braceCount
#define EOB_ACT_LAST_MATCH
SrcLangExt lang
programming language in which this entry was found
Definition: entry.h:286
Definition: entry.h:37
#define ClassDocArg1
#define GuardParamEnd
static bool insidePre
#define YY_BUFFER_NEW
#define YY_BREAK
static QCString * s
Definition: config.cpp:1042
FILE * commentscanYYin
const bool TRUE
Definition: qglobal.h:371
static yyconst flex_int16_t yy_base[1371]
QList< BaseInfo > * extends
list of base classes
Definition: entry.h:279
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
static QCString yyFileName
static char * yy_full_match
#define YY_RULE_SETUP
#define YY_STATE_EOF(state)
QCString type
member type
Definition: entry.h:236
#define FnParam
int section
entry type (see Sections);
Definition: entry.h:235
#define YY_NEW_FILE
#define SubpageTitle
#define YY_FATAL_ERROR(msg)
static void yy_fatal_error ( yyconst char  msg[])
static
static void yy_fatal_error ( yyconst char *  msg)
static

Definition at line 7296 of file commentscan.cpp.

7297 {
7298  (void) fprintf( stderr, "%s\n", msg );
7299  exit( YY_EXIT_FAILURE );
7300 }
void msg(const char *fmt,...)
Definition: message.cpp:107
#define YY_EXIT_FAILURE
static int yy_get_next_buffer ( void  )
static

Definition at line 6674 of file commentscan.cpp.

6675 {
6676  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6677  register char *source = (yytext_ptr);
6678  register int number_to_move, i;
6679  int ret_val;
6680 
6681  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
6683  "fatal flex scanner internal error--end of buffer missed" );
6684 
6685  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
6686  { /* Don't try to fill the buffer, so this is an EOF. */
6687  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
6688  {
6689  /* We matched a single character, the EOB, so
6690  * treat this as a final EOF.
6691  */
6692  return EOB_ACT_END_OF_FILE;
6693  }
6694 
6695  else
6696  {
6697  /* We matched some text prior to the EOB, first
6698  * process it.
6699  */
6700  return EOB_ACT_LAST_MATCH;
6701  }
6702  }
6703 
6704  /* Try to read more data. */
6705 
6706  /* First move last chars to start of buffer. */
6707  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6708 
6709  for ( i = 0; i < number_to_move; ++i )
6710  *(dest++) = *(source++);
6711 
6712  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6713  /* don't do the read, it's not guaranteed to return an EOF,
6714  * just force an EOF
6715  */
6716  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6717 
6718  else
6719  {
6720  int num_to_read =
6721  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6722 
6723  while ( num_to_read <= 0 )
6724  { /* Not enough room in the buffer - grow it. */
6725 
6727 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
6728 
6729  }
6730 
6731  if ( num_to_read > YY_READ_BUF_SIZE )
6732  num_to_read = YY_READ_BUF_SIZE;
6733 
6734  /* Read in more data. */
6735  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6736  (yy_n_chars), (size_t) num_to_read );
6737 
6738  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6739  }
6740 
6741  if ( (yy_n_chars) == 0 )
6742  {
6743  if ( number_to_move == YY_MORE_ADJ )
6744  {
6745  ret_val = EOB_ACT_END_OF_FILE;
6747  }
6748 
6749  else
6750  {
6751  ret_val = EOB_ACT_LAST_MATCH;
6752  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6754  }
6755  }
6756 
6757  else
6758  ret_val = EOB_ACT_CONTINUE_SCAN;
6759 
6760  if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6761  /* Extend the array by 50%, plus the number we really need. */
6762  yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6763  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) commentscanYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
6764  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6765  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6766  }
6767 
6768  (yy_n_chars) += number_to_move;
6771 
6772  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6773 
6774  return ret_val;
6775 }
#define EOB_ACT_END_OF_FILE
static int yy_n_chars
#define YY_END_OF_BUFFER_CHAR
void commentscanYYrestart(FILE *input_file)
#define YY_READ_BUF_SIZE
#define YY_MORE_ADJ
#define YY_CURRENT_BUFFER_LVALUE
#define yytext_ptr
#define YY_BUFFER_EOF_PENDING
#define EOB_ACT_CONTINUE_SCAN
static char * yy_c_buf_p
void * commentscanYYrealloc(void *, yy_size_t)
#define EOB_ACT_LAST_MATCH
size_t yy_size_t
Definition: code.cpp:203
FILE * commentscanYYin
#define YY_INPUT(buf, result, max_size)
#define YY_FATAL_ERROR(msg)
static yy_state_type yy_get_previous_state ( void  )
static

Definition at line 6779 of file commentscan.cpp.

6780 {
6781  register yy_state_type yy_current_state;
6782  register char *yy_cp;
6783 
6784  yy_current_state = (yy_start);
6785  yy_current_state += YY_AT_BOL();
6786 
6787  (yy_state_ptr) = (yy_state_buf);
6788  *(yy_state_ptr)++ = yy_current_state;
6789 
6790  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6791  {
6792  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6793  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6794  {
6795  yy_current_state = (int) yy_def[yy_current_state];
6796  if ( yy_current_state >= 1138 )
6797  yy_c = yy_meta[(unsigned int) yy_c];
6798  }
6799  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6800  *(yy_state_ptr)++ = yy_current_state;
6801  }
6802 
6803  return yy_current_state;
6804 }
static yyconst flex_int32_t yy_ec[256]
#define YY_AT_BOL()
static int yy_start
int yy_state_type
Definition: code.cpp:361
#define YY_SC_TO_UI(c)
#define YY_MORE_ADJ
static yyconst flex_int32_t yy_meta[76]
static yy_state_type * yy_state_buf
#define yytext_ptr
unsigned char YY_CHAR
Definition: code.cpp:357
static yyconst flex_int16_t yy_nxt[9667]
static yyconst flex_int16_t yy_chk[9667]
static char * yy_c_buf_p
register char * yy_cp
static yyconst flex_int16_t yy_def[1371]
static yy_state_type * yy_state_ptr
static yyconst flex_int16_t yy_base[1371]
static int yy_init_globals ( void  )
static

Definition at line 7399 of file commentscan.cpp.

7400 {
7401  /* Initialization is the same as for the non-reentrant scanner.
7402  * This function is called from commentscanYYlex_destroy(), so don't allocate here.
7403  */
7404 
7405  (yy_buffer_stack) = 0;
7406  (yy_buffer_stack_top) = 0;
7407  (yy_buffer_stack_max) = 0;
7408  (yy_c_buf_p) = (char *) 0;
7409  (yy_init) = 0;
7410  (yy_start) = 0;
7411 
7412  (yy_state_buf) = 0;
7413  (yy_state_ptr) = 0;
7414  (yy_full_match) = 0;
7415  (yy_lp) = 0;
7416 
7417 /* Defined in main.c */
7418 #ifdef YY_STDINIT
7419  commentscanYYin = stdin;
7421 #else
7422  commentscanYYin = (FILE *) 0;
7423  commentscanYYout = (FILE *) 0;
7424 #endif
7425 
7426  /* For future reference: Set errno on error, since we are called by
7427  * commentscanYYlex_init()
7428  */
7429  return 0;
7430 }
static size_t yy_buffer_stack_top
static int yy_start
static int yy_init
static YY_BUFFER_STATE * yy_buffer_stack
static size_t yy_buffer_stack_max
static yy_state_type * yy_state_buf
FILE * commentscanYYout
static char * yy_c_buf_p
static int yy_lp
static yy_state_type * yy_state_ptr
FILE * commentscanYYin
static char * yy_full_match
static yy_state_type yy_try_NUL_trans ( yy_state_type  current_state)
static

Definition at line 6811 of file commentscan.cpp.

6812 {
6813  register int yy_is_jam;
6814 
6815  register YY_CHAR yy_c = 1;
6816  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6817  {
6818  yy_current_state = (int) yy_def[yy_current_state];
6819  if ( yy_current_state >= 1138 )
6820  yy_c = yy_meta[(unsigned int) yy_c];
6821  }
6822  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6823  yy_is_jam = (yy_current_state == 1137);
6824  if ( ! yy_is_jam )
6825  *(yy_state_ptr)++ = yy_current_state;
6826 
6827  return yy_is_jam ? 0 : yy_current_state;
6828 }
static yyconst flex_int32_t yy_meta[76]
unsigned char YY_CHAR
Definition: code.cpp:357
static yyconst flex_int16_t yy_nxt[9667]
static yyconst flex_int16_t yy_chk[9667]
static yyconst flex_int16_t yy_def[1371]
static yy_state_type * yy_state_ptr
static yyconst flex_int16_t yy_base[1371]
static int yyread ( char *  buf,
int  max_size 
)
static

Definition at line 4003 of file commentscan.cpp.

4004 {
4006  int c=0;
4007  while( c < max_size && inputString[inputPosition] )
4008  {
4009  *buf = inputString[inputPosition++] ;
4010  //printf("%d (%c)\n",*buf,*buf);
4011  c++; buf++;
4012  }
4013  return c;
4014 }
static int inputPosition
static int prevPosition
static QCString inputString
static void yyunput ( int  c,
char *  buf_ptr 
)
static
static void yyunput ( int  c,
register char *  yy_bp 
)
static

Definition at line 6830 of file commentscan.cpp.

6831 {
6832  register char *yy_cp;
6833 
6834  yy_cp = (yy_c_buf_p);
6835 
6836  /* undo effects of setting up commentscanYYtext */
6837  *yy_cp = (yy_hold_char);
6838 
6839  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6840  { /* need to shift things up to make room */
6841  /* +2 for EOB chars. */
6842  register int number_to_move = (yy_n_chars) + 2;
6843  register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
6844  YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
6845  register char *source =
6846  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
6847 
6848  while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6849  *--dest = *--source;
6850 
6851  yy_cp += (int) (dest - source);
6852  yy_bp += (int) (dest - source);
6853  YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
6854  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
6855 
6856  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6857  YY_FATAL_ERROR( "flex scanner push-back overflow" );
6858  }
6859 
6860  *--yy_cp = (char) c;
6861 
6862  (yytext_ptr) = yy_bp;
6863  (yy_hold_char) = *yy_cp;
6864  (yy_c_buf_p) = yy_cp;
6865 }
static int yy_n_chars
static char yy_hold_char
#define YY_CURRENT_BUFFER_LVALUE
register char * yy_bp
#define yytext_ptr
static char * yy_c_buf_p
register char * yy_cp
if(!(yy_init))
#define YY_FATAL_ERROR(msg)

Variable Documentation

QCString blockName
static

Definition at line 3509 of file commentscan.cpp.

int braceCount
static

Definition at line 3534 of file commentscan.cpp.

bool briefEndsAtDot
static

Definition at line 3503 of file commentscan.cpp.

int commentscanYY_flex_debug = 0

Definition at line 3097 of file commentscan.cpp.

FILE * commentscanYYin = (FILE *) 0

Definition at line 359 of file commentscan.cpp.

int commentscanYYleng

Definition at line 294 of file commentscan.cpp.

int commentscanYYlineno = 1

Definition at line 365 of file commentscan.cpp.

FILE * commentscanYYout = (FILE *) 0

Definition at line 359 of file commentscan.cpp.

char * commentscanYYtext

Definition at line 3113 of file commentscan.cpp.

Entry* current = 0
static

Definition at line 3516 of file commentscan.cpp.

DocCmdMap docCmdMap[]
static

Definition at line 3249 of file commentscan.cpp.

bool enabledSectionFound
static

Definition at line 3513 of file commentscan.cpp.

QCString formulaEnv
static

Definition at line 3505 of file commentscan.cpp.

int formulaNewLines
static

Definition at line 3506 of file commentscan.cpp.

QCString formulaText
static

Definition at line 3504 of file commentscan.cpp.

QCString functionProto
static

Definition at line 3514 of file commentscan.cpp.

QStack<Grouping> g_autoGroupStack
static

Definition at line 3551 of file commentscan.cpp.

int g_commentCount
static

Definition at line 3539 of file commentscan.cpp.

QCString g_compoundName
static

Definition at line 3556 of file commentscan.cpp.

int g_condCount
static

Definition at line 3537 of file commentscan.cpp.

QCString g_copyDocArg
static

Definition at line 3542 of file commentscan.cpp.

QCString g_guardExpr
static

Definition at line 3544 of file commentscan.cpp.

bool g_insideParBlock
static

Definition at line 3547 of file commentscan.cpp.

QCString g_memberGroupDocs
static

Definition at line 3554 of file commentscan.cpp.

QCString g_memberGroupHeader
static

Definition at line 3553 of file commentscan.cpp.

int g_memberGroupId = DOX_NOGROUP
static

Definition at line 3552 of file commentscan.cpp.

QCString g_memberGroupRelates
static

Definition at line 3555 of file commentscan.cpp.

int g_roundCount
static

Definition at line 3545 of file commentscan.cpp.

QCString g_sectionLabel
static

Definition at line 3523 of file commentscan.cpp.

int g_sectionLevel
static

Definition at line 3525 of file commentscan.cpp.

QCString g_sectionTitle
static

Definition at line 3524 of file commentscan.cpp.

QCString g_spaceBeforeCmd
static

Definition at line 3540 of file commentscan.cpp.

QCString g_spaceBeforeIf
static

Definition at line 3541 of file commentscan.cpp.

QStack<GuardedSection> guards
static

Definition at line 3515 of file commentscan.cpp.

GuardType guardType
static

Definition at line 3512 of file commentscan.cpp.

bool inBody
static

Definition at line 3501 of file commentscan.cpp.

OutputContext inContext
static

Definition at line 3502 of file commentscan.cpp.

bool inGroupParamFound
static

Definition at line 3533 of file commentscan.cpp.

bool inInternalDocs = FALSE

Definition at line 3444 of file commentscan.cpp.

int inputPosition
static

Definition at line 3498 of file commentscan.cpp.

QCString inputString
static

Definition at line 3497 of file commentscan.cpp.

bool insidePre
static

Definition at line 3535 of file commentscan.cpp.

ParserInterface* langParser
static

Definition at line 3496 of file commentscan.cpp.

bool needNewEntry
static

Definition at line 3521 of file commentscan.cpp.

QCString newXRefItemKey
static

Definition at line 3527 of file commentscan.cpp.

XRefKind newXRefKind
static

Definition at line 3511 of file commentscan.cpp.

QCString outputXRef
static

Definition at line 3508 of file commentscan.cpp.

bool parseMore
static

Definition at line 3536 of file commentscan.cpp.

QCString* pOutputString
static

Definition at line 3507 of file commentscan.cpp.

int prevPosition =0
static

Definition at line 4001 of file commentscan.cpp.

Protection protection
static

Definition at line 3530 of file commentscan.cpp.

bool xrefAppendFlag
static

Definition at line 3532 of file commentscan.cpp.

QCString xrefItemKey
static

Definition at line 3526 of file commentscan.cpp.

QCString xrefItemTitle
static

Definition at line 3528 of file commentscan.cpp.

XRefKind xrefKind
static

Definition at line 3510 of file commentscan.cpp.

QCString xrefListTitle
static

Definition at line 3529 of file commentscan.cpp.

yyconst flex_int16_t yy_accept[1139]
static

Definition at line 481 of file commentscan.cpp.

yyconst flex_int16_t yy_acclist[759]
static

Definition at line 394 of file commentscan.cpp.

register int yy_act

Definition at line 4283 of file commentscan.cpp.

yyconst flex_int16_t yy_base[1371]
static

Definition at line 654 of file commentscan.cpp.

register char * yy_bp

Definition at line 4282 of file commentscan.cpp.

YY_BUFFER_STATE* yy_buffer_stack = 0
static

Stack as an array.

Definition at line 274 of file commentscan.cpp.

size_t yy_buffer_stack_max = 0
static

capacity of stack.

Definition at line 273 of file commentscan.cpp.

size_t yy_buffer_stack_top = 0
static

index of top of stack.

Definition at line 272 of file commentscan.cpp.

char* yy_c_buf_p = (char *) 0
static

Definition at line 297 of file commentscan.cpp.

yyconst flex_int16_t yy_chk[9667]
static

Definition at line 2029 of file commentscan.cpp.

register char* yy_cp

Definition at line 4282 of file commentscan.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 4280 of file commentscan.cpp.

yyconst flex_int16_t yy_def[1371]
static

Definition at line 808 of file commentscan.cpp.

int yy_did_buffer_switch_on_eof
static

Definition at line 304 of file commentscan.cpp.

yyconst flex_int32_t yy_ec[256]
static

Definition at line 610 of file commentscan.cpp.

char* yy_full_match
static

Definition at line 3100 of file commentscan.cpp.

char yy_hold_char
static

Definition at line 292 of file commentscan.cpp.

int yy_init = 0
static

Definition at line 298 of file commentscan.cpp.

int yy_lp
static

Definition at line 3101 of file commentscan.cpp.

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

Definition at line 642 of file commentscan.cpp.

int yy_n_chars
static

Definition at line 293 of file commentscan.cpp.

yyconst flex_int16_t yy_nxt[9667]
static

Definition at line 962 of file commentscan.cpp.

int yy_start = 0
static

Definition at line 299 of file commentscan.cpp.

yy_state_type* yy_state_buf =0
static

Definition at line 3099 of file commentscan.cpp.

yy_state_type * yy_state_ptr =0
static

Definition at line 3099 of file commentscan.cpp.

QCString yyFileName
static

Definition at line 3499 of file commentscan.cpp.

int yyLineNr
static

Definition at line 3500 of file commentscan.cpp.