diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.h | 28 | ||||
-rw-r--r-- | src/config.l | 2142 | ||||
-rw-r--r-- | src/configoptions.cpp | 2179 | ||||
-rw-r--r-- | src/configoptions.h | 26 | ||||
-rw-r--r-- | src/docparser.cpp | 25 | ||||
-rw-r--r-- | src/docsets.cpp | 8 | ||||
-rw-r--r-- | src/doctokenizer.h | 25 | ||||
-rw-r--r-- | src/doxygen.cpp | 68 | ||||
-rw-r--r-- | src/doxygen.css | 2 | ||||
-rw-r--r-- | src/doxygen_css.h | 2 | ||||
-rw-r--r-- | src/entry.cpp | 1 | ||||
-rw-r--r-- | src/formula.cpp | 3 | ||||
-rw-r--r-- | src/ftvhelp.cpp | 4 | ||||
-rw-r--r-- | src/htmlgen.cpp | 9 | ||||
-rw-r--r-- | src/lang_cfg.h | 1 | ||||
-rw-r--r-- | src/language.cpp | 9 | ||||
-rw-r--r-- | src/latexgen.cpp | 8 | ||||
-rw-r--r-- | src/libdoxycfg.pro.in | 4 | ||||
-rw-r--r-- | src/libdoxygen.pro.in | 1 | ||||
-rw-r--r-- | src/parserintf.h | 39 | ||||
-rw-r--r-- | src/qhp.cpp | 2 | ||||
-rw-r--r-- | src/scanner.l | 2 | ||||
-rw-r--r-- | src/translator_vi.h | 1787 | ||||
-rw-r--r-- | src/util.cpp | 110 | ||||
-rw-r--r-- | src/util.h | 1 |
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; } } } @@ -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); |