summaryrefslogtreecommitdiffstats
path: root/src/config.l
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2001-04-01 17:28:27 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2001-04-01 17:28:27 (GMT)
commit790edce05edc348b237258995816da1708d67a73 (patch)
tree9ab56725fa008f006370f074ed17023811bbc55f /src/config.l
parentea948596d3aecd47d7459244fc4e28a2903d8985 (diff)
downloadDoxygen-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.l3611
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;