diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2000-07-31 18:09:08 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2000-07-31 18:09:08 (GMT) |
commit | 5ad8b41eb93b9ca6a4c2ce90837103f8a4e750d8 (patch) | |
tree | 8b6d1855a77a3cfa84674b2918bdb7c6478b94ae /src | |
parent | 7ce8e31b7d4f831949f7061ef2808c867da4edd1 (diff) | |
download | Doxygen-5ad8b41eb93b9ca6a4c2ce90837103f8a4e750d8.zip Doxygen-5ad8b41eb93b9ca6a4c2ce90837103f8a4e750d8.tar.gz Doxygen-5ad8b41eb93b9ca6a4c2ce90837103f8a4e750d8.tar.bz2 |
Release-1.2.0-20000731
Diffstat (limited to 'src')
-rw-r--r-- | src/code.l | 42 | ||||
-rw-r--r-- | src/config.h | 2 | ||||
-rw-r--r-- | src/config.l | 425 | ||||
-rw-r--r-- | src/formula.cpp | 2 | ||||
-rw-r--r-- | src/scanner.l | 148 | ||||
-rw-r--r-- | src/util.cpp | 42 |
6 files changed, 367 insertions, 294 deletions
@@ -281,12 +281,23 @@ static void addVariable() } else { - //printf("adding variable `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data()); + int i; if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) { + //printf("adding variable `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data()); g_cvd.classScope=g_classScope; g_codeVarList.append(new CodeVarDef(g_cvd)); // add it to a list } + else if ((i=g_cvd.type.find('<'))>0) + { + g_cvd.type = g_cvd.type.left(i); + if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type.left(i)])) + { + //printf("adding template type variable `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data()); + g_cvd.classScope=g_classScope; + g_codeVarList.append(new CodeVarDef(g_cvd)); + } + } } } @@ -300,12 +311,23 @@ static void addParameter() } else { - //printf("adding parameter `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data()); - if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) + int i; + if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) { + //printf("adding parameter `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data()); g_cvd.classScope=g_classScope; g_codeParmList.append(new CodeVarDef(g_cvd)); // add it to a list } + else if ((i=g_cvd.type.find('<'))>0) + { + g_cvd.type = g_cvd.type.left(i); + if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type.left(i)])) + { + //printf("adding template type parameter `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data()); + g_cvd.classScope=g_classScope; + g_codeParmList.append(new CodeVarDef(g_cvd)); + } + } } } @@ -948,15 +970,11 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" addType(); g_name+=yytext; } - /* -<Body>{SCOPETNAME}/{B}* { - int i; - generateClassLink(*g_code,yytext,&i); +<Body>{SCOPENAME}{B}*"<"[^\n\>]*">"/{B}* { // A<T> *pt; + generateClassLink(*g_code,yytext); addType(); - QCString text=yytext; - g_name+=text.left(i); - } - */ + g_name+=yytext; + } <Body>{SCOPENAME}/{B}* { // p->func() generateClassLink(*g_code,yytext); addType(); @@ -1094,7 +1112,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" g_code->codify(yytext); endFontClass(); } -<MemberCall2,FuncCall>[a-z_A-Z][:a-z_A-Z0-9]* { +<MemberCall2,FuncCall>[a-z_A-Z][:a-z_A-Z0-9]*({B}*"<"[^\n\>]*">")? { addParmType(); g_parmName=yytext; generateClassLink(*g_code,yytext); diff --git a/src/config.h b/src/config.h index 7bd72a7..c1a4fb6 100644 --- a/src/config.h +++ b/src/config.h @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Fri Jul 28 19:43:36 2000 +/* This file was generated by configgen on Mon Jul 31 16:07:18 2000 * from config_templ.h * * DO NOT EDIT! diff --git a/src/config.l b/src/config.l index 06521d3..eebe6bd 100644 --- a/src/config.l +++ b/src/config.l @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Fri Jul 28 19:43:36 2000 +/* This file was generated by configgen on Mon Jul 31 16:11:27 2000 * from config_templ.l * * DO NOT EDIT! @@ -225,107 +225,124 @@ static int yyread(char *buf,int max_size) <*>\0x0d <Start,GetString,GetStrList,GetBool>"#" { BEGIN(SkipComment); } -<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; s->resize(0); } -<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } -<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; s->resize(0); } -<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } -<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } -<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; } -<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; } -<Start>"EXTRACT_STATIC"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractStaticFlag; } -<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; } -<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; } -<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; } -<Start>"REPEAT_BRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::repeatBriefFlag; } -<Start>"ALWAYS_DETAILED_SEC"[ \t]*"=" { BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } -<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::fullPathNameFlag; } -<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } -<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::internalDocsFlag; } -<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&Config::classDiagramFlag; } -<Start>"SOURCE_BROWSER"[ \t]*"=" { BEGIN(GetBool); b=&Config::sourceBrowseFlag; } -<Start>"INLINE_SOURCES"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineSourceFlag; } -<Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; } -<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::caseSensitiveNames; } -<Start>"HIDE_SCOPE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideScopeNames; } -<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } -<Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; } -<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; } -<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; } -<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; } -<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; } -<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } -<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; } -<Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; } -<Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; } -<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } -<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } -<Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; } -<Start>"WARN_FORMAT"[ \t]*"=" { BEGIN(GetString); s=&Config::warnFormat; s->resize(0); } -<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } -<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } -<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; } -<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } -<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } -<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } -<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } -<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } -<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } -<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; } -<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } -<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; } -<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; } -<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } -<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; s->resize(0); } -<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; s->resize(0); } -<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } -<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } -<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } -<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; } -<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } -<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; } -<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; s->resize(0); } -<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } -<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } -<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; } -<Start>"USE_PDFLATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::usePDFLatexFlag; } -<Start>"LATEX_BATCHMODE"[ \t]*"=" { BEGIN(GetBool); b=&Config::latexBatchModeFlag; } -<Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; } -<Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } -<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; } -<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } -<Start>"RTF_STYLESHEET_FILE"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfStylesheetFile; s->resize(0); } -<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; } -<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } -<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); } -<Start>"GENERATE_XML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateXML; } -<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; } -<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; } -<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } -<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; } -<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } -<Start>"INCLUDE_FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includeFilePatternList; l->clear(); elemStr=""; } -<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } -<Start>"EXPAND_AS_DEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; l->clear(); elemStr=""; } -<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } -<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } -<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; } -<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; s->resize(0); } -<Start>"HAVE_DOT"[ \t]*"=" { BEGIN(GetBool); b=&Config::haveDotFlag; } -<Start>"CLASS_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::classGraphFlag; } -<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; } -<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; } -<Start>"INCLUDED_BY_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includedByGraphFlag; } -<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } -<Start>"DOT_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::dotPath; s->resize(0); } -<Start>"MAX_DOT_GRAPH_WIDTH"[ \t]*"=" { BEGIN(GetString); s=&maxDotGraphWidthString; s->resize(0); } -<Start>"MAX_DOT_GRAPH_HEIGHT"[ \t]*"=" { BEGIN(GetString); s=&maxDotGraphHeightString; s->resize(0); } -<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; } -<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); } -<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } -<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; s->resize(0); } -<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } -<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } -<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } +<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; s->resize(0); } +<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } +<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; s->resize(0); } +<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } +<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } +<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; } +<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; } +<Start>"EXTRACT_STATIC"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractStaticFlag; } +<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; } +<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; } +<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; } +<Start>"REPEAT_BRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::repeatBriefFlag; } +<Start>"ALWAYS_DETAILED_SEC"[ \t]*"=" { BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } +<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::fullPathNameFlag; } +<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } +<Start>"STRIP_FROM_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::stripFromPath; elemStr=""; } +<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::internalDocsFlag; } +<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&Config::classDiagramFlag; } +<Start>"SOURCE_BROWSER"[ \t]*"=" { BEGIN(GetBool); b=&Config::sourceBrowseFlag; } +<Start>"INLINE_SOURCES"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineSourceFlag; } +<Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; } +<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::caseSensitiveNames; } +<Start>"HIDE_SCOPE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideScopeNames; } +<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } +<Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; } +<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; } +<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; } +<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; } +<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; } +<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } +<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; } +<Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; } +<Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; } +<Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; } +<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } +<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } +<Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; } +<Start>"WARN_FORMAT"[ \t]*"=" { BEGIN(GetString); s=&Config::warnFormat; s->resize(0); } +<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } +<Start>"INPUT"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::inputSources; elemStr=""; } +<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } +<Start>"FILE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::filePatternList; elemStr=""; } +<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; } +<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } +<Start>"EXCLUDE"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::excludeSources; elemStr=""; } +<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } +<Start>"EXCLUDE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::excludePatternList; elemStr=""; } +<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } +<Start>"EXAMPLE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::examplePath; elemStr=""; } +<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } +<Start>"EXAMPLE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::examplePatternList; elemStr=""; } +<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } +<Start>"IMAGE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; } +<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } +<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; } +<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } +<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; } +<Start>"IGNORE_PREFIX"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; elemStr=""; } +<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; } +<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } +<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; s->resize(0); } +<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; s->resize(0); } +<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } +<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } +<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } +<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; } +<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } +<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; } +<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; s->resize(0); } +<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } +<Start>"EXTRA_PACKAGES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::extraPackageList; elemStr=""; } +<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } +<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; } +<Start>"USE_PDFLATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::usePDFLatexFlag; } +<Start>"LATEX_BATCHMODE"[ \t]*"=" { BEGIN(GetBool); b=&Config::latexBatchModeFlag; } +<Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; } +<Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } +<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; } +<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } +<Start>"RTF_STYLESHEET_FILE"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfStylesheetFile; s->resize(0); } +<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; } +<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } +<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); } +<Start>"GENERATE_XML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateXML; } +<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; } +<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; } +<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } +<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; } +<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } +<Start>"INCLUDE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::includePath; elemStr=""; } +<Start>"INCLUDE_FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includeFilePatternList; l->clear(); elemStr=""; } +<Start>"INCLUDE_FILE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::includeFilePatternList; elemStr=""; } +<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } +<Start>"PREDEFINED"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::predefined; elemStr=""; } +<Start>"EXPAND_AS_DEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; l->clear(); elemStr=""; } +<Start>"EXPAND_AS_DEFINED"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; elemStr=""; } +<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } +<Start>"TAGFILES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::tagFileList; elemStr=""; } +<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } +<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; } +<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; s->resize(0); } +<Start>"HAVE_DOT"[ \t]*"=" { BEGIN(GetBool); b=&Config::haveDotFlag; } +<Start>"CLASS_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::classGraphFlag; } +<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; } +<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; } +<Start>"INCLUDED_BY_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includedByGraphFlag; } +<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } +<Start>"DOT_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::dotPath; s->resize(0); } +<Start>"MAX_DOT_GRAPH_WIDTH"[ \t]*"=" { BEGIN(GetString); s=&maxDotGraphWidthString; s->resize(0); } +<Start>"MAX_DOT_GRAPH_HEIGHT"[ \t]*"=" { BEGIN(GetString); s=&maxDotGraphHeightString; s->resize(0); } +<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; } +<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); } +<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } +<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; s->resize(0); } +<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } +<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } +<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } +<Start>"EXT_DOC_PATHS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::extDocPathList; elemStr=""; } <Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } <GetString,GetBool>\n { yyLineNr++; BEGIN(Start); } <GetStrList>\n { @@ -813,6 +830,8 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# All text after a hash (#) is considered a comment and will be ignored\n"; t << "# The format is:\n"; t << "# TAG = value [value, ...]\n"; + t << "# For lists items can also be appended using:\n"; + t << "# TAG += value [value, ...]\n"; t << "# Values that contain spaces should be placed between quotes (\" \")\n"; } if (!sl) @@ -829,7 +848,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# by quotes) that should identify the project. \n"; t << "\n"; } - t << "PROJECT_NAME = "; + t << "PROJECT_NAME = "; writeStringValue(t,Config::projectName); t << "\n"; if (!sl) @@ -840,7 +859,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# if some version control system is used.\n"; t << "\n"; } - t << "PROJECT_NUMBER = "; + t << "PROJECT_NUMBER = "; writeStringValue(t,Config::projectNumber); t << "\n"; if (!sl) @@ -852,7 +871,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# where doxygen was started. If left blank the current directory will be used.\n"; t << "\n"; } - t << "OUTPUT_DIRECTORY = "; + t << "OUTPUT_DIRECTORY = "; writeStringValue(t,Config::outputDir); t << "\n"; if (!sl) @@ -866,7 +885,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# Spanish, Russian, Croatian, Polish, and Portuguese.\n"; t << "\n"; } - t << "OUTPUT_LANGUAGE = "; + t << "OUTPUT_LANGUAGE = "; writeStringValue(t,Config::outputLanguage); t << "\n"; if (!sl) @@ -877,7 +896,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the value YES disables it. \n"; t << "\n"; } - t << "DISABLE_INDEX = "; + t << "DISABLE_INDEX = "; writeBoolValue(t,Config::noIndexFlag); t << "\n"; if (!sl) @@ -889,7 +908,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES \n"; t << "\n"; } - t << "EXTRACT_ALL = "; + t << "EXTRACT_ALL = "; writeBoolValue(t,Config::extractAllFlag); t << "\n"; if (!sl) @@ -899,7 +918,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# will be included in the documentation. \n"; t << "\n"; } - t << "EXTRACT_PRIVATE = "; + t << "EXTRACT_PRIVATE = "; writeBoolValue(t,Config::extractPrivateFlag); t << "\n"; if (!sl) @@ -909,7 +928,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# will be included in the documentation. \n"; t << "\n"; } - t << "EXTRACT_STATIC = "; + t << "EXTRACT_STATIC = "; writeBoolValue(t,Config::extractStaticFlag); t << "\n"; if (!sl) @@ -922,7 +941,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# This option has no effect if EXTRACT_ALL is enabled. \n"; t << "\n"; } - t << "HIDE_UNDOC_MEMBERS = "; + t << "HIDE_UNDOC_MEMBERS = "; writeBoolValue(t,Config::hideMemberFlag); t << "\n"; if (!sl) @@ -934,7 +953,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# overviews. This option has no effect if EXTRACT_ALL is enabled. \n"; t << "\n"; } - t << "HIDE_UNDOC_CLASSES = "; + t << "HIDE_UNDOC_CLASSES = "; writeBoolValue(t,Config::hideClassFlag); t << "\n"; if (!sl) @@ -946,7 +965,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# Set to NO to disable this. \n"; t << "\n"; } - t << "BRIEF_MEMBER_DESC = "; + t << "BRIEF_MEMBER_DESC = "; writeBoolValue(t,Config::briefMemDescFlag); t << "\n"; if (!sl) @@ -958,7 +977,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# brief descriptions will be completely suppressed. \n"; t << "\n"; } - t << "REPEAT_BRIEF = "; + t << "REPEAT_BRIEF = "; writeBoolValue(t,Config::repeatBriefFlag); t << "\n"; if (!sl) @@ -969,7 +988,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# description. \n"; t << "\n"; } - t << "ALWAYS_DETAILED_SEC = "; + t << "ALWAYS_DETAILED_SEC = "; writeBoolValue(t,Config::alwaysDetailsFlag); t << "\n"; if (!sl) @@ -980,7 +999,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# to NO the shortest path that makes the file name unique will be used. \n"; t << "\n"; } - t << "FULL_PATH_NAMES = "; + t << "FULL_PATH_NAMES = "; writeBoolValue(t,Config::fullPathNameFlag); t << "\n"; if (!sl) @@ -992,7 +1011,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the path. It is allowed to use relative paths in the argument list.\n"; t << "\n"; } - t << "STRIP_FROM_PATH = "; + t << "STRIP_FROM_PATH = "; writeStringList(t,Config::stripFromPath); t << "\n"; if (!sl) @@ -1004,7 +1023,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# Set it to YES to include the internal documentation. \n"; t << "\n"; } - t << "INTERNAL_DOCS = "; + t << "INTERNAL_DOCS = "; writeBoolValue(t,Config::internalDocsFlag); t << "\n"; if (!sl) @@ -1015,7 +1034,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# super classes. Setting the tag to NO turns the diagrams off. \n"; t << "\n"; } - t << "CLASS_DIAGRAMS = "; + t << "CLASS_DIAGRAMS = "; writeBoolValue(t,Config::classDiagramFlag); t << "\n"; if (!sl) @@ -1025,7 +1044,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# be generated. Documented entities will be cross-referenced with these sources. \n"; t << "\n"; } - t << "SOURCE_BROWSER = "; + t << "SOURCE_BROWSER = "; writeBoolValue(t,Config::sourceBrowseFlag); t << "\n"; if (!sl) @@ -1035,7 +1054,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# of functions and classes directly in the documentation. \n"; t << "\n"; } - t << "INLINE_SOURCES = "; + t << "INLINE_SOURCES = "; writeBoolValue(t,Config::inlineSourceFlag); t << "\n"; if (!sl) @@ -1046,7 +1065,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# fragments. Normal C and C++ comments will always remain visible. \n"; t << "\n"; } - t << "STRIP_CODE_COMMENTS = "; + t << "STRIP_CODE_COMMENTS = "; writeBoolValue(t,Config::stripCommentsFlag); t << "\n"; if (!sl) @@ -1059,7 +1078,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# supports case sensitive file names. \n"; t << "\n"; } - t << "CASE_SENSE_NAMES = "; + t << "CASE_SENSE_NAMES = "; writeBoolValue(t,Config::caseSensitiveNames); t << "\n"; if (!sl) @@ -1070,7 +1089,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# documentation. If set to YES the scope will be hidden. \n"; t << "\n"; } - t << "HIDE_SCOPE_NAMES = "; + t << "HIDE_SCOPE_NAMES = "; writeBoolValue(t,Config::hideScopeNames); t << "\n"; if (!sl) @@ -1081,7 +1100,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# which an include is specified. Set to NO to disable this. \n"; t << "\n"; } - t << "VERBATIM_HEADERS = "; + t << "VERBATIM_HEADERS = "; writeBoolValue(t,Config::verbatimHeaderFlag); t << "\n"; if (!sl) @@ -1092,7 +1111,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# of that file. \n"; t << "\n"; } - t << "SHOW_INCLUDE_FILES = "; + t << "SHOW_INCLUDE_FILES = "; writeBoolValue(t,Config::showIncFileFlag); t << "\n"; if (!sl) @@ -1104,7 +1123,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# behave just like the Qt-style comments. \n"; t << "\n"; } - t << "JAVADOC_AUTOBRIEF = "; + t << "JAVADOC_AUTOBRIEF = "; writeBoolValue(t,Config::autoBriefFlag); t << "\n"; if (!sl) @@ -1115,7 +1134,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# reimplements. \n"; t << "\n"; } - t << "INHERIT_DOCS = "; + t << "INHERIT_DOCS = "; writeBoolValue(t,Config::inheritDocsFlag); t << "\n"; if (!sl) @@ -1125,7 +1144,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# is inserted in the documentation for inline members. \n"; t << "\n"; } - t << "INLINE_INFO = "; + t << "INLINE_INFO = "; writeBoolValue(t,Config::inlineInfoFlag); t << "\n"; if (!sl) @@ -1137,7 +1156,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# declaration order. \n"; t << "\n"; } - t << "SORT_MEMBER_DOCS = "; + t << "SORT_MEMBER_DOCS = "; writeBoolValue(t,Config::sortMembersFlag); t << "\n"; if (!sl) @@ -1147,7 +1166,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# Doxygen uses this value to replace tabs by spaces in code fragments. \n"; t << "\n"; } - t << "TAB_SIZE = "; + t << "TAB_SIZE = "; writeIntValue(t,Config::tabSize); t << "\n"; if (!sl) @@ -1157,7 +1176,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# documentation sections, marked by \\if sectionname ... \\endif. \n"; t << "\n"; } - t << "ENABLED_SECTIONS = "; + t << "ENABLED_SECTIONS = "; writeStringList(t,Config::sectionFilterList); t << "\n"; if (!sl) @@ -1168,7 +1187,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# commands in the documentation.\n"; t << "\n"; } - t << "GENERATE_TODOLIST = "; + t << "GENERATE_TODOLIST = "; writeBoolValue(t,Config::generateTodoList); t << "\n"; if (!sl) @@ -1179,7 +1198,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# commands in the documentation.\n"; t << "\n"; } - t << "GENERATE_TESTLIST = "; + t << "GENERATE_TESTLIST = "; writeBoolValue(t,Config::generateTestList); t << "\n"; if (!sl) @@ -1196,7 +1215,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# by doxygen. Possible values are YES and NO. If left blank NO is used. \n"; t << "\n"; } - t << "QUIET = "; + t << "QUIET = "; writeBoolValue(t,Config::quietFlag); t << "\n"; if (!sl) @@ -1207,7 +1226,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# NO is used. \n"; t << "\n"; } - t << "WARNINGS = "; + t << "WARNINGS = "; writeBoolValue(t,Config::warningFlag); t << "\n"; if (!sl) @@ -1218,7 +1237,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# automatically be disabled. \n"; t << "\n"; } - t << "WARN_IF_UNDOCUMENTED = "; + t << "WARN_IF_UNDOCUMENTED = "; writeBoolValue(t,Config::warningUndocFlag); t << "\n"; if (!sl) @@ -1230,7 +1249,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# warning originated and the warning text. \n"; t << "\n"; } - t << "WARN_FORMAT = "; + t << "WARN_FORMAT = "; writeStringValue(t,Config::warnFormat); t << "\n"; if (!sl) @@ -1249,7 +1268,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# with spaces. \n"; t << "\n"; } - t << "INPUT = "; + t << "INPUT = "; writeStringList(t,Config::inputSources); t << "\n"; if (!sl) @@ -1261,7 +1280,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# blank all files are included. \n"; t << "\n"; } - t << "FILE_PATTERNS = "; + t << "FILE_PATTERNS = "; writeStringList(t,Config::filePatternList); t << "\n"; if (!sl) @@ -1272,7 +1291,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# If left blank NO is used. \n"; t << "\n"; } - t << "RECURSIVE = "; + t << "RECURSIVE = "; writeBoolValue(t,Config::recursiveFlag); t << "\n"; if (!sl) @@ -1283,7 +1302,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# subdirectory from a directory tree whose root is specified with the INPUT tag. \n"; t << "\n"; } - t << "EXCLUDE = "; + t << "EXCLUDE = "; writeStringList(t,Config::excludeSources); t << "\n"; if (!sl) @@ -1294,7 +1313,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# certain files from those directories. \n"; t << "\n"; } - t << "EXCLUDE_PATTERNS = "; + t << "EXCLUDE_PATTERNS = "; writeStringList(t,Config::excludePatternList); t << "\n"; if (!sl) @@ -1305,7 +1324,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the \\include command). \n"; t << "\n"; } - t << "EXAMPLE_PATH = "; + t << "EXAMPLE_PATH = "; writeStringList(t,Config::examplePath); t << "\n"; if (!sl) @@ -1317,7 +1336,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# blank all files are included. \n"; t << "\n"; } - t << "EXAMPLE_PATTERNS = "; + t << "EXAMPLE_PATTERNS = "; writeStringList(t,Config::examplePatternList); t << "\n"; if (!sl) @@ -1328,7 +1347,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the \\image command). \n"; t << "\n"; } - t << "IMAGE_PATH = "; + t << "IMAGE_PATH = "; writeStringList(t,Config::imagePath); t << "\n"; if (!sl) @@ -1342,7 +1361,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# to standard output. \n"; t << "\n"; } - t << "INPUT_FILTER = "; + t << "INPUT_FILTER = "; writeStringValue(t,Config::inputFilter); t << "\n"; if (!sl) @@ -1360,7 +1379,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# contains a lot of classes, structs, unions or interfaces. \n"; t << "\n"; } - t << "ALPHABETICAL_INDEX = "; + t << "ALPHABETICAL_INDEX = "; writeBoolValue(t,Config::alphaIndexFlag); t << "\n"; if (!sl) @@ -1371,7 +1390,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# in which this list will be split (can be a number in the range [1..20]) \n"; t << "\n"; } - t << "COLS_IN_ALPHA_INDEX = "; + t << "COLS_IN_ALPHA_INDEX = "; writeIntValue(t,Config::colsInAlphaIndex); t << "\n"; if (!sl) @@ -1383,7 +1402,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# should be ignored while generating the index headers. \n"; t << "\n"; } - t << "IGNORE_PREFIX = "; + t << "IGNORE_PREFIX = "; writeStringList(t,Config::ignorePrefixList); t << "\n"; if (!sl) @@ -1400,7 +1419,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# generate HTML output. \n"; t << "\n"; } - t << "GENERATE_HTML = "; + t << "GENERATE_HTML = "; writeBoolValue(t,Config::generateHtml); t << "\n"; if (!sl) @@ -1411,7 +1430,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# put in front of it. If left blank `html' will be used as the default path. \n"; t << "\n"; } - t << "HTML_OUTPUT = "; + t << "HTML_OUTPUT = "; writeStringValue(t,Config::htmlOutputDir); t << "\n"; if (!sl) @@ -1422,7 +1441,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# standard header.\n"; t << "\n"; } - t << "HTML_HEADER = "; + t << "HTML_HEADER = "; writeStringValue(t,Config::headerFile); t << "\n"; if (!sl) @@ -1433,7 +1452,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# standard footer.\n"; t << "\n"; } - t << "HTML_FOOTER = "; + t << "HTML_FOOTER = "; writeStringValue(t,Config::footerFile); t << "\n"; if (!sl) @@ -1445,7 +1464,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# will generate a default style sheet \n"; t << "\n"; } - t << "HTML_STYLESHEET = "; + t << "HTML_STYLESHEET = "; writeStringValue(t,Config::htmlStyleSheet); t << "\n"; if (!sl) @@ -1456,7 +1475,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# NO a bullet list will be used. \n"; t << "\n"; } - t << "HTML_ALIGN_MEMBERS = "; + t << "HTML_ALIGN_MEMBERS = "; writeBoolValue(t,Config::htmlAlignMemberFlag); t << "\n"; if (!sl) @@ -1468,7 +1487,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# of the generated HTML documentation. \n"; t << "\n"; } - t << "GENERATE_HTMLHELP = "; + t << "GENERATE_HTMLHELP = "; writeBoolValue(t,Config::htmlHelpFlag); t << "\n"; if (!sl) @@ -1485,7 +1504,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# generate Latex output. \n"; t << "\n"; } - t << "GENERATE_LATEX = "; + t << "GENERATE_LATEX = "; writeBoolValue(t,Config::generateLatex); t << "\n"; if (!sl) @@ -1496,7 +1515,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# put in front of it. If left blank `latex' will be used as the default path. \n"; t << "\n"; } - t << "LATEX_OUTPUT = "; + t << "LATEX_OUTPUT = "; writeStringValue(t,Config::latexOutputDir); t << "\n"; if (!sl) @@ -1507,7 +1526,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# save some trees in general. \n"; t << "\n"; } - t << "COMPACT_LATEX = "; + t << "COMPACT_LATEX = "; writeBoolValue(t,Config::compactLatexFlag); t << "\n"; if (!sl) @@ -1518,7 +1537,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# executive. If left blank a4wide will be used. \n"; t << "\n"; } - t << "PAPER_TYPE = "; + t << "PAPER_TYPE = "; writeStringValue(t,Config::paperType); t << "\n"; if (!sl) @@ -1528,7 +1547,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# packages that should be included in the LaTeX output. \n"; t << "\n"; } - t << "EXTRA_PACKAGES = "; + t << "EXTRA_PACKAGES = "; writeStringList(t,Config::extraPackageList); t << "\n"; if (!sl) @@ -1540,7 +1559,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# standard header. Notice: only use this tag if you know what you are doing! \n"; t << "\n"; } - t << "LATEX_HEADER = "; + t << "LATEX_HEADER = "; writeStringValue(t,Config::latexHeaderFile); t << "\n"; if (!sl) @@ -1552,7 +1571,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# This makes the output suitable for online browsing using a pdf viewer. \n"; t << "\n"; } - t << "PDF_HYPERLINKS = "; + t << "PDF_HYPERLINKS = "; writeBoolValue(t,Config::pdfHyperFlag); t << "\n"; if (!sl) @@ -1563,7 +1582,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# higher quality PDF documentation. \n"; t << "\n"; } - t << "USE_PDFLATEX = "; + t << "USE_PDFLATEX = "; writeBoolValue(t,Config::usePDFLatexFlag); t << "\n"; if (!sl) @@ -1575,7 +1594,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# This option is also used when generating formulas in HTML. \n"; t << "\n"; } - t << "LATEX_BATCHMODE = "; + t << "LATEX_BATCHMODE = "; writeBoolValue(t,Config::latexBatchModeFlag); t << "\n"; if (!sl) @@ -1593,7 +1612,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# other RTF readers or editors.\n"; t << "\n"; } - t << "GENERATE_RTF = "; + t << "GENERATE_RTF = "; writeBoolValue(t,Config::generateRTF); t << "\n"; if (!sl) @@ -1604,7 +1623,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# put in front of it. If left blank `rtf' will be used as the default path. \n"; t << "\n"; } - t << "RTF_OUTPUT = "; + t << "RTF_OUTPUT = "; writeStringValue(t,Config::rtfOutputDir); t << "\n"; if (!sl) @@ -1615,7 +1634,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# save some trees in general. \n"; t << "\n"; } - t << "COMPACT_RTF = "; + t << "COMPACT_RTF = "; writeBoolValue(t,Config::compactRTFFlag); t << "\n"; if (!sl) @@ -1629,7 +1648,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# Note: wordpad (write) and others do not support links. \n"; t << "\n"; } - t << "RTF_HYPERLINKS = "; + t << "RTF_HYPERLINKS = "; writeBoolValue(t,Config::rtfHyperFlag); t << "\n"; if (!sl) @@ -1640,7 +1659,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# replacements, missing definitions are set to their default value. \n"; t << "\n"; } - t << "RTF_STYLESHEET_FILE = "; + t << "RTF_STYLESHEET_FILE = "; writeStringValue(t,Config::rtfStylesheetFile); t << "\n"; if (!sl) @@ -1657,7 +1676,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# generate man pages \n"; t << "\n"; } - t << "GENERATE_MAN = "; + t << "GENERATE_MAN = "; writeBoolValue(t,Config::generateMan); t << "\n"; if (!sl) @@ -1668,7 +1687,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# put in front of it. If left blank `man' will be used as the default path. \n"; t << "\n"; } - t << "MAN_OUTPUT = "; + t << "MAN_OUTPUT = "; writeStringValue(t,Config::manOutputDir); t << "\n"; if (!sl) @@ -1678,7 +1697,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the generated man pages (default is the subroutine's section .3) \n"; t << "\n"; } - t << "MAN_EXTENSION = "; + t << "MAN_EXTENSION = "; writeStringValue(t,Config::manExtension); t << "\n"; if (!sl) @@ -1697,7 +1716,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# is still experimental and very incomplete.\n"; t << "\n"; } - t << "GENERATE_XML = "; + t << "GENERATE_XML = "; writeBoolValue(t,Config::generateXML); t << "\n"; if (!sl) @@ -1715,7 +1734,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# files. \n"; t << "\n"; } - t << "ENABLE_PREPROCESSING = "; + t << "ENABLE_PREPROCESSING = "; writeBoolValue(t,Config::preprocessingFlag); t << "\n"; if (!sl) @@ -1727,7 +1746,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# way by setting EXPAND_ONLY_PREDEF to YES. \n"; t << "\n"; } - t << "MACRO_EXPANSION = "; + t << "MACRO_EXPANSION = "; writeBoolValue(t,Config::macroExpansionFlag); t << "\n"; if (!sl) @@ -1738,7 +1757,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# PREDEFINED and EXPAND_AS_PREDEFINED tags. \n"; t << "\n"; } - t << "EXPAND_ONLY_PREDEF = "; + t << "EXPAND_ONLY_PREDEF = "; writeBoolValue(t,Config::onlyPredefinedFlag); t << "\n"; if (!sl) @@ -1748,7 +1767,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# in the INCLUDE_PATH (see below) will be search if a #include is found. \n"; t << "\n"; } - t << "SEARCH_INCLUDES = "; + t << "SEARCH_INCLUDES = "; writeBoolValue(t,Config::searchIncludeFlag); t << "\n"; if (!sl) @@ -1759,7 +1778,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the preprocessor. \n"; t << "\n"; } - t << "INCLUDE_PATH = "; + t << "INCLUDE_PATH = "; writeStringList(t,Config::includePath); t << "\n"; if (!sl) @@ -1771,7 +1790,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# be used. \n"; t << "\n"; } - t << "INCLUDE_FILE_PATTERNS = "; + t << "INCLUDE_FILE_PATTERNS = "; writeStringList(t,Config::includeFilePatternList); t << "\n"; if (!sl) @@ -1784,7 +1803,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# omitted =1 is assumed. \n"; t << "\n"; } - t << "PREDEFINED = "; + t << "PREDEFINED = "; writeStringList(t,Config::predefined); t << "\n"; if (!sl) @@ -1796,7 +1815,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# Use the PREDEFINED tag if you want to use a different macro definition. \n"; t << "\n"; } - t << "EXPAND_AS_DEFINED = "; + t << "EXPAND_AS_DEFINED = "; writeStringList(t,Config::expandAsDefinedList); t << "\n"; if (!sl) @@ -1812,7 +1831,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# The TAGFILES tag can be used to specify one or more tagfiles. \n"; t << "\n"; } - t << "TAGFILES = "; + t << "TAGFILES = "; writeStringList(t,Config::tagFileList); t << "\n"; if (!sl) @@ -1822,7 +1841,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# a tag file that is based on the input files it reads. \n"; t << "\n"; } - t << "GENERATE_TAGFILE = "; + t << "GENERATE_TAGFILE = "; writeStringValue(t,Config::genTagFile); t << "\n"; if (!sl) @@ -1833,7 +1852,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# will be listed. \n"; t << "\n"; } - t << "ALLEXTERNALS = "; + t << "ALLEXTERNALS = "; writeBoolValue(t,Config::allExtFlag); t << "\n"; if (!sl) @@ -1843,7 +1862,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# interpreter (i.e. the result of `which perl'). \n"; t << "\n"; } - t << "PERL_PATH = "; + t << "PERL_PATH = "; writeStringValue(t,Config::perlPath); t << "\n"; if (!sl) @@ -1862,7 +1881,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# have no effect if this option is set to NO (the default) \n"; t << "\n"; } - t << "HAVE_DOT = "; + t << "HAVE_DOT = "; writeBoolValue(t,Config::haveDotFlag); t << "\n"; if (!sl) @@ -1874,7 +1893,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the CLASS_DIAGRAMS tag to NO.\n"; t << "\n"; } - t << "CLASS_GRAPH = "; + t << "CLASS_GRAPH = "; writeBoolValue(t,Config::classGraphFlag); t << "\n"; if (!sl) @@ -1886,7 +1905,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# class references variables) of the class with other documented classes. \n"; t << "\n"; } - t << "COLLABORATION_GRAPH = "; + t << "COLLABORATION_GRAPH = "; writeBoolValue(t,Config::collGraphFlag); t << "\n"; if (!sl) @@ -1898,7 +1917,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# documented files. \n"; t << "\n"; } - t << "INCLUDE_GRAPH = "; + t << "INCLUDE_GRAPH = "; writeBoolValue(t,Config::includeGraphFlag); t << "\n"; if (!sl) @@ -1909,7 +1928,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the documented files that directly or indirectly include this file \n"; t << "\n"; } - t << "INCLUDED_BY_GRAPH = "; + t << "INCLUDED_BY_GRAPH = "; writeBoolValue(t,Config::includedByGraphFlag); t << "\n"; if (!sl) @@ -1919,7 +1938,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# will graphical hierarchy of all classes instead of a textual one. \n"; t << "\n"; } - t << "GRAPHICAL_HIERARCHY = "; + t << "GRAPHICAL_HIERARCHY = "; writeBoolValue(t,Config::gfxHierarchyFlag); t << "\n"; if (!sl) @@ -1929,7 +1948,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# found. If left blank, it is assumed the dot tool can be found on the path. \n"; t << "\n"; } - t << "DOT_PATH = "; + t << "DOT_PATH = "; writeStringValue(t,Config::dotPath); t << "\n"; if (!sl) @@ -1942,7 +1961,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# large images. \n"; t << "\n"; } - t << "MAX_DOT_GRAPH_WIDTH = "; + t << "MAX_DOT_GRAPH_WIDTH = "; writeIntValue(t,Config::maxDotGraphWidth); t << "\n"; if (!sl) @@ -1955,7 +1974,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# large images. \n"; t << "\n"; } - t << "MAX_DOT_GRAPH_HEIGHT = "; + t << "MAX_DOT_GRAPH_HEIGHT = "; writeIntValue(t,Config::maxDotGraphHeight); t << "\n"; if (!sl) @@ -1972,7 +1991,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# used. If set to NO the values of all tags below this one will be ignored. \n"; t << "\n"; } - t << "SEARCHENGINE = "; + t << "SEARCHENGINE = "; writeBoolValue(t,Config::searchEngineFlag); t << "\n"; if (!sl) @@ -1983,7 +2002,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# A script with this name will be generated by doxygen. \n"; t << "\n"; } - t << "CGI_NAME = "; + t << "CGI_NAME = "; writeStringValue(t,Config::cgiName); t << "\n"; if (!sl) @@ -1994,7 +2013,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# details. \n"; t << "\n"; } - t << "CGI_URL = "; + t << "CGI_URL = "; writeStringValue(t,Config::cgiURL); t << "\n"; if (!sl) @@ -2005,7 +2024,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# documentation, with file:// prepended to it, will be used. \n"; t << "\n"; } - t << "DOC_URL = "; + t << "DOC_URL = "; writeStringValue(t,Config::docURL); t << "\n"; if (!sl) @@ -2016,7 +2035,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# will be used. \n"; t << "\n"; } - t << "DOC_ABSPATH = "; + t << "DOC_ABSPATH = "; writeStringValue(t,Config::docAbsPath); t << "\n"; if (!sl) @@ -2026,7 +2045,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# is installed. \n"; t << "\n"; } - t << "BIN_ABSPATH = "; + t << "BIN_ABSPATH = "; writeStringValue(t,Config::binAbsPath); t << "\n"; if (!sl) @@ -2037,7 +2056,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# the documentation for these projects as well. \n"; t << "\n"; } - t << "EXT_DOC_PATHS = "; + t << "EXT_DOC_PATHS = "; writeStringList(t,Config::extDocPathList); t << "\n"; } diff --git a/src/formula.cpp b/src/formula.cpp index f35fd47..16626fd 100644 --- a/src/formula.cpp +++ b/src/formula.cpp @@ -189,7 +189,7 @@ void FormulaList::generateBitmaps(const char *path) "gswin32.exe", /* file to execute */ gsArgs, /* argument list */ NULL, /* use current working dir */ - SW_HIDE /* minimize on start-up */ + SW_HIDE, /* minimize on start-up */ 0, /* application instance handle */ NULL, /* ignored: id list */ NULL, /* ignored: class name */ diff --git a/src/scanner.l b/src/scanner.l index 33a4f07..986b3b2 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -586,18 +586,38 @@ static void newDocState(); //----------------------------------------------------------------- -static QStack<int> listIndentStack; +struct IndentInfo +{ + public: + IndentInfo(int i,bool e) : indent(i), enumerated(e) {}; + ~IndentInfo() {} + void startList() + { + if (enumerated) outDoc->startEnumList(); else outDoc->startItemList(); + } + void endList() + { + if (enumerated) outDoc->endEnumList(); else outDoc->endItemList(); + } + void writeItem() + { + outDoc->writeListItem(); + } + int indent; + bool enumerated; +}; + +static QStack<IndentInfo> listIndentStack; static bool insideItemList = FALSE; -static void addListItemMarker(const char *marker) +static void addListItemMarker(const char *marker,int dashPos,bool enumerated) { // find the actual position at which the bullet was found + int i; int indent=0; - const char *p=marker; - char c; - while ((c=*p++)) + for (i=0;i<dashPos;i++) { - if (c=='\t') + if (marker[i]=='\t') { indent+=Config::tabSize - (indent%Config::tabSize); } @@ -606,32 +626,42 @@ static void addListItemMarker(const char *marker) indent++; } } - //printf("list marker found at column %d\n",indent); + //printf("list marker found at column %d enumerated %d\n",indent,enumerated); if (!insideItemList) { - outDoc->startItemList(); - outDoc->writeListItem(); - listIndentStack.push(new int(indent)); + listIndentStack.push(new IndentInfo(indent,enumerated)); + listIndentStack.top()->startList(); + listIndentStack.top()->writeItem(); insideItemList=TRUE; } else { - int *pPrevIndent = listIndentStack.top(); - if (*pPrevIndent==indent) // new item at the same indent level + IndentInfo *pPrevInfo = listIndentStack.top(); + if (pPrevInfo->indent==indent && pPrevInfo->enumerated==enumerated) + // new item of same kind at the same indent level { - outDoc->writeListItem(); + pPrevInfo->writeItem(); } - else if (*pPrevIndent<indent) // start sub item list + else if (pPrevInfo->indent==indent) + // new item of diffent kind at the same indent level { - outDoc->startItemList(); - outDoc->writeListItem(); - listIndentStack.push(new int(indent)); + // switch to a diffent list type + pPrevInfo->endList(); + pPrevInfo->enumerated=enumerated; + pPrevInfo->startList(); + pPrevInfo->writeItem(); + } + else if (pPrevInfo->indent<indent) // start sub item list + { + listIndentStack.push(new IndentInfo(indent,enumerated)); + listIndentStack.top()->startList(); + listIndentStack.top()->writeItem(); } else // end sub item list { + pPrevInfo->endList(); listIndentStack.pop(); - delete pPrevIndent; - outDoc->endItemList(); + delete pPrevInfo; // safe guard against wrong indenting if (listIndentStack.isEmpty()) { @@ -641,35 +671,24 @@ static void addListItemMarker(const char *marker) } else { - outDoc->writeListItem(); + listIndentStack.top()->writeItem(); } } } } +// end the current (nested) list regardless of the nesting level. static void forceEndItemList() { - int *indent; - while ((indent=listIndentStack.pop())!=0) + IndentInfo *info; + while ((info=listIndentStack.pop())!=0) { - outDoc->endItemList(); - delete indent; + info->endList(); + delete info; } insideItemList=FALSE; } -#if 0 -static void tryEndItemList() -{ - if (listIndentStack.count()==1) // no subitems => end list - { - outDoc->endItemList(); - delete listIndentStack.pop(); - insideItemList=FALSE; - } -} -#endif - //----------------------------------------------------------------- static bool inBlock() @@ -1144,25 +1163,19 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") BEGIN( FindMembers ); } <*>\x0d - /* -<DocScan>^{BL} { - if (insideArgumentList) - { - insideArgumentList=FALSE; - outDoc->endItemList(); - } - else - { - outDoc->newParagraph(); - } - if (inBlock()) endBlock(); - } - */ -<DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"-"{B}+ { /* found list item marker */ - addListItemMarker(yytext); - } -<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"{B}+ { - addListItemMarker(yytext+1); +<DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */ + QCString text=yytext; + int dashPos = text.findRev('-'); + //printf("dashPos=%d char='%c'\n",dashPos,text.at(dashPos+1)); + bool isEnumerated = text.at(dashPos+1)=='#'; + addListItemMarker(yytext,dashPos,isEnumerated); + } +<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */ + QCString text=yytext; + int dashPos = text.findRev('-'); + //printf("dashPos=%d char='%c'\n",dashPos,text.at(dashPos+1)); + bool isEnumerated = text.at(dashPos+1)=='#'; + addListItemMarker(yytext+1,dashPos,isEnumerated); } <DocScan,Text>"©" { outDoc->writeCopyright(); } <DocScan,Text>""" { outDoc->writeQuote(); } @@ -2222,19 +2235,19 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") <DocScan>"%"[a-zA-Z_0-9\-]+ { outDoc->docify(yytext+1); } -<DocEmphasis>{WORD} { +<DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" { outDoc->startEmphasis(); - linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE); + generateRef(*outDoc,className,yytext,inSeeBlock); outDoc->endEmphasis(); BEGIN( DocScan ); - } -<DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { + } +<DocEmphasis>{WORD} { outDoc->startEmphasis(); - generateRef(*outDoc,className,yytext,inSeeBlock); + linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE); outDoc->endEmphasis(); BEGIN( DocScan ); - } -<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { + } +<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" { outDoc->startBold(); generateRef(*outDoc,className,yytext,inSeeBlock); outDoc->endBold(); @@ -2246,7 +2259,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") outDoc->endBold(); BEGIN( DocScan ); } -<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { +<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()!\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" { outDoc->startTypewriter(); generateRef(*outDoc,className,yytext,inSeeBlock); outDoc->endTypewriter(); @@ -2278,7 +2291,10 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") outDoc->docify(yytext); } <DocCode,DocEmphasis,DocBold>"\n" { outDoc->writeChar('\n'); } -<DocScan>({B}*"\n"){2,}{B}*"*"*{B}*"-"{B}+ { // new paragraph & start of a list +<DocScan>({B}*"\n"){2,}{B}*"*"*{B}*"-"("#")?{B}+ { // new paragraph & start of a list + QCString text=yytext; + int dashPos = text.findRev('-'); + bool isEnumerated = text.at(dashPos+1)=='#'; if (insideArgumentList) { insideArgumentList=FALSE; @@ -2293,7 +2309,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") outDoc->newParagraph(); } if (inBlock()) endBlock(); - addListItemMarker(strrchr(yytext,'\n')+1); + addListItemMarker(strrchr(yytext,'\n')+1,dashPos,isEnumerated); } <DocScan>({B}*"\n"){2,}{B}* { // new paragraph if (insideArgumentList) @@ -5163,7 +5179,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") unput('/');unput('*'); BEGIN( tmpDocType ); } -<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"{B}+ { +<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ { current->doc += yytext; } <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/] diff --git a/src/util.cpp b/src/util.cpp index 1870400..5158031 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -838,6 +838,23 @@ QCString fileToString(const char *name) if (name[0]=='-' && name[1]==0) // read from stdin { fileOpened=f.open(IO_ReadOnly,stdin); + if (fileOpened) + { + const int bSize=4096; + QCString contents(bSize); + int totalSize=0; + int size; + while ((size=f.readBlock(contents.data()+totalSize,bSize))==bSize) + { + totalSize+=bSize; + contents.resize(totalSize+bSize); + } + totalSize+=size+2; + contents.resize(totalSize); + contents.at(totalSize-2)='\n'; // to help the scanner + contents.at(totalSize-1)='\0'; + return contents; + } } else // read from file { @@ -849,22 +866,25 @@ QCString fileToString(const char *name) } f.setName(name); fileOpened=f.open(IO_ReadOnly); + if (fileOpened) + { + int fsize=f.size(); + QCString contents(fsize+2); + f.readBlock(contents.data(),fsize); + if (fsize==0 || contents[fsize-1]=='\n') + contents[fsize]='\0'; + else + contents[fsize]='\n'; // to help the scanner + contents[fsize+1]='\0'; + f.close(); + return contents; + } } if (!fileOpened) { err("Error: cannot open file `%s' for reading\n",name); - return ""; } - int fsize=f.size(); - QCString contents(fsize+2); - f.readBlock(contents.data(),fsize); - if (fsize==0 || contents[fsize-1]=='\n') - contents[fsize]='\0'; - else - contents[fsize]='\n'; - contents[fsize+1]='\0'; - f.close(); - return contents; + return ""; } QCString dateToString(bool includeTime) |