summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.h28
-rw-r--r--src/config.l2142
-rw-r--r--src/configoptions.cpp2179
-rw-r--r--src/configoptions.h26
-rw-r--r--src/docparser.cpp25
-rw-r--r--src/docsets.cpp8
-rw-r--r--src/doctokenizer.h25
-rw-r--r--src/doxygen.cpp68
-rw-r--r--src/doxygen.css2
-rw-r--r--src/doxygen_css.h2
-rw-r--r--src/entry.cpp1
-rw-r--r--src/formula.cpp3
-rw-r--r--src/ftvhelp.cpp4
-rw-r--r--src/htmlgen.cpp9
-rw-r--r--src/lang_cfg.h1
-rw-r--r--src/language.cpp9
-rw-r--r--src/latexgen.cpp8
-rw-r--r--src/libdoxycfg.pro.in4
-rw-r--r--src/libdoxygen.pro.in1
-rw-r--r--src/parserintf.h39
-rw-r--r--src/qhp.cpp2
-rw-r--r--src/scanner.l2
-rw-r--r--src/translator_vi.h1787
-rw-r--r--src/util.cpp110
-rw-r--r--src/util.h1
25 files changed, 4354 insertions, 2132 deletions
diff --git a/src/config.h b/src/config.h
index ea8fdad..e2cf96b 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,3 +1,21 @@
+/******************************************************************************
+ *
+ *
+ *
+ *
+ * Copyright (C) 1997-2008 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
#ifndef CONFIG_H
#define CONFIG_H
@@ -56,6 +74,7 @@ class ConfigOption
virtual void writeTemplate(QTextStream &t,bool sl,bool upd) = 0;
virtual void convertStrToVal() {}
virtual void substEnvVars() = 0;
+ virtual void writeXML(QTextStream&) {}
virtual void init() {}
QCString convertToComment(const QCString &s);
@@ -128,6 +147,7 @@ class ConfigList : public ConfigOption
t << "\n";
}
void substEnvVars();
+ void writeXML(QTextStream&);
void init() { m_value.clear(); }
private:
QStrList m_value;
@@ -167,6 +187,7 @@ class ConfigEnum : public ConfigOption
writeStringValue(t,m_value);
t << "\n";
}
+ void writeXML(QTextStream&);
void init() { m_value = m_defValue.copy(); }
private:
@@ -209,6 +230,7 @@ class ConfigString : public ConfigOption
t << "\n";
}
void substEnvVars();
+ void writeXML(QTextStream&);
void init() { m_value = m_defValue.copy(); }
private:
@@ -258,6 +280,7 @@ class ConfigInt : public ConfigOption
}
t << "\n";
}
+ void writeXML(QTextStream&);
void init() { m_value = m_defValue; }
private:
int m_value;
@@ -305,6 +328,7 @@ class ConfigBool : public ConfigOption
}
t << "\n";
}
+ void writeXML(QTextStream&);
void init() { m_value = m_defValue; }
private:
bool m_value;
@@ -321,6 +345,7 @@ class ConfigObsolete : public ConfigOption
ConfigObsolete(OptionType t) : ConfigOption(t) {}
void writeTemplate(QTextStream &,bool,bool) {}
void substEnvVars() {}
+ void writeXML(QTextStream&);
};
@@ -511,6 +536,9 @@ class Config
*/
void writeTemplate(QTextStream &t,bool shortIndex,bool updateOnly);
+ /** Write XML representation of the config file */
+ void writeXML(QTextStream &t);
+
/////////////////////////////
// internal API
/////////////////////////////
diff --git a/src/config.l b/src/config.l
index 6d1fc3e..0b07236 100644
--- a/src/config.l
+++ b/src/config.l
@@ -34,8 +34,10 @@
#include "config.h"
#include "version.h"
#include "portable.h"
+#include "util.h"
#include "lang_cfg.h"
+#include "configoptions.h"
#undef Config_getString
#undef Config_getInt
@@ -273,6 +275,92 @@ bool &Config::getBool(const char *fileName,int num,const char *name) const
}
/* -----------------------------------------------------------------
+ */
+
+void ConfigInt::writeXML(QTextStream& t)
+{
+ t << " <option type='int' "
+ "id='" << convertToXML(name()) << "' "
+ "docs='\n" << convertToXML(docs()) << "' "
+ "minval='" << m_minVal << "' "
+ "maxval='" << m_maxVal << "' "
+ "defval='" << m_defValue << "'/>" << endl;
+}
+
+void ConfigBool::writeXML(QTextStream& t)
+{
+ t << " <option type='bool' "
+ "id='" << convertToXML(name()) << "' "
+ "docs='\n" << convertToXML(docs()) << "' "
+ "defval='" << m_defValue << "'/>" << endl;
+}
+
+void ConfigString::writeXML(QTextStream& t)
+{
+ QString format;
+ switch (m_widgetType)
+ {
+ case String: format="string"; break;
+ case File: format="file"; break;
+ case Dir: format="dir"; break;
+ }
+ t << " <option type='string' "
+ "id='" << convertToXML(name()) << "' "
+ "format='" << format << "' "
+ "docs='\n" << convertToXML(docs()) << "' "
+ "defval='" << convertToXML(m_defValue) << "'/>" << endl;
+}
+
+void ConfigEnum::writeXML(QTextStream &t)
+{
+ t << " <option type='enum' "
+ "id='" << convertToXML(name()) << "' "
+ "defval='" << convertToXML(m_defValue) << "' "
+ "docs='\n" << convertToXML(docs()) << "'>" << endl;
+
+ char *enumVal = m_valueRange.first();
+ while (enumVal)
+ {
+ t << " <value name='" << convertToXML(enumVal) << "'/>" << endl;
+ enumVal = m_valueRange.next();
+ }
+
+ t << " </option>" << endl;
+}
+
+void ConfigList::writeXML(QTextStream &t)
+{
+ QString format;
+ switch (m_widgetType)
+ {
+ case String: format="string"; break;
+ case File: format="file"; break;
+ case Dir: format="dir"; break;
+ case FileAndDir: format="filedir"; break;
+ }
+ t << " <option type='list' "
+ "id='" << convertToXML(name()) << "' "
+ "format='" << format << "' "
+ "docs='\n" << convertToXML(docs()) << "'>" << endl;
+ char *enumVal = m_value.first();
+ while (enumVal)
+ {
+ t << " <value name='" << convertToXML(enumVal) << "'/>" << endl;
+ enumVal = m_value.next();
+ }
+
+ t << " </option>" << endl;
+}
+
+void ConfigObsolete::writeXML(QTextStream &t)
+{
+ t << " <option type='obsolete' "
+ "id='" << convertToXML(name()) << "' "
+ "docs='" << convertToXML(docs()) << "'/>" << endl;
+}
+
+
+/* -----------------------------------------------------------------
*
* static variables
*/
@@ -701,51 +789,6 @@ static void readIncludeFile(const char *incName)
/*@ ----------------------------------------------------------------------------
*/
-#if 0
-static void writeBoolValue(QTextStream &t,bool v)
-{
- if (v) t << "YES"; else t << "NO";
-}
-
-static void writeIntValue(QTextStream &t,int i)
-{
- t << i;
-}
-
-static void writeStringValue(QTextStream &t,QCString &s)
-{
- const char *p=s.data();
- char c;
- bool hasBlanks=FALSE;
- if (p)
- {
- while ((c=*p++)!=0 && !hasBlanks) hasBlanks = (c==' ' || c=='\n' || c=='\t');
- if (hasBlanks)
- t << "\"" << s << "\"";
- else
- t << s;
- }
-}
-
-static void writeStringList(QTextStream &t,QStrList &l)
-{
- const char *p = l.first();
- bool first=TRUE;
- while (p)
- {
- char c;
- const char *s=p;
- bool hasBlanks=FALSE;
- while ((c=*p++)!=0 && !hasBlanks) hasBlanks = (c==' ' || c=='\n' || c=='\t');
- if (!first) t << " ";
- first=FALSE;
- if (hasBlanks) t << "\"" << s << "\""; else t << s;
- p = l.next();
- if (p) t << " \\" << endl;
- }
-}
-#endif
-
void Config::writeTemplate(QTextStream &t,bool sl,bool upd)
{
t << "# Doxyfile " << versionString << endl << endl;
@@ -769,6 +812,30 @@ void Config::writeTemplate(QTextStream &t,bool sl,bool upd)
}
}
+void Config::writeXML(QTextStream &t)
+{
+ t << "<doxygenconfig>" << endl;
+ ConfigOption *option = m_options->first();
+ bool first=TRUE;
+ while (option)
+ {
+ if (option->kind()==ConfigOption::O_Info)
+ {
+ if (!first) t << " </group>" << endl;
+ t << " <group name='" << option->name() << "' "
+ "docs='" << option->docs() << "'>" << endl;
+ first=FALSE;
+ }
+ else
+ {
+ option->writeXML(t);
+ }
+ option = m_options->next();
+ }
+ if (!first) t << " </group>" << endl;
+ t << "</doxygenconfig>" << endl;
+}
+
void Config::convertStrToVal()
{
ConfigOption *option = m_options->first();
@@ -1403,1990 +1470,7 @@ void Config::create()
{
if (m_initialized) return;
m_initialized = TRUE;
-
- ConfigString *cs;
- ConfigEnum *ce;
- ConfigList *cl;
- ConfigInt *ci;
- ConfigBool *cb;
-
- // option definitions
- //-----------------------------------------------------------------------------------------------
- addInfo("Project","Project related configuration options");
- //-----------------------------------------------------------------------------------------------
-
- cs = addString(
- "DOXYFILE_ENCODING",
- "This tag specifies the encoding used for all characters in the config file \n"
- "that follow. The default is UTF-8 which is also the encoding used for all \n"
- "text before the first occurrence of this tag. Doxygen uses libiconv (or the \n"
- "iconv built into libc) for the transcoding. See \n"
- "http://www.gnu.org/software/libiconv for the list of possible encodings.\n"
- );
- cs->setDefaultValue("UTF-8");
- cs = addString(
- "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(
- "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(
- "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);
- cb = addBool(
- "CREATE_SUBDIRS",
- "If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n"
- "4096 sub-directories (in 2 levels) under the output directory of each output \n"
- "format and will distribute the generated files over these directories. \n"
- "Enabling this option can be useful when feeding doxygen a huge amount of \n"
- "source files, where putting all generated files in the same directory would \n"
- "otherwise cause performance problems for the file system. \n",
- FALSE
- );
- ce = addEnum(
- "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"
- "Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n"
- "Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \n"
- "Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \n"
- "Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \n"
- "Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \n"
- "Spanish, Swedish, and Ukrainian.\n",
- "English"
- );
-#ifdef LANG_ZA
- ce->addValue("Afrikaans");
-#endif
-#ifdef LANG_AR
- ce->addValue("Arabic");
-#endif
-#ifdef LANG_BR
- ce->addValue("Brazilian");
-#endif
-#ifdef LANG_CA
- ce->addValue("Catalan");
-#endif
-#ifdef LANG_CN
- ce->addValue("Chinese");
-#endif
-#ifdef LANG_TW
- ce->addValue("Chinese-Traditional");
-#endif
-#ifdef LANG_HR
- ce->addValue("Croatian");
-#endif
-#ifdef LANG_CZ
- ce->addValue("Czech");
-#endif
-#ifdef LANG_DK
- ce->addValue("Danish");
-#endif
-#ifdef LANG_NL
- ce->addValue("Dutch");
-#endif
- ce->addValue("English");
-#ifdef LANG_FI
- ce->addValue("Finnish");
-#endif
-#ifdef LANG_FR
- ce->addValue("French");
-#endif
-#ifdef LANG_DE
- ce->addValue("German");
-#endif
-#ifdef LANG_GR
- ce->addValue("Greek");
-#endif
-#ifdef LANG_HU
- ce->addValue("Hungarian");
-#endif
-#ifdef LANG_IT
- ce->addValue("Italian");
-#endif
-#ifdef LANG_JP
- ce->addValue("Japanese");
- ce->addValue("Japanese-en");
-#endif
-#ifdef LANG_KR
- ce->addValue("Korean");
- ce->addValue("Korean-en");
-#endif
-#ifdef LANG_LI
- ce->addValue("Lithuanian");
-#endif
-#ifdef LANG_NO
- ce->addValue("Norwegian");
-#endif
-#ifdef LANG_MK
- ce->addValue("Macedonian");
-#endif
-#ifdef LANG_FA
- ce->addValue("Farsi");
- ce->addValue("Persian");
-#endif
-#ifdef LANG_PL
- ce->addValue("Polish");
-#endif
-#ifdef LANG_PT
- ce->addValue("Portuguese");
-#endif
-#ifdef LANG_RO
- ce->addValue("Romanian");
-#endif
-#ifdef LANG_RU
- ce->addValue("Russian");
-#endif
-#ifdef LANG_SR
- ce->addValue("Serbian");
-#endif
-#ifdef LANG_SC
- ce->addValue("Serbian-Cyrilic");
-#endif
-#ifdef LANG_SK
- ce->addValue("Slovak");
-#endif
-#ifdef LANG_SI
- ce->addValue("Slovene");
-#endif
-#ifdef LANG_ES
- ce->addValue("Spanish");
-#endif
-#ifdef LANG_SE
- ce->addValue("Swedish");
-#endif
-#ifdef LANG_UA
- ce->addValue("Ukrainian");
-#endif
-
-#if 0
- cb = addBool(
- "USE_WINDOWS_ENCODING",
- "This tag can be used to specify the encoding used in the generated output. \n"
- "The encoding is not always determined by the language that is chosen, \n"
- "but also whether or not the output is meant for Windows or non-Windows users. \n"
- "In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES \n"
- "forces the Windows encoding (this is the default for the Windows binary), \n"
- "whereas setting the tag to NO uses a Unix-style encoding (the default for \n"
- "all platforms other than Windows).\n",
-#if defined(_WIN32) || defined(__CYGWIN__)
- TRUE
-#else
- FALSE
-#endif
- );
-#endif
- addObsolete("USE_WINDOWS_ENCODING");
-
- cb = addBool(
- "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(
- "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
- );
- cl = addList(
- "ABBREVIATE_BRIEF",
- "This tag implements a quasi-intelligent brief description abbreviator \n"
- "that is used to form the text in various listings. Each string \n"
- "in this list, if found as the leading text of the brief description, will be \n"
- "stripped from the text and the result after processing the whole list, is \n"
- "used as the annotated text. Otherwise, the brief description is used as-is. \n"
- "If left blank, the following values are used (\"$name\" is automatically \n"
- "replaced with the name of the entity): \"The $name class\" \"The $name widget\" \n"
- "\"The $name file\" \"is\" \"provides\" \"specifies\" \"contains\" \n"
- "\"represents\" \"a\" \"an\" \"the\"\n"
- );
- cb = addBool(
- "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(
- "INLINE_INHERITED_MEMB",
- "If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all \n"
- "inherited members of a class in the documentation of that class as if those \n"
- "members were ordinary class members. Constructors, destructors and assignment \n"
- "operators of the base classes will not be shown. \n",
- FALSE
- );
- cb = addBool(
- "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",
- TRUE
- );
- cl = addList(
- "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. The tag can be used to show relative paths in the file list. \n"
- "If left blank the directory from which doxygen is run is used as the \n"
- "path to strip. \n"
- );
- cl->addDependency("FULL_PATH_NAMES");
- cl = addList(
- "STRIP_FROM_INC_PATH",
- "The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of \n"
- "the path mentioned in the documentation of a class, which tells \n"
- "the reader which header file to include in order to use a class. \n"
- "If left blank only the name of the header file containing the class \n"
- "definition is used. Otherwise one should specify the include paths that \n"
- "are normally passed to the compiler using the -I flag.\n"
- );
- cb = addBool(
- "SHORT_NAMES",
- "If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter \n"
- "(but less readable) file names. This can be useful is your file systems \n"
- "doesn't support long names like on DOS, Mac, or CD-ROM. \n",
- FALSE
- );
- cb = addBool(
- "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 regular Qt-style comments \n"
- "(thus requiring an explicit @brief command for a brief description.) \n",
- FALSE
- );
- cb = addBool(
- "QT_AUTOBRIEF",
- "If the QT_AUTOBRIEF tag is set to YES then Doxygen will \n"
- "interpret the first line (until the first dot) of a Qt-style \n"
- "comment as the brief description. If set to NO, the comments \n"
- "will behave just like regular Qt-style comments (thus requiring \n"
- "an explicit \\brief command for a brief description.) \n",
- FALSE
- );
- cb = addBool(
- "MULTILINE_CPP_IS_BRIEF",
- "The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen \n"
- "treat a multi-line C++ special comment block (i.e. a block of //! or /// \n"
- "comments) as a brief description. This used to be the default behaviour. \n"
- "The new default is to treat a multi-line C++ comment block as a detailed \n"
- "description. Set this tag to YES if you prefer the old behaviour instead. \n",
- FALSE
- );
- //cb = addBool(
- // "DETAILS_AT_TOP",
- // "If the DETAILS_AT_TOP tag is set to YES then Doxygen \n"
- // "will output the detailed description near the top, like JavaDoc.\n"
- // "If set to NO, the detailed description appears after the member \n"
- // "documentation. \n",
- // FALSE
- // );
- cb = addBool(
- "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"
- "re-implements. \n",
- TRUE
- );
- cb = addBool(
- "SEPARATE_MEMBER_PAGES",
- "If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce \n"
- "a new page for each member. If set to NO, the documentation of a member will \n"
- "be part of the file/class/namespace that contains it.\n",
- FALSE
- );
- ci = addInt(
- "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(
- "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"
- );
- cb = addBool(
- "OPTIMIZE_OUTPUT_FOR_C",
- "Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C \n"
- "sources 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(
- "OPTIMIZE_OUTPUT_JAVA",
- "Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java \n"
- "sources only. Doxygen will then generate output that is more tailored for \n"
- "Java. For instance, namespaces will be presented as packages, qualified \n"
- "scopes will look different, etc. \n",
- FALSE
- );
- cb = addBool(
- "OPTIMIZE_FOR_FORTRAN",
- "Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran \n"
- "sources only. Doxygen will then generate output that is more tailored for \n"
- "Fortran. \n",
- FALSE
- );
- cb = addBool(
- "OPTIMIZE_OUTPUT_VHDL",
- "Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL \n"
- "sources. Doxygen will then generate output that is tailored for \n"
- "VHDL. \n",
- FALSE
- );
- cl = addList( "EXTENSION_MAPPING",
- "Doxygen selects the parser to use depending on the extension of the files it parses. \n"
- "With this tag you can assign which parser to use for a given extension. \n"
- "Doxygen has a built-in mapping, but you can override or extend it using this tag. \n"
- "The format is ext=language, where ext is a file extension, and language is one of \n"
- "the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, \n"
- "Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat \n"
- ".inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), \n"
- "use: inc=Fortran f=C\n"
- );
- cb = addBool(
- "BUILTIN_STL_SUPPORT",
- "If you use STL classes (i.e. std::string, std::vector, etc.) but do not want \n"
- "to include (a tag file for) the STL sources as input, then you should \n"
- "set this tag to YES in order to let doxygen match functions declarations and \n"
- "definitions whose arguments contain STL classes (e.g. func(std::string); v.s. \n"
- "func(std::string) {}). This also make the inheritance and collaboration \n"
- "diagrams that involve STL classes more complete and accurate. \n",
- FALSE
- );
- cb = addBool(
- "CPP_CLI_SUPPORT",
- "If you use Microsoft's C++/CLI language, you should set this option to YES to\n"
- "enable parsing support.\n",
- FALSE
- );
- cb = addBool(
- "SIP_SUPPORT",
- "Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. \n"
- "Doxygen will parse them like normal C++ but will assume all classes use public \n"
- "instead of private inheritance when no explicit protection keyword is present. \n",
- FALSE
- );
- cb = addBool( "IDL_PROPERTY_SUPPORT",
- "For Microsoft's IDL there are propget and propput attributes to indicate getter \n"
- "and setter methods for a property. Setting this option to YES (the default) \n"
- "will make doxygen to replace the get and set methods by a property in the \n"
- "documentation. This will only work if the methods are indeed getting or \n"
- "setting a simple type. If this is not the case, or you want to show the \n"
- "methods anyway, you should set this option to NO. \n",
- TRUE
- );
- cb = addBool(
- "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
- );
- cb = addBool(
- "SUBGROUPING",
- "Set the SUBGROUPING tag to YES (the default) to allow class member groups of \n"
- "the same type (for instance a group of public functions) to be put as a \n"
- "subgroup of that type (e.g. under the Public Functions section). Set it to \n"
- "NO to prevent subgrouping. Alternatively, this can be done per class using \n"
- "the \\nosubgrouping command. \n",
- TRUE
- );
- cb = addBool( "TYPEDEF_HIDES_STRUCT",
- "When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum \n"
- "is documented as struct, union, or enum with the name of the typedef. So \n"
- "typedef struct TypeS {} TypeT, will appear in the documentation as a struct \n"
- "with name TypeT. When disabled the typedef will appear as a member of a file, \n"
- "namespace, or class. And the struct will be named TypeS. This can typically \n"
- "be useful for C code in case the coding convention dictates that all compound \n"
- "types are typedef'ed and only the typedef is referenced, never the tag name.\n",
- FALSE
- );
- ci = addInt(
- "SYMBOL_CACHE_SIZE",
- "The SYMBOL_CACHE_SIZE determines the size of the internal cache use to \n"
- "determine which symbols to keep in memory and which to flush to disk.\n"
- "When the cache is full, less often used symbols will be written to disk.\n"
- "For small to medium size projects (<1000 input files) the default value is \n"
- "probably good enough. For larger projects a too small cache size can cause \n"
- "doxygen to be busy swapping symbols to and from disk most of the time \n"
- "causing a significant performance penality. \n"
- "If the system has enough physical memory increasing the cache will improve the \n"
- "performance by keeping more symbols in memory. Note that the value works on \n"
- "a logarithmic scale so increasing the size by one will rougly double the \n"
- "memory usage. The cache size is given by this formula: \n"
- "2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, \n"
- "corresponding to a cache size of 2^16 = 65536 symbols\n",
- 0,9,0
- );
-
- //-----------------------------------------------------------------------------------------------
- addInfo("Build","Build related configuration options");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "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(
- "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(
- "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(
- "EXTRACT_LOCAL_CLASSES",
- "If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) \n"
- "defined locally in source files will be included in the documentation. \n"
- "If set to NO only classes defined in header files are included. \n",
- TRUE
- );
- cb = addBool(
- "EXTRACT_LOCAL_METHODS",
- "This flag is only useful for Objective-C code. When set to YES local \n"
- "methods, which are defined in the implementation section but not in \n"
- "the interface are included in the documentation. \n"
- "If set to NO (the default) only methods in the interface are included. \n",
- FALSE
- );
- cb = addBool(
- "EXTRACT_ANON_NSPACES",
- "If this flag is set to YES, the members of anonymous namespaces will be \n"
- "extracted and appear in the documentation as a namespace called \n"
- "'anonymous_namespace{file}', where file will be replaced with the base \n"
- "name of the file that contains the anonymous namespace. By default \n"
- "anonymous namespace are hidden. \n",
- FALSE
- );
- cb = addBool(
- "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(
- "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 classes will be included in the various \n"
- "overviews. This option has no effect if EXTRACT_ALL is enabled. \n",
- FALSE
- );
- cb = addBool(
- "HIDE_FRIEND_COMPOUNDS",
- "If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \n"
- "friend (class|struct|union) declarations. \n"
- "If set to NO (the default) these declarations will be included in the \n"
- "documentation. \n",
- FALSE
- );
- cb = addBool(
- "HIDE_IN_BODY_DOCS",
- "If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any \n"
- "documentation blocks found inside the body of a function. \n"
- "If set to NO (the default) these blocks will be appended to the \n"
- "function's detailed documentation block. \n",
- FALSE
- );
- cb = addBool(
- "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(
- "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"
- "and Mac users are advised to set this option to NO.\n",
- portable_fileSystemIsCaseSensitive()
- );
- cb = addBool(
- "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(
- "SHOW_INCLUDE_FILES",
- "If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \n"
- "will put a list of the files that are included by a file in the documentation \n"
- "of that file. \n",
- TRUE
- );
- cb = addBool(
- "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(
- "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(
- "SORT_BRIEF_DOCS",
- "If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the \n"
- "brief documentation of file, namespace and class members alphabetically \n"
- "by member name. If set to NO (the default) the members will appear in \n"
- "declaration order. \n",
- FALSE
- );
- cb = addBool(
- "SORT_GROUP_NAMES",
- "If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the \n"
- "hierarchy of group names into alphabetical order. If set to NO (the default) \n"
- "the group names will appear in their defined order. \n",
- FALSE
- );
- cb = addBool(
- "SORT_BY_SCOPE_NAME",
- "If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \n"
- "sorted by fully-qualified names, including namespaces. If set to \n"
- "NO (the default), the class list will be sorted only by class name, \n"
- "not including the namespace part. \n"
- "Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n"
- "Note: This option applies only to the class list, not to the \n"
- "alphabetical list.\n",
- FALSE
- );
-
- cb = addBool(
- "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(
- "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(
- "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
- );
- cb = addBool(
- "GENERATE_DEPRECATEDLIST",
- "The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or \n"
- "disable (NO) the deprecated list. This list is created by putting \n"
- "\\deprecated commands in the documentation.\n",
- TRUE
- );
- cl = addList(
- "ENABLED_SECTIONS",
- "The ENABLED_SECTIONS tag can be used to enable conditional \n"
- "documentation sections, marked by \\if sectionname ... \\endif. \n"
- );
- ci = addInt(
- "MAX_INITIALIZER_LINES",
- "The MAX_INITIALIZER_LINES tag determines the maximum number of lines \n"
- "the initial value of a variable or define consists 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(
- "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
- );
- cb = addBool(
- "SHOW_DIRECTORIES",
- "If the sources in your project are distributed over multiple directories \n"
- "then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy \n"
- "in the documentation. The default is NO.\n",
- FALSE
- );
- cb = addBool(
- "SHOW_FILES",
- "Set the SHOW_FILES tag to NO to disable the generation of the Files page.\n"
- "This will remove the Files entry from the Quick Index and from the \n"
- "Folder Tree View (if specified). The default is YES.\n",
- TRUE
- );
- cb = addBool(
- "SHOW_NAMESPACES",
- "Set the SHOW_NAMESPACES tag to NO to disable the generation of the \n"
- "Namespaces page. This will remove the Namespaces entry from the Quick Index\n"
- "and from the Folder Tree View (if specified). The default is YES.\n",
- TRUE
- );
- cs = addString( "FILE_VERSION_FILTER",
- "The FILE_VERSION_FILTER tag can be used to specify a program or script that \n"
- "doxygen should invoke to get the current version for each file (typically from \n"
- "the version control system). Doxygen will invoke the program by executing (via \n"
- "popen()) the command <command> <input-file>, where <command> is the value of \n"
- "the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file \n"
- "provided by doxygen. Whatever the program writes to standard output \n"
- "is used as the file version. See the manual for examples. \n"
- );
- cs->setWidgetType(ConfigString::File);
- cs = addString( "LAYOUT_FILE",
- "The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by \n"
- "doxygen. The layout file controls the global structure of the generated output files \n"
- "in an output format independent way. The create the layout file that represents \n"
- "doxygen's defaults, run doxygen with the -l option. You can optionally specify a \n"
- "file name after the option, if omitted DoxygenLayout.xml will be used as the name \n"
- "of the layout file.\n"
- );
- cs->setWidgetType(ConfigString::File);
- addObsolete("DETAILS_AT_TOP");
-
-
- //-----------------------------------------------------------------------------------------------
- addInfo( "Messages","configuration options related to warning and progress messages");
- //-----------------------------------------------------------------------------------------------
-
- cb = addBool(
- "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(
- "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(
- "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
- );
- cb = addBool(
- "WARN_IF_DOC_ERROR",
- "If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for \n"
- "potential errors in the documentation, such as not documenting some \n"
- "parameters in a documented function, or documenting parameters that \n"
- "don't exist or using markup commands wrongly. \n",
- TRUE
- );
- cb = addBool( "WARN_NO_PARAMDOC",
- "This WARN_NO_PARAMDOC option can be abled to get warnings for \n"
- "functions that are documented, but have no documentation for their parameters \n"
- "or return value. If set to NO (the default) doxygen will only warn about \n"
- "wrong or incomplete parameter documentation, but not about the absence of \n"
- "documentation.\n",
- FALSE
- );
- cs = addString(
- "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. Optionally the format may contain \n"
- "$version, which will be replaced by the version of the file (if it could \n"
- "be obtained via FILE_VERSION_FILTER)\n"
- );
- cs->setDefaultValue("$file:$line: $text");
- cs = addString(
- "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"
- );
- cs->setWidgetType(ConfigString::File);
- //-----------------------------------------------------------------------------------------------
- addInfo( "Input","configuration options related to the input files");
- //-----------------------------------------------------------------------------------------------
- cl = addList(
- "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);
- cs = addString( "INPUT_ENCODING",
- "This tag can be used to specify the character encoding of the source files \n"
- "that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is \n"
- "also the default input encoding. Doxygen uses libiconv (or the iconv built \n"
- "into libc) for the transcoding. See http://www.gnu.org/software/libiconv for \n"
- "the list of possible encodings.\n"
- );
- cs->setDefaultValue("UTF-8");
- cl = addList(
- "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 the following patterns are tested: \n"
- "*.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx \n"
- "*.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90\n"
- );
- cb = addBool(
- "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(
- "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"
- );
- cb = addBool(
- "EXCLUDE_SYMLINKS",
- "The EXCLUDE_SYMLINKS tag can be used select whether or not files or \n"
- "directories that are symbolic links (a Unix filesystem feature) are excluded \n"
- "from the input. \n",
- FALSE
- );
- cl->setWidgetType(ConfigList::FileAndDir);
- cl = addList(
- "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. Note that the wildcards are matched \n"
- "against the file with absolute path, so to exclude all test directories \n"
- "for example use the pattern */test/* \n"
- );
- cl = addList(
- "EXCLUDE_SYMBOLS",
- "The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names \n"
- "(namespaces, classes, functions, etc.) that should be excluded from the \n"
- "output. The symbol name can be a fully qualified name, a word, or if the \n"
- "wildcard * is used, a substring. Examples: ANamespace, AClass, \n"
- "AClass::ANamespace, ANamespace::*Test \n"
- );
- cl = addList(
- "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(
- "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"
- );
- cb = addBool(
- "EXAMPLE_RECURSIVE",
- "If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be \n"
- "searched for input files to be used with the \\include or \\dontinclude \n"
- "commands irrespective of the value of the RECURSIVE tag. \n"
- "Possible values are YES and NO. If left blank NO is used. \n",
- FALSE
- );
- cl = addList(
- "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(
- "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. If FILTER_PATTERNS is specified, this tag will be \n"
- "ignored. \n"
- );
- cs->setWidgetType(ConfigString::File);
- cl = addList(
- "FILTER_PATTERNS",
- "The FILTER_PATTERNS tag can be used to specify filters on a per file pattern \n"
- "basis. Doxygen will compare the file name with each pattern and apply the \n"
- "filter if there is a match. The filters are a list of the form: \n"
- "pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further \n"
- "info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER \n"
- "is applied to all files. \n"
- );
- cl->setWidgetType(ConfigList::File);
- cb = addBool(
- "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 (i.e. when SOURCE_BROWSER is set to YES). \n",
- FALSE
- );
- //-----------------------------------------------------------------------------------------------
- addInfo( "Source Browser","configuration options related to source browsing");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "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"
- "Note: To get rid of all source code in the generated output, make sure also \n"
- "VERBATIM_HEADERS is set to NO. \n",
- FALSE
- );
- cb = addBool(
- "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(
- "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( "REFERENCED_BY_RELATION",
- "If the REFERENCED_BY_RELATION tag is set to YES \n"
- "then for each documented function all documented \n"
- "functions referencing it will be listed. \n",
- FALSE
- );
- cb = addBool( "REFERENCES_RELATION",
- "If the REFERENCES_RELATION tag is set to YES \n"
- "then for each documented function all documented entities \n"
- "called/used by that function will be listed. \n",
- FALSE
- );
- cb = addBool( "REFERENCES_LINK_SOURCE",
- "If the REFERENCES_LINK_SOURCE tag is set to YES (the default)\n"
- "and SOURCE_BROWSER tag is set to YES, then the hyperlinks from\n"
- "functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will\n"
- "link to the source code. Otherwise they will link to the documentstion.\n",
- TRUE
- );
- cb = addBool(
- "USE_HTAGS",
- "If the USE_HTAGS tag is set to YES then the references to source code \n"
- "will point to the HTML generated by the htags(1) tool instead of doxygen \n"
- "built-in source browser. The htags tool is part of GNU's global source \n"
- "tagging system (see http://www.gnu.org/software/global/global.html). You \n"
- "will need version 4.8.6 or higher. \n",
- FALSE
- );
- cb->addDependency("SOURCE_BROWSER");
- cb = addBool(
- "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
- );
-
- //-----------------------------------------------------------------------------------------------
- addInfo( "Index","configuration options related to the alphabetical class index");
- //-----------------------------------------------------------------------------------------------
-
- cb = addBool(
- "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(
- "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(
- "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(
- "GENERATE_HTML",
- "If the GENERATE_HTML tag is set to YES (the default) Doxygen will \n"
- "generate HTML output. \n",
- TRUE
- );
- cs = addString(
- "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(
- "HTML_FILE_EXTENSION",
- "The HTML_FILE_EXTENSION tag can be used to specify the file extension for \n"
- "each generated HTML page (for example: .htm,.php,.asp). If it is left blank \n"
- "doxygen will generate files with .html extension.\n"
- );
- cs->setDefaultValue(".html");
- cs->addDependency("GENERATE_HTML");
- cs = addString(
- "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(
- "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(
- "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. Note that doxygen will try to copy \n"
- "the style sheet file to the HTML output directory, so don't put your own \n"
- "stylesheet in the HTML output directory as well, or it will be erased! \n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_HTML");
- cb = addBool(
- "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(
- "HTML_DYNAMIC_SECTIONS",
- "If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML \n"
- "documentation will contain sections that can be hidden and shown after the \n"
- "page has loaded. For this to work a browser that supports \n"
- "JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox \n"
- "Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). \n",
- FALSE
- );
- cb->addDependency("GENERATE_HTML");
-
- /////////////////////////////////////////////////////////
- // Docsets //////////////////////////////////////////////
- /////////////////////////////////////////////////////////
-
- cb = addBool( "GENERATE_DOCSET",
- "If the GENERATE_DOCSET tag is set to YES, additional index files \n"
- "will be generated that can be used as input for Apple's Xcode 3 \n"
- "integrated development environment, introduced with OSX 10.5 (Leopard). \n"
- "To create a documentation set, doxygen will generate a Makefile in the \n"
- "HTML output directory. Running make will produce the docset in that \n"
- "directory and running \"make install\" will install the docset in \n"
- "~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find \n"
- "it at startup. \n"
- "See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html "
- "for more information. \n",
- FALSE
- );
- cb->addDependency("GENERATE_HTML");
- cs = addString(
- "DOCSET_FEEDNAME",
- "When GENERATE_DOCSET tag is set to YES, this tag determines the name of the \n"
- "feed. A documentation feed provides an umbrella under which multiple \n"
- "documentation sets from a single provider (such as a company or product suite) \n"
- "can be grouped. \n"
- );
- cs->setDefaultValue("Doxygen generated docs");
- cs->addDependency("GENERATE_DOCSET");
- cs = addString(
- "DOCSET_BUNDLE_ID",
- "When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \n"
- "should uniquely identify the documentation set bundle. This should be a \n"
- "reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen \n"
- "will append .docset to the name. \n"
- );
- cs->setDefaultValue("org.doxygen.Project");
- cs->addDependency("GENERATE_DOCSET");
-
- /////////////////////////////////////////////////////////
- // HTMLHELP /////////////////////////////////////////////
- /////////////////////////////////////////////////////////
-
- cb = addBool(
- "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 compiled HTML help file (.chm) \n"
- "of the generated HTML documentation. \n",
- FALSE
- );
- cb->addDependency("GENERATE_HTML");
- cs = addString(
- "CHM_FILE",
- "If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \n"
- "be used to specify the file name of the resulting .chm file. You \n"
- "can add a path in front of the file if the result should not be \n"
- "written to the html output directory. \n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_HTML");
- cs = addString(
- "HHC_LOCATION",
- "If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \n"
- "be used to specify the location (absolute path including file name) of \n"
- "the HTML help compiler (hhc.exe). If non-empty doxygen will try to run \n"
- "the HTML help compiler on the generated index.hhp.\n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_HTML");
-#if 0
- cs = addString(
- "QTHELP_FILE",
- "If the GENERATE_HTMLHELP tag is set to YES, the QTHELP_FILE tag can \n"
- "be used to specify the file name of the resulting .(qch|qhp) file. \n"
- "You can add a path in front of the file if the result should not be \n"
- "written to the html output directory. \n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_HTML");
- cs = addString(
- "QTHELP_CONFIG",
- "If DOXYGEN2QTHELP_LOC is set, QTHELP_CONFIG must specify the file name \n"
- "of a config file to pass to doxygen2qthelp. \n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_HTML");
- cs = addString(
- "DOXYGEN2QTHELP_LOC",
- "If the GENERATE_HTMLHELP tag is set to YES, the DOXYGEN2QTHELP_LOC tag \n"
- "can be used to specify the location (absolute path including file name) of \n"
- "the doxygen2qthelp tool. If non-empty doxygen will try to run doxygen2qthelp \n"
- "on the generated index.hhp.\n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_HTML");
-#endif
- addObsolete("QTHELP_FILE");
- addObsolete("QTHELP_CONFIG");
- addObsolete("DOXYGEN2QTHELP_LOC");
- cb = addBool(
- "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");
- cs = addString(
- "CHM_INDEX_ENCODING",
- "If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING\n"
- "is used to encode HtmlHelp index (hhk), content (hhc) and project file\n"
- "content.\n"
- );
- cs->addDependency("GENERATE_HTML");
- cb = addBool(
- "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(
- "TOC_EXPAND",
- "The TOC_EXPAND flag can be set to 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");
-
- /////////////////////////////////////////////////////////
- // QT HELP //////////////////////////////////////////////
- /////////////////////////////////////////////////////////
-
- cb = addBool(
- "GENERATE_QHP",
- "If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER \n"
- "are set, an additional index file will be generated that can be used as input for \n"
- "Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated \n"
- "HTML documentation. \n",
- FALSE
- );
- cb->addDependency("GENERATE_HTML");
- cs = addString(
- "QCH_FILE",
- "If the QHG_LOCATION tag is specified, the QCH_FILE tag can \n"
- "be used to specify the file name of the resulting .qch file. \n"
- "The path specified is relative to the HTML output folder. \n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_QHP");
- cs = addString(
- "QHP_NAMESPACE",
- "The QHP_NAMESPACE tag specifies the namespace to use when generating \n"
- "Qt Help Project output. For more information please see \n"
- "http://doc.trolltech.com/qthelpproject.html#namespace \n"
- );
- cs->addDependency("GENERATE_QHP");
- cs = addString(
- "QHP_VIRTUAL_FOLDER",
- "The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating \n"
- "Qt Help Project output. For more information please see \n"
- "http://doc.trolltech.com/qthelpproject.html#virtual-folders \n"
- );
- cs->setDefaultValue("doc");
- cs->addDependency("GENERATE_QHP");
-
- cs = addString(
- "QHP_CUSTOM_FILTER_NAME",
- "If QHP_CUSTOM_FILTER_NAME is set, it specifies the name of a custom filter to add. \n"
- "For more information please see \n"
- "http://doc.trolltech.com/qthelpproject.html#custom-filters \n"
- );
- cs->addDependency("GENERATE_QHP");
-
- cs = addString(
- "QHP_CUST_FILTER_ATTRS",
- "The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add."
- "For more information please see \n"
- "<a href=\"http://doc.trolltech.com/qthelpproject.html#custom-filters\">Qt Help Project / Custom Filters</a>. \n"
- );
- cs->addDependency("GENERATE_QHP");
-
- cs = addString(
- "QHP_SECT_FILTER_ATTRS",
- "The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's \n"
- "filter section matches. \n"
- "<a href=\"http://doc.trolltech.com/qthelpproject.html#filter-attributes\">Qt Help Project / Filter Attributes</a>. \n"
- );
- cs->addDependency("GENERATE_QHP");
-
- cs = addString(
- "QHG_LOCATION",
- "If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can \n"
- "be used to specify the location of Qt's qhelpgenerator. \n"
- "If non-empty doxygen will try to run qhelpgenerator on the generated \n"
- ".qhp file .\n"
- );
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_QHP");
-
- /////////////////////////////////////////////////////////
- // MISC /////////////////////////////////////////////////
- /////////////////////////////////////////////////////////
-
- cb = addBool(
- "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(
- "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");
- ce = addEnum(
- "GENERATE_TREEVIEW",
- "The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n"
- "structure should be generated to display hierarchical information.\n"
- "If the tag value is set to FRAME, a side panel will be generated\n"
- "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, DHTML, CSS and frames is required (for instance Mozilla 1.0+, \n"
- "Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \n"
- "probably better off using the HTML help feature. Other possible values \n"
- "for this tag are: HIERARCHIES, which will generate the Groups, Directories,\n"
- "and Class Hierarchy pages using a tree view instead of an ordered list;\n"
- "ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which\n"
- "disables this behavior completely. For backwards compatibility with previous\n"
- "releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE\n"
- "respectively.\n",
- "NONE"
- );
- ce->addValue("NONE");
- ce->addValue("FRAME");
- ce->addValue("HIERARCHIES");
- ce->addValue("ALL");
- cb->addDependency("GENERATE_HTML");
- ci = addInt(
- "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");
- ci = addInt(
- "FORMULA_FONTSIZE",
- "Use this tag to change the font size of Latex formulas included \n"
- "as images in the HTML documentation. The default is 10. Note that \n"
- "when you change the font size after a successful doxygen run you need \n"
- "to manually remove any form_*.png images from the HTML output directory \n"
- "to force them to be regenerated. \n",
- 8,50,10
- );
- ci->addDependency("GENERATE_HTML");
-
- //-----------------------------------------------------------------------------------------------
- addInfo( "LaTeX","configuration options related to the LaTeX output");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "GENERATE_LATEX",
- "If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \n"
- "generate Latex output. \n",
- TRUE
- );
- cs = addString(
- "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");
-#if 0
- cs = addString( "LATEX_OUTPUT_ENCODING",
- "The LATEX_OUTPUT_ENCODING specifies the character encoding of the LaTeX output.\n"
- "produced by doxygen. If left blank ISO-8859-1 will be used. Doxygen uses \n"
- "libiconv for the transcoding. See http://www.gnu.org/software/libiconv for \n"
- "the list of possible encodings.\n"
- );
- cs->setDefaultValue("ISO-8859-1");
- cs->addDependency("GENERATE_LATEX");
-#endif
- cs = addString(
- "LATEX_CMD_NAME",
- "The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be \n"
- "invoked. If left blank `latex' will be used as the default command name. \n"
- );
- cs->setDefaultValue("latex");
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_LATEX");
- cs = addString(
- "MAKEINDEX_CMD_NAME",
- "The MAKEINDEX_CMD_NAME tag can be used to specify the command name to \n"
- "generate index for LaTeX. If left blank `makeindex' will be used as the \n"
- "default command name. \n"
- );
- cs->setDefaultValue("makeindex");
- cs->setWidgetType(ConfigString::File);
- cs->addDependency("GENERATE_LATEX");
- cb = addBool(
- "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(
- "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(
- "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(
- "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(
- "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",
- TRUE
- );
- cb->addDependency("GENERATE_LATEX");
- cb = addBool(
- "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",
- TRUE
- );
- cb->addDependency("GENERATE_LATEX");
- cb = addBool(
- "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");
- cb = addBool(
- "LATEX_HIDE_INDICES",
- "If LATEX_HIDE_INDICES is set to YES then doxygen will not \n"
- "include the index chapters (such as File Index, Compound Index, etc.) \n"
- "in the output. \n",
- FALSE
- );
- cb->addDependency("GENERATE_LATEX");
- //-----------------------------------------------------------------------------------------------
- addInfo( "RTF","configuration options related to the RTF output");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "GENERATE_RTF",
- "If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n"
- "The RTF output is optimized for Word 97 and may not look very pretty with \n"
- "other RTF readers or editors.\n",
- FALSE
- );
- cs = addString(
- "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");
-#if 0
- cs = addString( "RTF_OUTPUT_ENCODING",
- "The RTF_OUTPUT_ENCODING specifies the character encoding of the RTF output.\n"
- "produced by doxygen. If left blank ISO-8859-1 will be used. Doxygen uses \n"
- "libiconv for the transcoding. See http://www.gnu.org/software/libiconv for \n"
- "the list of possible encodings.\n"
- );
- cs->setDefaultValue("ISO-8859-1");
- cs->addDependency("GENERATE_RTF");
-#endif
- cb = addBool(
- "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(
- "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 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(
- "RTF_STYLESHEET_FILE",
- "Load stylesheet definitions from file. Syntax is similar to doxygen's \n"
- "config file, i.e. a series of assignments. 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(
- "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(
- "GENERATE_MAN",
- "If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n"
- "generate man pages \n",
- FALSE
- );
- cs = addString(
- "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(
- "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");
- cb = addBool(
- "MAN_LINKS",
- "If the MAN_LINKS tag is set to YES and Doxygen generates man output, \n"
- "then it will generate one additional man file for each entity \n"
- "documented in the real man page(s). These additional files \n"
- "only source the real man page, but without them the man command \n"
- "would be unable to find the correct page. The default is NO. \n",
- FALSE
- );
- cb->addDependency("GENERATE_MAN");
- //-----------------------------------------------------------------------------------------------
- addInfo( "XML","configuration options related to the XML output");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "GENERATE_XML",
- "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. \n",
- FALSE
- );
- cs = addString(
- "XML_OUTPUT",
- "The XML_OUTPUT tag is used to specify where the XML 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 `xml' will be used as the default path. \n"
- );
- cs->setDefaultValue("xml");
- cs->setWidgetType(ConfigString::Dir);
- cs->addDependency("GENERATE_XML");
- cs = addString(
- "XML_SCHEMA",
- "The XML_SCHEMA tag can be used to specify an XML schema, \n"
- "which can be used by a validating XML parser to check the \n"
- "syntax of the XML files. \n"
- );
- cs->addDependency("GENERATE_XML");
- cs = addString(
- "XML_DTD",
- "The XML_DTD tag can be used to specify an XML DTD, \n"
- "which can be used by a validating XML parser to check the \n"
- "syntax of the XML files. \n"
- );
- cs->addDependency("GENERATE_XML");
- cb = addBool(
- "XML_PROGRAMLISTING",
- "If the XML_PROGRAMLISTING tag is set to YES Doxygen will \n"
- "dump the program listings (including syntax highlighting \n"
- "and cross-referencing information) to the XML output. Note that \n"
- "enabling this will significantly increase the size of the XML output. \n",
- TRUE
- );
- cb->addDependency("GENERATE_XML");
-
- //--------------------------------------------------------------------------
- addInfo( "DEF","configuration options for the AutoGen Definitions output");
- //--------------------------------------------------------------------------
- cb = addBool("GENERATE_AUTOGEN_DEF",
-
- "If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will \n"
- "generate an AutoGen Definitions (see autogen.sf.net) file \n"
- "that captures the structure of the code including all \n"
- "documentation. Note that this feature is still experimental \n"
- "and incomplete at the moment. \n",
-
- FALSE );
- //-----------------------------------------------------------------------------------------------
- addInfo( "PerlMod","configuration options related to the Perl module output");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "GENERATE_PERLMOD",
- "If the GENERATE_PERLMOD tag is set to YES Doxygen will \n"
- "generate a Perl module file that captures the structure of \n"
- "the code including all documentation. Note that this \n"
- "feature is still experimental and incomplete at the \n"
- "moment. \n",
- FALSE
- );
- cb = addBool(
- "PERLMOD_LATEX",
- "If the PERLMOD_LATEX tag is set to YES Doxygen will generate \n"
- "the necessary Makefile rules, Perl scripts and LaTeX code to be able \n"
- "to generate PDF and DVI output from the Perl module output. \n",
- FALSE
- );
- cb->addDependency("GENERATE_PERLMOD");
- cb = addBool(
- "PERLMOD_PRETTY",
- "If the PERLMOD_PRETTY tag is set to YES the Perl module output will be \n"
- "nicely formatted so it can be parsed by a human reader. This is useful \n"
- "if you want to understand what is going on. On the other hand, if this \n"
- "tag is set to NO the size of the Perl module output will be much smaller \n"
- "and Perl will parse it just the same. \n",
- TRUE
- );
- cb->addDependency("GENERATE_PERLMOD");
- cs = addString(
- "PERLMOD_MAKEVAR_PREFIX",
- "The names of the make variables in the generated doxyrules.make file \n"
- "are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. \n"
- "This is useful so different doxyrules.make files included by the same \n"
- "Makefile don't overwrite each other's variables."
- );
- cs->addDependency("GENERATE_PERLMOD");
-
- //-----------------------------------------------------------------------------------------------
- addInfo( "Preprocessor","Configuration options related to the preprocessor ");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "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(
- "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(
- "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_DEFINED tags. \n",
- FALSE
- );
- cb->addDependency("ENABLE_PREPROCESSING");
- cb = addBool(
- "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(
- "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(
- "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",
- "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. To prevent a macro definition from being \n"
- "undefined via #undef or recursively expanded use the := operator \n"
- "instead of the = operator.\n"
- );
- cl->addDependency("ENABLE_PREPROCESSING");
- cl = addList(
- "EXPAND_AS_DEFINED",
- "If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF 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");
- cb = addBool(
- "SKIP_FUNCTION_MACROS",
- "If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \n"
- "doxygen's preprocessor will remove all function-like macros that are alone \n"
- "on a line, have an all uppercase name, and do not end with a semicolon. Such \n"
- "function macros are typically used for boiler-plate code, and will confuse \n"
- "the parser if not removed. \n",
- TRUE
- );
- cb->addDependency("ENABLE_PREPROCESSING");
- //-----------------------------------------------------------------------------------------------
- addInfo( "External","Configuration::additions related to external references ");
- //-----------------------------------------------------------------------------------------------
- cl = addList(
- "TAGFILES",
- "The TAGFILES option can be used to specify one or more tagfiles. \n"
- "Optionally an initial location of the external documentation \n"
- "can be added for each tagfile. The format of a tag file without \n"
- "this location is as follows: \n"
- " TAGFILES = file1 file2 ... \n"
- "Adding location for the tag files is done as follows: \n"
- " TAGFILES = file1=loc1 \"file2 = loc2\" ... \n"
- "where \"loc1\" and \"loc2\" can be relative or absolute paths or \n"
- "URLs. If a location is present for each tag, the installdox tool \n"
- "does not have to be run to correct the links.\n"
- "Note that each tag file must have a unique name\n"
- "(where the name does NOT include the path)\n"
- "If a tag file is not located in the directory in which doxygen \n"
- "is run, you must also specify the path to the tagfile here. \n"
- );
- cl->setWidgetType(ConfigList::File);
- cs = addString(
- "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(
- "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
- );
- cb = addBool(
- "EXTERNAL_GROUPS",
- "If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed \n"
- "in the modules index. If set to NO, only the current project's groups will \n"
- "be listed. \n",
- TRUE
- );
- cs = addString(
- "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(
- "CLASS_DIAGRAMS",
- "If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \n"
- "generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base \n"
- "or super classes. Setting the tag to NO turns the diagrams off. Note that \n"
- "this option is superseded by the HAVE_DOT option below. This is only a \n"
- "fallback. It is recommended to install and use dot, since it yields more \n"
- "powerful graphs. \n",
- TRUE
- );
- cs = addString( "MSCGEN_PATH",
- "You can define message sequence charts within doxygen comments using the \\msc \n"
- "command. Doxygen will then run the mscgen tool (see \n"
- "http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the \n"
- "documentation. The MSCGEN_PATH tag allows you to specify the directory where \n"
- "the mscgen tool resides. If left empty the tool is assumed to be found in the \n"
- "default search path. \n"
- );
- cb = addBool(
- "HIDE_UNDOC_RELATIONS",
- "If set to YES, the inheritance and collaboration graphs will hide \n"
- "inheritance and usage relations if the target is undocumented \n"
- "or is not a class. \n",
- TRUE
- );
- cb = addBool(
- "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
- );
- cs = addString( "DOT_FONTNAME",
- "By default doxygen will write a font called FreeSans.ttf to the output \n"
- "directory and reference it in all dot files that doxygen generates. This \n"
- "font does not include all possible unicode characters however, so when you need \n"
- "these (or just want a differently looking font) you can specify the font name \n"
- "using DOT_FONTNAME. You need need to make sure dot is able to find the font, \n"
- "which can be done by putting it in a standard location or by setting the \n"
- "DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory \n"
- "containing the font. \n"
- );
- cs->setDefaultValue("FreeSans");
- cb->addDependency("HAVE_DOT");
- ci = addInt( "DOT_FONTSIZE",
- "The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. \n"
- "The default size is 10pt. \n",
- 4,24,10
- );
- ci->addDependency("HAVE_DOT");
- cs = addString( "DOT_FONTPATH",
- "By default doxygen will tell dot to use the output directory to look for the \n"
- "FreeSans.ttf font (which doxygen will put there itself). If you specify a \n"
- "different font using DOT_FONTNAME you can set the path where dot \n"
- "can find it using this tag. \n"
- );
- cs->addDependency("HAVE_DOT");
- cb = addBool(
- "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(
- "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(
- "GROUP_GRAPHS",
- "If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \n"
- "will generate a graph for groups, showing the direct groups dependencies\n",
- TRUE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "UML_LOOK",
- "If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n"
- "collaboration diagrams in a style similar to the OMG's Unified Modeling \n"
- "Language. \n",
- FALSE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "TEMPLATE_RELATIONS",
- "If set to YES, the inheritance and collaboration graphs will show the \n"
- "relations between templates and their instances. \n",
- FALSE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "INCLUDE_GRAPH",
- "If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \n"
- "tags are set to YES then doxygen will generate a graph for each documented \n"
- "file showing the direct and indirect include dependencies of the file with \n"
- "other documented files. \n",
- TRUE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "INCLUDED_BY_GRAPH",
- "If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \n"
- "HAVE_DOT tags are set to YES then doxygen will generate a graph for each \n"
- "documented header file showing the documented files that directly or \n"
- "indirectly include this file. \n",
- TRUE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "CALL_GRAPH",
- "If the CALL_GRAPH and HAVE_DOT options are set to YES then \n"
- "doxygen will generate a call dependency graph for every global function \n"
- "or class method. Note that enabling this option will significantly increase \n"
- "the time of a run. So in most cases it will be better to enable call graphs \n"
- "for selected functions only using the \\callgraph command.\n",
- FALSE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "CALLER_GRAPH",
- "If the CALLER_GRAPH and HAVE_DOT tags are set to YES then \n"
- "doxygen will generate a caller dependency graph for every global function \n"
- "or class method. Note that enabling this option will significantly increase \n"
- "the time of a run. So in most cases it will be better to enable caller \n"
- "graphs for selected functions only using the \\callergraph command.\n",
- FALSE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "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");
- cb = addBool(
- "DIRECTORY_GRAPH",
- "If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \n"
- "then doxygen will show the dependencies a directory has on other directories \n"
- "in a graphical way. The dependency relations are determined by the #include\n"
- "relations between the files in the directories.\n",
- TRUE
- );
- cb->addDependency("HAVE_DOT");
- ce = addEnum(
- "DOT_IMAGE_FORMAT",
- "The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \n"
- "generated by dot. Possible values are png, jpg, or gif\n"
- "If left blank png will be used. \n",
- "png"
- );
- ce->addValue("png");
- ce->addValue("jpg");
- ce->addValue("gif");
- ce->addDependency("HAVE_DOT");
- cs = addString(
- "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 in the path. \n"
- );
- cs->setWidgetType(ConfigString::Dir);
- cs->addDependency("HAVE_DOT");
- cl = addList(
- "DOTFILE_DIRS",
- "The DOTFILE_DIRS tag can be used to specify one or more directories that \n"
- "contain dot files that are included in the documentation (see the \n"
- "\\dotfile command). \n"
- );
- cl->setWidgetType(ConfigList::Dir);
- cl->addDependency("HAVE_DOT");
- ci = addInt(
- "DOT_GRAPH_MAX_NODES",
- "The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n"
- "nodes that will be shown in the graph. If the number of nodes in a graph \n"
- "becomes larger than this value, doxygen will truncate the graph, which is \n"
- "visualized by representing a node as a red box. Note that doxygen if the \n"
- "number of direct children of the root node in a graph is already larger than \n"
- "DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note \n"
- "that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. \n",
- 0,10000, 50
- );
- ci->addDependency("HAVE_DOT");
- ci = addInt(
- "MAX_DOT_GRAPH_DEPTH",
- "The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \n"
- "graphs generated by dot. A depth value of 3 means that only nodes reachable \n"
- "from the root by following a path via at most 3 edges will be shown. Nodes \n"
- "that lay further from the root node will be omitted. Note that setting this \n"
- "option to 1 or 2 may greatly reduce the computation time needed for large \n"
- "code bases. Also note that the size of a graph can be further restricted by \n"
- "DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n",
- 0,1000,0
- );
- ci->addDependency("HAVE_DOT");
- addObsolete("MAX_DOT_GRAPH_WIDTH");
- addObsolete("MAX_DOT_GRAPH_HEIGHT");
- cb = addBool(
- "DOT_TRANSPARENT",
- "Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \n"
- "background. This is disabled by default, because dot on Windows does not \n"
- "seem to support this out of the box. Warning: Depending on the platform used, \n"
- "enabling this option may lead to badly anti-aliased labels on the edges of \n"
- "a graph (i.e. they become hard to read). \n",
- FALSE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "DOT_MULTI_TARGETS",
- "Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \n"
- "files in one run (i.e. multiple -o and -T options on the command line). This \n"
- "makes dot run faster, but since only newer versions of dot (>1.8.10) \n"
- "support this, this feature is disabled by default. \n",
- FALSE
- );
- cb->addDependency("HAVE_DOT");
- cb = addBool(
- "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(
- "DOT_CLEANUP",
- "If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n"
- "remove the intermediate dot files that are used to generate \n"
- "the various graphs. \n",
- TRUE
- );
- cb->addDependency("HAVE_DOT");
-
- //-----------------------------------------------------------------------------------------------
- addInfo( "Search","Configuration::additions related to the search engine ");
- //-----------------------------------------------------------------------------------------------
- cb = addBool(
- "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
- );
- addObsolete("CGI_NAME");
- addObsolete("CGI_URL");
- addObsolete("DOC_URL");
- addObsolete("DOC_ABSPATH");
- addObsolete("BIN_ABSPATH");
- addObsolete("EXT_DOC_PATHS");
-
- // The IMAGE_PATTERNS tag is now officially obsolete.
+ addConfigOptions(this);
}
static QCString configFileToString(const char *name)
diff --git a/src/configoptions.cpp b/src/configoptions.cpp
new file mode 100644
index 0000000..038046f
--- /dev/null
+++ b/src/configoptions.cpp
@@ -0,0 +1,2179 @@
+/******************************************************************************
+ *
+ *
+ *
+ *
+ * Copyright (C) 1997-2008 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#include "configoptions.h"
+#include "config.h"
+#include "portable.h"
+#include "lang_cfg.h"
+
+void addConfigOptions(Config *cfg)
+{
+
+ ConfigString *cs;
+ ConfigEnum *ce;
+ ConfigList *cl;
+ ConfigInt *ci;
+ ConfigBool *cb;
+
+ // option definitions
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo("Project","Project related configuration options");
+ //-----------------------------------------------------------------------------------------------
+
+ cs = cfg->addString(
+ "DOXYFILE_ENCODING",
+ "This tag specifies the encoding used for all characters in the config file \n"
+ "that follow. The default is UTF-8 which is also the encoding used for all \n"
+ "text before the first occurrence of this tag. Doxygen uses libiconv (or the \n"
+ "iconv built into libc) for the transcoding. See \n"
+ "http://www.gnu.org/software/libiconv for the list of possible encodings.\n"
+ );
+ cs->setDefaultValue("UTF-8");
+ //----
+ cs = cfg->addString(
+ "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 = cfg->addString(
+ "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 = cfg->addString(
+ "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);
+ //----
+ cb = cfg->addBool(
+ "CREATE_SUBDIRS",
+ "If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n"
+ "4096 sub-directories (in 2 levels) under the output directory of each output \n"
+ "format and will distribute the generated files over these directories. \n"
+ "Enabling this option can be useful when feeding doxygen a huge amount of \n"
+ "source files, where putting all generated files in the same directory would \n"
+ "otherwise cause performance problems for the file system. \n",
+ FALSE
+ );
+ //----
+ ce = cfg->addEnum(
+ "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"
+ "Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n"
+ "Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \n"
+ "Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \n"
+ "Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \n"
+ "Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \n"
+ "Spanish, Swedish, and Ukrainian.\n",
+ "English"
+ );
+#ifdef LANG_ZA
+ ce->addValue("Afrikaans");
+#endif
+#ifdef LANG_AR
+ ce->addValue("Arabic");
+#endif
+#ifdef LANG_BR
+ ce->addValue("Brazilian");
+#endif
+#ifdef LANG_CA
+ ce->addValue("Catalan");
+#endif
+#ifdef LANG_CN
+ ce->addValue("Chinese");
+#endif
+#ifdef LANG_TW
+ ce->addValue("Chinese-Traditional");
+#endif
+#ifdef LANG_HR
+ ce->addValue("Croatian");
+#endif
+#ifdef LANG_CZ
+ ce->addValue("Czech");
+#endif
+#ifdef LANG_DK
+ ce->addValue("Danish");
+#endif
+#ifdef LANG_NL
+ ce->addValue("Dutch");
+#endif
+ ce->addValue("English");
+#ifdef LANG_FI
+ ce->addValue("Finnish");
+#endif
+#ifdef LANG_FR
+ ce->addValue("French");
+#endif
+#ifdef LANG_DE
+ ce->addValue("German");
+#endif
+#ifdef LANG_GR
+ ce->addValue("Greek");
+#endif
+#ifdef LANG_HU
+ ce->addValue("Hungarian");
+#endif
+#ifdef LANG_IT
+ ce->addValue("Italian");
+#endif
+#ifdef LANG_JP
+ ce->addValue("Japanese");
+ ce->addValue("Japanese-en");
+#endif
+#ifdef LANG_KR
+ ce->addValue("Korean");
+ ce->addValue("Korean-en");
+#endif
+#ifdef LANG_LI
+ ce->addValue("Lithuanian");
+#endif
+#ifdef LANG_NO
+ ce->addValue("Norwegian");
+#endif
+#ifdef LANG_MK
+ ce->addValue("Macedonian");
+#endif
+#ifdef LANG_FA
+ ce->addValue("Farsi");
+ ce->addValue("Persian");
+#endif
+#ifdef LANG_PL
+ ce->addValue("Polish");
+#endif
+#ifdef LANG_PT
+ ce->addValue("Portuguese");
+#endif
+#ifdef LANG_RO
+ ce->addValue("Romanian");
+#endif
+#ifdef LANG_RU
+ ce->addValue("Russian");
+#endif
+#ifdef LANG_SR
+ ce->addValue("Serbian");
+#endif
+#ifdef LANG_SC
+ ce->addValue("Serbian-Cyrilic");
+#endif
+#ifdef LANG_SK
+ ce->addValue("Slovak");
+#endif
+#ifdef LANG_SI
+ ce->addValue("Slovene");
+#endif
+#ifdef LANG_ES
+ ce->addValue("Spanish");
+#endif
+#ifdef LANG_SE
+ ce->addValue("Swedish");
+#endif
+#ifdef LANG_UA
+ ce->addValue("Ukrainian");
+#endif
+
+#if 0
+ cb = cfg->addBool(
+ "USE_WINDOWS_ENCODING",
+ "This tag can be used to specify the encoding used in the generated output. \n"
+ "The encoding is not always determined by the language that is chosen, \n"
+ "but also whether or not the output is meant for Windows or non-Windows users. \n"
+ "In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES \n"
+ "forces the Windows encoding (this is the default for the Windows binary), \n"
+ "whereas setting the tag to NO uses a Unix-style encoding (the default for \n"
+ "all platforms other than Windows).\n",
+#if defined(_WIN32) || defined(__CYGWIN__)
+ TRUE
+#else
+ FALSE
+#endif
+ );
+#endif
+ //----
+ cfg->addObsolete("USE_WINDOWS_ENCODING");
+
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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
+ );
+ //----
+ cl = cfg->addList(
+ "ABBREVIATE_BRIEF",
+ "This tag implements a quasi-intelligent brief description abbreviator \n"
+ "that is used to form the text in various listings. Each string \n"
+ "in this list, if found as the leading text of the brief description, will be \n"
+ "stripped from the text and the result after processing the whole list, is \n"
+ "used as the annotated text. Otherwise, the brief description is used as-is. \n"
+ "If left blank, the following values are used (\"$name\" is automatically \n"
+ "replaced with the name of the entity): \"The $name class\" \"The $name widget\" \n"
+ "\"The $name file\" \"is\" \"provides\" \"specifies\" \"contains\" \n"
+ "\"represents\" \"a\" \"an\" \"the\"\n"
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "INLINE_INHERITED_MEMB",
+ "If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all \n"
+ "inherited members of a class in the documentation of that class as if those \n"
+ "members were ordinary class members. Constructors, destructors and assignment \n"
+ "operators of the base classes will not be shown. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "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",
+ TRUE
+ );
+ //----
+ cl = cfg->addList(
+ "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. The tag can be used to show relative paths in the file list. \n"
+ "If left blank the directory from which doxygen is run is used as the \n"
+ "path to strip. \n"
+ );
+ //----
+ cl->addDependency("FULL_PATH_NAMES");
+ cl = cfg->addList(
+ "STRIP_FROM_INC_PATH",
+ "The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of \n"
+ "the path mentioned in the documentation of a class, which tells \n"
+ "the reader which header file to include in order to use a class. \n"
+ "If left blank only the name of the header file containing the class \n"
+ "definition is used. Otherwise one should specify the include paths that \n"
+ "are normally passed to the compiler using the -I flag.\n"
+ );
+ //----
+ cb = cfg->addBool(
+ "SHORT_NAMES",
+ "If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter \n"
+ "(but less readable) file names. This can be useful is your file systems \n"
+ "doesn't support long names like on DOS, Mac, or CD-ROM. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "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 regular Qt-style comments \n"
+ "(thus requiring an explicit @brief command for a brief description.) \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "QT_AUTOBRIEF",
+ "If the QT_AUTOBRIEF tag is set to YES then Doxygen will \n"
+ "interpret the first line (until the first dot) of a Qt-style \n"
+ "comment as the brief description. If set to NO, the comments \n"
+ "will behave just like regular Qt-style comments (thus requiring \n"
+ "an explicit \\brief command for a brief description.) \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "MULTILINE_CPP_IS_BRIEF",
+ "The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen \n"
+ "treat a multi-line C++ special comment block (i.e. a block of //! or /// \n"
+ "comments) as a brief description. This used to be the default behaviour. \n"
+ "The new default is to treat a multi-line C++ comment block as a detailed \n"
+ "description. Set this tag to YES if you prefer the old behaviour instead. \n",
+ FALSE
+ );
+ //----
+ //cb = cfg->addBool(
+ // "DETAILS_AT_TOP",
+ // "If the DETAILS_AT_TOP tag is set to YES then Doxygen \n"
+ // "will output the detailed description near the top, like JavaDoc.\n"
+ // "If set to NO, the detailed description appears after the member \n"
+ // "documentation. \n",
+ // FALSE
+ // );
+ cb = cfg->addBool(
+ "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"
+ "re-implements. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "SEPARATE_MEMBER_PAGES",
+ "If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce \n"
+ "a new page for each member. If set to NO, the documentation of a member will \n"
+ "be part of the file/class/namespace that contains it.\n",
+ FALSE
+ );
+ //----
+ ci = cfg->addInt(
+ "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 = cfg->addList(
+ "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"
+ );
+ //----
+ cb = cfg->addBool(
+ "OPTIMIZE_OUTPUT_FOR_C",
+ "Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C \n"
+ "sources 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 = cfg->addBool(
+ "OPTIMIZE_OUTPUT_JAVA",
+ "Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java \n"
+ "sources only. Doxygen will then generate output that is more tailored for \n"
+ "Java. For instance, namespaces will be presented as packages, qualified \n"
+ "scopes will look different, etc. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "OPTIMIZE_FOR_FORTRAN",
+ "Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran \n"
+ "sources only. Doxygen will then generate output that is more tailored for \n"
+ "Fortran. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "OPTIMIZE_OUTPUT_VHDL",
+ "Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL \n"
+ "sources. Doxygen will then generate output that is tailored for \n"
+ "VHDL. \n",
+ FALSE
+ );
+ //----
+ cl = cfg->addList( "EXTENSION_MAPPING",
+ "Doxygen selects the parser to use depending on the extension of the files it parses. \n"
+ "With this tag you can assign which parser to use for a given extension. \n"
+ "Doxygen has a built-in mapping, but you can override or extend it using this tag. \n"
+ "The format is ext=language, where ext is a file extension, and language is one of \n"
+ "the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, \n"
+ "Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat \n"
+ ".inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), \n"
+ "use: inc=Fortran f=C\n"
+ );
+ //----
+ cb = cfg->addBool(
+ "BUILTIN_STL_SUPPORT",
+ "If you use STL classes (i.e. std::string, std::vector, etc.) but do not want \n"
+ "to include (a tag file for) the STL sources as input, then you should \n"
+ "set this tag to YES in order to let doxygen match functions declarations and \n"
+ "definitions whose arguments contain STL classes (e.g. func(std::string); v.s. \n"
+ "func(std::string) {}). This also make the inheritance and collaboration \n"
+ "diagrams that involve STL classes more complete and accurate. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "CPP_CLI_SUPPORT",
+ "If you use Microsoft's C++/CLI language, you should set this option to YES to\n"
+ "enable parsing support.\n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "SIP_SUPPORT",
+ "Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. \n"
+ "Doxygen will parse them like normal C++ but will assume all classes use public \n"
+ "instead of private inheritance when no explicit protection keyword is present. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool( "IDL_PROPERTY_SUPPORT",
+ "For Microsoft's IDL there are propget and propput attributes to indicate getter \n"
+ "and setter methods for a property. Setting this option to YES (the default) \n"
+ "will make doxygen to replace the get and set methods by a property in the \n"
+ "documentation. This will only work if the methods are indeed getting or \n"
+ "setting a simple type. If this is not the case, or you want to show the \n"
+ "methods anyway, you should set this option to NO. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "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
+ );
+ //----
+ cb = cfg->addBool(
+ "SUBGROUPING",
+ "Set the SUBGROUPING tag to YES (the default) to allow class member groups of \n"
+ "the same type (for instance a group of public functions) to be put as a \n"
+ "subgroup of that type (e.g. under the Public Functions section). Set it to \n"
+ "NO to prevent subgrouping. Alternatively, this can be done per class using \n"
+ "the \\nosubgrouping command. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool( "TYPEDEF_HIDES_STRUCT",
+ "When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum \n"
+ "is documented as struct, union, or enum with the name of the typedef. So \n"
+ "typedef struct TypeS {} TypeT, will appear in the documentation as a struct \n"
+ "with name TypeT. When disabled the typedef will appear as a member of a file, \n"
+ "namespace, or class. And the struct will be named TypeS. This can typically \n"
+ "be useful for C code in case the coding convention dictates that all compound \n"
+ "types are typedef'ed and only the typedef is referenced, never the tag name.\n",
+ FALSE
+ );
+ //----
+ ci = cfg->addInt(
+ "SYMBOL_CACHE_SIZE",
+ "The SYMBOL_CACHE_SIZE determines the size of the internal cache use to \n"
+ "determine which symbols to keep in memory and which to flush to disk.\n"
+ "When the cache is full, less often used symbols will be written to disk.\n"
+ "For small to medium size projects (<1000 input files) the default value is \n"
+ "probably good enough. For larger projects a too small cache size can cause \n"
+ "doxygen to be busy swapping symbols to and from disk most of the time \n"
+ "causing a significant performance penality. \n"
+ "If the system has enough physical memory increasing the cache will improve the \n"
+ "performance by keeping more symbols in memory. Note that the value works on \n"
+ "a logarithmic scale so increasing the size by one will rougly double the \n"
+ "memory usage. The cache size is given by this formula: \n"
+ "2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, \n"
+ "corresponding to a cache size of 2^16 = 65536 symbols\n",
+ 0,9,0
+ );
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo("Build","Build related configuration options");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "EXTRACT_LOCAL_CLASSES",
+ "If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) \n"
+ "defined locally in source files will be included in the documentation. \n"
+ "If set to NO only classes defined in header files are included. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "EXTRACT_LOCAL_METHODS",
+ "This flag is only useful for Objective-C code. When set to YES local \n"
+ "methods, which are defined in the implementation section but not in \n"
+ "the interface are included in the documentation. \n"
+ "If set to NO (the default) only methods in the interface are included. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "EXTRACT_ANON_NSPACES",
+ "If this flag is set to YES, the members of anonymous namespaces will be \n"
+ "extracted and appear in the documentation as a namespace called \n"
+ "'anonymous_namespace{file}', where file will be replaced with the base \n"
+ "name of the file that contains the anonymous namespace. By default \n"
+ "anonymous namespace are hidden. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 classes will be included in the various \n"
+ "overviews. This option has no effect if EXTRACT_ALL is enabled. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "HIDE_FRIEND_COMPOUNDS",
+ "If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \n"
+ "friend (class|struct|union) declarations. \n"
+ "If set to NO (the default) these declarations will be included in the \n"
+ "documentation. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "HIDE_IN_BODY_DOCS",
+ "If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any \n"
+ "documentation blocks found inside the body of a function. \n"
+ "If set to NO (the default) these blocks will be appended to the \n"
+ "function's detailed documentation block. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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"
+ "and Mac users are advised to set this option to NO.\n",
+ portable_fileSystemIsCaseSensitive()
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "SHOW_INCLUDE_FILES",
+ "If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \n"
+ "will put a list of the files that are included by a file in the documentation \n"
+ "of that file. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "SORT_BRIEF_DOCS",
+ "If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the \n"
+ "brief documentation of file, namespace and class members alphabetically \n"
+ "by member name. If set to NO (the default) the members will appear in \n"
+ "declaration order. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "SORT_GROUP_NAMES",
+ "If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the \n"
+ "hierarchy of group names into alphabetical order. If set to NO (the default) \n"
+ "the group names will appear in their defined order. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "SORT_BY_SCOPE_NAME",
+ "If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \n"
+ "sorted by fully-qualified names, including namespaces. If set to \n"
+ "NO (the default), the class list will be sorted only by class name, \n"
+ "not including the namespace part. \n"
+ "Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n"
+ "Note: This option applies only to the class list, not to the \n"
+ "alphabetical list.\n",
+ FALSE
+ );
+
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "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
+ );
+ //----
+ cb = cfg->addBool(
+ "GENERATE_DEPRECATEDLIST",
+ "The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or \n"
+ "disable (NO) the deprecated list. This list is created by putting \n"
+ "\\deprecated commands in the documentation.\n",
+ TRUE
+ );
+ //----
+ cl = cfg->addList(
+ "ENABLED_SECTIONS",
+ "The ENABLED_SECTIONS tag can be used to enable conditional \n"
+ "documentation sections, marked by \\if sectionname ... \\endif. \n"
+ );
+ //----
+ ci = cfg->addInt(
+ "MAX_INITIALIZER_LINES",
+ "The MAX_INITIALIZER_LINES tag determines the maximum number of lines \n"
+ "the initial value of a variable or define consists 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 = cfg->addBool(
+ "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
+ );
+ //----
+ cb = cfg->addBool(
+ "SHOW_DIRECTORIES",
+ "If the sources in your project are distributed over multiple directories \n"
+ "then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy \n"
+ "in the documentation. The default is NO.\n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "SHOW_FILES",
+ "Set the SHOW_FILES tag to NO to disable the generation of the Files page.\n"
+ "This will remove the Files entry from the Quick Index and from the \n"
+ "Folder Tree View (if specified). The default is YES.\n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "SHOW_NAMESPACES",
+ "Set the SHOW_NAMESPACES tag to NO to disable the generation of the \n"
+ "Namespaces page. This will remove the Namespaces entry from the Quick Index\n"
+ "and from the Folder Tree View (if specified). The default is YES.\n",
+ TRUE
+ );
+ //----
+ cs = cfg->addString( "FILE_VERSION_FILTER",
+ "The FILE_VERSION_FILTER tag can be used to specify a program or script that \n"
+ "doxygen should invoke to get the current version for each file (typically from \n"
+ "the version control system). Doxygen will invoke the program by executing (via \n"
+ "popen()) the command <command> <input-file>, where <command> is the value of \n"
+ "the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file \n"
+ "provided by doxygen. Whatever the program writes to standard output \n"
+ "is used as the file version. See the manual for examples. \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ //----
+ cs = cfg->addString( "LAYOUT_FILE",
+ "The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by \n"
+ "doxygen. The layout file controls the global structure of the generated output files \n"
+ "in an output format independent way. The create the layout file that represents \n"
+ "doxygen's defaults, run doxygen with the -l option. You can optionally specify a \n"
+ "file name after the option, if omitted DoxygenLayout.xml will be used as the name \n"
+ "of the layout file.\n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ //----
+ cfg->addObsolete("DETAILS_AT_TOP");
+
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Messages","configuration options related to warning and progress messages");
+ //-----------------------------------------------------------------------------------------------
+
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "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
+ );
+ //----
+ cb = cfg->addBool(
+ "WARN_IF_DOC_ERROR",
+ "If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for \n"
+ "potential errors in the documentation, such as not documenting some \n"
+ "parameters in a documented function, or documenting parameters that \n"
+ "don't exist or using markup commands wrongly. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool( "WARN_NO_PARAMDOC",
+ "This WARN_NO_PARAMDOC option can be abled to get warnings for \n"
+ "functions that are documented, but have no documentation for their parameters \n"
+ "or return value. If set to NO (the default) doxygen will only warn about \n"
+ "wrong or incomplete parameter documentation, but not about the absence of \n"
+ "documentation.\n",
+ FALSE
+ );
+ //----
+ cs = cfg->addString(
+ "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. Optionally the format may contain \n"
+ "$version, which will be replaced by the version of the file (if it could \n"
+ "be obtained via FILE_VERSION_FILTER)\n"
+ );
+ cs->setDefaultValue("$file:$line: $text");
+ //----
+ cs = cfg->addString(
+ "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"
+ );
+ cs->setWidgetType(ConfigString::File);
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Input","configuration options related to the input files");
+ //-----------------------------------------------------------------------------------------------
+ cl = cfg->addList(
+ "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);
+ //----
+ cs = cfg->addString( "INPUT_ENCODING",
+ "This tag can be used to specify the character encoding of the source files \n"
+ "that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is \n"
+ "also the default input encoding. Doxygen uses libiconv (or the iconv built \n"
+ "into libc) for the transcoding. See http://www.gnu.org/software/libiconv for \n"
+ "the list of possible encodings.\n"
+ );
+ cs->setDefaultValue("UTF-8");
+ //----
+ cl = cfg->addList(
+ "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 the following patterns are tested: \n"
+ "*.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx \n"
+ "*.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90\n"
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addList(
+ "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"
+ );
+ //----
+ cb = cfg->addBool(
+ "EXCLUDE_SYMLINKS",
+ "The EXCLUDE_SYMLINKS tag can be used select whether or not files or \n"
+ "directories that are symbolic links (a Unix filesystem feature) are excluded \n"
+ "from the input. \n",
+ FALSE
+ );
+ cl->setWidgetType(ConfigList::FileAndDir);
+ //----
+ cl = cfg->addList(
+ "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. Note that the wildcards are matched \n"
+ "against the file with absolute path, so to exclude all test directories \n"
+ "for example use the pattern */test/* \n"
+ );
+ //----
+ cl = cfg->addList(
+ "EXCLUDE_SYMBOLS",
+ "The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names \n"
+ "(namespaces, classes, functions, etc.) that should be excluded from the \n"
+ "output. The symbol name can be a fully qualified name, a word, or if the \n"
+ "wildcard * is used, a substring. Examples: ANamespace, AClass, \n"
+ "AClass::ANamespace, ANamespace::*Test \n"
+ );
+ //----
+ cl = cfg->addList(
+ "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 = cfg->addList(
+ "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"
+ );
+ //----
+ cb = cfg->addBool(
+ "EXAMPLE_RECURSIVE",
+ "If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be \n"
+ "searched for input files to be used with the \\include or \\dontinclude \n"
+ "commands irrespective of the value of the RECURSIVE tag. \n"
+ "Possible values are YES and NO. If left blank NO is used. \n",
+ FALSE
+ );
+ //----
+ cl = cfg->addList(
+ "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 = cfg->addString(
+ "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. If FILTER_PATTERNS is specified, this tag will be \n"
+ "ignored. \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ //----
+ cl = cfg->addList(
+ "FILTER_PATTERNS",
+ "The FILTER_PATTERNS tag can be used to specify filters on a per file pattern \n"
+ "basis. Doxygen will compare the file name with each pattern and apply the \n"
+ "filter if there is a match. The filters are a list of the form: \n"
+ "pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further \n"
+ "info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER \n"
+ "is applied to all files. \n"
+ );
+ cl->setWidgetType(ConfigList::File);
+ //----
+ cb = cfg->addBool(
+ "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 (i.e. when SOURCE_BROWSER is set to YES). \n",
+ FALSE
+ );
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Source Browser","configuration options related to source browsing");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "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"
+ "Note: To get rid of all source code in the generated output, make sure also \n"
+ "VERBATIM_HEADERS is set to NO. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool( "REFERENCED_BY_RELATION",
+ "If the REFERENCED_BY_RELATION tag is set to YES \n"
+ "then for each documented function all documented \n"
+ "functions referencing it will be listed. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool( "REFERENCES_RELATION",
+ "If the REFERENCES_RELATION tag is set to YES \n"
+ "then for each documented function all documented entities \n"
+ "called/used by that function will be listed. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool( "REFERENCES_LINK_SOURCE",
+ "If the REFERENCES_LINK_SOURCE tag is set to YES (the default)\n"
+ "and SOURCE_BROWSER tag is set to YES, then the hyperlinks from\n"
+ "functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will\n"
+ "link to the source code. Otherwise they will link to the documentstion.\n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "USE_HTAGS",
+ "If the USE_HTAGS tag is set to YES then the references to source code \n"
+ "will point to the HTML generated by the htags(1) tool instead of doxygen \n"
+ "built-in source browser. The htags tool is part of GNU's global source \n"
+ "tagging system (see http://www.gnu.org/software/global/global.html). You \n"
+ "will need version 4.8.6 or higher. \n",
+ FALSE
+ );
+ cb->addDependency("SOURCE_BROWSER");
+ //----
+ cb = cfg->addBool(
+ "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
+ );
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Index","configuration options related to the alphabetical class index");
+ //-----------------------------------------------------------------------------------------------
+
+ cb = cfg->addBool(
+ "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 = cfg->addInt(
+ "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 = cfg->addList(
+ "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"
+ );
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "HTML","configuration options related to the HTML output");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "GENERATE_HTML",
+ "If the GENERATE_HTML tag is set to YES (the default) Doxygen will \n"
+ "generate HTML output. \n",
+ TRUE
+ );
+ //----
+ cs = cfg->addString(
+ "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 = cfg->addString(
+ "HTML_FILE_EXTENSION",
+ "The HTML_FILE_EXTENSION tag can be used to specify the file extension for \n"
+ "each generated HTML page (for example: .htm,.php,.asp). If it is left blank \n"
+ "doxygen will generate files with .html extension.\n"
+ );
+ cs->setDefaultValue(".html");
+ cs->addDependency("GENERATE_HTML");
+ //----
+ cs = cfg->addString(
+ "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 = cfg->addString(
+ "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 = cfg->addString(
+ "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. Note that doxygen will try to copy \n"
+ "the style sheet file to the HTML output directory, so don't put your own \n"
+ "stylesheet in the HTML output directory as well, or it will be erased! \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_HTML");
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "HTML_DYNAMIC_SECTIONS",
+ "If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML \n"
+ "documentation will contain sections that can be hidden and shown after the \n"
+ "page has loaded. For this to work a browser that supports \n"
+ "JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox \n"
+ "Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_HTML");
+
+ /////////////////////////////////////////////////////////
+ // Docsets //////////////////////////////////////////////
+ /////////////////////////////////////////////////////////
+
+ cb = cfg->addBool( "GENERATE_DOCSET",
+ "If the GENERATE_DOCSET tag is set to YES, additional index files \n"
+ "will be generated that can be used as input for Apple's Xcode 3 \n"
+ "integrated development environment, introduced with OSX 10.5 (Leopard). \n"
+ "To create a documentation set, doxygen will generate a Makefile in the \n"
+ "HTML output directory. Running make will produce the docset in that \n"
+ "directory and running \"make install\" will install the docset in \n"
+ "~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find \n"
+ "it at startup. \n"
+ "See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html "
+ "for more information. \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_HTML");
+ //----
+ cs = cfg->addString(
+ "DOCSET_FEEDNAME",
+ "When GENERATE_DOCSET tag is set to YES, this tag determines the name of the \n"
+ "feed. A documentation feed provides an umbrella under which multiple \n"
+ "documentation sets from a single provider (such as a company or product suite) \n"
+ "can be grouped. \n"
+ );
+ cs->setDefaultValue("Doxygen generated docs");
+ cs->addDependency("GENERATE_DOCSET");
+ //----
+ cs = cfg->addString(
+ "DOCSET_BUNDLE_ID",
+ "When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \n"
+ "should uniquely identify the documentation set bundle. This should be a \n"
+ "reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen \n"
+ "will append .docset to the name. \n"
+ );
+ cs->setDefaultValue("org.doxygen.Project");
+ cs->addDependency("GENERATE_DOCSET");
+
+ /////////////////////////////////////////////////////////
+ // HTMLHELP /////////////////////////////////////////////
+ /////////////////////////////////////////////////////////
+
+ cb = cfg->addBool(
+ "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 compiled HTML help file (.chm) \n"
+ "of the generated HTML documentation. \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_HTML");
+ //----
+ cs = cfg->addString(
+ "CHM_FILE",
+ "If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \n"
+ "be used to specify the file name of the resulting .chm file. You \n"
+ "can add a path in front of the file if the result should not be \n"
+ "written to the html output directory. \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_HTML");
+ //----
+ cs = cfg->addString(
+ "HHC_LOCATION",
+ "If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \n"
+ "be used to specify the location (absolute path including file name) of \n"
+ "the HTML help compiler (hhc.exe). If non-empty doxygen will try to run \n"
+ "the HTML help compiler on the generated index.hhp.\n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_HTML");
+ //----
+ cfg->addObsolete("QTHELP_FILE");
+ //----
+ cfg->addObsolete("QTHELP_CONFIG");
+ //----
+ cfg->addObsolete("DOXYGEN2QTHELP_LOC");
+ //----
+ cb = cfg->addBool(
+ "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");
+ //----
+ cs = cfg->addString(
+ "CHM_INDEX_ENCODING",
+ "If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING\n"
+ "is used to encode HtmlHelp index (hhk), content (hhc) and project file\n"
+ "content.\n"
+ );
+ cs->addDependency("GENERATE_HTML");
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "TOC_EXPAND",
+ "The TOC_EXPAND flag can be set to 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");
+
+ /////////////////////////////////////////////////////////
+ // QT HELP //////////////////////////////////////////////
+ /////////////////////////////////////////////////////////
+
+ cb = cfg->addBool(
+ "GENERATE_QHP",
+ "If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER \n"
+ "are set, an additional index file will be generated that can be used as input for \n"
+ "Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated \n"
+ "HTML documentation. \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_HTML");
+ //----
+ cs = cfg->addString(
+ "QCH_FILE",
+ "If the QHG_LOCATION tag is specified, the QCH_FILE tag can \n"
+ "be used to specify the file name of the resulting .qch file. \n"
+ "The path specified is relative to the HTML output folder. \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_QHP");
+ //----
+ cs = cfg->addString(
+ "QHP_NAMESPACE",
+ "The QHP_NAMESPACE tag specifies the namespace to use when generating \n"
+ "Qt Help Project output. For more information please see \n"
+ "http://doc.trolltech.com/qthelpproject.html#namespace \n"
+ );
+ cs->addDependency("GENERATE_QHP");
+ //----
+ cs = cfg->addString(
+ "QHP_VIRTUAL_FOLDER",
+ "The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating \n"
+ "Qt Help Project output. For more information please see \n"
+ "http://doc.trolltech.com/qthelpproject.html#virtual-folders \n"
+ );
+ cs->setDefaultValue("doc");
+ cs->addDependency("GENERATE_QHP");
+ //----
+
+ cs = cfg->addString(
+ "QHP_CUST_FILTER_NAME",
+ "If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. \n"
+ "For more information please see \n"
+ "http://doc.trolltech.com/qthelpproject.html#custom-filters \n"
+ );
+ cs->addDependency("GENERATE_QHP");
+ //----
+
+ cs = cfg->addString(
+ "QHP_CUST_FILTER_ATTRS",
+ "The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add."
+ "For more information please see \n"
+ "<a href=\"http://doc.trolltech.com/qthelpproject.html#custom-filters\">Qt Help Project / Custom Filters</a>. \n"
+ );
+ cs->addDependency("GENERATE_QHP");
+ //----
+
+ cs = cfg->addString(
+ "QHP_SECT_FILTER_ATTRS",
+ "The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's \n"
+ "filter section matches. \n"
+ "<a href=\"http://doc.trolltech.com/qthelpproject.html#filter-attributes\">Qt Help Project / Filter Attributes</a>. \n"
+ );
+ cs->addDependency("GENERATE_QHP");
+ //----
+
+ cs = cfg->addString(
+ "QHG_LOCATION",
+ "If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can \n"
+ "be used to specify the location of Qt's qhelpgenerator. \n"
+ "If non-empty doxygen will try to run qhelpgenerator on the generated \n"
+ ".qhp file .\n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_QHP");
+
+ /////////////////////////////////////////////////////////
+ // MISC /////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////
+
+ cb = cfg->addBool(
+ "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 = cfg->addInt(
+ "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");
+ //----
+ ce = cfg->addEnum(
+ "GENERATE_TREEVIEW",
+ "The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n"
+ "structure should be generated to display hierarchical information.\n"
+ "If the tag value is set to FRAME, a side panel will be generated\n"
+ "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, DHTML, CSS and frames is required (for instance Mozilla 1.0+, \n"
+ "Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \n"
+ "probably better off using the HTML help feature. Other possible values \n"
+ "for this tag are: HIERARCHIES, which will generate the Groups, Directories,\n"
+ "and Class Hierarchy pages using a tree view instead of an ordered list;\n"
+ "ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which\n"
+ "disables this behavior completely. For backwards compatibility with previous\n"
+ "releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE\n"
+ "respectively.\n",
+ "NONE"
+ );
+ ce->addValue("NONE");
+ ce->addValue("FRAME");
+ ce->addValue("HIERARCHIES");
+ ce->addValue("ALL");
+ ce->addDependency("GENERATE_HTML");
+ //----
+ ci = cfg->addInt(
+ "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");
+ //----
+ ci = cfg->addInt(
+ "FORMULA_FONTSIZE",
+ "Use this tag to change the font size of Latex formulas included \n"
+ "as images in the HTML documentation. The default is 10. Note that \n"
+ "when you change the font size after a successful doxygen run you need \n"
+ "to manually remove any form_*.png images from the HTML output directory \n"
+ "to force them to be regenerated. \n",
+ 8,50,10
+ );
+ ci->addDependency("GENERATE_HTML");
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "LaTeX","configuration options related to the LaTeX output");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "GENERATE_LATEX",
+ "If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \n"
+ "generate Latex output. \n",
+ TRUE
+ );
+ //----
+ cs = cfg->addString(
+ "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");
+ //----
+#if 0
+ cs = cfg->addString( "LATEX_OUTPUT_ENCODING",
+ "The LATEX_OUTPUT_ENCODING specifies the character encoding of the LaTeX output.\n"
+ "produced by doxygen. If left blank ISO-8859-1 will be used. Doxygen uses \n"
+ "libiconv for the transcoding. See http://www.gnu.org/software/libiconv for \n"
+ "the list of possible encodings.\n"
+ );
+ cs->setDefaultValue("ISO-8859-1");
+ cs->addDependency("GENERATE_LATEX");
+#endif
+ cs = cfg->addString(
+ "LATEX_CMD_NAME",
+ "The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be \n"
+ "invoked. If left blank `latex' will be used as the default command name. \n"
+ );
+ cs->setDefaultValue("latex");
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_LATEX");
+ //----
+ cs = cfg->addString(
+ "MAKEINDEX_CMD_NAME",
+ "The MAKEINDEX_CMD_NAME tag can be used to specify the command name to \n"
+ "generate index for LaTeX. If left blank `makeindex' will be used as the \n"
+ "default command name. \n"
+ );
+ cs->setDefaultValue("makeindex");
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_LATEX");
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addEnum(
+ "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 = cfg->addList(
+ "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 = cfg->addString(
+ "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 = cfg->addBool(
+ "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",
+ TRUE
+ );
+ cb->addDependency("GENERATE_LATEX");
+ //----
+ cb = cfg->addBool(
+ "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",
+ TRUE
+ );
+ cb->addDependency("GENERATE_LATEX");
+ //----
+ cb = cfg->addBool(
+ "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");
+ //----
+ cb = cfg->addBool(
+ "LATEX_HIDE_INDICES",
+ "If LATEX_HIDE_INDICES is set to YES then doxygen will not \n"
+ "include the index chapters (such as File Index, Compound Index, etc.) \n"
+ "in the output. \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_LATEX");
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "RTF","configuration options related to the RTF output");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "GENERATE_RTF",
+ "If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n"
+ "The RTF output is optimized for Word 97 and may not look very pretty with \n"
+ "other RTF readers or editors.\n",
+ FALSE
+ );
+ //----
+ cs = cfg->addString(
+ "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");
+ //----
+#if 0
+ cs = cfg->addString( "RTF_OUTPUT_ENCODING",
+ "The RTF_OUTPUT_ENCODING specifies the character encoding of the RTF output.\n"
+ "produced by doxygen. If left blank ISO-8859-1 will be used. Doxygen uses \n"
+ "libiconv for the transcoding. See http://www.gnu.org/software/libiconv for \n"
+ "the list of possible encodings.\n"
+ );
+ cs->setDefaultValue("ISO-8859-1");
+ cs->addDependency("GENERATE_RTF");
+#endif
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 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 = cfg->addString(
+ "RTF_STYLESHEET_FILE",
+ "Load stylesheet definitions from file. Syntax is similar to doxygen's \n"
+ "config file, i.e. a series of assignments. 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 = cfg->addString(
+ "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");
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Man","configuration options related to the man page output");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "GENERATE_MAN",
+ "If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n"
+ "generate man pages \n",
+ FALSE
+ );
+ //----
+ cs = cfg->addString(
+ "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 = cfg->addString(
+ "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");
+ //----
+ cb = cfg->addBool(
+ "MAN_LINKS",
+ "If the MAN_LINKS tag is set to YES and Doxygen generates man output, \n"
+ "then it will generate one additional man file for each entity \n"
+ "documented in the real man page(s). These additional files \n"
+ "only source the real man page, but without them the man command \n"
+ "would be unable to find the correct page. The default is NO. \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_MAN");
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "XML","configuration options related to the XML output");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "GENERATE_XML",
+ "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. \n",
+ FALSE
+ );
+ //----
+ cs = cfg->addString(
+ "XML_OUTPUT",
+ "The XML_OUTPUT tag is used to specify where the XML 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 `xml' will be used as the default path. \n"
+ );
+ cs->setDefaultValue("xml");
+ cs->setWidgetType(ConfigString::Dir);
+ cs->addDependency("GENERATE_XML");
+ //----
+ cs = cfg->addString(
+ "XML_SCHEMA",
+ "The XML_SCHEMA tag can be used to specify an XML schema, \n"
+ "which can be used by a validating XML parser to check the \n"
+ "syntax of the XML files. \n"
+ );
+ cs->addDependency("GENERATE_XML");
+ //----
+ cs = cfg->addString(
+ "XML_DTD",
+ "The XML_DTD tag can be used to specify an XML DTD, \n"
+ "which can be used by a validating XML parser to check the \n"
+ "syntax of the XML files. \n"
+ );
+ cs->addDependency("GENERATE_XML");
+ //----
+ cb = cfg->addBool(
+ "XML_PROGRAMLISTING",
+ "If the XML_PROGRAMLISTING tag is set to YES Doxygen will \n"
+ "dump the program listings (including syntax highlighting \n"
+ "and cross-referencing information) to the XML output. Note that \n"
+ "enabling this will significantly increase the size of the XML output. \n",
+ TRUE
+ );
+ cb->addDependency("GENERATE_XML");
+
+ //--------------------------------------------------------------------------
+ cfg->addInfo( "DEF","configuration options for the AutoGen Definitions output");
+ //--------------------------------------------------------------------------
+ cb = cfg->addBool( "GENERATE_AUTOGEN_DEF",
+
+ "If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will \n"
+ "generate an AutoGen Definitions (see autogen.sf.net) file \n"
+ "that captures the structure of the code including all \n"
+ "documentation. Note that this feature is still experimental \n"
+ "and incomplete at the moment. \n",
+ FALSE );
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "PerlMod","configuration options related to the Perl module output");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "GENERATE_PERLMOD",
+ "If the GENERATE_PERLMOD tag is set to YES Doxygen will \n"
+ "generate a Perl module file that captures the structure of \n"
+ "the code including all documentation. Note that this \n"
+ "feature is still experimental and incomplete at the \n"
+ "moment. \n",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
+ "PERLMOD_LATEX",
+ "If the PERLMOD_LATEX tag is set to YES Doxygen will generate \n"
+ "the necessary Makefile rules, Perl scripts and LaTeX code to be able \n"
+ "to generate PDF and DVI output from the Perl module output. \n",
+ FALSE
+ );
+ cb->addDependency("GENERATE_PERLMOD");
+ //----
+ cb = cfg->addBool(
+ "PERLMOD_PRETTY",
+ "If the PERLMOD_PRETTY tag is set to YES the Perl module output will be \n"
+ "nicely formatted so it can be parsed by a human reader. This is useful \n"
+ "if you want to understand what is going on. On the other hand, if this \n"
+ "tag is set to NO the size of the Perl module output will be much smaller \n"
+ "and Perl will parse it just the same. \n",
+ TRUE
+ );
+ cb->addDependency("GENERATE_PERLMOD");
+ //----
+ cs = cfg->addString(
+ "PERLMOD_MAKEVAR_PREFIX",
+ "The names of the make variables in the generated doxyrules.make file \n"
+ "are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. \n"
+ "This is useful so different doxyrules.make files included by the same \n"
+ "Makefile don't overwrite each other's variables."
+ );
+ cs->addDependency("GENERATE_PERLMOD");
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Preprocessor","Configuration options related to the preprocessor ");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "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_DEFINED tags. \n",
+ FALSE
+ );
+ cb->addDependency("ENABLE_PREPROCESSING");
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addList(
+ "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 = cfg->addList(
+ "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 = cfg->addList(
+ "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. To prevent a macro definition from being \n"
+ "undefined via #undef or recursively expanded use the := operator \n"
+ "instead of the = operator.\n"
+ );
+ cl->addDependency("ENABLE_PREPROCESSING");
+ //----
+ cl = cfg->addList(
+ "EXPAND_AS_DEFINED",
+ "If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF 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");
+ //----
+ cb = cfg->addBool(
+ "SKIP_FUNCTION_MACROS",
+ "If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \n"
+ "doxygen's preprocessor will remove all function-like macros that are alone \n"
+ "on a line, have an all uppercase name, and do not end with a semicolon. Such \n"
+ "function macros are typically used for boiler-plate code, and will confuse \n"
+ "the parser if not removed. \n",
+ TRUE
+ );
+ cb->addDependency("ENABLE_PREPROCESSING");
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "External","Configuration::additions related to external references ");
+ //-----------------------------------------------------------------------------------------------
+ cl = cfg->addList(
+ "TAGFILES",
+ "The TAGFILES option can be used to specify one or more tagfiles. \n"
+ "Optionally an initial location of the external documentation \n"
+ "can be added for each tagfile. The format of a tag file without \n"
+ "this location is as follows: \n"
+ " TAGFILES = file1 file2 ... \n"
+ "Adding location for the tag files is done as follows: \n"
+ " TAGFILES = file1=loc1 \"file2 = loc2\" ... \n"
+ "where \"loc1\" and \"loc2\" can be relative or absolute paths or \n"
+ "URLs. If a location is present for each tag, the installdox tool \n"
+ "does not have to be run to correct the links.\n"
+ "Note that each tag file must have a unique name\n"
+ "(where the name does NOT include the path)\n"
+ "If a tag file is not located in the directory in which doxygen \n"
+ "is run, you must also specify the path to the tagfile here. \n"
+ );
+ cl->setWidgetType(ConfigList::File);
+ //----
+ cs = cfg->addString(
+ "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 = cfg->addBool(
+ "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
+ );
+ //----
+ cb = cfg->addBool(
+ "EXTERNAL_GROUPS",
+ "If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed \n"
+ "in the modules index. If set to NO, only the current project's groups will \n"
+ "be listed. \n",
+ TRUE
+ );
+ //----
+ cs = cfg->addString(
+ "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);
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Dot","Configuration options related to the dot tool ");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "CLASS_DIAGRAMS",
+ "If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \n"
+ "generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base \n"
+ "or super classes. Setting the tag to NO turns the diagrams off. Note that \n"
+ "this option is superseded by the HAVE_DOT option below. This is only a \n"
+ "fallback. It is recommended to install and use dot, since it yields more \n"
+ "powerful graphs. \n",
+ TRUE
+ );
+ //----
+ cs = cfg->addString( "MSCGEN_PATH",
+ "You can define message sequence charts within doxygen comments using the \\msc \n"
+ "command. Doxygen will then run the mscgen tool (see \n"
+ "http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the \n"
+ "documentation. The MSCGEN_PATH tag allows you to specify the directory where \n"
+ "the mscgen tool resides. If left empty the tool is assumed to be found in the \n"
+ "default search path. \n"
+ );
+ //----
+ cb = cfg->addBool(
+ "HIDE_UNDOC_RELATIONS",
+ "If set to YES, the inheritance and collaboration graphs will hide \n"
+ "inheritance and usage relations if the target is undocumented \n"
+ "or is not a class. \n",
+ TRUE
+ );
+ //----
+ cb = cfg->addBool(
+ "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
+ );
+ //----
+ cs = cfg->addString( "DOT_FONTNAME",
+ "By default doxygen will write a font called FreeSans.ttf to the output \n"
+ "directory and reference it in all dot files that doxygen generates. This \n"
+ "font does not include all possible unicode characters however, so when you need \n"
+ "these (or just want a differently looking font) you can specify the font name \n"
+ "using DOT_FONTNAME. You need need to make sure dot is able to find the font, \n"
+ "which can be done by putting it in a standard location or by setting the \n"
+ "DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory \n"
+ "containing the font. \n"
+ );
+ cs->setDefaultValue("FreeSans");
+ cs->addDependency("HAVE_DOT");
+ //----
+ ci = cfg->addInt( "DOT_FONTSIZE",
+ "The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. \n"
+ "The default size is 10pt. \n",
+ 4,24,10
+ );
+ ci->addDependency("HAVE_DOT");
+ //----
+ cs = cfg->addString( "DOT_FONTPATH",
+ "By default doxygen will tell dot to use the output directory to look for the \n"
+ "FreeSans.ttf font (which doxygen will put there itself). If you specify a \n"
+ "different font using DOT_FONTNAME you can set the path where dot \n"
+ "can find it using this tag. \n"
+ );
+ cs->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "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 = cfg->addBool(
+ "GROUP_GRAPHS",
+ "If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \n"
+ "will generate a graph for groups, showing the direct groups dependencies\n",
+ TRUE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "UML_LOOK",
+ "If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n"
+ "collaboration diagrams in a style similar to the OMG's Unified Modeling \n"
+ "Language. \n",
+ FALSE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "TEMPLATE_RELATIONS",
+ "If set to YES, the inheritance and collaboration graphs will show the \n"
+ "relations between templates and their instances. \n",
+ FALSE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "INCLUDE_GRAPH",
+ "If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \n"
+ "tags are set to YES then doxygen will generate a graph for each documented \n"
+ "file showing the direct and indirect include dependencies of the file with \n"
+ "other documented files. \n",
+ TRUE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "INCLUDED_BY_GRAPH",
+ "If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \n"
+ "HAVE_DOT tags are set to YES then doxygen will generate a graph for each \n"
+ "documented header file showing the documented files that directly or \n"
+ "indirectly include this file. \n",
+ TRUE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "CALL_GRAPH",
+ "If the CALL_GRAPH and HAVE_DOT options are set to YES then \n"
+ "doxygen will generate a call dependency graph for every global function \n"
+ "or class method. Note that enabling this option will significantly increase \n"
+ "the time of a run. So in most cases it will be better to enable call graphs \n"
+ "for selected functions only using the \\callgraph command.\n",
+ FALSE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "CALLER_GRAPH",
+ "If the CALLER_GRAPH and HAVE_DOT tags are set to YES then \n"
+ "doxygen will generate a caller dependency graph for every global function \n"
+ "or class method. Note that enabling this option will significantly increase \n"
+ "the time of a run. So in most cases it will be better to enable caller \n"
+ "graphs for selected functions only using the \\callergraph command.\n",
+ FALSE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "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");
+ //----
+ cb = cfg->addBool(
+ "DIRECTORY_GRAPH",
+ "If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \n"
+ "then doxygen will show the dependencies a directory has on other directories \n"
+ "in a graphical way. The dependency relations are determined by the #include\n"
+ "relations between the files in the directories.\n",
+ TRUE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ ce = cfg->addEnum(
+ "DOT_IMAGE_FORMAT",
+ "The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \n"
+ "generated by dot. Possible values are png, jpg, or gif\n"
+ "If left blank png will be used. \n",
+ "png"
+ );
+ ce->addValue("png");
+ ce->addValue("jpg");
+ ce->addValue("gif");
+ ce->addDependency("HAVE_DOT");
+ //----
+ cs = cfg->addString(
+ "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 in the path. \n"
+ );
+ cs->setWidgetType(ConfigString::Dir);
+ cs->addDependency("HAVE_DOT");
+ //----
+ cl = cfg->addList(
+ "DOTFILE_DIRS",
+ "The DOTFILE_DIRS tag can be used to specify one or more directories that \n"
+ "contain dot files that are included in the documentation (see the \n"
+ "\\dotfile command). \n"
+ );
+ cl->setWidgetType(ConfigList::Dir);
+ cl->addDependency("HAVE_DOT");
+ //----
+ ci = cfg->addInt(
+ "DOT_GRAPH_MAX_NODES",
+ "The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n"
+ "nodes that will be shown in the graph. If the number of nodes in a graph \n"
+ "becomes larger than this value, doxygen will truncate the graph, which is \n"
+ "visualized by representing a node as a red box. Note that doxygen if the \n"
+ "number of direct children of the root node in a graph is already larger than \n"
+ "DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note \n"
+ "that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. \n",
+ 0,10000, 50
+ );
+ ci->addDependency("HAVE_DOT");
+ //----
+ ci = cfg->addInt(
+ "MAX_DOT_GRAPH_DEPTH",
+ "The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \n"
+ "graphs generated by dot. A depth value of 3 means that only nodes reachable \n"
+ "from the root by following a path via at most 3 edges will be shown. Nodes \n"
+ "that lay further from the root node will be omitted. Note that setting this \n"
+ "option to 1 or 2 may greatly reduce the computation time needed for large \n"
+ "code bases. Also note that the size of a graph can be further restricted by \n"
+ "DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n",
+ 0,1000,0
+ );
+ ci->addDependency("HAVE_DOT");
+ //----
+ cfg->addObsolete("MAX_DOT_GRAPH_WIDTH");
+ //----
+ cfg->addObsolete("MAX_DOT_GRAPH_HEIGHT");
+ //----
+ cb = cfg->addBool(
+ "DOT_TRANSPARENT",
+ "Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \n"
+ "background. This is disabled by default, because dot on Windows does not \n"
+ "seem to support this out of the box. Warning: Depending on the platform used, \n"
+ "enabling this option may lead to badly anti-aliased labels on the edges of \n"
+ "a graph (i.e. they become hard to read). \n",
+ FALSE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "DOT_MULTI_TARGETS",
+ "Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \n"
+ "files in one run (i.e. multiple -o and -T options on the command line). This \n"
+ "makes dot run faster, but since only newer versions of dot (>1.8.10) \n"
+ "support this, this feature is disabled by default. \n",
+ FALSE
+ );
+ cb->addDependency("HAVE_DOT");
+ //----
+ cb = cfg->addBool(
+ "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 = cfg->addBool(
+ "DOT_CLEANUP",
+ "If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n"
+ "remove the intermediate dot files that are used to generate \n"
+ "the various graphs. \n",
+ TRUE
+ );
+ cb->addDependency("HAVE_DOT");
+
+ //-----------------------------------------------------------------------------------------------
+ cfg->addInfo( "Search","Configuration::additions related to the search engine ");
+ //-----------------------------------------------------------------------------------------------
+ cb = cfg->addBool(
+ "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
+ );
+ //----
+ cfg->addObsolete("CGI_NAME");
+ //----
+ cfg->addObsolete("CGI_URL");
+ //----
+ cfg->addObsolete("DOC_URL");
+ //----
+ cfg->addObsolete("DOC_ABSPATH");
+ //----
+ cfg->addObsolete("BIN_ABSPATH");
+ //----
+ cfg->addObsolete("EXT_DOC_PATHS");
+
+ // The IMAGE_PATTERNS tag is now officially obsolete.
+
+}
diff --git a/src/configoptions.h b/src/configoptions.h
new file mode 100644
index 0000000..904d738
--- /dev/null
+++ b/src/configoptions.h
@@ -0,0 +1,26 @@
+/******************************************************************************
+ *
+ *
+ *
+ *
+ * Copyright (C) 1997-2008 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#ifndef CONFIGOPTIONS
+#define CONFIGOPTIONS
+
+class Config;
+
+void addConfigOptions(Config *cfg);
+
+#endif
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 6b29189..8875369 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -258,6 +258,7 @@ static QCString findAndCopyImage(const char *fileName,DocImage::Type type)
outImage.writeBlock(buffer,inImage.size());
outImage.flush();
delete buffer;
+ if (type==DocImage::Html) Doxygen::indexList.addImageFile(result);
}
else
{
@@ -2762,7 +2763,7 @@ int DocInternal::parse(int level)
)
{
DocSection *s=new DocSection(this,
- QMIN(level+Doxygen::subpageNestingLevel,4),g_token->sectionId);
+ QMIN(level+Doxygen::subpageNestingLevel,5),g_token->sectionId);
m_children.append(s);
retval = s->parse();
}
@@ -5813,43 +5814,46 @@ int DocSection::parse()
if (lastPar) lastPar->markLast();
- if (retval==RetVal_Subsection && m_level==1)
+ //printf("m_level=%d <-> %d\n",m_level,Doxygen::subpageNestingLevel);
+
+ if (retval==RetVal_Subsection && m_level==Doxygen::subpageNestingLevel+1)
{
// then parse any number of nested sections
while (retval==RetVal_Subsection) // more sections follow
{
//SectionInfo *sec=Doxygen::sectionDict[g_token->sectionId];
DocSection *s=new DocSection(this,
- QMIN(2+Doxygen::subpageNestingLevel,4),g_token->sectionId);
+ QMIN(2+Doxygen::subpageNestingLevel,5),g_token->sectionId);
m_children.append(s);
retval = s->parse();
}
}
- else if (retval==RetVal_Subsubsection && m_level==2)
+ else if (retval==RetVal_Subsubsection && m_level==Doxygen::subpageNestingLevel+2)
{
// then parse any number of nested sections
while (retval==RetVal_Subsubsection) // more sections follow
{
//SectionInfo *sec=Doxygen::sectionDict[g_token->sectionId];
DocSection *s=new DocSection(this,
- QMIN(3+Doxygen::subpageNestingLevel,4),g_token->sectionId);
+ QMIN(3+Doxygen::subpageNestingLevel,5),g_token->sectionId);
m_children.append(s);
retval = s->parse();
}
}
- else if (retval==RetVal_Paragraph && m_level==3)
+ else if (retval==RetVal_Paragraph && m_level==QMIN(5,Doxygen::subpageNestingLevel+3))
{
// then parse any number of nested sections
while (retval==RetVal_Paragraph) // more sections follow
{
//SectionInfo *sec=Doxygen::sectionDict[g_token->sectionId];
- DocSection *s=new DocSection(this,4,g_token->sectionId);
+ DocSection *s=new DocSection(this,
+ QMIN(4+Doxygen::subpageNestingLevel,5),g_token->sectionId);
m_children.append(s);
retval = s->parse();
}
}
- else if ((m_level<=1 && retval==RetVal_Subsubsection) ||
- (m_level<=2 && retval==RetVal_Paragraph)
+ else if ((m_level<=1+Doxygen::subpageNestingLevel && retval==RetVal_Subsubsection) ||
+ (m_level<=2+Doxygen::subpageNestingLevel && retval==RetVal_Paragraph)
)
{
int level;
@@ -6013,6 +6017,7 @@ void DocRoot::parse()
} while (retval!=0 && retval!=RetVal_Section && retval!=RetVal_Internal);
if (lastPar) lastPar->markLast();
+ //printf("DocRoot::parse() retval=%d %d\n",retval,RetVal_Section);
// then parse any number of level1 sections
while (retval==RetVal_Section)
{
@@ -6020,7 +6025,7 @@ void DocRoot::parse()
if (sec)
{
DocSection *s=new DocSection(this,
- QMIN(1+Doxygen::subpageNestingLevel,4),g_token->sectionId);
+ QMIN(1+Doxygen::subpageNestingLevel,5),g_token->sectionId);
m_children.append(s);
retval = s->parse();
}
diff --git a/src/docsets.cpp b/src/docsets.cpp
index 6daad38..2c12f37 100644
--- a/src/docsets.cpp
+++ b/src/docsets.cpp
@@ -280,8 +280,10 @@ void DocSets::addIndexItem(const char *, const char *,
scope = cd->qualifiedName();
if (cd->isTemplate())
type="tmplt";
- else if (cd->compoundType()==ClassDef::Interface)
+ else if (cd->compoundType()==ClassDef::Protocol)
type="intf";
+ else if (cd->compoundType()==ClassDef::Interface)
+ type="cl";
else if (cd->compoundType()==ClassDef::Category)
type="cat";
else
@@ -357,7 +359,9 @@ void DocSets::writeToken(QTextStream &t,
{
t << " <Token>" << endl;
t << " <TokenIdentifier>" << endl;
- t << " <Name>" << convertToXML(d->name()) << "</Name>" << endl;
+ QString name = d->name();
+ if (name.right(2)=="-p") name=name.left(name.length()-2);
+ t << " <Name>" << convertToXML(name) << "</Name>" << endl;
t << " <APILanguage>" << lang << "</APILanguage>" << endl;
t << " <Type>" << type << "</Type>" << endl;
t << " <Scope>" << convertToXML(scope) << "</Scope>" << endl;
diff --git a/src/doctokenizer.h b/src/doctokenizer.h
index 77f5167..43847ac 100644
--- a/src/doctokenizer.h
+++ b/src/doctokenizer.h
@@ -47,18 +47,19 @@ enum Tokens
RetVal_Subsection = 0x10004,
RetVal_Subsubsection = 0x10005,
RetVal_Paragraph = 0x10006,
- RetVal_EndList = 0x10007,
- RetVal_EndPre = 0x10008,
- RetVal_DescData = 0x10009,
- RetVal_DescTitle = 0x1000A,
- RetVal_EndDesc = 0x1000B,
- RetVal_TableRow = 0x1000C,
- RetVal_TableCell = 0x1000D,
- RetVal_TableHCell = 0x1000E,
- RetVal_EndTable = 0x1000F,
- RetVal_Internal = 0x10010,
- RetVal_SwitchLang = 0x10011,
- RetVal_CloseXml = 0x10012
+ RetVal_SubParagraph = 0x10007,
+ RetVal_EndList = 0x10008,
+ RetVal_EndPre = 0x10009,
+ RetVal_DescData = 0x1000A,
+ RetVal_DescTitle = 0x1000B,
+ RetVal_EndDesc = 0x1000C,
+ RetVal_TableRow = 0x1000D,
+ RetVal_TableCell = 0x1000E,
+ RetVal_TableHCell = 0x1000F,
+ RetVal_EndTable = 0x10010,
+ RetVal_Internal = 0x10011,
+ RetVal_SwitchLang = 0x10012,
+ RetVal_CloseXml = 0x10013
};
struct TokenInfo
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index ad82bbb..b919521 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -158,6 +158,7 @@ QCString spaces;
static bool g_successfulRun = FALSE;
static bool g_dumpSymbolMap = FALSE;
+static bool g_dumpConfigAsXML = FALSE;
@@ -8917,6 +8918,17 @@ static void dumpSymbolMap()
}
}
+//----------------------------------------------------------------------------
+
+void dumpConfigAsXML()
+{
+ QFile f("config.xml");
+ if (f.open(IO_WriteOnly))
+ {
+ QTextStream t(&f);
+ Config::instance()->writeXML(t);
+ }
+}
//----------------------------------------------------------------------------
// print the usage of doxygen
@@ -8977,15 +8989,15 @@ void initDoxygen()
Doxygen::runningTime.start();
initPreprocessor();
- ParserInterface *defaultParser = new CLanguageScanner;
- Doxygen::parserManager = new ParserManager(defaultParser);
- Doxygen::parserManager->registerParser(".py", new PythonLanguageScanner);
- Doxygen::parserManager->registerParser(".f", new FortranLanguageScanner);
- Doxygen::parserManager->registerParser(".f90", new FortranLanguageScanner);
- Doxygen::parserManager->registerParser(".vhd", new VHDLLanguageScanner);
+ Doxygen::parserManager = new ParserManager;
+ Doxygen::parserManager->registerParser("c", new CLanguageScanner, TRUE);
+ Doxygen::parserManager->registerParser("python", new PythonLanguageScanner);
+ Doxygen::parserManager->registerParser("fortran", new FortranLanguageScanner);
+ Doxygen::parserManager->registerParser("vhdl", new VHDLLanguageScanner);
// register any additional parsers here...
+ initDefaultExtensionMapping();
initClassMemberIndices();
initNamespaceMemberIndices();
initFileMemberIndices();
@@ -9245,6 +9257,9 @@ void readConfiguration(int argc, char **argv)
case 'm':
g_dumpSymbolMap = TRUE;
break;
+ case 'x':
+ g_dumpConfigAsXML = TRUE;
+ break;
case '-':
if (strcmp(&argv[optind][2],"help")==0)
{
@@ -9280,7 +9295,13 @@ void readConfiguration(int argc, char **argv)
if (genConfig)
{
+ checkConfiguration();
generateConfigFile(configName,shortList);
+ if (g_dumpConfigAsXML)
+ {
+ dumpConfigAsXML();
+ exit(0);
+ }
cleanUpDoxygen();
exit(0);
}
@@ -9461,6 +9482,37 @@ void parseInput()
atexit(exitDoxygen);
/**************************************************************************
+ * Add custom extension mappings
+ **************************************************************************/
+
+ QStrList &extMaps = Config_getList("EXTENSION_MAPPING");
+ char *mapping = extMaps.first();
+ while (mapping)
+ {
+ QCString mapStr = mapping;
+ int i;
+ if ((i=mapStr.find('='))!=-1)
+ {
+ QCString ext=mapStr.left(i).stripWhiteSpace().lower();
+ QCString language=mapStr.mid(i+1).stripWhiteSpace().lower();
+ if (!updateLanguageMapping(ext,language))
+ {
+ err("Failed to map file extension '%s' to unsupported language '%s'.\n"
+ "Check the EXTENSION_MAPPING setting in the config file.\n",
+ ext.data(),language.data());
+ }
+ else
+ {
+ msg("Adding custom extension mapping: .%s will be treated as language %s\n",
+ ext.data(),language.data());
+ }
+ }
+ mapping = extMaps.next();
+ }
+
+
+
+ /**************************************************************************
* Make sure the output directory exists
**************************************************************************/
QCString &outputDirectory = Config_getString("OUTPUT_DIRECTORY");
@@ -10031,8 +10083,8 @@ void generateOutput()
//}
if (g_dumpSymbolMap)
{
- dumpSymbolMap();
- exit(0);
+ dumpSymbolMap();
+ exit(0);
}
initDocParser();
diff --git a/src/doxygen.css b/src/doxygen.css
index 957b6e3..7561c63 100644
--- a/src/doxygen.css
+++ b/src/doxygen.css
@@ -24,7 +24,7 @@ caption {
font-weight: bold;
}
-div.qindex, div.navpath, div.navtab{
+div.qindex, div.navtab{
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
diff --git a/src/doxygen_css.h b/src/doxygen_css.h
index 98de1f7..591c2bf 100644
--- a/src/doxygen_css.h
+++ b/src/doxygen_css.h
@@ -24,7 +24,7 @@
" font-weight: bold;\n"
"}\n"
"\n"
-"div.qindex, div.navpath, div.navtab{\n"
+"div.qindex, div.navtab{\n"
" background-color: #e8eef2;\n"
" border: 1px solid #84b0c7;\n"
" text-align: center;\n"
diff --git a/src/entry.cpp b/src/entry.cpp
index fb45e5f..79cb9c8 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -225,6 +225,7 @@ Entry::~Entry()
delete argList;
delete tArgLists;
delete tagInfo;
+ delete typeConstr;
delete sli;
num--;
}
diff --git a/src/formula.cpp b/src/formula.cpp
index 0599c5d..764792e 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -30,6 +30,8 @@
#include "message.h"
#include "config.h"
#include "portable.h"
+#include "index.h"
+#include "doxygen.h"
Formula::Formula(const char *text)
{
@@ -92,6 +94,7 @@ void FormulaList::generateBitmaps(const char *path)
t << formula->getFormulaText() << endl << "\\pagebreak\n\n";
pagesToGenerate.append(new int(page));
}
+ Doxygen::indexList.addImageFile(resultName);
page++;
}
t << "\\end{document}" << endl;
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index f0a77b6..13572ee 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -473,7 +473,7 @@ void FTVHelp::generateLink(QTextStream &t,FTVNode *n)
// n->ref.data(),n->file.data(),n->anchor.data());
if (n->file.isEmpty()) // no link
{
- t << "<b>" << n->name << "</b>";
+ t << "<b>" << convertToHtml(n->name) << "</b>";
}
else // link into other frame
{
@@ -499,7 +499,7 @@ void FTVHelp::generateLink(QTextStream &t,FTVNode *n)
t << "\" target=\"basefrm\">";
else
t << "\" target=\"_self\">";
- t << n->name;
+ t << convertToHtml(n->name);
t << "</a>";
if (!n->ref.isEmpty())
{
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index e2f9245..bca8fc6 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -383,7 +383,7 @@ static const char tabs_css[] =
" float : left;\n"
" background : url(\"tab_r.gif\") no-repeat right top;\n"
" border-bottom : 1px solid #84B0C7;\n"
-" font-size : 8px;\n"
+" font-size : 80%;\n"
" font-weight : bold;\n"
" text-decoration : none;\n"
"}\n"
@@ -417,7 +417,7 @@ static const char tabs_css[] =
"\n"
"DIV.tabs TD\n"
"{\n"
-" font-size : 8px;\n"
+" font-size : 80%;\n"
" font-weight : bold;\n"
" text-decoration : none;\n"
"}\n"
@@ -450,6 +450,9 @@ static const char tabs_css[] =
" background : none;\n"
" border : none;\n"
" border-bottom : 1px solid #84B0C7;\n"
+" text-align : center;\n"
+" margin : 2px;\n"
+" padding : 2px;\n"
"}\n"
;
@@ -573,6 +576,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
"<title>";
t << convertToHtml(title);
t << "</title>\n";
+ t << "<link href=\"" << relPathStr << "tabs.css\" rel=\"stylesheet\" type=\"text/css\">\n";
t << "<link ";
t << "href=\"";
if (Config_getString("HTML_STYLESHEET").isEmpty())
@@ -591,7 +595,6 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
}
t << "\" rel=\"stylesheet\" type=\"text/css\">\n";
- t << "<link href=\"" << relPathStr << "tabs.css\" rel=\"stylesheet\" type=\"text/css\">\n";
t << "</head><body>\n";
}
diff --git a/src/lang_cfg.h b/src/lang_cfg.h
index 8b6efc6..2855c93 100644
--- a/src/lang_cfg.h
+++ b/src/lang_cfg.h
@@ -32,3 +32,4 @@
#define LANG_ZA
#define LANG_AR
#define LANG_FA
+#define LANG_VI
diff --git a/src/language.cpp b/src/language.cpp
index a56ed44..ec9a9c7 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -134,6 +134,9 @@
#ifdef LANG_SC
#include "translator_sc.h"
#endif
+#ifdef LANG_VI
+#include "translator_vi.h"
+#endif
#endif // !ENGLISH_ONLY
#define L_EQUAL(a) !stricmp(langName,a)
@@ -373,6 +376,12 @@ bool setTranslator(const char *langName)
theTranslator=new TranslatorMacedonian;
}
#endif
+#ifdef LANG_VI
+ else if (L_EQUAL("vietnamese"))
+ {
+ theTranslator=new TranslatorVietnamese;
+ }
+#endif
#endif // ENGLISH_ONLY
else // use the default language (i.e. english)
{
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 8a70405..01798ff 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -365,6 +365,14 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
t << "\\addtocounter{secnumdepth}{1}\n";
t << "\\sloppy\n";
t << "\\usepackage[T1]{fontenc}\n";
+ t << "\\makeatletter\n";
+ t << "\\renewcommand{\\paragraph}{\\@startsection{paragraph}{4}{0ex}%\n";
+ t << " {-3.25ex plus -1ex minus -0.2ex}%\n";
+ t << " {1.5ex plus 0.2ex}%\n";
+ t << " {\\normalfont\\normalsize\\bfseries}}\n";
+ t << "\\makeatother\n";
+ t << "\\stepcounter{secnumdepth}\n";
+ t << "\\stepcounter{tocdepth}\n";
}
void LatexGenerator::writeHeaderFile(QFile &f)
diff --git a/src/libdoxycfg.pro.in b/src/libdoxycfg.pro.in
index 9ec1616..cfa087f 100644
--- a/src/libdoxycfg.pro.in
+++ b/src/libdoxycfg.pro.in
@@ -16,8 +16,8 @@
TEMPLATE = libdoxycfg.t
CONFIG = console warn_on staticlib $extraopts
-HEADERS = config.h portable.h
-SOURCES = config.cpp portable.cpp
+HEADERS = config.h configoptions.h portable.h
+SOURCES = config.cpp configoptions.cpp portable.cpp
win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
INCLUDEPATH += ../qtools
diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in
index 2fb672e..2eabf69 100644
--- a/src/libdoxygen.pro.in
+++ b/src/libdoxygen.pro.in
@@ -137,6 +137,7 @@ HEADERS = bufstr.h \
translator_sr.h \
translator_tw.h \
translator_ua.h \
+ translator_vi.h \
translator_za.h \
unistd.h \
util.h \
diff --git a/src/parserintf.h b/src/parserintf.h
index d5fcf08..2dabebc 100644
--- a/src/parserintf.h
+++ b/src/parserintf.h
@@ -109,22 +109,38 @@ class ParserManager
{
public:
/** Creates the parser manager object.
- * @param defaultParser The default parser that is used when
- * no explicit extension has been registered for
- * a given input file.
*/
- ParserManager(ParserInterface *defaultParser)
- : m_defaultParser(defaultParser) { m_parsers.setAutoDelete(TRUE); }
+ ParserManager()
+ : m_defaultParser(0) { m_parsers.setAutoDelete(TRUE); }
/** Registers an additional parser.
- * @param[in] extension The file extension that will trigger
- * the use of this parser (e.g. ".py", or ".bas").
+ * @param[in] name A symbolic name of the parser, i.e. "c",
+ * "python", "fortran", "vhdl", ...
* @param[in] parser The parser that is to be used for the
* given extension.
+ * @param[in] defParser Use this parser as the default parser, using
+ * for unregistered file extensions.
*/
- void registerParser(const char *extension,ParserInterface *parser)
+ void registerParser(const char *name,ParserInterface *parser,bool defParser=FALSE)
{
- m_parsers.insert(extension,parser);
+ if (defParser && m_defaultParser==0) m_defaultParser=parser;
+ m_parsers.insert(name,parser);
+ }
+
+ /** Registers a file \a extension with a parser with name \a parserName.
+ * Returns TRUE if the extension was successfully registered.
+ */
+ bool registerExtension(const char *extension, const char *parserName)
+ {
+ if (parserName==0 || extension==0) return FALSE;
+ ParserInterface *intf = m_parsers.find(parserName);
+ if (intf==0) return FALSE;
+ if (m_extensions.find(extension)!=0) // extension already exists
+ {
+ m_extensions.remove(extension); // remove it
+ }
+ m_extensions.insert(extension,intf); // add new mapping
+ return TRUE;
}
/** Gets the interface to the parser associated with given \a extension.
@@ -135,16 +151,17 @@ class ParserManager
{
if (extension==0) return m_defaultParser;
QCString ext = QCString(extension).lower();
- ParserInterface *intf = m_parsers.find(ext);
+ ParserInterface *intf = m_extensions.find(ext);
if (intf==0 && ext.length()>4)
{
- intf = m_parsers.find(ext.left(4));
+ intf = m_extensions.find(ext.left(4));
}
return intf ? intf : m_defaultParser;
}
private:
QDict<ParserInterface> m_parsers;
+ QDict<ParserInterface> m_extensions;
ParserInterface *m_defaultParser;
};
diff --git a/src/qhp.cpp b/src/qhp.cpp
index e870ef5..ba7983d 100644
--- a/src/qhp.cpp
+++ b/src/qhp.cpp
@@ -75,7 +75,7 @@ void Qhp::initialize()
m_doc.openCloseContent("virtualFolder", virtualFolder);
// Add custom filter
- QCString filterName = Config_getString("QHP_CUSTOM_FILTER_NAME");
+ QCString filterName = Config_getString("QHP_CUST_FILTER_NAME");
if (!filterName.isEmpty())
{
const char * tagAttributes[] =
diff --git a/src/scanner.l b/src/scanner.l
index 37fc323..7704ef8 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -4613,7 +4613,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
<Bases,ClassVar>("//"{B}*)?"/**"/[^/*] |
<Bases,ClassVar>("//"{B}*)?"/*!" |
<Bases,ClassVar>"//!" |
-<Bases,ClassVar>[\-+]{BN}+ {
+<Bases,ClassVar>[\-+]{BN}* {
if (!insideObjC)
{
REJECT;
diff --git a/src/translator_vi.h b/src/translator_vi.h
new file mode 100644
index 0000000..163c69a
--- /dev/null
+++ b/src/translator_vi.h
@@ -0,0 +1,1787 @@
+/******************************************************************************
+ *
+ *
+ *
+ * Copyright (C) 1997-2008 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#ifndef TRANSLATOR_VI_H
+#define TRANSLATOR_VI_H
+
+/*
+ * 17 Oct 2008 : Translation to Vietnamese by
+ * Đặng Minh Tuấn <tuanvietkey@gmail.com>
+ *
+ */
+
+
+/*!
+ When defining a translator class for the new language, follow
+ the description in the documentation. One of the steps says
+ that you should copy the translator_en.h (this) file to your
+ translator_xx.h new file. Your new language should use the
+ Translator class as the base class. This means that you need to
+ implement exactly the same (pure virtual) methods as the
+ TranslatorEnglish does. Because of this, it is a good idea to
+ start with the copy of TranslatorEnglish and replace the strings
+ one by one.
+
+ It is not necessary to include "translator.h" or
+ "translator_adapter.h" here. The files are included in the
+ language.cpp correctly. Not including any of the mentioned
+ files frees the maintainer from thinking about whether the
+ first, the second, or both files should be included or not, and
+ why. This holds namely for localized translators because their
+ base class is changed occasionaly to adapter classes when the
+ Translator class changes the interface, or back to the
+ Translator class (by the local maintainer) when the localized
+ translator is made up-to-date again.
+*/
+class TranslatorVietnamese : public Translator
+{
+ public:
+
+ // --- Language control methods -------------------
+
+ /*! Used for identification of the language. The identification
+ * should not be translated. It should be replaced by the name
+ * of the language in English using lower-case characters only
+ * (e.g. "czech", "japanese", "russian", etc.). It should be equal to
+ * the identification used in language.cpp.
+ */
+ virtual QCString idLanguage()
+ { return "vietnamese"; }
+
+ /*! Used to get the LaTeX command(s) for the language support.
+ * This method should return string with commands that switch
+ * LaTeX to the desired language. For example
+ * <pre>"\\usepackage[german]{babel}\n"
+ * </pre>
+ * or
+ * <pre>"\\usepackage{polski}\n"
+ * "\\usepackage[latin2]{inputenc}\n"
+ * "\\usepackage[T1]{fontenc}\n"
+ * </pre>
+ *
+ * The English LaTeX does not use such commands. Because of this
+ * the empty string is returned in this implementation.
+ */
+ virtual QCString latexLanguageSupportCommand()
+ {
+ return "";
+ }
+
+ /*! return the language charset. This will be used for the HTML output */
+ virtual QCString idLanguageCharset()
+ {
+ return "utf-8";
+ }
+
+ // --- Language translation methods -------------------
+
+ /*! used in the compound documentation before a list of related functions. */
+ virtual QCString trRelatedFunctions()
+ { return "Những hàm liên quan"; }
+
+ /*! subscript for the related functions. */
+ virtual QCString trRelatedSubscript()
+ { return "(Chú ý những hàm này không phải là hàm thành viên.)"; }
+
+ /*! header that is put before the detailed description of files, classes and namespaces. */
+ virtual QCString trDetailedDescription()
+ { return "Mô tả chi tiết"; }
+
+ /*! header that is put before the list of typedefs. */
+ virtual QCString trMemberTypedefDocumentation()
+ { return "Thông tin về Member Typedef"; }
+
+ /*! header that is put before the list of enumerations. */
+ virtual QCString trMemberEnumerationDocumentation()
+ { return "Thông tin về Member Enumeration"; }
+
+ /*! header that is put before the list of member functions. */
+ virtual QCString trMemberFunctionDocumentation()
+ { return "Thông tin về hàm thành viên"; }
+
+ /*! header that is put before the list of member attributes. */
+ virtual QCString trMemberDataDocumentation()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Thông tin về trường";
+ }
+ else
+ {
+ return "Thông tin về Member Data";
+ }
+ }
+
+ /*! this is the text of a link put after brief descriptions. */
+ virtual QCString trMore()
+ { return "Tiếp..."; }
+
+ /*! put in the class documentation */
+ virtual QCString trListOfAllMembers()
+ { return "Liệt kê tất cả các thành viên."; }
+
+ /*! used as the title of the "list of all members" page of a class */
+ virtual QCString trMemberList()
+ { return "Danh sách thành viên"; }
+
+ /*! this is the first part of a sentence that is followed by a class name */
+ virtual QCString trThisIsTheListOfAllMembers()
+ { return "Danh sách các thành viên đầy đủ cho "; }
+
+ /*! this is the remainder of the sentence after the class name */
+ virtual QCString trIncludingInheritedMembers()
+ { return ", cùng với tất cả các thành viên kế thừa."; }
+
+ /*! this is put at the author sections at the bottom of man pages.
+ * parameter s is name of the project name.
+ */
+ virtual QCString trGeneratedAutomatically(const char *s)
+ { QCString result="Được tạo ra bởi Doxygen";
+ if (s) result+=(QCString)" cho "+s;
+ result+=" từ mã nguồn.";
+ return result;
+ }
+
+ /*! put after an enum name in the list of all members */
+ virtual QCString trEnumName()
+ { return "tên enum"; }
+
+ /*! put after an enum value in the list of all members */
+ virtual QCString trEnumValue()
+ { return "giá trị enum"; }
+
+ /*! put after an undocumented member in the list of all members */
+ virtual QCString trDefinedIn()
+ { return "được định nghĩa trong"; }
+
+ // quick reference sections
+
+ /*! This is put above each page as a link to the list of all groups of
+ * compounds or files (see the \\group command).
+ */
+ virtual QCString trModules()
+ { return "Các Modules"; }
+
+ /*! This is put above each page as a link to the class hierarchy */
+ virtual QCString trClassHierarchy()
+ { return "Kiến trúc Class"; }
+
+ /*! This is put above each page as a link to the list of annotated classes */
+ virtual QCString trCompoundList()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Cấu trúc cơ sở dữ liệu (Data Structures)";
+ }
+ else
+ {
+ return "Danh mục các Class";
+ }
+ }
+
+ /*! This is put above each page as a link to the list of documented files */
+ virtual QCString trFileList()
+ { return "Danh mục File"; }
+
+ /*! This is put above each page as a link to all members of compounds. */
+ virtual QCString trCompoundMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Các trường dữ liệu";
+ }
+ else
+ {
+ return "Các thành viên của Class";
+ }
+ }
+
+ /*! This is put above each page as a link to all members of files. */
+ virtual QCString trFileMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Toàn cục";
+ }
+ else
+ {
+ return "File thành viên";
+ }
+ }
+
+ /*! This is put above each page as a link to all related pages. */
+ virtual QCString trRelatedPages()
+ { return "Các trang liên quan"; }
+
+ /*! This is put above each page as a link to all examples. */
+ virtual QCString trExamples()
+ { return "Các ví dụ"; }
+
+ /*! This is put above each page as a link to the search engine. */
+ virtual QCString trSearch()
+ { return "Tìm kiếm"; }
+
+ /*! This is an introduction to the class hierarchy. */
+ virtual QCString trClassHierarchyDescription()
+ { return "Danh sách kế thừa đã được sắp xếp theo ABC, "
+ "nhưng chưa đầy đủ:";
+ }
+
+ /*! This is an introduction to the list with all files. */
+ virtual QCString trFileListDescription(bool extractAll)
+ {
+ QCString result="Danh mục đầy đủ tất cả các ";
+ if (!extractAll) result+="(đã được biên soạn) ";
+ result+="files cùng với các mô tả tóm tắt:";
+ return result;
+ }
+
+ /*! This is an introduction to the annotated compound list. */
+ virtual QCString trCompoundListDescription()
+ {
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Đây là cấu trúc cơ sở dữ liệu với mô tả tóm tắt:";
+ }
+ else
+ {
+ return "Đây là các classes, structs, "
+ "unions và interfaces với các mô tả tóm tắt:";
+ }
+ }
+
+ /*! This is an introduction to the page with all class members. */
+ virtual QCString trCompoundMembersDescription(bool extractAll)
+ {
+ QCString result="Danh mục tất cả các ";
+ if (!extractAll)
+ {
+ result+="(đã được mô tả) ";
+ }
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="struct và union fields";
+ }
+ else
+ {
+ result+="class members";
+ }
+ result+=" cùng với các các liên kết đến ";
+ if (!extractAll)
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="Thông tin về struct/union cho từng trường:";
+ }
+ else
+ {
+ result+="Thông tin về class cho từng thành viên:";
+ }
+ }
+ else
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="các structures/unions thuộc:";
+ }
+ else
+ {
+ result+="các lớp thuộc:";
+ }
+ }
+ return result;
+ }
+
+ /*! This is an introduction to the page with all file members. */
+ virtual QCString trFileMembersDescription(bool extractAll)
+ {
+ QCString result="Danh sách tất cả các ";
+ if (!extractAll) result+="(đã được mô tat) ";
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="functions, variables, defines, enums, và typedefs";
+ }
+ else
+ {
+ result+="các file thành viên";
+ }
+ result+=" cùng với links tới ";
+ if (extractAll)
+ result+="các files thuộc:";
+ else
+ result+="tài liệu:";
+ return result;
+ }
+
+ /*! This is an introduction to the page with the list of all examples */
+ virtual QCString trExamplesDescription()
+ { return "Danh sách tất cả các ví dụ:"; }
+
+ /*! This is an introduction to the page with the list of related pages */
+ virtual QCString trRelatedPagesDescription()
+ { return "Danh sách tất cả các trang Thông tin có liên quan:"; }
+
+ /*! This is an introduction to the page with the list of class/file groups */
+ virtual QCString trModulesDescription()
+ { return "Danh sách tất cả các thành viên:"; }
+
+ // index titles (the project name is prepended for these)
+
+ /*! This is used in HTML as the title of index.html. */
+ virtual QCString trDocumentation()
+ { return "Thông tin"; }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all groups.
+ */
+ virtual QCString trModuleIndex()
+ { return "Chỉ mục (Index) Module"; }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * class hierarchy.
+ */
+ virtual QCString trHierarchicalIndex()
+ { return "Hierarchical Index"; }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * annotated compound index.
+ */
+ virtual QCString trCompoundIndex()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Index cấu trúc cơ sở dữ liệu";
+ }
+ else
+ {
+ return "Class Index";
+ }
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * list of all files.
+ */
+ virtual QCString trFileIndex()
+ { return "File Index"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all groups.
+ */
+ virtual QCString trModuleDocumentation()
+ { return "Thông tin về các Module"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all classes, structs and unions.
+ */
+ virtual QCString trClassDocumentation()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Thông tin về cấu trúc cơ sở dữ liệu";
+ }
+ else
+ {
+ return "Thông tin về Class";
+ }
+ }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all files.
+ */
+ virtual QCString trFileDocumentation()
+ { return "Thông tin về File"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all examples.
+ */
+ virtual QCString trExampleDocumentation()
+ { return "Thông tin về các ví dụ"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all related pages.
+ */
+ virtual QCString trPageDocumentation()
+ { return "Trang Thông tin"; }
+
+ /*! This is used in LaTeX as the title of the document */
+ virtual QCString trReferenceManual()
+ { return "Thông tin tham chiếu"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of defines
+ */
+ virtual QCString trDefines()
+ { return "Định nghĩa"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of function prototypes
+ */
+ virtual QCString trFuncProtos()
+ { return "Function Prototypes"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of typedefs
+ */
+ virtual QCString trTypedefs()
+ { return "Typedefs"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of enumerations
+ */
+ virtual QCString trEnumerations()
+ { return "Enumerations"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) functions
+ */
+ virtual QCString trFunctions()
+ { return "Các hàm"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) variables
+ */
+ virtual QCString trVariables()
+ { return "Các biến"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) variables
+ */
+ virtual QCString trEnumerationValues()
+ { return "Enumerator"; }
+
+ /*! This is used in the documentation of a file before the list of
+ * documentation blocks for defines
+ */
+ virtual QCString trDefineDocumentation()
+ { return "Thông tin về định nghĩa"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for function prototypes
+ */
+ virtual QCString trFunctionPrototypeDocumentation()
+ { return "Thông tin về Function Prototype"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for typedefs
+ */
+ virtual QCString trTypedefDocumentation()
+ { return "Thông tin về Typedef"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration types
+ */
+ virtual QCString trEnumerationTypeDocumentation()
+ { return "Thông tin về Enumeration Type"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for functions
+ */
+ virtual QCString trFunctionDocumentation()
+ { return "Thông tin về hàm"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for variables
+ */
+ virtual QCString trVariableDocumentation()
+ { return "Thông tin về các biến"; }
+
+ /*! This is used in the documentation of a file/namespace/group before
+ * the list of links to documented compounds
+ */
+ virtual QCString trCompounds()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Cấu trúc cơ sở dữ liệu";
+ }
+ else
+ {
+ return "Classes";
+ }
+ }
+
+ /*! This is used in the standard footer of each page and indicates when
+ * the page was generated
+ */
+ virtual QCString trGeneratedAt(const char *date,const char *projName)
+ {
+ QCString result=(QCString)"Được biên soạn vào "+date;
+ if (projName) result+=(QCString)" cho mã nguồn dự án "+projName;
+ result+=(QCString)" bởi";
+ return result;
+ }
+ /*! This is part of the sentence used in the standard footer of each page.
+ */
+ virtual QCString trWrittenBy()
+ {
+ return "được viết bởi";
+ }
+
+ /*! this text is put before a class diagram */
+ virtual QCString trClassDiagram(const char *clName)
+ {
+ return (QCString)"Sơ đồ kế thừa cho "+clName+":";
+ }
+
+ /*! this text is generated when the \\internal command is used. */
+ virtual QCString trForInternalUseOnly()
+ { return "Chỉ cho sử dụng nội bộ."; }
+
+ /*! this text is generated when the \\warning command is used. */
+ virtual QCString trWarning()
+ { return "Lưu ý"; }
+
+ /*! this text is generated when the \\version command is used. */
+ virtual QCString trVersion()
+ { return "Phiên bản"; }
+
+ /*! this text is generated when the \\date command is used. */
+ virtual QCString trDate()
+ { return "Ngày"; }
+
+ /*! this text is generated when the \\return command is used. */
+ virtual QCString trReturns()
+ { return "Giá trị trả về"; }
+
+ /*! this text is generated when the \\sa command is used. */
+ virtual QCString trSeeAlso()
+ { return "Xem thêm"; }
+
+ /*! this text is generated when the \\param command is used. */
+ virtual QCString trParameters()
+ { return "Các tham số"; }
+
+ /*! this text is generated when the \\exception command is used. */
+ virtual QCString trExceptions()
+ { return "Exceptions"; }
+
+ /*! this text is used in the title page of a LaTeX document. */
+ virtual QCString trGeneratedBy()
+ { return "Được biên soạn bởi"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used as the title of page containing all the index of all namespaces. */
+ virtual QCString trNamespaceList()
+ { return "Danh sách Namespace"; }
+
+ /*! used as an introduction to the namespace list */
+ virtual QCString trNamespaceListDescription(bool extractAll)
+ {
+ QCString result="Danh sách tất cả các ";
+ if (!extractAll) result+="(đã được biên tập) ";
+ result+="namespaces với mô tả tóm tắt:";
+ return result;
+ }
+
+ /*! used in the class documentation as a header before the list of all
+ * friends of a class
+ */
+ virtual QCString trFriends()
+ { return "Friends"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in the class documentation as a header before the list of all
+ * related classes
+ */
+ virtual QCString trRelatedFunctionDocumentation()
+ { return "Thông tin về Friends và các hàm liên quan"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used as the title of the HTML page of a class/struct/union */
+ virtual QCString trCompoundReference(const char *clName,
+ ClassDef::CompoundType compType,
+ bool isTemplate)
+ {
+ QCString result=(QCString)clName;
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" Class"; break;
+ case ClassDef::Struct: result+=" Struct"; break;
+ case ClassDef::Union: result+=" Union"; break;
+ case ClassDef::Interface: result+=" Interface"; break;
+ case ClassDef::Protocol: result+=" Protocol"; break;
+ case ClassDef::Category: result+=" Category"; break;
+ case ClassDef::Exception: result+=" Exception"; break;
+ }
+ if (isTemplate) result+=" Template";
+ result+=" Tham chiếu";
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a file */
+ virtual QCString trFileReference(const char *fileName)
+ {
+ QCString result=fileName;
+ result+=" File Tham chiếu";
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a namespace */
+ virtual QCString trNamespaceReference(const char *namespaceName)
+ {
+ QCString result=namespaceName;
+ result+=" Namespace Tham chiếu";
+ return result;
+ }
+
+ virtual QCString trPublicMembers()
+ { return "Các hàm thành viên Public"; }
+ virtual QCString trPublicSlots()
+ { return "Public Slots"; }
+ virtual QCString trSignals()
+ { return "Signals"; }
+ virtual QCString trStaticPublicMembers()
+ { return "Các hàm Static Public"; }
+ virtual QCString trProtectedMembers()
+ { return "Các hàm thành viên Protected"; }
+ virtual QCString trProtectedSlots()
+ { return "Protected Slots"; }
+ virtual QCString trStaticProtectedMembers()
+ { return "Các hàm thành viên Static Protected"; }
+ virtual QCString trPrivateMembers()
+ { return "Các hàm thành viên Private"; }
+ virtual QCString trPrivateSlots()
+ { return "Private Slots"; }
+ virtual QCString trStaticPrivateMembers()
+ { return "Các hàm thành viên Static Private"; }
+
+ /*! this function is used to produce a comma-separated list of items.
+ * use generateMarker(i) to indicate where item i should be put.
+ */
+ virtual QCString trWriteList(int numEntries)
+ {
+ QCString result;
+ int i;
+ // the inherits list contain `numEntries' classes
+ for (i=0;i<numEntries;i++)
+ {
+ // use generateMarker to generate placeholders for the class links!
+ result+=generateMarker(i); // generate marker for entry i in the list
+ // (order is left to right)
+
+ if (i!=numEntries-1) // not the last entry, so we need a separator
+ {
+ if (i<numEntries-2) // not the fore last entry
+ result+=", ";
+ else // the fore last entry
+ result+=", và ";
+ }
+ }
+ return result;
+ }
+
+ /*! used in class documentation to produce a list of base classes,
+ * if class diagrams are disabled.
+ */
+ virtual QCString trInheritsList(int numEntries)
+ {
+ return "Kế thừa "+trWriteList(numEntries)+".";
+ }
+
+ /*! used in class documentation to produce a list of super classes,
+ * if class diagrams are disabled.
+ */
+ virtual QCString trInheritedByList(int numEntries)
+ {
+ return "Được kế thừa bởi "+trWriteList(numEntries)+".";
+ }
+
+ /*! used in member documentation blocks to produce a list of
+ * members that are hidden by this one.
+ */
+ virtual QCString trReimplementedFromList(int numEntries)
+ {
+ return "Được thực thi lại từ "+trWriteList(numEntries)+".";
+ }
+
+ /*! used in member documentation blocks to produce a list of
+ * all member that overwrite the implementation of this member.
+ */
+ virtual QCString trReimplementedInList(int numEntries)
+ {
+ return "Được thực thi lại trong "+trWriteList(numEntries)+".";
+ }
+
+ /*! This is put above each page as a link to all members of namespaces. */
+ virtual QCString trNamespaceMembers()
+ { return "Thành viên Namespace"; }
+
+ /*! This is an introduction to the page with all namespace members */
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
+ {
+ QCString result="Danh sách tất cả các ";
+ if (!extractAll) result+="(đã được biên soạn) ";
+ result+="các thành viên namespace cùng với link tới ";
+ if (extractAll)
+ result+="Thông tin namespace cho từng thành viên:";
+ else
+ result+=" namespaces mà phụ thuộc bởi:";
+ return result;
+ }
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all namespaces.
+ */
+ virtual QCString trNamespaceIndex()
+ { return "Namespace Index"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all namespaces.
+ */
+ virtual QCString trNamespaceDocumentation()
+ { return "Thông tin về Namespace"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990522
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used in the documentation before the list of all
+ * namespaces in a file.
+ */
+ virtual QCString trNamespaces()
+ { return "Namespaces"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990728
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is put at the bottom of a class documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Class", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Thông tin cho ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="class"; break;
+ case ClassDef::Struct: result+="struct"; break;
+ case ClassDef::Union: result+="union"; break;
+ case ClassDef::Interface: result+="interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break;
+ case ClassDef::Category: result+="category"; break;
+ case ClassDef::Exception: result+="exception"; break;
+ }
+ result+=" được biên soạn từ các file sau đây";
+ if (single) result+=":"; else result+=":";
+ return result;
+ }
+
+ /*! This is in the (quick) index as a link to the alphabetical compound
+ * list.
+ */
+ virtual QCString trAlphabeticalList()
+ { return "Danh sách theo ABC"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990901
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used as the heading text for the retval command. */
+ virtual QCString trReturnValues()
+ { return "Các giá trị trả về"; }
+
+ /*! This is in the (quick) index as a link to the main page (index.html)
+ */
+ virtual QCString trMainPage()
+ { return "Tranh chính"; }
+
+ /*! This is used in references to page that are put in the LaTeX
+ * documentation. It should be an abbreviation of the word page.
+ */
+ virtual QCString trPageAbbreviation()
+ { return "tr."; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991003
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trDefinedAtLineInSourceFile()
+ {
+ return "Định nghĩa tại dòng @0 trong file @1.";
+ }
+ virtual QCString trDefinedInSourceFile()
+ {
+ return "Định nghĩa trong file @0.";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991205
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trDeprecated()
+ {
+ return "Không tán thành";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.0.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! this text is put before a collaboration diagram */
+ virtual QCString trCollaborationDiagram(const char *clName)
+ {
+ return (QCString)"Sơ đồ liên kết cho "+clName+":";
+ }
+ /*! this text is put before an include dependency graph */
+ virtual QCString trInclDepGraph(const char *fName)
+ {
+ return (QCString)"Kèm theo graph phụ thuộc cho "+fName+":";
+ }
+ /*! header that is put before the list of constructor/destructors. */
+ virtual QCString trConstructorDocumentation()
+ {
+ return "Thông tin về Constructor và Destructor";
+ }
+ /*! Used in the file documentation to point to the corresponding sources. */
+ virtual QCString trGotoSourceCode()
+ {
+ return "Tới mã nguồn của file này.";
+ }
+ /*! Used in the file sources to point to the corresponding documentation. */
+ virtual QCString trGotoDocumentation()
+ {
+ return "Tới Thông tin của file này.";
+ }
+ /*! Text for the \\pre command */
+ virtual QCString trPrecondition()
+ {
+ return "Điều kiện trước";
+ }
+ /*! Text for the \\post command */
+ virtual QCString trPostcondition()
+ {
+ return "Điều kiện sau";
+ }
+ /*! Text for the \\invariant command */
+ virtual QCString trInvariant()
+ {
+ return "Bất biến";
+ }
+ /*! Text shown before a multi-line variable/enum initialization */
+ virtual QCString trInitialValue()
+ {
+ return "Giá trị khởi tạo:";
+ }
+ /*! Text used the source code in the file index */
+ virtual QCString trCode()
+ {
+ return "mã nguồn";
+ }
+ virtual QCString trGraphicalHierarchy()
+ {
+ return "Kiến trúc đồ họa của Class";
+ }
+ virtual QCString trGotoGraphicalHierarchy()
+ {
+ return "Tới kiến trúc đồ họa của Class";
+ }
+ virtual QCString trGotoTextualHierarchy()
+ {
+ return "Tới kiến trúc text của Class";
+ }
+ virtual QCString trPageIndex()
+ {
+ return "Chỉ mục trang";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.0
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trNote()
+ {
+ return "Ghi chú";
+ }
+ virtual QCString trPublicTypes()
+ {
+ return "Public Types";
+ }
+ virtual QCString trPublicAttribs()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "các trường đữ liệu";
+ }
+ else
+ {
+ return "Các thuộc tính Public";
+ }
+ }
+ virtual QCString trStaticPublicAttribs()
+ {
+ return "Các thuộc tính Static Public";
+ }
+ virtual QCString trProtectedTypes()
+ {
+ return "Các kiểu Protected";
+ }
+ virtual QCString trProtectedAttribs()
+ {
+ return "các thuộc tính Protected";
+ }
+ virtual QCString trStaticProtectedAttribs()
+ {
+ return "Các thuộc tính Static Protected";
+ }
+ virtual QCString trPrivateTypes()
+ {
+ return "Các kiểu Private";
+ }
+ virtual QCString trPrivateAttribs()
+ {
+ return "Các thuộc tính Private";
+ }
+ virtual QCString trStaticPrivateAttribs()
+ {
+ return "Các thuộc tính Static Private";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.3
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a \\todo item */
+ virtual QCString trTodo()
+ {
+ return "Mục tiêu";
+ }
+ /*! Used as the header of the todo list */
+ virtual QCString trTodoList()
+ {
+ return "Danh sách hàng mục cần thực hiện";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.4
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trReferencedBy()
+ {
+ return "Tham chiếu bởi";
+ }
+ virtual QCString trRemarks()
+ {
+ return "Ghi chú";
+ }
+ virtual QCString trAttention()
+ {
+ return "Chú ý";
+ }
+ virtual QCString trInclByDepGraph()
+ {
+ return "Đồ thị này biểu thị những file nào trực tiếp hoặc"
+ "không trực tiếp bao gồm file này:";
+ }
+ virtual QCString trSince()
+ {
+ return "Từ";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! title of the graph legend page */
+ virtual QCString trLegendTitle()
+ {
+ return "Chú giải Graph";
+ }
+ /*! page explaining how the dot graph's should be interpreted
+ * The %A in the text below are to prevent link to classes called "A".
+ */
+ virtual QCString trLegendDocs()
+ {
+ return
+ "Trang này giải nghĩa các biểu đồ được biên soạn bởi "
+ " doxygen.<p>\n"
+ "Hãy xem xét các ví dụ sau:\n"
+ "\\code\n"
+ "/*! Các lướp không thấy được bởi sự cắt ngắn */\n"
+ "Lớp không nhìn thấy class { };\n\n"
+ "/*! class bị cắt, quan hệ kế thừa bị ẩn */\n"
+ "class bị cắt : bị ẩn toàn cục { };\n\n"
+ "/* Class không được mô tả với các chú giải doxygen */\n"
+ "class không được mô tả { };\n\n"
+ "/*! Class được kế thừa sử dụng các kế thừa public */\n"
+ "class PublicBase : public Truncated { };\n\n"
+ "/*! template class */\n"
+ "template<class T> class Templ { };\n\n"
+ "/*! Class được kế thừa sử dụng kế thừa protected */\n"
+ "class ProtectedBase { };\n\n"
+ "/*! Class được kế thừa sử dụng kế thừa protected private */\n"
+ "class PrivateBase { };\n\n"
+ "/*! Class được sử dụng bởi các class kế thừa */\n"
+ "class được sử dụng { };\n\n"
+ "/*! Super class kế thừa một số các class khác */\n"
+ "class được kế thừa : public PublicBase,\n"
+ " protected ProtectedBase,\n"
+ " private PrivateBase,\n"
+ " public Undocumented,\n"
+ " public Templ<int>\n"
+ "{\n"
+ " private:\n"
+ " Used *m_usedClass;\n"
+ "};\n"
+ "\\endcode\n"
+ "Kết quả trong biểu đồ sau đây:"
+ "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+ "<p>\n"
+ "Các hộp trong biểu đồ trên có ý nghĩa như sau:\n"
+ "<ul>\n"
+ "<li>%Hộp màu xám biểu thị cấu trúc clas cho "
+ "biểu đồ được thể hiện.\n"
+ "<li>%Hộp có khung mầu đen biểu thị struct hoặc class được mô tả.\n"
+ "<li>%Hộp có khung mầu xám biểu thị struct hoặc class chưa được mô tả.\n"
+ "<li>%Hộp có khung mầu đỏ biểu thị struct hoặc class được mổ tả "
+ "khi mà không phải tất cả các quan hệ kế thừa/containment được biển diễn.. %Biểu đồ bị "
+ "cắt nếu nó không nằm trọn trong các biên được cho trước..\n"
+ "</ul>\n"
+ "Các mũi tên có ý nghĩa như sau::\n"
+ "<ul>\n"
+ "<li>%Mũi tên mầu xanh đậm biểu thị các quan hệ kế thừa công khai "
+ "giữa 2 class.\n"
+ "<li>%Mũi tên màu xanh lá cây đậm biểu thị kế thừa được bảo về (protected).\n"
+ "<li>%Mũi tên đỏ đậm biểu thị kế thừa dạng private.\n"
+ "<li>%Mũi tên màu hồng đứt quảng biểu thị class được sử dụng "
+ "bởi class khác. Mũi tên được gán nhãn với các giá trị "
+ "mà các calsss hoặc struct được truy cập tới.\n"
+ "<li>%Mũi tên vàng đắt quãng được thị quan hệ giữa template instance và "
+ "template class được dẫn xuất từ đó. Mũi tên được gán nhãn với "
+ "tham số của template.\n"
+ "</ul>\n";
+ }
+ /*! text for the link to the legend page */
+ virtual QCString trLegend()
+ {
+ return "Chú giải";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a test item */
+ virtual QCString trTest()
+ {
+ return "Test";
+ }
+ /*! Used as the header of the test list */
+ virtual QCString trTestList()
+ {
+ return "Danh sách Test";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for KDE-2 IDL methods */
+ virtual QCString trDCOPMethods()
+ {
+ return "Các hàm thành viên DCOP";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.2
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for IDL properties */
+ virtual QCString trProperties()
+ {
+ return "Thuộc tính";
+ }
+ /*! Used as a section header for IDL property documentation */
+ virtual QCString trPropertyDocumentation()
+ {
+ return "Thông tin thuộc tính (Property)";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.4
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used for Java classes in the summary section of Java packages */
+ virtual QCString trClasses()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Cấu trúc dữ liệu";
+ }
+ else
+ {
+ return "Classes";
+ }
+ }
+ /*! Used as the title of a Java package */
+ virtual QCString trPackage(const char *name)
+ {
+ return (QCString)"Gói "+name;
+ }
+ /*! Title of the package index page */
+ virtual QCString trPackageList()
+ {
+ return "Danh sách gói";
+ }
+ /*! The description of the package index page */
+ virtual QCString trPackageListDescription()
+ {
+ return "Danh sách các gói cùng với mô tả tóm tắt (khi có thể có):";
+ }
+ /*! The link name in the Quick links header for each page */
+ virtual QCString trPackages()
+ {
+ return "Các gói";
+ }
+ /*! Text shown before a multi-line define */
+ virtual QCString trDefineValue()
+ {
+ return "Giá trị:";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a \\bug item */
+ virtual QCString trBug()
+ {
+ return "Lỗi";
+ }
+ /*! Used as the header of the bug list */
+ virtual QCString trBugList()
+ {
+ return "Danh sách lỗi";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.6
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as ansicpg for RTF file
+ *
+ * The following table shows the correlation of Charset name, Charset Value and
+ * <pre>
+ * Codepage number:
+ * Charset Name Charset Value(hex) Codepage number
+ * ------------------------------------------------------
+ * DEFAULT_CHARSET 1 (x01)
+ * SYMBOL_CHARSET 2 (x02)
+ * OEM_CHARSET 255 (xFF)
+ * ANSI_CHARSET 0 (x00) 1252
+ * RUSSIAN_CHARSET 204 (xCC) 1251
+ * EE_CHARSET 238 (xEE) 1250
+ * GREEK_CHARSET 161 (xA1) 1253
+ * TURKISH_CHARSET 162 (xA2) 1254
+ * BALTIC_CHARSET 186 (xBA) 1257
+ * HEBREW_CHARSET 177 (xB1) 1255
+ * ARABIC _CHARSET 178 (xB2) 1256
+ * SHIFTJIS_CHARSET 128 (x80) 932
+ * HANGEUL_CHARSET 129 (x81) 949
+ * GB2313_CHARSET 134 (x86) 936
+ * CHINESEBIG5_CHARSET 136 (x88) 950
+ * </pre>
+ *
+ */
+ virtual QCString trRTFansicp()
+ {
+ return "1252";
+ }
+
+
+ /*! Used as ansicpg for RTF fcharset
+ * \see trRTFansicp() for a table of possible values.
+ */
+ virtual QCString trRTFCharSet()
+ {
+ return "0";
+ }
+
+ /*! Used as header RTF general index */
+ virtual QCString trRTFGeneralIndex()
+ {
+ return "Chỉ số";
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trClass(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Class" : "class"));
+ if (!singular) result+="es";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trFile(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "File" : "file"));
+ if (!singular) result+="s";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trNamespace(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Namespace" : "namespace"));
+ if (!singular) result+="s";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trGroup(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Group" : "group"));
+ if (!singular) result+="s";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trPage(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Trang" : "trang"));
+ if (!singular) result+="";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trMember(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Member" : "member"));
+ if (!singular) result+="s";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trGlobal(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Global" : "global"));
+ if (!singular) result+="s";
+ return result;
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.7
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This text is generated when the \\author command is used and
+ * for the author section in man pages. */
+ virtual QCString trAuthor(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Tác giả" : "tác giả"));
+ if (!singular) result+="";
+ return result;
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.11
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This text is put before the list of members referenced by a member
+ */
+ virtual QCString trReferences()
+ {
+ return "Tham chiếu";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.13
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in member documentation blocks to produce a list of
+ * members that are implemented by this one.
+ */
+ virtual QCString trImplementedFromList(int numEntries)
+ {
+ return "Thực hiện "+trWriteList(numEntries)+".";
+ }
+
+ /*! used in member documentation blocks to produce a list of
+ * all members that implement this abstract member.
+ */
+ virtual QCString trImplementedInList(int numEntries)
+ {
+ return "Được thực hiện trong "+trWriteList(numEntries)+".";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.16
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in RTF documentation as a heading for the Table
+ * of Contents.
+ */
+ virtual QCString trRTFTableOfContents()
+ {
+ return "Mục lục";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.17
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as the header of the list of item that have been
+ * flagged deprecated
+ */
+ virtual QCString trDeprecatedList()
+ {
+ return "Danh sách Deprecated";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.18
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a header for declaration section of the events found in
+ * a C# program
+ */
+ virtual QCString trEvents()
+ {
+ return "Sự kiện";
+ }
+ /*! Header used for the documentation section of a class' events. */
+ virtual QCString trEventDocumentation()
+ {
+ return "Thông tin về sự kiện";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a heading for a list of Java class types with package scope.
+ */
+ virtual QCString trPackageTypes()
+ {
+ return "Kiểu gói";
+ }
+ /*! Used as a heading for a list of Java class functions with package
+ * scope.
+ */
+ virtual QCString trPackageMembers()
+ {
+ return "Các hàm Package";
+ }
+ /*! Used as a heading for a list of static Java class functions with
+ * package scope.
+ */
+ virtual QCString trStaticPackageMembers()
+ {
+ return "Các hàm Static Package";
+ }
+ /*! Used as a heading for a list of Java class variables with package
+ * scope.
+ */
+ virtual QCString trPackageAttribs()
+ {
+ return "Các thuộc tính Package";
+ }
+ /*! Used as a heading for a list of static Java class variables with
+ * package scope.
+ */
+ virtual QCString trStaticPackageAttribs()
+ {
+ return "Các thuộc tính Static Package";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used in the quick index of a class/file/namespace member list page
+ * to link to the unfiltered list of all members.
+ */
+ virtual QCString trAll()
+ {
+ return "Tất cả";
+ }
+ /*! Put in front of the call graph for a function. */
+ virtual QCString trCallGraph()
+ {
+ return "Biểu đồ các lời gọi cho hàm này:";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.3
+//////////////////////////////////////////////////////////////////////////
+
+ /*! When the search engine is enabled this text is put in the header
+ * of each page before the field where one can enter the text to search
+ * for.
+ */
+ virtual QCString trSearchForIndex()
+ {
+ return "Tìm kiếm cho";
+ }
+ /*! This string is used as the title for the page listing the search
+ * results.
+ */
+ virtual QCString trSearchResultsTitle()
+ {
+ return "Kết quả tìm kiếm";
+ }
+ /*! This string is put just before listing the search results. The
+ * text can be different depending on the number of documents found.
+ * Inside the text you can put the special marker $num to insert
+ * the number representing the actual number of search results.
+ * The @a numDocuments parameter can be either 0, 1 or 2, where the
+ * value 2 represents 2 or more matches. HTML markup is allowed inside
+ * the returned string.
+ */
+ virtual QCString trSearchResults(int numDocuments)
+ {
+ if (numDocuments==0)
+ {
+ return "Không có tài liệu nào thỏa mãn các truy vấn của bạn.";
+ }
+ else if (numDocuments==1)
+ {
+ return "Tìm thấy <b>1</b> tài liệu thỏa mã truy vấn của bạn.";
+ }
+ else
+ {
+ return "Tìm thấy tất cả <b>$num</b> tài liệu thỏa mã truy vấn của bạn. "
+ "Hiển thị những thỏa mãn tốt nhất trước.";
+ }
+ }
+ /*! This string is put before the list of matched words, for each search
+ * result. What follows is the list of words that matched the query.
+ */
+ virtual QCString trSearchMatches()
+ {
+ return "Các kết quả thỏa mãn đk:";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.8
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used in HTML as the title of page with source code for file filename
+ */
+ virtual QCString trSourceFile(QCString& filename)
+ {
+ return filename + " File nguồn";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.9
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used as the name of the chapter containing the directory
+ * hierarchy.
+ */
+ virtual QCString trDirIndex()
+ { return "Cấu trúc thư mục"; }
+
+ /*! This is used as the name of the chapter containing the documentation
+ * of the directories.
+ */
+ virtual QCString trDirDocumentation()
+ { return "Thông tin về thư mục"; }
+
+ /*! This is used as the title of the directory index and also in the
+ * Quick links of an HTML page, to link to the directory hierarchy.
+ */
+ virtual QCString trDirectories()
+ { return "Các thư mục"; }
+
+ /*! This returns a sentences that introduces the directory hierarchy.
+ * and the fact that it is sorted alphabetically per level
+ */
+ virtual QCString trDirDescription()
+ { return "Thư mục đã được sắp xếp theo al-pha-bê, "
+ "nhưng chưa đầy đủ:";
+ }
+
+ /*! This returns the title of a directory page. The name of the
+ * directory is passed via \a dirName.
+ */
+ virtual QCString trDirReference(const char *dirName)
+ { QCString result=dirName; result+=" Tham chiếu thư mục"; return result; }
+
+ /*! This returns the word directory with or without starting capital
+ * (\a first_capital) and in sigular or plural form (\a singular).
+ */
+ virtual QCString trDir(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Thư mục" : "thư mục"));
+ if (singular) result+=""; else result+="";
+ return result;
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.4.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This text is added to the documentation when the \\overload command
+ * is used for a overloaded function.
+ */
+ virtual QCString trOverloadText()
+ {
+ return "Hàm thành viên dạng overloaded, "
+ "được chỉ ra cho việc tra cứu dễ dàng. Nó khác với hàm ở trên"
+ "chỉ ở chỗ những tham số nào nó chấp nhận.";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.4.6
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used to introduce a caller (or called-by) graph */
+ virtual QCString trCallerGraph()
+ {
+ return "Biểu đồ các lời gọi cho hàm này:";
+ }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration values
+ */
+ virtual QCString trEnumerationValueDocumentation()
+ { return "Thông tin Enumerator"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.5.4 (mainly for Fortran)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! header that is put before the list of member subprograms (Fortran). */
+ virtual QCString trMemberFunctionDocumentationFortran()
+ { return "Thông tin về các hàm và các thủ tục thành viên"; }
+
+ /*! This is put above each page as a link to the list of annotated data types (Fortran). */
+ virtual QCString trCompoundListFortran()
+ { return "Danh sách kiêu dữ liệu"; }
+
+ /*! This is put above each page as a link to all members of compounds (Fortran). */
+ virtual QCString trCompoundMembersFortran()
+ { return "Trường dữ liệu"; }
+
+ /*! This is an introduction to the annotated compound list (Fortran). */
+ virtual QCString trCompoundListDescriptionFortran()
+ { return "Kiểu dữ liệu với các mô tả tóm tắt:"; }
+
+ /*! This is an introduction to the page with all data types (Fortran). */
+ virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
+ {
+ QCString result="Danh sách tất cả ";
+ if (!extractAll)
+ {
+ result+="(đã được mô tả) ";
+ }
+ result+="các kiểu dữ liệu thành viên";
+ result+=" cùng với liên kết với ";
+ if (!extractAll)
+ {
+ result+="Thông tin cấu trúc dữ liệu cho từng thành viên";
+ }
+ else
+ {
+ result+=" các kiểu dữ liệu thuộc:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * annotated compound index (Fortran).
+ */
+ virtual QCString trCompoundIndexFortran()
+ { return "Chỉ mục kiểu dữ liệu"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all data types (Fortran).
+ */
+ virtual QCString trTypeDocumentation()
+ { return "Thông tin về kiểu dữ liệu"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) subprograms (Fortran).
+ */
+ virtual QCString trSubprograms()
+ { return "Functions/Subroutines"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for subprograms (Fortran)
+ */
+ virtual QCString trSubprogramDocumentation()
+ { return "Thông tin về Function/Subroutine"; }
+
+ /*! This is used in the documentation of a file/namespace/group before
+ * the list of links to documented compounds (Fortran)
+ */
+ virtual QCString trDataTypes()
+ { return "Kiểu dữ liệu"; }
+
+ /*! used as the title of page containing all the index of all modules (Fortran). */
+ virtual QCString trModulesList()
+ { return "Danh sách Modules"; }
+
+ /*! used as an introduction to the modules list (Fortran) */
+ virtual QCString trModulesListDescription(bool extractAll)
+ {
+ QCString result="Danh sách tất cả ";
+ if (!extractAll) result+="(đã được mô tả) ";
+ result+="các module với mô tả tóm tắt:";
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a module/type (Fortran) */
+ virtual QCString trCompoundReferenceFortran(const char *clName,
+ ClassDef::CompoundType compType,
+ bool isTemplate)
+ {
+ QCString result=(QCString)clName;
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" Module"; break;
+ case ClassDef::Struct: result+=" Type"; break;
+ case ClassDef::Union: result+=" Union"; break;
+ case ClassDef::Interface: result+=" Interface"; break;
+ case ClassDef::Protocol: result+=" Protocol"; break;
+ case ClassDef::Category: result+=" Category"; break;
+ case ClassDef::Exception: result+=" Exception"; break;
+ }
+ if (isTemplate) result+=" Template";
+ result+=" Tham chiếu";
+ return result;
+ }
+ /*! used as the title of the HTML page of a module (Fortran) */
+ virtual QCString trModuleReference(const char *namespaceName)
+ {
+ QCString result=namespaceName;
+ result+=" Tham chiếu Module";
+ return result;
+ }
+
+ /*! This is put above each page as a link to all members of modules. (Fortran) */
+ virtual QCString trModulesMembers()
+ { return "Thành viên Module"; }
+
+ /*! This is an introduction to the page with all modules members (Fortran) */
+ virtual QCString trModulesMemberDescription(bool extractAll)
+ {
+ QCString result="Danh sách tất cả ";
+ if (!extractAll) result+="(đã được mô tả) ";
+ result+="các module thành viên cùng với liên kết tới ";
+ if (extractAll)
+ {
+ result+="Thông tin module cho từng thành viên:";
+ }
+ else
+ {
+ result+="các module thuộc:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all modules (Fortran).
+ */
+ virtual QCString trModulesIndex()
+ { return "Chỉ mục các Module"; }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trModule(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Module" : "module"));
+ if (!singular) result+="";
+ return result;
+ }
+ /*! This is put at the bottom of a module documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Module", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Thông tin cho ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="module"; break;
+ case ClassDef::Struct: result+="type"; break;
+ case ClassDef::Union: result+="union"; break;
+ case ClassDef::Interface: result+="interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break;
+ case ClassDef::Category: result+="category"; break;
+ case ClassDef::Exception: result+="exception"; break;
+ }
+ result+=" được biên soạn từ các file sau đây";
+ if (single) result+=":"; else result+="s:";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trType(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Kiểu" : "kiểu"));
+ if (!singular) result+="";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trSubprogram(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Chương trình con" : "chương trình con"));
+ if (!singular) result+="";
+ return result;
+ }
+
+ /*! C# Type Constraint list */
+ virtual QCString trTypeConstraints()
+ {
+ return "Ràng buộc của kiểu (Type)";
+ }
+
+};
+
+#endif
diff --git a/src/util.cpp b/src/util.cpp
index d5322ba..4c870b3 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -48,6 +48,7 @@
#include "doxygen.h"
#include "textdocvisitor.h"
#include "portable.h"
+#include "parserintf.h"
#define ENABLE_TRACINGSUPPORT 0
@@ -4459,10 +4460,10 @@ QCString substituteClassNames(const QCString &s)
QCString substitute(const char *s,const char *src,const char *dst)
{
- if (s==0 || src==0 || dst==0) return s;
+ if (s==0 || src==0) return s;
const char *p, *q;
int srcLen = strlen(src);
- int dstLen = strlen(dst);
+ int dstLen = dst ? strlen(dst) : 0;
int resLen;
if (srcLen!=dstLen)
{
@@ -4481,7 +4482,7 @@ QCString substitute(const char *s,const char *src,const char *dst)
int l = (int)(q-p);
memcpy(r,p,l);
r+=l;
- memcpy(r,dst,dstLen);
+ if (dst) memcpy(r,dst,dstLen);
r+=dstLen;
}
strcpy(r,p);
@@ -6374,30 +6375,32 @@ static QDict<int> g_extLookup;
static struct Lang2ExtMap
{
const char *langName;
+ const char *parserName;
SrcLangExt parserId;
}
g_lang2extMap[] =
{
- { "idl", SrcLangExt_IDL },
- { "java", SrcLangExt_Java },
- { "javascript", SrcLangExt_JS },
- { "c#", SrcLangExt_CSharp },
- { "d", SrcLangExt_D },
- { "php", SrcLangExt_PHP },
- { "objective-c", SrcLangExt_ObjC },
- { "python", SrcLangExt_Python },
- { "fortran", SrcLangExt_F90 },
- { "vhdl", SrcLangExt_VHDL },
- { "c", SrcLangExt_Cpp },
- { "c++", SrcLangExt_Cpp },
- { 0, (SrcLangExt)0 }
+// language parser parser option
+ { "idl", "c", SrcLangExt_IDL },
+ { "java", "c", SrcLangExt_Java },
+ { "javascript", "c", SrcLangExt_JS },
+ { "c#", "c", SrcLangExt_CSharp },
+ { "d", "c", SrcLangExt_D },
+ { "php", "c", SrcLangExt_PHP },
+ { "objective-c", "c", SrcLangExt_ObjC },
+ { "c", "c", SrcLangExt_Cpp },
+ { "c++", "c", SrcLangExt_Cpp },
+ { "python", "python", SrcLangExt_Python },
+ { "fortran", "fortran", SrcLangExt_F90 },
+ { "vhdl", "vhdl", SrcLangExt_VHDL },
+ { 0, 0, (SrcLangExt)0 }
};
-bool updateLanguageMapping(const QCString &extension,const QCString &parser)
+bool updateLanguageMapping(const QCString &extension,const QCString &language)
{
- getLanguageFromFileName("dummy"); // force initializion of the g_extLookup map
+ //getLanguageFromFileName("dummy"); // force initializion of the g_extLookup map
const Lang2ExtMap *p = g_lang2extMap;
- QCString langName = parser.lower();
+ QCString langName = language.lower();
while (p->langName)
{
if (langName==p->langName) break;
@@ -6405,49 +6408,58 @@ bool updateLanguageMapping(const QCString &extension,const QCString &parser)
}
if (!p->langName) return FALSE;
- // found the parser
+ // found the language
SrcLangExt parserId = p->parserId;
QCString extName = extension;
if (extName.isEmpty()) return FALSE;
if (extName.at(0)!='.') extName.prepend(".");
- if (g_extLookup.find(extension)!=0) // parser was already register for this ext
+ if (g_extLookup.find(extension)!=0) // language was already register for this ext
{
g_extLookup.remove(extension);
}
g_extLookup.insert(extension,new int(parserId));
+ if (!Doxygen::parserManager->registerExtension(extName,p->parserName))
+ {
+ err("Failed to assign extension %s to parser %s for language %s\n",
+ extName.data(),p->parserName,language.data());
+ }
+ else
+ {
+ //msg("Registered extension %s to language parser %s...\n",
+ // extName.data(),language.data());
+ }
return TRUE;
}
+void initDefaultExtensionMapping()
+{
+ g_extLookup.setAutoDelete(TRUE);
+ updateLanguageMapping(".idl", "idl");
+ updateLanguageMapping(".ddl", "idl");
+ updateLanguageMapping(".odl", "idl");
+ updateLanguageMapping(".java", "java");
+ updateLanguageMapping(".as", "javascript");
+ updateLanguageMapping(".js", "javascript");
+ updateLanguageMapping(".cs", "c#");
+ updateLanguageMapping(".d", "d");
+ updateLanguageMapping(".php", "php");
+ updateLanguageMapping(".php4", "php");
+ updateLanguageMapping(".php5", "php");
+ updateLanguageMapping(".inc", "php");
+ updateLanguageMapping(".phtml", "php");
+ updateLanguageMapping(".m", "objective-c");
+ updateLanguageMapping(".M", "objective-c");
+ updateLanguageMapping(".mm", "objective-c");
+ updateLanguageMapping(".py", "python");
+ updateLanguageMapping(".f", "fortran");
+ updateLanguageMapping(".f90", "fortran");
+ updateLanguageMapping(".vhd", "vhdl");
+ updateLanguageMapping(".vhdl", "vhdl");
+}
+
SrcLangExt getLanguageFromFileName(const QCString fileName)
{
int i = fileName.findRev('.');
- static bool init=FALSE;
- g_extLookup.setAutoDelete(TRUE);
- if (!init) // one time initialization
- {
- g_extLookup.insert(".idl", new int(SrcLangExt_IDL));
- g_extLookup.insert(".ddl", new int(SrcLangExt_IDL));
- g_extLookup.insert(".odl", new int(SrcLangExt_IDL));
- g_extLookup.insert(".java", new int(SrcLangExt_Java));
- g_extLookup.insert(".as", new int(SrcLangExt_JS));
- g_extLookup.insert(".js", new int(SrcLangExt_JS));
- g_extLookup.insert(".cs", new int(SrcLangExt_CSharp));
- g_extLookup.insert(".d", new int(SrcLangExt_D));
- g_extLookup.insert(".php", new int(SrcLangExt_PHP));
- g_extLookup.insert(".php4", new int(SrcLangExt_PHP));
- g_extLookup.insert(".php5", new int(SrcLangExt_PHP));
- g_extLookup.insert(".inc", new int(SrcLangExt_PHP));
- g_extLookup.insert(".phtml", new int(SrcLangExt_PHP));
- g_extLookup.insert(".m", new int(SrcLangExt_ObjC));
- g_extLookup.insert(".M", new int(SrcLangExt_ObjC));
- g_extLookup.insert(".mm", new int(SrcLangExt_ObjC));
- g_extLookup.insert(".py", new int(SrcLangExt_Python));
- g_extLookup.insert(".f", new int(SrcLangExt_F90));
- g_extLookup.insert(".f90", new int(SrcLangExt_F90));
- g_extLookup.insert(".vhd", new int(SrcLangExt_VHDL));
- g_extLookup.insert(".vhdl", new int(SrcLangExt_VHDL));
- init=TRUE;
- }
if (i!=-1) // name has an extension
{
QCString extStr=fileName.right(fileName.length()-i);
@@ -6456,7 +6468,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName)
int *pVal=g_extLookup.find(extStr);
if (pVal) // listed extension
{
- return (SrcLangExt)*pVal; // cast void* address to enum value
+ return (SrcLangExt)*pVal;
}
}
}
diff --git a/src/util.h b/src/util.h
index c87673e..2befdbc 100644
--- a/src/util.h
+++ b/src/util.h
@@ -330,6 +330,7 @@ void stringToSearchIndex(const QCString &docUrlBase,const QCString &title,
bool updateLanguageMapping(const QCString &extension,const QCString &parser);
SrcLangExt getLanguageFromFileName(const QCString fileName);
+void initDefaultExtensionMapping();
bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n);