Commit 5f3cba022a184dcd2df3df174e49c6ba1566ad2c

Authored by David Mayerich
0 parents

initial public commit

.gitignore 0 → 100644
  1 +++ a/.gitignore
  1 +html/*
  2 +latex/*
0 \ No newline at end of file 3 \ No newline at end of file
.gitmodules 0 → 100644
  1 +++ a/.gitmodules
  1 +[submodule "CImg"]
  2 + path = CImg
  3 + url = http://git.code.sf.net/p/cimg/source
  4 +[submodule "stimlib"]
  5 + path = stimlib
  6 + url = git@git.stim.ee.uh.edu:codebase/stimlib.git
CMakeLists.txt 0 → 100644
  1 +++ a/CMakeLists.txt
  1 +#Specify the version being used aswell as the language
  2 +cmake_minimum_required(VERSION 3.12)
  3 +
  4 +#Name your project here
  5 +project(siproc)
  6 +
  7 +#set the module directory
  8 +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
  9 +
  10 +#default to release mode
  11 +if(NOT CMAKE_BUILD_TYPE)
  12 + set(CMAKE_BUILD_TYPE Release)
  13 +endif(NOT CMAKE_BUILD_TYPE)
  14 +
  15 +#build the executable in the binary directory on MS Visual Studio
  16 +if ( MSVC )
  17 + SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
  18 + SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
  19 + SET( LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
  20 + SET( LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
  21 + add_definitions(-D_CRT_SECURE_NO_WARNINGS)
  22 + add_definitions(-D_SCL_SECURE_NO_WARNINGS)
  23 +endif ( MSVC )
  24 +#MAYBE REMOVE-----------------
  25 +#set C++11 flags if using GCC
  26 +if( CMAKE_COMPILER_IS_GNUCC )
  27 + SET( CMAKE_CXX_FLAGS "-std=c++11")
  28 + SET( CUDA_NVCC_FLAGS "-std=c++11")
  29 +endif( CMAKE_COMPILER_IS_GNUCC )
  30 +#-----------------------------
  31 +
  32 +#find packages-----------------------------------
  33 +#find the pthreads package
  34 +find_package(Threads)
  35 +
  36 +#find the X11 package
  37 +find_package(X11)
  38 +
  39 +#find the STIM library
  40 +find_package(STIM REQUIRED)
  41 +
  42 +#find CUDA, mostly for LA stuff using cuBLAS
  43 +find_package(CUDA REQUIRED)
  44 +
  45 +#find Boost for Unix-based file lists
  46 +if( CMAKE_COMPILER_IS_GNUCC )
  47 + find_package(Boost COMPONENTS filesystem system)
  48 + if(Boost_FOUND)
  49 + include_directories(${Boost_INCLUDE_DIR})
  50 + add_definitions(-DBOOST_PRECOMPILED)
  51 + else()
  52 + message(FATAL_ERROR "HSIproc requires Boost::filesystem and Boost::system when using GCC")
  53 + endif()
  54 +else()
  55 + find_package(Boost)
  56 +endif()
  57 +
  58 +#find the GLUT library for visualization
  59 +find_package(OpenGL REQUIRED)
  60 +find_package(GLUT REQUIRED)
  61 +if(WIN32)
  62 + find_package(GLEW REQUIRED)
  63 + include_directories(${GLEW_INCLUDE_DIR})
  64 +endif(WIN32)
  65 +
  66 +#find LAPACK and supporting link_libraries
  67 +find_package(LAPACKE REQUIRED)
  68 +#if(MSVC)
  69 +# message("Warning: VS2015 made a change to printf and scanf functions that requires linking to legacy_stdio_definitions.lib")
  70 +#endif()
  71 +
  72 +#include include directories
  73 +include_directories(${CUDA_INCLUDE_DIRS}
  74 + ${LAPACKE_INCLUDE_DIR}
  75 + ${STIM_INCLUDE_DIRS}
  76 + ${OpenGL_INCLUDE_DIRS}
  77 + ${GLUT_INCLUDE_DIR}
  78 + "${CMAKE_SOURCE_DIR}/src"
  79 +)
  80 +
  81 +#Assign source files to the appropriate variables to easily associate them with executables
  82 +file(GLOB HSIGLOBAL_SRC "${CMAKE_SOURCE_DIR}/src/*.cpp")
  83 +file(GLOB HSIPROC_SRC "${CMAKE_SOURCE_DIR}/src/proc/*.cpp")
  84 +file(GLOB STIM_CU "${STIM_INCLUDE_DIRS}/stim/envi/*.cu")
  85 +file(GLOB HSIVIEW_SRC "${CMAKE_SOURCE_DIR}/src/view/*.cpp")
  86 +file(GLOB CARY_FTIR_SRC "${CMAKE_SOURCE_DIR}/src/cary-ftir/*.cpp")
  87 +file(GLOB SPERO_SRC "${CMAKE_SOURCE_DIR}/src/spero/*.cpp")
  88 +file(GLOB PROGRESS_SRC "${CMAKE_SOURCE_DIR}/src/progress_t.cpp")
  89 +
  90 +#create the PROC executable----------------------------------------------
  91 +add_executable(siproc
  92 + ${HSIPROC_SRC}
  93 + ${HSIGLOBAL_SRC}
  94 +)
  95 +
  96 +target_link_libraries(siproc ${CUDA_LIBRARIES}
  97 + ${CUDA_CUBLAS_LIBRARIES}
  98 + ${CUDA_CUFFT_LIBRARIES}
  99 + ${LAPACKE_LIBRARIES}
  100 + ${CMAKE_THREAD_LIBS_INIT}
  101 + ${X11_LIBRARIES}
  102 +)
  103 +
  104 +#create the VIEW executable----------------------------------------------
  105 +add_executable(siview
  106 + ${HSIVIEW_SRC}
  107 +)
  108 +target_link_libraries(siview
  109 + ${CMAKE_THREAD_LIBS_INIT}
  110 + ${X11_LIBRARIES}
  111 + ${OPENGL_gl_LIBRARY}
  112 + ${OPENGL_glu_LIBRARY}
  113 + ${GLUT_LIBRARIES}
  114 +)
  115 +if(WIN32)
  116 + target_link_libraries(siview ${GLEW_GLEW_LIBRARY})
  117 +endif(WIN32)
  118 +
  119 +#create instrument-specific subroutine executables
  120 +add_executable(cary-ftir
  121 + ${CARY_FTIR_SRC}
  122 + ${PROGRESS_SRC}
  123 +)
  124 +target_link_libraries(cary-ftir
  125 + ${CUDA_LIBRARIES}
  126 + ${CUDA_CUBLAS_LIBRARIES}
  127 + ${CUDA_CUFFT_LIBRARIES}
  128 +)
  129 +
  130 +#create the Agilent system-specific subroutine executable
  131 +add_executable(spero
  132 + ${SPERO_SRC}
  133 + ${PROGRESS_SRC}
  134 +)
  135 +target_link_libraries(spero
  136 + ${CUDA_LIBRARIES}
  137 + ${CUDA_CUBLAS_LIBRARIES}
  138 + ${CUDA_CUFFT_LIBRARIES}
  139 +)
  140 +
  141 +#if Boost is found, set an environment variable to use with preprocessor directives
  142 +if(Boost_FILESYSTEM_FOUND)
  143 + target_link_libraries(siproc ${Boost_FILESYSTEM_LIBRARIES}
  144 + ${Boost_SYSTEM_LIBRARY}
  145 + )
  146 + target_link_libraries(siview
  147 + ${Boost_FILESYSTEM_LIBRARIES}
  148 + ${Boost_SYSTEM_LIBRARY}
  149 + )
  150 + target_link_libraries(spero
  151 + ${Boost_FILESYSTEM_LIBRARIES}
  152 + ${Boost_SYSTEM_LIBRARY}
  153 + )
  154 +
  155 + target_link_libraries(cary-ftir
  156 + ${Boost_FILESYSTEM_LIBRARIES}
  157 + ${Boost_SYSTEM_LIBRARY}
  158 + )
  159 +endif(Boost_FILESYSTEM_FOUND)
  160 +
  161 +
Doxyfile 0 → 100644
  1 +++ a/Doxyfile
  1 +# Doxyfile 1.8.9.1
  2 +
  3 +# This file describes the settings to be used by the documentation system
  4 +# doxygen (www.doxygen.org) for a project.
  5 +#
  6 +# All text after a double hash (##) is considered a comment and is placed in
  7 +# front of the TAG it is preceding.
  8 +#
  9 +# All text after a single hash (#) is considered a comment and will be ignored.
  10 +# The format is:
  11 +# TAG = value [value, ...]
  12 +# For lists, items can also be appended using:
  13 +# TAG += value [value, ...]
  14 +# Values that contain spaces should be placed between quotes (\" \").
  15 +
  16 +#---------------------------------------------------------------------------
  17 +# Project related configuration options
  18 +#---------------------------------------------------------------------------
  19 +
  20 +# This tag specifies the encoding used for all characters in the config file
  21 +# that follow. The default is UTF-8 which is also the encoding used for all text
  22 +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
  23 +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
  24 +# for the list of possible encodings.
  25 +# The default value is: UTF-8.
  26 +
  27 +DOXYFILE_ENCODING = UTF-8
  28 +
  29 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
  30 +# double-quotes, unless you are using Doxywizard) that should identify the
  31 +# project for which the documentation is generated. This name is used in the
  32 +# title of most generated pages and in a few other places.
  33 +# The default value is: My Project.
  34 +
  35 +PROJECT_NAME = "stimlab"
  36 +
  37 +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
  38 +# could be handy for archiving the generated documentation or if some version
  39 +# control system is used.
  40 +
  41 +PROJECT_NUMBER =
  42 +
  43 +# Using the PROJECT_BRIEF tag one can provide an optional one line description
  44 +# for a project that appears at the top of each page and should give viewer a
  45 +# quick idea about the purpose of the project. Keep the description short.
  46 +
  47 +PROJECT_BRIEF =
  48 +
  49 +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
  50 +# in the documentation. The maximum height of the logo should not exceed 55
  51 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
  52 +# the logo to the output directory.
  53 +
  54 +PROJECT_LOGO =
  55 +
  56 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
  57 +# into which the generated documentation will be written. If a relative path is
  58 +# entered, it will be relative to the location where doxygen was started. If
  59 +# left blank the current directory will be used.
  60 +
  61 +OUTPUT_DIRECTORY =
  62 +
  63 +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
  64 +# directories (in 2 levels) under the output directory of each output format and
  65 +# will distribute the generated files over these directories. Enabling this
  66 +# option can be useful when feeding doxygen a huge amount of source files, where
  67 +# putting all generated files in the same directory would otherwise causes
  68 +# performance problems for the file system.
  69 +# The default value is: NO.
  70 +
  71 +CREATE_SUBDIRS = NO
  72 +
  73 +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
  74 +# characters to appear in the names of generated files. If set to NO, non-ASCII
  75 +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
  76 +# U+3044.
  77 +# The default value is: NO.
  78 +
  79 +ALLOW_UNICODE_NAMES = NO
  80 +
  81 +# The OUTPUT_LANGUAGE tag is used to specify the language in which all
  82 +# documentation generated by doxygen is written. Doxygen will use this
  83 +# information to generate all constant output in the proper language.
  84 +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
  85 +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
  86 +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
  87 +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
  88 +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
  89 +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
  90 +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
  91 +# Ukrainian and Vietnamese.
  92 +# The default value is: English.
  93 +
  94 +OUTPUT_LANGUAGE = English
  95 +
  96 +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
  97 +# descriptions after the members that are listed in the file and class
  98 +# documentation (similar to Javadoc). Set to NO to disable this.
  99 +# The default value is: YES.
  100 +
  101 +BRIEF_MEMBER_DESC = YES
  102 +
  103 +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
  104 +# description of a member or function before the detailed description
  105 +#
  106 +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
  107 +# brief descriptions will be completely suppressed.
  108 +# The default value is: YES.
  109 +
  110 +REPEAT_BRIEF = YES
  111 +
  112 +# This tag implements a quasi-intelligent brief description abbreviator that is
  113 +# used to form the text in various listings. Each string in this list, if found
  114 +# as the leading text of the brief description, will be stripped from the text
  115 +# and the result, after processing the whole list, is used as the annotated
  116 +# text. Otherwise, the brief description is used as-is. If left blank, the
  117 +# following values are used ($name is automatically replaced with the name of
  118 +# the entity):The $name class, The $name widget, The $name file, is, provides,
  119 +# specifies, contains, represents, a, an and the.
  120 +
  121 +ABBREVIATE_BRIEF =
  122 +
  123 +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
  124 +# doxygen will generate a detailed section even if there is only a brief
  125 +# description.
  126 +# The default value is: NO.
  127 +
  128 +ALWAYS_DETAILED_SEC = NO
  129 +
  130 +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
  131 +# inherited members of a class in the documentation of that class as if those
  132 +# members were ordinary class members. Constructors, destructors and assignment
  133 +# operators of the base classes will not be shown.
  134 +# The default value is: NO.
  135 +
  136 +INLINE_INHERITED_MEMB = NO
  137 +
  138 +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
  139 +# before files name in the file list and in the header files. If set to NO the
  140 +# shortest path that makes the file name unique will be used
  141 +# The default value is: YES.
  142 +
  143 +FULL_PATH_NAMES = YES
  144 +
  145 +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
  146 +# Stripping is only done if one of the specified strings matches the left-hand
  147 +# part of the path. The tag can be used to show relative paths in the file list.
  148 +# If left blank the directory from which doxygen is run is used as the path to
  149 +# strip.
  150 +#
  151 +# Note that you can specify absolute paths here, but also relative paths, which
  152 +# will be relative from the directory where doxygen is started.
  153 +# This tag requires that the tag FULL_PATH_NAMES is set to YES.
  154 +
  155 +STRIP_FROM_PATH =
  156 +
  157 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
  158 +# path mentioned in the documentation of a class, which tells the reader which
  159 +# header file to include in order to use a class. If left blank only the name of
  160 +# the header file containing the class definition is used. Otherwise one should
  161 +# specify the list of include paths that are normally passed to the compiler
  162 +# using the -I flag.
  163 +
  164 +STRIP_FROM_INC_PATH =
  165 +
  166 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
  167 +# less readable) file names. This can be useful is your file systems doesn't
  168 +# support long names like on DOS, Mac, or CD-ROM.
  169 +# The default value is: NO.
  170 +
  171 +SHORT_NAMES = NO
  172 +
  173 +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
  174 +# first line (until the first dot) of a Javadoc-style comment as the brief
  175 +# description. If set to NO, the Javadoc-style will behave just like regular Qt-
  176 +# style comments (thus requiring an explicit @brief command for a brief
  177 +# description.)
  178 +# The default value is: NO.
  179 +
  180 +JAVADOC_AUTOBRIEF = NO
  181 +
  182 +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
  183 +# line (until the first dot) of a Qt-style comment as the brief description. If
  184 +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
  185 +# requiring an explicit \brief command for a brief description.)
  186 +# The default value is: NO.
  187 +
  188 +QT_AUTOBRIEF = NO
  189 +
  190 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
  191 +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
  192 +# a brief description. This used to be the default behavior. The new default is
  193 +# to treat a multi-line C++ comment block as a detailed description. Set this
  194 +# tag to YES if you prefer the old behavior instead.
  195 +#
  196 +# Note that setting this tag to YES also means that rational rose comments are
  197 +# not recognized any more.
  198 +# The default value is: NO.
  199 +
  200 +MULTILINE_CPP_IS_BRIEF = NO
  201 +
  202 +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
  203 +# documentation from any documented member that it re-implements.
  204 +# The default value is: YES.
  205 +
  206 +INHERIT_DOCS = YES
  207 +
  208 +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
  209 +# page for each member. If set to NO, the documentation of a member will be part
  210 +# of the file/class/namespace that contains it.
  211 +# The default value is: NO.
  212 +
  213 +SEPARATE_MEMBER_PAGES = NO
  214 +
  215 +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
  216 +# uses this value to replace tabs by spaces in code fragments.
  217 +# Minimum value: 1, maximum value: 16, default value: 4.
  218 +
  219 +TAB_SIZE = 4
  220 +
  221 +# This tag can be used to specify a number of aliases that act as commands in
  222 +# the documentation. An alias has the form:
  223 +# name=value
  224 +# For example adding
  225 +# "sideeffect=@par Side Effects:\n"
  226 +# will allow you to put the command \sideeffect (or @sideeffect) in the
  227 +# documentation, which will result in a user-defined paragraph with heading
  228 +# "Side Effects:". You can put \n's in the value part of an alias to insert
  229 +# newlines.
  230 +
  231 +ALIASES =
  232 +
  233 +# This tag can be used to specify a number of word-keyword mappings (TCL only).
  234 +# A mapping has the form "name=value". For example adding "class=itcl::class"
  235 +# will allow you to use the command class in the itcl::class meaning.
  236 +
  237 +TCL_SUBST =
  238 +
  239 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
  240 +# only. Doxygen will then generate output that is more tailored for C. For
  241 +# instance, some of the names that are used will be different. The list of all
  242 +# members will be omitted, etc.
  243 +# The default value is: NO.
  244 +
  245 +OPTIMIZE_OUTPUT_FOR_C = NO
  246 +
  247 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
  248 +# Python sources only. Doxygen will then generate output that is more tailored
  249 +# for that language. For instance, namespaces will be presented as packages,
  250 +# qualified scopes will look different, etc.
  251 +# The default value is: NO.
  252 +
  253 +OPTIMIZE_OUTPUT_JAVA = NO
  254 +
  255 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
  256 +# sources. Doxygen will then generate output that is tailored for Fortran.
  257 +# The default value is: NO.
  258 +
  259 +OPTIMIZE_FOR_FORTRAN = NO
  260 +
  261 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
  262 +# sources. Doxygen will then generate output that is tailored for VHDL.
  263 +# The default value is: NO.
  264 +
  265 +OPTIMIZE_OUTPUT_VHDL = NO
  266 +
  267 +# Doxygen selects the parser to use depending on the extension of the files it
  268 +# parses. With this tag you can assign which parser to use for a given
  269 +# extension. Doxygen has a built-in mapping, but you can override or extend it
  270 +# using this tag. The format is ext=language, where ext is a file extension, and
  271 +# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
  272 +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
  273 +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
  274 +# Fortran. In the later case the parser tries to guess whether the code is fixed
  275 +# or free formatted code, this is the default for Fortran type files), VHDL. For
  276 +# instance to make doxygen treat .inc files as Fortran files (default is PHP),
  277 +# and .f files as C (default is Fortran), use: inc=Fortran f=C.
  278 +#
  279 +# Note: For files without extension you can use no_extension as a placeholder.
  280 +#
  281 +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
  282 +# the files are not read by doxygen.
  283 +
  284 +EXTENSION_MAPPING =
  285 +
  286 +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
  287 +# according to the Markdown format, which allows for more readable
  288 +# documentation. See http://daringfireball.net/projects/markdown/ for details.
  289 +# The output of markdown processing is further processed by doxygen, so you can
  290 +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
  291 +# case of backward compatibilities issues.
  292 +# The default value is: YES.
  293 +
  294 +MARKDOWN_SUPPORT = YES
  295 +
  296 +# When enabled doxygen tries to link words that correspond to documented
  297 +# classes, or namespaces to their corresponding documentation. Such a link can
  298 +# be prevented in individual cases by putting a % sign in front of the word or
  299 +# globally by setting AUTOLINK_SUPPORT to NO.
  300 +# The default value is: YES.
  301 +
  302 +AUTOLINK_SUPPORT = YES
  303 +
  304 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
  305 +# to include (a tag file for) the STL sources as input, then you should set this
  306 +# tag to YES in order to let doxygen match functions declarations and
  307 +# definitions whose arguments contain STL classes (e.g. func(std::string);
  308 +# versus func(std::string) {}). This also make the inheritance and collaboration
  309 +# diagrams that involve STL classes more complete and accurate.
  310 +# The default value is: NO.
  311 +
  312 +BUILTIN_STL_SUPPORT = NO
  313 +
  314 +# If you use Microsoft's C++/CLI language, you should set this option to YES to
  315 +# enable parsing support.
  316 +# The default value is: NO.
  317 +
  318 +CPP_CLI_SUPPORT = NO
  319 +
  320 +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
  321 +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
  322 +# will parse them like normal C++ but will assume all classes use public instead
  323 +# of private inheritance when no explicit protection keyword is present.
  324 +# The default value is: NO.
  325 +
  326 +SIP_SUPPORT = NO
  327 +
  328 +# For Microsoft's IDL there are propget and propput attributes to indicate
  329 +# getter and setter methods for a property. Setting this option to YES will make
  330 +# doxygen to replace the get and set methods by a property in the documentation.
  331 +# This will only work if the methods are indeed getting or setting a simple
  332 +# type. If this is not the case, or you want to show the methods anyway, you
  333 +# should set this option to NO.
  334 +# The default value is: YES.
  335 +
  336 +IDL_PROPERTY_SUPPORT = YES
  337 +
  338 +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
  339 +# tag is set to YES then doxygen will reuse the documentation of the first
  340 +# member in the group (if any) for the other members of the group. By default
  341 +# all members of a group must be documented explicitly.
  342 +# The default value is: NO.
  343 +
  344 +DISTRIBUTE_GROUP_DOC = NO
  345 +
  346 +# Set the SUBGROUPING tag to YES to allow class member groups of the same type
  347 +# (for instance a group of public functions) to be put as a subgroup of that
  348 +# type (e.g. under the Public Functions section). Set it to NO to prevent
  349 +# subgrouping. Alternatively, this can be done per class using the
  350 +# \nosubgrouping command.
  351 +# The default value is: YES.
  352 +
  353 +SUBGROUPING = YES
  354 +
  355 +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
  356 +# are shown inside the group in which they are included (e.g. using \ingroup)
  357 +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
  358 +# and RTF).
  359 +#
  360 +# Note that this feature does not work in combination with
  361 +# SEPARATE_MEMBER_PAGES.
  362 +# The default value is: NO.
  363 +
  364 +INLINE_GROUPED_CLASSES = NO
  365 +
  366 +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
  367 +# with only public data fields or simple typedef fields will be shown inline in
  368 +# the documentation of the scope in which they are defined (i.e. file,
  369 +# namespace, or group documentation), provided this scope is documented. If set
  370 +# to NO, structs, classes, and unions are shown on a separate page (for HTML and
  371 +# Man pages) or section (for LaTeX and RTF).
  372 +# The default value is: NO.
  373 +
  374 +INLINE_SIMPLE_STRUCTS = NO
  375 +
  376 +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
  377 +# enum is documented as struct, union, or enum with the name of the typedef. So
  378 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
  379 +# with name TypeT. When disabled the typedef will appear as a member of a file,
  380 +# namespace, or class. And the struct will be named TypeS. This can typically be
  381 +# useful for C code in case the coding convention dictates that all compound
  382 +# types are typedef'ed and only the typedef is referenced, never the tag name.
  383 +# The default value is: NO.
  384 +
  385 +TYPEDEF_HIDES_STRUCT = NO
  386 +
  387 +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
  388 +# cache is used to resolve symbols given their name and scope. Since this can be
  389 +# an expensive process and often the same symbol appears multiple times in the
  390 +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
  391 +# doxygen will become slower. If the cache is too large, memory is wasted. The
  392 +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
  393 +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
  394 +# symbols. At the end of a run doxygen will report the cache usage and suggest
  395 +# the optimal cache size from a speed point of view.
  396 +# Minimum value: 0, maximum value: 9, default value: 0.
  397 +
  398 +LOOKUP_CACHE_SIZE = 0
  399 +
  400 +#---------------------------------------------------------------------------
  401 +# Build related configuration options
  402 +#---------------------------------------------------------------------------
  403 +
  404 +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
  405 +# documentation are documented, even if no documentation was available. Private
  406 +# class members and static file members will be hidden unless the
  407 +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
  408 +# Note: This will also disable the warnings about undocumented members that are
  409 +# normally produced when WARNINGS is set to YES.
  410 +# The default value is: NO.
  411 +
  412 +EXTRACT_ALL = NO
  413 +
  414 +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
  415 +# be included in the documentation.
  416 +# The default value is: NO.
  417 +
  418 +EXTRACT_PRIVATE = NO
  419 +
  420 +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
  421 +# scope will be included in the documentation.
  422 +# The default value is: NO.
  423 +
  424 +EXTRACT_PACKAGE = NO
  425 +
  426 +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
  427 +# included in the documentation.
  428 +# The default value is: NO.
  429 +
  430 +EXTRACT_STATIC = NO
  431 +
  432 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
  433 +# locally in source files will be included in the documentation. If set to NO,
  434 +# only classes defined in header files are included. Does not have any effect
  435 +# for Java sources.
  436 +# The default value is: YES.
  437 +
  438 +EXTRACT_LOCAL_CLASSES = YES
  439 +
  440 +# This flag is only useful for Objective-C code. If set to YES, local methods,
  441 +# which are defined in the implementation section but not in the interface are
  442 +# included in the documentation. If set to NO, only methods in the interface are
  443 +# included.
  444 +# The default value is: NO.
  445 +
  446 +EXTRACT_LOCAL_METHODS = NO
  447 +
  448 +# If this flag is set to YES, the members of anonymous namespaces will be
  449 +# extracted and appear in the documentation as a namespace called
  450 +# 'anonymous_namespace{file}', where file will be replaced with the base name of
  451 +# the file that contains the anonymous namespace. By default anonymous namespace
  452 +# are hidden.
  453 +# The default value is: NO.
  454 +
  455 +EXTRACT_ANON_NSPACES = NO
  456 +
  457 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
  458 +# undocumented members inside documented classes or files. If set to NO these
  459 +# members will be included in the various overviews, but no documentation
  460 +# section is generated. This option has no effect if EXTRACT_ALL is enabled.
  461 +# The default value is: NO.
  462 +
  463 +HIDE_UNDOC_MEMBERS = NO
  464 +
  465 +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
  466 +# undocumented classes that are normally visible in the class hierarchy. If set
  467 +# to NO, these classes will be included in the various overviews. This option
  468 +# has no effect if EXTRACT_ALL is enabled.
  469 +# The default value is: NO.
  470 +
  471 +HIDE_UNDOC_CLASSES = NO
  472 +
  473 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
  474 +# (class|struct|union) declarations. If set to NO, these declarations will be
  475 +# included in the documentation.
  476 +# The default value is: NO.
  477 +
  478 +HIDE_FRIEND_COMPOUNDS = NO
  479 +
  480 +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
  481 +# documentation blocks found inside the body of a function. If set to NO, these
  482 +# blocks will be appended to the function's detailed documentation block.
  483 +# The default value is: NO.
  484 +
  485 +HIDE_IN_BODY_DOCS = NO
  486 +
  487 +# The INTERNAL_DOCS tag determines if documentation that is typed after a
  488 +# \internal command is included. If the tag is set to NO then the documentation
  489 +# will be excluded. Set it to YES to include the internal documentation.
  490 +# The default value is: NO.
  491 +
  492 +INTERNAL_DOCS = NO
  493 +
  494 +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
  495 +# names in lower-case letters. If set to YES, upper-case letters are also
  496 +# allowed. This is useful if you have classes or files whose names only differ
  497 +# in case and if your file system supports case sensitive file names. Windows
  498 +# and Mac users are advised to set this option to NO.
  499 +# The default value is: system dependent.
  500 +
  501 +CASE_SENSE_NAMES = NO
  502 +
  503 +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
  504 +# their full class and namespace scopes in the documentation. If set to YES, the
  505 +# scope will be hidden.
  506 +# The default value is: NO.
  507 +
  508 +HIDE_SCOPE_NAMES = NO
  509 +
  510 +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
  511 +# append additional text to a page's title, such as Class Reference. If set to
  512 +# YES the compound reference will be hidden.
  513 +# The default value is: NO.
  514 +
  515 +HIDE_COMPOUND_REFERENCE= NO
  516 +
  517 +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
  518 +# the files that are included by a file in the documentation of that file.
  519 +# The default value is: YES.
  520 +
  521 +SHOW_INCLUDE_FILES = YES
  522 +
  523 +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
  524 +# grouped member an include statement to the documentation, telling the reader
  525 +# which file to include in order to use the member.
  526 +# The default value is: NO.
  527 +
  528 +SHOW_GROUPED_MEMB_INC = NO
  529 +
  530 +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
  531 +# files with double quotes in the documentation rather than with sharp brackets.
  532 +# The default value is: NO.
  533 +
  534 +FORCE_LOCAL_INCLUDES = NO
  535 +
  536 +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
  537 +# documentation for inline members.
  538 +# The default value is: YES.
  539 +
  540 +INLINE_INFO = YES
  541 +
  542 +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
  543 +# (detailed) documentation of file and class members alphabetically by member
  544 +# name. If set to NO, the members will appear in declaration order.
  545 +# The default value is: YES.
  546 +
  547 +SORT_MEMBER_DOCS = YES
  548 +
  549 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
  550 +# descriptions of file, namespace and class members alphabetically by member
  551 +# name. If set to NO, the members will appear in declaration order. Note that
  552 +# this will also influence the order of the classes in the class list.
  553 +# The default value is: NO.
  554 +
  555 +SORT_BRIEF_DOCS = NO
  556 +
  557 +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
  558 +# (brief and detailed) documentation of class members so that constructors and
  559 +# destructors are listed first. If set to NO the constructors will appear in the
  560 +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
  561 +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
  562 +# member documentation.
  563 +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
  564 +# detailed member documentation.
  565 +# The default value is: NO.
  566 +
  567 +SORT_MEMBERS_CTORS_1ST = NO
  568 +
  569 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
  570 +# of group names into alphabetical order. If set to NO the group names will
  571 +# appear in their defined order.
  572 +# The default value is: NO.
  573 +
  574 +SORT_GROUP_NAMES = NO
  575 +
  576 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
  577 +# fully-qualified names, including namespaces. If set to NO, the class list will
  578 +# be sorted only by class name, not including the namespace part.
  579 +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
  580 +# Note: This option applies only to the class list, not to the alphabetical
  581 +# list.
  582 +# The default value is: NO.
  583 +
  584 +SORT_BY_SCOPE_NAME = NO
  585 +
  586 +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
  587 +# type resolution of all parameters of a function it will reject a match between
  588 +# the prototype and the implementation of a member function even if there is
  589 +# only one candidate or it is obvious which candidate to choose by doing a
  590 +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
  591 +# accept a match between prototype and implementation in such cases.
  592 +# The default value is: NO.
  593 +
  594 +STRICT_PROTO_MATCHING = NO
  595 +
  596 +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
  597 +# list. This list is created by putting \todo commands in the documentation.
  598 +# The default value is: YES.
  599 +
  600 +GENERATE_TODOLIST = YES
  601 +
  602 +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
  603 +# list. This list is created by putting \test commands in the documentation.
  604 +# The default value is: YES.
  605 +
  606 +GENERATE_TESTLIST = YES
  607 +
  608 +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
  609 +# list. This list is created by putting \bug commands in the documentation.
  610 +# The default value is: YES.
  611 +
  612 +GENERATE_BUGLIST = YES
  613 +
  614 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
  615 +# the deprecated list. This list is created by putting \deprecated commands in
  616 +# the documentation.
  617 +# The default value is: YES.
  618 +
  619 +GENERATE_DEPRECATEDLIST= YES
  620 +
  621 +# The ENABLED_SECTIONS tag can be used to enable conditional documentation
  622 +# sections, marked by \if <section_label> ... \endif and \cond <section_label>
  623 +# ... \endcond blocks.
  624 +
  625 +ENABLED_SECTIONS =
  626 +
  627 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
  628 +# initial value of a variable or macro / define can have for it to appear in the
  629 +# documentation. If the initializer consists of more lines than specified here
  630 +# it will be hidden. Use a value of 0 to hide initializers completely. The
  631 +# appearance of the value of individual variables and macros / defines can be
  632 +# controlled using \showinitializer or \hideinitializer command in the
  633 +# documentation regardless of this setting.
  634 +# Minimum value: 0, maximum value: 10000, default value: 30.
  635 +
  636 +MAX_INITIALIZER_LINES = 30
  637 +
  638 +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
  639 +# the bottom of the documentation of classes and structs. If set to YES, the
  640 +# list will mention the files that were used to generate the documentation.
  641 +# The default value is: YES.
  642 +
  643 +SHOW_USED_FILES = YES
  644 +
  645 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
  646 +# will remove the Files entry from the Quick Index and from the Folder Tree View
  647 +# (if specified).
  648 +# The default value is: YES.
  649 +
  650 +SHOW_FILES = YES
  651 +
  652 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
  653 +# page. This will remove the Namespaces entry from the Quick Index and from the
  654 +# Folder Tree View (if specified).
  655 +# The default value is: YES.
  656 +
  657 +SHOW_NAMESPACES = YES
  658 +
  659 +# The FILE_VERSION_FILTER tag can be used to specify a program or script that
  660 +# doxygen should invoke to get the current version for each file (typically from
  661 +# the version control system). Doxygen will invoke the program by executing (via
  662 +# popen()) the command command input-file, where command is the value of the
  663 +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
  664 +# by doxygen. Whatever the program writes to standard output is used as the file
  665 +# version. For an example see the documentation.
  666 +
  667 +FILE_VERSION_FILTER =
  668 +
  669 +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
  670 +# by doxygen. The layout file controls the global structure of the generated
  671 +# output files in an output format independent way. To create the layout file
  672 +# that represents doxygen's defaults, run doxygen with the -l option. You can
  673 +# optionally specify a file name after the option, if omitted DoxygenLayout.xml
  674 +# will be used as the name of the layout file.
  675 +#
  676 +# Note that if you run doxygen from a directory containing a file called
  677 +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
  678 +# tag is left empty.
  679 +
  680 +LAYOUT_FILE =
  681 +
  682 +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
  683 +# the reference definitions. This must be a list of .bib files. The .bib
  684 +# extension is automatically appended if omitted. This requires the bibtex tool
  685 +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
  686 +# For LaTeX the style of the bibliography can be controlled using
  687 +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
  688 +# search path. See also \cite for info how to create references.
  689 +
  690 +CITE_BIB_FILES =
  691 +
  692 +#---------------------------------------------------------------------------
  693 +# Configuration options related to warning and progress messages
  694 +#---------------------------------------------------------------------------
  695 +
  696 +# The QUIET tag can be used to turn on/off the messages that are generated to
  697 +# standard output by doxygen. If QUIET is set to YES this implies that the
  698 +# messages are off.
  699 +# The default value is: NO.
  700 +
  701 +QUIET = NO
  702 +
  703 +# The WARNINGS tag can be used to turn on/off the warning messages that are
  704 +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
  705 +# this implies that the warnings are on.
  706 +#
  707 +# Tip: Turn warnings on while writing the documentation.
  708 +# The default value is: YES.
  709 +
  710 +WARNINGS = YES
  711 +
  712 +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
  713 +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
  714 +# will automatically be disabled.
  715 +# The default value is: YES.
  716 +
  717 +WARN_IF_UNDOCUMENTED = YES
  718 +
  719 +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
  720 +# potential errors in the documentation, such as not documenting some parameters
  721 +# in a documented function, or documenting parameters that don't exist or using
  722 +# markup commands wrongly.
  723 +# The default value is: YES.
  724 +
  725 +WARN_IF_DOC_ERROR = YES
  726 +
  727 +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
  728 +# are documented, but have no documentation for their parameters or return
  729 +# value. If set to NO, doxygen will only warn about wrong or incomplete
  730 +# parameter documentation, but not about the absence of documentation.
  731 +# The default value is: NO.
  732 +
  733 +WARN_NO_PARAMDOC = NO
  734 +
  735 +# The WARN_FORMAT tag determines the format of the warning messages that doxygen
  736 +# can produce. The string should contain the $file, $line, and $text tags, which
  737 +# will be replaced by the file and line number from which the warning originated
  738 +# and the warning text. Optionally the format may contain $version, which will
  739 +# be replaced by the version of the file (if it could be obtained via
  740 +# FILE_VERSION_FILTER)
  741 +# The default value is: $file:$line: $text.
  742 +
  743 +WARN_FORMAT = "$file:$line: $text"
  744 +
  745 +# The WARN_LOGFILE tag can be used to specify a file to which warning and error
  746 +# messages should be written. If left blank the output is written to standard
  747 +# error (stderr).
  748 +
  749 +WARN_LOGFILE =
  750 +
  751 +#---------------------------------------------------------------------------
  752 +# Configuration options related to the input files
  753 +#---------------------------------------------------------------------------
  754 +
  755 +# The INPUT tag is used to specify the files and/or directories that contain
  756 +# documented source files. You may enter file names like myfile.cpp or
  757 +# directories like /usr/src/myproject. Separate the files or directories with
  758 +# spaces.
  759 +# Note: If this tag is empty the current directory is searched.
  760 +
  761 +INPUT =
  762 +
  763 +# This tag can be used to specify the character encoding of the source files
  764 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
  765 +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
  766 +# documentation (see: http://www.gnu.org/software/libiconv) for the list of
  767 +# possible encodings.
  768 +# The default value is: UTF-8.
  769 +
  770 +INPUT_ENCODING = UTF-8
  771 +
  772 +# If the value of the INPUT tag contains directories, you can use the
  773 +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
  774 +# *.h) to filter out the source-files in the directories. If left blank the
  775 +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
  776 +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
  777 +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
  778 +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
  779 +# *.qsf, *.as and *.js.
  780 +
  781 +FILE_PATTERNS =
  782 +
  783 +# The RECURSIVE tag can be used to specify whether or not subdirectories should
  784 +# be searched for input files as well.
  785 +# The default value is: NO.
  786 +
  787 +RECURSIVE = YES
  788 +
  789 +# The EXCLUDE tag can be used to specify files and/or directories that should be
  790 +# excluded from the INPUT source files. This way you can easily exclude a
  791 +# subdirectory from a directory tree whose root is specified with the INPUT tag.
  792 +#
  793 +# Note that relative paths are relative to the directory from which doxygen is
  794 +# run.
  795 +
  796 +EXCLUDE =
  797 +
  798 +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
  799 +# directories that are symbolic links (a Unix file system feature) are excluded
  800 +# from the input.
  801 +# The default value is: NO.
  802 +
  803 +EXCLUDE_SYMLINKS = NO
  804 +
  805 +# If the value of the INPUT tag contains directories, you can use the
  806 +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
  807 +# certain files from those directories.
  808 +#
  809 +# Note that the wildcards are matched against the file with absolute path, so to
  810 +# exclude all test directories for example use the pattern */test/*
  811 +
  812 +EXCLUDE_PATTERNS = CImg.h
  813 +
  814 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
  815 +# (namespaces, classes, functions, etc.) that should be excluded from the
  816 +# output. The symbol name can be a fully qualified name, a word, or if the
  817 +# wildcard * is used, a substring. Examples: ANamespace, AClass,
  818 +# AClass::ANamespace, ANamespace::*Test
  819 +#
  820 +# Note that the wildcards are matched against the file with absolute path, so to
  821 +# exclude all test directories use the pattern */test/*
  822 +
  823 +EXCLUDE_SYMBOLS =
  824 +
  825 +# The EXAMPLE_PATH tag can be used to specify one or more files or directories
  826 +# that contain example code fragments that are included (see the \include
  827 +# command).
  828 +
  829 +EXAMPLE_PATH =
  830 +
  831 +# If the value of the EXAMPLE_PATH tag contains directories, you can use the
  832 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
  833 +# *.h) to filter out the source-files in the directories. If left blank all
  834 +# files are included.
  835 +
  836 +EXAMPLE_PATTERNS =
  837 +
  838 +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
  839 +# searched for input files to be used with the \include or \dontinclude commands
  840 +# irrespective of the value of the RECURSIVE tag.
  841 +# The default value is: NO.
  842 +
  843 +EXAMPLE_RECURSIVE = NO
  844 +
  845 +# The IMAGE_PATH tag can be used to specify one or more files or directories
  846 +# that contain images that are to be included in the documentation (see the
  847 +# \image command).
  848 +
  849 +IMAGE_PATH =
  850 +
  851 +# The INPUT_FILTER tag can be used to specify a program that doxygen should
  852 +# invoke to filter for each input file. Doxygen will invoke the filter program
  853 +# by executing (via popen()) the command:
  854 +#
  855 +# <filter> <input-file>
  856 +#
  857 +# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
  858 +# name of an input file. Doxygen will then use the output that the filter
  859 +# program writes to standard output. If FILTER_PATTERNS is specified, this tag
  860 +# will be ignored.
  861 +#
  862 +# Note that the filter must not add or remove lines; it is applied before the
  863 +# code is scanned, but not when the output code is generated. If lines are added
  864 +# or removed, the anchors will not be placed correctly.
  865 +
  866 +INPUT_FILTER =
  867 +
  868 +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
  869 +# basis. Doxygen will compare the file name with each pattern and apply the
  870 +# filter if there is a match. The filters are a list of the form: pattern=filter
  871 +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
  872 +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
  873 +# patterns match the file name, INPUT_FILTER is applied.
  874 +
  875 +FILTER_PATTERNS =
  876 +
  877 +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
  878 +# INPUT_FILTER) will also be used to filter the input files that are used for
  879 +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
  880 +# The default value is: NO.
  881 +
  882 +FILTER_SOURCE_FILES = NO
  883 +
  884 +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
  885 +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
  886 +# it is also possible to disable source filtering for a specific pattern using
  887 +# *.ext= (so without naming a filter).
  888 +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
  889 +
  890 +FILTER_SOURCE_PATTERNS =
  891 +
  892 +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
  893 +# is part of the input, its contents will be placed on the main page
  894 +# (index.html). This can be useful if you have a project on for instance GitHub
  895 +# and want to reuse the introduction page also for the doxygen output.
  896 +
  897 +USE_MDFILE_AS_MAINPAGE =
  898 +
  899 +#---------------------------------------------------------------------------
  900 +# Configuration options related to source browsing
  901 +#---------------------------------------------------------------------------
  902 +
  903 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
  904 +# generated. Documented entities will be cross-referenced with these sources.
  905 +#
  906 +# Note: To get rid of all source code in the generated output, make sure that
  907 +# also VERBATIM_HEADERS is set to NO.
  908 +# The default value is: NO.
  909 +
  910 +SOURCE_BROWSER = NO
  911 +
  912 +# Setting the INLINE_SOURCES tag to YES will include the body of functions,
  913 +# classes and enums directly into the documentation.
  914 +# The default value is: NO.
  915 +
  916 +INLINE_SOURCES = NO
  917 +
  918 +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
  919 +# special comment blocks from generated source code fragments. Normal C, C++ and
  920 +# Fortran comments will always remain visible.
  921 +# The default value is: YES.
  922 +
  923 +STRIP_CODE_COMMENTS = YES
  924 +
  925 +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
  926 +# function all documented functions referencing it will be listed.
  927 +# The default value is: NO.
  928 +
  929 +REFERENCED_BY_RELATION = NO
  930 +
  931 +# If the REFERENCES_RELATION tag is set to YES then for each documented function
  932 +# all documented entities called/used by that function will be listed.
  933 +# The default value is: NO.
  934 +
  935 +REFERENCES_RELATION = NO
  936 +
  937 +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
  938 +# to YES then the hyperlinks from functions in REFERENCES_RELATION and
  939 +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
  940 +# link to the documentation.
  941 +# The default value is: YES.
  942 +
  943 +REFERENCES_LINK_SOURCE = YES
  944 +
  945 +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
  946 +# source code will show a tooltip with additional information such as prototype,
  947 +# brief description and links to the definition and documentation. Since this
  948 +# will make the HTML file larger and loading of large files a bit slower, you
  949 +# can opt to disable this feature.
  950 +# The default value is: YES.
  951 +# This tag requires that the tag SOURCE_BROWSER is set to YES.
  952 +
  953 +SOURCE_TOOLTIPS = YES
  954 +
  955 +# If the USE_HTAGS tag is set to YES then the references to source code will
  956 +# point to the HTML generated by the htags(1) tool instead of doxygen built-in
  957 +# source browser. The htags tool is part of GNU's global source tagging system
  958 +# (see http://www.gnu.org/software/global/global.html). You will need version
  959 +# 4.8.6 or higher.
  960 +#
  961 +# To use it do the following:
  962 +# - Install the latest version of global
  963 +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
  964 +# - Make sure the INPUT points to the root of the source tree
  965 +# - Run doxygen as normal
  966 +#
  967 +# Doxygen will invoke htags (and that will in turn invoke gtags), so these
  968 +# tools must be available from the command line (i.e. in the search path).
  969 +#
  970 +# The result: instead of the source browser generated by doxygen, the links to
  971 +# source code will now point to the output of htags.
  972 +# The default value is: NO.
  973 +# This tag requires that the tag SOURCE_BROWSER is set to YES.
  974 +
  975 +USE_HTAGS = NO
  976 +
  977 +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
  978 +# verbatim copy of the header file for each class for which an include is
  979 +# specified. Set to NO to disable this.
  980 +# See also: Section \class.
  981 +# The default value is: YES.
  982 +
  983 +VERBATIM_HEADERS = YES
  984 +
  985 +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
  986 +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
  987 +# cost of reduced performance. This can be particularly helpful with template
  988 +# rich C++ code for which doxygen's built-in parser lacks the necessary type
  989 +# information.
  990 +# Note: The availability of this option depends on whether or not doxygen was
  991 +# compiled with the --with-libclang option.
  992 +# The default value is: NO.
  993 +
  994 +CLANG_ASSISTED_PARSING = NO
  995 +
  996 +# If clang assisted parsing is enabled you can provide the compiler with command
  997 +# line options that you would normally use when invoking the compiler. Note that
  998 +# the include paths will already be set by doxygen for the files and directories
  999 +# specified with INPUT and INCLUDE_PATH.
  1000 +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
  1001 +
  1002 +CLANG_OPTIONS =
  1003 +
  1004 +#---------------------------------------------------------------------------
  1005 +# Configuration options related to the alphabetical class index
  1006 +#---------------------------------------------------------------------------
  1007 +
  1008 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
  1009 +# compounds will be generated. Enable this if the project contains a lot of
  1010 +# classes, structs, unions or interfaces.
  1011 +# The default value is: YES.
  1012 +
  1013 +ALPHABETICAL_INDEX = YES
  1014 +
  1015 +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
  1016 +# which the alphabetical index list will be split.
  1017 +# Minimum value: 1, maximum value: 20, default value: 5.
  1018 +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
  1019 +
  1020 +COLS_IN_ALPHA_INDEX = 5
  1021 +
  1022 +# In case all classes in a project start with a common prefix, all classes will
  1023 +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
  1024 +# can be used to specify a prefix (or a list of prefixes) that should be ignored
  1025 +# while generating the index headers.
  1026 +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
  1027 +
  1028 +IGNORE_PREFIX =
  1029 +
  1030 +#---------------------------------------------------------------------------
  1031 +# Configuration options related to the HTML output
  1032 +#---------------------------------------------------------------------------
  1033 +
  1034 +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
  1035 +# The default value is: YES.
  1036 +
  1037 +GENERATE_HTML = YES
  1038 +
  1039 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
  1040 +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
  1041 +# it.
  1042 +# The default directory is: html.
  1043 +# This tag requires that the tag GENERATE_HTML is set to YES.
  1044 +
  1045 +HTML_OUTPUT = html
  1046 +
  1047 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
  1048 +# generated HTML page (for example: .htm, .php, .asp).
  1049 +# The default value is: .html.
  1050 +# This tag requires that the tag GENERATE_HTML is set to YES.
  1051 +
  1052 +HTML_FILE_EXTENSION = .html
  1053 +
  1054 +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
  1055 +# each generated HTML page. If the tag is left blank doxygen will generate a
  1056 +# standard header.
  1057 +#
  1058 +# To get valid HTML the header file that includes any scripts and style sheets
  1059 +# that doxygen needs, which is dependent on the configuration options used (e.g.
  1060 +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
  1061 +# default header using
  1062 +# doxygen -w html new_header.html new_footer.html new_stylesheet.css
  1063 +# YourConfigFile
  1064 +# and then modify the file new_header.html. See also section "Doxygen usage"
  1065 +# for information on how to generate the default header that doxygen normally
  1066 +# uses.
  1067 +# Note: The header is subject to change so you typically have to regenerate the
  1068 +# default header when upgrading to a newer version of doxygen. For a description
  1069 +# of the possible markers and block names see the documentation.
  1070 +# This tag requires that the tag GENERATE_HTML is set to YES.
  1071 +
  1072 +HTML_HEADER =
  1073 +
  1074 +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
  1075 +# generated HTML page. If the tag is left blank doxygen will generate a standard