<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/9332">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ctrl: Add doxygen API documentation; generate html from it<br><br>Closes: OS#3293<br>Change-Id: I8dc2f24d4bf557ff7bb0f2f46881f9f8d9d7f86f<br>---<br>A Doxyfile.ctrl.in<br>M Makefile.am<br>M configure.ac<br>M include/osmocom/ctrl/control_cmd.h<br>M src/ctrl/control_cmd.c<br>M src/ctrl/control_if.c<br>6 files changed, 1,869 insertions(+), 12 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Doxyfile.ctrl.in b/Doxyfile.ctrl.in</span><br><span>new file mode 100644</span><br><span>index 0000000..eb363bb</span><br><span>--- /dev/null</span><br><span>+++ b/Doxyfile.ctrl.in</span><br><span>@@ -0,0 +1,1716 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxyfile 1.7.4</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# This file describes the settings to be used by the documentation system</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen (www.doxygen.org) for a project.</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# All text after a hash (#) is considered a comment and will be ignored.</span><br><span style="color: hsl(120, 100%, 40%);">+# The format is:</span><br><span style="color: hsl(120, 100%, 40%);">+#       TAG = value [value, ...]</span><br><span style="color: hsl(120, 100%, 40%);">+# For lists items can also be appended using:</span><br><span style="color: hsl(120, 100%, 40%);">+#       TAG += value [value, ...]</span><br><span style="color: hsl(120, 100%, 40%);">+# Values that contain spaces should be placed between quotes (" ").</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# Project related configuration options</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# This tag specifies the encoding used for all characters in the config file</span><br><span style="color: hsl(120, 100%, 40%);">+# that follow. The default is UTF-8 which is also the encoding used for all</span><br><span style="color: hsl(120, 100%, 40%);">+# text before the first occurrence of this tag. Doxygen uses libiconv (or the</span><br><span style="color: hsl(120, 100%, 40%);">+# iconv built into libc) for the transcoding. See</span><br><span style="color: hsl(120, 100%, 40%);">+# http://www.gnu.org/software/libiconv for the list of possible encodings.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOXYFILE_ENCODING      = UTF-8</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded</span><br><span style="color: hsl(120, 100%, 40%);">+# by quotes) that should identify the project.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PROJECT_NAME           = libosmoctrl</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The PROJECT_NUMBER tag can be used to enter a project or revision number.</span><br><span style="color: hsl(120, 100%, 40%);">+# This could be handy for archiving the generated documentation or</span><br><span style="color: hsl(120, 100%, 40%);">+# if some version control system is used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PROJECT_NUMBER         = @VERSION@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Using the PROJECT_BRIEF tag one can provide an optional one line description</span><br><span style="color: hsl(120, 100%, 40%);">+# for a project that appears at the top of each page and should give viewer</span><br><span style="color: hsl(120, 100%, 40%);">+# a quick idea about the purpose of the project. Keep the description short.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PROJECT_BRIEF          = "Osmocom CTRL library"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# With the PROJECT_LOGO tag one can specify an logo or icon that is</span><br><span style="color: hsl(120, 100%, 40%);">+# included in the documentation. The maximum height of the logo should not</span><br><span style="color: hsl(120, 100%, 40%);">+# exceed 55 pixels and the maximum width should not exceed 200 pixels.</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen will copy the logo to the output directory.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PROJECT_LOGO           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)</span><br><span style="color: hsl(120, 100%, 40%);">+# base path where the generated documentation will be put.</span><br><span style="color: hsl(120, 100%, 40%);">+# If a relative path is entered, it will be relative to the location</span><br><span style="color: hsl(120, 100%, 40%);">+# where doxygen was started. If left blank the current directory will be used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+OUTPUT_DIRECTORY       = doc/ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create</span><br><span style="color: hsl(120, 100%, 40%);">+# 4096 sub-directories (in 2 levels) under the output directory of each output</span><br><span style="color: hsl(120, 100%, 40%);">+# format and will distribute the generated files over these directories.</span><br><span style="color: hsl(120, 100%, 40%);">+# Enabling this option can be useful when feeding doxygen a huge amount of</span><br><span style="color: hsl(120, 100%, 40%);">+# source files, where putting all generated files in the same directory would</span><br><span style="color: hsl(120, 100%, 40%);">+# otherwise cause performance problems for the file system.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CREATE_SUBDIRS         = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The OUTPUT_LANGUAGE tag is used to specify the language in which all</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation generated by doxygen is written. Doxygen will use this</span><br><span style="color: hsl(120, 100%, 40%);">+# information to generate all constant output in the proper language.</span><br><span style="color: hsl(120, 100%, 40%);">+# The default language is English, other supported languages are:</span><br><span style="color: hsl(120, 100%, 40%);">+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,</span><br><span style="color: hsl(120, 100%, 40%);">+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,</span><br><span style="color: hsl(120, 100%, 40%);">+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English</span><br><span style="color: hsl(120, 100%, 40%);">+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,</span><br><span style="color: hsl(120, 100%, 40%);">+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,</span><br><span style="color: hsl(120, 100%, 40%);">+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+OUTPUT_LANGUAGE        = English</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# include brief member descriptions after the members that are listed in</span><br><span style="color: hsl(120, 100%, 40%);">+# the file and class documentation (similar to JavaDoc).</span><br><span style="color: hsl(120, 100%, 40%);">+# Set to NO to disable this.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BRIEF_MEMBER_DESC      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend</span><br><span style="color: hsl(120, 100%, 40%);">+# the brief description of a member or function before the detailed description.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the</span><br><span style="color: hsl(120, 100%, 40%);">+# brief descriptions will be completely suppressed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+REPEAT_BRIEF           = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# This tag implements a quasi-intelligent brief description abbreviator</span><br><span style="color: hsl(120, 100%, 40%);">+# that is used to form the text in various listings. Each string</span><br><span style="color: hsl(120, 100%, 40%);">+# in this list, if found as the leading text of the brief description, will be</span><br><span style="color: hsl(120, 100%, 40%);">+# stripped from the text and the result after processing the whole list, is</span><br><span style="color: hsl(120, 100%, 40%);">+# used as the annotated text. Otherwise, the brief description is used as-is.</span><br><span style="color: hsl(120, 100%, 40%);">+# If left blank, the following values are used ("$name" is automatically</span><br><span style="color: hsl(120, 100%, 40%);">+# replaced with the name of the entity): "The $name class" "The $name widget"</span><br><span style="color: hsl(120, 100%, 40%);">+# "The $name file" "is" "provides" "specifies" "contains"</span><br><span style="color: hsl(120, 100%, 40%);">+# "represents" "a" "an" "the"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ABBREVIATE_BRIEF       =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen will generate a detailed section even if there is only a brief</span><br><span style="color: hsl(120, 100%, 40%);">+# description.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ALWAYS_DETAILED_SEC    = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all</span><br><span style="color: hsl(120, 100%, 40%);">+# inherited members of a class in the documentation of that class as if those</span><br><span style="color: hsl(120, 100%, 40%);">+# members were ordinary class members. Constructors, destructors and assignment</span><br><span style="color: hsl(120, 100%, 40%);">+# operators of the base classes will not be shown.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INLINE_INHERITED_MEMB  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full</span><br><span style="color: hsl(120, 100%, 40%);">+# path before files name in the file list and in the header files. If set</span><br><span style="color: hsl(120, 100%, 40%);">+# to NO the shortest path that makes the file name unique will be used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FULL_PATH_NAMES        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag</span><br><span style="color: hsl(120, 100%, 40%);">+# can be used to strip a user-defined part of the path. Stripping is</span><br><span style="color: hsl(120, 100%, 40%);">+# only done if one of the specified strings matches the left-hand part of</span><br><span style="color: hsl(120, 100%, 40%);">+# the path. The tag can be used to show relative paths in the file list.</span><br><span style="color: hsl(120, 100%, 40%);">+# If left blank the directory from which doxygen is run is used as the</span><br><span style="color: hsl(120, 100%, 40%);">+# path to strip.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+STRIP_FROM_PATH        =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of</span><br><span style="color: hsl(120, 100%, 40%);">+# the path mentioned in the documentation of a class, which tells</span><br><span style="color: hsl(120, 100%, 40%);">+# the reader which header file to include in order to use a class.</span><br><span style="color: hsl(120, 100%, 40%);">+# If left blank only the name of the header file containing the class</span><br><span style="color: hsl(120, 100%, 40%);">+# definition is used. Otherwise one should specify the include paths that</span><br><span style="color: hsl(120, 100%, 40%);">+# are normally passed to the compiler using the -I flag.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+STRIP_FROM_INC_PATH    =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter</span><br><span style="color: hsl(120, 100%, 40%);">+# (but less readable) file names. This can be useful if your file system</span><br><span style="color: hsl(120, 100%, 40%);">+# doesn't support long names like on DOS, Mac, or CD-ROM.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SHORT_NAMES            = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will interpret the first line (until the first dot) of a JavaDoc-style</span><br><span style="color: hsl(120, 100%, 40%);">+# comment as the brief description. If set to NO, the JavaDoc</span><br><span style="color: hsl(120, 100%, 40%);">+# comments will behave just like regular Qt-style comments</span><br><span style="color: hsl(120, 100%, 40%);">+# (thus requiring an explicit @brief command for a brief description.)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+JAVADOC_AUTOBRIEF      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# interpret the first line (until the first dot) of a Qt-style</span><br><span style="color: hsl(120, 100%, 40%);">+# comment as the brief description. If set to NO, the comments</span><br><span style="color: hsl(120, 100%, 40%);">+# will behave just like regular Qt-style comments (thus requiring</span><br><span style="color: hsl(120, 100%, 40%);">+# an explicit command for a brief description.)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QT_AUTOBRIEF           = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# treat a multi-line C++ special comment block (i.e. a block of //! or ///</span><br><span style="color: hsl(120, 100%, 40%);">+# comments) as a brief description. This used to be the default behaviour.</span><br><span style="color: hsl(120, 100%, 40%);">+# The new default is to treat a multi-line C++ comment block as a detailed</span><br><span style="color: hsl(120, 100%, 40%);">+# description. Set this tag to YES if you prefer the old behaviour instead.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MULTILINE_CPP_IS_BRIEF = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented</span><br><span style="color: hsl(120, 100%, 40%);">+# member inherits the documentation from any documented member that it</span><br><span style="color: hsl(120, 100%, 40%);">+# re-implements.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INHERIT_DOCS           = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce</span><br><span style="color: hsl(120, 100%, 40%);">+# a new page for each member. If set to NO, the documentation of a member will</span><br><span style="color: hsl(120, 100%, 40%);">+# be part of the file/class/namespace that contains it.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SEPARATE_MEMBER_PAGES  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The TAB_SIZE tag can be used to set the number of spaces in a tab.</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen uses this value to replace tabs by spaces in code fragments.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TAB_SIZE               = 8</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# This tag can be used to specify a number of aliases that acts</span><br><span style="color: hsl(120, 100%, 40%);">+# as commands in the documentation. An alias has the form "name=value".</span><br><span style="color: hsl(120, 100%, 40%);">+# For example adding "sideeffect=\par Side Effects:\n" will allow you to</span><br><span style="color: hsl(120, 100%, 40%);">+# put the command \sideeffect (or @sideeffect) in the documentation, which</span><br><span style="color: hsl(120, 100%, 40%);">+# will result in a user-defined paragraph with heading "Side Effects:".</span><br><span style="color: hsl(120, 100%, 40%);">+# You can put \n's in the value part of an alias to insert newlines.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ALIASES                =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C</span><br><span style="color: hsl(120, 100%, 40%);">+# sources only. Doxygen will then generate output that is more tailored for C.</span><br><span style="color: hsl(120, 100%, 40%);">+# For instance, some of the names that are used will be different. The list</span><br><span style="color: hsl(120, 100%, 40%);">+# of all members will be omitted, etc.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+OPTIMIZE_OUTPUT_FOR_C  = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java</span><br><span style="color: hsl(120, 100%, 40%);">+# sources only. Doxygen will then generate output that is more tailored for</span><br><span style="color: hsl(120, 100%, 40%);">+# Java. For instance, namespaces will be presented as packages, qualified</span><br><span style="color: hsl(120, 100%, 40%);">+# scopes will look different, etc.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+OPTIMIZE_OUTPUT_JAVA   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran</span><br><span style="color: hsl(120, 100%, 40%);">+# sources only. Doxygen will then generate output that is more tailored for</span><br><span style="color: hsl(120, 100%, 40%);">+# Fortran.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+OPTIMIZE_FOR_FORTRAN   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL</span><br><span style="color: hsl(120, 100%, 40%);">+# sources. Doxygen will then generate output that is tailored for</span><br><span style="color: hsl(120, 100%, 40%);">+# VHDL.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+OPTIMIZE_OUTPUT_VHDL   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen selects the parser to use depending on the extension of the files it</span><br><span style="color: hsl(120, 100%, 40%);">+# parses. With this tag you can assign which parser to use for a given extension.</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen has a built-in mapping, but you can override or extend it using this</span><br><span style="color: hsl(120, 100%, 40%);">+# tag. The format is ext=language, where ext is a file extension, and language</span><br><span style="color: hsl(120, 100%, 40%);">+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,</span><br><span style="color: hsl(120, 100%, 40%);">+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C</span><br><span style="color: hsl(120, 100%, 40%);">+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions</span><br><span style="color: hsl(120, 100%, 40%);">+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTENSION_MAPPING      =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want</span><br><span style="color: hsl(120, 100%, 40%);">+# to include (a tag file for) the STL sources as input, then you should</span><br><span style="color: hsl(120, 100%, 40%);">+# set this tag to YES in order to let doxygen match functions declarations and</span><br><span style="color: hsl(120, 100%, 40%);">+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.</span><br><span style="color: hsl(120, 100%, 40%);">+# func(std::string) {}). This also makes the inheritance and collaboration</span><br><span style="color: hsl(120, 100%, 40%);">+# diagrams that involve STL classes more complete and accurate.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BUILTIN_STL_SUPPORT    = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If you use Microsoft's C++/CLI language, you should set this option to YES to</span><br><span style="color: hsl(120, 100%, 40%);">+# enable parsing support.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CPP_CLI_SUPPORT        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen will parse them like normal C++ but will assume all classes use public</span><br><span style="color: hsl(120, 100%, 40%);">+# instead of private inheritance when no explicit protection keyword is present.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SIP_SUPPORT            = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# For Microsoft's IDL there are propget and propput attributes to indicate getter</span><br><span style="color: hsl(120, 100%, 40%);">+# and setter methods for a property. Setting this option to YES (the default)</span><br><span style="color: hsl(120, 100%, 40%);">+# will make doxygen replace the get and set methods by a property in the</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation. This will only work if the methods are indeed getting or</span><br><span style="color: hsl(120, 100%, 40%);">+# setting a simple type. If this is not the case, or you want to show the</span><br><span style="color: hsl(120, 100%, 40%);">+# methods anyway, you should set this option to NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+IDL_PROPERTY_SUPPORT   = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC</span><br><span style="color: hsl(120, 100%, 40%);">+# tag is set to YES, then doxygen will reuse the documentation of the first</span><br><span style="color: hsl(120, 100%, 40%);">+# member in the group (if any) for the other members of the group. By default</span><br><span style="color: hsl(120, 100%, 40%);">+# all members of a group must be documented explicitly.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DISTRIBUTE_GROUP_DOC   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of</span><br><span style="color: hsl(120, 100%, 40%);">+# the same type (for instance a group of public functions) to be put as a</span><br><span style="color: hsl(120, 100%, 40%);">+# subgroup of that type (e.g. under the Public Functions section). Set it to</span><br><span style="color: hsl(120, 100%, 40%);">+# NO to prevent subgrouping. Alternatively, this can be done per class using</span><br><span style="color: hsl(120, 100%, 40%);">+# the \nosubgrouping command.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SUBGROUPING            = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and</span><br><span style="color: hsl(120, 100%, 40%);">+# unions are shown inside the group in which they are included (e.g. using</span><br><span style="color: hsl(120, 100%, 40%);">+# @ingroup) instead of on a separate page (for HTML and Man pages) or</span><br><span style="color: hsl(120, 100%, 40%);">+# section (for LaTeX and RTF).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INLINE_GROUPED_CLASSES = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum</span><br><span style="color: hsl(120, 100%, 40%);">+# is documented as struct, union, or enum with the name of the typedef. So</span><br><span style="color: hsl(120, 100%, 40%);">+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct</span><br><span style="color: hsl(120, 100%, 40%);">+# with name TypeT. When disabled the typedef will appear as a member of a file,</span><br><span style="color: hsl(120, 100%, 40%);">+# namespace, or class. And the struct will be named TypeS. This can typically</span><br><span style="color: hsl(120, 100%, 40%);">+# be useful for C code in case the coding convention dictates that all compound</span><br><span style="color: hsl(120, 100%, 40%);">+# types are typedef'ed and only the typedef is referenced, never the tag name.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TYPEDEF_HIDES_STRUCT   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to</span><br><span style="color: hsl(120, 100%, 40%);">+# determine which symbols to keep in memory and which to flush to disk.</span><br><span style="color: hsl(120, 100%, 40%);">+# When the cache is full, less often used symbols will be written to disk.</span><br><span style="color: hsl(120, 100%, 40%);">+# For small to medium size projects (<1000 input files) the default value is</span><br><span style="color: hsl(120, 100%, 40%);">+# probably good enough. For larger projects a too small cache size can cause</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen to be busy swapping symbols to and from disk most of the time</span><br><span style="color: hsl(120, 100%, 40%);">+# causing a significant performance penalty.</span><br><span style="color: hsl(120, 100%, 40%);">+# If the system has enough physical memory increasing the cache will improve the</span><br><span style="color: hsl(120, 100%, 40%);">+# performance by keeping more symbols in memory. Note that the value works on</span><br><span style="color: hsl(120, 100%, 40%);">+# a logarithmic scale so increasing the size by one will roughly double the</span><br><span style="color: hsl(120, 100%, 40%);">+# memory usage. The cache size is given by this formula:</span><br><span style="color: hsl(120, 100%, 40%);">+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,</span><br><span style="color: hsl(120, 100%, 40%);">+# corresponding to a cache size of 2^16 = 65536 symbols</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SYMBOL_CACHE_SIZE      = 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# Build related configuration options</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation are documented, even if no documentation was available.</span><br><span style="color: hsl(120, 100%, 40%);">+# Private class members and static file members will be hidden unless</span><br><span style="color: hsl(120, 100%, 40%);">+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRACT_ALL            = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class</span><br><span style="color: hsl(120, 100%, 40%);">+# will be included in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRACT_PRIVATE        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXTRACT_STATIC tag is set to YES all static members of a file</span><br><span style="color: hsl(120, 100%, 40%);">+# will be included in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRACT_STATIC         = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)</span><br><span style="color: hsl(120, 100%, 40%);">+# defined locally in source files will be included in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to NO only classes defined in header files are included.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRACT_LOCAL_CLASSES  = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# This flag is only useful for Objective-C code. When set to YES local</span><br><span style="color: hsl(120, 100%, 40%);">+# methods, which are defined in the implementation section but not in</span><br><span style="color: hsl(120, 100%, 40%);">+# the interface are included in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to NO (the default) only methods in the interface are included.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRACT_LOCAL_METHODS  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If this flag is set to YES, the members of anonymous namespaces will be</span><br><span style="color: hsl(120, 100%, 40%);">+# extracted and appear in the documentation as a namespace called</span><br><span style="color: hsl(120, 100%, 40%);">+# 'anonymous_namespace{file}', where file will be replaced with the base</span><br><span style="color: hsl(120, 100%, 40%);">+# name of the file that contains the anonymous namespace. By default</span><br><span style="color: hsl(120, 100%, 40%);">+# anonymous namespaces are hidden.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRACT_ANON_NSPACES   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all</span><br><span style="color: hsl(120, 100%, 40%);">+# undocumented members of documented classes, files or namespaces.</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to NO (the default) these members will be included in the</span><br><span style="color: hsl(120, 100%, 40%);">+# various overviews, but no documentation section is generated.</span><br><span style="color: hsl(120, 100%, 40%);">+# This option has no effect if EXTRACT_ALL is enabled.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HIDE_UNDOC_MEMBERS     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all</span><br><span style="color: hsl(120, 100%, 40%);">+# undocumented classes that are normally visible in the class hierarchy.</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to NO (the default) these classes will be included in the various</span><br><span style="color: hsl(120, 100%, 40%);">+# overviews. This option has no effect if EXTRACT_ALL is enabled.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HIDE_UNDOC_CLASSES     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all</span><br><span style="color: hsl(120, 100%, 40%);">+# friend (class|struct|union) declarations.</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to NO (the default) these declarations will be included in the</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HIDE_FRIEND_COMPOUNDS  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation blocks found inside the body of a function.</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to NO (the default) these blocks will be appended to the</span><br><span style="color: hsl(120, 100%, 40%);">+# function's detailed documentation block.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HIDE_IN_BODY_DOCS      = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The INTERNAL_DOCS tag determines if documentation</span><br><span style="color: hsl(120, 100%, 40%);">+# that is typed after a \internal command is included. If the tag is set</span><br><span style="color: hsl(120, 100%, 40%);">+# to NO (the default) then the documentation will be excluded.</span><br><span style="color: hsl(120, 100%, 40%);">+# Set it to YES to include the internal documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INTERNAL_DOCS          = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate</span><br><span style="color: hsl(120, 100%, 40%);">+# file names in lower-case letters. If set to YES upper-case letters are also</span><br><span style="color: hsl(120, 100%, 40%);">+# allowed. This is useful if you have classes or files whose names only differ</span><br><span style="color: hsl(120, 100%, 40%);">+# in case and if your file system supports case sensitive file names. Windows</span><br><span style="color: hsl(120, 100%, 40%);">+# and Mac users are advised to set this option to NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CASE_SENSE_NAMES       = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will show members with their full class and namespace scopes in the</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation. If set to YES the scope will be hidden.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HIDE_SCOPE_NAMES       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will put a list of the files that are included by a file in the documentation</span><br><span style="color: hsl(120, 100%, 40%);">+# of that file.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SHOW_INCLUDE_FILES     = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will list include files with double quotes in the documentation</span><br><span style="color: hsl(120, 100%, 40%);">+# rather than with sharp brackets.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FORCE_LOCAL_INCLUDES   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]</span><br><span style="color: hsl(120, 100%, 40%);">+# is inserted in the documentation for inline members.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INLINE_INFO            = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will sort the (detailed) documentation of file and class members</span><br><span style="color: hsl(120, 100%, 40%);">+# alphabetically by member name. If set to NO the members will appear in</span><br><span style="color: hsl(120, 100%, 40%);">+# declaration order.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SORT_MEMBER_DOCS       = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the</span><br><span style="color: hsl(120, 100%, 40%);">+# brief documentation of file, namespace and class members alphabetically</span><br><span style="color: hsl(120, 100%, 40%);">+# by member name. If set to NO (the default) the members will appear in</span><br><span style="color: hsl(120, 100%, 40%);">+# declaration order.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SORT_BRIEF_DOCS        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will sort the (brief and detailed) documentation of class members so that</span><br><span style="color: hsl(120, 100%, 40%);">+# constructors and destructors are listed first. If set to NO (the default)</span><br><span style="color: hsl(120, 100%, 40%);">+# the constructors will appear in the respective orders defined by</span><br><span style="color: hsl(120, 100%, 40%);">+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.</span><br><span style="color: hsl(120, 100%, 40%);">+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO</span><br><span style="color: hsl(120, 100%, 40%);">+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SORT_MEMBERS_CTORS_1ST = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the</span><br><span style="color: hsl(120, 100%, 40%);">+# hierarchy of group names into alphabetical order. If set to NO (the default)</span><br><span style="color: hsl(120, 100%, 40%);">+# the group names will appear in their defined order.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SORT_GROUP_NAMES       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be</span><br><span style="color: hsl(120, 100%, 40%);">+# sorted by fully-qualified names, including namespaces. If set to</span><br><span style="color: hsl(120, 100%, 40%);">+# NO (the default), the class list will be sorted only by class name,</span><br><span style="color: hsl(120, 100%, 40%);">+# not including the namespace part.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: This option applies only to the class list, not to the</span><br><span style="color: hsl(120, 100%, 40%);">+# alphabetical list.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SORT_BY_SCOPE_NAME     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to</span><br><span style="color: hsl(120, 100%, 40%);">+# do proper type resolution of all parameters of a function it will reject a</span><br><span style="color: hsl(120, 100%, 40%);">+# match between the prototype and the implementation of a member function even</span><br><span style="color: hsl(120, 100%, 40%);">+# if there is only one candidate or it is obvious which candidate to choose</span><br><span style="color: hsl(120, 100%, 40%);">+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will still accept a match between prototype and implementation in such cases.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+STRICT_PROTO_MATCHING  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The GENERATE_TODOLIST tag can be used to enable (YES) or</span><br><span style="color: hsl(120, 100%, 40%);">+# disable (NO) the todo list. This list is created by putting \todo</span><br><span style="color: hsl(120, 100%, 40%);">+# commands in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_TODOLIST      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The GENERATE_TESTLIST tag can be used to enable (YES) or</span><br><span style="color: hsl(120, 100%, 40%);">+# disable (NO) the test list. This list is created by putting \test</span><br><span style="color: hsl(120, 100%, 40%);">+# commands in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_TESTLIST      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The GENERATE_BUGLIST tag can be used to enable (YES) or</span><br><span style="color: hsl(120, 100%, 40%);">+# disable (NO) the bug list. This list is created by putting \bug</span><br><span style="color: hsl(120, 100%, 40%);">+# commands in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_BUGLIST       = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or</span><br><span style="color: hsl(120, 100%, 40%);">+# disable (NO) the deprecated list. This list is created by putting</span><br><span style="color: hsl(120, 100%, 40%);">+# \deprecated commands in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_DEPRECATEDLIST= YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The ENABLED_SECTIONS tag can be used to enable conditional</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation sections, marked by \if sectionname ... \endif.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ENABLED_SECTIONS       =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines</span><br><span style="color: hsl(120, 100%, 40%);">+# the initial value of a variable or macro consists of for it to appear in</span><br><span style="color: hsl(120, 100%, 40%);">+# the documentation. If the initializer consists of more lines than specified</span><br><span style="color: hsl(120, 100%, 40%);">+# here it will be hidden. Use a value of 0 to hide initializers completely.</span><br><span style="color: hsl(120, 100%, 40%);">+# The appearance of the initializer of individual variables and macros in the</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation can be controlled using \showinitializer or \hideinitializer</span><br><span style="color: hsl(120, 100%, 40%);">+# command in the documentation regardless of this setting.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MAX_INITIALIZER_LINES  = 30</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated</span><br><span style="color: hsl(120, 100%, 40%);">+# at the bottom of the documentation of classes and structs. If set to YES the</span><br><span style="color: hsl(120, 100%, 40%);">+# list will mention the files that were used to generate the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SHOW_USED_FILES        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the sources in your project are distributed over multiple directories</span><br><span style="color: hsl(120, 100%, 40%);">+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy</span><br><span style="color: hsl(120, 100%, 40%);">+# in the documentation. The default is NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SHOW_DIRECTORIES       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.</span><br><span style="color: hsl(120, 100%, 40%);">+# This will remove the Files entry from the Quick Index and from the</span><br><span style="color: hsl(120, 100%, 40%);">+# Folder Tree View (if specified). The default is YES.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SHOW_FILES             = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the</span><br><span style="color: hsl(120, 100%, 40%);">+# Namespaces page.</span><br><span style="color: hsl(120, 100%, 40%);">+# This will remove the Namespaces entry from the Quick Index</span><br><span style="color: hsl(120, 100%, 40%);">+# and from the Folder Tree View (if specified). The default is YES.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SHOW_NAMESPACES        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The FILE_VERSION_FILTER tag can be used to specify a program or script that</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen should invoke to get the current version for each file (typically from</span><br><span style="color: hsl(120, 100%, 40%);">+# the version control system). Doxygen will invoke the program by executing (via</span><br><span style="color: hsl(120, 100%, 40%);">+# popen()) the command <command> <input-file>, where <command> is the value of</span><br><span style="color: hsl(120, 100%, 40%);">+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file</span><br><span style="color: hsl(120, 100%, 40%);">+# provided by doxygen. Whatever the program writes to standard output</span><br><span style="color: hsl(120, 100%, 40%);">+# is used as the file version. See the manual for examples.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FILE_VERSION_FILTER    =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed</span><br><span style="color: hsl(120, 100%, 40%);">+# by doxygen. The layout file controls the global structure of the generated</span><br><span style="color: hsl(120, 100%, 40%);">+# output files in an output format independent way. The create the layout file</span><br><span style="color: hsl(120, 100%, 40%);">+# that represents doxygen's defaults, run doxygen with the -l option.</span><br><span style="color: hsl(120, 100%, 40%);">+# You can optionally specify a file name after the option, if omitted</span><br><span style="color: hsl(120, 100%, 40%);">+# DoxygenLayout.xml will be used as the name of the layout file.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LAYOUT_FILE            =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to warning and progress messages</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The QUIET tag can be used to turn on/off the messages that are generated</span><br><span style="color: hsl(120, 100%, 40%);">+# by doxygen. Possible values are YES and NO. If left blank NO is used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QUIET                  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The WARNINGS tag can be used to turn on/off the warning messages that are</span><br><span style="color: hsl(120, 100%, 40%);">+# generated by doxygen. Possible values are YES and NO. If left blank</span><br><span style="color: hsl(120, 100%, 40%);">+# NO is used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WARNINGS               = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings</span><br><span style="color: hsl(120, 100%, 40%);">+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will</span><br><span style="color: hsl(120, 100%, 40%);">+# automatically be disabled.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WARN_IF_UNDOCUMENTED   = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for</span><br><span style="color: hsl(120, 100%, 40%);">+# potential errors in the documentation, such as not documenting some</span><br><span style="color: hsl(120, 100%, 40%);">+# parameters in a documented function, or documenting parameters that</span><br><span style="color: hsl(120, 100%, 40%);">+# don't exist or using markup commands wrongly.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WARN_IF_DOC_ERROR      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The WARN_NO_PARAMDOC option can be enabled to get warnings for</span><br><span style="color: hsl(120, 100%, 40%);">+# functions that are documented, but have no documentation for their parameters</span><br><span style="color: hsl(120, 100%, 40%);">+# or return value. If set to NO (the default) doxygen will only warn about</span><br><span style="color: hsl(120, 100%, 40%);">+# wrong or incomplete parameter documentation, but not about the absence of</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WARN_NO_PARAMDOC       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The WARN_FORMAT tag determines the format of the warning messages that</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen can produce. The string should contain the $file, $line, and $text</span><br><span style="color: hsl(120, 100%, 40%);">+# tags, which will be replaced by the file and line number from which the</span><br><span style="color: hsl(120, 100%, 40%);">+# warning originated and the warning text. Optionally the format may contain</span><br><span style="color: hsl(120, 100%, 40%);">+# $version, which will be replaced by the version of the file (if it could</span><br><span style="color: hsl(120, 100%, 40%);">+# be obtained via FILE_VERSION_FILTER)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WARN_FORMAT            = "$file:$line: $text"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The WARN_LOGFILE tag can be used to specify a file to which warning</span><br><span style="color: hsl(120, 100%, 40%);">+# and error messages should be written. If left blank the output is written</span><br><span style="color: hsl(120, 100%, 40%);">+# to stderr.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WARN_LOGFILE           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the input files</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The INPUT tag can be used to specify the files and/or directories that contain</span><br><span style="color: hsl(120, 100%, 40%);">+# documented source files. You may enter file names like "myfile.cpp" or</span><br><span style="color: hsl(120, 100%, 40%);">+# directories like "/usr/src/myproject". Separate the files or directories</span><br><span style="color: hsl(120, 100%, 40%);">+# with spaces.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INPUT                  = @srcdir@/include/osmocom/ctrl @srcdir@/src/ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# This tag can be used to specify the character encoding of the source files</span><br><span style="color: hsl(120, 100%, 40%);">+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is</span><br><span style="color: hsl(120, 100%, 40%);">+# also the default input encoding. Doxygen uses libiconv (or the iconv built</span><br><span style="color: hsl(120, 100%, 40%);">+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for</span><br><span style="color: hsl(120, 100%, 40%);">+# the list of possible encodings.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INPUT_ENCODING         = UTF-8</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the value of the INPUT tag contains directories, you can use the</span><br><span style="color: hsl(120, 100%, 40%);">+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp</span><br><span style="color: hsl(120, 100%, 40%);">+# and *.h) to filter out the source-files in the directories. If left</span><br><span style="color: hsl(120, 100%, 40%);">+# blank the following patterns are tested:</span><br><span style="color: hsl(120, 100%, 40%);">+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh</span><br><span style="color: hsl(120, 100%, 40%);">+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py</span><br><span style="color: hsl(120, 100%, 40%);">+# *.f90 *.f *.for *.vhd *.vhdl</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FILE_PATTERNS          =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The RECURSIVE tag can be used to turn specify whether or not subdirectories</span><br><span style="color: hsl(120, 100%, 40%);">+# should be searched for input files as well. Possible values are YES and NO.</span><br><span style="color: hsl(120, 100%, 40%);">+# If left blank NO is used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RECURSIVE              = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The EXCLUDE tag can be used to specify files and/or directories that should</span><br><span style="color: hsl(120, 100%, 40%);">+# excluded from the INPUT source files. This way you can easily exclude a</span><br><span style="color: hsl(120, 100%, 40%);">+# subdirectory from a directory tree whose root is specified with the INPUT tag.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXCLUDE                =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or</span><br><span style="color: hsl(120, 100%, 40%);">+# directories that are symbolic links (a Unix file system feature) are excluded</span><br><span style="color: hsl(120, 100%, 40%);">+# from the input.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXCLUDE_SYMLINKS       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the value of the INPUT tag contains directories, you can use the</span><br><span style="color: hsl(120, 100%, 40%);">+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude</span><br><span style="color: hsl(120, 100%, 40%);">+# certain files from those directories. Note that the wildcards are matched</span><br><span style="color: hsl(120, 100%, 40%);">+# against the file with absolute path, so to exclude all test directories</span><br><span style="color: hsl(120, 100%, 40%);">+# for example use the pattern */test/*</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXCLUDE_PATTERNS       =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names</span><br><span style="color: hsl(120, 100%, 40%);">+# (namespaces, classes, functions, etc.) that should be excluded from the</span><br><span style="color: hsl(120, 100%, 40%);">+# output. The symbol name can be a fully qualified name, a word, or if the</span><br><span style="color: hsl(120, 100%, 40%);">+# wildcard * is used, a substring. Examples: ANamespace, AClass,</span><br><span style="color: hsl(120, 100%, 40%);">+# AClass::ANamespace, ANamespace::*Test</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXCLUDE_SYMBOLS        =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The EXAMPLE_PATH tag can be used to specify one or more files or</span><br><span style="color: hsl(120, 100%, 40%);">+# directories that contain example code fragments that are included (see</span><br><span style="color: hsl(120, 100%, 40%);">+# the \include command).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXAMPLE_PATH           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the value of the EXAMPLE_PATH tag contains directories, you can use the</span><br><span style="color: hsl(120, 100%, 40%);">+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp</span><br><span style="color: hsl(120, 100%, 40%);">+# and *.h) to filter out the source-files in the directories. If left</span><br><span style="color: hsl(120, 100%, 40%);">+# blank all files are included.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXAMPLE_PATTERNS       =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be</span><br><span style="color: hsl(120, 100%, 40%);">+# searched for input files to be used with the \include or \dontinclude</span><br><span style="color: hsl(120, 100%, 40%);">+# commands irrespective of the value of the RECURSIVE tag.</span><br><span style="color: hsl(120, 100%, 40%);">+# Possible values are YES and NO. If left blank NO is used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXAMPLE_RECURSIVE      = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The IMAGE_PATH tag can be used to specify one or more files or</span><br><span style="color: hsl(120, 100%, 40%);">+# directories that contain image that are included in the documentation (see</span><br><span style="color: hsl(120, 100%, 40%);">+# the \image command).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# IMAGE_PATH             = images/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The INPUT_FILTER tag can be used to specify a program that doxygen should</span><br><span style="color: hsl(120, 100%, 40%);">+# invoke to filter for each input file. Doxygen will invoke the filter program</span><br><span style="color: hsl(120, 100%, 40%);">+# by executing (via popen()) the command <filter> <input-file>, where <filter></span><br><span style="color: hsl(120, 100%, 40%);">+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an</span><br><span style="color: hsl(120, 100%, 40%);">+# input file. Doxygen will then use the output that the filter program writes</span><br><span style="color: hsl(120, 100%, 40%);">+# to standard output.</span><br><span style="color: hsl(120, 100%, 40%);">+# If FILTER_PATTERNS is specified, this tag will be</span><br><span style="color: hsl(120, 100%, 40%);">+# ignored.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INPUT_FILTER           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern</span><br><span style="color: hsl(120, 100%, 40%);">+# basis.</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen will compare the file name with each pattern and apply the</span><br><span style="color: hsl(120, 100%, 40%);">+# filter if there is a match.</span><br><span style="color: hsl(120, 100%, 40%);">+# The filters are a list of the form:</span><br><span style="color: hsl(120, 100%, 40%);">+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further</span><br><span style="color: hsl(120, 100%, 40%);">+# info on how filters are used. If FILTER_PATTERNS is empty or if</span><br><span style="color: hsl(120, 100%, 40%);">+# non of the patterns match the file name, INPUT_FILTER is applied.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FILTER_PATTERNS        =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using</span><br><span style="color: hsl(120, 100%, 40%);">+# INPUT_FILTER) will be used to filter the input files when producing source</span><br><span style="color: hsl(120, 100%, 40%);">+# files to browse (i.e. when SOURCE_BROWSER is set to YES).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FILTER_SOURCE_FILES    = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file</span><br><span style="color: hsl(120, 100%, 40%);">+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)</span><br><span style="color: hsl(120, 100%, 40%);">+# and it is also possible to disable source filtering for a specific pattern</span><br><span style="color: hsl(120, 100%, 40%);">+# using *.ext= (so without naming a filter). This option only has effect when</span><br><span style="color: hsl(120, 100%, 40%);">+# FILTER_SOURCE_FILES is enabled.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FILTER_SOURCE_PATTERNS =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to source browsing</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SOURCE_BROWSER tag is set to YES then a list of source files will</span><br><span style="color: hsl(120, 100%, 40%);">+# be generated. Documented entities will be cross-referenced with these sources.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: To get rid of all source code in the generated output, make sure also</span><br><span style="color: hsl(120, 100%, 40%);">+# VERBATIM_HEADERS is set to NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SOURCE_BROWSER         = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Setting the INLINE_SOURCES tag to YES will include the body</span><br><span style="color: hsl(120, 100%, 40%);">+# of functions and classes directly in the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INLINE_SOURCES         = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen to hide any special comment blocks from generated source code</span><br><span style="color: hsl(120, 100%, 40%);">+# fragments. Normal C and C++ comments will always remain visible.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+STRIP_CODE_COMMENTS    = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the REFERENCED_BY_RELATION tag is set to YES</span><br><span style="color: hsl(120, 100%, 40%);">+# then for each documented function all documented</span><br><span style="color: hsl(120, 100%, 40%);">+# functions referencing it will be listed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+REFERENCED_BY_RELATION = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the REFERENCES_RELATION tag is set to YES</span><br><span style="color: hsl(120, 100%, 40%);">+# then for each documented function all documented entities</span><br><span style="color: hsl(120, 100%, 40%);">+# called/used by that function will be listed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+REFERENCES_RELATION    = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)</span><br><span style="color: hsl(120, 100%, 40%);">+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from</span><br><span style="color: hsl(120, 100%, 40%);">+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will</span><br><span style="color: hsl(120, 100%, 40%);">+# link to the source code.</span><br><span style="color: hsl(120, 100%, 40%);">+# Otherwise they will link to the documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+REFERENCES_LINK_SOURCE = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the USE_HTAGS tag is set to YES then the references to source code</span><br><span style="color: hsl(120, 100%, 40%);">+# will point to the HTML generated by the htags(1) tool instead of doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# built-in source browser. The htags tool is part of GNU's global source</span><br><span style="color: hsl(120, 100%, 40%);">+# tagging system (see http://www.gnu.org/software/global/global.html). You</span><br><span style="color: hsl(120, 100%, 40%);">+# will need version 4.8.6 or higher.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+USE_HTAGS              = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will generate a verbatim copy of the header file for each class for</span><br><span style="color: hsl(120, 100%, 40%);">+# which an include is specified. Set to NO to disable this.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+VERBATIM_HEADERS       = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the alphabetical class index</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index</span><br><span style="color: hsl(120, 100%, 40%);">+# of all compounds will be generated. Enable this if the project</span><br><span style="color: hsl(120, 100%, 40%);">+# contains a lot of classes, structs, unions or interfaces.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ALPHABETICAL_INDEX     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then</span><br><span style="color: hsl(120, 100%, 40%);">+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns</span><br><span style="color: hsl(120, 100%, 40%);">+# in which this list will be split (can be a number in the range [1..20])</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COLS_IN_ALPHA_INDEX    = 5</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# In case all classes in a project start with a common prefix, all</span><br><span style="color: hsl(120, 100%, 40%);">+# classes will be put under the same header in the alphabetical index.</span><br><span style="color: hsl(120, 100%, 40%);">+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that</span><br><span style="color: hsl(120, 100%, 40%);">+# should be ignored while generating the index headers.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+IGNORE_PREFIX          =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the HTML output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate HTML output.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_HTML          = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.</span><br><span style="color: hsl(120, 100%, 40%);">+# If a relative path is entered the value of OUTPUT_DIRECTORY will be</span><br><span style="color: hsl(120, 100%, 40%);">+# put in front of it. If left blank `html' will be used as the default path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_OUTPUT            = html</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for</span><br><span style="color: hsl(120, 100%, 40%);">+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen will generate files with .html extension.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_FILE_EXTENSION    = .html</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_HEADER tag can be used to specify a personal HTML header for</span><br><span style="color: hsl(120, 100%, 40%);">+# each generated HTML page. If it is left blank doxygen will generate a</span><br><span style="color: hsl(120, 100%, 40%);">+# standard header. Note that when using a custom header you are responsible</span><br><span style="color: hsl(120, 100%, 40%);">+# for the proper inclusion of any scripts and style sheets that doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# needs, which is dependent on the configuration options used.</span><br><span style="color: hsl(120, 100%, 40%);">+# It is adviced to generate a default header using "doxygen -w html</span><br><span style="color: hsl(120, 100%, 40%);">+# header.html footer.html stylesheet.css YourConfigFile" and then modify</span><br><span style="color: hsl(120, 100%, 40%);">+# that header. Note that the header is subject to change so you typically</span><br><span style="color: hsl(120, 100%, 40%);">+# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW!</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_HEADER            =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_FOOTER tag can be used to specify a personal HTML footer for</span><br><span style="color: hsl(120, 100%, 40%);">+# each generated HTML page. If it is left blank doxygen will generate a</span><br><span style="color: hsl(120, 100%, 40%);">+# standard footer.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_FOOTER            =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading</span><br><span style="color: hsl(120, 100%, 40%);">+# style sheet that is used by each HTML page. It can be used to</span><br><span style="color: hsl(120, 100%, 40%);">+# fine-tune the look of the HTML output. If the tag is left blank doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will generate a default style sheet. Note that doxygen will try to copy</span><br><span style="color: hsl(120, 100%, 40%);">+# the style sheet file to the HTML output directory, so don't put your own</span><br><span style="color: hsl(120, 100%, 40%);">+# stylesheet in the HTML output directory as well, or it will be erased!</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_STYLESHEET        =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or</span><br><span style="color: hsl(120, 100%, 40%);">+# other source files which should be copied to the HTML output directory. Note</span><br><span style="color: hsl(120, 100%, 40%);">+# that these files will be copied to the base HTML output directory. Use the</span><br><span style="color: hsl(120, 100%, 40%);">+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these</span><br><span style="color: hsl(120, 100%, 40%);">+# files. In the HTML_STYLESHEET file, use the file name only. Also note that</span><br><span style="color: hsl(120, 100%, 40%);">+# the files will be copied as-is; there are no commands or markers available.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_EXTRA_FILES       =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.</span><br><span style="color: hsl(120, 100%, 40%);">+# Doxygen will adjust the colors in the stylesheet and background images</span><br><span style="color: hsl(120, 100%, 40%);">+# according to this color. Hue is specified as an angle on a colorwheel,</span><br><span style="color: hsl(120, 100%, 40%);">+# see http://en.wikipedia.org/wiki/Hue for more information.</span><br><span style="color: hsl(120, 100%, 40%);">+# For instance the value 0 represents red, 60 is yellow, 120 is green,</span><br><span style="color: hsl(120, 100%, 40%);">+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.</span><br><span style="color: hsl(120, 100%, 40%);">+# The allowed range is 0 to 359.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_COLORSTYLE_HUE    = 220</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of</span><br><span style="color: hsl(120, 100%, 40%);">+# the colors in the HTML output. For a value of 0 the output will use</span><br><span style="color: hsl(120, 100%, 40%);">+# grayscales only. A value of 255 will produce the most vivid colors.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_COLORSTYLE_SAT    = 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to</span><br><span style="color: hsl(120, 100%, 40%);">+# the luminance component of the colors in the HTML output. Values below</span><br><span style="color: hsl(120, 100%, 40%);">+# 100 gradually make the output lighter, whereas values above 100 make</span><br><span style="color: hsl(120, 100%, 40%);">+# the output darker. The value divided by 100 is the actual gamma applied,</span><br><span style="color: hsl(120, 100%, 40%);">+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,</span><br><span style="color: hsl(120, 100%, 40%);">+# and 100 does not change the gamma.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_COLORSTYLE_GAMMA  = 80</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML</span><br><span style="color: hsl(120, 100%, 40%);">+# page will contain the date and time when the page was generated. Setting</span><br><span style="color: hsl(120, 100%, 40%);">+# this to NO can help when comparing the output of multiple runs.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_TIMESTAMP         = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,</span><br><span style="color: hsl(120, 100%, 40%);">+# files or namespaces will be aligned in HTML using tables. If set to</span><br><span style="color: hsl(120, 100%, 40%);">+# NO a bullet list will be used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_ALIGN_MEMBERS     = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation will contain sections that can be hidden and shown after the</span><br><span style="color: hsl(120, 100%, 40%);">+# page has loaded. For this to work a browser that supports</span><br><span style="color: hsl(120, 100%, 40%);">+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox</span><br><span style="color: hsl(120, 100%, 40%);">+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTML_DYNAMIC_SECTIONS  = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_DOCSET tag is set to YES, additional index files</span><br><span style="color: hsl(120, 100%, 40%);">+# will be generated that can be used as input for Apple's Xcode 3</span><br><span style="color: hsl(120, 100%, 40%);">+# integrated development environment, introduced with OSX 10.5 (Leopard).</span><br><span style="color: hsl(120, 100%, 40%);">+# To create a documentation set, doxygen will generate a Makefile in the</span><br><span style="color: hsl(120, 100%, 40%);">+# HTML output directory. Running make will produce the docset in that</span><br><span style="color: hsl(120, 100%, 40%);">+# directory and running "make install" will install the docset in</span><br><span style="color: hsl(120, 100%, 40%);">+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find</span><br><span style="color: hsl(120, 100%, 40%);">+# it at startup.</span><br><span style="color: hsl(120, 100%, 40%);">+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html</span><br><span style="color: hsl(120, 100%, 40%);">+# for more information.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_DOCSET        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the</span><br><span style="color: hsl(120, 100%, 40%);">+# feed. A documentation feed provides an umbrella under which multiple</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation sets from a single provider (such as a company or product suite)</span><br><span style="color: hsl(120, 100%, 40%);">+# can be grouped.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOCSET_FEEDNAME        = "Doxygen generated docs"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that</span><br><span style="color: hsl(120, 100%, 40%);">+# should uniquely identify the documentation set bundle. This should be a</span><br><span style="color: hsl(120, 100%, 40%);">+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will append .docset to the name.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOCSET_BUNDLE_ID       = org.doxygen.Project</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify</span><br><span style="color: hsl(120, 100%, 40%);">+# the documentation publisher. This should be a reverse domain-name style</span><br><span style="color: hsl(120, 100%, 40%);">+# string, e.g. com.mycompany.MyDocSet.documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOCSET_PUBLISHER_NAME  = Publisher</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTMLHELP tag is set to YES, additional index files</span><br><span style="color: hsl(120, 100%, 40%);">+# will be generated that can be used as input for tools like the</span><br><span style="color: hsl(120, 100%, 40%);">+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)</span><br><span style="color: hsl(120, 100%, 40%);">+# of the generated HTML documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_HTMLHELP      = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can</span><br><span style="color: hsl(120, 100%, 40%);">+# be used to specify the file name of the resulting .chm file. You</span><br><span style="color: hsl(120, 100%, 40%);">+# can add a path in front of the file if the result should not be</span><br><span style="color: hsl(120, 100%, 40%);">+# written to the html output directory.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CHM_FILE               =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can</span><br><span style="color: hsl(120, 100%, 40%);">+# be used to specify the location (absolute path including file name) of</span><br><span style="color: hsl(120, 100%, 40%);">+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run</span><br><span style="color: hsl(120, 100%, 40%);">+# the HTML help compiler on the generated index.hhp.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HHC_LOCATION           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag</span><br><span style="color: hsl(120, 100%, 40%);">+# controls if a separate .chi index file is generated (YES) or that</span><br><span style="color: hsl(120, 100%, 40%);">+# it should be included in the master .chm file (NO).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_CHI           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING</span><br><span style="color: hsl(120, 100%, 40%);">+# is used to encode HtmlHelp index (hhk), content (hhc) and project file</span><br><span style="color: hsl(120, 100%, 40%);">+# content.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CHM_INDEX_ENCODING     =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag</span><br><span style="color: hsl(120, 100%, 40%);">+# controls whether a binary table of contents is generated (YES) or a</span><br><span style="color: hsl(120, 100%, 40%);">+# normal table of contents (NO) in the .chm file.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BINARY_TOC             = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The TOC_EXPAND flag can be set to YES to add extra items for group members</span><br><span style="color: hsl(120, 100%, 40%);">+# to the contents of the HTML help documentation and to the tree view.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TOC_EXPAND             = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and</span><br><span style="color: hsl(120, 100%, 40%);">+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated</span><br><span style="color: hsl(120, 100%, 40%);">+# that can be used as input for Qt's qhelpgenerator to generate a</span><br><span style="color: hsl(120, 100%, 40%);">+# Qt Compressed Help (.qch) of the generated HTML documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_QHP           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can</span><br><span style="color: hsl(120, 100%, 40%);">+# be used to specify the file name of the resulting .qch file.</span><br><span style="color: hsl(120, 100%, 40%);">+# The path specified is relative to the HTML output folder.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QCH_FILE               =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The QHP_NAMESPACE tag specifies the namespace to use when generating</span><br><span style="color: hsl(120, 100%, 40%);">+# Qt Help Project output. For more information please see</span><br><span style="color: hsl(120, 100%, 40%);">+# http://doc.trolltech.com/qthelpproject.html#namespace</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QHP_NAMESPACE          = org.doxygen.Project</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating</span><br><span style="color: hsl(120, 100%, 40%);">+# Qt Help Project output. For more information please see</span><br><span style="color: hsl(120, 100%, 40%);">+# http://doc.trolltech.com/qthelpproject.html#virtual-folders</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QHP_VIRTUAL_FOLDER     = doc</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to</span><br><span style="color: hsl(120, 100%, 40%);">+# add. For more information please see</span><br><span style="color: hsl(120, 100%, 40%);">+# http://doc.trolltech.com/qthelpproject.html#custom-filters</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QHP_CUST_FILTER_NAME   =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the</span><br><span style="color: hsl(120, 100%, 40%);">+# custom filter to add. For more information please see</span><br><span style="color: hsl(120, 100%, 40%);">+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"></span><br><span style="color: hsl(120, 100%, 40%);">+# Qt Help Project / Custom Filters</a>.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QHP_CUST_FILTER_ATTRS  =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this</span><br><span style="color: hsl(120, 100%, 40%);">+# project's</span><br><span style="color: hsl(120, 100%, 40%);">+# filter section matches.</span><br><span style="color: hsl(120, 100%, 40%);">+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"></span><br><span style="color: hsl(120, 100%, 40%);">+# Qt Help Project / Filter Attributes</a>.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QHP_SECT_FILTER_ATTRS  =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can</span><br><span style="color: hsl(120, 100%, 40%);">+# be used to specify the location of Qt's qhelpgenerator.</span><br><span style="color: hsl(120, 100%, 40%);">+# If non-empty doxygen will try to run qhelpgenerator on the generated</span><br><span style="color: hsl(120, 100%, 40%);">+# .qhp file.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+QHG_LOCATION           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files</span><br><span style="color: hsl(120, 100%, 40%);">+#  will be generated, which together with the HTML files, form an Eclipse help</span><br><span style="color: hsl(120, 100%, 40%);">+# plugin. To install this plugin and make it available under the help contents</span><br><span style="color: hsl(120, 100%, 40%);">+# menu in Eclipse, the contents of the directory containing the HTML and XML</span><br><span style="color: hsl(120, 100%, 40%);">+# files needs to be copied into the plugins directory of eclipse. The name of</span><br><span style="color: hsl(120, 100%, 40%);">+# the directory within the plugins directory should be the same as</span><br><span style="color: hsl(120, 100%, 40%);">+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before</span><br><span style="color: hsl(120, 100%, 40%);">+# the help appears.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_ECLIPSEHELP   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# A unique identifier for the eclipse help plugin. When installing the plugin</span><br><span style="color: hsl(120, 100%, 40%);">+# the directory name containing the HTML and XML files should also have</span><br><span style="color: hsl(120, 100%, 40%);">+# this name.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ECLIPSE_DOC_ID         = org.doxygen.Project</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at</span><br><span style="color: hsl(120, 100%, 40%);">+# top of each HTML page. The value NO (the default) enables the index and</span><br><span style="color: hsl(120, 100%, 40%);">+# the value YES disables it.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DISABLE_INDEX          = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values</span><br><span style="color: hsl(120, 100%, 40%);">+# (range [0,1..20]) that doxygen will group on one line in the generated HTML</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation. Note that a value of 0 will completely suppress the enum</span><br><span style="color: hsl(120, 100%, 40%);">+# values from appearing in the overview section.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ENUM_VALUES_PER_LINE   = 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index</span><br><span style="color: hsl(120, 100%, 40%);">+# structure should be generated to display hierarchical information.</span><br><span style="color: hsl(120, 100%, 40%);">+# If the tag value is set to YES, a side panel will be generated</span><br><span style="color: hsl(120, 100%, 40%);">+# containing a tree-like index structure (just like the one that</span><br><span style="color: hsl(120, 100%, 40%);">+# is generated for HTML Help). For this to work a browser that supports</span><br><span style="color: hsl(120, 100%, 40%);">+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).</span><br><span style="color: hsl(120, 100%, 40%);">+# Windows users are probably better off using the HTML help feature.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_TREEVIEW      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,</span><br><span style="color: hsl(120, 100%, 40%);">+# and Class Hierarchy pages using a tree view instead of an ordered list.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+USE_INLINE_TREES       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be</span><br><span style="color: hsl(120, 100%, 40%);">+# used to set the initial width (in pixels) of the frame in which the tree</span><br><span style="color: hsl(120, 100%, 40%);">+# is shown.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TREEVIEW_WIDTH         = 250</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open</span><br><span style="color: hsl(120, 100%, 40%);">+# links to external symbols imported via tag files in a separate window.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXT_LINKS_IN_WINDOW    = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Use this tag to change the font size of Latex formulas included</span><br><span style="color: hsl(120, 100%, 40%);">+# as images in the HTML documentation. The default is 10. Note that</span><br><span style="color: hsl(120, 100%, 40%);">+# when you change the font size after a successful doxygen run you need</span><br><span style="color: hsl(120, 100%, 40%);">+# to manually remove any form_*.png images from the HTML output directory</span><br><span style="color: hsl(120, 100%, 40%);">+# to force them to be regenerated.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FORMULA_FONTSIZE       = 10</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Use the FORMULA_TRANPARENT tag to determine whether or not the images</span><br><span style="color: hsl(120, 100%, 40%);">+# generated for formulas are transparent PNGs. Transparent PNGs are</span><br><span style="color: hsl(120, 100%, 40%);">+# not supported properly for IE 6.0, but are supported on all modern browsers.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note that when changing this option you need to delete any form_*.png files</span><br><span style="color: hsl(120, 100%, 40%);">+# in the HTML output before the changes have effect.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FORMULA_TRANSPARENT    = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax</span><br><span style="color: hsl(120, 100%, 40%);">+# (see http://www.mathjax.org) which uses client side Javascript for the</span><br><span style="color: hsl(120, 100%, 40%);">+# rendering instead of using prerendered bitmaps. Use this if you do not</span><br><span style="color: hsl(120, 100%, 40%);">+# have LaTeX installed or if you want to formulas look prettier in the HTML</span><br><span style="color: hsl(120, 100%, 40%);">+# output. When enabled you also need to install MathJax separately and</span><br><span style="color: hsl(120, 100%, 40%);">+# configure the path to it using the MATHJAX_RELPATH option.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+USE_MATHJAX            = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When MathJax is enabled you need to specify the location relative to the</span><br><span style="color: hsl(120, 100%, 40%);">+# HTML output directory using the MATHJAX_RELPATH option. The destination</span><br><span style="color: hsl(120, 100%, 40%);">+# directory should contain the MathJax.js script. For instance, if the mathjax</span><br><span style="color: hsl(120, 100%, 40%);">+# directory is located at the same level as the HTML output directory, then</span><br><span style="color: hsl(120, 100%, 40%);">+# MATHJAX_RELPATH should be ../mathjax. The default value points to the</span><br><span style="color: hsl(120, 100%, 40%);">+# mathjax.org site, so you can quickly see the result without installing</span><br><span style="color: hsl(120, 100%, 40%);">+# MathJax, but it is strongly recommended to install a local copy of MathJax</span><br><span style="color: hsl(120, 100%, 40%);">+# before deployment.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MATHJAX_RELPATH        = http://www.mathjax.org/mathjax</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When the SEARCHENGINE tag is enabled doxygen will generate a search box</span><br><span style="color: hsl(120, 100%, 40%);">+# for the HTML output. The underlying search engine uses javascript</span><br><span style="color: hsl(120, 100%, 40%);">+# and DHTML and should work on any modern browser. Note that when using</span><br><span style="color: hsl(120, 100%, 40%);">+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets</span><br><span style="color: hsl(120, 100%, 40%);">+# (GENERATE_DOCSET) there is already a search function so this one should</span><br><span style="color: hsl(120, 100%, 40%);">+# typically be disabled. For large projects the javascript based search engine</span><br><span style="color: hsl(120, 100%, 40%);">+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SEARCHENGINE           = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be</span><br><span style="color: hsl(120, 100%, 40%);">+# implemented using a PHP enabled web server instead of at the web client</span><br><span style="color: hsl(120, 100%, 40%);">+# using Javascript. Doxygen will generate the search PHP script and index</span><br><span style="color: hsl(120, 100%, 40%);">+# file to put on the web server. The advantage of the server</span><br><span style="color: hsl(120, 100%, 40%);">+# based approach is that it scales better to large projects and allows</span><br><span style="color: hsl(120, 100%, 40%);">+# full text search. The disadvantages are that it is more difficult to setup</span><br><span style="color: hsl(120, 100%, 40%);">+# and does not have live searching capabilities.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SERVER_BASED_SEARCH    = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the LaTeX output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate Latex output.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_LATEX         = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.</span><br><span style="color: hsl(120, 100%, 40%);">+# If a relative path is entered the value of OUTPUT_DIRECTORY will be</span><br><span style="color: hsl(120, 100%, 40%);">+# put in front of it. If left blank `latex' will be used as the default path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_OUTPUT           = latex</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be</span><br><span style="color: hsl(120, 100%, 40%);">+# invoked. If left blank `latex' will be used as the default command name.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note that when enabling USE_PDFLATEX this option is only used for</span><br><span style="color: hsl(120, 100%, 40%);">+# generating bitmaps for formulas in the HTML output, but not in the</span><br><span style="color: hsl(120, 100%, 40%);">+# Makefile that is written to the output directory.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_CMD_NAME         = latex</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to</span><br><span style="color: hsl(120, 100%, 40%);">+# generate index for LaTeX. If left blank `makeindex' will be used as the</span><br><span style="color: hsl(120, 100%, 40%);">+# default command name.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MAKEINDEX_CMD_NAME     = makeindex</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact</span><br><span style="color: hsl(120, 100%, 40%);">+# LaTeX documents. This may be useful for small projects and may help to</span><br><span style="color: hsl(120, 100%, 40%);">+# save some trees in general.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COMPACT_LATEX          = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The PAPER_TYPE tag can be used to set the paper type that is used</span><br><span style="color: hsl(120, 100%, 40%);">+# by the printer. Possible values are: a4, letter, legal and</span><br><span style="color: hsl(120, 100%, 40%);">+# executive. If left blank a4wide will be used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PAPER_TYPE             = a4wide</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX</span><br><span style="color: hsl(120, 100%, 40%);">+# packages that should be included in the LaTeX output.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRA_PACKAGES         =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for</span><br><span style="color: hsl(120, 100%, 40%);">+# the generated latex document. The header should contain everything until</span><br><span style="color: hsl(120, 100%, 40%);">+# the first chapter. If it is left blank doxygen will generate a</span><br><span style="color: hsl(120, 100%, 40%);">+# standard header. Notice: only use this tag if you know what you are doing!</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_HEADER           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for</span><br><span style="color: hsl(120, 100%, 40%);">+# the generated latex document. The footer should contain everything after</span><br><span style="color: hsl(120, 100%, 40%);">+# the last chapter. If it is left blank doxygen will generate a</span><br><span style="color: hsl(120, 100%, 40%);">+# standard footer. Notice: only use this tag if you know what you are doing!</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_FOOTER           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated</span><br><span style="color: hsl(120, 100%, 40%);">+# is prepared for conversion to pdf (using ps2pdf). The pdf file will</span><br><span style="color: hsl(120, 100%, 40%);">+# contain links (just like the HTML output) instead of page references</span><br><span style="color: hsl(120, 100%, 40%);">+# This makes the output suitable for online browsing using a pdf viewer.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PDF_HYPERLINKS         = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of</span><br><span style="color: hsl(120, 100%, 40%);">+# plain latex in the generated Makefile. Set this option to YES to get a</span><br><span style="color: hsl(120, 100%, 40%);">+# higher quality PDF documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+USE_PDFLATEX           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.</span><br><span style="color: hsl(120, 100%, 40%);">+# command to the generated LaTeX files. This will instruct LaTeX to keep</span><br><span style="color: hsl(120, 100%, 40%);">+# running if errors occur, instead of asking the user for help.</span><br><span style="color: hsl(120, 100%, 40%);">+# This option is also used when generating formulas in HTML.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_BATCHMODE        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If LATEX_HIDE_INDICES is set to YES then doxygen will not</span><br><span style="color: hsl(120, 100%, 40%);">+# include the index chapters (such as File Index, Compound Index, etc.)</span><br><span style="color: hsl(120, 100%, 40%);">+# in the output.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_HIDE_INDICES     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If LATEX_SOURCE_CODE is set to YES then doxygen will include</span><br><span style="color: hsl(120, 100%, 40%);">+# source code with syntax highlighting in the LaTeX output.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note that which sources are shown also depends on other settings</span><br><span style="color: hsl(120, 100%, 40%);">+# such as SOURCE_BROWSER.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+LATEX_SOURCE_CODE      = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the RTF output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output</span><br><span style="color: hsl(120, 100%, 40%);">+# The RTF output is optimized for Word 97 and may not look very pretty with</span><br><span style="color: hsl(120, 100%, 40%);">+# other RTF readers or editors.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_RTF           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.</span><br><span style="color: hsl(120, 100%, 40%);">+# If a relative path is entered the value of OUTPUT_DIRECTORY will be</span><br><span style="color: hsl(120, 100%, 40%);">+# put in front of it. If left blank `rtf' will be used as the default path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RTF_OUTPUT             = rtf</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact</span><br><span style="color: hsl(120, 100%, 40%);">+# RTF documents. This may be useful for small projects and may help to</span><br><span style="color: hsl(120, 100%, 40%);">+# save some trees in general.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COMPACT_RTF            = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated</span><br><span style="color: hsl(120, 100%, 40%);">+# will contain hyperlink fields. The RTF file will</span><br><span style="color: hsl(120, 100%, 40%);">+# contain links (just like the HTML output) instead of page references.</span><br><span style="color: hsl(120, 100%, 40%);">+# This makes the output suitable for online browsing using WORD or other</span><br><span style="color: hsl(120, 100%, 40%);">+# programs which support those fields.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: wordpad (write) and others do not support links.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RTF_HYPERLINKS         = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Load stylesheet definitions from file. Syntax is similar to doxygen's</span><br><span style="color: hsl(120, 100%, 40%);">+# config file, i.e. a series of assignments. You only have to provide</span><br><span style="color: hsl(120, 100%, 40%);">+# replacements, missing definitions are set to their default value.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RTF_STYLESHEET_FILE    =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set optional variables used in the generation of an rtf document.</span><br><span style="color: hsl(120, 100%, 40%);">+# Syntax is similar to doxygen's config file.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RTF_EXTENSIONS_FILE    =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the man page output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate man pages</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_MAN           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MAN_OUTPUT tag is used to specify where the man pages will be put.</span><br><span style="color: hsl(120, 100%, 40%);">+# If a relative path is entered the value of OUTPUT_DIRECTORY will be</span><br><span style="color: hsl(120, 100%, 40%);">+# put in front of it. If left blank `man' will be used as the default path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MAN_OUTPUT             = man</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MAN_EXTENSION tag determines the extension that is added to</span><br><span style="color: hsl(120, 100%, 40%);">+# the generated man pages (default is the subroutine's section .3)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MAN_EXTENSION          = .3</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,</span><br><span style="color: hsl(120, 100%, 40%);">+# then it will generate one additional man file for each entity</span><br><span style="color: hsl(120, 100%, 40%);">+# documented in the real man page(s). These additional files</span><br><span style="color: hsl(120, 100%, 40%);">+# only source the real man page, but without them the man command</span><br><span style="color: hsl(120, 100%, 40%);">+# would be unable to find the correct page. The default is NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MAN_LINKS              = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the XML output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_XML tag is set to YES Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate an XML file that captures the structure of</span><br><span style="color: hsl(120, 100%, 40%);">+# the code including all documentation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_XML           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The XML_OUTPUT tag is used to specify where the XML pages will be put.</span><br><span style="color: hsl(120, 100%, 40%);">+# If a relative path is entered the value of OUTPUT_DIRECTORY will be</span><br><span style="color: hsl(120, 100%, 40%);">+# put in front of it. If left blank `xml' will be used as the default path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+XML_OUTPUT             = xml</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The XML_SCHEMA tag can be used to specify an XML schema,</span><br><span style="color: hsl(120, 100%, 40%);">+# which can be used by a validating XML parser to check the</span><br><span style="color: hsl(120, 100%, 40%);">+# syntax of the XML files.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+XML_SCHEMA             =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The XML_DTD tag can be used to specify an XML DTD,</span><br><span style="color: hsl(120, 100%, 40%);">+# which can be used by a validating XML parser to check the</span><br><span style="color: hsl(120, 100%, 40%);">+# syntax of the XML files.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+XML_DTD                =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# dump the program listings (including syntax highlighting</span><br><span style="color: hsl(120, 100%, 40%);">+# and cross-referencing information) to the XML output. Note that</span><br><span style="color: hsl(120, 100%, 40%);">+# enabling this will significantly increase the size of the XML output.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+XML_PROGRAMLISTING     = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options for the AutoGen Definitions output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate an AutoGen Definitions (see autogen.sf.net) file</span><br><span style="color: hsl(120, 100%, 40%);">+# that captures the structure of the code including all</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation. Note that this feature is still experimental</span><br><span style="color: hsl(120, 100%, 40%);">+# and incomplete at the moment.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_AUTOGEN_DEF   = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# configuration options related to the Perl module output</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_PERLMOD tag is set to YES Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate a Perl module file that captures the structure of</span><br><span style="color: hsl(120, 100%, 40%);">+# the code including all documentation. Note that this</span><br><span style="color: hsl(120, 100%, 40%);">+# feature is still experimental and incomplete at the</span><br><span style="color: hsl(120, 100%, 40%);">+# moment.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_PERLMOD       = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate</span><br><span style="color: hsl(120, 100%, 40%);">+# the necessary Makefile rules, Perl scripts and LaTeX code to be able</span><br><span style="color: hsl(120, 100%, 40%);">+# to generate PDF and DVI output from the Perl module output.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PERLMOD_LATEX          = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be</span><br><span style="color: hsl(120, 100%, 40%);">+# nicely formatted so it can be parsed by a human reader.</span><br><span style="color: hsl(120, 100%, 40%);">+# This is useful</span><br><span style="color: hsl(120, 100%, 40%);">+# if you want to understand what is going on.</span><br><span style="color: hsl(120, 100%, 40%);">+# On the other hand, if this</span><br><span style="color: hsl(120, 100%, 40%);">+# tag is set to NO the size of the Perl module output will be much smaller</span><br><span style="color: hsl(120, 100%, 40%);">+# and Perl will parse it just the same.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PERLMOD_PRETTY         = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The names of the make variables in the generated doxyrules.make file</span><br><span style="color: hsl(120, 100%, 40%);">+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.</span><br><span style="color: hsl(120, 100%, 40%);">+# This is useful so different doxyrules.make files included by the same</span><br><span style="color: hsl(120, 100%, 40%);">+# Makefile don't overwrite each other's variables.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PERLMOD_MAKEVAR_PREFIX =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# Configuration options related to the preprocessor</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# evaluate all C-preprocessor directives found in the sources and include</span><br><span style="color: hsl(120, 100%, 40%);">+# files.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ENABLE_PREPROCESSING   = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro</span><br><span style="color: hsl(120, 100%, 40%);">+# names in the source code. If set to NO (the default) only conditional</span><br><span style="color: hsl(120, 100%, 40%);">+# compilation will be performed. Macro expansion can be done in a controlled</span><br><span style="color: hsl(120, 100%, 40%);">+# way by setting EXPAND_ONLY_PREDEF to YES.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MACRO_EXPANSION        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES</span><br><span style="color: hsl(120, 100%, 40%);">+# then the macro expansion is limited to the macros specified with the</span><br><span style="color: hsl(120, 100%, 40%);">+# PREDEFINED and EXPAND_AS_DEFINED tags.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXPAND_ONLY_PREDEF     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files</span><br><span style="color: hsl(120, 100%, 40%);">+# pointed to by INCLUDE_PATH will be searched when a #include is found.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SEARCH_INCLUDES        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The INCLUDE_PATH tag can be used to specify one or more directories that</span><br><span style="color: hsl(120, 100%, 40%);">+# contain include files that are not input files but should be processed by</span><br><span style="color: hsl(120, 100%, 40%);">+# the preprocessor.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INCLUDE_PATH           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard</span><br><span style="color: hsl(120, 100%, 40%);">+# patterns (like *.h and *.hpp) to filter out the header-files in the</span><br><span style="color: hsl(120, 100%, 40%);">+# directories. If left blank, the patterns specified with FILE_PATTERNS will</span><br><span style="color: hsl(120, 100%, 40%);">+# be used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INCLUDE_FILE_PATTERNS  =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The PREDEFINED tag can be used to specify one or more macro names that</span><br><span style="color: hsl(120, 100%, 40%);">+# are defined before the preprocessor is started (similar to the -D option of</span><br><span style="color: hsl(120, 100%, 40%);">+# gcc). The argument of the tag is a list of macros of the form: name</span><br><span style="color: hsl(120, 100%, 40%);">+# or name=definition (no spaces). If the definition and the = are</span><br><span style="color: hsl(120, 100%, 40%);">+# omitted =1 is assumed. To prevent a macro definition from being</span><br><span style="color: hsl(120, 100%, 40%);">+# undefined via #undef or recursively expanded use the := operator</span><br><span style="color: hsl(120, 100%, 40%);">+# instead of the = operator.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PREDEFINED             =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then</span><br><span style="color: hsl(120, 100%, 40%);">+# this tag can be used to specify a list of macro names that should be expanded.</span><br><span style="color: hsl(120, 100%, 40%);">+# The macro definition that is found in the sources will be used.</span><br><span style="color: hsl(120, 100%, 40%);">+# Use the PREDEFINED tag if you want to use a different macro definition that</span><br><span style="color: hsl(120, 100%, 40%);">+# overrules the definition found in the source code.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXPAND_AS_DEFINED      =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen's preprocessor will remove all references to function-like macros</span><br><span style="color: hsl(120, 100%, 40%);">+# that are alone on a line, have an all uppercase name, and do not end with a</span><br><span style="color: hsl(120, 100%, 40%);">+# semicolon, because these will confuse the parser if not removed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SKIP_FUNCTION_MACROS   = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# Configuration::additions related to external references</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The TAGFILES option can be used to specify one or more tagfiles.</span><br><span style="color: hsl(120, 100%, 40%);">+# Optionally an initial location of the external documentation</span><br><span style="color: hsl(120, 100%, 40%);">+# can be added for each tagfile. The format of a tag file without</span><br><span style="color: hsl(120, 100%, 40%);">+# this location is as follows:</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# TAGFILES = file1 file2 ...</span><br><span style="color: hsl(120, 100%, 40%);">+# Adding location for the tag files is done as follows:</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# TAGFILES = file1=loc1 "file2 = loc2" ...</span><br><span style="color: hsl(120, 100%, 40%);">+# where "loc1" and "loc2" can be relative or absolute paths or</span><br><span style="color: hsl(120, 100%, 40%);">+# URLs. If a location is present for each tag, the installdox tool</span><br><span style="color: hsl(120, 100%, 40%);">+# does not have to be run to correct the links.</span><br><span style="color: hsl(120, 100%, 40%);">+# Note that each tag file must have a unique name</span><br><span style="color: hsl(120, 100%, 40%);">+# (where the name does NOT include the path)</span><br><span style="color: hsl(120, 100%, 40%);">+# If a tag file is not located in the directory in which doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# is run, you must also specify the path to the tagfile here.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TAGFILES               = doc/libosmocore.tag=../../core/html</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# When a file name is specified after GENERATE_TAGFILE, doxygen will create</span><br><span style="color: hsl(120, 100%, 40%);">+# a tag file that is based on the input files it reads.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_TAGFILE       = doc/libosmoctrl.tag</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the ALLEXTERNALS tag is set to YES all external classes will be listed</span><br><span style="color: hsl(120, 100%, 40%);">+# in the class index. If set to NO only the inherited external classes</span><br><span style="color: hsl(120, 100%, 40%);">+# will be listed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ALLEXTERNALS           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed</span><br><span style="color: hsl(120, 100%, 40%);">+# in the modules index. If set to NO, only the current project's groups will</span><br><span style="color: hsl(120, 100%, 40%);">+# be listed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTERNAL_GROUPS        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The PERL_PATH should be the absolute path and name of the perl script</span><br><span style="color: hsl(120, 100%, 40%);">+# interpreter (i.e. the result of `which perl').</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PERL_PATH              = /usr/bin/perl</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+# Configuration options related to the dot tool</span><br><span style="color: hsl(120, 100%, 40%);">+#---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base</span><br><span style="color: hsl(120, 100%, 40%);">+# or super classes. Setting the tag to NO turns the diagrams off. Note that</span><br><span style="color: hsl(120, 100%, 40%);">+# this option also works with HAVE_DOT disabled, but it is recommended to</span><br><span style="color: hsl(120, 100%, 40%);">+# install and use dot, since it yields more powerful graphs.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CLASS_DIAGRAMS         = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# You can define message sequence charts within doxygen comments using the \msc</span><br><span style="color: hsl(120, 100%, 40%);">+# command. Doxygen will then run the mscgen tool (see</span><br><span style="color: hsl(120, 100%, 40%);">+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the</span><br><span style="color: hsl(120, 100%, 40%);">+# documentation. The MSCGEN_PATH tag allows you to specify the directory where</span><br><span style="color: hsl(120, 100%, 40%);">+# the mscgen tool resides. If left empty the tool is assumed to be found in the</span><br><span style="color: hsl(120, 100%, 40%);">+# default search path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MSCGEN_PATH            =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to YES, the inheritance and collaboration graphs will hide</span><br><span style="color: hsl(120, 100%, 40%);">+# inheritance and usage relations if the target is undocumented</span><br><span style="color: hsl(120, 100%, 40%);">+# or is not a class.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HIDE_UNDOC_RELATIONS   = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is</span><br><span style="color: hsl(120, 100%, 40%);">+# available from the path. This tool is part of Graphviz, a graph visualization</span><br><span style="color: hsl(120, 100%, 40%);">+# toolkit from AT&T and Lucent Bell Labs. The other options in this section</span><br><span style="color: hsl(120, 100%, 40%);">+# have no effect if this option is set to NO (the default)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HAVE_DOT               = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is</span><br><span style="color: hsl(120, 100%, 40%);">+# allowed to run in parallel. When set to 0 (the default) doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# base this on the number of processors available in the system. You can set it</span><br><span style="color: hsl(120, 100%, 40%);">+# explicitly to a value larger than 0 to get control over the balance</span><br><span style="color: hsl(120, 100%, 40%);">+# between CPU load and processing speed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_NUM_THREADS        = 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# By default doxygen will write a font called Helvetica to the output</span><br><span style="color: hsl(120, 100%, 40%);">+# directory and reference it in all dot files that doxygen generates.</span><br><span style="color: hsl(120, 100%, 40%);">+# When you want a differently looking font you can specify the font name</span><br><span style="color: hsl(120, 100%, 40%);">+# using DOT_FONTNAME. You need to make sure dot is able to find the font,</span><br><span style="color: hsl(120, 100%, 40%);">+# which can be done by putting it in a standard location or by setting the</span><br><span style="color: hsl(120, 100%, 40%);">+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory</span><br><span style="color: hsl(120, 100%, 40%);">+# containing the font.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_FONTNAME           = Helvetica</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.</span><br><span style="color: hsl(120, 100%, 40%);">+# The default size is 10pt.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_FONTSIZE           = 10</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# By default doxygen will tell dot to use the output directory to look for the</span><br><span style="color: hsl(120, 100%, 40%);">+# FreeSans.ttf font (which doxygen will put there itself). If you specify a</span><br><span style="color: hsl(120, 100%, 40%);">+# different font using DOT_FONTNAME you can set the path where dot</span><br><span style="color: hsl(120, 100%, 40%);">+# can find it using this tag.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_FONTPATH           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will generate a graph for each documented class showing the direct and</span><br><span style="color: hsl(120, 100%, 40%);">+# indirect inheritance relations. Setting this tag to YES will force the</span><br><span style="color: hsl(120, 100%, 40%);">+# the CLASS_DIAGRAMS tag to NO.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CLASS_GRAPH            = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will generate a graph for each documented class showing the direct and</span><br><span style="color: hsl(120, 100%, 40%);">+# indirect implementation dependencies (inheritance, containment, and</span><br><span style="color: hsl(120, 100%, 40%);">+# class references variables) of the class with other documented classes.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COLLABORATION_GRAPH    = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will generate a graph for groups, showing the direct groups dependencies</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GROUP_GRAPHS           = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and</span><br><span style="color: hsl(120, 100%, 40%);">+# collaboration diagrams in a style similar to the OMG's Unified Modeling</span><br><span style="color: hsl(120, 100%, 40%);">+# Language.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+UML_LOOK               = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If set to YES, the inheritance and collaboration graphs will show the</span><br><span style="color: hsl(120, 100%, 40%);">+# relations between templates and their instances.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TEMPLATE_RELATIONS     = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT</span><br><span style="color: hsl(120, 100%, 40%);">+# tags are set to YES then doxygen will generate a graph for each documented</span><br><span style="color: hsl(120, 100%, 40%);">+# file showing the direct and indirect include dependencies of the file with</span><br><span style="color: hsl(120, 100%, 40%);">+# other documented files.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INCLUDE_GRAPH          = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and</span><br><span style="color: hsl(120, 100%, 40%);">+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each</span><br><span style="color: hsl(120, 100%, 40%);">+# documented header file showing the documented files that directly or</span><br><span style="color: hsl(120, 100%, 40%);">+# indirectly include this file.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INCLUDED_BY_GRAPH      = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the CALL_GRAPH and HAVE_DOT options are set to YES then</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen will generate a call dependency graph for every global function</span><br><span style="color: hsl(120, 100%, 40%);">+# or class method. Note that enabling this option will significantly increase</span><br><span style="color: hsl(120, 100%, 40%);">+# the time of a run. So in most cases it will be better to enable call graphs</span><br><span style="color: hsl(120, 100%, 40%);">+# for selected functions only using the \callgraph command.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CALL_GRAPH             = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then</span><br><span style="color: hsl(120, 100%, 40%);">+# doxygen will generate a caller dependency graph for every global function</span><br><span style="color: hsl(120, 100%, 40%);">+# or class method. Note that enabling this option will significantly increase</span><br><span style="color: hsl(120, 100%, 40%);">+# the time of a run. So in most cases it will be better to enable caller</span><br><span style="color: hsl(120, 100%, 40%);">+# graphs for selected functions only using the \callergraph command.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CALLER_GRAPH           = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen</span><br><span style="color: hsl(120, 100%, 40%);">+# will generate a graphical hierarchy of all classes instead of a textual one.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GRAPHICAL_HIERARCHY    = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES</span><br><span style="color: hsl(120, 100%, 40%);">+# then doxygen will show the dependencies a directory has on other directories</span><br><span style="color: hsl(120, 100%, 40%);">+# in a graphical way. The dependency relations are determined by the #include</span><br><span style="color: hsl(120, 100%, 40%);">+# relations between the files in the directories.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DIRECTORY_GRAPH        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images</span><br><span style="color: hsl(120, 100%, 40%);">+# generated by dot. Possible values are svg, png, jpg, or gif.</span><br><span style="color: hsl(120, 100%, 40%);">+# If left blank png will be used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_IMAGE_FORMAT       = png</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The tag DOT_PATH can be used to specify the path where the dot tool can be</span><br><span style="color: hsl(120, 100%, 40%);">+# found. If left blank, it is assumed the dot tool can be found in the path.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_PATH               = /usr/bin/dot</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The DOTFILE_DIRS tag can be used to specify one or more directories that</span><br><span style="color: hsl(120, 100%, 40%);">+# contain dot files that are included in the documentation (see the</span><br><span style="color: hsl(120, 100%, 40%);">+# \dotfile command).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOTFILE_DIRS           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MSCFILE_DIRS tag can be used to specify one or more directories that</span><br><span style="color: hsl(120, 100%, 40%);">+# contain msc files that are included in the documentation (see the</span><br><span style="color: hsl(120, 100%, 40%);">+# \mscfile command).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MSCFILE_DIRS           =</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of</span><br><span style="color: hsl(120, 100%, 40%);">+# nodes that will be shown in the graph. If the number of nodes in a graph</span><br><span style="color: hsl(120, 100%, 40%);">+# becomes larger than this value, doxygen will truncate the graph, which is</span><br><span style="color: hsl(120, 100%, 40%);">+# visualized by representing a node as a red box. Note that doxygen if the</span><br><span style="color: hsl(120, 100%, 40%);">+# number of direct children of the root node in a graph is already larger than</span><br><span style="color: hsl(120, 100%, 40%);">+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note</span><br><span style="color: hsl(120, 100%, 40%);">+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_GRAPH_MAX_NODES    = 50</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the</span><br><span style="color: hsl(120, 100%, 40%);">+# graphs generated by dot. A depth value of 3 means that only nodes reachable</span><br><span style="color: hsl(120, 100%, 40%);">+# from the root by following a path via at most 3 edges will be shown. Nodes</span><br><span style="color: hsl(120, 100%, 40%);">+# that lay further from the root node will be omitted. Note that setting this</span><br><span style="color: hsl(120, 100%, 40%);">+# option to 1 or 2 may greatly reduce the computation time needed for large</span><br><span style="color: hsl(120, 100%, 40%);">+# code bases. Also note that the size of a graph can be further restricted by</span><br><span style="color: hsl(120, 100%, 40%);">+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MAX_DOT_GRAPH_DEPTH    = 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent</span><br><span style="color: hsl(120, 100%, 40%);">+# background. This is disabled by default, because dot on Windows does not</span><br><span style="color: hsl(120, 100%, 40%);">+# seem to support this out of the box. Warning: Depending on the platform used,</span><br><span style="color: hsl(120, 100%, 40%);">+# enabling this option may lead to badly anti-aliased labels on the edges of</span><br><span style="color: hsl(120, 100%, 40%);">+# a graph (i.e. they become hard to read).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_TRANSPARENT        = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output</span><br><span style="color: hsl(120, 100%, 40%);">+# files in one run (i.e. multiple -o and -T options on the command line). This</span><br><span style="color: hsl(120, 100%, 40%);">+# makes dot run faster, but since only newer versions of dot (>1.8.10)</span><br><span style="color: hsl(120, 100%, 40%);">+# support this, this feature is disabled by default.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_MULTI_TARGETS      = NO</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# generate a legend page explaining the meaning of the various boxes and</span><br><span style="color: hsl(120, 100%, 40%);">+# arrows in the dot generated graphs.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERATE_LEGEND        = YES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will</span><br><span style="color: hsl(120, 100%, 40%);">+# remove the intermediate dot files that are used to generate</span><br><span style="color: hsl(120, 100%, 40%);">+# the various graphs.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DOT_CLEANUP            = YES</span><br><span>diff --git a/Makefile.am b/Makefile.am</span><br><span>index 60ec1f8..de5eb35 100644</span><br><span>--- a/Makefile.am</span><br><span>+++ b/Makefile.am</span><br><span>@@ -35,6 +35,7 @@</span><br><span>            $(top_builddir)/doc/vty/html/index.html \</span><br><span>            $(top_builddir)/doc/codec/html/index.html \</span><br><span>                  $(top_builddir)/doc/coding/html/index.html \</span><br><span style="color: hsl(120, 100%, 40%);">+                  $(top_builddir)/doc/ctrl/html/index.html \</span><br><span>                   $(top_builddir)/doc/gb/html/index.html</span><br><span>     cd $(top_builddir)/doc && tar cf html.tar */html</span><br><span> </span><br><span>@@ -62,6 +63,11 @@</span><br><span>    mkdir -p doc/coding</span><br><span>  $(DOXYGEN) Doxyfile.coding</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+$(top_builddir)/doc/ctrl/html/index.html: $(SOURCES) Doxyfile.ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+    @rm -rf doc/ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+      mkdir -p doc/ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+     $(DOXYGEN) Doxyfile.ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> $(top_builddir)/doc/gb/html/index.html: $(SOURCES) Doxyfile.gb</span><br><span>         @rm -rf doc/gb</span><br><span>       mkdir -p doc/gb</span><br><span>@@ -71,9 +77,9 @@</span><br><span>  cd $(DESTDIR)$(htmldir) && tar xf html.tar && rm -f html.tar</span><br><span> </span><br><span> uninstall-hook:</span><br><span style="color: hsl(0, 100%, 40%);">-     cd $(DESTDIR)$(htmldir) && rm -rf {core,gsm,vty,codec,coding,gb}</span><br><span style="color: hsl(120, 100%, 40%);">+      cd $(DESTDIR)$(htmldir) && rm -rf {core,gsm,vty,codec,coding,ctrl,gb}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DX_CLEAN = doc/{core,gsm,vty,codec,coding,gb}/html/search/* doc/{core,gsm,vty,codec,coding,gb}/{html,latex}/* doc/html.tar doc/{core,gsm,vty,codec,coding,gb}/doxygen_sqlite3.db doc/*.tag</span><br><span style="color: hsl(120, 100%, 40%);">+DX_CLEAN = doc/{core,gsm,vty,codec,coding,ctrl,gb}/html/search/* doc/{core,gsm,vty,codec,coding,ctrl,gb}/{html,latex}/* doc/html.tar doc/{core,gsm,vty,codec,coding,ctrl,gb}/doxygen_sqlite3.db doc/*.tag</span><br><span> endif</span><br><span> </span><br><span> MOSTLYCLEANFILES = $(DX_CLEAN)</span><br><span>diff --git a/configure.ac b/configure.ac</span><br><span>index 79ef9d4..cb580a3 100644</span><br><span>--- a/configure.ac</span><br><span>+++ b/configure.ac</span><br><span>@@ -371,4 +371,5 @@</span><br><span>     Doxyfile.codec</span><br><span>       Doxyfile.coding</span><br><span>      Doxyfile.gb</span><br><span style="color: hsl(120, 100%, 40%);">+   Doxyfile.ctrl</span><br><span>        Makefile)</span><br><span>diff --git a/include/osmocom/ctrl/control_cmd.h b/include/osmocom/ctrl/control_cmd.h</span><br><span>index a5df753..08376f3 100644</span><br><span>--- a/include/osmocom/ctrl/control_cmd.h</span><br><span>+++ b/include/osmocom/ctrl/control_cmd.h</span><br><span>@@ -15,6 +15,7 @@</span><br><span> </span><br><span> struct ctrl_handle;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! The class of node at which a ctrl command is registered to */</span><br><span> enum ctrl_node_type {</span><br><span>        CTRL_NODE_ROOT, /* Root elements */</span><br><span>  CTRL_NODE_BTS,  /* BTS specific (net.btsN.) */</span><br><span>@@ -25,6 +26,7 @@</span><br><span>   _LAST_CTRL_NODE</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Ctrl command types (GET, SET, ...) */</span><br><span> enum ctrl_type {</span><br><span>     CTRL_TYPE_UNKNOWN,</span><br><span>   CTRL_TYPE_GET,</span><br><span>@@ -35,37 +37,47 @@</span><br><span>         CTRL_TYPE_ERROR</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! human-readable string names for \ref ctrl_type */</span><br><span> extern const struct value_string ctrl_type_vals[];</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Represents a single ctrl connection */</span><br><span> struct ctrl_connection {</span><br><span>   struct llist_head list_entry;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       /* The queue for sending data back */</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! The queue for sending data back */</span><br><span>       struct osmo_wqueue write_queue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     /* Buffer for partial input data */</span><br><span style="color: hsl(120, 100%, 40%);">+   /*! Buffer for partial input data */</span><br><span>         struct msgb *pending_msg;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Callback if the connection was closed */</span><br><span style="color: hsl(120, 100%, 40%);">+   /*! Callback if the connection was closed */</span><br><span>         void (*closed_cb)(struct ctrl_connection *conn);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Pending commands for this connection */</span><br><span style="color: hsl(120, 100%, 40%);">+    /*! Pending commands for this connection */</span><br><span>  struct llist_head cmds;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     /* Pending deferred commands for this connection */</span><br><span style="color: hsl(120, 100%, 40%);">+   /*! Pending deferred command responses for this connection */</span><br><span>        struct llist_head def_cmds;</span><br><span> };</span><br><span> </span><br><span> struct ctrl_cmd_def;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Represents a single ctrl command after parsing */</span><br><span> struct ctrl_cmd {</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! connection through which the command was received */</span><br><span>     struct ctrl_connection *ccon;</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! command type */</span><br><span>  enum ctrl_type type;</span><br><span>         char *id;</span><br><span style="color: hsl(120, 100%, 40%);">+     /*! node of the specified variable */</span><br><span>        void *node;</span><br><span style="color: hsl(120, 100%, 40%);">+   /*! name of the variable */</span><br><span>  char *variable;</span><br><span style="color: hsl(120, 100%, 40%);">+       /*! value of the specified CTRL variable */</span><br><span>  char *value;</span><br><span style="color: hsl(120, 100%, 40%);">+  /*! respnse message string */</span><br><span>        char *reply;</span><br><span style="color: hsl(120, 100%, 40%);">+  /*! state representing deferred (async) response, if any */</span><br><span>  struct ctrl_cmd_def *defer;</span><br><span> };</span><br><span> </span><br><span>@@ -77,11 +89,17 @@</span><br><span>  char **command;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Implementation of a given CTRL command. This is what a program registers</span><br><span style="color: hsl(120, 100%, 40%);">+ *  using \r ctrl_cmd_install in order to implement a given control variable. */</span><br><span> struct ctrl_cmd_element {</span><br><span style="color: hsl(120, 100%, 40%);">+        /*! textual name/id of the CTRL command */</span><br><span>   const char *name;</span><br><span>    struct ctrl_cmd_struct strcmd;</span><br><span style="color: hsl(120, 100%, 40%);">+        /*! call-back function implementing the SET operation */</span><br><span>     int (*set)(struct ctrl_cmd *cmd, void *data);</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! call-back function implementing the GET operation */</span><br><span>     int (*get)(struct ctrl_cmd *cmd, void *data);</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! call-back function to validate a value; called before SET */</span><br><span>     int (*verify)(struct ctrl_cmd *cmd, const char *value, void *data);</span><br><span> };</span><br><span> </span><br><span>@@ -113,6 +131,10 @@</span><br><span> struct ctrl_cmd *ctrl_cmd_create(void *ctx, enum ctrl_type);</span><br><span> struct ctrl_cmd *ctrl_cmd_trap(struct ctrl_cmd *cmd);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate static struct ctrl_cmd_element</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related functions/structures</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] verify_name full symbol name of verification function */</span><br><span> #define CTRL_CMD_DEFINE_STRUCT(cmdname, cmdstr, verify_name) \</span><br><span> static struct ctrl_cmd_element cmd_##cmdname = { \</span><br><span>         .name = cmdstr, \</span><br><span>@@ -121,6 +143,10 @@</span><br><span>     .verify = verify_name, \</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate static GET function for integer</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dtype name of outer struct of user data</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] element name of field within \a dtype */</span><br><span> #define CTRL_HELPER_GET_INT(cmdname, dtype, element) \</span><br><span> static int get_##cmdname(struct ctrl_cmd *cmd, void *_data) \</span><br><span> { \</span><br><span>@@ -132,6 +158,11 @@</span><br><span>      } \</span><br><span>  return CTRL_CMD_REPLY; \</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate static SET function for integer</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dtype name of outer struct of user data</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] element name of field within \a dtype */</span><br><span> #define CTRL_HELPER_SET_INT(cmdname, dtype, element) \</span><br><span> static int set_##cmdname(struct ctrl_cmd *cmd, void *_data) \</span><br><span> { \</span><br><span>@@ -140,6 +171,11 @@</span><br><span>        node->element = tmp; \</span><br><span>    return get_##cmdname(cmd, _data); \</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate static VERIFY unction validating a numeric range</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] min minimum permitted integer value</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] max maximum permitted integer value */</span><br><span> #define CTRL_HELPER_VERIFY_RANGE(cmdname, min, max) \</span><br><span> static int verify_##cmdname(struct ctrl_cmd *cmd, const char *value, void *_data) \</span><br><span> { \</span><br><span>@@ -151,12 +187,23 @@</span><br><span>    return -1; \</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate GET, SET, VERIFY + ctrl_cmd_element for integer</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dtype name of outer struct of user data</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] element name of field within \a dtype</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] min minimum permitted integer value</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] max maximum permitted integer value */</span><br><span> #define CTRL_CMD_DEFINE_RANGE(cmdname, cmdstr, dtype, element, min, max) \</span><br><span>  CTRL_HELPER_GET_INT(cmdname, dtype, element) \</span><br><span>       CTRL_HELPER_SET_INT(cmdname, dtype, element) \</span><br><span>       CTRL_HELPER_VERIFY_RANGE(cmdname, min, max) \</span><br><span> CTRL_CMD_DEFINE_STRUCT(cmdname, cmdstr, verify_##cmdname)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate static GET function for string</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dtype name of outer struct of user data</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] element name of field within \a dtype */</span><br><span> #define CTRL_HELPER_GET_STRING(cmdname, dtype, element) \</span><br><span> static int get_##cmdname(struct ctrl_cmd *cmd, void *_data) \</span><br><span> { \</span><br><span>@@ -168,6 +215,11 @@</span><br><span>       } \</span><br><span>  return CTRL_CMD_REPLY; \</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate static SET function for string</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dtype name of outer struct of user data</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] element name of field within \a dtype */</span><br><span> #define CTRL_HELPER_SET_STRING(cmdname, dtype, element) \</span><br><span> static int set_##cmdname(struct ctrl_cmd *cmd, void *_data) \</span><br><span> { \</span><br><span>@@ -175,17 +227,31 @@</span><br><span>     osmo_talloc_replace_string(cmd->node, &data->element, cmd->value); \</span><br><span>    return get_##cmdname(cmd, _data); \</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Helper to generate GET, SET, VERIFY + ctrl_cmd_element for string</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related function</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dtype name of outer struct of user data</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] element name of field within \a dtype</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] min minimum permitted integer value</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] max maximum permitted integer value */</span><br><span> #define CTRL_CMD_DEFINE_STRING(cmdname, cmdstr, dtype, element) \</span><br><span>       CTRL_HELPER_GET_STRING(cmdname, dtype, element) \</span><br><span>    CTRL_HELPER_SET_STRING(cmdname, dtype, element) \</span><br><span> CTRL_CMD_DEFINE_STRUCT(cmdname, cmdstr, NULL)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Declare a read-write attribute. Declares get, set, verify.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related functions/structures</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL */</span><br><span> #define CTRL_CMD_DEFINE(cmdname, cmdstr) \</span><br><span> static int get_##cmdname(struct ctrl_cmd *cmd, void *data); \</span><br><span> static int set_##cmdname(struct ctrl_cmd *cmd, void *data); \</span><br><span> static int verify_##cmdname(struct ctrl_cmd *cmd, const char *value, void *data); \</span><br><span> CTRL_CMD_DEFINE_STRUCT(cmdname, cmdstr, verify_##cmdname)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Define a read-only attribute. Declares get, implements set+verify</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related functions/structures</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL */</span><br><span> #define CTRL_CMD_DEFINE_RO(cmdname, cmdstr) \</span><br><span> static int get_##cmdname(struct ctrl_cmd *cmd, void *data);               \</span><br><span> static int set_##cmdname(struct ctrl_cmd *cmd, void *data) \</span><br><span>@@ -200,6 +266,9 @@</span><br><span> }                                                                    \</span><br><span> CTRL_CMD_DEFINE_STRUCT(cmdname, cmdstr, verify_##cmdname)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Define a write-only attribute. Declares set+verify, implements read call-back</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related functions/structures</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL */</span><br><span> #define CTRL_CMD_DEFINE_WO(cmdname, cmdstr)                                      \</span><br><span> static int set_##cmdname(struct ctrl_cmd *cmd, void *data);                        \</span><br><span> static int get_##cmdname(struct ctrl_cmd *cmd, void *data)                 \</span><br><span>@@ -210,7 +279,9 @@</span><br><span> static int verify_##cmdname(struct ctrl_cmd *cmd, const char *val, void *data);      \</span><br><span> CTRL_CMD_DEFINE_STRUCT(cmdname, cmdstr, verify_##cmdname)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Define a write-only attribute without verify. Declares set, implements read+verify</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdname symbol name of the command related functions/structures</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmdstr string name exposed on CTRL */</span><br><span> #define CTRL_CMD_DEFINE_WO_NOVRF(cmdname, cmdstr)                           \</span><br><span> static int set_##cmdname(struct ctrl_cmd *cmd, void *data);                        \</span><br><span> static int get_##cmdname(struct ctrl_cmd *cmd, void *data)                 \</span><br><span>diff --git a/src/ctrl/control_cmd.c b/src/ctrl/control_cmd.c</span><br><span>index fb0cd2b..bff4d17 100644</span><br><span>--- a/src/ctrl/control_cmd.c</span><br><span>+++ b/src/ctrl/control_cmd.c</span><br><span>@@ -89,6 +89,12 @@</span><br><span>  return NULL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Execute a given received command</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] vline vector representing the available/registered commands</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[inout] command parsed received command to be executed</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] node CTRL interface node</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] data opaque data passed to verify(), get() and set() call-backs</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns CTRL_CMD_HANDLED or CTRL_CMD_REPLY;  CTRL_CMD_ERROR on error */</span><br><span> int ctrl_cmd_exec(vector vline, struct ctrl_cmd *command, vector node, void *data)</span><br><span> {</span><br><span>  int ret = CTRL_CMD_ERROR;</span><br><span>@@ -200,6 +206,10 @@</span><br><span>     talloc_free(cmd->command);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Install a given command definition at a given CTRL node.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] node CTRL node at whihc \a cmd is to be installed</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmd command definition to be installed</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 0 on success; negative on error */</span><br><span> int ctrl_cmd_install(enum ctrl_node_type node, struct ctrl_cmd_element *cmd)</span><br><span> {</span><br><span>  vector cmds_vec;</span><br><span>@@ -221,6 +231,10 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Allocate a control command of given \a type.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctx talloc context from which to allocate</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] type command type to set after allocation</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns callee-allocated \ref ctrl_cmd. Caller must talloc_free() it. */</span><br><span> struct ctrl_cmd *ctrl_cmd_create(void *ctx, enum ctrl_type type)</span><br><span> {</span><br><span>     struct ctrl_cmd *cmd;</span><br><span>@@ -233,6 +247,10 @@</span><br><span>         return cmd;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Perform a deepl copy of the given \a cmd, allocating memory from \a ctx.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctx talloc context from which to allocate</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in cmd CTRL command to be copied</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns deep copy of \a cmd on success; NULL on error */</span><br><span> struct ctrl_cmd *ctrl_cmd_cpy(void *ctx, struct ctrl_cmd *cmd)</span><br><span> {</span><br><span>      struct ctrl_cmd *cmd2;</span><br><span>@@ -269,7 +287,10 @@</span><br><span>        return NULL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! Parse CTRL command struct from msgb, return NULL on any error.</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Parse/Decode CTRL from \ref msgb into command struct.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctx talloc context from which to allocate</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] msg message buffer containing command to be decoded</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns callee-allocated decoded CTRL command; NULL on allocation or other failure</span><br><span>  * The caller is responsible to talloc_free() the returned struct pointer. */</span><br><span> struct ctrl_cmd *ctrl_cmd_parse(void *ctx, struct msgb *msg)</span><br><span> {</span><br><span>@@ -290,8 +311,11 @@</span><br><span>       return true;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! Parse CTRL command struct from msgb, return ctrl->type == CTRL_TYPE_ERROR and an error message in</span><br><span style="color: hsl(0, 100%, 40%);">- * ctrl->reply on any error.</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Parse/Decode CTRL from \ref msgb into command struct.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctx talloc context from which to allocate</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] msg message buffer containing command to be decoded</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns callee-allocated decoded CTRL command; NULL on allocation failure,</span><br><span style="color: hsl(120, 100%, 40%);">+ *  ctrl->type == CTRL_TYPE_ERROR and an error message in ctrl->reply on any error.</span><br><span>  * The caller is responsible to talloc_free() the returned struct pointer. */</span><br><span> struct ctrl_cmd *ctrl_cmd_parse2(void *ctx, struct msgb *msg)</span><br><span> {</span><br><span>@@ -466,6 +490,9 @@</span><br><span>       return cmd;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Encode a given CTRL command from its parsed form into a message buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmd decoded/parsed form of to-be-encoded command</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns callee-allocated message buffer containing the encoded \a cmd; NULL on error */</span><br><span> struct msgb *ctrl_cmd_make(struct ctrl_cmd *cmd)</span><br><span> {</span><br><span>    struct msgb *msg;</span><br><span>@@ -556,6 +583,15 @@</span><br><span>     return NULL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Build a deferred control command state and keep it the per-connection list of deferred commands.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  This function is typically called by a ctrl command handler that wishes to defer returning a</span><br><span style="color: hsl(120, 100%, 40%);">+ *  response.  The reutnred state can later be used to check if the deferred command is still alive,</span><br><span style="color: hsl(120, 100%, 40%);">+ *  and to respond to the specific command.  This only works to defer the response to GET and SET.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctx talloc context from whihc to allocate the ctrl_cmd_def</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmd the control command whose response is deferred</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] data opaque, user-defined pointer</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] secs number of seconds until the command times out</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns callee-allocated ctrl_cmd_def */</span><br><span> struct ctrl_cmd_def *</span><br><span> ctrl_cmd_def_make(const void *ctx, struct ctrl_cmd *cmd, void *data, unsigned int secs)</span><br><span> {</span><br><span>@@ -576,6 +612,9 @@</span><br><span>     return cd;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Determine if the given deferred control command is still alive or a zombie.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cd deferred ctrl command state</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 0 is \a cd is still alive; 1 if it's a zombie */</span><br><span> int ctrl_cmd_def_is_zombie(struct ctrl_cmd_def *cd)</span><br><span> {</span><br><span>   /* luckily we're still alive */</span><br><span>@@ -589,6 +628,10 @@</span><br><span>   return 1;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Send the response to a deferred ctrl command.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  The command can only be a resply to a SET or a GET operation.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cd deferred ctrl command state</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 0 if command sent successfully; negative on error */</span><br><span> int ctrl_cmd_def_send(struct ctrl_cmd_def *cd)</span><br><span> {</span><br><span>    struct ctrl_cmd *cmd = cd->cmd;</span><br><span>diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c</span><br><span>index 269b7b9..d3e6fac 100644</span><br><span>--- a/src/ctrl/control_if.c</span><br><span>+++ b/src/ctrl/control_if.c</span><br><span>@@ -75,6 +75,11 @@</span><br><span> };</span><br><span> static LLIST_HEAD(ctrl_lookup_helpers);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Parse ascii-encoded decimal number at vline[i]</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] vline vector containing a tokenized line</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] i index into the vector \a vline</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] num parsed decimal integer number at vline[i]</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 1 on success; 0 in case of error */</span><br><span> int ctrl_parse_get_num(vector vline, int i, long *num)</span><br><span> {</span><br><span>  char *token, *tmp;</span><br><span>@@ -94,7 +99,10 @@</span><br><span>      return 1;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Send command to all  */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Send a CTRL command to all connections.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctrl global control handle</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmd command to send to all connections in \ctrl</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns number of times the command has been sent */</span><br><span> int ctrl_cmd_send_to_all(struct ctrl_handle *ctrl, struct ctrl_cmd *cmd)</span><br><span> {</span><br><span>     struct ctrl_connection *ccon;</span><br><span>@@ -109,6 +117,10 @@</span><br><span>         return ret;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Encode a CTRL command and append it to the given write queue</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[inout] queue write queue to which encoded \a cmd shall be appended</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmd decoded command representation</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 0 in case of success; negative on error */</span><br><span> int ctrl_cmd_send(struct osmo_wqueue *queue, struct ctrl_cmd *cmd)</span><br><span> {</span><br><span>         int ret;</span><br><span>@@ -152,6 +164,9 @@</span><br><span>       return r;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Copy given \a cmd and convert copy to CTRL_TYPE_TRAP.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] cmd command to be copied</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns pointer to newly-allocated copy of type TRAP. Allocated as sibling of \a cmd */</span><br><span> struct ctrl_cmd *ctrl_cmd_trap(struct ctrl_cmd *cmd)</span><br><span> {</span><br><span>    struct ctrl_cmd *trap;</span><br><span>@@ -361,6 +376,11 @@</span><br><span>        return -EBADF;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Handle a received CTRL command contained in a \ref msgb.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ctrl CTRL interface handle</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] ccon CTRL connection through which the command was received</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] msg message buffer containing CTRL command including IPA+IPA_EXT headers</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 0 on success; negative on error */</span><br><span> int ctrl_handle_msg(struct ctrl_handle *ctrl, struct ctrl_connection *ccon, struct msgb *msg)</span><br><span> {</span><br><span>         struct ctrl_cmd *cmd;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9332">change 9332</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/9332"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I8dc2f24d4bf557ff7bb0f2f46881f9f8d9d7f86f </div>
<div style="display:none"> Gerrit-Change-Number: 9332 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>