diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2001-04-01 17:28:27 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2001-04-01 17:28:27 (GMT) |
commit | 790edce05edc348b237258995816da1708d67a73 (patch) | |
tree | 9ab56725fa008f006370f074ed17023811bbc55f /src/config.l | |
parent | ea948596d3aecd47d7459244fc4e28a2903d8985 (diff) | |
download | Doxygen-790edce05edc348b237258995816da1708d67a73.zip Doxygen-790edce05edc348b237258995816da1708d67a73.tar.gz Doxygen-790edce05edc348b237258995816da1708d67a73.tar.bz2 |
Release-1.2.6-20010401
Diffstat (limited to 'src/config.l')
-rw-r--r-- | src/config.l | 3611 |
1 files changed, 1286 insertions, 2325 deletions
diff --git a/src/config.l b/src/config.l index c31152b..0c1503a 100644 --- a/src/config.l +++ b/src/config.l @@ -1,9 +1,3 @@ -/* This file was generated by configgen on Mon Mar 19 20:34:59 2001 - * from config_templ.l - * - * DO NOT EDIT! - */ - /****************************************************************************** * * @@ -69,128 +63,102 @@ void initWarningFormat() #define YY_NEVER_INTERACTIVE 1 #define YY_NO_UNPUT -/* ----------------------------------------------------------------- - * - * exported variables - */ - -QCString Config::projectName; -QCString Config::projectNumber; -QCString Config::outputDir; -QCString Config::outputLanguage = "English"; -bool Config::extractAllFlag = FALSE; -bool Config::extractPrivateFlag = FALSE; -bool Config::extractStaticFlag = FALSE; -bool Config::hideMemberFlag = FALSE; -bool Config::hideClassFlag = FALSE; -bool Config::briefMemDescFlag = TRUE; -bool Config::repeatBriefFlag = TRUE; -bool Config::alwaysDetailsFlag = FALSE; -bool Config::fullPathNameFlag = FALSE; -QStrList Config::stripFromPath; -bool Config::internalDocsFlag = FALSE; -bool Config::classDiagramFlag = TRUE; -bool Config::sourceBrowseFlag = FALSE; -bool Config::inlineSourceFlag = FALSE; -bool Config::stripCommentsFlag = TRUE; -bool Config::caseSensitiveNames = TRUE; -bool Config::hideScopeNames = FALSE; -bool Config::verbatimHeaderFlag = TRUE; -bool Config::showIncFileFlag = TRUE; -bool Config::autoBriefFlag = FALSE; -bool Config::inheritDocsFlag = TRUE; -bool Config::inlineInfoFlag = TRUE; -bool Config::sortMembersFlag = TRUE; -bool Config::distributeDocFlag = FALSE; -int Config::tabSize = 8; -QStrList Config::sectionFilterList; -bool Config::generateTodoList = TRUE; -bool Config::generateTestList = TRUE; -bool Config::generateBugList = TRUE; -QStrList Config::aliasList; -int Config::maxInitLines = 30; -bool Config::optimizeForCFlag = FALSE; -bool Config::showUsedFilesFlag = TRUE; -bool Config::quietFlag = FALSE; -bool Config::warningFlag = TRUE; -bool Config::warningUndocFlag = TRUE; -QCString Config::warnFormat = "$file:$line: $text"; -QCString Config::warnLogFile; -QStrList Config::inputSources; -QStrList Config::filePatternList; -bool Config::recursiveFlag = FALSE; -QStrList Config::excludeSources; -QStrList Config::excludePatternList; -QStrList Config::examplePath; -QStrList Config::examplePatternList; -QStrList Config::imagePath; -QCString Config::inputFilter; -bool Config::filterForSourceFlag = FALSE; -bool Config::alphaIndexFlag = FALSE; -int Config::colsInAlphaIndex = 5; -QStrList Config::ignorePrefixList; -bool Config::generateHtml = TRUE; -QCString Config::htmlOutputDir = "html"; -QCString Config::headerFile; -QCString Config::footerFile; -QCString Config::htmlStyleSheet; -bool Config::htmlAlignMemberFlag = TRUE; -bool Config::htmlHelpFlag = FALSE; -bool Config::htmlHelpChiFlag = FALSE; -bool Config::htmlHelpTocFlag = FALSE; -bool Config::htmlHelpTocExpandFlag = FALSE; -bool Config::noIndexFlag = FALSE; -int Config::enumValuesPerLine = 4; -bool Config::ftvHelpFlag = FALSE; -int Config::treeViewWidth = 250; -bool Config::generateLatex = TRUE; -QCString Config::latexOutputDir = "latex"; -bool Config::compactLatexFlag = FALSE; -QCString Config::paperType = "a4wide"; -QStrList Config::extraPackageList; -QCString Config::latexHeaderFile; -bool Config::pdfHyperFlag = FALSE; -bool Config::usePDFLatexFlag = FALSE; -bool Config::latexBatchModeFlag = FALSE; -bool Config::generateRTF = TRUE; -QCString Config::rtfOutputDir = "rtf"; -bool Config::compactRTFFlag = FALSE; -bool Config::rtfHyperFlag = FALSE; -QCString Config::rtfStylesheetFile; -QCString Config::rtfExtensionsFile; -bool Config::generateMan = TRUE; -QCString Config::manOutputDir = "man"; -QCString Config::manExtension = ".3"; -bool Config::preprocessingFlag = TRUE; -bool Config::macroExpansionFlag = FALSE; -bool Config::onlyPredefinedFlag = FALSE; -bool Config::searchIncludeFlag = TRUE; -QStrList Config::includePath; -QStrList Config::includeFilePatternList; -QStrList Config::predefined; -QStrList Config::expandAsDefinedList; -QStrList Config::tagFileList; -QCString Config::genTagFile; -bool Config::allExtFlag = FALSE; -QCString Config::perlPath = "/usr/bin/perl"; -bool Config::haveDotFlag = FALSE; -bool Config::classGraphFlag = TRUE; -bool Config::collGraphFlag = TRUE; -bool Config::includeGraphFlag = TRUE; -bool Config::includedByGraphFlag = TRUE; -bool Config::gfxHierarchyFlag = TRUE; -QCString Config::dotPath; -int Config::maxDotGraphWidth = 1024; -int Config::maxDotGraphHeight = 1024; -bool Config::generateLegend = TRUE; -bool Config::dotCleanUp = TRUE; -bool Config::searchEngineFlag = FALSE; -QCString Config::cgiName = "search.cgi"; -QCString Config::cgiURL; -QCString Config::docURL; -QCString Config::docAbsPath; -QCString Config::binAbsPath = "/usr/local/bin/"; -QStrList Config::extDocPathList; +Config *Config::m_instance = 0; + +void ConfigInt::convertStrToVal() +{ + if (!m_valueString.isEmpty()) + { + bool ok; + int val = m_valueString.toInt(&ok); + if (!ok || val<m_minVal || val>m_maxVal) + { + warn_cont("Warning: argument of %s is not a valid number in the range [%d..%d]!\n" + "Using the default of %d!\n",m_name.data(),m_minVal,m_maxVal,m_value); + } + m_value=val; + } +} + +QCString &Config::getString(const char *name) const +{ + ConfigOption *opt = m_dict->find(name); + if (opt==0) + { + err("ConfigOption::getString: Requested unknown option %s!\n",name); + exit(1); + } + else if (opt->kind()!=ConfigOption::O_String) + { + err("ConfigOption::getString: Requested option %s not of string type!\n",name); + exit(1); + } + return *((ConfigString *)opt)->valueRef(); +} + +QStrList &Config::getList(const char *name) const +{ + ConfigOption *opt = m_dict->find(name); + if (opt==0) + { + err("ConfigOption::getList: Requested unknown option %s!\n",name); + exit(1); + } + else if (opt->kind()!=ConfigOption::O_List) + { + err("ConfigOption::getList: Requested option %s not of list type!\n",name); + exit(1); + } + return *((ConfigList *)opt)->valueRef(); +} + +QCString &Config::getEnum(const char *name) const +{ + ConfigOption *opt = m_dict->find(name); + if (opt==0) + { + err("ConfigOption::getEnum: Requested unknown option %s!\n",name); + exit(1); + } + else if (opt->kind()!=ConfigOption::O_Enum) + { + err("ConfigOption::getEnum: Requested option %s not of enum type!\n",name); + exit(1); + } + return *((ConfigEnum *)opt)->valueRef(); +} + +int &Config::getInt(const char *name) const +{ + ConfigOption *opt = m_dict->find(name); + if (opt==0) + { + err("ConfigOption::getInt: Requested unknown option %s!\n",name); + exit(1); + } + else if (opt->kind()!=ConfigOption::O_Int) + { + err("ConfigOption::getInt: Requested option %s not of integer type!\n",name); + exit(1); + } + return *((ConfigInt *)opt)->valueRef(); +} + +bool &Config::getBool(const char *name) const +{ + ConfigOption *opt = m_dict->find(name); + if (opt==0) + { + err("ConfigOption::getInt: Requested unknown option %s!\n",name); + exit(1); + } + else if (opt->kind()!=ConfigOption::O_Bool) + { + err("ConfigOption::getInt: Requested option %s not of integer type!\n",name); + exit(1); + } + return *((ConfigBool *)opt)->valueRef(); +} /* ----------------------------------------------------------------- * @@ -229,6 +197,8 @@ static QCString treeViewWidthString; static QCString maxDotGraphWidthString; static QCString maxDotGraphHeightString; +static Config *config; + /* ----------------------------------------------------------------- */ #undef YY_INPUT @@ -341,6 +311,7 @@ static void readIncludeFile(const char *incName) %x Start %x SkipComment +%x SkipInvalid %x GetString %x GetBool %x GetStrList @@ -351,143 +322,52 @@ static void readIncludeFile(const char *incName) %% <*>\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>"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>"DISTRIBUTE_GROUP_DOC"[ \t]*"=" { BEGIN(GetBool); b=&Config::distributeDocFlag; } -<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>"GENERATE_BUGLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateBugList; } -<Start>"ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; } -<Start>"ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; } -<Start>"MAX_INITIALIZER_LINES"[ \t]*"=" { BEGIN(GetString); s=&maxInitLinesString; s->resize(0); } -<Start>"OPTIMIZE_OUTPUT_FOR_C"[ \t]*"=" { BEGIN(GetBool); b=&Config::optimizeForCFlag; } -<Start>"SHOW_USED_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showUsedFilesFlag; } -<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>"WARN_LOGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::warnLogFile; 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>"FILTER_SOURCE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::filterForSourceFlag; } -<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_CHI"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpChiFlag; } -<Start>"BINARY_TOC"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpTocFlag; } -<Start>"TOC_EXPAND"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpTocExpandFlag; } -<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } -<Start>"ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); } -<Start>"GENERATE_TREEVIEW"[ \t]*"=" { BEGIN(GetBool); b=&Config::ftvHelpFlag; } -<Start>"TREEVIEW_WIDTH"[ \t]*"=" { BEGIN(GetString); s=&treeViewWidthString; s->resize(0); } -<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>"RTF_EXTENSIONS_FILE"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfExtensionsFile; 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>"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>"GENERATE_LEGEND"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLegend; } -<Start>"DOT_CLEANUP"[ \t]*"=" { BEGIN(GetBool); b=&Config::dotCleanUp; } -<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,GetString,GetStrList,GetBool,SkipInvalid>"#" { BEGIN(SkipComment); } +<Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"=" { QCString cmd=yytext; + cmd=cmd.left(cmd.length()-1).stripWhiteSpace(); + ConfigOption *option = config->get(cmd); + if (option==0) // oops not known + { + err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n", + yytext,yyLineNr,yyFileName.data()); + BEGIN(SkipInvalid); + } + else // known tag + { + switch(option->kind()) + { + case ConfigOption::O_Info: + // shouldn't get here! + BEGIN(SkipInvalid); + break; + case ConfigOption::O_List: + l = ((ConfigList *)option)->valueRef(); + l->clear(); + elemStr=""; + BEGIN(GetStrList); + break; + case ConfigOption::O_Enum: + s = ((ConfigEnum *)option)->valueRef(); + s->resize(0); + BEGIN(GetString); + break; + case ConfigOption::O_String: + s = ((ConfigString *)option)->valueRef(); + s->resize(0); + BEGIN(GetString); + break; + case ConfigOption::O_Int: + s = ((ConfigInt *)option)->valueStringRef(); + s->resize(0); + BEGIN(GetString); + break; + case ConfigOption::O_Bool: + b = ((ConfigBool *)option)->valueRef(); + BEGIN(GetBool); + break; + } + } + } <Start>"@INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&includePathList; l->clear(); elemStr=""; } /* include a config file */ <Start>"@INCLUDE"[ \t]*"=" { BEGIN(Include);} @@ -518,7 +398,7 @@ static void readIncludeFile(const char *incName) } <Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d, file %s\n",yytext,yyLineNr,yyFileName.data()); } -<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); } +<GetString,GetBool,SkipInvalid>\n { yyLineNr++; BEGIN(Start); } <GetStrList>\n { yyLineNr++; if (!elemStr.isEmpty()) @@ -537,7 +417,7 @@ static void readIncludeFile(const char *incName) elemStr.resize(0); } <GetString>[^ \"\t\r\n]+ { (*s)+=yytext; } -<GetString,GetStrList>"\"" { lastState=YY_START; +<GetString,GetStrList,SkipInvalid>"\"" { lastState=YY_START; BEGIN(GetQuotedString); tmpString.resize(0); } @@ -561,9 +441,9 @@ static void readIncludeFile(const char *incName) <GetBool>[a-zA-Z]+ { QCString bs=yytext; bs=bs.upper(); - if (bs=="YES") + if (bs=="YES" || bs=="1") *b=TRUE; - else if (bs=="NO") + else if (bs=="NO" || bs=="0") *b=FALSE; else { @@ -587,387 +467,7 @@ static void readIncludeFile(const char *incName) /*@ ---------------------------------------------------------------------------- */ - -void dumpConfig() -{ - printf("# General configuration options\n"); - printf("projectName=`%s'\n",Config::projectName.data()); - printf("projectNumber=`%s'\n",Config::projectNumber.data()); - printf("outputDir=`%s'\n",Config::outputDir.data()); - printf("outputLanguage=`%s'\n",Config::outputLanguage.data()); - printf("extractAllFlag=`%d'\n",Config::extractAllFlag); - printf("extractPrivateFlag=`%d'\n",Config::extractPrivateFlag); - printf("extractStaticFlag=`%d'\n",Config::extractStaticFlag); - printf("hideMemberFlag=`%d'\n",Config::hideMemberFlag); - printf("hideClassFlag=`%d'\n",Config::hideClassFlag); - printf("briefMemDescFlag=`%d'\n",Config::briefMemDescFlag); - printf("repeatBriefFlag=`%d'\n",Config::repeatBriefFlag); - printf("alwaysDetailsFlag=`%d'\n",Config::alwaysDetailsFlag); - printf("fullPathNameFlag=`%d'\n",Config::fullPathNameFlag); - { - char *is=Config::stripFromPath.first(); - while (is) - { - printf("stripFromPath=`%s'\n",is); - is=Config::stripFromPath.next(); - } - } - printf("internalDocsFlag=`%d'\n",Config::internalDocsFlag); - printf("classDiagramFlag=`%d'\n",Config::classDiagramFlag); - printf("sourceBrowseFlag=`%d'\n",Config::sourceBrowseFlag); - printf("inlineSourceFlag=`%d'\n",Config::inlineSourceFlag); - printf("stripCommentsFlag=`%d'\n",Config::stripCommentsFlag); - printf("caseSensitiveNames=`%d'\n",Config::caseSensitiveNames); - printf("hideScopeNames=`%d'\n",Config::hideScopeNames); - printf("verbatimHeaderFlag=`%d'\n",Config::verbatimHeaderFlag); - printf("showIncFileFlag=`%d'\n",Config::showIncFileFlag); - printf("autoBriefFlag=`%d'\n",Config::autoBriefFlag); - printf("inheritDocsFlag=`%d'\n",Config::inheritDocsFlag); - printf("inlineInfoFlag=`%d'\n",Config::inlineInfoFlag); - printf("sortMembersFlag=`%d'\n",Config::sortMembersFlag); - printf("distributeDocFlag=`%d'\n",Config::distributeDocFlag); - printf("tabSize=`%d'\n",Config::tabSize); - { - char *is=Config::sectionFilterList.first(); - while (is) - { - printf("sectionFilterList=`%s'\n",is); - is=Config::sectionFilterList.next(); - } - } - printf("generateTodoList=`%d'\n",Config::generateTodoList); - printf("generateTestList=`%d'\n",Config::generateTestList); - printf("generateBugList=`%d'\n",Config::generateBugList); - { - char *is=Config::aliasList.first(); - while (is) - { - printf("aliasList=`%s'\n",is); - is=Config::aliasList.next(); - } - } - printf("maxInitLines=`%d'\n",Config::maxInitLines); - printf("optimizeForCFlag=`%d'\n",Config::optimizeForCFlag); - printf("showUsedFilesFlag=`%d'\n",Config::showUsedFilesFlag); - printf("# configuration options related to warning and progress messages\n"); - printf("quietFlag=`%d'\n",Config::quietFlag); - printf("warningFlag=`%d'\n",Config::warningFlag); - printf("warningUndocFlag=`%d'\n",Config::warningUndocFlag); - printf("warnFormat=`%s'\n",Config::warnFormat.data()); - printf("warnLogFile=`%s'\n",Config::warnLogFile.data()); - printf("# configuration options related to the input files\n"); - { - char *is=Config::inputSources.first(); - while (is) - { - printf("inputSources=`%s'\n",is); - is=Config::inputSources.next(); - } - } - { - char *is=Config::filePatternList.first(); - while (is) - { - printf("filePatternList=`%s'\n",is); - is=Config::filePatternList.next(); - } - } - printf("recursiveFlag=`%d'\n",Config::recursiveFlag); - { - char *is=Config::excludeSources.first(); - while (is) - { - printf("excludeSources=`%s'\n",is); - is=Config::excludeSources.next(); - } - } - { - char *is=Config::excludePatternList.first(); - while (is) - { - printf("excludePatternList=`%s'\n",is); - is=Config::excludePatternList.next(); - } - } - { - char *is=Config::examplePath.first(); - while (is) - { - printf("examplePath=`%s'\n",is); - is=Config::examplePath.next(); - } - } - { - char *is=Config::examplePatternList.first(); - while (is) - { - printf("examplePatternList=`%s'\n",is); - is=Config::examplePatternList.next(); - } - } - { - char *is=Config::imagePath.first(); - while (is) - { - printf("imagePath=`%s'\n",is); - is=Config::imagePath.next(); - } - } - printf("inputFilter=`%s'\n",Config::inputFilter.data()); - printf("filterForSourceFlag=`%d'\n",Config::filterForSourceFlag); - printf("# configuration options related to the alphabetical class index\n"); - printf("alphaIndexFlag=`%d'\n",Config::alphaIndexFlag); - printf("colsInAlphaIndex=`%d'\n",Config::colsInAlphaIndex); - { - char *is=Config::ignorePrefixList.first(); - while (is) - { - printf("ignorePrefixList=`%s'\n",is); - is=Config::ignorePrefixList.next(); - } - } - printf("# configuration options related to the HTML output\n"); - printf("generateHtml=`%d'\n",Config::generateHtml); - printf("htmlOutputDir=`%s'\n",Config::htmlOutputDir.data()); - printf("headerFile=`%s'\n",Config::headerFile.data()); - printf("footerFile=`%s'\n",Config::footerFile.data()); - printf("htmlStyleSheet=`%s'\n",Config::htmlStyleSheet.data()); - printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag); - printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag); - printf("htmlHelpChiFlag=`%d'\n",Config::htmlHelpChiFlag); - printf("htmlHelpTocFlag=`%d'\n",Config::htmlHelpTocFlag); - printf("htmlHelpTocExpandFlag=`%d'\n",Config::htmlHelpTocExpandFlag); - printf("noIndexFlag=`%d'\n",Config::noIndexFlag); - printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine); - printf("ftvHelpFlag=`%d'\n",Config::ftvHelpFlag); - printf("treeViewWidth=`%d'\n",Config::treeViewWidth); - printf("# configuration options related to the LaTeX output\n"); - printf("generateLatex=`%d'\n",Config::generateLatex); - printf("latexOutputDir=`%s'\n",Config::latexOutputDir.data()); - printf("compactLatexFlag=`%d'\n",Config::compactLatexFlag); - printf("paperType=`%s'\n",Config::paperType.data()); - { - char *is=Config::extraPackageList.first(); - while (is) - { - printf("extraPackageList=`%s'\n",is); - is=Config::extraPackageList.next(); - } - } - printf("latexHeaderFile=`%s'\n",Config::latexHeaderFile.data()); - printf("pdfHyperFlag=`%d'\n",Config::pdfHyperFlag); - printf("usePDFLatexFlag=`%d'\n",Config::usePDFLatexFlag); - printf("latexBatchModeFlag=`%d'\n",Config::latexBatchModeFlag); - printf("# configuration options related to the RTF output\n"); - printf("generateRTF=`%d'\n",Config::generateRTF); - printf("rtfOutputDir=`%s'\n",Config::rtfOutputDir.data()); - printf("compactRTFFlag=`%d'\n",Config::compactRTFFlag); - printf("rtfHyperFlag=`%d'\n",Config::rtfHyperFlag); - printf("rtfStylesheetFile=`%s'\n",Config::rtfStylesheetFile.data()); - printf("rtfExtensionsFile=`%s'\n",Config::rtfExtensionsFile.data()); - printf("# configuration options related to the man page output\n"); - printf("generateMan=`%d'\n",Config::generateMan); - printf("manOutputDir=`%s'\n",Config::manOutputDir.data()); - printf("manExtension=`%s'\n",Config::manExtension.data()); - printf("# Configuration options related to the preprocessor \n"); - printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag); - printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag); - printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag); - printf("searchIncludeFlag=`%d'\n",Config::searchIncludeFlag); - { - char *is=Config::includePath.first(); - while (is) - { - printf("includePath=`%s'\n",is); - is=Config::includePath.next(); - } - } - { - char *is=Config::includeFilePatternList.first(); - while (is) - { - printf("includeFilePatternList=`%s'\n",is); - is=Config::includeFilePatternList.next(); - } - } - { - char *is=Config::predefined.first(); - while (is) - { - printf("predefined=`%s'\n",is); - is=Config::predefined.next(); - } - } - { - char *is=Config::expandAsDefinedList.first(); - while (is) - { - printf("expandAsDefinedList=`%s'\n",is); - is=Config::expandAsDefinedList.next(); - } - } - printf("# Configuration::addtions related to external references \n"); - { - char *is=Config::tagFileList.first(); - while (is) - { - printf("tagFileList=`%s'\n",is); - is=Config::tagFileList.next(); - } - } - printf("genTagFile=`%s'\n",Config::genTagFile.data()); - printf("allExtFlag=`%d'\n",Config::allExtFlag); - printf("perlPath=`%s'\n",Config::perlPath.data()); - printf("# Configuration options related to the dot tool \n"); - printf("haveDotFlag=`%d'\n",Config::haveDotFlag); - printf("classGraphFlag=`%d'\n",Config::classGraphFlag); - printf("collGraphFlag=`%d'\n",Config::collGraphFlag); - printf("includeGraphFlag=`%d'\n",Config::includeGraphFlag); - printf("includedByGraphFlag=`%d'\n",Config::includedByGraphFlag); - printf("gfxHierarchyFlag=`%d'\n",Config::gfxHierarchyFlag); - printf("dotPath=`%s'\n",Config::dotPath.data()); - printf("maxDotGraphWidth=`%d'\n",Config::maxDotGraphWidth); - printf("maxDotGraphHeight=`%d'\n",Config::maxDotGraphHeight); - printf("generateLegend=`%d'\n",Config::generateLegend); - printf("dotCleanUp=`%d'\n",Config::dotCleanUp); - printf("# Configuration::addtions related to the search engine \n"); - printf("searchEngineFlag=`%d'\n",Config::searchEngineFlag); - printf("cgiName=`%s'\n",Config::cgiName.data()); - printf("cgiURL=`%s'\n",Config::cgiURL.data()); - printf("docURL=`%s'\n",Config::docURL.data()); - printf("docAbsPath=`%s'\n",Config::docAbsPath.data()); - printf("binAbsPath=`%s'\n",Config::binAbsPath.data()); - { - char *is=Config::extDocPathList.first(); - while (is) - { - printf("extDocPathList=`%s'\n",is); - is=Config::extDocPathList.next(); - } - } -} - -void Config::init() -{ - Config::projectName.resize(0); - Config::projectNumber.resize(0); - Config::outputDir.resize(0); - Config::outputLanguage = "English"; - Config::extractAllFlag = FALSE; - Config::extractPrivateFlag = FALSE; - Config::extractStaticFlag = FALSE; - Config::hideMemberFlag = FALSE; - Config::hideClassFlag = FALSE; - Config::briefMemDescFlag = TRUE; - Config::repeatBriefFlag = TRUE; - Config::alwaysDetailsFlag = FALSE; - Config::fullPathNameFlag = FALSE; - Config::stripFromPath.clear(); - Config::internalDocsFlag = FALSE; - Config::classDiagramFlag = TRUE; - Config::sourceBrowseFlag = FALSE; - Config::inlineSourceFlag = FALSE; - Config::stripCommentsFlag = TRUE; - Config::caseSensitiveNames = TRUE; - Config::hideScopeNames = FALSE; - Config::verbatimHeaderFlag = TRUE; - Config::showIncFileFlag = TRUE; - Config::autoBriefFlag = FALSE; - Config::inheritDocsFlag = TRUE; - Config::inlineInfoFlag = TRUE; - Config::sortMembersFlag = TRUE; - Config::distributeDocFlag = FALSE; - Config::tabSize = 8; - Config::sectionFilterList.clear(); - Config::generateTodoList = TRUE; - Config::generateTestList = TRUE; - Config::generateBugList = TRUE; - Config::aliasList.clear(); - Config::maxInitLines = 30; - Config::optimizeForCFlag = FALSE; - Config::showUsedFilesFlag = TRUE; - Config::quietFlag = FALSE; - Config::warningFlag = TRUE; - Config::warningUndocFlag = TRUE; - Config::warnFormat = "$file:$line: $text"; - Config::warnLogFile.resize(0); - Config::inputSources.clear(); - Config::filePatternList.clear(); - Config::recursiveFlag = FALSE; - Config::excludeSources.clear(); - Config::excludePatternList.clear(); - Config::examplePath.clear(); - Config::examplePatternList.clear(); - Config::imagePath.clear(); - Config::inputFilter.resize(0); - Config::filterForSourceFlag = FALSE; - Config::alphaIndexFlag = FALSE; - Config::colsInAlphaIndex = 5; - Config::ignorePrefixList.clear(); - Config::generateHtml = TRUE; - Config::htmlOutputDir = "html"; - Config::headerFile.resize(0); - Config::footerFile.resize(0); - Config::htmlStyleSheet.resize(0); - Config::htmlAlignMemberFlag = TRUE; - Config::htmlHelpFlag = FALSE; - Config::htmlHelpChiFlag = FALSE; - Config::htmlHelpTocFlag = FALSE; - Config::htmlHelpTocExpandFlag = FALSE; - Config::noIndexFlag = FALSE; - Config::enumValuesPerLine = 4; - Config::ftvHelpFlag = FALSE; - Config::treeViewWidth = 250; - Config::generateLatex = TRUE; - Config::latexOutputDir = "latex"; - Config::compactLatexFlag = FALSE; - Config::paperType = "a4wide"; - Config::extraPackageList.clear(); - Config::latexHeaderFile.resize(0); - Config::pdfHyperFlag = FALSE; - Config::usePDFLatexFlag = FALSE; - Config::latexBatchModeFlag = FALSE; - Config::generateRTF = TRUE; - Config::rtfOutputDir = "rtf"; - Config::compactRTFFlag = FALSE; - Config::rtfHyperFlag = FALSE; - Config::rtfStylesheetFile.resize(0); - Config::rtfExtensionsFile.resize(0); - Config::generateMan = TRUE; - Config::manOutputDir = "man"; - Config::manExtension = ".3"; - Config::preprocessingFlag = TRUE; - Config::macroExpansionFlag = FALSE; - Config::onlyPredefinedFlag = FALSE; - Config::searchIncludeFlag = TRUE; - Config::includePath.clear(); - Config::includeFilePatternList.clear(); - Config::predefined.clear(); - Config::expandAsDefinedList.clear(); - Config::tagFileList.clear(); - Config::genTagFile.resize(0); - Config::allExtFlag = FALSE; - Config::perlPath = "/usr/bin/perl"; - Config::haveDotFlag = FALSE; - Config::classGraphFlag = TRUE; - Config::collGraphFlag = TRUE; - Config::includeGraphFlag = TRUE; - Config::includedByGraphFlag = TRUE; - Config::gfxHierarchyFlag = TRUE; - Config::dotPath.resize(0); - Config::maxDotGraphWidth = 1024; - Config::maxDotGraphHeight = 1024; - Config::generateLegend = TRUE; - Config::dotCleanUp = TRUE; - Config::searchEngineFlag = FALSE; - Config::cgiName = "search.cgi"; - Config::cgiURL.resize(0); - Config::docURL.resize(0); - Config::docAbsPath.resize(0); - Config::binAbsPath = "/usr/local/bin/"; - Config::extDocPathList.clear(); -} - +#if 0 static void writeBoolValue(QTextStream &t,bool v) { if (v) t << "YES"; else t << "NO"; @@ -1010,8 +510,9 @@ static void writeStringList(QTextStream &t,QStrList &l) if (p) t << " \\" << endl; } } +#endif -void writeTemplateConfig(QFile *f,bool sl) +void Config::writeTemplate(QFile *f,bool sl) { QTextStream t(f); #ifdef DOXYWIZARD @@ -1030,1553 +531,21 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# TAG += value [value, ...]\n"; t << "# Values that contain spaces should be placed between quotes (\" \")\n"; } - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# General configuration options\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \n"; - t << "# by quotes) that should identify the project. \n"; - t << "\n"; - } - t << "PROJECT_NAME = "; - writeStringValue(t,Config::projectName); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The PROJECT_NUMBER tag can be used to enter a project or revision number. \n"; - t << "# This could be handy for archiving the generated documentation or \n"; - t << "# if some version control system is used.\n"; - t << "\n"; - } - t << "PROJECT_NUMBER = "; - writeStringValue(t,Config::projectNumber); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \n"; - t << "# base path where the generated documentation will be put. \n"; - t << "# If a relative path is entered, it will be relative to the location \n"; - t << "# where doxygen was started. If left blank the current directory will be used.\n"; - t << "\n"; - } - t << "OUTPUT_DIRECTORY = "; - writeStringValue(t,Config::outputDir); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The OUTPUT_LANGUAGE tag is used to specify the language in which all \n"; - t << "# documentation generated by doxygen is written. Doxygen will use this \n"; - t << "# information to generate all constant output in the proper language. \n"; - t << "# The default language is English, other supported languages are: \n"; - t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"; - t << "# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, \n"; - t << "# Polish, Portuguese and Slovene.\n"; - t << "\n"; - } - t << "OUTPUT_LANGUAGE = "; - writeStringValue(t,Config::outputLanguage); - t << "\n"; - if (!sl) + ConfigOption *option = m_options->first(); + while (option) { - t << "\n"; - t << "# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \n"; - t << "# documentation are documented, even if no documentation was available. \n"; - t << "# Private class members and static file members will be hidden unless \n"; - t << "# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES \n"; - t << "\n"; + option->writeTemplate(t,sl); + option = m_options->next(); } - t << "EXTRACT_ALL = "; - writeBoolValue(t,Config::extractAllFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the EXTRACT_PRIVATE tag is set to YES all private members of a class \n"; - t << "# will be included in the documentation. \n"; - t << "\n"; - } - t << "EXTRACT_PRIVATE = "; - writeBoolValue(t,Config::extractPrivateFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the EXTRACT_STATIC tag is set to YES all static members of a file \n"; - t << "# will be included in the documentation. \n"; - t << "\n"; - } - t << "EXTRACT_STATIC = "; - writeBoolValue(t,Config::extractStaticFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \n"; - t << "# undocumented members of documented classes, files or namespaces. \n"; - t << "# If set to NO (the default) these members will be included in the \n"; - t << "# various overviews, but no documentation section is generated. \n"; - t << "# This option has no effect if EXTRACT_ALL is enabled. \n"; - t << "\n"; - } - t << "HIDE_UNDOC_MEMBERS = "; - writeBoolValue(t,Config::hideMemberFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \n"; - t << "# undocumented classes that are normally visible in the class hierarchy. \n"; - t << "# If set to NO (the default) these class will be included in the various \n"; - t << "# overviews. This option has no effect if EXTRACT_ALL is enabled. \n"; - t << "\n"; - } - t << "HIDE_UNDOC_CLASSES = "; - writeBoolValue(t,Config::hideClassFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n"; - t << "# include brief member descriptions after the members that are listed in \n"; - t << "# the file and class documentation (similar to JavaDoc). \n"; - t << "# Set to NO to disable this. \n"; - t << "\n"; - } - t << "BRIEF_MEMBER_DESC = "; - writeBoolValue(t,Config::briefMemDescFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \n"; - t << "# the brief description of a member or function before the detailed description. \n"; - t << "# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \n"; - t << "# brief descriptions will be completely suppressed. \n"; - t << "\n"; - } - t << "REPEAT_BRIEF = "; - writeBoolValue(t,Config::repeatBriefFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n"; - t << "# Doxygen will generate a detailed section even if there is only a brief \n"; - t << "# description. \n"; - t << "\n"; - } - t << "ALWAYS_DETAILED_SEC = "; - writeBoolValue(t,Config::alwaysDetailsFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \n"; - t << "# path before files name in the file list and in the header files. If set \n"; - t << "# to NO the shortest path that makes the file name unique will be used. \n"; - t << "\n"; - } - t << "FULL_PATH_NAMES = "; - writeBoolValue(t,Config::fullPathNameFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \n"; - t << "# can be used to strip a user defined part of the path. Stripping is \n"; - t << "# only done if one of the specified strings matches the left-hand part of \n"; - t << "# the path. It is allowed to use relative paths in the argument list.\n"; - t << "\n"; - } - t << "STRIP_FROM_PATH = "; - writeStringList(t,Config::stripFromPath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The INTERNAL_DOCS tag determines if documentation \n"; - t << "# that is typed after a \\internal command is included. If the tag is set \n"; - t << "# to NO (the default) then the documentation will be excluded. \n"; - t << "# Set it to YES to include the internal documentation. \n"; - t << "\n"; - } - t << "INTERNAL_DOCS = "; - writeBoolValue(t,Config::internalDocsFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \n"; - t << "# generate a class diagram (in Html and LaTeX) for classes with base or \n"; - t << "# super classes. Setting the tag to NO turns the diagrams off. \n"; - t << "\n"; - } - t << "CLASS_DIAGRAMS = "; - writeBoolValue(t,Config::classDiagramFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the SOURCE_BROWSER tag is set to YES then a list of source files will \n"; - t << "# be generated. Documented entities will be cross-referenced with these sources. \n"; - t << "\n"; - } - t << "SOURCE_BROWSER = "; - writeBoolValue(t,Config::sourceBrowseFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# Setting the INLINE_SOURCES tag to YES will include the body \n"; - t << "# of functions and classes directly in the documentation. \n"; - t << "\n"; - } - t << "INLINE_SOURCES = "; - writeBoolValue(t,Config::inlineSourceFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"; - t << "# doxygen to hide any special comment blocks from generated source code \n"; - t << "# fragments. Normal C and C++ comments will always remain visible. \n"; - t << "\n"; - } - t << "STRIP_CODE_COMMENTS = "; - writeBoolValue(t,Config::stripCommentsFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"; - t << "# file names in lower case letters. If set to YES upper case letters are also \n"; - t << "# allowed. This is useful if you have classes or files whose names only differ \n"; - t << "# in case and if your file system supports case sensitive file names. Windows \n"; - t << "# users are adviced to set this option to NO.\n"; - t << "\n"; - } - t << "CASE_SENSE_NAMES = "; - writeBoolValue(t,Config::caseSensitiveNames); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen \n"; - t << "# will show members with their full class and namespace scopes in the \n"; - t << "# documentation. If set to YES the scope will be hidden. \n"; - t << "\n"; - } - t << "HIDE_SCOPE_NAMES = "; - writeBoolValue(t,Config::hideScopeNames); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen \n"; - t << "# will generate a verbatim copy of the header file for each class for \n"; - t << "# which an include is specified. Set to NO to disable this. \n"; - t << "\n"; - } - t << "VERBATIM_HEADERS = "; - writeBoolValue(t,Config::verbatimHeaderFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \n"; - t << "# will put list of the files that are included by a file in the documentation \n"; - t << "# of that file. \n"; - t << "\n"; - } - t << "SHOW_INCLUDE_FILES = "; - writeBoolValue(t,Config::showIncFileFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \n"; - t << "# will interpret the first line (until the first dot) of a JavaDoc-style \n"; - t << "# comment as the brief description. If set to NO, the JavaDoc \n"; - t << "# comments will behave just like the Qt-style comments (thus requiring an \n"; - t << "# explict @brief command for a brief description. \n"; - t << "\n"; - } - t << "JAVADOC_AUTOBRIEF = "; - writeBoolValue(t,Config::autoBriefFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \n"; - t << "# member inherits the documentation from any documented member that it \n"; - t << "# reimplements. \n"; - t << "\n"; - } - t << "INHERIT_DOCS = "; - writeBoolValue(t,Config::inheritDocsFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] \n"; - t << "# is inserted in the documentation for inline members. \n"; - t << "\n"; - } - t << "INLINE_INFO = "; - writeBoolValue(t,Config::inlineInfoFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen \n"; - t << "# will sort the (detailed) documentation of file and class members \n"; - t << "# alphabetically by member name. If set to NO the members will appear in \n"; - t << "# declaration order. \n"; - t << "\n"; - } - t << "SORT_MEMBER_DOCS = "; - writeBoolValue(t,Config::sortMembersFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n"; - t << "# tag is set to YES, then doxygen will reuse the documentation of the first \n"; - t << "# member in the group (if any) for the other members of the group. By default \n"; - t << "# all members of a group must be documented explicitly.\n"; - t << "\n"; - } - t << "DISTRIBUTE_GROUP_DOC = "; - writeBoolValue(t,Config::distributeDocFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab. \n"; - t << "# Doxygen uses this value to replace tabs by spaces in code fragments. \n"; - t << "\n"; - } - t << "TAB_SIZE = "; - writeIntValue(t,Config::tabSize); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The ENABLE_SECTIONS tag can be used to enable conditional \n"; - t << "# documentation sections, marked by \\if sectionname ... \\endif. \n"; - t << "\n"; - } - t << "ENABLED_SECTIONS = "; - writeStringList(t,Config::sectionFilterList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The GENERATE_TODOLIST tag can be used to enable (YES) or \n"; - t << "# disable (NO) the todo list. This list is created by putting \\todo \n"; - t << "# commands in the documentation.\n"; - t << "\n"; - } - t << "GENERATE_TODOLIST = "; - writeBoolValue(t,Config::generateTodoList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The GENERATE_TESTLIST tag can be used to enable (YES) or \n"; - t << "# disable (NO) the test list. This list is created by putting \\test \n"; - t << "# commands in the documentation.\n"; - t << "\n"; - } - t << "GENERATE_TESTLIST = "; - writeBoolValue(t,Config::generateTestList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The GENERATE_BUGLIST tag can be used to enable (YES) or \n"; - t << "# disable (NO) the bug list. This list is created by putting \\bug \n"; - t << "# commands in the documentation.\n"; - t << "\n"; - } - t << "GENERATE_BUGLIST = "; - writeBoolValue(t,Config::generateBugList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# This tag can be used to specify a number of aliases that acts \n"; - t << "# as commands in the documentation. An alias has the form \"name=value\". \n"; - t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"; - t << "# put the command \\sideeffect (or @sideeffect) in the documentation, which \n"; - t << "# will result in a user defined paragraph with heading \"Side Effects:\". \n"; - t << "# You can put \\n's in the value part of an alias to insert newlines. \n"; - t << "\n"; - } - t << "ALIASES = "; - writeStringList(t,Config::aliasList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The MAX_INITIALIZER_LINES tag determines the maximum number of lines \n"; - t << "# the initial value of a variable or define consist of for it to appear in \n"; - t << "# the documentation. If the initializer consists of more lines than specified \n"; - t << "# here it will be hidden. Use a value of 0 to hide initializers completely. \n"; - t << "# The appearance of the initializer of individual variables and defines in the \n"; - t << "# documentation can be controlled using \\showinitializer or \\hideinitializer \n"; - t << "# command in the documentation regardless of this setting. \n"; - t << "\n"; - } - t << "MAX_INITIALIZER_LINES = "; - writeIntValue(t,Config::maxInitLines); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources \n"; - t << "# only. Doxygen will then generate output that is more tailored for C. \n"; - t << "# For instance some of the names that are used will be different. The list \n"; - t << "# of all members will be omitted, etc. \n"; - t << "\n"; - } - t << "OPTIMIZE_OUTPUT_FOR_C = "; - writeBoolValue(t,Config::optimizeForCFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n"; - t << "# at the bottom of the documentation of classes and structs. If set to YES the \n"; - t << "# list will mention the files that were used to generate the documentation. \n"; - t << "\n"; - } - t << "SHOW_USED_FILES = "; - writeBoolValue(t,Config::showUsedFilesFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to warning and progress messages\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The QUIET tag can be used to turn on/off the messages that are generated \n"; - t << "# by doxygen. Possible values are YES and NO. If left blank NO is used. \n"; - t << "\n"; - } - t << "QUIET = "; - writeBoolValue(t,Config::quietFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The WARNINGS tag can be used to turn on/off the warning messages that are \n"; - t << "# generated by doxygen. Possible values are YES and NO. If left blank \n"; - t << "# NO is used. \n"; - t << "\n"; - } - t << "WARNINGS = "; - writeBoolValue(t,Config::warningFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings \n"; - t << "# for undocumented members. If EXTRACT_ALL is set to YES then this flag will \n"; - t << "# automatically be disabled. \n"; - t << "\n"; - } - t << "WARN_IF_UNDOCUMENTED = "; - writeBoolValue(t,Config::warningUndocFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The WARN_FORMAT tag determines the format of the warning messages that \n"; - t << "# doxygen can produce. The string should contain the $file, $line, and $text \n"; - t << "# tags, which will be replaced by the file and line number from which the \n"; - t << "# warning originated and the warning text. \n"; - t << "\n"; - } - t << "WARN_FORMAT = "; - writeStringValue(t,Config::warnFormat); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The WARN_LOGFILE tag can be used to specify a file to which warning \n"; - t << "# and error messages should be written. If left blank the output is written \n"; - t << "# to stderr. \n"; - t << "\n"; - } - t << "WARN_LOGFILE = "; - writeStringValue(t,Config::warnLogFile); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the input files\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The INPUT tag can be used to specify the files and/or directories that contain \n"; - t << "# documented source files. You may enter file names like \"myfile.cpp\" or \n"; - t << "# directories like \"/usr/src/myproject\". Separate the files or directories \n"; - t << "# with spaces. \n"; - t << "\n"; - } - t << "INPUT = "; - writeStringList(t,Config::inputSources); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the value of the INPUT tag contains directories, you can use the \n"; - t << "# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"; - t << "# and *.h) to filter out the source-files in the directories. If left \n"; - t << "# blank all files are included. \n"; - t << "\n"; - } - t << "FILE_PATTERNS = "; - writeStringList(t,Config::filePatternList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The RECURSIVE tag can be used to turn specify whether or not subdirectories \n"; - t << "# should be searched for input files as well. Possible values are YES and NO. \n"; - t << "# If left blank NO is used. \n"; - t << "\n"; - } - t << "RECURSIVE = "; - writeBoolValue(t,Config::recursiveFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The EXCLUDE tag can be used to specify files and/or directories that should \n"; - t << "# excluded from the INPUT source files. This way you can easily exclude a \n"; - t << "# subdirectory from a directory tree whose root is specified with the INPUT tag. \n"; - t << "\n"; - } - t << "EXCLUDE = "; - writeStringList(t,Config::excludeSources); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the value of the INPUT tag contains directories, you can use the \n"; - t << "# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \n"; - t << "# certain files from those directories. \n"; - t << "\n"; - } - t << "EXCLUDE_PATTERNS = "; - writeStringList(t,Config::excludePatternList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The EXAMPLE_PATH tag can be used to specify one or more files or \n"; - t << "# directories that contain example code fragments that are included (see \n"; - t << "# the \\include command). \n"; - t << "\n"; - } - t << "EXAMPLE_PATH = "; - writeStringList(t,Config::examplePath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the value of the EXAMPLE_PATH tag contains directories, you can use the \n"; - t << "# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"; - t << "# and *.h) to filter out the source-files in the directories. If left \n"; - t << "# blank all files are included. \n"; - t << "\n"; - } - t << "EXAMPLE_PATTERNS = "; - writeStringList(t,Config::examplePatternList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The IMAGE_PATH tag can be used to specify one or more files or \n"; - t << "# directories that contain image that are included in the documentation (see \n"; - t << "# the \\image command). \n"; - t << "\n"; - } - t << "IMAGE_PATH = "; - writeStringList(t,Config::imagePath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should \n"; - t << "# invoke to filter for each input file. Doxygen will invoke the filter program \n"; - t << "# by executing (via popen()) the command <filter> <input-file>, where <filter> \n"; - t << "# is the value of the INPUT_FILTER tag, and <input-file> is the name of an \n"; - t << "# input file. Doxygen will then use the output that the filter program writes \n"; - t << "# to standard output. \n"; - t << "\n"; - } - t << "INPUT_FILTER = "; - writeStringValue(t,Config::inputFilter); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \n"; - t << "# INPUT_FILTER) will be used to filter the input files when producing source \n"; - t << "# files to browse. \n"; - t << "\n"; - } - t << "FILTER_SOURCE_FILES = "; - writeBoolValue(t,Config::filterForSourceFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the alphabetical class index\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index \n"; - t << "# of all compounds will be generated. Enable this if the project \n"; - t << "# contains a lot of classes, structs, unions or interfaces. \n"; - t << "\n"; - } - t << "ALPHABETICAL_INDEX = "; - writeBoolValue(t,Config::alphaIndexFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then \n"; - t << "# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns \n"; - 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 = "; - writeIntValue(t,Config::colsInAlphaIndex); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# In case all classes in a project start with a common prefix, all \n"; - t << "# classes will be put under the same header in the alphabetical index. \n"; - t << "# The IGNORE_PREFIX tag can be used to specify one or more prefixes that \n"; - t << "# should be ignored while generating the index headers. \n"; - t << "\n"; - } - t << "IGNORE_PREFIX = "; - writeStringList(t,Config::ignorePrefixList); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the HTML output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_HTML tag is set to YES (the default) Doxygen will \n"; - t << "# generate HTML output. \n"; - t << "\n"; - } - t << "GENERATE_HTML = "; - writeBoolValue(t,Config::generateHtml); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. \n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; - t << "# put in front of it. If left blank `html' will be used as the default path. \n"; - t << "\n"; - } - t << "HTML_OUTPUT = "; - writeStringValue(t,Config::htmlOutputDir); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_HEADER tag can be used to specify a personal HTML header for \n"; - t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; - t << "# standard header.\n"; - t << "\n"; - } - t << "HTML_HEADER = "; - writeStringValue(t,Config::headerFile); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_FOOTER tag can be used to specify a personal HTML footer for \n"; - t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; - t << "# standard footer.\n"; - t << "\n"; - } - t << "HTML_FOOTER = "; - writeStringValue(t,Config::footerFile); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_STYLESHEET tag can be used to specify a user defined cascading \n"; - t << "# style sheet that is used by each HTML page. It can be used to \n"; - t << "# fine-tune the look of the HTML output. If the tag is left blank doxygen \n"; - t << "# will generate a default style sheet \n"; - t << "\n"; - } - t << "HTML_STYLESHEET = "; - writeStringValue(t,Config::htmlStyleSheet); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, \n"; - t << "# files or namespaces will be aligned in HTML using tables. If set to \n"; - t << "# NO a bullet list will be used. \n"; - t << "\n"; - } - t << "HTML_ALIGN_MEMBERS = "; - writeBoolValue(t,Config::htmlAlignMemberFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_HTMLHELP tag is set to YES, additional index files \n"; - t << "# will be generated that can be used as input for tools like the \n"; - t << "# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) \n"; - t << "# of the generated HTML documentation. \n"; - t << "\n"; - } - t << "GENERATE_HTMLHELP = "; - writeBoolValue(t,Config::htmlHelpFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n"; - t << "# controls if a separate .chi index file is generated (YES) or that \n"; - t << "# it should be included in the master .chm file (NO).\n"; - t << "\n"; - } - t << "GENERATE_CHI = "; - writeBoolValue(t,Config::htmlHelpChiFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n"; - t << "# controls whether a binary table of contents is generated (YES) or a \n"; - t << "# normal table of contents (NO) in the .chm file.\n"; - t << "\n"; - } - t << "BINARY_TOC = "; - writeBoolValue(t,Config::htmlHelpTocFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The TOC_EXPAND flag can be set YES to add extra items for group members \n"; - t << "# to the contents of the Html help documentation and to the tree view. \n"; - t << "\n"; - } - t << "TOC_EXPAND = "; - writeBoolValue(t,Config::htmlHelpTocExpandFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n"; - t << "# top of each HTML page. The value NO (the default) enables the index and \n"; - t << "# the value YES disables it. \n"; - t << "\n"; - } - t << "DISABLE_INDEX = "; - writeBoolValue(t,Config::noIndexFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# This tag can be used to set the number of enum values (range [1..20]) \n"; - t << "# that doxygen will group on one line in the generated HTML documentation. \n"; - t << "\n"; - } - t << "ENUM_VALUES_PER_LINE = "; - writeIntValue(t,Config::enumValuesPerLine); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\n"; - t << "# generated containing a tree-like index structure (just like the one that \n"; - t << "# is generated for HTML Help). For this to work a browser that supports \n"; - t << "# JavaScript and frames is required (for instance Netscape 4.0+ \n"; - t << "# or Internet explorer 4.0+). \n"; - t << "\n"; - } - t << "GENERATE_TREEVIEW = "; - writeBoolValue(t,Config::ftvHelpFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be \n"; - t << "# used to set the initial width (in pixels) of the frame in which the tree \n"; - t << "# is shown. \n"; - t << "\n"; - } - t << "TREEVIEW_WIDTH = "; - writeIntValue(t,Config::treeViewWidth); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the LaTeX output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \n"; - t << "# generate Latex output. \n"; - t << "\n"; - } - t << "GENERATE_LATEX = "; - writeBoolValue(t,Config::generateLatex); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. \n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; - t << "# put in front of it. If left blank `latex' will be used as the default path. \n"; - t << "\n"; - } - t << "LATEX_OUTPUT = "; - writeStringValue(t,Config::latexOutputDir); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact \n"; - t << "# LaTeX documents. This may be useful for small projects and may help to \n"; - t << "# save some trees in general. \n"; - t << "\n"; - } - t << "COMPACT_LATEX = "; - writeBoolValue(t,Config::compactLatexFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The PAPER_TYPE tag can be used to set the paper type that is used \n"; - t << "# by the printer. Possible values are: a4, a4wide, letter, legal and \n"; - t << "# executive. If left blank a4wide will be used. \n"; - t << "\n"; - } - t << "PAPER_TYPE = "; - writeStringValue(t,Config::paperType); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX \n"; - t << "# packages that should be included in the LaTeX output. \n"; - t << "\n"; - } - t << "EXTRA_PACKAGES = "; - writeStringList(t,Config::extraPackageList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \n"; - t << "# the generated latex document. The header should contain everything until \n"; - t << "# the first chapter. If it is left blank doxygen will generate a \n"; - t << "# standard header. Notice: only use this tag if you know what you are doing! \n"; - t << "\n"; - } - t << "LATEX_HEADER = "; - writeStringValue(t,Config::latexHeaderFile); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated \n"; - t << "# is prepared for conversion to pdf (using ps2pdf). The pdf file will \n"; - t << "# contain links (just like the HTML output) instead of page references \n"; - t << "# This makes the output suitable for online browsing using a pdf viewer. \n"; - t << "\n"; - } - t << "PDF_HYPERLINKS = "; - writeBoolValue(t,Config::pdfHyperFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of \n"; - t << "# plain latex in the generated Makefile. Set this option to YES to get a \n"; - t << "# higher quality PDF documentation. \n"; - t << "\n"; - } - t << "USE_PDFLATEX = "; - writeBoolValue(t,Config::usePDFLatexFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\\\batchmode. \n"; - t << "# command to the generated LaTeX files. This will instruct LaTeX to keep \n"; - t << "# running if errors occur, instead of asking the user for help. \n"; - t << "# This option is also used when generating formulas in HTML. \n"; - t << "\n"; - } - t << "LATEX_BATCHMODE = "; - writeBoolValue(t,Config::latexBatchModeFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the RTF output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n"; - t << "# The RTF output is optimised for Word 97 and may not look very pretty with \n"; - t << "# other RTF readers or editors.\n"; - t << "\n"; - } - t << "GENERATE_RTF = "; - writeBoolValue(t,Config::generateRTF); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. \n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; - t << "# put in front of it. If left blank `rtf' will be used as the default path. \n"; - t << "\n"; - } - t << "RTF_OUTPUT = "; - writeStringValue(t,Config::rtfOutputDir); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the COMPACT_RTF tag is set to YES Doxygen generates more compact \n"; - t << "# RTF documents. This may be useful for small projects and may help to \n"; - t << "# save some trees in general. \n"; - t << "\n"; - } - t << "COMPACT_RTF = "; - writeBoolValue(t,Config::compactRTFFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated \n"; - t << "# will contain hyperlink fields. The RTF file will \n"; - t << "# contain links (just like the HTML output) instead of page references. \n"; - t << "# This makes the output suitable for online browsing using a WORD or other. \n"; - t << "# programs which support those fields. \n"; - t << "# Note: wordpad (write) and others do not support links. \n"; - t << "\n"; - } - t << "RTF_HYPERLINKS = "; - writeBoolValue(t,Config::rtfHyperFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# Load stylesheet definitions from file. Syntax is similar to doxygen's \n"; - t << "# config file, i.e. a series of assigments. You only have to provide \n"; - t << "# replacements, missing definitions are set to their default value. \n"; - t << "\n"; - } - t << "RTF_STYLESHEET_FILE = "; - writeStringValue(t,Config::rtfStylesheetFile); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# Set optional variables used in the generation of an rtf document. \n"; - t << "# Syntax is similar to doxygen's config file.\n"; - t << "\n"; - } - t << "RTF_EXTENSIONS_FILE = "; - writeStringValue(t,Config::rtfExtensionsFile); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the man page output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n"; - t << "# generate man pages \n"; - t << "\n"; - } - t << "GENERATE_MAN = "; - writeBoolValue(t,Config::generateMan); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The MAN_OUTPUT tag is used to specify where the man pages will be put. \n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; - t << "# put in front of it. If left blank `man' will be used as the default path. \n"; - t << "\n"; - } - t << "MAN_OUTPUT = "; - writeStringValue(t,Config::manOutputDir); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The MAN_EXTENSION tag determines the extension that is added to \n"; - t << "# the generated man pages (default is the subroutine's section .3) \n"; - t << "\n"; - } - t << "MAN_EXTENSION = "; - writeStringValue(t,Config::manExtension); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the preprocessor \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will \n"; - t << "# evaluate all C-preprocessor directives found in the sources and include \n"; - t << "# files. \n"; - t << "\n"; - } - t << "ENABLE_PREPROCESSING = "; - writeBoolValue(t,Config::preprocessingFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n"; - t << "# names in the source code. If set to NO (the default) only conditional \n"; - t << "# compilation will be performed. Macro expansion can be done in a controlled \n"; - t << "# way by setting EXPAND_ONLY_PREDEF to YES. \n"; - t << "\n"; - } - t << "MACRO_EXPANSION = "; - writeBoolValue(t,Config::macroExpansionFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n"; - t << "# then the macro expansion is limited to the macros specified with the \n"; - t << "# PREDEFINED and EXPAND_AS_PREDEFINED tags. \n"; - t << "\n"; - } - t << "EXPAND_ONLY_PREDEF = "; - writeBoolValue(t,Config::onlyPredefinedFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \n"; - t << "# in the INCLUDE_PATH (see below) will be search if a #include is found. \n"; - t << "\n"; - } - t << "SEARCH_INCLUDES = "; - writeBoolValue(t,Config::searchIncludeFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The INCLUDE_PATH tag can be used to specify one or more directories that \n"; - t << "# contain include files that are not input files but should be processed by \n"; - t << "# the preprocessor. \n"; - t << "\n"; - } - t << "INCLUDE_PATH = "; - writeStringList(t,Config::includePath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard \n"; - t << "# patterns (like *.h and *.hpp) to filter out the header-files in the \n"; - t << "# directories. If left blank, the patterns specified with FILE_PATTERNS will \n"; - t << "# be used. \n"; - t << "\n"; - } - t << "INCLUDE_FILE_PATTERNS = "; - writeStringList(t,Config::includeFilePatternList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The PREDEFINED tag can be used to specify one or more macro names that \n"; - t << "# are defined before the preprocessor is started (similar to the -D option of \n"; - t << "# gcc). The argument of the tag is a list of macros of the form: name \n"; - t << "# or name=definition (no spaces). If the definition and the = are \n"; - t << "# omitted =1 is assumed. \n"; - t << "\n"; - } - t << "PREDEFINED = "; - writeStringList(t,Config::predefined); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n"; - t << "# this tag can be used to specify a list of macro names that should be expanded. \n"; - t << "# The macro definition that is found in the sources will be used. \n"; - t << "# Use the PREDEFINED tag if you want to use a different macro definition. \n"; - t << "\n"; - } - t << "EXPAND_AS_DEFINED = "; - writeStringList(t,Config::expandAsDefinedList); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration::addtions related to external references \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The TAGFILES tag can be used to specify one or more tagfiles. \n"; - t << "\n"; - } - t << "TAGFILES = "; - writeStringList(t,Config::tagFileList); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# When a file name is specified after GENERATE_TAGFILE, doxygen will create \n"; - t << "# a tag file that is based on the input files it reads. \n"; - t << "\n"; - } - t << "GENERATE_TAGFILE = "; - writeStringValue(t,Config::genTagFile); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the ALLEXTERNALS tag is set to YES all external classes will be listed \n"; - t << "# in the class index. If set to NO only the inherited external classes \n"; - t << "# will be listed. \n"; - t << "\n"; - } - t << "ALLEXTERNALS = "; - writeBoolValue(t,Config::allExtFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The PERL_PATH should be the absolute path and name of the perl script \n"; - t << "# interpreter (i.e. the result of `which perl'). \n"; - t << "\n"; - } - t << "PERL_PATH = "; - writeStringValue(t,Config::perlPath); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the dot tool \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \n"; - t << "# available from the path. This tool is part of Graphviz, a graph visualization \n"; - t << "# toolkit from AT&T and Lucent Bell Labs. The other options in this section \n"; - t << "# have no effect if this option is set to NO (the default) \n"; - t << "\n"; - } - t << "HAVE_DOT = "; - writeBoolValue(t,Config::haveDotFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \n"; - t << "# will generate a graph for each documented class showing the direct and \n"; - t << "# indirect inheritance relations. Setting this tag to YES will force the \n"; - t << "# the CLASS_DIAGRAMS tag to NO.\n"; - t << "\n"; - } - t << "CLASS_GRAPH = "; - writeBoolValue(t,Config::classGraphFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen \n"; - t << "# will generate a graph for each documented class showing the direct and \n"; - t << "# indirect implementation dependencies (inheritance, containment, and \n"; - t << "# class references variables) of the class with other documented classes. \n"; - t << "\n"; - } - t << "COLLABORATION_GRAPH = "; - writeBoolValue(t,Config::collGraphFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to \n"; - t << "# YES then doxygen will generate a graph for each documented file showing \n"; - t << "# the direct and indirect include dependencies of the file with other \n"; - t << "# documented files. \n"; - t << "\n"; - } - t << "INCLUDE_GRAPH = "; - writeBoolValue(t,Config::includeGraphFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to \n"; - t << "# YES then doxygen will generate a graph for each documented header file showing \n"; - t << "# the documented files that directly or indirectly include this file \n"; - t << "\n"; - } - t << "INCLUDED_BY_GRAPH = "; - writeBoolValue(t,Config::includedByGraphFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n"; - t << "# will graphical hierarchy of all classes instead of a textual one. \n"; - t << "\n"; - } - t << "GRAPHICAL_HIERARCHY = "; - writeBoolValue(t,Config::gfxHierarchyFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The tag DOT_PATH can be used to specify the path where the dot tool can be \n"; - t << "# found. If left blank, it is assumed the dot tool can be found on the path. \n"; - t << "\n"; - } - t << "DOT_PATH = "; - writeStringValue(t,Config::dotPath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width \n"; - t << "# (in pixels) of the graphs generated by dot. If a graph becomes larger than \n"; - t << "# this value, doxygen will try to truncate the graph, so that it fits within \n"; - t << "# the specified constraint. Beware that most browsers cannot cope with very \n"; - t << "# large images. \n"; - t << "\n"; - } - t << "MAX_DOT_GRAPH_WIDTH = "; - writeIntValue(t,Config::maxDotGraphWidth); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height \n"; - t << "# (in pixels) of the graphs generated by dot. If a graph becomes larger than \n"; - t << "# this value, doxygen will try to truncate the graph, so that it fits within \n"; - t << "# the specified constraint. Beware that most browsers cannot cope with very \n"; - t << "# large images. \n"; - t << "\n"; - } - t << "MAX_DOT_GRAPH_HEIGHT = "; - writeIntValue(t,Config::maxDotGraphHeight); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \n"; - t << "# generate a legend page explaining the meaning of the various boxes and \n"; - t << "# arrows in the dot generated graphs. \n"; - t << "\n"; - } - t << "GENERATE_LEGEND = "; - writeBoolValue(t,Config::generateLegend); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n"; - t << "# remove the intermedate dot files that are used to generate \n"; - t << "# the various graphs. \n"; - t << "\n"; - } - t << "DOT_CLEANUP = "; - writeBoolValue(t,Config::dotCleanUp); - t << "\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration::addtions related to the search engine \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The SEARCHENGINE tag specifies whether or not a search engine should be \n"; - t << "# used. If set to NO the values of all tags below this one will be ignored. \n"; - t << "\n"; - } - t << "SEARCHENGINE = "; - writeBoolValue(t,Config::searchEngineFlag); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The CGI_NAME tag should be the name of the CGI script that \n"; - t << "# starts the search engine (doxysearch) with the correct parameters. \n"; - t << "# A script with this name will be generated by doxygen. \n"; - t << "\n"; - } - t << "CGI_NAME = "; - writeStringValue(t,Config::cgiName); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The CGI_URL tag should be the absolute URL to the directory where the \n"; - t << "# cgi binaries are located. See the documentation of your http daemon for \n"; - t << "# details. \n"; - t << "\n"; - } - t << "CGI_URL = "; - writeStringValue(t,Config::cgiURL); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The DOC_URL tag should be the absolute URL to the directory where the \n"; - t << "# documentation is located. If left blank the absolute path to the \n"; - t << "# documentation, with file:// prepended to it, will be used. \n"; - t << "\n"; - } - t << "DOC_URL = "; - writeStringValue(t,Config::docURL); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The DOC_ABSPATH tag should be the absolute path to the directory where the \n"; - t << "# documentation is located. If left blank the directory on the local machine \n"; - t << "# will be used. \n"; - t << "\n"; - } - t << "DOC_ABSPATH = "; - writeStringValue(t,Config::docAbsPath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The BIN_ABSPATH tag must point to the directory where the doxysearch binary \n"; - t << "# is installed. \n"; - t << "\n"; - } - t << "BIN_ABSPATH = "; - writeStringValue(t,Config::binAbsPath); - t << "\n"; - if (!sl) - { - t << "\n"; - t << "# The EXT_DOC_PATHS tag can be used to specify one or more paths to \n"; - t << "# documentation generated for other projects. This allows doxysearch to search \n"; - t << "# the documentation for these projects as well. \n"; - t << "\n"; - } - t << "EXT_DOC_PATHS = "; - writeStringList(t,Config::extDocPathList); - t << "\n"; } -void configStrToVal() +void Config::convertStrToVal() { - if (tabSizeString.isEmpty()) - { - Config::tabSize=8; - } - else - { - bool ok; - int ts = tabSizeString.toInt(&ok); - if (!ok || ts<1 || ts>16) - { - warn_cont("Warning: argument of TAB_SIZE is not a valid number, using tab size of 8 spaces!\n"); - ts=8; - } - Config::tabSize = ts; - } - - if (colsInAlphaIndexString.isEmpty()) - { - Config::colsInAlphaIndex=5; - } - else - { - bool ok; - int cols = colsInAlphaIndexString.toInt(&ok); - if (!ok || cols<1 || cols>20) - { - warn_cont("Warning: argument of COLS_IN_ALPHA_INDEX is not a valid number in the range [1..20]!\n" - "Using the default of 5 columns!\n"); - cols = 5; - } - Config::colsInAlphaIndex=cols; - } - - if (enumValuesPerLineString.isEmpty()) - { - Config::enumValuesPerLine=4; - } - else - { - bool ok; - int cols = enumValuesPerLineString.toInt(&ok); - if (!ok || cols<1 || cols>20) - { - warn_cont("Warning: argument of ENUM_VALUES_PER_LINE is not a valid number in the range [1..20]!\n" - "Using the default of 4!\n"); - cols = 4; - } - Config::enumValuesPerLine=cols; - } - - if (treeViewWidthString.isEmpty()) - { - Config::treeViewWidth=250; - } - else - { - bool ok; - int width = treeViewWidthString.toInt(&ok); - if (!ok || width<0 || width>1500) - { - warn_cont("Warning: argument of TREEVIEW_WIDTH is not a valid number in the range [0..1500]!\n" - "Using the default of 250!\n"); - width = 250; - } - Config::treeViewWidth=width; - } - - if (maxDotGraphWidthString.isEmpty()) - { - Config::maxDotGraphWidth=1024; - } - else - { - bool ok; - int width =maxDotGraphWidthString.toInt(&ok); - if (!ok) - { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" - "Using the default of 1024 pixels!\n"); - width=1024; - } - else if (width<100) // clip to lower bound - { - width=100; - } - else if (width>30000) // clip to upper bound - { - width=30000; - } - Config::maxDotGraphWidth=width; - } - - if (maxDotGraphHeightString.isEmpty()) - { - Config::maxDotGraphHeight=1024; - } - else - { - bool ok; - int height =maxDotGraphHeightString.toInt(&ok); - if (!ok) - { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" - "Using the default of 1024 pixels!\n"); - height=1024; - } - else if (height<100) // clip to lower bound - { - height=100; - } - else if (height>30000) // clip to upper bound - { - height=30000; - } - Config::maxDotGraphHeight=height; - } - - if (maxInitLinesString.isEmpty()) + ConfigOption *option = m_options->first(); + while (option) { - Config::maxInitLines=30; - } - else - { - bool ok; - int maxLines =maxInitLinesString.toInt(&ok); - if (!ok) - { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" - "Using the default of 1024 pixels!\n"); - maxLines=30; - } - else if (maxLines<0) // clip to lower bound - { - maxLines=0; - } - else if (maxLines>10000) // clip to upper bound - { - maxLines=10000; - } - Config::maxInitLines=maxLines; + option->convertStrToVal(); + option = m_options->next(); } } @@ -2613,9 +582,6 @@ static void substEnvVarsInStrList(QStrList &sl) contained multiple elements no further splitting is done to allow quoted items with spaces! */ { - - - int l=result.length(); int i,p=0; // skip spaces @@ -2681,80 +647,52 @@ static void substEnvVarsInStrList(QStrList &sl) } } +void ConfigString::substEnvVars() +{ + substEnvVarsInString(m_value); +} + +void ConfigList::substEnvVars() +{ + substEnvVarsInStrList(m_value); +} + -void substituteEnvironmentVars() +void Config::substituteEnvironmentVars() { - substEnvVarsInString( Config::projectName ); - substEnvVarsInString( Config::projectNumber ); - substEnvVarsInString( Config::outputDir ); - substEnvVarsInString( Config::outputLanguage ); - substEnvVarsInStrList( Config::stripFromPath ); - substEnvVarsInStrList( Config::sectionFilterList ); - substEnvVarsInStrList( Config::aliasList ); - substEnvVarsInString( Config::warnFormat ); - substEnvVarsInString( Config::warnLogFile ); - substEnvVarsInStrList( Config::inputSources ); - substEnvVarsInStrList( Config::filePatternList ); - substEnvVarsInStrList( Config::excludeSources ); - substEnvVarsInStrList( Config::excludePatternList ); - substEnvVarsInStrList( Config::examplePath ); - substEnvVarsInStrList( Config::examplePatternList ); - substEnvVarsInStrList( Config::imagePath ); - substEnvVarsInString( Config::inputFilter ); - substEnvVarsInStrList( Config::ignorePrefixList ); - substEnvVarsInString( Config::htmlOutputDir ); - substEnvVarsInString( Config::headerFile ); - substEnvVarsInString( Config::footerFile ); - substEnvVarsInString( Config::htmlStyleSheet ); - substEnvVarsInString( Config::latexOutputDir ); - substEnvVarsInString( Config::paperType ); - substEnvVarsInStrList( Config::extraPackageList ); - substEnvVarsInString( Config::latexHeaderFile ); - substEnvVarsInString( Config::rtfOutputDir ); - substEnvVarsInString( Config::rtfStylesheetFile ); - substEnvVarsInString( Config::rtfExtensionsFile ); - substEnvVarsInString( Config::manOutputDir ); - substEnvVarsInString( Config::manExtension ); - substEnvVarsInStrList( Config::includePath ); - substEnvVarsInStrList( Config::includeFilePatternList ); - substEnvVarsInStrList( Config::predefined ); - substEnvVarsInStrList( Config::expandAsDefinedList ); - substEnvVarsInStrList( Config::tagFileList ); - substEnvVarsInString( Config::genTagFile ); - substEnvVarsInString( Config::perlPath ); - substEnvVarsInString( Config::dotPath ); - substEnvVarsInString( Config::cgiName ); - substEnvVarsInString( Config::cgiURL ); - substEnvVarsInString( Config::docURL ); - substEnvVarsInString( Config::docAbsPath ); - substEnvVarsInString( Config::binAbsPath ); - substEnvVarsInStrList( Config::extDocPathList ); + ConfigOption *option = m_options->first(); + while (option) + { + option->substEnvVars(); + option = m_options->next(); + } } -void checkConfig() +void Config::check() { //if (!projectName.isEmpty()) //{ // projectName[0]=toupper(projectName[0]); //} - if (Config::warnFormat.isEmpty()) + QCString &warnFormat = getString("WARN_FORMAT"); + if (warnFormat.isEmpty()) { - Config::warnFormat="$file:$line $text"; + warnFormat="$file:$line $text"; } else { - if (Config::warnFormat.find("$file")==-1) + if (warnFormat.find("$file")==-1) { err("Error: warning format does not contain a $file tag!\n"); exit(1); } - if (Config::warnFormat.find("$line")==-1) + if (warnFormat.find("$line")==-1) { err("Error: warning format does not contain a $line tag!\n"); exit(1); } - if (Config::warnFormat.find("$text")==-1) + if (warnFormat.find("$text")==-1) { err("Error: wanring format foes not contain a $text tag!\n"); exit(1); @@ -2762,27 +700,30 @@ void checkConfig() } initWarningFormat(); + QCString &manExtension = getString("MAN_EXTENSION"); // set default man page extension if non is given by the user - if (Config::manExtension.isEmpty()) + if (manExtension.isEmpty()) { - Config::manExtension=".3"; + manExtension=".3"; } - Config::paperType = Config::paperType.lower().stripWhiteSpace(); - if (Config::paperType.isEmpty()) + QCString &paperType = getEnum("PAPER_TYPE"); + paperType=paperType.lower().stripWhiteSpace(); + if (paperType.isEmpty()) { - Config::paperType = "a4wide"; + paperType = "a4wide"; } - if (Config::paperType!="a4" && Config::paperType!="a4wide" && Config::paperType!="letter" && - Config::paperType!="legal" && Config::paperType!="executive") + if (paperType!="a4" && paperType!="a4wide" && paperType!="letter" && + paperType!="legal" && paperType!="executive") { err("Error: Unknown page type specified"); } - Config::outputLanguage=Config::outputLanguage.stripWhiteSpace(); - if (Config::outputLanguage.isEmpty()) + QCString &outputLanguage=getEnum("OUTPUT_LANGUAGE"); + outputLanguage=outputLanguage.stripWhiteSpace(); + if (outputLanguage.isEmpty()) { - Config::outputLanguage = "English"; + outputLanguage = "English"; #ifndef DOXYWIZARD setTranslator("English"); #endif @@ -2790,16 +731,17 @@ void checkConfig() else { #ifndef DOXYWIZARD - if (!setTranslator(Config::outputLanguage)) + if (!setTranslator(outputLanguage)) { err("Error: Output language %s not supported! Using English instead.\n", - Config::outputLanguage.data()); + outputLanguage.data()); } #endif } // expand the relative stripFromPath values - char *sfp = Config::stripFromPath.first(); + QStrList &stripFromPath = getList("STRIP_FROM_PATH"); + char *sfp = stripFromPath.first(); while (sfp) { QCString path = sfp; @@ -2808,53 +750,57 @@ void checkConfig() QFileInfo fi(path); if (fi.exists() && fi.isDir()) { - int i = Config::stripFromPath.at(); - Config::stripFromPath.remove(); - if (Config::stripFromPath.at()==i) // did not remove last item - Config::stripFromPath.insert(i,fi.absFilePath()+"/"); + int i = stripFromPath.at(); + stripFromPath.remove(); + if (stripFromPath.at()==i) // did not remove last item + stripFromPath.insert(i,fi.absFilePath()+"/"); else - Config::stripFromPath.append(fi.absFilePath()+"/"); + stripFromPath.append(fi.absFilePath()+"/"); } } - sfp = Config::stripFromPath.next(); + sfp = stripFromPath.next(); } // Test to see if HTML header is valid - if (!Config::headerFile.isEmpty()) + QCString &headerFile = getString("HTML_HEADER"); + if (!headerFile.isEmpty()) { - QFileInfo fi(Config::headerFile); + QFileInfo fi(headerFile); if (!fi.exists()) { err("Error: tag HTML_HEADER: header file `%s' " - "does not exist\n",Config::headerFile.data()); + "does not exist\n",headerFile.data()); exit(1); } } // Test to see if HTML footer is valid - if (!Config::footerFile.isEmpty()) + QCString &footerFile = getString("HTML_FOOTER"); + if (!footerFile.isEmpty()) { - QFileInfo fi(Config::footerFile); + QFileInfo fi(footerFile); if (!fi.exists()) { err("Error: tag HTML_FOOTER: footer file `%s' " - "does not exist\n",Config::footerFile.data()); + "does not exist\n",footerFile.data()); exit(1); } } // Test to see if LaTeX header is valid - if (!Config::latexHeaderFile.isEmpty()) + QCString &latexHeaderFile = getString("LATEX_HEADER"); + if (!latexHeaderFile.isEmpty()) { - QFileInfo fi(Config::latexHeaderFile); + QFileInfo fi(latexHeaderFile); if (!fi.exists()) { err("Error: tag LATEX_HEADER: header file `%s' " - "does not exist\n",Config::latexHeaderFile.data()); + "does not exist\n",latexHeaderFile.data()); exit(1); } } // check include path - char *s=Config::includePath.first(); + QStrList &includePath = getList("INCLUDE_PATH"); + char *s=includePath.first(); while (s) { QFileInfo fi(s); @@ -2863,11 +809,12 @@ void checkConfig() #ifndef DOXYWIZARD addSearchDir(fi.absFilePath()); #endif - s=Config::includePath.next(); + s=includePath.next(); } // check aliases - s=Config::aliasList.first(); + QStrList &aliasList = getList("ALIASES"); + s=aliasList.first(); while (s) { QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*[ \t]*="); @@ -2877,59 +824,61 @@ void checkConfig() { err("Illegal alias format `%s'. Use \"name=value\"\n",alias.data()); } - s=Config::aliasList.next(); + s=aliasList.next(); } // check dot path - if (!Config::dotPath.isEmpty()) + QCString &dotPath = getString("DOT_PATH"); + if (!dotPath.isEmpty()) { - if (Config::dotPath.find('\\')!=-1) + if (dotPath.find('\\')!=-1) { - if (Config::dotPath.at(Config::dotPath.length()-1)!='\\') + if (dotPath.at(dotPath.length()-1)!='\\') { - Config::dotPath+='\\'; + dotPath+='\\'; } } - else if (Config::dotPath.find('/')!=-1) + else if (dotPath.find('/')!=-1) { - if (Config::dotPath.at(Config::dotPath.length()-1)!='/') + if (dotPath.at(dotPath.length()-1)!='/') { - Config::dotPath+='/'; + dotPath+='/'; } } #if defined(_WIN32) - QFileInfo dp(Config::dotPath+"dot.exe"); + QFileInfo dp(dotPath+"dot.exe"); #else - QFileInfo dp(Config::dotPath+"dot"); + QFileInfo dp(dotPath+"dot"); #endif if (!dp.exists() || !dp.isFile()) { - err("Warning: the dot tool could not be found at %s\n",Config::dotPath.data()); - Config::dotPath=""; + err("Warning: the dot tool could not be found at %s\n",dotPath.data()); + dotPath=""; } else { - Config::dotPath=dp.dirPath(TRUE)+"/"; + dotPath=dp.dirPath(TRUE)+"/"; #if defined(_WIN32) // convert slashes - uint i=0,l=Config::dotPath.length(); - for (i=0;i<l;i++) if (Config::dotPath.at(i)=='/') Config::dotPath.at(i)='\\'; + uint i=0,l=dotPath.length(); + for (i=0;i<l;i++) if (dotPath.at(i)=='/') dotPath.at(i)='\\'; #endif } } else // make sure the string is empty but not null! { - Config::dotPath=""; + dotPath=""; } // check input - if (Config::inputSources.count()==0) + QStrList &inputSources=getList("INPUT"); + if (inputSources.count()==0) { err("Error: tag INPUT: no input files specified after the INPUT tag.\n"); exit(1); } else { - s=Config::inputSources.first(); + s=inputSources.first(); while (s) { QFileInfo fi(s); @@ -2938,45 +887,50 @@ void checkConfig() err("Error: tag INPUT: input source `%s' does not exist\n",s); exit(1); } - s=Config::inputSources.next(); + s=inputSources.next(); } } // add default pattern if needed - if (Config::filePatternList.isEmpty()) + QStrList &filePatternList = getList("FILE_PATTERNS"); + if (filePatternList.isEmpty()) { - Config::filePatternList.append("*"); + filePatternList.append("*"); } // add default pattern if needed - if (Config::examplePatternList.isEmpty()) + QStrList &examplePatternList = getList("EXAMPLE_PATTERNS"); + if (examplePatternList.isEmpty()) { - Config::examplePatternList.append("*"); + examplePatternList.append("*"); } // add default pattern if needed - //if (Config::imagePatternList.isEmpty()) + //QStrList &imagePatternList = getList("IMAGE_PATTERNS"); + //if (imagePatternList.isEmpty()) //{ - // Config::imagePatternList.append("*"); + // imagePatternList.append("*"); //} // more checks needed if and only if the search engine is enabled. - if (Config::searchEngineFlag) + if (getBool("SEARCHENGINE")) { // check cgi name - if (Config::cgiName.isEmpty()) + QCString &cgiName = getString("CGI_NAME"); + if (cgiName.isEmpty()) { err("Error: tag CGI_NAME: no cgi script name after the CGI_NAME tag.\n"); exit(1); } // check cgi URL - if (Config::cgiURL.isEmpty()) + QCString &cgiURL = getString("CGI_URL"); + if (cgiURL.isEmpty()) { err("Error: tag CGI_URL: no URL to cgi directory specified.\n"); exit(1); } - else if (Config::cgiURL.left(7)!="http://" && - Config::cgiURL.left(8)!="https://" + else if (cgiURL.left(7)!="http://" && + cgiURL.left(8)!="https://" ) { err("Error: tag CGI_URL: URL to cgi directory is invalid (must " @@ -2984,13 +938,14 @@ void checkConfig() exit(1); } // check documentation URL - if (Config::docURL.isEmpty()) + QCString &docURL = getString("DOC_URL"); + if (docURL.isEmpty()) { - Config::docURL = Config::outputDir.copy().prepend("file://").append("html"); + docURL = getString("OUTPUT_DIRECTORY").copy().prepend("file://").append("html"); } - else if (Config::docURL.left(7)!="http://" && - Config::docURL.left(8)!="https://" && - Config::docURL.left(7)!="file://" + else if (docURL.left(7)!="http://" && + docURL.left(8)!="https://" && + docURL.left(7)!="file://" ) { err("Error: tag DOC_URL: URL to documentation is invalid or " @@ -2998,23 +953,25 @@ void checkConfig() exit(1); } // check absolute documentation path - if (Config::docAbsPath.isEmpty()) + QCString &docAbsPath = getString("DOC_ABSPATH"); + if (docAbsPath.isEmpty()) { - Config::docAbsPath = Config::outputDir+"/html"; + docAbsPath = getString("OUTPUT_DIRECTORY")+"/html"; } - else if (Config::docAbsPath[0]!='/' && Config::docAbsPath[1]!=':') + else if (docAbsPath[0]!='/' && docAbsPath[1]!=':') { err("Error: tag DOC_ABSPATH: path is not absolute!\n"); exit(1); } // check path to doxysearch - if (Config::binAbsPath.isEmpty()) + QCString &binAbsPath = getString("BIN_ABSPATH"); + if (binAbsPath.isEmpty()) { err("Error: tag BIN_ABSPATH: no absolute path to doxysearch " "specified.\n"); exit(1); } - else if (Config::binAbsPath[0]!='/' && Config::binAbsPath[1]!=':') + else if (binAbsPath[0]!='/' && binAbsPath[1]!=':') { err("Error: tag BIN_ABSPATH: path is not absolute!\n"); exit(1); @@ -3022,13 +979,14 @@ void checkConfig() // check perl path bool found=FALSE; - if (Config::perlPath.isEmpty()) + QCString &perlPath = getString("PERL_PATH"); + if (perlPath.isEmpty()) { QFileInfo fi; fi.setFile("/usr/bin/perl"); if (fi.exists()) { - Config::perlPath="/usr/bin/perl"; + perlPath="/usr/bin/perl"; found=TRUE; } else @@ -3036,19 +994,19 @@ void checkConfig() fi.setFile("/usr/local/bin/perl"); if (fi.exists()) { - Config::perlPath="/usr/local/bin/perl"; + perlPath="/usr/local/bin/perl"; found=TRUE; } } } if (!found) { - QFileInfo fi(Config::perlPath); + QFileInfo fi(perlPath); if (!fi.exists()) { warn_cont("Warning: tag PERL_PATH: perl interpreter not found at default or" "user specified (%s) location\n", - Config::perlPath.data()); + perlPath.data()); } } } @@ -3059,12 +1017,1015 @@ void checkConfig() #else #define PUTENV putenv #endif - if (Config::haveDotFlag) PUTENV("DOTFONTPATH=."); + if (getBool("HAVE_DOT")) PUTENV("DOTFONTPATH=."); } -void parseConfig(const QCString &s,const char *fn) +void Config::init() +{ + ConfigOption *option = m_options->first(); + while (option) + { + option->init(); + option = m_options->next(); + } +} + +void Config::create() +{ + if (m_initialized) return; + m_initialized = TRUE; + + ConfigString *cs; + ConfigEnum *ce; + ConfigList *cl; + ConfigInt *ci; + ConfigBool *cb; + + // option definitions + //----------------------------------------------------------------------------------------------- + addInfo("General","General configuration options"); + //----------------------------------------------------------------------------------------------- + + + cs = addString(//"projectName", + "PROJECT_NAME", + "The PROJECT_NAME tag is a single word (or a sequence of words surrounded \n" + "by quotes) that should identify the project. " + ); + cs = addString(//"projectNumber", + "PROJECT_NUMBER", + "The PROJECT_NUMBER tag can be used to enter a project or revision number. \n" + "This could be handy for archiving the generated documentation or \n" + "if some version control system is used.\n" + ); + cs = addString(//"outputDir", + "OUTPUT_DIRECTORY", + "The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \n" + "base path where the generated documentation will be put. \n" + "If a relative path is entered, it will be relative to the location \n" + "where doxygen was started. If left blank the current directory will be used.\n" + ); + cs->setWidgetType(ConfigString::Dir); + ce = addEnum(//"outputLanguage", + "OUTPUT_LANGUAGE", + "The OUTPUT_LANGUAGE tag is used to specify the language in which all \n" + "documentation generated by doxygen is written. Doxygen will use this \n" + "information to generate all constant output in the proper language. \n" + "The default language is English, other supported languages are: \n" + "Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n" + "Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, \n" + "Polish, Portuguese, Brazilian and Slovene.\n", + "English" + ); + ce->addValue("Brazilian"); + ce->addValue("Croatian"); + ce->addValue("Czech"); + ce->addValue("Dutch"); + ce->addValue("English"); + ce->addValue("French"); + ce->addValue("Finnish"); + ce->addValue("German"); + ce->addValue("Hungarian"); + ce->addValue("Italian"); + ce->addValue("Japanese"); + ce->addValue("Korean"); + ce->addValue("Norwegian"); + ce->addValue("Romanian"); + ce->addValue("Russian"); + ce->addValue("Polish"); + ce->addValue("Portuguese"); + ce->addValue("Slovene"); + ce->addValue("Spanish"); + ce->addValue("Swedish"); + cb = addBool( //"extractAllFlag", + "EXTRACT_ALL", + "If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \n" + "documentation are documented, even if no documentation was available. \n" + "Private class members and static file members will be hidden unless \n" + "the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES \n", + FALSE + ); + cb = addBool( //"extractPrivateFlag", + "EXTRACT_PRIVATE", + "If the EXTRACT_PRIVATE tag is set to YES all private members of a class \n" + "will be included in the documentation. \n", + FALSE + ); + cb = addBool( //"extractStaticFlag", + "EXTRACT_STATIC", + "If the EXTRACT_STATIC tag is set to YES all static members of a file \n" + "will be included in the documentation. \n", + FALSE + ); + cb = addBool( //"hideMemberFlag", + "HIDE_UNDOC_MEMBERS", + "If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \n" + "undocumented members of documented classes, files or namespaces. \n" + "If set to NO (the default) these members will be included in the \n" + "various overviews, but no documentation section is generated. \n" + "This option has no effect if EXTRACT_ALL is enabled. \n", + FALSE + ); + cb = addBool( //"hideClassFlag", + "HIDE_UNDOC_CLASSES", + "If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \n" + "undocumented classes that are normally visible in the class hierarchy. \n" + "If set to NO (the default) these class will be included in the various \n" + "overviews. This option has no effect if EXTRACT_ALL is enabled. \n", + FALSE + ); + cb = addBool( //"briefMemDescFlag", + "BRIEF_MEMBER_DESC", + "If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n" + "include brief member descriptions after the members that are listed in \n" + "the file and class documentation (similar to JavaDoc). \n" + "Set to NO to disable this. \n", + TRUE + ); + cb = addBool( //"repeatBriefFlag", + "REPEAT_BRIEF", + "If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \n" + "the brief description of a member or function before the detailed description. \n" + "Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \n" + "brief descriptions will be completely suppressed. \n", + TRUE + ); + cb = addBool( //"alwaysDetailsFlag", + "ALWAYS_DETAILED_SEC", + "If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n" + "Doxygen will generate a detailed section even if there is only a brief \n" + "description. \n", + FALSE + ); + cb = addBool( //"fullPathNameFlag", + "FULL_PATH_NAMES", + "If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \n" + "path before files name in the file list and in the header files. If set \n" + "to NO the shortest path that makes the file name unique will be used. \n", + FALSE + ); + cl = addList( //"stripFromPath", + "STRIP_FROM_PATH", + "If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \n" + "can be used to strip a user defined part of the path. Stripping is \n" + "only done if one of the specified strings matches the left-hand part of \n" + "the path. It is allowed to use relative paths in the argument list.\n" + ); + cl->addDependency("FULL_PATH_NAMES"); + cb = addBool( //"internalDocsFlag", + "INTERNAL_DOCS", + "The INTERNAL_DOCS tag determines if documentation \n" + "that is typed after a \\internal command is included. If the tag is set \n" + "to NO (the default) then the documentation will be excluded. \n" + "Set it to YES to include the internal documentation. \n", + FALSE + ); + cb = addBool( //"classDiagramFlag", + "CLASS_DIAGRAMS", + "If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \n" + "generate a class diagram (in Html and LaTeX) for classes with base or \n" + "super classes. Setting the tag to NO turns the diagrams off. \n", + TRUE + ); + cb = addBool( //"sourceBrowseFlag", + "SOURCE_BROWSER", + "If the SOURCE_BROWSER tag is set to YES then a list of source files will \n" + "be generated. Documented entities will be cross-referenced with these sources. \n", + FALSE + ); + cb = addBool( //"inlineSourceFlag", + "INLINE_SOURCES", + "Setting the INLINE_SOURCES tag to YES will include the body \n" + "of functions and classes directly in the documentation. \n", + FALSE + ); + cb = addBool( //"stripCommentsFlag", + "STRIP_CODE_COMMENTS", + "Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n" + "doxygen to hide any special comment blocks from generated source code \n" + "fragments. Normal C and C++ comments will always remain visible. \n", + TRUE + ); + cb = addBool( //"caseSensitiveNames", + "CASE_SENSE_NAMES", + "If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n" + "file names in lower case letters. If set to YES upper case letters are also \n" + "allowed. This is useful if you have classes or files whose names only differ \n" + "in case and if your file system supports case sensitive file names. Windows \n" + "users are adviced to set this option to NO.\n", + TRUE + ); + cb = addBool( //"hideScopeNames", + "HIDE_SCOPE_NAMES", + "If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen \n" + "will show members with their full class and namespace scopes in the \n" + "documentation. If set to YES the scope will be hidden. \n", + FALSE + ); + cb = addBool( //"verbatimHeaderFlag", + "VERBATIM_HEADERS", + "If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen \n" + "will generate a verbatim copy of the header file for each class for \n" + "which an include is specified. Set to NO to disable this. \n", + TRUE + ); + cb = addBool( //"showIncFileFlag", + "SHOW_INCLUDE_FILES", + "If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \n" + "will put list of the files that are included by a file in the documentation \n" + "of that file. \n", + TRUE + ); + cb = addBool( //"autoBriefFlag", + "JAVADOC_AUTOBRIEF", + "If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \n" + "will interpret the first line (until the first dot) of a JavaDoc-style \n" + "comment as the brief description. If set to NO, the JavaDoc \n" + "comments will behave just like the Qt-style comments (thus requiring an \n" + "explict @brief command for a brief description. \n", + FALSE + ); + cb = addBool( //"inheritDocsFlag", + "INHERIT_DOCS", + "If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \n" + "member inherits the documentation from any documented member that it \n" + "reimplements. \n", + TRUE + ); + cb = addBool( //"inlineInfoFlag", + "INLINE_INFO", + "If the INLINE_INFO tag is set to YES (the default) then a tag [inline] \n" + "is inserted in the documentation for inline members. \n", + TRUE + ); + cb = addBool( //"sortMembersFlag", + "SORT_MEMBER_DOCS", + "If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen \n" + "will sort the (detailed) documentation of file and class members \n" + "alphabetically by member name. If set to NO the members will appear in \n" + "declaration order. \n", + TRUE + ); + cb = addBool( //"distributeDocFlag", + "DISTRIBUTE_GROUP_DOC", + "If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n" + "tag is set to YES, then doxygen will reuse the documentation of the first \n" + "member in the group (if any) for the other members of the group. By default \n" + "all members of a group must be documented explicitly.\n", + FALSE + ); + ci = addInt( //"tabSize", + "TAB_SIZE", + "The TAB_SIZE tag can be used to set the number of spaces in a tab. \n" + "Doxygen uses this value to replace tabs by spaces in code fragments. \n", + 1,16,8 + ); + cl = addList( //"sectionFilterList", + "ENABLED_SECTIONS", + "The ENABLE_SECTIONS tag can be used to enable conditional \n" + "documentation sections, marked by \\if sectionname ... \\endif. \n" + ); + cb = addBool( //"generateTodoList", + "GENERATE_TODOLIST", + "The GENERATE_TODOLIST tag can be used to enable (YES) or \n" + "disable (NO) the todo list. This list is created by putting \\todo \n" + "commands in the documentation.\n", + TRUE + ); + cb = addBool( //"generateTestList", + "GENERATE_TESTLIST", + "The GENERATE_TESTLIST tag can be used to enable (YES) or \n" + "disable (NO) the test list. This list is created by putting \\test \n" + "commands in the documentation.\n", + TRUE + ); + cb = addBool( //"generateBugList", + "GENERATE_BUGLIST", + "The GENERATE_BUGLIST tag can be used to enable (YES) or \n" + "disable (NO) the bug list. This list is created by putting \\bug \n" + "commands in the documentation.\n", + TRUE + ); + cl = addList( //"aliasList", + "ALIASES", + "This tag can be used to specify a number of aliases that acts \n" + "as commands in the documentation. An alias has the form \"name=value\". \n" + "For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n" + "put the command \\sideeffect (or @sideeffect) in the documentation, which \n" + "will result in a user defined paragraph with heading \"Side Effects:\". \n" + "You can put \\n's in the value part of an alias to insert newlines. \n" + ); + ci = addInt( //"maxInitLines", + "MAX_INITIALIZER_LINES", + "The MAX_INITIALIZER_LINES tag determines the maximum number of lines \n" + "the initial value of a variable or define consist of for it to appear in \n" + "the documentation. If the initializer consists of more lines than specified \n" + "here it will be hidden. Use a value of 0 to hide initializers completely. \n" + "The appearance of the initializer of individual variables and defines in the \n" + "documentation can be controlled using \\showinitializer or \\hideinitializer \n" + "command in the documentation regardless of this setting. \n", + 0,10000,30 + ); + cb = addBool( //"optimizeForCFlag", + "OPTIMIZE_OUTPUT_FOR_C", + "Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources \n" + "only. Doxygen will then generate output that is more tailored for C. \n" + "For instance some of the names that are used will be different. The list \n" + "of all members will be omitted, etc. \n", + FALSE + ); + cb = addBool( //"showUsedFilesFlag", + "SHOW_USED_FILES", + "Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n" + "at the bottom of the documentation of classes and structs. If set to YES the \n" + "list will mention the files that were used to generate the documentation. \n", + TRUE + ); + //----------------------------------------------------------------------------------------------- + addInfo( "Messages","configuration options related to warning and progress messages"); + //----------------------------------------------------------------------------------------------- + + cb = addBool( //"quietFlag", + "QUIET", + "The QUIET tag can be used to turn on/off the messages that are generated \n" + "by doxygen. Possible values are YES and NO. If left blank NO is used. \n", + FALSE + ); + cb = addBool( //"warningFlag", + "WARNINGS", + "The WARNINGS tag can be used to turn on/off the warning messages that are \n" + "generated by doxygen. Possible values are YES and NO. If left blank \n" + "NO is used. \n", + TRUE + ); + cb = addBool( //"warningUndocFlag", + "WARN_IF_UNDOCUMENTED", + "If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings \n" + "for undocumented members. If EXTRACT_ALL is set to YES then this flag will \n" + "automatically be disabled. \n", + TRUE + ); + cs = addString(//"warnFormat", + "WARN_FORMAT", + "The WARN_FORMAT tag determines the format of the warning messages that \n" + "doxygen can produce. The string should contain the $file, $line, and $text \n" + "tags, which will be replaced by the file and line number from which the \n" + "warning originated and the warning text. \n" + ); + cs->setDefaultValue("$file:$line: $text"); + cs = addString(//"warnLogFile", + "WARN_LOGFILE", + "The WARN_LOGFILE tag can be used to specify a file to which warning \n" + "and error messages should be written. If left blank the output is written \n" + "to stderr. \n" + ); + //----------------------------------------------------------------------------------------------- + addInfo( "Input","configuration options related to the input files"); + //----------------------------------------------------------------------------------------------- + cl = addList( //"inputSources", + "INPUT", + "The INPUT tag can be used to specify the files and/or directories that contain \n" + "documented source files. You may enter file names like \"myfile.cpp\" or \n" + "directories like \"/usr/src/myproject\". Separate the files or directories \n" + "with spaces. \n" + ); + cl->setWidgetType(ConfigList::FileAndDir); + cl = addList( //"filePatternList", + "FILE_PATTERNS", + "If the value of the INPUT tag contains directories, you can use the \n" + "FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n" + "and *.h) to filter out the source-files in the directories. If left \n" + "blank all files are included. \n" + ); + cb = addBool( //"recursiveFlag", + "RECURSIVE", + "The RECURSIVE tag can be used to turn specify whether or not subdirectories \n" + "should be searched for input files as well. Possible values are YES and NO. \n" + "If left blank NO is used. \n", + FALSE + ); + cl = addList( //"excludeSources", + "EXCLUDE", + "The EXCLUDE tag can be used to specify files and/or directories that should \n" + "excluded from the INPUT source files. This way you can easily exclude a \n" + "subdirectory from a directory tree whose root is specified with the INPUT tag. \n" + ); + cl->setWidgetType(ConfigList::FileAndDir); + cl = addList( //"excludePatternList", + "EXCLUDE_PATTERNS", + "If the value of the INPUT tag contains directories, you can use the \n" + "EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \n" + "certain files from those directories. \n" + ); + cl = addList( //"examplePath", + "EXAMPLE_PATH", + "The EXAMPLE_PATH tag can be used to specify one or more files or \n" + "directories that contain example code fragments that are included (see \n" + "the \\include command). \n" + ); + cl->setWidgetType(ConfigList::Dir); + cl = addList( //"examplePatternList", + "EXAMPLE_PATTERNS", + "If the value of the EXAMPLE_PATH tag contains directories, you can use the \n" + "EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n" + "and *.h) to filter out the source-files in the directories. If left \n" + "blank all files are included. \n" + ); + cl = addList( //"imagePath", + "IMAGE_PATH", + "The IMAGE_PATH tag can be used to specify one or more files or \n" + "directories that contain image that are included in the documentation (see \n" + "the \\image command). \n" + ); + cl->setWidgetType(ConfigList::Dir); + cs = addString(//"inputFilter", + "INPUT_FILTER", + "The INPUT_FILTER tag can be used to specify a program that doxygen should \n" + "invoke to filter for each input file. Doxygen will invoke the filter program \n" + "by executing (via popen()) the command <filter> <input-file>, where <filter> \n" + "is the value of the INPUT_FILTER tag, and <input-file> is the name of an \n" + "input file. Doxygen will then use the output that the filter program writes \n" + "to standard output. \n" + ); + cl->setWidgetType(ConfigList::File); + cb = addBool( //"filterForSourceFlag", + "FILTER_SOURCE_FILES", + "If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \n" + "INPUT_FILTER) will be used to filter the input files when producing source \n" + "files to browse. \n", + FALSE + ); + + //----------------------------------------------------------------------------------------------- + addInfo( "Index","configuration options related to the alphabetical class index"); + //----------------------------------------------------------------------------------------------- + + cb = addBool( //"alphaIndexFlag", + "ALPHABETICAL_INDEX", + "If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index \n" + "of all compounds will be generated. Enable this if the project \n" + "contains a lot of classes, structs, unions or interfaces. \n", + FALSE + ); + ci = addInt( //"colsInAlphaIndex", + "COLS_IN_ALPHA_INDEX", + "If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then \n" + "the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns \n" + "in which this list will be split (can be a number in the range [1..20]) \n", + 1,20,5 + ); + cl = addList( //"ignorePrefixList", + "IGNORE_PREFIX", + "In case all classes in a project start with a common prefix, all \n" + "classes will be put under the same header in the alphabetical index. \n" + "The IGNORE_PREFIX tag can be used to specify one or more prefixes that \n" + "should be ignored while generating the index headers. \n" + ); + //----------------------------------------------------------------------------------------------- + addInfo( "HTML","configuration options related to the HTML output"); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"generateHtml", + "GENERATE_HTML", + "If the GENERATE_HTML tag is set to YES (the default) Doxygen will \n" + "generate HTML output. \n", + TRUE + ); + cs = addString(//"htmlOutputDir", + "HTML_OUTPUT", + "The HTML_OUTPUT tag is used to specify where the HTML docs will be put. \n" + "If a relative path is entered the value of OUTPUT_DIRECTORY will be \n" + "put in front of it. If left blank `html' will be used as the default path. \n" + ); + cs->setDefaultValue("html"); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("GENERATE_HTML"); + cs = addString(//"headerFile", + "HTML_HEADER", + "The HTML_HEADER tag can be used to specify a personal HTML header for \n" + "each generated HTML page. If it is left blank doxygen will generate a \n" + "standard header.\n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); + cs = addString(//"footerFile", + "HTML_FOOTER", + "The HTML_FOOTER tag can be used to specify a personal HTML footer for \n" + "each generated HTML page. If it is left blank doxygen will generate a \n" + "standard footer.\n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); + cs = addString(//"htmlStyleSheet", + "HTML_STYLESHEET", + "The HTML_STYLESHEET tag can be used to specify a user defined cascading \n" + "style sheet that is used by each HTML page. It can be used to \n" + "fine-tune the look of the HTML output. If the tag is left blank doxygen \n" + "will generate a default style sheet \n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); + cb = addBool( //"htmlAlignMemberFlag", + "HTML_ALIGN_MEMBERS", + "If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, \n" + "files or namespaces will be aligned in HTML using tables. If set to \n" + "NO a bullet list will be used. \n", + TRUE + ); + cb->addDependency("GENERATE_HTML"); + cb = addBool( //"htmlHelpFlag", + "GENERATE_HTMLHELP", + "If the GENERATE_HTMLHELP tag is set to YES, additional index files \n" + "will be generated that can be used as input for tools like the \n" + "Microsoft HTML help workshop to generate a compressed HTML help file (.chm) \n" + "of the generated HTML documentation. \n", + FALSE + ); + cb->addDependency("GENERATE_HTML"); + cb = addBool( //"htmlHelpChiFlag", + "GENERATE_CHI", + "If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n" + "controls if a separate .chi index file is generated (YES) or that \n" + "it should be included in the master .chm file (NO).\n", + FALSE + ); + cb->addDependency("GENERATE_HTML"); + cb = addBool( //"htmlHelpTocFlag", + "BINARY_TOC", + "If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n" + "controls whether a binary table of contents is generated (YES) or a \n" + "normal table of contents (NO) in the .chm file.\n", + FALSE + ); + cb->addDependency("GENERATE_HTML"); + cb = addBool( //"htmlHelpTocExpandFlag", + "TOC_EXPAND", + "The TOC_EXPAND flag can be set YES to add extra items for group members \n" + "to the contents of the Html help documentation and to the tree view. \n", + FALSE + ); + cb->addDependency("GENERATE_HTML"); + cb = addBool( //"noIndexFlag", + "DISABLE_INDEX", + "The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n" + "top of each HTML page. The value NO (the default) enables the index and \n" + "the value YES disables it. \n", + FALSE + ); + cb->addDependency("GENERATE_HTML"); + ci = addInt( //"enumValuesPerLine", + "ENUM_VALUES_PER_LINE", + "This tag can be used to set the number of enum values (range [1..20]) \n" + "that doxygen will group on one line in the generated HTML documentation. \n", + 1,20,4 + ); + ci->addDependency("GENERATE_HTML"); + cb = addBool( //"ftvHelpFlag", + "GENERATE_TREEVIEW", + "If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\n" + "generated containing a tree-like index structure (just like the one that \n" + "is generated for HTML Help). For this to work a browser that supports \n" + "JavaScript and frames is required (for instance Netscape 4.0+ \n" + "or Internet explorer 4.0+). ", + FALSE + ); + cb->addDependency("GENERATE_HTML"); + ci = addInt( //"treeViewWidth", + "TREEVIEW_WIDTH", + "If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be \n" + "used to set the initial width (in pixels) of the frame in which the tree \n" + "is shown. \n", + 0,1500,250 + ); + ci->addDependency("GENERATE_HTML"); + + //----------------------------------------------------------------------------------------------- + addInfo( "LaTeX","configuration options related to the LaTeX output"); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"generateLatex", + "GENERATE_LATEX", + "If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \n" + "generate Latex output. \n", + TRUE + ); + cs = addString(//"latexOutputDir", + "LATEX_OUTPUT", + "The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. \n" + "If a relative path is entered the value of OUTPUT_DIRECTORY will be \n" + "put in front of it. If left blank `latex' will be used as the default path. \n" + ); + cs->setDefaultValue("latex"); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("GENERATE_LATEX"); + cb = addBool( //"compactLatexFlag", + "COMPACT_LATEX", + "If the COMPACT_LATEX tag is set to YES Doxygen generates more compact \n" + "LaTeX documents. This may be useful for small projects and may help to \n" + "save some trees in general. \n", + FALSE + ); + cb->addDependency("GENERATE_LATEX"); + ce = addEnum(//"paperType", + "PAPER_TYPE", + "The PAPER_TYPE tag can be used to set the paper type that is used \n" + "by the printer. Possible values are: a4, a4wide, letter, legal and \n" + "executive. If left blank a4wide will be used. \n", + "a4wide" + ); + ce->addValue("a4"); + ce->addValue("a4wide"); + ce->addValue("letter"); + ce->addValue("legal"); + ce->addValue("executive"); + ce->addDependency("GENERATE_LATEX"); + cl = addList( //"extraPackageList", + "EXTRA_PACKAGES", + "The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX \n" + "packages that should be included in the LaTeX output. \n" + ); + cl->addDependency("GENERATE_LATEX"); + cs = addString(//"latexHeaderFile", + "LATEX_HEADER", + "The LATEX_HEADER tag can be used to specify a personal LaTeX header for \n" + "the generated latex document. The header should contain everything until \n" + "the first chapter. If it is left blank doxygen will generate a \n" + "standard header. Notice: only use this tag if you know what you are doing! \n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_LATEX"); + cb = addBool( //"pdfHyperFlag", + "PDF_HYPERLINKS", + "If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated \n" + "is prepared for conversion to pdf (using ps2pdf). The pdf file will \n" + "contain links (just like the HTML output) instead of page references \n" + "This makes the output suitable for online browsing using a pdf viewer. \n", + FALSE + ); + cb->addDependency("GENERATE_LATEX"); + cb = addBool( //"usePDFLatexFlag", + "USE_PDFLATEX", + "If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of \n" + "plain latex in the generated Makefile. Set this option to YES to get a \n" + "higher quality PDF documentation. \n", + FALSE + ); + cb->addDependency("GENERATE_LATEX"); + cb = addBool( //"latexBatchModeFlag", + "LATEX_BATCHMODE", + "If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\\\batchmode. \n" + "command to the generated LaTeX files. This will instruct LaTeX to keep \n" + "running if errors occur, instead of asking the user for help. \n" + "This option is also used when generating formulas in HTML. \n", + FALSE + ); + cb->addDependency("GENERATE_LATEX"); + //----------------------------------------------------------------------------------------------- + addInfo( "RTF","configuration options related to the RTF output"); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"generateRTF", + "GENERATE_RTF", + "If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n" + "The RTF output is optimised for Word 97 and may not look very pretty with \n" + "other RTF readers or editors.\n", + TRUE + ); + cs = addString(//"rtfOutputDir", + "RTF_OUTPUT", + "The RTF_OUTPUT tag is used to specify where the RTF docs will be put. \n" + "If a relative path is entered the value of OUTPUT_DIRECTORY will be \n" + "put in front of it. If left blank `rtf' will be used as the default path. \n" + ); + cs->setDefaultValue("rtf"); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("GENERATE_RTF"); + cb = addBool( //"compactRTFFlag", + "COMPACT_RTF", + "If the COMPACT_RTF tag is set to YES Doxygen generates more compact \n" + "RTF documents. This may be useful for small projects and may help to \n" + "save some trees in general. \n", + FALSE + ); + cb->addDependency("GENERATE_RTF"); + cb = addBool( //"rtfHyperFlag", + "RTF_HYPERLINKS", + "If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated \n" + "will contain hyperlink fields. The RTF file will \n" + "contain links (just like the HTML output) instead of page references. \n" + "This makes the output suitable for online browsing using a WORD or other. \n" + "programs which support those fields. \n" + "Note: wordpad (write) and others do not support links. \n", + FALSE + ); + cb->addDependency("GENERATE_RTF"); + cs = addString(//"rtfStylesheetFile", + "RTF_STYLESHEET_FILE", + "Load stylesheet definitions from file. Syntax is similar to doxygen's \n" + "config file, i.e. a series of assigments. You only have to provide \n" + "replacements, missing definitions are set to their default value. \n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_RTF"); + cs = addString(//"rtfExtentionsFile", + "RTF_EXTENSIONS_FILE", + "Set optional variables used in the generation of an rtf document. \n" + "Syntax is similar to doxygen's config file.\n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_RTF"); + + //----------------------------------------------------------------------------------------------- + addInfo( "Man","configuration options related to the man page output"); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"generateMan", + "GENERATE_MAN", + "If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n" + "generate man pages \n", + TRUE + ); + cs = addString(//"manOutputDir", + "MAN_OUTPUT", + "The MAN_OUTPUT tag is used to specify where the man pages will be put. \n" + "If a relative path is entered the value of OUTPUT_DIRECTORY will be \n" + "put in front of it. If left blank `man' will be used as the default path. \n" + ); + cs->setDefaultValue("man"); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("GENERATE_MAN"); + cs = addString(//"manExtension", + "MAN_EXTENSION", + "The MAN_EXTENSION tag determines the extension that is added to \n" + "the generated man pages (default is the subroutine's section .3) \n" + ); + cs->setDefaultValue(".3"); + cs->addDependency("GENERATE_MAN"); + //----------------------------------------------------------------------------------------------- + //addInfo( "XML","configuration options related to the XML output"); + //----------------------------------------------------------------------------------------------- + //addBool( "generateXML", + // "GENERATE_XML", + // "FALSE", + // "generate XML output", + // "If the GENERATE_XML tag is set to YES Doxygen will \n" + // "generate an XML file that captures the structure of \n" + // "the code including all documentation. Warning: This feature \n" + // "is still experimental and very incomplete.\n" + // ); + //----------------------------------------------------------------------------------------------- + addInfo( "Preprocessor","Configuration options related to the preprocessor "); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"preprocessingFlag", + "ENABLE_PREPROCESSING", + "If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will \n" + "evaluate all C-preprocessor directives found in the sources and include \n" + "files. \n", + TRUE + ); + cb = addBool( //"macroExpansionFlag", + "MACRO_EXPANSION", + "If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n" + "names in the source code. If set to NO (the default) only conditional \n" + "compilation will be performed. Macro expansion can be done in a controlled \n" + "way by setting EXPAND_ONLY_PREDEF to YES. \n", + FALSE + ); + cb->addDependency("ENABLE_PREPROCESSING"); + cb = addBool( //"onlyPredefinedFlag", + "EXPAND_ONLY_PREDEF", + "If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n" + "then the macro expansion is limited to the macros specified with the \n" + "PREDEFINED and EXPAND_AS_PREDEFINED tags. \n", + FALSE + ); + cb->addDependency("ENABLE_PREPROCESSING"); + cb = addBool( //"searchIncludeFlag", + "SEARCH_INCLUDES", + "If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \n" + "in the INCLUDE_PATH (see below) will be search if a #include is found. \n", + TRUE + ); + cb->addDependency("ENABLE_PREPROCESSING"); + cl = addList( //"includePath", + "INCLUDE_PATH", + "The INCLUDE_PATH tag can be used to specify one or more directories that \n" + "contain include files that are not input files but should be processed by \n" + "the preprocessor. \n" + ); + cl->setWidgetType(ConfigList::Dir); + cl->addDependency("ENABLE_PREPROCESSING"); + cl = addList( //"includeFilePatternList", + "INCLUDE_FILE_PATTERNS", + "You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard \n" + "patterns (like *.h and *.hpp) to filter out the header-files in the \n" + "directories. If left blank, the patterns specified with FILE_PATTERNS will \n" + "be used. \n" + ); + cl->addDependency("ENABLE_PREPROCESSING"); + cl = addList( //"predefined", + "PREDEFINED", + "The PREDEFINED tag can be used to specify one or more macro names that \n" + "are defined before the preprocessor is started (similar to the -D option of \n" + "gcc). The argument of the tag is a list of macros of the form: name \n" + "or name=definition (no spaces). If the definition and the = are \n" + "omitted =1 is assumed. \n" + ); + cl->addDependency("ENABLE_PREPROCESSING"); + cl = addList( //"expandAsDefinedList", + "EXPAND_AS_DEFINED", + "If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n" + "this tag can be used to specify a list of macro names that should be expanded. \n" + "The macro definition that is found in the sources will be used. \n" + "Use the PREDEFINED tag if you want to use a different macro definition. \n" + ); + cl->addDependency("ENABLE_PREPROCESSING"); + //----------------------------------------------------------------------------------------------- + addInfo( "External","Configuration::addtions related to external references "); + //----------------------------------------------------------------------------------------------- + cl = addList( //"tagFileList", + "TAGFILES", + "The TAGFILES tag can be used to specify one or more tagfiles. \n" + ); + cl->setWidgetType(ConfigList::File); + cs = addString(//"genTagFile", + "GENERATE_TAGFILE", + "When a file name is specified after GENERATE_TAGFILE, doxygen will create \n" + "a tag file that is based on the input files it reads. \n" + ); + cs->setWidgetType(ConfigString::File); + cb = addBool( //"allExtFlag", + "ALLEXTERNALS", + "If the ALLEXTERNALS tag is set to YES all external classes will be listed \n" + "in the class index. If set to NO only the inherited external classes \n" + "will be listed. \n", + FALSE + ); + cs = addString(//"perlPath", + "PERL_PATH", + "The PERL_PATH should be the absolute path and name of the perl script \n" + "interpreter (i.e. the result of `which perl'). \n" + ); + cs->setDefaultValue("/usr/bin/perl"); + cs->setWidgetType(ConfigString::Dir); + + //----------------------------------------------------------------------------------------------- + addInfo( "Dot","Configuration options related to the dot tool "); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"haveDotFlag", + "HAVE_DOT", + "If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \n" + "available from the path. This tool is part of Graphviz, a graph visualization \n" + "toolkit from AT&T and Lucent Bell Labs. The other options in this section \n" + "have no effect if this option is set to NO (the default) \n", + FALSE + ); + cb = addBool( //"classGraphFlag", + "CLASS_GRAPH", + "If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \n" + "will generate a graph for each documented class showing the direct and \n" + "indirect inheritance relations. Setting this tag to YES will force the \n" + "the CLASS_DIAGRAMS tag to NO.\n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + cb = addBool( //"collGraphFlag", + "COLLABORATION_GRAPH", + "If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen \n" + "will generate a graph for each documented class showing the direct and \n" + "indirect implementation dependencies (inheritance, containment, and \n" + "class references variables) of the class with other documented classes. \n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + cb = addBool( //"includeGraphFlag", + "INCLUDE_GRAPH", + "If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to \n" + "YES then doxygen will generate a graph for each documented file showing \n" + "the direct and indirect include dependencies of the file with other \n" + "documented files. \n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + cb = addBool( //"includedByGraphFlag", + "INCLUDED_BY_GRAPH", + "If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to \n" + "YES then doxygen will generate a graph for each documented header file showing \n" + "the documented files that directly or indirectly include this file \n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + cb = addBool( //"gfxHierarchyFlag", + "GRAPHICAL_HIERARCHY", + "If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n" + "will graphical hierarchy of all classes instead of a textual one. \n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + cs = addString(//"dotPath", + "DOT_PATH", + "The tag DOT_PATH can be used to specify the path where the dot tool can be \n" + "found. If left blank, it is assumed the dot tool can be found on the path. \n" + ); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("HAVE_DOT"); + ci = addInt( //"maxDotGraphWidth", + "MAX_DOT_GRAPH_WIDTH", + "The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width \n" + "(in pixels) of the graphs generated by dot. If a graph becomes larger than \n" + "this value, doxygen will try to truncate the graph, so that it fits within \n" + "the specified constraint. Beware that most browsers cannot cope with very \n" + "large images. \n", + 100,30000, 1024 + ); + ci->addDependency("HAVE_DOT"); + ci = addInt( //"maxDotGraphHeight", + "MAX_DOT_GRAPH_HEIGHT", + "The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height \n" + "(in pixels) of the graphs generated by dot. If a graph becomes larger than \n" + "this value, doxygen will try to truncate the graph, so that it fits within \n" + "the specified constraint. Beware that most browsers cannot cope with very \n" + "large images. \n", + 100,30000,1024 + ); + ci->addDependency("HAVE_DOT"); + cb = addBool( //"generateLegend", + "GENERATE_LEGEND", + "If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \n" + "generate a legend page explaining the meaning of the various boxes and \n" + "arrows in the dot generated graphs. \n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + cb = addBool( //"dotCleanUp", + "DOT_CLEANUP", + "If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n" + "remove the intermedate dot files that are used to generate \n" + "the various graphs. \n", + TRUE + ); + cb->addDependency("HAVE_DOT"); + + //----------------------------------------------------------------------------------------------- + addInfo( "Search","Configuration::addtions related to the search engine "); + //----------------------------------------------------------------------------------------------- + cb = addBool( //"searchEngineFlag", + "SEARCHENGINE", + "The SEARCHENGINE tag specifies whether or not a search engine should be \n" + "used. If set to NO the values of all tags below this one will be ignored. \n", + FALSE + ); + cs = addString(//"cgiName", + "CGI_NAME", + "The CGI_NAME tag should be the name of the CGI script that \n" + "starts the search engine (doxysearch) with the correct parameters. \n" + "A script with this name will be generated by doxygen. \n" + ); + cs->setDefaultValue("search.cgi"); + cs->addDependency("SEARCHENGINE"); + cs = addString(//"cgiURL", + "CGI_URL", + "The CGI_URL tag should be the absolute URL to the directory where the \n" + "cgi binaries are located. See the documentation of your http daemon for \n" + "details. \n" + ); + cs->addDependency("SEARCHENGINE"); + cs = addString(//"docURL", + "DOC_URL", + "The DOC_URL tag should be the absolute URL to the directory where the \n" + "documentation is located. If left blank the absolute path to the \n" + "documentation, with file:// prepended to it, will be used. \n" + ); + cs->addDependency("SEARCHENGINE"); + cs = addString(//"docAbsPath", + "DOC_ABSPATH", + "The DOC_ABSPATH tag should be the absolute path to the directory where the \n" + "documentation is located. If left blank the directory on the local machine \n" + "will be used. \n" + ); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("SEARCHENGINE"); + cs = addString(//"binAbsPath", + "BIN_ABSPATH", + "The BIN_ABSPATH tag must point to the directory where the doxysearch binary \n" + "is installed. \n" + ); + cs->setDefaultValue("/usr/local/bin/"); + cs->setWidgetType(ConfigString::Dir); + cs->addDependency("SEARCHENGINE"); + cl = addList( //"extDocPathList", + "EXT_DOC_PATHS", + "The EXT_DOC_PATHS tag can be used to specify one or more paths to \n" + "documentation generated for other projects. This allows doxysearch to search \n" + "the documentation for these projects as well. \n" + ); + cl->setWidgetType(ConfigList::Dir); + cl->addDependency("SEARCHENGINE"); + + // The IMAGE_PATTERNS tag is now officially obsolete. +} + + +void Config::parse(const QCString &s,const char *fn) { + config = Config::instance(); inputString = s; inputPosition = 0; yyLineNr = 1; |