Changeset 1130


Ignore:
Timestamp:
05/15/17 15:00:24 (3 years ago)
Author:
oabramkina
Message:

Two-level server: merging new grid functionalities and changes in the communication protocol (e.g. non-blocking context finalize, registries, oasis).

Tests on curie: test_client, test_complete, nemo (test_xios2_cmip6.exe).

To do: non-structured grid, check reading, possible bug in client/server initialization (?).

Location:
XIOS/dev/dev_olga
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/Doxyfile

    r1054 r1130  
    1 # Doxyfile 1.8.9.1 
     1# Doxyfile 1.7.4 
    22 
    33# This file describes the settings to be used by the documentation system 
    4 # doxygen (www.doxygen.org) for a project. 
     4# doxygen (www.doxygen.org) for a project 
    55# 
    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. 
     6# All text after a hash (#) is considered a comment and will be ignored 
    107# 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 (\" \"). 
     8#       TAG = value [value, ...] 
     9# For lists items can also be appended using: 
     10#       TAG += value [value, ...] 
     11# Values that contain spaces should be placed between quotes (" ") 
    1512 
    1613#--------------------------------------------------------------------------- 
     
    1815#--------------------------------------------------------------------------- 
    1916 
    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. 
     17# This tag specifies the encoding used for all characters in the config file  
     18# that follow. The default is UTF-8 which is also the encoding used for all  
     19# text before the first occurrence of this tag. Doxygen uses libiconv (or the  
     20# iconv built into libc) for the transcoding. See  
     21# http://www.gnu.org/software/libiconv for the list of possible encodings. 
    2622 
    2723DOXYFILE_ENCODING      = UTF-8 
    2824 
    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           = "My Project" 
    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. 
     25# The PROJECT_NAME tag is a single word (or a sequence of words surrounded  
     26# by quotes) that should identify the project. 
     27 
     28PROJECT_NAME           = XIOS 
     29 
     30# The PROJECT_NUMBER tag can be used to enter a project or revision number.  
     31# This could be handy for archiving the generated documentation or  
     32# if some version control system is used. 
     33 
     34PROJECT_NUMBER         = 1.0 
     35 
     36# Using the PROJECT_BRIEF tag one can provide an optional one line description  
     37# for a project that appears at the top of each page and should give viewer  
     38# a quick idea about the purpose of the project. Keep the description short. 
     39 
     40PROJECT_BRIEF          = "Xml I/O Server" 
     41 
     42# With the PROJECT_LOGO tag one can specify an logo or icon that is  
     43# included in the documentation. The maximum height of the logo should not  
     44# exceed 55 pixels and the maximum width should not exceed 200 pixels.  
     45# Doxygen will copy the logo to the output directory. 
     46 
     47PROJECT_LOGO           =  
     48 
     49# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)  
     50# base path where the generated documentation will be put.  
     51# If a relative path is entered, it will be relative to the location  
     52# where doxygen was started. If left blank the current directory will be used. 
     53 
     54OUTPUT_DIRECTORY       = ./doc 
     55 
     56# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create  
     57# 4096 sub-directories (in 2 levels) under the output directory of each output  
     58# format and will distribute the generated files over these directories.  
     59# Enabling this option can be useful when feeding doxygen a huge amount of  
     60# source files, where putting all generated files in the same directory would  
     61# otherwise cause performance problems for the file system. 
    7062 
    7163CREATE_SUBDIRS         = NO 
    7264 
    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. 
     65# The OUTPUT_LANGUAGE tag is used to specify the language in which all  
     66# documentation generated by doxygen is written. Doxygen will use this  
     67# information to generate all constant output in the proper language.  
     68# The default language is English, other supported languages are:  
     69# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,  
     70# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,  
     71# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English  
     72# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,  
     73# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,  
     74# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. 
     75 
     76OUTPUT_LANGUAGE        = French 
     77 
     78# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will  
     79# include brief member descriptions after the members that are listed in  
     80# the file and class documentation (similar to JavaDoc).  
     81# Set to NO to disable this. 
    10082 
    10183BRIEF_MEMBER_DESC      = YES 
    10284 
    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 
     85# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend  
     86# the brief description of a member or function before the detailed description.  
     87# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the  
    10788# brief descriptions will be completely suppressed. 
    108 # The default value is: YES. 
    10989 
    11090REPEAT_BRIEF           = YES 
    11191 
    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 
     92# This tag implements a quasi-intelligent brief description abbreviator  
     93# that is used to form the text in various listings. Each string  
     94# in this list, if found as the leading text of the brief description, will be  
     95# stripped from the text and the result after processing the whole list, is  
     96# used as the annotated text. Otherwise, the brief description is used as-is.  
     97# If left blank, the following values are used ("$name" is automatically  
     98# replaced with the name of the entity): "The $name class" "The $name widget"  
     99# "The $name file" "is" "provides" "specifies" "contains"  
     100# "represents" "a" "an" "the" 
     101 
     102ABBREVIATE_BRIEF       = "The $name class" \ 
     103                         "The $name widget" \ 
     104                         "The $name file" \ 
     105                         is \ 
     106                         provides \ 
     107                         specifies \ 
     108                         contains \ 
     109                         represents \ 
     110                         a \ 
     111                         an \ 
     112                         the 
     113 
     114# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then  
     115# Doxygen will generate a detailed section even if there is only a brief  
    125116# description. 
    126 # The default value is: NO. 
    127117 
    128118ALWAYS_DETAILED_SEC    = NO 
    129119 
    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 
     120# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all  
     121# inherited members of a class in the documentation of that class as if those  
     122# members were ordinary class members. Constructors, destructors and assignment  
    133123# operators of the base classes will not be shown. 
    134 # The default value is: NO. 
    135124 
    136125INLINE_INHERITED_MEMB  = NO 
    137126 
    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. 
     127# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full  
     128# path before files name in the file list and in the header files. If set  
     129# to NO the shortest path that makes the file name unique will be used. 
    142130 
    143131FULL_PATH_NAMES        = YES 
    144132 
    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. 
     133# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag  
     134# can be used to strip a user-defined part of the path. Stripping is  
     135# only done if one of the specified strings matches the left-hand part of  
     136# the path. The tag can be used to show relative paths in the file list.  
     137# If left blank the directory from which doxygen is run is used as the  
     138# path to strip. 
     139 
     140STRIP_FROM_PATH        =  
     141 
     142# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of  
     143# the path mentioned in the documentation of a class, which tells  
     144# the reader which header file to include in order to use a class.  
     145# If left blank only the name of the header file containing the class  
     146# definition is used. Otherwise one should specify the include paths that  
     147# are normally passed to the compiler using the -I flag. 
     148 
     149STRIP_FROM_INC_PATH    =  
     150 
     151# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter  
     152# (but less readable) file names. This can be useful if your file system  
     153# doesn't support long names like on DOS, Mac, or CD-ROM. 
    170154 
    171155SHORT_NAMES            = NO 
    172156 
    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. 
     157# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen  
     158# will interpret the first line (until the first dot) of a JavaDoc-style  
     159# comment as the brief description. If set to NO, the JavaDoc  
     160# comments will behave just like regular Qt-style comments  
     161# (thus requiring an explicit @brief command for a brief description.) 
    179162 
    180163JAVADOC_AUTOBRIEF      = NO 
    181164 
    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. 
     165# If the QT_AUTOBRIEF tag is set to YES then Doxygen will  
     166# interpret the first line (until the first dot) of a Qt-style  
     167# comment as the brief description. If set to NO, the comments  
     168# will behave just like regular Qt-style comments (thus requiring  
     169# an explicit \brief command for a brief description.) 
     170 
     171QT_AUTOBRIEF           = YES 
     172 
     173# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen  
     174# treat a multi-line C++ special comment block (i.e. a block of //! or ///  
     175# comments) as a brief description. This used to be the default behaviour.  
     176# The new default is to treat a multi-line C++ comment block as a detailed  
     177# description. Set this tag to YES if you prefer the old behaviour instead. 
    199178 
    200179MULTILINE_CPP_IS_BRIEF = NO 
    201180 
    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. 
     181# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented  
     182# member inherits the documentation from any documented member that it  
     183# re-implements. 
    205184 
    206185INHERIT_DOCS           = YES 
    207186 
    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. 
     187# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce  
     188# a new page for each member. If set to NO, the documentation of a member will  
     189# be part of the file/class/namespace that contains it. 
    212190 
    213191SEPARATE_MEMBER_PAGES  = NO 
    214192 
    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. 
     193# The TAB_SIZE tag can be used to set the number of spaces in a tab.  
     194# Doxygen uses this value to replace tabs by spaces in code fragments. 
     195 
     196TAB_SIZE               = 8 
     197 
     198# This tag can be used to specify a number of aliases that acts  
     199# as commands in the documentation. An alias has the form "name=value".  
     200# For example adding "sideeffect=\par Side Effects:\n" will allow you to  
     201# put the command \sideeffect (or @sideeffect) in the documentation, which  
     202# will result in a user-defined paragraph with heading "Side Effects:".  
     203# You can put \n's in the value part of an alias to insert newlines. 
     204 
     205ALIASES                =  
     206 
     207# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C  
     208# sources only. Doxygen will then generate output that is more tailored for C.  
     209# For instance, some of the names that are used will be different. The list  
     210# of all members will be omitted, etc. 
    244211 
    245212OPTIMIZE_OUTPUT_FOR_C  = NO 
    246213 
    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. 
     214# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java  
     215# sources only. Doxygen will then generate output that is more tailored for  
     216# Java. For instance, namespaces will be presented as packages, qualified  
     217# scopes will look different, etc. 
    252218 
    253219OPTIMIZE_OUTPUT_JAVA   = NO 
    254220 
    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. 
     221# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran  
     222# sources only. Doxygen will then generate output that is more tailored for  
     223# Fortran. 
    258224 
    259225OPTIMIZE_FOR_FORTRAN   = NO 
    260226 
    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. 
     227# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL  
     228# sources. Doxygen will then generate output that is tailored for  
     229# VHDL. 
    264230 
    265231OPTIMIZE_OUTPUT_VHDL   = NO 
    266232 
    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 
     233# Doxygen selects the parser to use depending on the extension of the files it  
     234# parses. With this tag you can assign which parser to use for a given extension.  
     235# Doxygen has a built-in mapping, but you can override or extend it using this  
     236# tag. The format is ext=language, where ext is a file extension, and language  
     237# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,  
     238# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make  
     239# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C  
     240# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions  
     241# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. 
     242 
     243EXTENSION_MAPPING      =  
     244 
     245# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want  
     246# to include (a tag file for) the STL sources as input, then you should  
     247# set this tag to YES in order to let doxygen match functions declarations and  
     248# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.  
     249# func(std::string) {}). This also makes the inheritance and collaboration  
    309250# 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 
     251 
     252BUILTIN_STL_SUPPORT    = YES 
     253 
     254# If you use Microsoft's C++/CLI language, you should set this option to YES to  
    315255# enable parsing support. 
    316 # The default value is: NO. 
    317256 
    318257CPP_CLI_SUPPORT        = NO 
    319258 
    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. 
     259# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.  
     260# Doxygen will parse them like normal C++ but will assume all classes use public  
     261# instead of private inheritance when no explicit protection keyword is present. 
    325262 
    326263SIP_SUPPORT            = NO 
    327264 
    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. 
     265# For Microsoft's IDL there are propget and propput attributes to indicate getter  
     266# and setter methods for a property. Setting this option to YES (the default)  
     267# will make doxygen replace the get and set methods by a property in the  
     268# documentation. This will only work if the methods are indeed getting or  
     269# setting a simple type. If this is not the case, or you want to show the  
     270# methods anyway, you should set this option to NO. 
    335271 
    336272IDL_PROPERTY_SUPPORT   = YES 
    337273 
    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 
     274# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC  
     275# tag is set to YES, then doxygen will reuse the documentation of the first  
     276# member in the group (if any) for the other members of the group. By default  
    341277# all members of a group must be documented explicitly. 
    342 # The default value is: NO. 
    343278 
    344279DISTRIBUTE_GROUP_DOC   = NO 
    345280 
    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. 
     281# Set the SUBGROUPING tag to YES (the default) to allow class member groups of  
     282# the same type (for instance a group of public functions) to be put as a  
     283# subgroup of that type (e.g. under the Public Functions section). Set it to  
     284# NO to prevent subgrouping. Alternatively, this can be done per class using  
     285# the \nosubgrouping command. 
    352286 
    353287SUBGROUPING            = YES 
    354288 
    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. 
     289# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and  
     290# unions are shown inside the group in which they are included (e.g. using  
     291# @ingroup) instead of on a separate page (for HTML and Man pages) or  
     292# section (for LaTeX and RTF). 
    363293 
    364294INLINE_GROUPED_CLASSES = NO 
    365295 
    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 
     296# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum  
     297# is documented as struct, union, or enum with the name of the typedef. So  
     298# typedef struct TypeS {} TypeT, will appear in the documentation as a struct  
     299# with name TypeT. When disabled the typedef will appear as a member of a file,  
     300# namespace, or class. And the struct will be named TypeS. This can typically  
     301# be useful for C code in case the coding convention dictates that all compound  
    382302# types are typedef'ed and only the typedef is referenced, never the tag name. 
    383 # The default value is: NO. 
    384303 
    385304TYPEDEF_HIDES_STRUCT   = NO 
    386305 
    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 
     306# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to  
     307# determine which symbols to keep in memory and which to flush to disk.  
     308# When the cache is full, less often used symbols will be written to disk.  
     309# For small to medium size projects (<1000 input files) the default value is  
     310# probably good enough. For larger projects a too small cache size can cause  
     311# doxygen to be busy swapping symbols to and from disk most of the time  
     312# causing a significant performance penalty.  
     313# If the system has enough physical memory increasing the cache will improve the  
     314# performance by keeping more symbols in memory. Note that the value works on  
     315# a logarithmic scale so increasing the size by one will roughly double the  
     316# memory usage. The cache size is given by this formula:  
     317# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,  
     318# corresponding to a cache size of 2^16 = 65536 symbols 
     319 
     320SYMBOL_CACHE_SIZE      = 0 
    399321 
    400322#--------------------------------------------------------------------------- 
     
    402324#--------------------------------------------------------------------------- 
    403325 
    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. 
     326# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in  
     327# documentation are documented, even if no documentation was available.  
     328# Private class members and static file members will be hidden unless  
     329# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES 
    411330 
    412331EXTRACT_ALL            = YES 
    413332 
    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. 
     333# If the EXTRACT_PRIVATE tag is set to YES all private members of a class  
     334# will be included in the documentation. 
     335 
     336EXTRACT_PRIVATE        = YES 
     337 
     338# If the EXTRACT_STATIC tag is set to YES all static members of a file  
     339# will be included in the documentation. 
    429340 
    430341EXTRACT_STATIC         = YES 
    431342 
    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. 
     343# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)  
     344# defined locally in source files will be included in the documentation.  
     345# If set to NO only classes defined in header files are included. 
    437346 
    438347EXTRACT_LOCAL_CLASSES  = YES 
    439348 
    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. 
     349# This flag is only useful for Objective-C code. When set to YES local  
     350# methods, which are defined in the implementation section but not in  
     351# the interface are included in the documentation.  
     352# If set to NO (the default) only methods in the interface are included. 
     353 
     354EXTRACT_LOCAL_METHODS  = YES 
     355 
     356# If this flag is set to YES, the members of anonymous namespaces will be  
     357# extracted and appear in the documentation as a namespace called  
     358# 'anonymous_namespace{file}', where file will be replaced with the base  
     359# name of the file that contains the anonymous namespace. By default  
     360# anonymous namespaces are hidden. 
    454361 
    455362EXTRACT_ANON_NSPACES   = NO 
    456363 
    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. 
     364# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all  
     365# undocumented members of documented classes, files or namespaces.  
     366# If set to NO (the default) these members will be included in the  
     367# various overviews, but no documentation section is generated.  
     368# This option has no effect if EXTRACT_ALL is enabled. 
    462369 
    463370HIDE_UNDOC_MEMBERS     = NO 
    464371 
    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. 
     372# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all  
     373# undocumented classes that are normally visible in the class hierarchy.  
     374# If set to NO (the default) these classes will be included in the various  
     375# overviews. This option has no effect if EXTRACT_ALL is enabled. 
    470376 
    471377HIDE_UNDOC_CLASSES     = NO 
    472378 
    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. 
     379# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all  
     380# friend (class|struct|union) declarations.  
     381# If set to NO (the default) these declarations will be included in the  
     382# documentation. 
    477383 
    478384HIDE_FRIEND_COMPOUNDS  = NO 
    479385 
    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. 
     386# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any  
     387# documentation blocks found inside the body of a function.  
     388# If set to NO (the default) these blocks will be appended to the  
     389# function's detailed documentation block. 
    484390 
    485391HIDE_IN_BODY_DOCS      = NO 
    486392 
    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. 
     393# The INTERNAL_DOCS tag determines if documentation  
     394# that is typed after a \internal command is included. If the tag is set  
     395# to NO (the default) then the documentation will be excluded.  
     396# Set it to YES to include the internal documentation. 
    491397 
    492398INTERNAL_DOCS          = NO 
    493399 
    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 
     400# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate  
     401# file names in lower-case letters. If set to YES upper-case letters are also  
     402# allowed. This is useful if you have classes or files whose names only differ  
     403# in case and if your file system supports case sensitive file names. Windows  
    498404# and Mac users are advised to set this option to NO. 
    499 # The default value is: system dependent. 
    500  
    501 CASE_SENSE_NAMES       = YES 
    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. 
     405 
     406CASE_SENSE_NAMES       = NO 
     407 
     408# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen  
     409# will show members with their full class and namespace scopes in the  
     410# documentation. If set to YES the scope will be hidden. 
    507411 
    508412HIDE_SCOPE_NAMES       = NO 
    509413 
    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. 
     414# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen  
     415# will put a list of the files that are included by a file in the documentation  
     416# of that file. 
    520417 
    521418SHOW_INCLUDE_FILES     = YES 
    522419 
    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. 
     420# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen  
     421# will list include files with double quotes in the documentation  
     422# rather than with sharp brackets. 
    533423 
    534424FORCE_LOCAL_INCLUDES   = NO 
    535425 
    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. 
     426# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]  
     427# is inserted in the documentation for inline members. 
    539428 
    540429INLINE_INFO            = YES 
    541430 
    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. 
     431# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen  
     432# will sort the (detailed) documentation of file and class members  
     433# alphabetically by member name. If set to NO the members will appear in  
     434# declaration order. 
    546435 
    547436SORT_MEMBER_DOCS       = YES 
    548437 
    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. 
     438# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the  
     439# brief documentation of file, namespace and class members alphabetically  
     440# by member name. If set to NO (the default) the members will appear in  
     441# declaration order. 
    554442 
    555443SORT_BRIEF_DOCS        = NO 
    556444 
    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. 
     445# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen  
     446# will sort the (brief and detailed) documentation of class members so that  
     447# constructors and destructors are listed first. If set to NO (the default)  
     448# the constructors will appear in the respective orders defined by  
     449# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.  
     450# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO  
     451# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. 
    566452 
    567453SORT_MEMBERS_CTORS_1ST = NO 
    568454 
    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. 
     455# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the  
     456# hierarchy of group names into alphabetical order. If set to NO (the default)  
     457# the group names will appear in their defined order. 
    573458 
    574459SORT_GROUP_NAMES       = NO 
    575460 
    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. 
     461# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be  
     462# sorted by fully-qualified names, including namespaces. If set to  
     463# NO (the default), the class list will be sorted only by class name,  
     464# not including the namespace part.  
     465# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.  
     466# Note: This option applies only to the class list, not to the  
     467# alphabetical list. 
    583468 
    584469SORT_BY_SCOPE_NAME     = NO 
    585470 
    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. 
     471# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to  
     472# do proper type resolution of all parameters of a function it will reject a  
     473# match between the prototype and the implementation of a member function even  
     474# if there is only one candidate or it is obvious which candidate to choose  
     475# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen  
     476# will still accept a match between prototype and implementation in such cases. 
    593477 
    594478STRICT_PROTO_MATCHING  = NO 
    595479 
    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. 
     480# The GENERATE_TODOLIST tag can be used to enable (YES) or  
     481# disable (NO) the todo list. This list is created by putting \todo  
     482# commands in the documentation. 
    599483 
    600484GENERATE_TODOLIST      = YES 
    601485 
    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. 
     486# The GENERATE_TESTLIST tag can be used to enable (YES) or  
     487# disable (NO) the test list. This list is created by putting \test  
     488# commands in the documentation. 
    605489 
    606490GENERATE_TESTLIST      = YES 
    607491 
    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. 
     492# The GENERATE_BUGLIST tag can be used to enable (YES) or  
     493# disable (NO) the bug list. This list is created by putting \bug  
     494# commands in the documentation. 
    611495 
    612496GENERATE_BUGLIST       = YES 
    613497 
    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. 
     498# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or  
     499# disable (NO) the deprecated list. This list is created by putting  
     500# \deprecated commands in the documentation. 
    618501 
    619502GENERATE_DEPRECATEDLIST= YES 
    620503 
    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. 
     504# The ENABLED_SECTIONS tag can be used to enable conditional  
     505# documentation sections, marked by \if sectionname ... \endif. 
     506 
     507ENABLED_SECTIONS       =  
     508 
     509# The MAX_INITIALIZER_LINES tag determines the maximum number of lines  
     510# the initial value of a variable or macro consists of for it to appear in  
     511# the documentation. If the initializer consists of more lines than specified  
     512# here it will be hidden. Use a value of 0 to hide initializers completely.  
     513# The appearance of the initializer of individual variables and macros in the  
     514# documentation can be controlled using \showinitializer or \hideinitializer  
     515# command in the documentation regardless of this setting. 
    635516 
    636517MAX_INITIALIZER_LINES  = 30 
    637518 
    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 
     519# Set the SHOW_USED_FILES tag to NO to disable the list of files generated  
     520# at the bottom of the documentation of classes and structs. If set to YES the  
    640521# list will mention the files that were used to generate the documentation. 
    641 # The default value is: YES. 
    642522 
    643523SHOW_USED_FILES        = YES 
    644524 
    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. 
     525# If the sources in your project are distributed over multiple directories  
     526# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy  
     527# in the documentation. The default is NO. 
     528 
     529SHOW_DIRECTORIES       = YES 
     530 
     531# Set the SHOW_FILES tag to NO to disable the generation of the Files page.  
     532# This will remove the Files entry from the Quick Index and from the  
     533# Folder Tree View (if specified). The default is YES. 
    649534 
    650535SHOW_FILES             = YES 
    651536 
    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. 
     537# Set the SHOW_NAMESPACES tag to NO to disable the generation of the  
     538# Namespaces page.  This will remove the Namespaces entry from the Quick Index  
     539# and from the Folder Tree View (if specified). The default is YES. 
    656540 
    657541SHOW_NAMESPACES        = YES 
    658542 
    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. 
     543# The FILE_VERSION_FILTER tag can be used to specify a program or script that  
     544# doxygen should invoke to get the current version for each file (typically from  
     545# the version control system). Doxygen will invoke the program by executing (via  
     546# popen()) the command <command> <input-file>, where <command> is the value of  
     547# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file  
     548# provided by doxygen. Whatever the program writes to standard output  
     549# is used as the file version. See the manual for examples. 
     550 
     551FILE_VERSION_FILTER    =  
     552 
     553# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed  
     554# by doxygen. The layout file controls the global structure of the generated  
     555# output files in an output format independent way. The create the layout file  
     556# that represents doxygen's defaults, run doxygen with the -l option.  
     557# You can optionally specify a file name after the option, if omitted  
     558# DoxygenLayout.xml will be used as the name of the layout file. 
     559 
     560LAYOUT_FILE            =  
     561 
     562#--------------------------------------------------------------------------- 
     563# configuration options related to warning and progress messages 
     564#--------------------------------------------------------------------------- 
     565 
     566# The QUIET tag can be used to turn on/off the messages that are generated  
     567# by doxygen. Possible values are YES and NO. If left blank NO is used. 
    700568 
    701569QUIET                  = NO 
    702570 
    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. 
     571# The WARNINGS tag can be used to turn on/off the warning messages that are  
     572# generated by doxygen. Possible values are YES and NO. If left blank  
     573# NO is used. 
    709574 
    710575WARNINGS               = YES 
    711576 
    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. 
     577# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings  
     578# for undocumented members. If EXTRACT_ALL is set to YES then this flag will  
     579# automatically be disabled. 
    716580 
    717581WARN_IF_UNDOCUMENTED   = YES 
    718582 
    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. 
     583# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for  
     584# potential errors in the documentation, such as not documenting some  
     585# parameters in a documented function, or documenting parameters that  
     586# don't exist or using markup commands wrongly. 
    724587 
    725588WARN_IF_DOC_ERROR      = YES 
    726589 
    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. 
     590# The WARN_NO_PARAMDOC option can be enabled to get warnings for  
     591# functions that are documented, but have no documentation for their parameters  
     592# or return value. If set to NO (the default) doxygen will only warn about  
     593# wrong or incomplete parameter documentation, but not about the absence of  
     594# documentation. 
     595 
     596WARN_NO_PARAMDOC       = YES 
     597 
     598# The WARN_FORMAT tag determines the format of the warning messages that  
     599# doxygen can produce. The string should contain the $file, $line, and $text  
     600# tags, which will be replaced by the file and line number from which the  
     601# warning originated and the warning text. Optionally the format may contain  
     602# $version, which will be replaced by the version of the file (if it could  
     603# be obtained via FILE_VERSION_FILTER) 
    742604 
    743605WARN_FORMAT            = "$file:$line: $text" 
    744606 
    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                  = /local/home/oabramkina/xios_curie/work/xios_my_branch/src 
    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. 
     607# The WARN_LOGFILE tag can be used to specify a file to which warning  
     608# and error messages should be written. If left blank the output is written  
     609# to stderr. 
     610 
     611WARN_LOGFILE           =  
     612 
     613#--------------------------------------------------------------------------- 
     614# configuration options related to the input files 
     615#--------------------------------------------------------------------------- 
     616 
     617# The INPUT tag can be used to specify the files and/or directories that contain  
     618# documented source files. You may enter file names like "myfile.cpp" or  
     619# directories like "/usr/src/myproject". Separate the files or directories  
     620# with spaces. 
     621 
     622INPUT                  = src 
     623 
     624# This tag can be used to specify the character encoding of the source files  
     625# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is  
     626# also the default input encoding. Doxygen uses libiconv (or the iconv built  
     627# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for  
     628# the list of possible encodings. 
    769629 
    770630INPUT_ENCODING         = UTF-8 
    771631 
    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. 
     632# If the value of the INPUT tag contains directories, you can use the  
     633# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp  
     634# and *.h) to filter out the source-files in the directories. If left  
     635# blank the following patterns are tested:  
     636# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh  
     637# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py  
     638# *.f90 *.f *.for *.vhd *.vhdl 
     639 
     640FILE_PATTERNS          = *.cpp \ 
     641                         *.hpp \ 
     642                         *.conf 
     643 
     644# The RECURSIVE tag can be used to turn specify whether or not subdirectories  
     645# should be searched for input files as well. Possible values are YES and NO.  
     646# If left blank NO is used. 
    786647 
    787648RECURSIVE              = YES 
    788649 
    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 
     650# The EXCLUDE tag can be used to specify files and/or directories that should  
     651# excluded from the INPUT source files. This way you can easily exclude a  
    791652# 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 
     653 
     654EXCLUDE                =  
     655 
     656# The EXCLUDE_SYMLINKS tag can be used select whether or not files or  
     657# directories that are symbolic links (a Unix file system feature) are excluded  
    800658# from the input. 
    801 # The default value is: NO. 
    802659 
    803660EXCLUDE_SYMLINKS       = NO 
    804661 
    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       = 
    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, 
     662# If the value of the INPUT tag contains directories, you can use the  
     663# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude  
     664# certain files from those directories. Note that the wildcards are matched  
     665# against the file with absolute path, so to exclude all test directories  
     666# for example use the pattern */test/* 
     667 
     668EXCLUDE_PATTERNS       =  
     669 
     670# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names  
     671# (namespaces, classes, functions, etc.) that should be excluded from the  
     672# output. The symbol name can be a fully qualified name, a word, or if the  
     673# wildcard * is used, a substring. Examples: ANamespace, AClass,  
    818674# 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. 
     675 
     676EXCLUDE_SYMBOLS        =  
     677 
     678# The EXAMPLE_PATH tag can be used to specify one or more files or  
     679# directories that contain example code fragments that are included (see  
     680# the \include command). 
     681 
     682EXAMPLE_PATH           =  
     683 
     684# If the value of the EXAMPLE_PATH tag contains directories, you can use the  
     685# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp  
     686# and *.h) to filter out the source-files in the directories. If left  
     687# blank all files are included. 
     688 
     689EXAMPLE_PATTERNS       = * 
     690 
     691# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be  
     692# searched for input files to be used with the \include or \dontinclude  
     693# commands irrespective of the value of the RECURSIVE tag.  
     694# Possible values are YES and NO. If left blank NO is used. 
    842695 
    843696EXAMPLE_RECURSIVE      = NO 
    844697 
    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. 
     698# The IMAGE_PATH tag can be used to specify one or more files or  
     699# directories that contain image that are included in the documentation (see  
     700# the \image command). 
     701 
     702IMAGE_PATH             =  
     703 
     704# The INPUT_FILTER tag can be used to specify a program that doxygen should  
     705# invoke to filter for each input file. Doxygen will invoke the filter program  
     706# by executing (via popen()) the command <filter> <input-file>, where <filter>  
     707# is the value of the INPUT_FILTER tag, and <input-file> is the name of an  
     708# input file. Doxygen will then use the output that the filter program writes  
     709# to standard output.  If FILTER_PATTERNS is specified, this tag will be  
     710# ignored. 
     711 
     712INPUT_FILTER           =  
     713 
     714# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern  
     715# basis.  Doxygen will compare the file name with each pattern and apply the  
     716# filter if there is a match.  The filters are a list of the form:  
     717# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further  
     718# info on how filters are used. If FILTER_PATTERNS is empty or if  
     719# non of the patterns match the file name, INPUT_FILTER is applied. 
     720 
     721FILTER_PATTERNS        =  
     722 
     723# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using  
     724# INPUT_FILTER) will be used to filter the input files when producing source  
     725# files to browse (i.e. when SOURCE_BROWSER is set to YES). 
    881726 
    882727FILTER_SOURCE_FILES    = NO 
    883728 
    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         = YES 
    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. 
     729# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file  
     730# pattern. A pattern will override the setting for FILTER_PATTERN (if any)  
     731# and it is also possible to disable source filtering for a specific pattern  
     732# using *.ext= (so without naming a filter). This option only has effect when  
     733# FILTER_SOURCE_FILES is enabled. 
     734 
     735FILTER_SOURCE_PATTERNS =  
     736 
     737#--------------------------------------------------------------------------- 
     738# configuration options related to source browsing 
     739#--------------------------------------------------------------------------- 
     740 
     741# If the SOURCE_BROWSER tag is set to YES then a list of source files will  
     742# be generated. Documented entities will be cross-referenced with these sources.  
     743# Note: To get rid of all source code in the generated output, make sure also  
     744# VERBATIM_HEADERS is set to NO. 
     745 
     746SOURCE_BROWSER         = YES 
     747 
     748# Setting the INLINE_SOURCES tag to YES will include the body  
     749# of functions and classes directly in the documentation. 
     750 
     751INLINE_SOURCES         = NO 
     752 
     753# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct  
     754# doxygen to hide any special comment blocks from generated source code  
     755# fragments. Normal C and C++ comments will always remain visible. 
    922756 
    923757STRIP_CODE_COMMENTS    = YES 
    924758 
    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. 
     759# If the REFERENCED_BY_RELATION tag is set to YES  
     760# then for each documented function all documented  
     761# functions referencing it will be listed. 
     762 
     763REFERENCED_BY_RELATION = YES 
     764 
     765# If the REFERENCES_RELATION tag is set to YES  
     766# then for each documented function all documented entities  
     767# called/used by that function will be listed. 
     768 
     769REFERENCES_RELATION    = YES 
     770 
     771# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)  
     772# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from  
     773# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will  
     774# link to the source code.  Otherwise they will link to the documentation. 
    942775 
    943776REFERENCES_LINK_SOURCE = YES 
    944777 
    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. 
     778# If the USE_HTAGS tag is set to YES then the references to source code  
     779# will point to the HTML generated by the htags(1) tool instead of doxygen  
     780# built-in source browser. The htags tool is part of GNU's global source  
     781# tagging system (see http://www.gnu.org/software/global/global.html). You  
     782# will need version 4.8.6 or higher. 
    974783 
    975784USE_HTAGS              = NO 
    976785 
    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. 
     786# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen  
     787# will generate a verbatim copy of the header file for each class for  
     788# which an include is specified. Set to NO to disable this. 
    982789 
    983790VERBATIM_HEADERS       = YES 
    984791 
    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. 
     792#--------------------------------------------------------------------------- 
     793# configuration options related to the alphabetical class index 
     794#--------------------------------------------------------------------------- 
     795 
     796# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index  
     797# of all compounds will be generated. Enable this if the project  
     798# contains a lot of classes, structs, unions or interfaces. 
    1012799 
    1013800ALPHABETICAL_INDEX     = YES 
    1014801 
    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. 
     802# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then  
     803# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns  
     804# in which this list will be split (can be a number in the range [1..20]) 
    1019805 
    1020806COLS_IN_ALPHA_INDEX    = 5 
    1021807 
    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. 
     808# In case all classes in a project start with a common prefix, all  
     809# classes will be put under the same header in the alphabetical index.  
     810# The IGNORE_PREFIX tag can be used to specify one or more prefixes that  
     811# should be ignored while generating the index headers. 
     812 
     813IGNORE_PREFIX          =  
     814 
     815#--------------------------------------------------------------------------- 
     816# configuration options related to the HTML output 
     817#--------------------------------------------------------------------------- 
     818 
     819# If the GENERATE_HTML tag is set to YES (the default) Doxygen will  
     820# generate HTML output. 
    1036821 
    1037822GENERATE_HTML          = YES 
    1038823 
    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. 
     824# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.  
     825# If a relative path is entered the value of OUTPUT_DIRECTORY will be  
     826# put in front of it. If left blank `html' will be used as the default path. 
    1044827 
    1045828HTML_OUTPUT            = html 
    1046829 
    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. 
     830# The HTML_FILE_EXTENSION tag can be used to specify the file extension for  
     831# each generated HTML page (for example: .htm,.php,.asp). If it is left blank  
     832# doxygen will generate files with .html extension. 
    1051833 
    1052834HTML_FILE_EXTENSION    = .html 
    1053835 
    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 
    1076 # footer. See HTML_HEADER for more information on how to generate a default 
    1077 # footer and what special commands can be used inside the footer. See also 
    1078 # section "Doxygen usage" for information on how to generate the default footer 
    1079 # that doxygen normally uses. 
    1080 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1081  
    1082 HTML_FOOTER            = 
    1083  
    1084 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style 
    1085 # sheet that is used by each HTML page. It can be used to fine-tune the look of 
    1086 # the HTML output. If left blank doxygen will generate a default style sheet. 
    1087 # See also section "Doxygen usage" for information on how to generate the style 
    1088 # sheet that doxygen normally uses. 
    1089 # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as 
    1090 # it is more robust and this tag (HTML_STYLESHEET) will in the future become 
    1091 # obsolete. 
    1092 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1093  
    1094 HTML_STYLESHEET        = 
    1095  
    1096 # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined 
    1097 # cascading style sheets that are included after the standard style sheets 
    1098 # created by doxygen. Using this option one can overrule certain style aspects. 
    1099 # This is preferred over using HTML_STYLESHEET since it does not replace the 
    1100 # standard style sheet and is therefore more robust against future updates. 
    1101 # Doxygen will copy the style sheet files to the output directory. 
    1102 # Note: The order of the extra style sheet files is of importance (e.g. the last 
    1103 # style sheet in the list overrules the setting of the previous ones in the 
    1104 # list). For an example see the documentation. 
    1105 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1106  
    1107 HTML_EXTRA_STYLESHEET  = 
    1108  
    1109 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or 
    1110 # other source files which should be copied to the HTML output directory. Note 
    1111 # that these files will be copied to the base HTML output directory. Use the 
    1112 # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these 
    1113 # files. In the HTML_STYLESHEET file, use the file name only. Also note that the 
    1114 # files will be copied as-is; there are no commands or markers available. 
    1115 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1116  
    1117 HTML_EXTRA_FILES       = 
    1118  
    1119 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen 
    1120 # will adjust the colors in the style sheet and background images according to 
    1121 # this color. Hue is specified as an angle on a colorwheel, see 
    1122 # http://en.wikipedia.org/wiki/Hue for more information. For instance the value 
    1123 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 
    1124 # purple, and 360 is red again. 
    1125 # Minimum value: 0, maximum value: 359, default value: 220. 
    1126 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1127  
    1128 HTML_COLORSTYLE_HUE    = 220 
    1129  
    1130 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors 
    1131 # in the HTML output. For a value of 0 the output will use grayscales only. A 
    1132 # value of 255 will produce the most vivid colors. 
    1133 # Minimum value: 0, maximum value: 255, default value: 100. 
    1134 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1135  
    1136 HTML_COLORSTYLE_SAT    = 100 
    1137  
    1138 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the 
    1139 # luminance component of the colors in the HTML output. Values below 100 
    1140 # gradually make the output lighter, whereas values above 100 make the output 
    1141 # darker. The value divided by 100 is the actual gamma applied, so 80 represents 
    1142 # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not 
    1143 # change the gamma. 
    1144 # Minimum value: 40, maximum value: 240, default value: 80. 
    1145 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1146  
    1147 HTML_COLORSTYLE_GAMMA  = 80 
    1148  
    1149 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML 
    1150 # page will contain the date and time when the page was generated. Setting this 
    1151 # to YES can help to show when doxygen was last run and thus if the 
    1152 # documentation is up to date. 
    1153 # The default value is: NO. 
    1154 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1155  
    1156 HTML_TIMESTAMP         = NO 
    1157  
    1158 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
    1159 # documentation will contain sections that can be hidden and shown after the 
    1160 # page has loaded. 
    1161 # The default value is: NO. 
    1162 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1163  
    1164 HTML_DYNAMIC_SECTIONS  = NO 
    1165  
    1166 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries 
    1167 # shown in the various tree structured indices initially; the user can expand 
    1168 # and collapse entries dynamically later on. Doxygen will expand the tree to 
    1169 # such a level that at most the specified number of entries are visible (unless 
    1170 # a fully collapsed tree already exceeds this amount). So setting the number of 
    1171 # entries 1 will produce a full collapsed tree by default. 0 is a special value 
    1172 # representing an infinite number of entries and will result in a full expanded 
    1173 # tree by default. 
    1174 # Minimum value: 0, maximum value: 9999, default value: 100. 
    1175 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1176  
    1177 HTML_INDEX_NUM_ENTRIES = 100 
    1178  
    1179 # If the GENERATE_DOCSET tag is set to YES, additional index files will be 
    1180 # generated that can be used as input for Apple's Xcode 3 integrated development 
    1181 # environment (see: http://developer.apple.com/tools/xcode/), introduced with 
    1182 # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a 
    1183 # Makefile in the HTML output directory. Running make will produce the docset in 
    1184 # that directory and running make install will install the docset in 
    1185 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at 
    1186 # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html 
     836# The HTML_HEADER tag can be used to specify a personal HTML header for  
     837# each generated HTML page. If it is left blank doxygen will generate a  
     838# standard header. Note that when using a custom header you are responsible  
     839# for the proper inclusion of any scripts and style sheets that doxygen  
     840# needs, which is dependent on the configuration options used.  
     841# It is adviced to generate a default header using "doxygen -w html  
     842# header.html footer.html stylesheet.css YourConfigFile" and then modify  
     843# that header. Note that the header is subject to change so you typically  
     844# have to redo this when upgrading to a newer version of doxygen or when 
     845# changing the value of configuration settings such as GENERATE_TREEVIEW! 
     846 
     847HTML_HEADER            =  
     848 
     849# The HTML_FOOTER tag can be used to specify a personal HTML footer for  
     850# each generated HTML page. If it is left blank doxygen will generate a  
     851# standard footer. 
     852 
     853HTML_FOOTER            =  
     854 
     855# If the HTML_TIMESTAMP tag is set to YES then the generated HTML 
     856# documentation will contain the timesstamp. 
     857 
     858HTML_TIMESTAMP         = YES 
     859 
     860# The HTML_STYLESHEET tag can be used to specify a user-defined cascading  
     861# style sheet that is used by each HTML page. It can be used to  
     862# fine-tune the look of the HTML output. If the tag is left blank doxygen  
     863# will generate a default style sheet. Note that doxygen will try to copy  
     864# the style sheet file to the HTML output directory, so don't put your own  
     865# stylesheet in the HTML output directory as well, or it will be erased! 
     866 
     867HTML_STYLESHEET        =  
     868 
     869# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or  
     870# other source files which should be copied to the HTML output directory. Note  
     871# that these files will be copied to the base HTML output directory. Use the  
     872# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these  
     873# files. In the HTML_STYLESHEET file, use the file name only. Also note that  
     874# the files will be copied as-is; there are no commands or markers available. 
     875 
     876HTML_EXTRA_FILES       =  
     877 
     878# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.  
     879# Doxygen will adjust the colors in the stylesheet and background images  
     880# according to this color. Hue is specified as an angle on a colorwheel,  
     881# see http://en.wikipedia.org/wiki/Hue for more information.  
     882# For instance the value 0 represents red, 60 is yellow, 120 is green,  
     883# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.  
     884# The allowed range is 0 to 359. 
     885 
     886HTML_COLORSTYLE_HUE    = 224 
     887 
     888# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of  
     889# the colors in the HTML output. For a value of 0 the output will use  
     890# grayscales only. A value of 255 will produce the most vivid colors. 
     891 
     892HTML_COLORSTYLE_SAT    = 63 
     893 
     894# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to  
     895# the luminance component of the colors in the HTML output. Values below  
     896# 100 gradually make the output lighter, whereas values above 100 make  
     897# the output darker. The value divided by 100 is the actual gamma applied,  
     898# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,  
     899# and 100 does not change the gamma. 
     900 
     901HTML_COLORSTYLE_GAMMA  = 152 
     902 
     903# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML  
     904# page will contain the date and time when the page was generated. Setting  
     905# this to NO can help when comparing the output of multiple runs. 
     906 
     907HTML_TIMESTAMP         = YES 
     908 
     909# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,  
     910# files or namespaces will be aligned in HTML using tables. If set to  
     911# NO a bullet list will be used. 
     912 
     913HTML_ALIGN_MEMBERS     = YES 
     914 
     915# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML  
     916# documentation will contain sections that can be hidden and shown after the  
     917# page has loaded. For this to work a browser that supports  
     918# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox  
     919# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). 
     920 
     921HTML_DYNAMIC_SECTIONS  = YES 
     922 
     923# If the GENERATE_DOCSET tag is set to YES, additional index files  
     924# will be generated that can be used as input for Apple's Xcode 3  
     925# integrated development environment, introduced with OSX 10.5 (Leopard).  
     926# To create a documentation set, doxygen will generate a Makefile in the  
     927# HTML output directory. Running make will produce the docset in that  
     928# directory and running "make install" will install the docset in  
     929# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find  
     930# it at startup.  
     931# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html  
    1187932# for more information. 
    1188 # The default value is: NO. 
    1189 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1190933 
    1191934GENERATE_DOCSET        = NO 
    1192935 
    1193 # This tag determines the name of the docset feed. A documentation feed provides 
    1194 # an umbrella under which multiple documentation sets from a single provider 
    1195 # (such as a company or product suite) can be grouped. 
    1196 # The default value is: Doxygen generated docs. 
    1197 # This tag requires that the tag GENERATE_DOCSET is set to YES. 
     936# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the  
     937# feed. A documentation feed provides an umbrella under which multiple  
     938# documentation sets from a single provider (such as a company or product suite)  
     939# can be grouped. 
    1198940 
    1199941DOCSET_FEEDNAME        = "Doxygen generated docs" 
    1200942 
    1201 # This tag specifies a string that should uniquely identify the documentation 
    1202 # set bundle. This should be a reverse domain-name style string, e.g. 
    1203 # com.mycompany.MyDocSet. Doxygen will append .docset to the name. 
    1204 # The default value is: org.doxygen.Project. 
    1205 # This tag requires that the tag GENERATE_DOCSET is set to YES. 
     943# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that  
     944# should uniquely identify the documentation set bundle. This should be a  
     945# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen  
     946# will append .docset to the name. 
    1206947 
    1207948DOCSET_BUNDLE_ID       = org.doxygen.Project 
    1208949 
    1209 # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify 
    1210 # the documentation publisher. This should be a reverse domain-name style 
     950# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify  
     951# the documentation publisher. This should be a reverse domain-name style  
    1211952# string, e.g. com.mycompany.MyDocSet.documentation. 
    1212 # The default value is: org.doxygen.Publisher. 
    1213 # This tag requires that the tag GENERATE_DOCSET is set to YES. 
    1214953 
    1215954DOCSET_PUBLISHER_ID    = org.doxygen.Publisher 
    1216955 
    1217 # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. 
    1218 # The default value is: Publisher. 
    1219 # This tag requires that the tag GENERATE_DOCSET is set to YES. 
     956# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. 
    1220957 
    1221958DOCSET_PUBLISHER_NAME  = Publisher 
    1222959 
    1223 # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three 
    1224 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The 
    1225 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop 
    1226 # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on 
    1227 # Windows. 
    1228 # 
    1229 # The HTML Help Workshop contains a compiler that can convert all HTML output 
    1230 # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML 
    1231 # files are now used as the Windows 98 help format, and will replace the old 
    1232 # Windows help format (.hlp) on all Windows platforms in the future. Compressed 
    1233 # HTML files also contain an index, a table of contents, and you can search for 
    1234 # words in the documentation. The HTML workshop also contains a viewer for 
    1235 # compressed HTML files. 
    1236 # The default value is: NO. 
    1237 # This tag requires that the tag GENERATE_HTML is set to YES. 
     960# If the GENERATE_HTMLHELP tag is set to YES, additional index files  
     961# will be generated that can be used as input for tools like the  
     962# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)  
     963# of the generated HTML documentation. 
    1238964 
    1239965GENERATE_HTMLHELP      = NO 
    1240966 
    1241 # The CHM_FILE tag can be used to specify the file name of the resulting .chm 
    1242 # file. You can add a path in front of the file if the result should not be 
     967# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can  
     968# be used to specify the file name of the resulting .chm file. You  
     969# can add a path in front of the file if the result should not be  
    1243970# written to the html output directory. 
    1244 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 
    1245  
    1246 CHM_FILE               = 
    1247  
    1248 # The HHC_LOCATION tag can be used to specify the location (absolute path 
    1249 # including file name) of the HTML help compiler (hhc.exe). If non-empty, 
    1250 # doxygen will try to run the HTML help compiler on the generated index.hhp. 
    1251 # The file has to be specified with full path. 
    1252 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 
    1253  
    1254 HHC_LOCATION           = 
    1255  
    1256 # The GENERATE_CHI flag controls if a separate .chi index file is generated 
    1257 # (YES) or that it should be included in the master .chm file (NO). 
    1258 # The default value is: NO. 
    1259 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 
     971 
     972CHM_FILE               =  
     973 
     974# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can  
     975# be used to specify the location (absolute path including file name) of  
     976# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run  
     977# the HTML help compiler on the generated index.hhp. 
     978 
     979HHC_LOCATION           =  
     980 
     981# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag  
     982# controls if a separate .chi index file is generated (YES) or that  
     983# it should be included in the master .chm file (NO). 
    1260984 
    1261985GENERATE_CHI           = NO 
    1262986 
    1263 # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) 
    1264 # and project file content. 
    1265 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 
    1266  
    1267 CHM_INDEX_ENCODING     = 
    1268  
    1269 # The BINARY_TOC flag controls whether a binary table of contents is generated 
    1270 # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it 
    1271 # enables the Previous and Next buttons. 
    1272 # The default value is: NO. 
    1273 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 
     987# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING  
     988# is used to encode HtmlHelp index (hhk), content (hhc) and project file  
     989# content. 
     990 
     991CHM_INDEX_ENCODING     =  
     992 
     993# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag  
     994# controls whether a binary table of contents is generated (YES) or a  
     995# normal table of contents (NO) in the .chm file. 
    1274996 
    1275997BINARY_TOC             = NO 
    1276998 
    1277 # The TOC_EXPAND flag can be set to YES to add extra items for group members to 
    1278 # the table of contents of the HTML help documentation and to the tree view. 
    1279 # The default value is: NO. 
    1280 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 
     999# The TOC_EXPAND flag can be set to YES to add extra items for group members  
     1000# to the contents of the HTML help documentation and to the tree view. 
    12811001 
    12821002TOC_EXPAND             = NO 
    12831003 
    1284 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 
    1285 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that 
    1286 # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help 
    1287 # (.qch) of the generated HTML documentation. 
    1288 # The default value is: NO. 
    1289 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1004# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and  
     1005# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated  
     1006# that can be used as input for Qt's qhelpgenerator to generate a  
     1007# Qt Compressed Help (.qch) of the generated HTML documentation. 
    12901008 
    12911009GENERATE_QHP           = NO 
    12921010 
    1293 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify 
    1294 # the file name of the resulting .qch file. The path specified is relative to 
    1295 # the HTML output folder. 
    1296 # This tag requires that the tag GENERATE_QHP is set to YES. 
    1297  
    1298 QCH_FILE               = 
    1299  
    1300 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help 
    1301 # Project output. For more information please see Qt Help Project / Namespace 
    1302 # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). 
    1303 # The default value is: org.doxygen.Project. 
    1304 # This tag requires that the tag GENERATE_QHP is set to YES. 
     1011# If the QHG_LOCATION tag is specified, the QCH_FILE tag can  
     1012# be used to specify the file name of the resulting .qch file.  
     1013# The path specified is relative to the HTML output folder. 
     1014 
     1015QCH_FILE               =  
     1016 
     1017# The QHP_NAMESPACE tag specifies the namespace to use when generating  
     1018# Qt Help Project output. For more information please see  
     1019# http://doc.trolltech.com/qthelpproject.html#namespace 
    13051020 
    13061021QHP_NAMESPACE          = org.doxygen.Project 
    13071022 
    1308 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt 
    1309 # Help Project output. For more information please see Qt Help Project / Virtual 
    1310 # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- 
    1311 # folders). 
    1312 # The default value is: doc. 
    1313 # This tag requires that the tag GENERATE_QHP is set to YES. 
     1023# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating  
     1024# Qt Help Project output. For more information please see  
     1025# http://doc.trolltech.com/qthelpproject.html#virtual-folders 
    13141026 
    13151027QHP_VIRTUAL_FOLDER     = doc 
    13161028 
    1317 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom 
    1318 # filter to add. For more information please see Qt Help Project / Custom 
    1319 # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 
    1320 # filters). 
    1321 # This tag requires that the tag GENERATE_QHP is set to YES. 
    1322  
    1323 QHP_CUST_FILTER_NAME   = 
    1324  
    1325 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the 
    1326 # custom filter to add. For more information please see Qt Help Project / Custom 
    1327 # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 
    1328 # filters). 
    1329 # This tag requires that the tag GENERATE_QHP is set to YES. 
    1330  
    1331 QHP_CUST_FILTER_ATTRS  = 
    1332  
    1333 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 
    1334 # project's filter section matches. Qt Help Project / Filter Attributes (see: 
    1335 # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). 
    1336 # This tag requires that the tag GENERATE_QHP is set to YES. 
    1337  
    1338 QHP_SECT_FILTER_ATTRS  = 
    1339  
    1340 # The QHG_LOCATION tag can be used to specify the location of Qt's 
    1341 # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the 
    1342 # generated .qhp file. 
    1343 # This tag requires that the tag GENERATE_QHP is set to YES. 
    1344  
    1345 QHG_LOCATION           = 
    1346  
    1347 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be 
    1348 # generated, together with the HTML files, they form an Eclipse help plugin. To 
    1349 # install this plugin and make it available under the help contents menu in 
    1350 # Eclipse, the contents of the directory containing the HTML and XML files needs 
    1351 # to be copied into the plugins directory of eclipse. The name of the directory 
    1352 # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. 
    1353 # After copying Eclipse needs to be restarted before the help appears. 
    1354 # The default value is: NO. 
    1355 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1029# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to  
     1030# add. For more information please see  
     1031# http://doc.trolltech.com/qthelpproject.html#custom-filters 
     1032 
     1033QHP_CUST_FILTER_NAME   =  
     1034 
     1035# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the  
     1036# custom filter to add. For more information please see  
     1037# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">  
     1038# Qt Help Project / Custom Filters</a>. 
     1039 
     1040QHP_CUST_FILTER_ATTRS  =  
     1041 
     1042# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this  
     1043# project's  
     1044# filter section matches.  
     1045# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">  
     1046# Qt Help Project / Filter Attributes</a>. 
     1047 
     1048QHP_SECT_FILTER_ATTRS  =  
     1049 
     1050# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can  
     1051# be used to specify the location of Qt's qhelpgenerator.  
     1052# If non-empty doxygen will try to run qhelpgenerator on the generated  
     1053# .qhp file. 
     1054 
     1055QHG_LOCATION           =  
     1056 
     1057# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files   
     1058# will be generated, which together with the HTML files, form an Eclipse help  
     1059# plugin. To install this plugin and make it available under the help contents  
     1060# menu in Eclipse, the contents of the directory containing the HTML and XML  
     1061# files needs to be copied into the plugins directory of eclipse. The name of  
     1062# the directory within the plugins directory should be the same as  
     1063# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before  
     1064# the help appears. 
    13561065 
    13571066GENERATE_ECLIPSEHELP   = NO 
    13581067 
    1359 # A unique identifier for the Eclipse help plugin. When installing the plugin 
    1360 # the directory name containing the HTML and XML files should also have this 
    1361 # name. Each documentation set should have its own identifier. 
    1362 # The default value is: org.doxygen.Project. 
    1363 # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. 
     1068# A unique identifier for the eclipse help plugin. When installing the plugin  
     1069# the directory name containing the HTML and XML files should also have  
     1070# this name. 
    13641071 
    13651072ECLIPSE_DOC_ID         = org.doxygen.Project 
    13661073 
    1367 # If you want full control over the layout of the generated HTML pages it might 
    1368 # be necessary to disable the index and replace it with your own. The 
    1369 # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top 
    1370 # of each HTML page. A value of NO enables the index and the value YES disables 
    1371 # it. Since the tabs in the index contain the same information as the navigation 
    1372 # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. 
    1373 # The default value is: NO. 
    1374 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1074# The DISABLE_INDEX tag can be used to turn on/off the condensed index at  
     1075# top of each HTML page. The value NO (the default) enables the index and  
     1076# the value YES disables it. 
    13751077 
    13761078DISABLE_INDEX          = NO 
    13771079 
    1378 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
    1379 # structure should be generated to display hierarchical information. If the tag 
    1380 # value is set to YES, a side panel will be generated containing a tree-like 
    1381 # index structure (just like the one that is generated for HTML Help). For this 
    1382 # to work a browser that supports JavaScript, DHTML, CSS and frames is required 
    1383 # (i.e. any modern browser). Windows users are probably better off using the 
    1384 # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can 
    1385 # further fine-tune the look of the index. As an example, the default style 
    1386 # sheet generated by doxygen has an example that shows how to put an image at 
    1387 # the root of the tree instead of the PROJECT_NAME. Since the tree basically has 
    1388 # the same information as the tab index, you could consider setting 
    1389 # DISABLE_INDEX to YES when enabling this option. 
    1390 # The default value is: NO. 
    1391 # This tag requires that the tag GENERATE_HTML is set to YES. 
    1392  
    1393 GENERATE_TREEVIEW      = NO 
    1394  
    1395 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that 
    1396 # doxygen will group on one line in the generated HTML documentation. 
    1397 # 
    1398 # Note that a value of 0 will completely suppress the enum values from appearing 
    1399 # in the overview section. 
    1400 # Minimum value: 0, maximum value: 20, default value: 4. 
    1401 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1080# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values  
     1081# (range [0,1..20]) that doxygen will group on one line in the generated HTML  
     1082# documentation. Note that a value of 0 will completely suppress the enum  
     1083# values from appearing in the overview section. 
    14021084 
    14031085ENUM_VALUES_PER_LINE   = 4 
    14041086 
    1405 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used 
    1406 # to set the initial width (in pixels) of the frame in which the tree is shown. 
    1407 # Minimum value: 0, maximum value: 1500, default value: 250. 
    1408 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1087# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index  
     1088# structure should be generated to display hierarchical information.  
     1089# If the tag value is set to YES, a side panel will be generated  
     1090# containing a tree-like index structure (just like the one that  
     1091# is generated for HTML Help). For this to work a browser that supports  
     1092# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).  
     1093# Windows users are probably better off using the HTML help feature. 
     1094 
     1095GENERATE_TREEVIEW      = YES 
     1096 
     1097# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,  
     1098# and Class Hierarchy pages using a tree view instead of an ordered list. 
     1099 
     1100USE_INLINE_TREES       = YES 
     1101 
     1102# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be  
     1103# used to set the initial width (in pixels) of the frame in which the tree  
     1104# is shown. 
    14091105 
    14101106TREEVIEW_WIDTH         = 250 
    14111107 
    1412 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to 
    1413 # external symbols imported via tag files in a separate window. 
    1414 # The default value is: NO. 
    1415 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1108# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open  
     1109# links to external symbols imported via tag files in a separate window. 
    14161110 
    14171111EXT_LINKS_IN_WINDOW    = NO 
    14181112 
    1419 # Use this tag to change the font size of LaTeX formulas included as images in 
    1420 # the HTML documentation. When you change the font size after a successful 
    1421 # doxygen run you need to manually remove any form_*.png images from the HTML 
    1422 # output directory to force them to be regenerated. 
    1423 # Minimum value: 8, maximum value: 50, default value: 10. 
    1424 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1113# Use this tag to change the font size of Latex formulas included  
     1114# as images in the HTML documentation. The default is 10. Note that  
     1115# when you change the font size after a successful doxygen run you need  
     1116# to manually remove any form_*.png images from the HTML output directory  
     1117# to force them to be regenerated. 
    14251118 
    14261119FORMULA_FONTSIZE       = 10 
    14271120 
    1428 # Use the FORMULA_TRANPARENT tag to determine whether or not the images 
    1429 # generated for formulas are transparent PNGs. Transparent PNGs are not 
    1430 # supported properly for IE 6.0, but are supported on all modern browsers. 
    1431 # 
    1432 # Note that when changing this option you need to delete any form_*.png files in 
    1433 # the HTML output directory before the changes have effect. 
    1434 # The default value is: YES. 
    1435 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1121# Use the FORMULA_TRANPARENT tag to determine whether or not the images  
     1122# generated for formulas are transparent PNGs. Transparent PNGs are  
     1123# not supported properly for IE 6.0, but are supported on all modern browsers.  
     1124# Note that when changing this option you need to delete any form_*.png files  
     1125# in the HTML output before the changes have effect. 
    14361126 
    14371127FORMULA_TRANSPARENT    = YES 
    14381128 
    1439 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see 
    1440 # http://www.mathjax.org) which uses client side Javascript for the rendering 
    1441 # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX 
    1442 # installed or if you want to formulas look prettier in the HTML output. When 
    1443 # enabled you may also need to install MathJax separately and configure the path 
    1444 # to it using the MATHJAX_RELPATH option. 
    1445 # The default value is: NO. 
    1446 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1129# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax  
     1130# (see http://www.mathjax.org) which uses client side Javascript for the  
     1131# rendering instead of using prerendered bitmaps. Use this if you do not  
     1132# have LaTeX installed or if you want to formulas look prettier in the HTML  
     1133# output. When enabled you also need to install MathJax separately and  
     1134# configure the path to it using the MATHJAX_RELPATH option. 
    14471135 
    14481136USE_MATHJAX            = NO 
    14491137 
    1450 # When MathJax is enabled you can set the default output format to be used for 
    1451 # the MathJax output. See the MathJax site (see: 
    1452 # http://docs.mathjax.org/en/latest/output.html) for more details. 
    1453 # Possible values are: HTML-CSS (which is slower, but has the best 
    1454 # compatibility), NativeMML (i.e. MathML) and SVG. 
    1455 # The default value is: HTML-CSS. 
    1456 # This tag requires that the tag USE_MATHJAX is set to YES. 
    1457  
    1458 MATHJAX_FORMAT         = HTML-CSS 
    1459  
    1460 # When MathJax is enabled you need to specify the location relative to the HTML 
    1461 # output directory using the MATHJAX_RELPATH option. The destination directory 
    1462 # should contain the MathJax.js script. For instance, if the mathjax directory 
    1463 # is located at the same level as the HTML output directory, then 
    1464 # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax 
    1465 # Content Delivery Network so you can quickly see the result without installing 
    1466 # MathJax. However, it is strongly recommended to install a local copy of 
    1467 # MathJax from http://www.mathjax.org before deployment. 
    1468 # The default value is: http://cdn.mathjax.org/mathjax/latest. 
    1469 # This tag requires that the tag USE_MATHJAX is set to YES. 
    1470  
    1471 MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest 
    1472  
    1473 # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax 
    1474 # extension names that should be enabled during MathJax rendering. For example 
    1475 # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols 
    1476 # This tag requires that the tag USE_MATHJAX is set to YES. 
    1477  
    1478 MATHJAX_EXTENSIONS     = 
    1479  
    1480 # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces 
    1481 # of code that will be used on startup of the MathJax code. See the MathJax site 
    1482 # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an 
    1483 # example see the documentation. 
    1484 # This tag requires that the tag USE_MATHJAX is set to YES. 
    1485  
    1486 MATHJAX_CODEFILE       = 
    1487  
    1488 # When the SEARCHENGINE tag is enabled doxygen will generate a search box for 
    1489 # the HTML output. The underlying search engine uses javascript and DHTML and 
    1490 # should work on any modern browser. Note that when using HTML help 
    1491 # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) 
    1492 # there is already a search function so this one should typically be disabled. 
    1493 # For large projects the javascript based search engine can be slow, then 
    1494 # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to 
    1495 # search using the keyboard; to jump to the search box use <access key> + S 
    1496 # (what the <access key> is depends on the OS and browser, but it is typically 
    1497 # <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down 
    1498 # key> to jump into the search results window, the results can be navigated 
    1499 # using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel 
    1500 # the search. The filter options can be selected when the cursor is inside the 
    1501 # search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> 
    1502 # to select a filter and <Enter> or <escape> to activate or cancel the filter 
    1503 # option. 
    1504 # The default value is: YES. 
    1505 # This tag requires that the tag GENERATE_HTML is set to YES. 
     1138# When MathJax is enabled you need to specify the location relative to the  
     1139# HTML output directory using the MATHJAX_RELPATH option. The destination  
     1140# directory should contain the MathJax.js script. For instance, if the mathjax  
     1141# directory is located at the same level as the HTML output directory, then  
     1142# MATHJAX_RELPATH should be ../mathjax. The default value points to the  
     1143# mathjax.org site, so you can quickly see the result without installing  
     1144# MathJax, but it is strongly recommended to install a local copy of MathJax  
     1145# before deployment. 
     1146 
     1147MATHJAX_RELPATH        = http://www.mathjax.org/mathjax 
     1148 
     1149# When the SEARCHENGINE tag is enabled doxygen will generate a search box  
     1150# for the HTML output. The underlying search engine uses javascript  
     1151# and DHTML and should work on any modern browser. Note that when using  
     1152# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets  
     1153# (GENERATE_DOCSET) there is already a search function so this one should  
     1154# typically be disabled. For large projects the javascript based search engine  
     1155# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. 
    15061156 
    15071157SEARCHENGINE           = YES 
    15081158 
    1509 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be 
    1510 # implemented using a web server instead of a web client using Javascript. There 
    1511 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH 
    1512 # setting. When disabled, doxygen will generate a PHP script for searching and 
    1513 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing 
    1514 # and searching needs to be provided by external tools. See the section 
    1515 # "External Indexing and Searching" for details. 
    1516 # The default value is: NO. 
    1517 # This tag requires that the tag SEARCHENGINE is set to YES. 
     1159# When the SERVER_BASED_SEARCH tag is enabled the search engine will be  
     1160# implemented using a PHP enabled web server instead of at the web client  
     1161# using Javascript. Doxygen will generate the search PHP script and index  
     1162# file to put on the web server. The advantage of the server  
     1163# based approach is that it scales better to large projects and allows  
     1164# full text search. The disadvantages are that it is more difficult to setup  
     1165# and does not have live searching capabilities. 
    15181166 
    15191167SERVER_BASED_SEARCH    = NO 
    15201168 
    1521 # When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP 
    1522 # script for searching. Instead the search results are written to an XML file 
    1523 # which needs to be processed by an external indexer. Doxygen will invoke an 
    1524 # external search engine pointed to by the SEARCHENGINE_URL option to obtain the 
    1525 # search results. 
    1526 # 
    1527 # Doxygen ships with an example indexer (doxyindexer) and search engine 
    1528 # (doxysearch.cgi) which are based on the open source search engine library 
    1529 # Xapian (see: http://xapian.org/). 
    1530 # 
    1531 # See the section "External Indexing and Searching" for details. 
    1532 # The default value is: NO. 
    1533 # This tag requires that the tag SEARCHENGINE is set to YES. 
    1534  
    1535 EXTERNAL_SEARCH        = NO 
    1536  
    1537 # The SEARCHENGINE_URL should point to a search engine hosted by a web server 
    1538 # which will return the search results when EXTERNAL_SEARCH is enabled. 
    1539 # 
    1540 # Doxygen ships with an example indexer (doxyindexer) and search engine 
    1541 # (doxysearch.cgi) which are based on the open source search engine library 
    1542 # Xapian (see: http://xapian.org/). See the section "External Indexing and 
    1543 # Searching" for details. 
    1544 # This tag requires that the tag SEARCHENGINE is set to YES. 
    1545  
    1546 SEARCHENGINE_URL       = 
    1547  
    1548 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed 
    1549 # search data is written to a file for indexing by an external tool. With the 
    1550 # SEARCHDATA_FILE tag the name of this file can be specified. 
    1551 # The default file is: searchdata.xml. 
    1552 # This tag requires that the tag SEARCHENGINE is set to YES. 
    1553  
    1554 SEARCHDATA_FILE        = searchdata.xml 
    1555  
    1556 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the 
    1557 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is 
    1558 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple 
    1559 # projects and redirect the results back to the right project. 
    1560 # This tag requires that the tag SEARCHENGINE is set to YES. 
    1561  
    1562 EXTERNAL_SEARCH_ID     = 
    1563  
    1564 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen 
    1565 # projects other than the one defined by this configuration file, but that are 
    1566 # all added to the same external search index. Each project needs to have a 
    1567 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of 
    1568 # to a relative location where the documentation can be found. The format is: 
    1569 # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... 
    1570 # This tag requires that the tag SEARCHENGINE is set to YES. 
    1571  
    1572 EXTRA_SEARCH_MAPPINGS  = 
    1573  
    1574 #--------------------------------------------------------------------------- 
    1575 # Configuration options related to the LaTeX output 
    1576 #--------------------------------------------------------------------------- 
    1577  
    1578 # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. 
    1579 # The default value is: YES. 
    1580  
    1581 GENERATE_LATEX         = YES 
    1582  
    1583 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a 
    1584 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of 
    1585 # it. 
    1586 # The default directory is: latex. 
    1587 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1169#--------------------------------------------------------------------------- 
     1170# configuration options related to the LaTeX output 
     1171#--------------------------------------------------------------------------- 
     1172 
     1173# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will  
     1174# generate Latex output. 
     1175 
     1176GENERATE_LATEX         = NO 
     1177 
     1178# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.  
     1179# If a relative path is entered the value of OUTPUT_DIRECTORY will be  
     1180# put in front of it. If left blank `latex' will be used as the default path. 
    15881181 
    15891182LATEX_OUTPUT           = latex 
    15901183 
    1591 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
    1592 # invoked. 
    1593 # 
    1594 # Note that when enabling USE_PDFLATEX this option is only used for generating 
    1595 # bitmaps for formulas in the HTML output, but not in the Makefile that is 
    1596 # written to the output directory. 
    1597 # The default file is: latex. 
    1598 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1184# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be  
     1185# invoked. If left blank `latex' will be used as the default command name.  
     1186# Note that when enabling USE_PDFLATEX this option is only used for  
     1187# generating bitmaps for formulas in the HTML output, but not in the  
     1188# Makefile that is written to the output directory. 
    15991189 
    16001190LATEX_CMD_NAME         = latex 
    16011191 
    1602 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate 
    1603 # index for LaTeX. 
    1604 # The default file is: makeindex. 
    1605 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1192# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to  
     1193# generate index for LaTeX. If left blank `makeindex' will be used as the  
     1194# default command name. 
    16061195 
    16071196MAKEINDEX_CMD_NAME     = makeindex 
    16081197 
    1609 # If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX 
    1610 # documents. This may be useful for small projects and may help to save some 
    1611 # trees in general. 
    1612 # The default value is: NO. 
    1613 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1198# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact  
     1199# LaTeX documents. This may be useful for small projects and may help to  
     1200# save some trees in general. 
    16141201 
    16151202COMPACT_LATEX          = NO 
    16161203 
    1617 # The PAPER_TYPE tag can be used to set the paper type that is used by the 
    1618 # printer. 
    1619 # Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x 
    1620 # 14 inches) and executive (7.25 x 10.5 inches). 
    1621 # The default value is: a4. 
    1622 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1204# The PAPER_TYPE tag can be used to set the paper type that is used  
     1205# by the printer. Possible values are: a4, letter, legal and  
     1206# executive. If left blank a4wide will be used. 
    16231207 
    16241208PAPER_TYPE             = a4 
    16251209 
    1626 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names 
    1627 # that should be included in the LaTeX output. To get the times font for 
    1628 # instance you can specify 
    1629 # EXTRA_PACKAGES=times 
    1630 # If left blank no extra packages will be included. 
    1631 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    1632  
    1633 EXTRA_PACKAGES         = 
    1634  
    1635 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for the 
    1636 # generated LaTeX document. The header should contain everything until the first 
    1637 # chapter. If it is left blank doxygen will generate a standard header. See 
    1638 # section "Doxygen usage" for information on how to let doxygen write the 
    1639 # default header to a separate file. 
    1640 # 
    1641 # Note: Only use a user-defined header if you know what you are doing! The 
    1642 # following commands have a special meaning inside the header: $title, 
    1643 # $datetime, $date, $doxygenversion, $projectname, $projectnumber, 
    1644 # $projectbrief, $projectlogo. Doxygen will replace $title with the empty 
    1645 # string, for the replacement values of the other commands the user is referred 
    1646 # to HTML_HEADER. 
    1647 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    1648  
    1649 LATEX_HEADER           = 
    1650  
    1651 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the 
    1652 # generated LaTeX document. The footer should contain everything after the last 
    1653 # chapter. If it is left blank doxygen will generate a standard footer. See 
    1654 # LATEX_HEADER for more information on how to generate a default footer and what 
    1655 # special commands can be used inside the footer. 
    1656 # 
    1657 # Note: Only use a user-defined footer if you know what you are doing! 
    1658 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    1659  
    1660 LATEX_FOOTER           = 
    1661  
    1662 # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined 
    1663 # LaTeX style sheets that are included after the standard style sheets created 
    1664 # by doxygen. Using this option one can overrule certain style aspects. Doxygen 
    1665 # will copy the style sheet files to the output directory. 
    1666 # Note: The order of the extra style sheet files is of importance (e.g. the last 
    1667 # style sheet in the list overrules the setting of the previous ones in the 
    1668 # list). 
    1669 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    1670  
    1671 LATEX_EXTRA_STYLESHEET = 
    1672  
    1673 # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or 
    1674 # other source files which should be copied to the LATEX_OUTPUT output 
    1675 # directory. Note that the files will be copied as-is; there are no commands or 
    1676 # markers available. 
    1677 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    1678  
    1679 LATEX_EXTRA_FILES      = 
    1680  
    1681 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is 
    1682 # prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will 
    1683 # contain links (just like the HTML output) instead of page references. This 
    1684 # makes the output suitable for online browsing using a PDF viewer. 
    1685 # The default value is: YES. 
    1686 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1210# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX  
     1211# packages that should be included in the LaTeX output. 
     1212 
     1213EXTRA_PACKAGES         =  
     1214 
     1215# The LATEX_HEADER tag can be used to specify a personal LaTeX header for  
     1216# the generated latex document. The header should contain everything until  
     1217# the first chapter. If it is left blank doxygen will generate a  
     1218# standard header. Notice: only use this tag if you know what you are doing! 
     1219 
     1220LATEX_HEADER           =  
     1221 
     1222# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for  
     1223# the generated latex document. The footer should contain everything after  
     1224# the last chapter. If it is left blank doxygen will generate a  
     1225# standard footer. Notice: only use this tag if you know what you are doing! 
     1226 
     1227LATEX_FOOTER           =  
     1228 
     1229# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated  
     1230# is prepared for conversion to pdf (using ps2pdf). The pdf file will  
     1231# contain links (just like the HTML output) instead of page references  
     1232# This makes the output suitable for online browsing using a pdf viewer. 
    16871233 
    16881234PDF_HYPERLINKS         = YES 
    16891235 
    1690 # If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate 
    1691 # the PDF file directly from the LaTeX files. Set this option to YES, to get a 
     1236# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of  
     1237# plain latex in the generated Makefile. Set this option to YES to get a  
    16921238# higher quality PDF documentation. 
    1693 # The default value is: YES. 
    1694 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    16951239 
    16961240USE_PDFLATEX           = YES 
    16971241 
    1698 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode 
    1699 # command to the generated LaTeX files. This will instruct LaTeX to keep running 
    1700 # if errors occur, instead of asking the user for help. This option is also used 
    1701 # when generating formulas in HTML. 
    1702 # The default value is: NO. 
    1703 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1242# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.  
     1243# command to the generated LaTeX files. This will instruct LaTeX to keep  
     1244# running if errors occur, instead of asking the user for help.  
     1245# This option is also used when generating formulas in HTML. 
    17041246 
    17051247LATEX_BATCHMODE        = NO 
    17061248 
    1707 # If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the 
    1708 # index chapters (such as File Index, Compound Index, etc.) in the output. 
    1709 # The default value is: NO. 
    1710 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1249# If LATEX_HIDE_INDICES is set to YES then doxygen will not  
     1250# include the index chapters (such as File Index, Compound Index, etc.)  
     1251# in the output. 
    17111252 
    17121253LATEX_HIDE_INDICES     = NO 
    17131254 
    1714 # If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source 
    1715 # code with syntax highlighting in the LaTeX output. 
    1716 # 
    1717 # Note that which sources are shown also depends on other settings such as 
    1718 # SOURCE_BROWSER. 
    1719 # The default value is: NO. 
    1720 # This tag requires that the tag GENERATE_LATEX is set to YES. 
     1255# If LATEX_SOURCE_CODE is set to YES then doxygen will include  
     1256# source code with syntax highlighting in the LaTeX output.  
     1257# Note that which sources are shown also depends on other settings  
     1258# such as SOURCE_BROWSER. 
    17211259 
    17221260LATEX_SOURCE_CODE      = NO 
    17231261 
    1724 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the 
    1725 # bibliography, e.g. plainnat, or ieeetr. See 
    1726 # http://en.wikipedia.org/wiki/BibTeX and \cite for more info. 
    1727 # The default value is: plain. 
    1728 # This tag requires that the tag GENERATE_LATEX is set to YES. 
    1729  
    1730 LATEX_BIB_STYLE        = plain 
    1731  
    1732 #--------------------------------------------------------------------------- 
    1733 # Configuration options related to the RTF output 
    1734 #--------------------------------------------------------------------------- 
    1735  
    1736 # If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The 
    1737 # RTF output is optimized for Word 97 and may not look too pretty with other RTF 
    1738 # readers/editors. 
    1739 # The default value is: NO. 
     1262#--------------------------------------------------------------------------- 
     1263# configuration options related to the RTF output 
     1264#--------------------------------------------------------------------------- 
     1265 
     1266# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output  
     1267# The RTF output is optimized for Word 97 and may not look very pretty with  
     1268# other RTF readers or editors. 
    17401269 
    17411270GENERATE_RTF           = NO 
    17421271 
    1743 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a 
    1744 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of 
    1745 # it. 
    1746 # The default directory is: rtf. 
    1747 # This tag requires that the tag GENERATE_RTF is set to YES. 
     1272# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.  
     1273# If a relative path is entered the value of OUTPUT_DIRECTORY will be  
     1274# put in front of it. If left blank `rtf' will be used as the default path. 
    17481275 
    17491276RTF_OUTPUT             = rtf 
    17501277 
    1751 # If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF 
    1752 # documents. This may be useful for small projects and may help to save some 
    1753 # trees in general. 
    1754 # The default value is: NO. 
    1755 # This tag requires that the tag GENERATE_RTF is set to YES. 
     1278# If the COMPACT_RTF tag is set to YES Doxygen generates more compact  
     1279# RTF documents. This may be useful for small projects and may help to  
     1280# save some trees in general. 
    17561281 
    17571282COMPACT_RTF            = NO 
    17581283 
    1759 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will 
    1760 # contain hyperlink fields. The RTF file will contain links (just like the HTML 
    1761 # output) instead of page references. This makes the output suitable for online 
    1762 # browsing using Word or some other Word compatible readers that support those 
    1763 # fields. 
    1764 # 
    1765 # Note: WordPad (write) and others do not support links. 
    1766 # The default value is: NO. 
    1767 # This tag requires that the tag GENERATE_RTF is set to YES. 
     1284# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated  
     1285# will contain hyperlink fields. The RTF file will  
     1286# contain links (just like the HTML output) instead of page references.  
     1287# This makes the output suitable for online browsing using WORD or other  
     1288# programs which support those fields.  
     1289# Note: wordpad (write) and others do not support links. 
    17681290 
    17691291RTF_HYPERLINKS         = NO 
    17701292 
    1771 # Load stylesheet definitions from file. Syntax is similar to doxygen's config 
    1772 # file, i.e. a series of assignments. You only have to provide replacements, 
    1773 # missing definitions are set to their default value. 
    1774 # 
    1775 # See also section "Doxygen usage" for information on how to generate the 
    1776 # default style sheet that doxygen normally uses. 
    1777 # This tag requires that the tag GENERATE_RTF is set to YES. 
    1778  
    1779 RTF_STYLESHEET_FILE    = 
    1780  
    1781 # Set optional variables used in the generation of an RTF document. Syntax is 
    1782 # similar to doxygen's config file. A template extensions file can be generated 
    1783 # using doxygen -e rtf extensionFile. 
    1784 # This tag requires that the tag GENERATE_RTF is set to YES. 
    1785  
    1786 RTF_EXTENSIONS_FILE    = 
    1787  
    1788 # If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code 
    1789 # with syntax highlighting in the RTF output. 
    1790 # 
    1791 # Note that which sources are shown also depends on other settings such as 
    1792 # SOURCE_BROWSER. 
    1793 # The default value is: NO. 
    1794 # This tag requires that the tag GENERATE_RTF is set to YES. 
    1795  
    1796 RTF_SOURCE_CODE        = NO 
    1797  
    1798 #--------------------------------------------------------------------------- 
    1799 # Configuration options related to the man page output 
    1800 #--------------------------------------------------------------------------- 
    1801  
    1802 # If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for 
    1803 # classes and files. 
    1804 # The default value is: NO. 
     1293# Load stylesheet definitions from file. Syntax is similar to doxygen's  
     1294# config file, i.e. a series of assignments. You only have to provide  
     1295# replacements, missing definitions are set to their default value. 
     1296 
     1297RTF_STYLESHEET_FILE    =  
     1298 
     1299# Set optional variables used in the generation of an rtf document.  
     1300# Syntax is similar to doxygen's config file. 
     1301 
     1302RTF_EXTENSIONS_FILE    =  
     1303 
     1304#--------------------------------------------------------------------------- 
     1305# configuration options related to the man page output 
     1306#--------------------------------------------------------------------------- 
     1307 
     1308# If the GENERATE_MAN tag is set to YES (the default) Doxygen will  
     1309# generate man pages 
    18051310 
    18061311GENERATE_MAN           = NO 
    18071312 
    1808 # The MAN_OUTPUT tag is used to specify where the man pages will be put. If a 
    1809 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of 
    1810 # it. A directory man3 will be created inside the directory specified by 
    1811 # MAN_OUTPUT. 
    1812 # The default directory is: man. 
    1813 # This tag requires that the tag GENERATE_MAN is set to YES. 
     1313# The MAN_OUTPUT tag is used to specify where the man pages will be put.  
     1314# If a relative path is entered the value of OUTPUT_DIRECTORY will be  
     1315# put in front of it. If left blank `man' will be used as the default path. 
    18141316 
    18151317MAN_OUTPUT             = man 
    18161318 
    1817 # The MAN_EXTENSION tag determines the extension that is added to the generated 
    1818 # man pages. In case the manual section does not start with a number, the number 
    1819 # 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is 
    1820 # optional. 
    1821 # The default value is: .3. 
    1822 # This tag requires that the tag GENERATE_MAN is set to YES. 
     1319# The MAN_EXTENSION tag determines the extension that is added to  
     1320# the generated man pages (default is the subroutine's section .3) 
    18231321 
    18241322MAN_EXTENSION          = .3 
    18251323 
    1826 # The MAN_SUBDIR tag determines the name of the directory created within 
    1827 # MAN_OUTPUT in which the man pages are placed. If defaults to man followed by 
    1828 # MAN_EXTENSION with the initial . removed. 
    1829 # This tag requires that the tag GENERATE_MAN is set to YES. 
    1830  
    1831 MAN_SUBDIR             = 
    1832  
    1833 # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it 
    1834 # will generate one additional man file for each entity documented in the real 
    1835 # man page(s). These additional files only source the real man page, but without 
    1836 # them the man command would be unable to find the correct page. 
    1837 # The default value is: NO. 
    1838 # This tag requires that the tag GENERATE_MAN is set to YES. 
     1324# If the MAN_LINKS tag is set to YES and Doxygen generates man output,  
     1325# then it will generate one additional man file for each entity  
     1326# documented in the real man page(s). These additional files  
     1327# only source the real man page, but without them the man command  
     1328# would be unable to find the correct page. The default is NO. 
    18391329 
    18401330MAN_LINKS              = NO 
    18411331 
    18421332#--------------------------------------------------------------------------- 
    1843 # Configuration options related to the XML output 
    1844 #--------------------------------------------------------------------------- 
    1845  
    1846 # If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that 
    1847 # captures the structure of the code including all documentation. 
    1848 # The default value is: NO. 
     1333# configuration options related to the XML output 
     1334#--------------------------------------------------------------------------- 
     1335 
     1336# If the GENERATE_XML tag is set to YES Doxygen will  
     1337# generate an XML file that captures the structure of  
     1338# the code including all documentation. 
    18491339 
    18501340GENERATE_XML           = NO 
    18511341 
    1852 # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a 
    1853 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of 
    1854 # it. 
    1855 # The default directory is: xml. 
    1856 # This tag requires that the tag GENERATE_XML is set to YES. 
     1342# The XML_OUTPUT tag is used to specify where the XML pages will be put.  
     1343# If a relative path is entered the value of OUTPUT_DIRECTORY will be  
     1344# put in front of it. If left blank `xml' will be used as the default path. 
    18571345 
    18581346XML_OUTPUT             = xml 
    18591347 
    1860 # If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program 
    1861 # listings (including syntax highlighting and cross-referencing information) to 
    1862 # the XML output. Note that enabling this will significantly increase the size 
    1863 # of the XML output. 
    1864 # The default value is: YES. 
    1865 # This tag requires that the tag GENERATE_XML is set to YES. 
     1348# The XML_SCHEMA tag can be used to specify an XML schema,  
     1349# which can be used by a validating XML parser to check the  
     1350# syntax of the XML files. 
     1351 
     1352XML_SCHEMA             =  
     1353 
     1354# The XML_DTD tag can be used to specify an XML DTD,  
     1355# which can be used by a validating XML parser to check the  
     1356# syntax of the XML files. 
     1357 
     1358XML_DTD                =  
     1359 
     1360# If the XML_PROGRAMLISTING tag is set to YES Doxygen will  
     1361# dump the program listings (including syntax highlighting  
     1362# and cross-referencing information) to the XML output. Note that  
     1363# enabling this will significantly increase the size of the XML output. 
    18661364 
    18671365XML_PROGRAMLISTING     = YES 
    18681366 
    18691367#--------------------------------------------------------------------------- 
    1870 # Configuration options related to the DOCBOOK output 
    1871 #--------------------------------------------------------------------------- 
    1872  
    1873 # If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files 
    1874 # that can be used to generate PDF. 
    1875 # The default value is: NO. 
    1876  
    1877 GENERATE_DOCBOOK       = NO 
    1878  
    1879 # The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. 
    1880 # If a relative path is entered the value of OUTPUT_DIRECTORY will be put in 
    1881 # front of it. 
    1882 # The default directory is: docbook. 
    1883 # This tag requires that the tag GENERATE_DOCBOOK is set to YES. 
    1884  
    1885 DOCBOOK_OUTPUT         = docbook 
    1886  
    1887 # If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the 
    1888 # program listings (including syntax highlighting and cross-referencing 
    1889 # information) to the DOCBOOK output. Note that enabling this will significantly 
    1890 # increase the size of the DOCBOOK output. 
    1891 # The default value is: NO. 
    1892 # This tag requires that the tag GENERATE_DOCBOOK is set to YES. 
    1893  
    1894 DOCBOOK_PROGRAMLISTING = NO 
    1895  
    1896 #--------------------------------------------------------------------------- 
    1897 # Configuration options for the AutoGen Definitions output 
    1898 #--------------------------------------------------------------------------- 
    1899  
    1900 # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an 
    1901 # AutoGen Definitions (see http://autogen.sf.net) file that captures the 
    1902 # structure of the code including all documentation. Note that this feature is 
    1903 # still experimental and incomplete at the moment. 
    1904 # The default value is: NO. 
     1368# configuration options for the AutoGen Definitions output 
     1369#--------------------------------------------------------------------------- 
     1370 
     1371# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will  
     1372# generate an AutoGen Definitions (see autogen.sf.net) file  
     1373# that captures the structure of the code including all  
     1374# documentation. Note that this feature is still experimental  
     1375# and incomplete at the moment. 
    19051376 
    19061377GENERATE_AUTOGEN_DEF   = NO 
    19071378 
    19081379#--------------------------------------------------------------------------- 
    1909 # Configuration options related to the Perl module output 
    1910 #--------------------------------------------------------------------------- 
    1911  
    1912 # If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module 
    1913 # file that captures the structure of the code including all documentation. 
    1914 # 
    1915 # Note that this feature is still experimental and incomplete at the moment. 
    1916 # The default value is: NO. 
     1380# configuration options related to the Perl module output 
     1381#--------------------------------------------------------------------------- 
     1382 
     1383# If the GENERATE_PERLMOD tag is set to YES Doxygen will  
     1384# generate a Perl module file that captures the structure of  
     1385# the code including all documentation. Note that this  
     1386# feature is still experimental and incomplete at the  
     1387# moment. 
    19171388 
    19181389GENERATE_PERLMOD       = NO 
    19191390 
    1920 # If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary 
    1921 # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI 
    1922 # output from the Perl module output. 
    1923 # The default value is: NO. 
    1924 # This tag requires that the tag GENERATE_PERLMOD is set to YES. 
     1391# If the PERLMOD_LATEX tag is set to YES Doxygen will generate  
     1392# the necessary Makefile rules, Perl scripts and LaTeX code to be able  
     1393# to generate PDF and DVI output from the Perl module output. 
    19251394 
    19261395PERLMOD_LATEX          = NO 
    19271396 
    1928 # If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely 
    1929 # formatted so it can be parsed by a human reader. This is useful if you want to 
    1930 # understand what is going on. On the other hand, if this tag is set to NO, the 
    1931 # size of the Perl module output will be much smaller and Perl will parse it 
    1932 # just the same. 
    1933 # The default value is: YES. 
    1934 # This tag requires that the tag GENERATE_PERLMOD is set to YES. 
     1397# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be  
     1398# nicely formatted so it can be parsed by a human reader.  This is useful  
     1399# if you want to understand what is going on.  On the other hand, if this  
     1400# tag is set to NO the size of the Perl module output will be much smaller  
     1401# and Perl will parse it just the same. 
    19351402 
    19361403PERLMOD_PRETTY         = YES 
    19371404 
    1938 # The names of the make variables in the generated doxyrules.make file are 
    1939 # prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful 
    1940 # so different doxyrules.make files included by the same Makefile don't 
    1941 # overwrite each other's variables. 
    1942 # This tag requires that the tag GENERATE_PERLMOD is set to YES. 
    1943  
    1944 PERLMOD_MAKEVAR_PREFIX = 
     1405# The names of the make variables in the generated doxyrules.make file  
     1406# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.  
     1407# This is useful so different doxyrules.make files included by the same  
     1408# Makefile don't overwrite each other's variables. 
     1409 
     1410PERLMOD_MAKEVAR_PREFIX =  
    19451411 
    19461412#--------------------------------------------------------------------------- 
     
    19481414#--------------------------------------------------------------------------- 
    19491415 
    1950 # If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all 
    1951 # C-preprocessor directives found in the sources and include files. 
    1952 # The default value is: YES. 
     1416# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will  
     1417# evaluate all C-preprocessor directives found in the sources and include  
     1418# files. 
    19531419 
    19541420ENABLE_PREPROCESSING   = YES 
    19551421 
    1956 # If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names 
    1957 # in the source code. If set to NO, only conditional compilation will be 
    1958 # performed. Macro expansion can be done in a controlled way by setting 
    1959 # EXPAND_ONLY_PREDEF to YES. 
    1960 # The default value is: NO. 
    1961 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
    1962  
    1963 MACRO_EXPANSION        = NO 
    1964  
    1965 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then 
    1966 # the macro expansion is limited to the macros specified with the PREDEFINED and 
    1967 # EXPAND_AS_DEFINED tags. 
    1968 # The default value is: NO. 
    1969 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
     1422# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro  
     1423# names in the source code. If set to NO (the default) only conditional  
     1424# compilation will be performed. Macro expansion can be done in a controlled  
     1425# way by setting EXPAND_ONLY_PREDEF to YES. 
     1426 
     1427MACRO_EXPANSION        = YES 
     1428 
     1429# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES  
     1430# then the macro expansion is limited to the macros specified with the  
     1431# PREDEFINED and EXPAND_AS_DEFINED tags. 
    19701432 
    19711433EXPAND_ONLY_PREDEF     = NO 
    19721434 
    1973 # If the SEARCH_INCLUDES tag is set to YES, the include files in the 
    1974 # INCLUDE_PATH will be searched if a #include is found. 
    1975 # The default value is: YES. 
    1976 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
     1435# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files  
     1436# pointed to by INCLUDE_PATH will be searched when a #include is found. 
    19771437 
    19781438SEARCH_INCLUDES        = YES 
    19791439 
    1980 # The INCLUDE_PATH tag can be used to specify one or more directories that 
    1981 # contain include files that are not input files but should be processed by the 
    1982 # preprocessor. 
    1983 # This tag requires that the tag SEARCH_INCLUDES is set to YES. 
    1984  
    1985 INCLUDE_PATH           = 
    1986  
    1987 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
    1988 # patterns (like *.h and *.hpp) to filter out the header-files in the 
    1989 # directories. If left blank, the patterns specified with FILE_PATTERNS will be 
    1990 # used. 
    1991 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
    1992  
    1993 INCLUDE_FILE_PATTERNS  = 
    1994  
    1995 # The PREDEFINED tag can be used to specify one or more macro names that are 
    1996 # defined before the preprocessor is started (similar to the -D option of e.g. 
    1997 # gcc). The argument of the tag is a list of macros of the form: name or 
    1998 # name=definition (no spaces). If the definition and the "=" are omitted, "=1" 
    1999 # is assumed. To prevent a macro definition from being undefined via #undef or 
    2000 # recursively expanded use the := operator instead of the = operator. 
    2001 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
    2002  
    2003 PREDEFINED             = 
    2004  
    2005 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this 
    2006 # tag can be used to specify a list of macro names that should be expanded. The 
    2007 # macro definition that is found in the sources will be used. Use the PREDEFINED 
    2008 # tag if you want to use a different macro definition that overrules the 
    2009 # definition found in the source code. 
    2010 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
    2011  
    2012 EXPAND_AS_DEFINED      = 
    2013  
    2014 # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will 
    2015 # remove all references to function-like macros that are alone on a line, have 
    2016 # an all uppercase name, and do not end with a semicolon. Such function macros 
    2017 # are typically used for boiler-plate code, and will confuse the parser if not 
    2018 # removed. 
    2019 # The default value is: YES. 
    2020 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 
     1440# The INCLUDE_PATH tag can be used to specify one or more directories that  
     1441# contain include files that are not input files but should be processed by  
     1442# the preprocessor. 
     1443 
     1444INCLUDE_PATH           =  
     1445 
     1446# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard  
     1447# patterns (like *.h and *.hpp) to filter out the header-files in the  
     1448# directories. If left blank, the patterns specified with FILE_PATTERNS will  
     1449# be used. 
     1450 
     1451INCLUDE_FILE_PATTERNS  =  
     1452 
     1453# The PREDEFINED tag can be used to specify one or more macro names that  
     1454# are defined before the preprocessor is started (similar to the -D option of  
     1455# gcc). The argument of the tag is a list of macros of the form: name  
     1456# or name=definition (no spaces). If the definition and the = are  
     1457# omitted =1 is assumed. To prevent a macro definition from being  
     1458# undefined via #undef or recursively expanded use the := operator  
     1459# instead of the = operator. 
     1460 
     1461PREDEFINED             =  
     1462 
     1463# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then  
     1464# this tag can be used to specify a list of macro names that should be expanded.  
     1465# The macro definition that is found in the sources will be used.  
     1466# Use the PREDEFINED tag if you want to use a different macro definition that  
     1467# overrules the definition found in the source code. 
     1468 
     1469EXPAND_AS_DEFINED      =  
     1470 
     1471# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then  
     1472# doxygen's preprocessor will remove all references to function-like macros  
     1473# that are alone on a line, have an all uppercase name, and do not end with a  
     1474# semicolon, because these will confuse the parser if not removed. 
    20211475 
    20221476SKIP_FUNCTION_MACROS   = YES 
    20231477 
    20241478#--------------------------------------------------------------------------- 
    2025 # Configuration options related to external references 
    2026 #--------------------------------------------------------------------------- 
    2027  
    2028 # The TAGFILES tag can be used to specify one or more tag files. For each tag 
    2029 # file the location of the external documentation should be added. The format of 
    2030 # a tag file without this location is as follows: 
    2031 # TAGFILES = file1 file2 ... 
    2032 # Adding location for the tag files is done as follows: 
    2033 # TAGFILES = file1=loc1 "file2 = loc2" ... 
    2034 # where loc1 and loc2 can be relative or absolute paths or URLs. See the 
    2035 # section "Linking to external documentation" for more information about the use 
    2036 # of tag files. 
    2037 # Note: Each tag file must have a unique name (where the name does NOT include 
    2038 # the path). If a tag file is not located in the directory in which doxygen is 
    2039 # run, you must also specify the path to the tagfile here. 
    2040  
    2041 TAGFILES               = 
    2042  
    2043 # When a file name is specified after GENERATE_TAGFILE, doxygen will create a 
    2044 # tag file that is based on the input files it reads. See section "Linking to 
    2045 # external documentation" for more information about the usage of tag files. 
    2046  
    2047 GENERATE_TAGFILE       = 
    2048  
    2049 # If the ALLEXTERNALS tag is set to YES, all external class will be listed in 
    2050 # the class index. If set to NO, only the inherited external classes will be 
    2051 # listed. 
    2052 # The default value is: NO. 
     1479# Configuration::additions related to external references 
     1480#--------------------------------------------------------------------------- 
     1481 
     1482# The TAGFILES option can be used to specify one or more tagfiles.  
     1483# Optionally an initial location of the external documentation  
     1484# can be added for each tagfile. The format of a tag file without  
     1485# this location is as follows:  
     1486#   TAGFILES = file1 file2 ...  
     1487# Adding location for the tag files is done as follows:  
     1488#   TAGFILES = file1=loc1 "file2 = loc2" ...  
     1489# where "loc1" and "loc2" can be relative or absolute paths or  
     1490# URLs. If a location is present for each tag, the installdox tool  
     1491# does not have to be run to correct the links.  
     1492# Note that each tag file must have a unique name  
     1493# (where the name does NOT include the path)  
     1494# If a tag file is not located in the directory in which doxygen  
     1495# is run, you must also specify the path to the tagfile here. 
     1496 
     1497TAGFILES               =  
     1498 
     1499# When a file name is specified after GENERATE_TAGFILE, doxygen will create  
     1500# a tag file that is based on the input files it reads. 
     1501 
     1502GENERATE_TAGFILE       =  
     1503 
     1504# If the ALLEXTERNALS tag is set to YES all external classes will be listed  
     1505# in the class index. If set to NO only the inherited external classes  
     1506# will be listed. 
    20531507 
    20541508ALLEXTERNALS           = NO 
    20551509 
    2056 # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed 
    2057 # in the modules index. If set to NO, only the current project's groups will be 
    2058 # listed. 
    2059 # The default value is: YES. 
     1510# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed  
     1511# in the modules index. If set to NO, only the current project's groups will  
     1512# be listed. 
    20601513 
    20611514EXTERNAL_GROUPS        = YES 
    20621515 
    2063 # If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in 
    2064 # the related pages index. If set to NO, only the current project's pages will 
    2065 # be listed. 
    2066 # The default value is: YES. 
    2067  
    2068 EXTERNAL_PAGES         = YES 
    2069  
    2070 # The PERL_PATH should be the absolute path and name of the perl script 
    2071 # interpreter (i.e. the result of 'which perl'). 
    2072 # The default file (with absolute path) is: /usr/bin/perl. 
     1516# The PERL_PATH should be the absolute path and name of the perl script  
     1517# interpreter (i.e. the result of `which perl'). 
    20731518 
    20741519PERL_PATH              = /usr/bin/perl 
     
    20781523#--------------------------------------------------------------------------- 
    20791524 
    2080 # If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram 
    2081 # (in HTML and LaTeX) for classes with base or super classes. Setting the tag to 
    2082 # NO turns the diagrams off. Note that this option also works with HAVE_DOT 
    2083 # disabled, but it is recommended to install and use dot, since it yields more 
    2084 # powerful graphs. 
    2085 # The default value is: YES. 
     1525# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will  
     1526# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base  
     1527# or super classes. Setting the tag to NO turns the diagrams off. Note that  
     1528# this option also works with HAVE_DOT disabled, but it is recommended to  
     1529# install and use dot, since it yields more powerful graphs. 
    20861530 
    20871531CLASS_DIAGRAMS         = YES 
    20881532 
    2089 # You can define message sequence charts within doxygen comments using the \msc 
    2090 # command. Doxygen will then run the mscgen tool (see: 
    2091 # http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the 
    2092 # documentation. The MSCGEN_PATH tag allows you to specify the directory where 
    2093 # the mscgen tool resides. If left empty the tool is assumed to be found in the 
     1533# You can define message sequence charts within doxygen comments using the \msc  
     1534# command. Doxygen will then run the mscgen tool (see  
     1535# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the  
     1536# documentation. The MSCGEN_PATH tag allows you to specify the directory where  
     1537# the mscgen tool resides. If left empty the tool is assumed to be found in the  
    20941538# default search path. 
    20951539 
    2096 MSCGEN_PATH            = 
    2097  
    2098 # You can include diagrams made with dia in doxygen documentation. Doxygen will 
    2099 # then run dia to produce the diagram and insert it in the documentation. The 
    2100 # DIA_PATH tag allows you to specify the directory where the dia binary resides. 
    2101 # If left empty dia is assumed to be found in the default search path. 
    2102  
    2103 DIA_PATH               = 
    2104  
    2105 # If set to YES the inheritance and collaboration graphs will hide inheritance 
    2106 # and usage relations if the target is undocumented or is not a class. 
    2107 # The default value is: YES. 
     1540MSCGEN_PATH            =  
     1541 
     1542# If set to YES, the inheritance and collaboration graphs will hide  
     1543# inheritance and usage relations if the target is undocumented  
     1544# or is not a class. 
    21081545 
    21091546HIDE_UNDOC_RELATIONS   = YES 
    21101547 
    2111 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
    2112 # available from the path. This tool is part of Graphviz (see: 
    2113 # http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent 
    2114 # Bell Labs. The other options in this section have no effect if this option is 
    2115 # set to NO 
    2116 # The default value is: YES. 
     1548# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is  
     1549# available from the path. This tool is part of Graphviz, a graph visualization  
     1550# toolkit from AT&T and Lucent Bell Labs. The other options in this section  
     1551# have no effect if this option is set to NO (the default) 
    21171552 
    21181553HAVE_DOT               = YES 
    21191554 
    2120 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed 
    2121 # to run in parallel. When set to 0 doxygen will base this on the number of 
    2122 # processors available in the system. You can set it explicitly to a value 
    2123 # larger than 0 to get control over the balance between CPU load and processing 
    2124 # speed. 
    2125 # Minimum value: 0, maximum value: 32, default value: 0. 
    2126 # This tag requires that the tag HAVE_DOT is set to YES. 
     1555# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is  
     1556# allowed to run in parallel. When set to 0 (the default) doxygen will  
     1557# base this on the number of processors available in the system. You can set it  
     1558# explicitly to a value larger than 0 to get control over the balance  
     1559# between CPU load and processing speed. 
    21271560 
    21281561DOT_NUM_THREADS        = 0 
    21291562 
    2130 # When you want a differently looking font in the dot files that doxygen 
    2131 # generates you can specify the font name using DOT_FONTNAME. You need to make 
    2132 # sure dot is able to find the font, which can be done by putting it in a 
    2133 # standard location or by setting the DOTFONTPATH environment variable or by 
    2134 # setting DOT_FONTPATH to the directory containing the font. 
    2135 # The default value is: Helvetica. 
    2136 # This tag requires that the tag HAVE_DOT is set to YES. 
     1563# By default doxygen will write a font called Helvetica to the output  
     1564# directory and reference it in all dot files that doxygen generates.  
     1565# When you want a differently looking font you can specify the font name  
     1566# using DOT_FONTNAME. You need to make sure dot is able to find the font,  
     1567# which can be done by putting it in a standard location or by setting the  
     1568# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory  
     1569# containing the font. 
    21371570 
    21381571DOT_FONTNAME           = Helvetica 
    21391572 
    2140 # The DOT_FONTSIZE tag can be used to set the size (in points) of the font of 
    2141 # dot graphs. 
    2142 # Minimum value: 4, maximum value: 24, default value: 10. 
    2143 # This tag requires that the tag HAVE_DOT is set to YES. 
     1573# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.  
     1574# The default size is 10pt. 
    21441575 
    21451576DOT_FONTSIZE           = 10 
    21461577 
    2147 # By default doxygen will tell dot to use the default font as specified with 
    2148 # DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set 
    2149 # the path where dot can find it using this tag. 
    2150 # This tag requires that the tag HAVE_DOT is set to YES. 
    2151  
    2152 DOT_FONTPATH           = 
    2153  
    2154 # If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for 
    2155 # each documented class showing the direct and indirect inheritance relations. 
    2156 # Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. 
    2157 # The default value is: YES. 
    2158 # This tag requires that the tag HAVE_DOT is set to YES. 
     1578# By default doxygen will tell dot to use the output directory to look for the  
     1579# FreeSans.ttf font (which doxygen will put there itself). If you specify a  
     1580# different font using DOT_FONTNAME you can set the path where dot  
     1581# can find it using this tag. 
     1582 
     1583DOT_FONTPATH           =  
     1584 
     1585# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen  
     1586# will generate a graph for each documented class showing the direct and  
     1587# indirect inheritance relations. Setting this tag to YES will force the  
     1588# the CLASS_DIAGRAMS tag to NO. 
    21591589 
    21601590CLASS_GRAPH            = YES 
    21611591 
    2162 # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a 
    2163 # graph for each documented class showing the direct and indirect implementation 
    2164 # dependencies (inheritance, containment, and class references variables) of the 
    2165 # class with other documented classes. 
    2166 # The default value is: YES. 
    2167 # This tag requires that the tag HAVE_DOT is set to YES. 
     1592# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen  
     1593# will generate a graph for each documented class showing the direct and  
     1594# indirect implementation dependencies (inheritance, containment, and  
     1595# class references variables) of the class with other documented classes. 
    21681596 
    21691597COLLABORATION_GRAPH    = YES 
    21701598 
    2171 # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for 
    2172 # groups, showing the direct groups dependencies. 
    2173 # The default value is: YES. 
    2174 # This tag requires that the tag HAVE_DOT is set to YES. 
     1599# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen  
     1600# will generate a graph for groups, showing the direct groups dependencies 
    21751601 
    21761602GROUP_GRAPHS           = YES 
    21771603 
    2178 # If the UML_LOOK tag is set to YES, doxygen will generate inheritance and 
    2179 # collaboration diagrams in a style similar to the OMG's Unified Modeling 
     1604# If the UML_LOOK tag is set to YES doxygen will generate inheritance and  
     1605# collaboration diagrams in a style similar to the OMG's Unified Modeling  
    21801606# Language. 
    2181 # The default value is: NO. 
    2182 # This tag requires that the tag HAVE_DOT is set to YES. 
    2183  
    2184 UML_LOOK               = NO 
    2185  
    2186 # If the UML_LOOK tag is enabled, the fields and methods are shown inside the 
    2187 # class node. If there are many fields or methods and many nodes the graph may 
    2188 # become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the 
    2189 # number of items for each type to make the size more manageable. Set this to 0 
    2190 # for no limit. Note that the threshold may be exceeded by 50% before the limit 
    2191 # is enforced. So when you set the threshold to 10, up to 15 fields may appear, 
    2192 # but if the number exceeds 15, the total amount of fields shown is limited to 
    2193 # 10. 
    2194 # Minimum value: 0, maximum value: 100, default value: 10. 
    2195 # This tag requires that the tag HAVE_DOT is set to YES. 
    2196  
    2197 UML_LIMIT_NUM_FIELDS   = 10 
    2198  
    2199 # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and 
    2200 # collaboration graphs will show the relations between templates and their 
    2201 # instances. 
    2202 # The default value is: NO. 
    2203 # This tag requires that the tag HAVE_DOT is set to YES. 
    2204  
    2205 TEMPLATE_RELATIONS     = NO 
    2206  
    2207 # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to 
    2208 # YES then doxygen will generate a graph for each documented file showing the 
    2209 # direct and indirect include dependencies of the file with other documented 
    2210 # files. 
    2211 # The default value is: YES. 
    2212 # This tag requires that the tag HAVE_DOT is set to YES. 
     1607 
     1608UML_LOOK               = YES 
     1609 
     1610# If set to YES, the inheritance and collaboration graphs will show the  
     1611# relations between templates and their instances. 
     1612 
     1613TEMPLATE_RELATIONS     = YES 
     1614 
     1615# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT  
     1616# tags are set to YES then doxygen will generate a graph for each documented  
     1617# file showing the direct and indirect include dependencies of the file with  
     1618# other documented files. 
    22131619 
    22141620INCLUDE_GRAPH          = YES 
    22151621 
    2216 # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are 
    2217 # set to YES then doxygen will generate a graph for each documented file showing 
    2218 # the direct and indirect include dependencies of the file with other documented 
    2219 # files. 
    2220 # The default value is: YES. 
    2221 # This tag requires that the tag HAVE_DOT is set to YES. 
     1622# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and  
     1623# HAVE_DOT tags are set to YES then doxygen will generate a graph for each  
     1624# documented header file showing the documented files that directly or  
     1625# indirectly include this file. 
    22221626 
    22231627INCLUDED_BY_GRAPH      = YES 
    22241628 
    2225 # If the CALL_GRAPH tag is set to YES then doxygen will generate a call 
    2226 # dependency graph for every global function or class method. 
    2227 # 
    2228 # Note that enabling this option will significantly increase the time of a run. 
    2229 # So in most cases it will be better to enable call graphs for selected 
    2230 # functions only using the \callgraph command. 
    2231 # The default value is: NO. 
    2232 # This tag requires that the tag HAVE_DOT is set to YES. 
    2233  
    2234 CALL_GRAPH             = NO 
    2235  
    2236 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller 
    2237 # dependency graph for every global function or class method. 
    2238 # 
    2239 # Note that enabling this option will significantly increase the time of a run. 
    2240 # So in most cases it will be better to enable caller graphs for selected 
    2241 # functions only using the \callergraph command. 
    2242 # The default value is: NO. 
    2243 # This tag requires that the tag HAVE_DOT is set to YES. 
    2244  
    2245 CALLER_GRAPH           = NO 
    2246  
    2247 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical 
    2248 # hierarchy of all classes instead of a textual one. 
    2249 # The default value is: YES. 
    2250 # This tag requires that the tag HAVE_DOT is set to YES. 
     1629# If the CALL_GRAPH and HAVE_DOT options are set to YES then  
     1630# doxygen will generate a call dependency graph for every global function  
     1631# or class method. Note that enabling this option will significantly increase  
     1632# the time of a run. So in most cases it will be better to enable call graphs  
     1633# for selected functions only using the \callgraph command. 
     1634 
     1635CALL_GRAPH             = YES 
     1636 
     1637# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then  
     1638# doxygen will generate a caller dependency graph for every global function  
     1639# or class method. Note that enabling this option will significantly increase  
     1640# the time of a run. So in most cases it will be better to enable caller  
     1641# graphs for selected functions only using the \callergraph command. 
     1642 
     1643CALLER_GRAPH           = YES 
     1644 
     1645# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen  
     1646# will generate a graphical hierarchy of all classes instead of a textual one. 
    22511647 
    22521648GRAPHICAL_HIERARCHY    = YES 
    22531649 
    2254 # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the 
    2255 # dependencies a directory has on other directories in a graphical way. The 
    2256 # dependency relations are determined by the #include relations between the 
    2257 # files in the directories. 
    2258 # The default value is: YES. 
    2259 # This tag requires that the tag HAVE_DOT is set to YES. 
     1650# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES  
     1651# then doxygen will show the dependencies a directory has on other directories  
     1652# in a graphical way. The dependency relations are determined by the #include  
     1653# relations between the files in the directories. 
    22601654 
    22611655DIRECTORY_GRAPH        = YES 
    22621656 
    2263 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
    2264 # generated by dot. 
    2265 # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order 
    2266 # to make the SVG files visible in IE 9+ (other browsers do not have this 
    2267 # requirement). 
    2268 # Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd, 
    2269 # png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo, 
    2270 # gif:cairo:gd, gif:gd, gif:gd:gd and svg. 
    2271 # The default value is: png. 
    2272 # This tag requires that the tag HAVE_DOT is set to YES. 
     1657# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images  
     1658# generated by dot. Possible values are svg, png, jpg, or gif.  
     1659# If left blank png will be used. 
    22731660 
    22741661DOT_IMAGE_FORMAT       = png 
    22751662 
    2276 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to 
    2277 # enable generation of interactive SVG images that allow zooming and panning. 
    2278 # 
    2279 # Note that this requires a modern browser other than Internet Explorer. Tested 
    2280 # and working are Firefox, Chrome, Safari, and Opera. 
    2281 # Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make 
    2282 # the SVG files visible. Older versions of IE do not have SVG support. 
    2283 # The default value is: NO. 
    2284 # This tag requires that the tag HAVE_DOT is set to YES. 
    2285  
    2286 INTERACTIVE_SVG        = NO 
    2287  
    2288 # The DOT_PATH tag can be used to specify the path where the dot tool can be 
     1663# The tag DOT_PATH can be used to specify the path where the dot tool can be  
    22891664# found. If left blank, it is assumed the dot tool can be found in the path. 
    2290 # This tag requires that the tag HAVE_DOT is set to YES. 
    2291  
    2292 DOT_PATH               = 
    2293  
    2294 # The DOTFILE_DIRS tag can be used to specify one or more directories that 
    2295 # contain dot files that are included in the documentation (see the \dotfile 
    2296 # command). 
    2297 # This tag requires that the tag HAVE_DOT is set to YES. 
    2298  
    2299 DOTFILE_DIRS           = 
    2300  
    2301 # The MSCFILE_DIRS tag can be used to specify one or more directories that 
    2302 # contain msc files that are included in the documentation (see the \mscfile 
    2303 # command). 
    2304  
    2305 MSCFILE_DIRS           = 
    2306  
    2307 # The DIAFILE_DIRS tag can be used to specify one or more directories that 
    2308 # contain dia files that are included in the documentation (see the \diafile 
    2309 # command). 
    2310  
    2311 DIAFILE_DIRS           = 
    2312  
    2313 # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the 
    2314 # path where java can find the plantuml.jar file. If left blank, it is assumed 
    2315 # PlantUML is not used or called during a preprocessing step. Doxygen will 
    2316 # generate a warning when it encounters a \startuml command in this case and 
    2317 # will not generate output for the diagram. 
    2318  
    2319 PLANTUML_JAR_PATH      = 
    2320  
    2321 # When using plantuml, the specified paths are searched for files specified by 
    2322 # the !include statement in a plantuml block. 
    2323  
    2324 PLANTUML_INCLUDE_PATH  = 
    2325  
    2326 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes 
    2327 # that will be shown in the graph. If the number of nodes in a graph becomes 
    2328 # larger than this value, doxygen will truncate the graph, which is visualized 
    2329 # by representing a node as a red box. Note that doxygen if the number of direct 
    2330 # children of the root node in a graph is already larger than 
    2331 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that 
    2332 # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. 
    2333 # Minimum value: 0, maximum value: 10000, default value: 50. 
    2334 # This tag requires that the tag HAVE_DOT is set to YES. 
     1665 
     1666DOT_PATH               =  
     1667 
     1668# The DOTFILE_DIRS tag can be used to specify one or more directories that  
     1669# contain dot files that are included in the documentation (see the  
     1670# \dotfile command). 
     1671 
     1672DOTFILE_DIRS           =  
     1673 
     1674# The MSCFILE_DIRS tag can be used to specify one or more directories that  
     1675# contain msc files that are included in the documentation (see the  
     1676# \mscfile command). 
     1677 
     1678MSCFILE_DIRS           =  
     1679 
     1680# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of  
     1681# nodes that will be shown in the graph. If the number of nodes in a graph  
     1682# becomes larger than this value, doxygen will truncate the graph, which is  
     1683# visualized by representing a node as a red box. Note that doxygen if the  
     1684# number of direct children of the root node in a graph is already larger than  
     1685# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note  
     1686# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. 
    23351687 
    23361688DOT_GRAPH_MAX_NODES    = 50 
    23371689 
    2338 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs 
    2339 # generated by dot. A depth value of 3 means that only nodes reachable from the 
    2340 # root by following a path via at most 3 edges will be shown. Nodes that lay 
    2341 # further from the root node will be omitted. Note that setting this option to 1 
    2342 # or 2 may greatly reduce the computation time needed for large code bases. Also 
    2343 # note that the size of a graph can be further restricted by 
     1690# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the  
     1691# graphs generated by dot. A depth value of 3 means that only nodes reachable  
     1692# from the root by following a path via at most 3 edges will be shown. Nodes  
     1693# that lay further from the root node will be omitted. Note that setting this  
     1694# option to 1 or 2 may greatly reduce the computation time needed for large  
     1695# code bases. Also note that the size of a graph can be further restricted by  
    23441696# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. 
    2345 # Minimum value: 0, maximum value: 1000, default value: 0. 
    2346 # This tag requires that the tag HAVE_DOT is set to YES. 
    23471697 
    23481698MAX_DOT_GRAPH_DEPTH    = 0 
    23491699 
    2350 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
    2351 # background. This is disabled by default, because dot on Windows does not seem 
    2352 # to support this out of the box. 
    2353 # 
    2354 # Warning: Depending on the platform used, enabling this option may lead to 
    2355 # badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
    2356 # read). 
    2357 # The default value is: NO. 
    2358 # This tag requires that the tag HAVE_DOT is set to YES. 
     1700# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent  
     1701# background. This is disabled by default, because dot on Windows does not  
     1702# seem to support this out of the box. Warning: Depending on the platform used,  
     1703# enabling this option may lead to badly anti-aliased labels on the edges of  
     1704# a graph (i.e. they become hard to read). 
    23591705 
    23601706DOT_TRANSPARENT        = NO 
    23611707 
    2362 # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output 
    2363 # files in one run (i.e. multiple -o and -T options on the command line). This 
    2364 # makes dot run faster, but since only newer versions of dot (>1.8.10) support 
    2365 # this, this feature is disabled by default. 
    2366 # The default value is: NO. 
    2367 # This tag requires that the tag HAVE_DOT is set to YES. 
     1708# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output  
     1709# files in one run (i.e. multiple -o and -T options on the command line). This  
     1710# makes dot run faster, but since only newer versions of dot (>1.8.10)  
     1711# support this, this feature is disabled by default. 
    23681712 
    23691713DOT_MULTI_TARGETS      = NO 
    23701714 
    2371 # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page 
    2372 # explaining the meaning of the various boxes and arrows in the dot generated 
    2373 # graphs. 
    2374 # The default value is: YES. 
    2375 # This tag requires that the tag HAVE_DOT is set to YES. 
     1715# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will  
     1716# generate a legend page explaining the meaning of the various boxes and  
     1717# arrows in the dot generated graphs. 
    23761718 
    23771719GENERATE_LEGEND        = YES 
    23781720 
    2379 # If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot 
    2380 # files that are used to generate the various graphs. 
    2381 # The default value is: YES. 
    2382 # This tag requires that the tag HAVE_DOT is set to YES. 
     1721# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will  
     1722# remove the intermediate dot files that are used to generate  
     1723# the various graphs. 
    23831724 
    23841725DOT_CLEANUP            = YES 
  • XIOS/dev/dev_olga/bld.cfg

    r1129 r1130  
    3434#bld::target xios_server.exe #test_remap.exe 
    3535bld::target xios_server.exe  
    36 #bld::target test_regular.exe 
     36bld::target test_regular.exe 
     37bld::target test_xios2_cmip6.exe 
    3738#bld::target test_new_features.exe test_unstruct_complete.exe  
    3839#bld::target test_client.exe  
  • XIOS/dev/dev_olga/src/buffer_client.cpp

    r1077 r1130  
    7474    int flag; 
    7575 
    76     int error, errclass, len; 
    77     char errstring[MPI_MAX_ERROR_STRING]; 
    78  
    7976    if (pending) 
    8077    { 
    8178      traceOff(); 
    82       MPI_Errhandler_set(interComm,MPI_ERRORS_RETURN); 
    83       error=MPI_Test(&request, &flag, &status); 
    84       if (error != MPI_SUCCESS) 
    85       { 
    86         MPI_Error_class(error, &errclass); 
    87         MPI_Error_string(error, errstring, &len); 
    88         ERROR("MPI error class: ", <<errclass<<" MPI error "<<errstring ); 
    89       } 
     79      MPI_Test(&request, &flag, &status); 
    9080      traceOn(); 
    9181      if (flag == true) pending = false; 
     
    9686      if (count > 0) 
    9787      { 
    98         MPI_Errhandler_set(interComm,MPI_ERRORS_RETURN); 
    99         error = MPI_Issend(buffer[current], count, MPI_CHAR, serverRank, 20, interComm, &request); 
    100         if (error != MPI_SUCCESS) 
    101         { 
    102           MPI_Error_class(error, &errclass); 
    103           MPI_Error_string(error, errstring, &len); 
    104           ERROR("MPI error class: ", <<errclass<<" MPI error "<<errstring ); 
    105         } 
     88        MPI_Issend(buffer[current], count, MPI_CHAR, serverRank, 20, interComm, &request); 
    10689        pending = true; 
    10790        if (current == 1) current = 0; 
  • XIOS/dev/dev_olga/src/client.cpp

    r1054 r1130  
    235235    } 
    236236 
    237 ///--------------------------------------------------------------- 
    238 /*! 
    239   * \fn void CClient::registerContextByClienOfServer(const string& id, MPI_Comm contextComm) 
    240   * \brief Sends a request to create contexts on secondary servers. Creates clientPrimServer/serverPrimServer contexts. 
    241   * \param [in] id id of context. 
    242   * \param [in] contextComm. 
    243   * Function is called by primary server. 
    244   * The only difference with CClient::registerContext() is naming of contexts on servers (appearing of pool id at the end). 
    245   */ 
    246 //        void CClient::registerContextByClientOfServer(const string& id, MPI_Comm contextComm) 
    247 //        { 
    248 //          CContext::setCurrent(id) ; 
    249 //          CContext* context=CContext::create(id); 
    250 //          StdString idServer(id); 
    251 //          idServer += "_server_"; 
    252 // 
    253 //          int size,rank,globalRank ; 
    254 //          size_t message_size ; 
    255 //          int leaderRank ; 
    256 //          MPI_Comm contextInterComm ; 
    257 // 
    258 //          MPI_Comm_size(contextComm,&size) ; 
    259 //          MPI_Comm_rank(contextComm,&rank) ; 
    260 //          MPI_Comm_rank(CXios::globalComm,&globalRank) ; 
    261 //          if (rank!=0) globalRank=0 ; 
    262 // 
    263 //          CMessage msg ; 
    264 // 
    265 //          int messageSize ; 
    266 //          void * buff ; 
    267 // 
    268 //          for (int i = 0; i < serverLeader.size(); ++i) 
    269 //          { 
    270 //            StdString str = idServer + boost::lexical_cast<string>(i); 
    271 //            msg<<str<<size<<globalRank ; 
    272 //            messageSize = msg.size() ; 
    273 //            buff = new char[messageSize] ; 
    274 //            CBufferOut buffer(buff,messageSize) ; 
    275 //            buffer<<msg ; 
    276 // 
    277 //            MPI_Send(buff, buffer.count(), MPI_CHAR, serverLeader[i], 1, CXios::globalComm) ; 
    278 //            MPI_Intercomm_create(contextComm, 0, CXios::globalComm, serverLeader[i], 10+globalRank, &contextInterComm) ; 
    279 //            info(10)<<"Register new Context : "<<id<<endl ; 
    280 //            MPI_Comm inter ; 
    281 //            MPI_Intercomm_merge(contextInterComm,0,&inter) ; 
    282 //            MPI_Barrier(inter) ; 
    283 // 
    284 //            context->initClient(contextComm,contextInterComm) ; 
    285 // 
    286 ////            contextInterComms.push_back(contextInterComm); 
    287 //            MPI_Comm_free(&inter); 
    288 //            delete [] buff ; 
    289 //          } 
    290 //        } 
    291  
    292237    void CClient::finalize(void) 
    293238    { 
  • XIOS/dev/dev_olga/src/client.hpp

    r1054 r1130  
    1414        static void finalize(void); 
    1515        static void registerContext(const string& id, MPI_Comm contextComm); 
    16 //        static void registerContextByClientOfServer(const string& id, MPI_Comm contextComm); 
    1716 
    1817        static MPI_Comm intraComm; 
  • XIOS/dev/dev_olga/src/context_client.cpp

    r1077 r1130  
    1111#include "timer.hpp" 
    1212#include "cxios.hpp" 
     13#include "server.hpp" 
    1314 
    1415namespace xios 
     
    8990        list<int> sizes = event.getSizes(); 
    9091 
    91         // We force the getBuffers call to be non-blocking on the servers 
     92        // We force the getBuffers call to be non-blocking on classical servers 
    9293        list<CBufferOut*> buffList; 
    93 //        bool couldBuffer = getBuffers(ranks, sizes, buffList, CXios::isServer); 
    94         bool couldBuffer = getBuffers(ranks, sizes, buffList, false); 
     94        bool couldBuffer = getBuffers(ranks, sizes, buffList, (!CXios::isClient && (CServer::serverLevel == 0) )); 
     95        //bool couldBuffer = getBuffers(ranks, sizes, buffList, false ); 
    9596 
    9697        if (couldBuffer) 
     
    212213        { 
    213214          checkBuffers(); 
    214  
    215          // WHY DO WE PUT HERE SERVER INTO LISTENING LOOP AT ALL???? 
    216 //            context->server->listen(); 
    217 //            for (int i = 0; i < context->serverPrimServer.size(); ++i) 
    218 //              context->serverPrimServer[i]->listen(); 
     215          if (CServer::serverLevel == 0) 
     216            context->server->listen(); 
     217 
     218          else if (CServer::serverLevel == 1) 
     219          { 
     220            context->server->listen(); 
     221            for (int i = 0; i < context->serverPrimServer.size(); ++i) 
     222              context->serverPrimServer[i]->listen(); 
     223          } 
     224 
     225          else if (CServer::serverLevel == 2) 
     226            context->server->listen(); 
     227 
    219228        } 
    220229      } while (!areBuffersFree && !nonBlocking); 
     230 
    221231      CTimer::get("Blocking time").suspend(); 
    222232 
     
    256266      map<int,CClientBuffer*>::iterator itBuff; 
    257267      bool pending = false; 
    258       for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) pending |= itBuff->second->checkBuffer(); 
     268      for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) 
     269        pending |= itBuff->second->checkBuffer(); 
    259270      return pending; 
    260271   } 
     
    274285   \return state of buffers, pending(true), ready(false) 
    275286   */ 
    276 //   bool CContextClient::checkBuffers(list<int>& ranks) 
    277287   bool CContextClient::checkBuffers(list<int>& ranks) 
    278288   { 
     
    358368 
    359369   /*! 
    360    Finalize context client and do some reports 
    361    */ 
    362 //  void CContextClient::finalize(void) 
    363   void CContextClient::finalize() 
     370   * Finalize context client and do some reports. Function is non-blocking. 
     371   */ 
     372  void CContextClient::finalize(void) 
    364373  { 
    365374    map<int,CClientBuffer*>::iterator itBuff; 
     
    386395 
    387396    CTimer::get("Blocking time").resume(); 
    388     while (!stop) 
     397//    while (!stop) 
    389398    { 
    390399      checkBuffers(); 
     
    393402 
    394403      stop = true; 
    395       for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) stop &= !itBuff->second->hasPendingRequest(); 
     404//      for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) stop &= !itBuff->second->hasPendingRequest(); 
    396405    } 
    397406    CTimer::get("Blocking time").suspend(); 
     
    409418    report(0) << " Memory report : Context <" << context->getId() << "> : client side : total memory used for buffer " << totalBuf << " bytes" << endl; 
    410419 
    411     releaseBuffers(); 
     420    //releaseBuffers(); // moved to CContext::finalize() 
    412421  } 
     422 
     423  /*! 
     424  */ 
     425  bool CContextClient::havePendingRequests(void) 
     426  { 
     427    bool pending = false; 
     428    map<int,CClientBuffer*>::iterator itBuff; 
     429    for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) 
     430      pending |= itBuff->second->hasPendingRequest(); 
     431    return pending; 
     432  } 
     433 
     434 
    413435} 
  • XIOS/dev/dev_olga/src/context_client.hpp

    r1077 r1130  
    4040      bool checkBuffers(void); 
    4141      void releaseBuffers(void); 
     42      bool havePendingRequests(void); 
    4243 
    4344      bool isServerLeader(void) const; 
     
    7172 
    7273      map<int,CClientBuffer*> buffers;         //!< Buffers for connection to servers 
    73 //      map<int,CClientBuffer*> buffersPrim;     //!< Buffers for connection to secondary servers 
    7474 
    7575    private: 
  • XIOS/dev/dev_olga/src/context_server.cpp

    r1071 r1130  
    2222namespace xios 
    2323{ 
    24   StdSize CContextServer::totalBuf_ = 0; 
    2524 
    2625  CContextServer::CContextServer(CContext* parent, MPI_Comm intraComm_,MPI_Comm interComm_) 
     
    4140    finished=false; 
    4241    boost::hash<string> hashString; 
    43     hashId=hashString(context->getId()); 
     42    if (CServer::serverLevel == 1) 
     43      hashId=hashString(context->getId() + boost::lexical_cast<string>(context->clientPrimServer.size())); 
     44    else 
     45      hashId=hashString(context->getId()); 
    4446  } 
    4547 
     
    169171    map<size_t,CEventServer*>::iterator it; 
    170172    CEventServer* event; 
    171     boost::hash<string> hashString; 
    172     size_t hashId=hashString(context->getId()); 
    173173 
    174174    it=events.find(currentTimeLine); 
     
    189189         // The best way to properly solve this problem will be to use the event scheduler also in attached mode 
    190190         // for now just set up a MPI barrier 
    191 //         if (!CServer::eventScheduler) MPI_Barrier(intraComm) ; 
     191         if (!CServer::eventScheduler && CXios::isServer) MPI_Barrier(intraComm) ; 
    192192 
    193193         CTimer::get("Process events").resume(); 
     
    218218    int rank; 
    219219    list<CEventServer::SSubEvent>::iterator it; 
    220 //    CContext::setCurrent(context->getId()); 
    221220    StdString ctxId = context->getId(); 
    222221    CContext::setCurrent(ctxId); 
     222    StdSize totalBuf = 0; 
    223223 
    224224    if (event.classId==CContext::GetType() && event.type==CContext::EVENT_ID_CONTEXT_FINALIZE) 
    225225    { 
    226226      finished=true; 
    227 //      info(20)<<"Server Side context <"<<context->getId()<<"> finalized"<<endl;            // moved to CContext::finalize() 
     227//      info(20)<<"Server Side context <"<<context->getId()<<"> finalized"<<endl;   // moved to CContext::finalize() 
    228228      std::map<int, StdSize>::const_iterator itbMap = mapBufferSize_.begin(), 
    229229                           iteMap = mapBufferSize_.end(), itMap; 
     
    231231      { 
    232232        rank = itMap->first; 
    233 //        report(10)<< " Memory report : Context <"<<ctxId<<"> : server side : memory used for buffer of each connection to client" << endl 
    234 //            << "  +) With client of rank " << rank << " : " << itMap->second << " bytes " << endl; 
    235         totalBuf_ += itMap->second; 
     233        report(10)<< " Memory report : Context <"<<ctxId<<"> : server side : memory used for buffer of each connection to client" << endl 
     234            << "  +) With client of rank " << rank << " : " << itMap->second << " bytes " << endl; 
     235        totalBuf += itMap->second; 
    236236      } 
    237237      context->finalize(); 
    238  
    239 //      report(0)<< " Memory report : Context <"<<ctxId<<"> : server side : total memory used for buffer "<<totalBuf<<" bytes"<<endl; // moved to CContext::finalize() 
     238      report(0)<< " Memory report : Context <"<<ctxId<<"> : server side : total memory used for buffer "<<totalBuf<<" bytes"<<endl; 
    240239    } 
    241240    else if (event.classId==CContext::GetType()) CContext::dispatchEvent(event); 
     
    261260  } 
    262261 
    263   size_t CContextServer::getTotalBuf(void) 
    264   { 
    265     return totalBuf_; 
    266   } 
    267  
    268262} 
  • XIOS/dev/dev_olga/src/context_server.hpp

    r1054 r1130  
    4747    size_t hashId ; 
    4848 
    49     static size_t getTotalBuf(void); 
    50  
    5149    ~CContextServer() ; 
    5250 
    5351    private: 
    5452    std::map<int, StdSize> mapBufferSize_; 
    55     static size_t totalBuf_ ;  /*!< Total memory allocated by servers per context.*/ 
    5653 
    5754  } ; 
  • XIOS/dev/dev_olga/src/cxios.cpp

    r1054 r1130  
    2525  bool CXios::isClient ; 
    2626  bool CXios::isServer ; 
    27 //  int CXios::serverLevel = 0 ; 
    2827  MPI_Comm CXios::globalComm ; 
    2928  bool CXios::usingOasis ; 
     
    143142    CServer::initialize(); 
    144143    isServer = true; 
    145     if (CServer::serverLevel == 1) 
    146       isClient = true; 
    147     else 
    148       isClient = false; 
     144    isClient = false; 
    149145 
    150146    if (CServer::getRank()==0) globalRegistry = new CRegistry(CServer::intraComm) ; 
  • XIOS/dev/dev_olga/src/io/nc4_data_output.cpp

    r1129 r1130  
    24572457           msg.append(context->getId()); msg.append("\n"); 
    24582458           msg.append(e.what()); 
    2459                ERROR("CNc4DataOutput::writeFieldData_ (CField*  field)", << msg); 
     2459           ERROR("CNc4DataOutput::writeFieldData_ (CField*  field)", << msg); 
    24602460         } 
    24612461      } 
  • XIOS/dev/dev_olga/src/node/context.cpp

    r1129 r1130  
    2626      : CObjectTemplate<CContext>(), CContextAttributes() 
    2727      , calendar(), hasClient(false), hasServer(false) 
    28       , isPostProcessed(false), finalized(false) 
     28      , isPostProcessed(false)//, finalized(false) 
    2929      , idServer_(), client(0), server(0) 
    30       , allProcessed(false) 
     30      , allProcessed(false), countChildCtx_(0) 
    3131   { /* Ne rien faire de plus */ } 
    3232 
     
    3434      : CObjectTemplate<CContext>(id), CContextAttributes() 
    3535      , calendar(), hasClient(false), hasServer(false) 
    36       , isPostProcessed(false), finalized(false) 
     36      , isPostProcessed(false)//, finalized(false) 
    3737      , idServer_(), client(0), server(0) 
    38       , allProcessed(false) 
     38      , allProcessed(false), countChildCtx_(0) 
    3939   { /* Ne rien faire de plus */ } 
    4040 
     
    300300     std::map<int, StdSize> dataBufferSize = getDataBufferSize(maxEventSize); 
    301301 
    302  
    303302     std::map<int, StdSize>::iterator it, ite = dataBufferSize.end(); 
    304303     for (it = dataBufferSize.begin(); it != ite; ++it) 
     
    351350     hasServer=true; 
    352351     server = new CContextServer(this,intraComm,interComm); 
    353 //     client = new CContextClient(this,intraComm,interComm, cxtClient); 
    354352 
    355353     registryIn=new CRegistry(intraComm); 
     
    373371       comms.push_back(interCommClient); 
    374372     } 
    375      client = new CContextClient(this,intraCommClient,interCommClient); 
    376  
     373     client = new CContextClient(this,intraCommClient,interCommClient,cxtClient); 
    377374   } 
    378375 
    379376   //! Try to send the buffers and receive possible answers 
    380    bool CContext::checkBuffersAndListen(void) 
    381    { 
    382      if (CServer::serverLevel == 0) 
    383      { 
    384        client->checkBuffers(); 
    385        bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 
    386        if (hasTmpBufferedEvent) 
    387          hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 
    388        // Don't process events if there is a temporarily buffered event 
    389        return server->eventLoop(!hasTmpBufferedEvent); 
    390      } 
    391  
    392      else if (CServer::serverLevel == 1) 
    393      { 
    394        client->checkBuffers(); 
    395        bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 
    396        if (hasTmpBufferedEvent) 
    397          hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 
    398        bool serverFinished = server->eventLoop(!hasTmpBufferedEvent); 
    399  
    400        bool serverPrimFinished = true; 
    401        for (int i = 0; i < clientPrimServer.size(); ++i) 
    402        { 
    403          clientPrimServer[i]->checkBuffers(); 
    404          bool hasTmpBufferedEventPrim = clientPrimServer[i]->hasTemporarilyBufferedEvent(); 
    405          if (hasTmpBufferedEventPrim) 
    406            hasTmpBufferedEventPrim = !clientPrimServer[i]->sendTemporarilyBufferedEvent(); 
    407 //         serverPrimFinished *= serverPrimServer[i]->eventLoop(!hasTmpBufferedEventPrim); 
    408          serverPrimFinished *= serverPrimServer[i]->eventLoop(); 
    409        } 
    410        return ( serverFinished && serverPrimFinished); 
    411      } 
    412  
    413      else if (CServer::serverLevel == 2) 
    414      { 
    415        client->checkBuffers(); 
    416        bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 
    417 //       if (hasTmpBufferedEvent) 
    418 //         hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 
    419 //       return server->eventLoop(!hasTmpBufferedEvent); 
    420        return server->eventLoop(); 
     377  bool CContext::checkBuffersAndListen(void) 
     378  { 
     379    bool clientReady, serverFinished; 
     380 
     381    // Only classical servers are non-blocking 
     382    if (CServer::serverLevel == 0) 
     383    { 
     384      client->checkBuffers(); 
     385      bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 
     386      if (hasTmpBufferedEvent) 
     387        hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 
     388      // Don't process events if there is a temporarily buffered event 
     389      return server->eventLoop(!hasTmpBufferedEvent); 
     390    } 
     391    else if (CServer::serverLevel == 1) 
     392    { 
     393      client->checkBuffers(); 
     394      bool serverFinished = server->eventLoop(); 
     395      bool serverPrimFinished = true; 
     396      for (int i = 0; i < clientPrimServer.size(); ++i) 
     397      { 
     398        clientPrimServer[i]->checkBuffers(); 
     399        serverPrimFinished *= serverPrimServer[i]->eventLoop(); 
    421400      } 
    422    } 
     401      return ( serverFinished && serverPrimFinished); 
     402    } 
     403 
     404    else if (CServer::serverLevel == 2) 
     405    { 
     406      client->checkBuffers(); 
     407      return server->eventLoop(); 
     408    } 
     409  } 
    423410 
    424411   //! Terminate a context 
    425412   void CContext::finalize(void) 
    426413   { 
    427      if (!finalized) 
    428      { 
    429        finalized = true; 
    430  
     414     // Send registry upon calling the function the first time 
     415     if (countChildCtx_ == 0) 
    431416       if (hasClient) sendRegistry() ; 
    432417 
    433        if ((hasClient) && (hasServer)) 
     418     // Client: 
     419     // (1) blocking send context finalize to its server 
     420     // (2) blocking receive context finalize from its server 
     421     if (CXios::isClient) 
     422     { 
     423       // Make sure that client (model) enters the loop only once 
     424       if (countChildCtx_ < 1) 
    434425       { 
     426         ++countChildCtx_; 
     427 
     428         client->finalize(); 
     429         while (client->havePendingRequests()) 
     430            client->checkBuffers(); 
     431 
     432         while (!server->hasFinished()) 
     433           server->eventLoop(); 
     434       } 
     435     } 
     436     // Server: non-blocking send context finalize 
     437     else if (CXios::isServer) 
     438     { 
     439       // First context finalize message received from a model => send context finalize to its child contexts (if any) 
     440       if (countChildCtx_ == 0) 
    435441         for (int i = 0; i < clientPrimServer.size(); ++i) 
    436442           clientPrimServer[i]->finalize(); 
    437443 
    438          for (int i = 0; i < serverPrimServer.size(); ++i) 
    439          { 
    440            while (!serverPrimServer[i]->hasFinished()) 
    441            { 
    442              serverPrimServer[i]->eventLoop(); 
    443              CServer::eventScheduler->checkEvent() ; 
    444            } 
    445          } 
    446        } 
    447        client->finalize(); 
    448        while (!server->hasFinished()) 
    449        { 
    450          server->eventLoop(); 
    451        } 
    452  
    453        info(20)<<"Server Side context <"<<getId()<<"> finalized"<<endl; 
    454        report(0)<< " Memory report : Context <"<<getId()<<"> : server side : total memory used for buffers "<<CContextServer::getTotalBuf()<<" bytes"<<endl; 
    455  
    456 //       if (hasServer) 
    457        if (hasServer && !hasClient) 
    458        { 
    459          closeAllFile(); 
    460          registryOut->hierarchicalGatherRegistry() ; 
    461          if (server->intraCommRank==0) CXios::globalRegistry->mergeRegistry(*registryOut) ; 
    462        } 
    463       } 
    464    } 
    465  
    466    //! Free internally allocated communicators 
    467    void CContext::freeComms(void) 
    468    { 
     444       // (Last) context finalized message received => send context finalize to its parent context 
     445       if (countChildCtx_ == clientPrimServer.size()) 
     446         client->finalize(); 
     447 
     448       ++countChildCtx_; 
     449     } 
     450 
     451     // If in mode attache call postFinalize 
     452     if (CXios::isServer && CXios::isClient) 
     453       postFinalize(); 
     454   } 
     455 
     456   /*! 
     457   * \fn void CContext::postFinalize(void) 
     458   * Close files, gather registries, , and make deallocations. 
     459   * Function is called when a context is finalized (it has nothing to receive and nothing to send). 
     460   */ 
     461   void CContext::postFinalize(void) 
     462   { 
     463     info(20)<<"Context <"<<getId()<<"> is finalized."<<endl; 
     464 
     465     //     if (hasServer && !hasClient) 
     466     { 
     467       closeAllFile(); 
     468       registryOut->hierarchicalGatherRegistry() ; 
     469       if (server->intraCommRank==0) CXios::globalRegistry->mergeRegistry(*registryOut) ; 
     470     } 
     471 
     472     //! Free internally allocated communicators 
    469473     for (std::list<MPI_Comm>::iterator it = comms.begin(); it != comms.end(); ++it) 
    470474       MPI_Comm_free(&(*it)); 
    471475     comms.clear(); 
     476 
     477     //! Deallocate client buffers 
     478     client->releaseBuffers(); 
     479     for (int i = 0; i < clientPrimServer.size(); ++i) 
     480       clientPrimServer[i]->releaseBuffers(); 
     481   } 
     482 
     483   //! Free internally allocated communicators 
     484   void CContext::freeComms(void) 
     485   { 
     486     for (std::list<MPI_Comm>::iterator it = comms.begin(); it != comms.end(); ++it) 
     487       MPI_Comm_free(&(*it)); 
     488     comms.clear(); 
     489   } 
     490 
     491   //! Deallocate buffers allocated by clientContexts 
     492   void CContext::releaseClientBuffers(void) 
     493   { 
     494     client->releaseBuffers(); 
     495     for (int i = 0; i < clientPrimServer.size(); ++i) 
     496       clientPrimServer[i]->releaseBuffers(); 
    472497   } 
    473498 
     
    509534 
    510535       // After that, send all grid (if any) 
    511        sendRefGrid();        
     536       sendRefGrid(); 
    512537 
    513538       // We have a xml tree on the server side and now, it should be also processed 
    514539       sendPostProcessing(); 
    515  
    516540       sendGridEnabledFields();        
    517541     } 
    518  
    519542     allProcessed = true; 
    520543   } 
     
    555578 
    556579   void CContext::recvPostProcessingGlobalAttributes(CBufferIn& buffer) 
    557    {       
     580   { 
     581      // CCalendarWrapper::get(CCalendarWrapper::GetDefName())->createCalendar(); 
    558582      postProcessingGlobalAttributes(); 
    559583   } 
     
    572596    postProcessingGlobalAttributes(); 
    573597 
    574     if (hasClient) sendPostProcessingGlobalAttributes();    
    575      
     598    if (hasClient) sendPostProcessingGlobalAttributes(); 
     599 
     600    // There are some processings that should be done after all of above. For example: check mask or index 
    576601    this->buildFilterGraphOfEnabledFields(); 
    577602     
    578     if (hasClient && !hasServer) 
     603     if (hasClient && !hasServer) 
    579604    { 
    580       buildFilterGraphOfFieldsWithReadAccess();       
     605      buildFilterGraphOfFieldsWithReadAccess(); 
    581606    } 
    582607 
     
    622647     { 
    623648       this->enabledFiles[i]->solveOnlyRefOfEnabledFields(false); 
    624        // this->enabledFiles[i]->solveAllReferenceEnabledField(false); 
    625649     } 
    626650 
     
    649673   } 
    650674 
    651  
    652  
    653675   void CContext::solveOnlyRefOfEnabledFields(bool sendToServer) 
    654676   { 
     
    663685       this->enabledFiles[i]->generateNewTransformationGridDest(); 
    664686     } 
     687 
    665688   } 
    666689 
     
    857880   } 
    858881 
    859 //   // Only send close definition from process having hasClient 
    860 //   void CContext::sendCloseDefinitionToServer(void) 
    861 //   { 
    862 //     CEventClient event(getType(),EVENT_ID_CLOSE_DEFINITION); 
    863 //   } 
    864  
    865882   //! Client side: Send a message to server to make it close 
    866883   void CContext::sendCloseDefinition(void) 
    867884   { 
    868885     // Use correct context client to send message 
    869      // int nbSrvPools = (hasServer) ? clientPrimServer.size() : 1; 
    870886     int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
    871887     for (int i = 0; i < nbSrvPools; ++i) 
     
    902918   { 
    903919     // Use correct context client to send message 
    904 //     CContextClient* contextClientTmp = (0 != clientPrimServer) ? clientPrimServer : client; 
    905      // int nbSrvPools = (hasServer) ? clientPrimServer.size() : 1; 
    906920    int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
    907921     for (int i = 0; i < nbSrvPools; ++i) 
     
    14621476   void CContext::updateCalendar(int step) 
    14631477   { 
    1464       info(50) << "updateCalendar : before : " << calendar->getCurrentDate() << endl; 
     1478      info(50) <<"Context "<< this->getId() <<" updateCalendar : before : " << calendar->getCurrentDate() << endl; 
    14651479      calendar->update(step); 
    1466       info(50) << "updateCalendar : after : " << calendar->getCurrentDate() << endl; 
     1480      info(50) <<"Context "<< this->getId() << " updateCalendar : after : " << calendar->getCurrentDate() << endl; 
    14671481 
    14681482      if (hasClient) 
     
    15691583  } 
    15701584 
     1585  /*! 
     1586  * \fn bool CContext::isFinalized(void) 
     1587  * Context is finalized if: 
     1588  * (1) it has received all context finalize events 
     1589  * (2) it has no pending events to send. 
     1590  */ 
    15711591  bool CContext::isFinalized(void) 
    15721592  { 
    1573     return finalized; 
     1593    if (countChildCtx_==clientPrimServer.size()+1) 
     1594    { 
     1595      bool buffersReleased = !client->havePendingRequests(); 
     1596      for (int i = 0; i < clientPrimServer.size(); ++i) 
     1597        buffersReleased *= !clientPrimServer[i]->havePendingRequests(); 
     1598      return buffersReleased; 
     1599    } 
     1600    else 
     1601      return false; 
    15741602  } 
    15751603 
  • XIOS/dev/dev_olga/src/node/context.hpp

    r1129 r1130  
    9999         // Finalize a context 
    100100         void finalize(void); 
     101         void postFinalize(void); 
     102         bool isFinalized(void); 
     103 
    101104         void closeDefinition(void); 
    102          bool isFinalized(void); 
    103105 
    104106         // Some functions to process context 
     
    167169         void recvRegistry(CBufferIn& buffer) ; //!< registry is received by the servers 
    168170 
    169          void freeComms(void); //!< Free internally allcoated communicators 
     171         void freeComms(void);                  //!< Free internally allcoated communicators 
     172         void releaseClientBuffers(void);       //! Deallocate buffers allocated by clientContexts 
    170173 
    171174         // dispatch event 
     
    233236         bool hasServer; 
    234237 
    235          CContextServer* server;  //!< Concrete context server 
    236          CContextClient* client;  //!< Concrete contex client 
     238         CContextServer* server;    //!< Concrete context server 
     239         CContextClient* client;    //!< Concrete contex client 
    237240         std::vector<CContextServer*> serverPrimServer; 
    238241         std::vector<CContextClient*> clientPrimServer; 
    239242 
    240          CRegistry* registryIn ;  //!< input registry which is read from file 
    241          CRegistry* registryOut ; //!< output registry which will be wrote on file at the finalize 
     243         CRegistry* registryIn ;    //!< input registry which is read from file 
     244         CRegistry* registryOut ;   //!< output registry which will be written into file at the finalize 
    242245 
    243246      private: 
    244247         bool isPostProcessed; 
    245248         bool allProcessed; 
    246          bool finalized; 
     249//         bool finalized; 
     250         int countChildCtx_;        //!< Counter of child contexts (for now it is the number of secondary server pools) 
    247251         StdString idServer_; 
    248252         CGarbageCollector garbageCollector; 
  • XIOS/dev/dev_olga/src/node/domain.cpp

    r1129 r1130  
    30513051       if ((0 <= indexI) && (0 <= indexJ)) 
    30523052       { 
    3053           data_i_index(nbCompressedData) = (1 == data_dim) ? ind : i_index(ind) - i_index(0); 
    3054           data_j_index(nbCompressedData) = (1 == data_dim) ? 0   : j_index(ind) - j_index(0);   
     3053          data_i_index(nbCompressedData) = (1 == data_dim) ? ind : ind % ni; 
     3054          data_j_index(nbCompressedData) = (1 == data_dim) ? 0   : ind / ni; 
    30553055         ++nbCompressedData; 
    30563056       } 
  • XIOS/dev/dev_olga/src/node/file.cpp

    r1129 r1130  
    866866   { 
    867867      sendAddItem(id, EVENT_ID_ADD_FIELD); 
    868     // CContext* context = CContext::getCurrent(); 
    869  
    870     // if (! context->hasServer ) 
    871     // { 
    872     //    CContextClient* client = context->client; 
    873  
    874     //    CEventClient event(this->getType(),EVENT_ID_ADD_FIELD); 
    875     //    if (client->isServerLeader()) 
    876     //    { 
    877     //      CMessage msg; 
    878     //      msg << this->getId(); 
    879     //      msg << id; 
    880     //      const std::list<int>& ranks = client->getRanksServerLeader(); 
    881     //      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    882     //        event.push(*itRank,1,msg); 
    883     //      client->sendEvent(event); 
    884     //    } 
    885     //    else client->sendEvent(event); 
    886     // } 
    887  
    888868   } 
    889869 
     
    891871   { 
    892872      sendAddItem(id, EVENT_ID_ADD_FIELD, client); 
    893     // CContext* context = CContext::getCurrent(); 
    894  
    895     // if (! context->hasServer ) 
    896     // { 
    897     //    CContextClient* client = context->client; 
    898  
    899     //    CEventClient event(this->getType(),EVENT_ID_ADD_FIELD); 
    900     //    if (client->isServerLeader()) 
    901     //    { 
    902     //      CMessage msg; 
    903     //      msg << this->getId(); 
    904     //      msg << id; 
    905     //      const std::list<int>& ranks = client->getRanksServerLeader(); 
    906     //      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    907     //        event.push(*itRank,1,msg); 
    908     //      client->sendEvent(event); 
    909     //    } 
    910     //    else client->sendEvent(event); 
    911     // } 
    912  
    913873   } 
    914874 
     
    920880   { 
    921881      sendAddItem(id, (int)EVENT_ID_ADD_FIELD_GROUP); 
    922     // CContext* context = CContext::getCurrent(); 
    923     // if (! context->hasServer ) 
    924     // { 
    925     //    CContextClient* client = context->client; 
    926  
    927     //    CEventClient event(this->getType(),EVENT_ID_ADD_FIELD_GROUP); 
    928     //    if (client->isServerLeader()) 
    929     //    { 
    930     //      CMessage msg; 
    931     //      msg << this->getId(); 
    932     //      msg << id; 
    933     //      const std::list<int>& ranks = client->getRanksServerLeader(); 
    934     //      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    935     //        event.push(*itRank,1,msg); 
    936     //      client->sendEvent(event); 
    937     //    } 
    938     //    else client->sendEvent(event); 
    939     // } 
    940  
    941882   } 
    942883 
     
    1030971   { 
    1031972      sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE_GROUP); 
    1032     // CContext* context = CContext::getCurrent(); 
    1033     // if (! context->hasServer ) 
    1034     // { 
    1035     //    CContextClient* client = context->client; 
    1036  
    1037     //    CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP); 
    1038     //    if (client->isServerLeader()) 
    1039     //    { 
    1040     //      CMessage msg; 
    1041     //      msg << this->getId(); 
    1042     //      msg << id; 
    1043     //      const std::list<int>& ranks = client->getRanksServerLeader(); 
    1044     //      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    1045     //        event.push(*itRank,1,msg); 
    1046     //      client->sendEvent(event); 
    1047     //    } 
    1048     //    else client->sendEvent(event); 
    1049     // } 
    1050  
    1051973   } 
    1052974 
     
    1059981   { 
    1060982      sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE); 
    1061     // CContext* context = CContext::getCurrent(); 
    1062  
    1063     // if (! context->hasServer ) 
    1064     // { 
    1065     //    CContextClient* client = context->client; 
    1066  
    1067     //    CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 
    1068     //    if (client->isServerLeader()) 
    1069     //    { 
    1070     //      CMessage msg; 
    1071     //      msg << this->getId(); 
    1072     //      msg << id; 
    1073     //      const std::list<int>& ranks = client->getRanksServerLeader(); 
    1074     //      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    1075     //        event.push(*itRank,1,msg); 
    1076     //      client->sendEvent(event); 
    1077     //    } 
    1078     //    else client->sendEvent(event); 
    1079     // } 
    1080  
    1081983   } 
    1082984 
    1083985   void CFile::sendAddVariable(const string& id, CContextClient* client) 
    1084986   { 
    1085       sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE); 
    1086     // CContext* context = CContext::getCurrent(); 
    1087  
    1088     // if (! context->hasServer ) 
    1089     // { 
    1090     //    CContextClient* client = context->client; 
    1091  
    1092     //    CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 
    1093     //    if (client->isServerLeader()) 
    1094     //    { 
    1095     //      CMessage msg; 
    1096     //      msg << this->getId(); 
    1097     //      msg << id; 
    1098     //      const std::list<int>& ranks = client->getRanksServerLeader(); 
    1099     //      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    1100     //        event.push(*itRank,1,msg); 
    1101     //      client->sendEvent(event); 
    1102     //    } 
    1103     //    else client->sendEvent(event); 
    1104     // } 
    1105  
     987      sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE, client); 
    1106988   } 
    1107989 
     
    11531035      addVariableGroup(id); 
    11541036   } 
    1155  
    1156    /*! 
    1157      \brief Sending all active (enabled) fields from client to server. 
    1158    Each field is identified uniquely by its string identity. Not only should we 
    1159    send the id to server but also we need to send ids of reference domain and reference axis. 
    1160    With these two id, it's easier to make reference to grid where all data should be written. 
    1161    Remark: This function must be called AFTER all active (enabled) files have been created on the server side 
    1162    */ 
    1163 //   void CFile::sendEnabledFields() 
    1164 //   { 
    1165 //     size_t size = this->enabledFields.size(); 
    1166 //     for (size_t i = 0; i < size; ++i) 
    1167 //     { 
    1168 //       CField* field = this->enabledFields[i]; 
    1169 //       this->sendAddField(field->getId()); 
    1170 //       field->sendAllAttributesToServer(); 
    1171 //       field->sendAddAllVariables(); 
    1172 //     } 
    1173 //   } 
    11741037 
    11751038   /*! 
  • XIOS/dev/dev_olga/src/server.cpp

    r1077 r1130  
    6767 
    6868        boost::hash<string> hashString ; 
    69 //        unsigned long hashServer1 = hashString(CXios::xiosCodeIdPrm); 
    70 //        unsigned long hashServer2 = hashString(CXios::xiosCodeIdSnd); 
    71 //        unsigned long hashServer = (CXios::serverLevel < 2)  ? hashServer1 : hashServer2; 
    7269        unsigned long hashServer = hashString(CXios::xiosCodeId); 
    7370 
     
    193190      else 
    194191      { 
    195 //        int rank ,size; 
    196         int size; 
     192        int size, rank; 
     193        int myColor; 
    197194        if (!is_MPI_Initialized) oasis_init(CXios::xiosCodeId); 
    198195 
     
    200197        MPI_Comm localComm; 
    201198        oasis_get_localcomm(localComm); 
    202         MPI_Comm_dup(localComm, &intraComm); 
    203  
     199 
     200        // Create server intraComm 
     201        if (!CXios::usingServer2) 
     202          MPI_Comm_dup(localComm, &intraComm); 
     203        else 
     204        { 
     205          MPI_Comm_rank(localComm,&rank) ; 
     206          MPI_Comm_size(localComm,&serverSize_) ; 
     207          nbPools = serverSize_ * CXios::ratioServer2 / 100; 
     208          if ( rank < (serverSize_ - nbPools) ) 
     209          { 
     210            serverLevel = 1; 
     211            myColor = 0; 
     212          } 
     213          else 
     214          { 
     215            serverLevel = 2; 
     216            poolId = rank - serverSize_ + nbPools; 
     217            myColor = rank; 
     218          } 
     219          MPI_Comm_split(localComm, myColor, rank, &intraComm) ; 
     220 
     221        } 
    204222        MPI_Comm_rank(intraComm,&rank_) ; 
    205223        MPI_Comm_size(intraComm,&size) ; 
     224 
    206225        string codesId=CXios::getin<string>("oasis_codes_id") ; 
    207226 
     
    217236        { 
    218237          oasis_get_intercomm(newComm,*it) ; 
    219           if (rank_==0) MPI_Send(&globalRank,1,MPI_INT,0,0,newComm) ; 
    220           MPI_Comm_remote_size(newComm,&size); 
    221 //          interComm.push_back(newComm) ; 
    222           interCommLeft.push_back(newComm) ; 
     238//        interComm.push_back(newComm) ; 
     239          if ( !CXios::usingServer2) 
     240            interCommLeft.push_back(newComm) ; 
     241          else 
     242          { 
     243            if (serverLevel == 1) 
     244            { 
     245              info(50)<<"intercommCreate::server "<<rank_<<" intraCommSize : "<<size 
     246                       <<" intraCommRank :"<<rank_<<"  clientLeader "<< rank<<endl ; 
     247              MPI_Intercomm_create(intraComm, 0, localComm, rank, 0, &newComm) ; 
     248              interCommRight.push_back(newComm) ; 
     249 
     250            } 
     251            else if (serverLevel == 2) 
     252            { 
     253              info(50)<<"intercommCreate::server "<<rank_<<" intraCommSize : "<<size 
     254                       <<" intraCommRank :"<<rank_<<"  clientLeader "<< 0<<endl ; 
     255              MPI_Intercomm_create(intraComm, 0, localComm, 0, 0, &newComm) ; 
     256              interCommLeft.push_back(newComm) ; 
     257 
     258            } 
     259 
     260          } 
     261//          if (rank_==0) MPI_Send(&globalRank,1,MPI_INT,0,0,newComm) ; 
     262//          MPI_Comm_remote_size(newComm,&size); 
     263          // Send serverLeader to client 
     264          if (rank_==0) MPI_Send(&globalRank,1,MPI_INT,0,0,interCommLeft.back()) ; 
    223265        } 
    224266              oasis_enddef() ; 
     
    286328 
    287329         contextEventLoop() ; 
    288 //         if (finished && contextList.empty()) stop=true ; 
    289330         if (finished && contextList.empty()) stop=true ; 
    290331         eventScheduler->checkEvent() ; 
     
    510551         contextInterComms.push_back(inter); 
    511552         context->initServer(intraComm, contextInterComms.back()); 
    512 //         context->initServer(intraComm, interCommLeft.front()); 
    513553       } 
    514554 
     
    535575           contextIntraComms.push_back(inter); 
    536576           context->initClient(contextIntraComms.back(), contextInterComms.back()) ; 
    537 //           context->initClient(intraComm, contextPrimInterComms.back()) ; 
    538 //           context->initClient(intraComm, *it) ; 
    539577           delete [] buff ; 
    540578         } 
     
    545583     void CServer::contextEventLoop(void) 
    546584     { 
    547        bool finished ; 
     585       bool isFinalized ; 
    548586 
    549587       map<string,CContext*>::iterator it ; 
     
    551589       for(it=contextList.begin();it!=contextList.end();it++) 
    552590       { 
    553          finished=it->second->isFinalized(); 
    554          if (finished) 
    555          { 
    556            it->second->freeComms();  // deallocate internally allocated context communicators 
     591         isFinalized=it->second->isFinalized(); 
     592         if (isFinalized) 
     593         { 
     594           it->second->postFinalize(); 
    557595           contextList.erase(it) ; 
    558596           break ; 
    559597         } 
    560598         else 
    561            finished=it->second->checkBuffersAndListen(); 
     599         { 
     600           isFinalized=it->second->checkBuffersAndListen(); 
     601         } 
    562602       } 
    563603     } 
Note: See TracChangeset for help on using the changeset viewer.