- Timestamp:
- 02/17/17 19:51:36 (7 years ago)
- Location:
- XIOS/dev/dev_olga
- Files:
-
- 2 deleted
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/Doxyfile
r502 r1054 1 # Doxyfile 1. 7.41 # Doxyfile 1.8.9.1 2 2 3 3 # This file describes the settings to be used by the documentation system 4 # doxygen (www.doxygen.org) for a project 5 # 6 # All text after a hash (#) is considered a comment and will be ignored 4 # doxygen (www.doxygen.org) for a project. 5 # 6 # All text after a double hash (##) is considered a comment and is placed in 7 # front of the TAG it is preceding. 8 # 9 # All text after a single hash (#) is considered a comment and will be ignored. 7 10 # The format is: 8 # 9 # For lists items can also be appended using:10 # 11 # Values that contain spaces should be placed between quotes ( " ")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 (\" \"). 12 15 13 16 #--------------------------------------------------------------------------- … … 15 18 #--------------------------------------------------------------------------- 16 19 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. 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. 22 26 23 27 DOXYFILE_ENCODING = UTF-8 24 28 25 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded 26 # by quotes) that should identify the project. 27 28 PROJECT_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 34 PROJECT_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 40 PROJECT_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 47 PROJECT_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 54 OUTPUT_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. 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. 62 70 63 71 CREATE_SUBDIRS = NO 64 72 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 76 OUTPUT_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. 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. 82 100 83 101 BRIEF_MEMBER_DESC = YES 84 102 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 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 88 107 # brief descriptions will be completely suppressed. 108 # The default value is: YES. 89 109 90 110 REPEAT_BRIEF = YES 91 111 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 102 ABBREVIATE_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 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 116 125 # description. 126 # The default value is: NO. 117 127 118 128 ALWAYS_DETAILED_SEC = NO 119 129 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 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 123 133 # operators of the base classes will not be shown. 134 # The default value is: NO. 124 135 125 136 INLINE_INHERITED_MEMB = NO 126 137 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. 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. 130 142 131 143 FULL_PATH_NAMES = YES 132 144 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 140 STRIP_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 149 STRIP_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. 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. 154 170 155 171 SHORT_NAMES = NO 156 172 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.) 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. 162 179 163 180 JAVADOC_AUTOBRIEF = NO 164 181 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 171 QT_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. 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. 178 199 179 200 MULTILINE_CPP_IS_BRIEF = NO 180 201 181 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented182 # member inherits the documentation from any documented member that it183 # re-implements.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. 184 205 185 206 INHERIT_DOCS = YES 186 207 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. 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. 190 212 191 213 SEPARATE_MEMBER_PAGES = NO 192 214 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 196 TAB_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 205 ALIASES = 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. 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. 211 244 212 245 OPTIMIZE_OUTPUT_FOR_C = NO 213 246 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. 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. 218 252 219 253 OPTIMIZE_OUTPUT_JAVA = NO 220 254 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 for223 # Fortran.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. 224 258 225 259 OPTIMIZE_FOR_FORTRAN = NO 226 260 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.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. 230 264 231 265 OPTIMIZE_OUTPUT_VHDL = NO 232 266 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 243 EXTENSION_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 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 250 309 # diagrams that involve STL classes more complete and accurate. 251 252 BUILTIN_STL_SUPPORT = YES 253 254 # If you use Microsoft's C++/CLI language, you should set this option to YES to 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 255 315 # enable parsing support. 316 # The default value is: NO. 256 317 257 318 CPP_CLI_SUPPORT = NO 258 319 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. 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. 262 325 263 326 SIP_SUPPORT = NO 264 327 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. 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. 271 335 272 336 IDL_PROPERTY_SUPPORT = YES 273 337 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 first276 # member in the group (if any) for the other members of the group. By default 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 277 341 # all members of a group must be documented explicitly. 342 # The default value is: NO. 278 343 279 344 DISTRIBUTE_GROUP_DOC = NO 280 345 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. 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. 286 352 287 353 SUBGROUPING = YES 288 354 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). 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. 293 363 294 364 INLINE_GROUPED_CLASSES = NO 295 365 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 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 302 382 # types are typedef'ed and only the typedef is referenced, never the tag name. 383 # The default value is: NO. 303 384 304 385 TYPEDEF_HIDES_STRUCT = NO 305 386 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 320 SYMBOL_CACHE_SIZE = 0 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 321 399 322 400 #--------------------------------------------------------------------------- … … 324 402 #--------------------------------------------------------------------------- 325 403 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 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. 330 411 331 412 EXTRACT_ALL = YES 332 413 333 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class 334 # will be included in the documentation. 335 336 EXTRACT_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. 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. 340 429 341 430 EXTRACT_STATIC = YES 342 431 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. 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. 346 437 347 438 EXTRACT_LOCAL_CLASSES = YES 348 439 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 354 EXTRACT_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. 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. 361 454 362 455 EXTRACT_ANON_NSPACES = NO 363 456 364 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all365 # undocumented members of documented classes, files or namespaces.366 # If set to NO (the default) these members will be included in the367 # various overviews, but no documentation section is generated.368 # Th is option has no effect if EXTRACT_ALL is enabled.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. 369 462 370 463 HIDE_UNDOC_MEMBERS = NO 371 464 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. 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. 376 470 377 471 HIDE_UNDOC_CLASSES = NO 378 472 379 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all380 # friend (class|struct|union) declarations.381 # If set to NO (the default) these declarations will be included in the382 # documentation.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. 383 477 384 478 HIDE_FRIEND_COMPOUNDS = NO 385 479 386 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any387 # documentation blocks found inside the body of a function. 388 # If set to NO (the default) these blocks will be appended to the389 # function's detailed documentation block.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. 390 484 391 485 HIDE_IN_BODY_DOCS = NO 392 486 393 # The INTERNAL_DOCS tag determines if documentation 394 # that is typed after a \internal command is included. If the tag is set395 # to NO (the default) then the documentation will be excluded.396 # Set it to YES to include the internal documentation.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. 397 491 398 492 INTERNAL_DOCS = NO 399 493 400 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate401 # file names in lower-case letters. If set to YES upper-case letters are also402 # 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 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 404 498 # and Mac users are advised to set this option to NO. 405 406 CASE_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. 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. 411 507 412 508 HIDE_SCOPE_NAMES = NO 413 509 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. 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. 417 520 418 521 SHOW_INCLUDE_FILES = YES 419 522 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. 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. 423 533 424 534 FORCE_LOCAL_INCLUDES = NO 425 535 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. 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. 428 539 429 540 INLINE_INFO = YES 430 541 431 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen432 # will sort the (detailed) documentation of file and class members433 # alphabetically by member name. If set to NO the members will appear in434 # declaration order.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. 435 546 436 547 SORT_MEMBER_DOCS = YES 437 548 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. 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. 442 554 443 555 SORT_BRIEF_DOCS = NO 444 556 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. 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. 452 566 453 567 SORT_MEMBERS_CTORS_1ST = NO 454 568 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. 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. 458 573 459 574 SORT_GROUP_NAMES = NO 460 575 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 to463 # 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 the467 # alphabetical list.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. 468 583 469 584 SORT_BY_SCOPE_NAME = NO 470 585 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. 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. 477 593 478 594 STRICT_PROTO_MATCHING = NO 479 595 480 # The GENERATE_TODOLIST tag can be used to enable (YES) or 481 # disable (NO) the todo list. This list is created by putting \todo482 # commands in the documentation.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. 483 599 484 600 GENERATE_TODOLIST = YES 485 601 486 # The GENERATE_TESTLIST tag can be used to enable (YES) or 487 # disable (NO) the test list. This list is created by putting \test488 # commands in the documentation.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. 489 605 490 606 GENERATE_TESTLIST = YES 491 607 492 # The GENERATE_BUGLIST tag can be used to enable (YES) or 493 # disable (NO) the bug list. This list is created by putting \bug494 # commands in the documentation.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. 495 611 496 612 GENERATE_BUGLIST = YES 497 613 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. 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. 501 618 502 619 GENERATE_DEPRECATEDLIST= YES 503 620 504 # The ENABLED_SECTIONS tag can be used to enable conditional 505 # documentation sections, marked by \if sectionname ... \endif. 506 507 ENABLED_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. 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. 516 635 517 636 MAX_INITIALIZER_LINES = 30 518 637 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 the638 # 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 521 640 # list will mention the files that were used to generate the documentation. 641 # The default value is: YES. 522 642 523 643 SHOW_USED_FILES = YES 524 644 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 529 SHOW_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. 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. 534 649 535 650 SHOW_FILES = YES 536 651 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. 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. 540 656 541 657 SHOW_NAMESPACES = YES 542 658 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 551 FILE_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 560 LAYOUT_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. 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. 568 700 569 701 QUIET = NO 570 702 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. 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. 574 709 575 710 WARNINGS = YES 576 711 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. 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. 580 716 581 717 WARN_IF_UNDOCUMENTED = YES 582 718 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. 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. 587 724 588 725 WARN_IF_DOC_ERROR = YES 589 726 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 596 WARN_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) 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. 604 742 605 743 WARN_FORMAT = "$file:$line: $text" 606 744 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 611 WARN_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 622 INPUT = 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. 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. 629 769 630 770 INPUT_ENCODING = UTF-8 631 771 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 640 FILE_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. 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. 647 786 648 787 RECURSIVE = YES 649 788 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 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 652 791 # subdirectory from a directory tree whose root is specified with the INPUT tag. 653 654 EXCLUDE = 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 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 658 800 # from the input. 801 # The default value is: NO. 659 802 660 803 EXCLUDE_SYMLINKS = NO 661 804 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 668 EXCLUDE_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, 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, 674 818 # AClass::ANamespace, ANamespace::*Test 675 676 EXCLUDE_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 682 EXAMPLE_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 689 EXAMPLE_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. 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. 695 842 696 843 EXAMPLE_RECURSIVE = NO 697 844 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 702 IMAGE_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 712 INPUT_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 721 FILTER_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). 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. 726 881 727 882 FILTER_SOURCE_FILES = NO 728 883 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 735 FILTER_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 746 SOURCE_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 751 INLINE_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. 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. 756 922 757 923 STRIP_CODE_COMMENTS = YES 758 924 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 763 REFERENCED_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 769 REFERENCES_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. 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. 775 942 776 943 REFERENCES_LINK_SOURCE = YES 777 944 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. 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. 783 974 784 975 USE_HTAGS = NO 785 976 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. 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. 789 982 790 983 VERBATIM_HEADERS = YES 791 984 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. 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. 799 1012 800 1013 ALPHABETICAL_INDEX = YES 801 1014 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]) 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. 805 1019 806 1020 COLS_IN_ALPHA_INDEX = 5 807 1021 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 813 IGNORE_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. 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. 821 1036 822 1037 GENERATE_HTML = YES 823 1038 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. 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. 827 1044 828 1045 HTML_OUTPUT = html 829 1046 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. 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. 833 1051 834 1052 HTML_FILE_EXTENSION = .html 835 1053 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 847 HTML_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 853 HTML_FOOTER = 854 855 # If the HTML_TIMESTAMP tag is set to YES then the generated HTML 856 # documentation will contain the timesstamp. 857 858 HTML_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 867 HTML_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 876 HTML_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 886 HTML_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 892 HTML_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 901 HTML_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 907 HTML_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 913 HTML_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 921 HTML_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 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 932 1187 # for more information. 1188 # The default value is: NO. 1189 # This tag requires that the tag GENERATE_HTML is set to YES. 933 1190 934 1191 GENERATE_DOCSET = NO 935 1192 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. 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. 940 1198 941 1199 DOCSET_FEEDNAME = "Doxygen generated docs" 942 1200 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. 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. 947 1206 948 1207 DOCSET_BUNDLE_ID = org.doxygen.Project 949 1208 950 # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify951 # the documentation publisher. This should be a reverse domain-name style 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 952 1211 # 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. 953 1214 954 1215 DOCSET_PUBLISHER_ID = org.doxygen.Publisher 955 1216 956 # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. 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. 957 1220 958 1221 DOCSET_PUBLISHER_NAME = Publisher 959 1222 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. 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. 964 1238 965 1239 GENERATE_HTMLHELP = NO 966 1240 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 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 970 1243 # written to the html output directory. 971 972 CHM_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 979 HHC_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). 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. 984 1260 985 1261 GENERATE_CHI = NO 986 1262 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 991 CHM_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. 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. 996 1274 997 1275 BINARY_TOC = NO 998 1276 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. 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. 1001 1281 1002 1282 TOC_EXPAND = NO 1003 1283 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. 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. 1008 1290 1009 1291 GENERATE_QHP = NO 1010 1292 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 1015 QCH_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 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. 1020 1305 1021 1306 QHP_NAMESPACE = org.doxygen.Project 1022 1307 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 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. 1026 1314 1027 1315 QHP_VIRTUAL_FOLDER = doc 1028 1316 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 1033 QHP_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 1040 QHP_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 1048 QHP_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 1055 QHG_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. 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. 1065 1356 1066 1357 GENERATE_ECLIPSEHELP = NO 1067 1358 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. 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. 1071 1364 1072 1365 ECLIPSE_DOC_ID = org.doxygen.Project 1073 1366 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. 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. 1077 1375 1078 1376 DISABLE_INDEX = NO 1079 1377 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. 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. 1084 1402 1085 1403 ENUM_VALUES_PER_LINE = 4 1086 1404 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 1095 GENERATE_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 1100 USE_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. 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. 1105 1409 1106 1410 TREEVIEW_WIDTH = 250 1107 1411 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. 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. 1110 1416 1111 1417 EXT_LINKS_IN_WINDOW = NO 1112 1418 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. 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. 1118 1425 1119 1426 FORMULA_FONTSIZE = 10 1120 1427 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. 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. 1126 1436 1127 1437 FORMULA_TRANSPARENT = YES 1128 1438 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. 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. 1135 1447 1136 1448 USE_MATHJAX = NO 1137 1449 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 1147 MATHJAX_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. 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. 1156 1506 1157 1507 SEARCHENGINE = YES 1158 1508 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. 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. 1166 1518 1167 1519 SERVER_BASED_SEARCH = NO 1168 1520 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 1176 GENERATE_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. 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. 1181 1588 1182 1589 LATEX_OUTPUT = latex 1183 1590 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. 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. 1189 1599 1190 1600 LATEX_CMD_NAME = latex 1191 1601 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. 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. 1195 1606 1196 1607 MAKEINDEX_CMD_NAME = makeindex 1197 1608 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. 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. 1201 1614 1202 1615 COMPACT_LATEX = NO 1203 1616 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. 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. 1207 1623 1208 1624 PAPER_TYPE = a4 1209 1625 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 1213 EXTRA_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 1220 LATEX_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 1227 LATEX_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. 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. 1233 1687 1234 1688 PDF_HYPERLINKS = YES 1235 1689 1236 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of1237 # plain latex in the generated Makefile. Set this option to YES to get a1690 # 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 1238 1692 # higher quality PDF documentation. 1693 # The default value is: YES. 1694 # This tag requires that the tag GENERATE_LATEX is set to YES. 1239 1695 1240 1696 USE_PDFLATEX = YES 1241 1697 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. 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. 1246 1704 1247 1705 LATEX_BATCHMODE = NO 1248 1706 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. 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. 1252 1711 1253 1712 LATEX_HIDE_INDICES = NO 1254 1713 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. 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. 1259 1721 1260 1722 LATEX_SOURCE_CODE = NO 1261 1723 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. 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. 1269 1740 1270 1741 GENERATE_RTF = NO 1271 1742 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. 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. 1275 1748 1276 1749 RTF_OUTPUT = rtf 1277 1750 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. 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. 1281 1756 1282 1757 COMPACT_RTF = NO 1283 1758 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. 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. 1290 1768 1291 1769 RTF_HYPERLINKS = NO 1292 1770 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 1297 RTF_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 1302 RTF_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 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. 1310 1805 1311 1806 GENERATE_MAN = NO 1312 1807 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. 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. 1316 1814 1317 1815 MAN_OUTPUT = man 1318 1816 1319 # The MAN_EXTENSION tag determines the extension that is added to 1320 # the generated man pages (default is the subroutine's section .3) 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. 1321 1823 1322 1824 MAN_EXTENSION = .3 1323 1825 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. 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. 1329 1839 1330 1840 MAN_LINKS = NO 1331 1841 1332 1842 #--------------------------------------------------------------------------- 1333 # configuration options related to the XML output1334 #--------------------------------------------------------------------------- 1335 1336 # If the GENERATE_XML tag is set to YES Doxygen will1337 # generate an XML file that captures the structure of1338 # the code including all documentation.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. 1339 1849 1340 1850 GENERATE_XML = NO 1341 1851 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. 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. 1345 1857 1346 1858 XML_OUTPUT = xml 1347 1859 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 1352 XML_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 1358 XML_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. 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. 1364 1866 1365 1867 XML_PROGRAMLISTING = YES 1366 1868 1367 1869 #--------------------------------------------------------------------------- 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. 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. 1376 1905 1377 1906 GENERATE_AUTOGEN_DEF = NO 1378 1907 1379 1908 #--------------------------------------------------------------------------- 1380 # configuration options related to the Perl module output1381 #--------------------------------------------------------------------------- 1382 1383 # If the GENERATE_PERLMOD tag is set to YES Doxygen will1384 # generate a Perl module file that captures the structure of1385 # the code including all documentation. Note that this1386 # feature is still experimental and incomplete at the1387 # moment.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. 1388 1917 1389 1918 GENERATE_PERLMOD = NO 1390 1919 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. 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. 1394 1925 1395 1926 PERLMOD_LATEX = NO 1396 1927 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. 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. 1402 1935 1403 1936 PERLMOD_PRETTY = YES 1404 1937 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 1410 PERLMOD_MAKEVAR_PREFIX = 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 = 1411 1945 1412 1946 #--------------------------------------------------------------------------- … … 1414 1948 #--------------------------------------------------------------------------- 1415 1949 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 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. 1953 1954 ENABLE_PREPROCESSING = YES 1955 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. 1970 1971 EXPAND_ONLY_PREDEF = NO 1972 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. 1977 1978 SEARCH_INCLUDES = YES 1979 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. 2021 2022 SKIP_FUNCTION_MACROS = YES 2023 2024 #--------------------------------------------------------------------------- 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. 2053 2054 ALLEXTERNALS = NO 2055 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. 2060 2061 EXTERNAL_GROUPS = YES 2062 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. 2073 2074 PERL_PATH = /usr/bin/perl 2075 2076 #--------------------------------------------------------------------------- 2077 # Configuration options related to the dot tool 2078 #--------------------------------------------------------------------------- 2079 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. 2086 2087 CLASS_DIAGRAMS = YES 2088 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 2094 # default search path. 2095 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. 2108 2109 HIDE_UNDOC_RELATIONS = YES 2110 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. 2117 2118 HAVE_DOT = YES 2119 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. 2127 2128 DOT_NUM_THREADS = 0 2129 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. 2137 2138 DOT_FONTNAME = Helvetica 2139 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. 2144 2145 DOT_FONTSIZE = 10 2146 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. 2159 2160 CLASS_GRAPH = YES 2161 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. 2168 2169 COLLABORATION_GRAPH = YES 2170 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. 2175 2176 GROUP_GRAPHS = YES 2177 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 2180 # 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 1418 2210 # files. 1419 1420 ENABLE_PREPROCESSING = YES 1421 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 1427 MACRO_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. 1432 1433 EXPAND_ONLY_PREDEF = NO 1434 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. 1437 1438 SEARCH_INCLUDES = YES 1439 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 1444 INCLUDE_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 1451 INCLUDE_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 1461 PREDEFINED = 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 1469 EXPAND_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. 1475 1476 SKIP_FUNCTION_MACROS = YES 1477 1478 #--------------------------------------------------------------------------- 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 1497 TAGFILES = 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 1502 GENERATE_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. 1507 1508 ALLEXTERNALS = NO 1509 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. 1513 1514 EXTERNAL_GROUPS = YES 1515 1516 # The PERL_PATH should be the absolute path and name of the perl script 1517 # interpreter (i.e. the result of `which perl'). 1518 1519 PERL_PATH = /usr/bin/perl 1520 1521 #--------------------------------------------------------------------------- 1522 # Configuration options related to the dot tool 1523 #--------------------------------------------------------------------------- 1524 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. 1530 1531 CLASS_DIAGRAMS = YES 1532 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 1538 # default search path. 1539 1540 MSCGEN_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. 1545 1546 HIDE_UNDOC_RELATIONS = YES 1547 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) 1552 1553 HAVE_DOT = YES 1554 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. 1560 1561 DOT_NUM_THREADS = 0 1562 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. 1570 1571 DOT_FONTNAME = Helvetica 1572 1573 # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 1574 # The default size is 10pt. 1575 1576 DOT_FONTSIZE = 10 1577 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 1583 DOT_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. 1589 1590 CLASS_GRAPH = YES 1591 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. 1596 1597 COLLABORATION_GRAPH = YES 1598 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 1601 1602 GROUP_GRAPHS = YES 1603 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 1606 # Language. 1607 1608 UML_LOOK = YES 1609 1610 # If set to YES, the inheritance and collaboration graphs will show the 1611 # relations between templates and their instances. 1612 1613 TEMPLATE_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. 2211 # The default value is: YES. 2212 # This tag requires that the tag HAVE_DOT is set to YES. 1619 2213 1620 2214 INCLUDE_GRAPH = YES 1621 2215 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. 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. 1626 2222 1627 2223 INCLUDED_BY_GRAPH = YES 1628 2224 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 1635 CALL_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 1643 CALLER_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. 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. 1647 2251 1648 2252 GRAPHICAL_HIERARCHY = YES 1649 2253 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. 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. 1654 2260 1655 2261 DIRECTORY_GRAPH = YES 1656 2262 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. 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. 1660 2273 1661 2274 DOT_IMAGE_FORMAT = png 1662 2275 1663 # The tag DOT_PATH can be used to specify the path where the dot tool can be 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 1664 2289 # found. If left blank, it is assumed the dot tool can be found in the path. 1665 1666 DOT_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 1672 DOTFILE_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 1678 MSCFILE_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. 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. 1687 2335 1688 2336 DOT_GRAPH_MAX_NODES = 50 1689 2337 1690 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 1691 # g raphs generated by dot. A depth value of 3 means that only nodes reachable1692 # from the root by following a path via at most 3 edges will be shown. Nodes1693 # that lay further from the root node will be omitted. Note that setting this1694 # o ption to 1 or 2 may greatly reduce the computation time needed for large1695 # code bases. Also note that the size of a graph can be further restricted by2338 # 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 1696 2344 # 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. 1697 2347 1698 2348 MAX_DOT_GRAPH_DEPTH = 0 1699 2349 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). 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. 1705 2359 1706 2360 DOT_TRANSPARENT = NO 1707 2361 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. 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. 1712 2368 1713 2369 DOT_MULTI_TARGETS = NO 1714 2370 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. 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. 1718 2376 1719 2377 GENERATE_LEGEND = YES 1720 2378 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. 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. 1724 2383 1725 2384 DOT_CLEANUP = YES -
XIOS/dev/dev_olga/bld.cfg
r1021 r1054 34 34 #bld::target xios_server.exe #test_remap.exe 35 35 bld::target xios_server.exe 36 bld::target xios_server1.exe xios_server2.exe37 36 #bld::target test_regular.exe 38 37 #bld::target test_new_features.exe test_unstruct_complete.exe -
XIOS/dev/dev_olga/src/client.cpp
r1021 r1054 162 162 } 163 163 164 void CClient::initializeClientOnServer(const int rank, const MPI_Comm& intraCommPrmSrv, const int srvSndLeader)165 {166 MPI_Comm_dup(intraCommPrmSrv, &intraComm) ;167 serverLeader.push_back(srvSndLeader);168 int intraCommSize, intraCommRank ;169 MPI_Comm_size(intraComm,&intraCommSize) ;170 MPI_Comm_rank(intraComm,&intraCommRank) ;171 info(50)<<"intercommCreate::client "<<rank<<" intraCommSize : "<<intraCommSize172 <<" intraCommRank :"<<intraCommRank<<" clientLeader "<< srvSndLeader<<endl ;173 MPI_Intercomm_create(intraComm, 0, CXios::globalComm, srvSndLeader, 0, &interComm) ;174 }175 176 177 164 ///--------------------------------------------------------------- 178 165 /*! … … 257 244 * The only difference with CClient::registerContext() is naming of contexts on servers (appearing of pool id at the end). 258 245 */ 259 void CClient::registerContextByClienOfServer(const string& id, MPI_Comm contextComm)260 {261 CContext::setCurrent(id) ;262 CContext* context=CContext::create(id);263 StdString idServer(id);264 idServer += "_server_";265 266 int size,rank,globalRank ;267 size_t message_size ;268 int leaderRank ;269 MPI_Comm contextInterComm ;270 271 MPI_Comm_size(contextComm,&size) ;272 MPI_Comm_rank(contextComm,&rank) ;273 MPI_Comm_rank(CXios::globalComm,&globalRank) ;274 if (rank!=0) globalRank=0 ;275 276 CMessage msg ;277 278 int messageSize ;279 void * buff ;280 281 for (int i = 0; i < serverLeader.size(); ++i)282 {283 StdString str = idServer + boost::lexical_cast<string>(i);284 msg<<str<<size<<globalRank ;285 messageSize = msg.size() ;286 buff = new char[messageSize] ;287 CBufferOut buffer(buff,messageSize) ;288 buffer<<msg ;289 290 MPI_Send(buff, buffer.count(), MPI_CHAR, serverLeader[i], 1, CXios::globalComm) ;291 MPI_Intercomm_create(contextComm, 0, CXios::globalComm, serverLeader[i], 10+globalRank, &contextInterComm) ;292 info(10)<<"Register new Context : "<<id<<endl ;293 MPI_Comm inter ;294 MPI_Intercomm_merge(contextInterComm,0,&inter) ;295 MPI_Barrier(inter) ;296 297 context->initClient(contextComm,contextInterComm) ;298 299 contextInterComms.push_back(contextInterComm);300 MPI_Comm_free(&inter);301 delete [] buff ;302 }303 }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 // } 304 291 305 292 void CClient::finalize(void) -
XIOS/dev/dev_olga/src/client.hpp
r1021 r1054 11 11 public: 12 12 static void initialize(const string& codeId, MPI_Comm& localComm, MPI_Comm& returnComm); 13 static void initializeClientOnServer(const int rank, const MPI_Comm& localComm, const int srvSndLeader);14 13 15 14 static void finalize(void); 16 15 static void registerContext(const string& id, MPI_Comm contextComm); 17 static void registerContextByClienOfServer(const string& id, MPI_Comm contextComm);16 // static void registerContextByClientOfServer(const string& id, MPI_Comm contextComm); 18 17 19 18 static MPI_Comm intraComm; -
XIOS/dev/dev_olga/src/client_server_mapping_distributed.cpp
r907 r1054 39 39 { 40 40 CContext* context=CContext::getCurrent() ; 41 CContextClient* client=context->client ; 41 // CContextClient* client=context->client ; 42 // For now the assumption is that secondary server pools consist of the same number of procs. 43 // CHANGE the line below if the assumption changes. 44 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 42 45 int nbServer=client->serverSize; 43 46 -
XIOS/dev/dev_olga/src/context_client.cpp
r1021 r1054 84 84 { 85 85 list<int> ranks = event.getRanks(); 86 86 87 if (!event.isEmpty()) 87 88 { 88 89 list<int> sizes = event.getSizes(); 89 90 90 list<CBufferOut*> buffList = getBuffers(ranks, sizes); 91 92 event.send(timeLine, sizes, buffList); 93 94 checkBuffers(ranks); 95 } 96 97 if (isAttachedModeEnabled()) 98 { 99 waitEvent(ranks); 100 CContext::setCurrent(context->getId()); 91 // We force the getBuffers call to be non-blocking on the servers 92 list<CBufferOut*> buffList; 93 bool couldBuffer = getBuffers(ranks, sizes, buffList, !CXios::isClient); 94 // bool couldBuffer = getBuffers(ranks, sizes, buffList, CXios::isServer); 95 96 if (couldBuffer) 97 { 98 event.send(timeLine, sizes, buffList); 99 100 checkBuffers(ranks); 101 102 if (isAttachedModeEnabled()) // couldBuffer is always true in attached mode 103 { 104 waitEvent(ranks); 105 CContext::setCurrent(context->getId()); 106 } 107 } 108 else 109 { 110 tmpBufferedEvent.ranks = ranks; 111 tmpBufferedEvent.sizes = sizes; 112 113 for (list<int>::const_iterator it = sizes.begin(); it != sizes.end(); it++) 114 tmpBufferedEvent.buffers.push_back(new CBufferOut(*it)); 115 116 event.send(timeLine, tmpBufferedEvent.sizes, tmpBufferedEvent.buffers); 117 } 101 118 } 102 119 103 120 timeLine++; 121 } 122 123 /*! 124 * Send the temporarily buffered event (if any). 125 * 126 * \return true if a temporarily buffered event could be sent, false otherwise 127 */ 128 bool CContextClient::sendTemporarilyBufferedEvent() 129 { 130 bool couldSendTmpBufferedEvent = false; 131 132 if (hasTemporarilyBufferedEvent()) 133 { 134 list<CBufferOut*> buffList; 135 if (getBuffers(tmpBufferedEvent.ranks, tmpBufferedEvent.sizes, buffList, true)) // Non-blocking call 136 { 137 list<CBufferOut*>::iterator it, itBuffer; 138 139 for (it = tmpBufferedEvent.buffers.begin(), itBuffer = buffList.begin(); it != tmpBufferedEvent.buffers.end(); it++, itBuffer++) 140 (*itBuffer)->put((char*)(*it)->start(), (*it)->count()); 141 142 checkBuffers(tmpBufferedEvent.ranks); 143 144 tmpBufferedEvent.clear(); 145 146 couldSendTmpBufferedEvent = true; 147 } 148 } 149 150 return couldSendTmpBufferedEvent; 104 151 } 105 152 … … 124 171 } 125 172 126 /*! 127 Setup buffer for each connection to server and verify their state to put content into them 128 \param [in] serverList list of rank of connected server 129 \param [in] sizeList size of message corresponding to each connection 130 \return List of buffer input which event can be placed 131 */ 132 list<CBufferOut*> CContextClient::getBuffers(list<int>& serverList, list<int>& sizeList) 133 { 134 list<int>::iterator itServer, itSize; 173 174 /*! 175 * Get buffers for each connection to the servers. This function blocks until there is enough room in the buffers unless 176 * it is explicitly requested to be non-blocking. 177 * 178 * \param [in] serverList list of rank of connected server 179 * \param [in] sizeList size of message corresponding to each connection 180 * \param [out] retBuffers list of buffers that can be used to store an event 181 * \param [in] nonBlocking whether this function should be non-blocking 182 * \return whether the already allocated buffers could be used 183 */ 184 bool CContextClient::getBuffers(const list<int>& serverList, const list<int>& sizeList, list<CBufferOut*>& retBuffers, bool nonBlocking /*= false*/) 185 { 186 list<int>::const_iterator itServer, itSize; 135 187 list<CClientBuffer*> bufferList; 136 map<int,CClientBuffer*>:: iterator it;188 map<int,CClientBuffer*>::const_iterator it; 137 189 list<CClientBuffer*>::iterator itBuffer; 138 list<CBufferOut*> retBuffer;139 190 bool areBuffersFree; 140 191 … … 160 211 { 161 212 checkBuffers(); 162 context->server->listen(); 163 } 164 } while (!areBuffersFree); 213 // if (?) 214 // { 215 // for (int i = 0; i < context->serverPrimServer.size(); ++i) 216 // context->serverPrimServer[i]->listen(); 217 // } 218 // else 219 context->server->listen(); 220 } 221 } while (!areBuffersFree && !nonBlocking); 165 222 CTimer::get("Blocking time").suspend(); 166 223 167 for (itBuffer = bufferList.begin(), itSize = sizeList.begin(); itBuffer != bufferList.end(); itBuffer++, itSize++) 168 { 169 retBuffer.push_back((*itBuffer)->getBuffer(*itSize)); 170 } 171 return retBuffer; 224 if (areBuffersFree) 225 { 226 for (itBuffer = bufferList.begin(), itSize = sizeList.begin(); itBuffer != bufferList.end(); itBuffer++, itSize++) 227 retBuffers.push_back((*itBuffer)->getBuffer(*itSize)); 228 } 229 230 return areBuffersFree; 172 231 } 173 232 … … 299 358 Finalize context client and do some reports 300 359 */ 301 void CContextClient::finalize(void) 302 { 303 map<int,CClientBuffer*>::iterator itBuff; 304 bool stop = true; 305 306 CEventClient event(CContext::GetType(), CContext::EVENT_ID_CONTEXT_FINALIZE); 307 if (isServerLeader()) 308 { 309 CMessage msg; 310 const std::list<int>& ranks = getRanksServerLeader(); 311 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 312 event.push(*itRank, 1, msg); 313 sendEvent(event); 314 } 315 else sendEvent(event); 316 317 CTimer::get("Blocking time").resume(); 318 while (stop) 319 { 320 checkBuffers(); 321 stop = false; 322 for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) stop |= itBuff->second->hasPendingRequest(); 323 } 324 CTimer::get("Blocking time").suspend(); 325 326 std::map<int,StdSize>::const_iterator itbMap = mapBufferSize_.begin(), 327 iteMap = mapBufferSize_.end(), itMap; 328 StdSize totalBuf = 0; 329 for (itMap = itbMap; itMap != iteMap; ++itMap) 330 { 331 report(10) << " Memory report : Context <" << context->getId() << "> : client side : memory used for buffer of each connection to server" << endl 332 << " +) To server with rank " << itMap->first << " : " << itMap->second << " bytes " << endl; 333 totalBuf += itMap->second; 334 } 335 report(0) << " Memory report : Context <" << context->getId() << "> : client side : total memory used for buffer " << totalBuf << " bytes" << endl; 336 337 releaseBuffers(); 338 } 360 void CContextClient::finalize(void) 361 { 362 map<int,CClientBuffer*>::iterator itBuff; 363 bool stop = false; 364 365 CTimer::get("Blocking time").resume(); 366 while (hasTemporarilyBufferedEvent()) 367 { 368 checkBuffers(); 369 sendTemporarilyBufferedEvent(); 370 } 371 CTimer::get("Blocking time").suspend(); 372 373 CEventClient event(CContext::GetType(), CContext::EVENT_ID_CONTEXT_FINALIZE); 374 if (isServerLeader()) 375 { 376 CMessage msg; 377 const std::list<int>& ranks = getRanksServerLeader(); 378 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 379 event.push(*itRank, 1, msg); 380 sendEvent(event); 381 } 382 else sendEvent(event); 383 384 CTimer::get("Blocking time").resume(); 385 while (!stop) 386 { 387 checkBuffers(); 388 if (hasTemporarilyBufferedEvent()) 389 sendTemporarilyBufferedEvent(); 390 391 stop = true; 392 for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) stop &= !itBuff->second->hasPendingRequest(); 393 } 394 CTimer::get("Blocking time").suspend(); 395 396 std::map<int,StdSize>::const_iterator itbMap = mapBufferSize_.begin(), 397 iteMap = mapBufferSize_.end(), itMap; 398 StdSize totalBuf = 0; 399 for (itMap = itbMap; itMap != iteMap; ++itMap) 400 { 401 report(10) << " Memory report : Context <" << context->getId() << "> : client side : memory used for buffer of each connection to server" << endl 402 << " +) To server with rank " << itMap->first << " : " << itMap->second << " bytes " << endl; 403 totalBuf += itMap->second; 404 } 405 report(0) << " Memory report : Context <" << context->getId() << "> : client side : total memory used for buffer " << totalBuf << " bytes" << endl; 406 407 releaseBuffers(); 408 } 339 409 } -
XIOS/dev/dev_olga/src/context_client.hpp
r1021 r1054 31 31 // Send event to server 32 32 void sendEvent(CEventClient& event); 33 bool sendTemporarilyBufferedEvent(); 33 34 void waitEvent(list<int>& ranks); 34 35 35 // Functions relatesto set/get buffers36 list<CBufferOut*> getBuffers(list<int>& serverlist, list<int>& sizeList);36 // Functions to set/get buffers 37 bool getBuffers(const list<int>& serverList, const list<int>& sizeList, list<CBufferOut*>& retBuffers, bool nonBlocking = false); 37 38 void newBuffer(int rank); 38 39 bool checkBuffers(list<int>& ranks); … … 46 47 47 48 bool isAttachedModeEnabled() const; 49 bool hasTemporarilyBufferedEvent() const { return !tmpBufferedEvent.isEmpty(); }; 48 50 49 51 // Close and finalize context client 50 void closeContext(void); 52 // void closeContext(void); Never been implemented. 51 53 void finalize(void); 52 54 … … 68 70 MPI_Comm intraComm; //!< Communicator of client group 69 71 70 map<int,CClientBuffer*> buffers; //!< Buffers for connection to servers72 map<int,CClientBuffer*> buffers; //!< Buffers for connection to servers 71 73 72 74 private: … … 75 77 //! Maximum number of events that can be buffered 76 78 StdSize maxBufferedEvents; 79 80 struct { 81 std::list<int> ranks, sizes; 82 std::list<CBufferOut*> buffers; 83 84 bool isEmpty() const { return ranks.empty(); }; 85 void clear() { 86 ranks.clear(); 87 sizes.clear(); 88 89 for (std::list<CBufferOut*>::iterator it = buffers.begin(); it != buffers.end(); it++) 90 delete *it; 91 92 buffers.clear(); 93 }; 94 } tmpBufferedEvent; //! Event temporarily buffered (used only on the server) 77 95 78 96 //! Context for server (Only used in attached mode) -
XIOS/dev/dev_olga/src/context_server.cpp
r1021 r1054 22 22 namespace xios 23 23 { 24 StdSize CContextServer::totalBuf_ = 0; 24 25 25 26 CContextServer::CContextServer(CContext* parent, MPI_Comm intraComm_,MPI_Comm interComm_) … … 29 30 MPI_Comm_size(intraComm,&intraCommSize); 30 31 MPI_Comm_rank(intraComm,&intraCommRank); 32 31 33 interComm=interComm_; 32 34 int flag; … … 38 40 scheduled=false; 39 41 finished=false; 40 41 42 boost::hash<string> hashString; 42 43 hashId=hashString(context->getId()); 43 44 } 45 46 // CContextServer::CContextServer(CContext* parent, int srvLvl, MPI_Comm intraComm_,MPI_Comm interComm_) 47 // { 48 // context=parent; 49 // intraComm=intraComm_; 50 // MPI_Comm_size(intraComm,&intraCommSize); 51 // MPI_Comm_rank(intraComm,&intraCommRank); 52 // interComm=interComm_; 53 // int flag; 54 // MPI_Comm_test_inter(interComm,&flag); 55 // if (flag) MPI_Comm_remote_size(interComm,&commSize); 56 // else MPI_Comm_size(interComm,&commSize); 57 // 58 // currentTimeLine=0; 59 // scheduled=false; 60 // finished=false; 61 // 62 // boost::hash<string> hashString; 63 // StdString contextId = context->getId(); 64 // hashId=hashString(contextId); 65 // 66 // } 44 } 45 67 46 void CContextServer::setPendingEvent(void) 68 47 { … … 70 49 } 71 50 51 72 52 bool CContextServer::hasPendingEvent(void) 73 53 { … … 80 60 } 81 61 82 bool CContextServer::eventLoop( void)62 bool CContextServer::eventLoop(bool enableEventsProcessing /*= true*/) 83 63 { 84 64 listen(); 85 65 checkPendingRequest(); 86 processEvents(); 66 if (enableEventsProcessing) 67 processEvents(); 87 68 return finished; 88 69 } … … 188 169 map<size_t,CEventServer*>::iterator it; 189 170 CEventServer* event; 171 boost::hash<string> hashString; 172 size_t hashId=hashString(context->getId()); 190 173 191 174 it=events.find(currentTimeLine); … … 224 207 { 225 208 map<int,CServerBuffer*>::iterator it; 226 for(it=buffers.begin();it!=buffers.end();++it) delete it->second;227 }228 209 for(it=buffers.begin();it!=buffers.end();++it) 210 delete it->second; 211 } 229 212 230 213 void CContextServer::dispatchEvent(CEventServer& event) … … 235 218 int rank; 236 219 list<CEventServer::SSubEvent>::iterator it; 237 CContext::setCurrent(context->getId()); 220 // CContext::setCurrent(context->getId()); 221 StdString ctxId = context->getId(); 222 CContext::setCurrent(ctxId); 238 223 239 224 if (event.classId==CContext::GetType() && event.type==CContext::EVENT_ID_CONTEXT_FINALIZE) … … 243 228 std::map<int, StdSize>::const_iterator itbMap = mapBufferSize_.begin(), 244 229 iteMap = mapBufferSize_.end(), itMap; 245 StdSize totalBuf = 0;246 230 for (itMap = itbMap; itMap != iteMap; ++itMap) 247 231 { 248 report(10)<< " Memory report : Context <"<<context->getId()<<"> : server side : memory used for buffer of each connection to client" << endl 249 << " +) With client of rank " << itMap->first << " : " << itMap->second << " bytes " << endl; 250 totalBuf += itMap->second; 232 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; 251 236 } 252 237 context->finalize(); 253 report(0)<< " Memory report : Context <"<<context->getId()<<"> : server side : total memory used for buffer "<<totalBuf<<" bytes"<<endl; 238 239 // report(0)<< " Memory report : Context <"<<ctxId<<"> : server side : total memory used for buffer "<<totalBuf<<" bytes"<<endl; 254 240 } 255 241 else if (event.classId==CContext::GetType()) CContext::dispatchEvent(event); … … 274 260 } 275 261 } 262 263 size_t CContextServer::getTotalBuf(void) 264 { 265 return totalBuf_; 266 } 267 276 268 } -
XIOS/dev/dev_olga/src/context_server.hpp
r992 r1054 15 15 16 16 CContextServer(CContext* parent, MPI_Comm intraComm, MPI_Comm interComm) ; 17 CContextServer(CContext* parent, int srvLvl, MPI_Comm intraComm, MPI_Comm interComm) ; 18 bool eventLoop( void);17 18 bool eventLoop(bool enableEventsProcessing = true); 19 19 void listen(void) ; 20 20 void checkPendingRequest(void) ; 21 void processRequest(int rank, char* buff,int count) ;22 21 void processEvents(void) ; 22 bool hasFinished(void); 23 23 void dispatchEvent(CEventServer& event) ; 24 24 void setPendingEvent(void) ; 25 25 bool hasPendingEvent(void) ; 26 bool hasFinished(void); 26 27 void processRequest(int rank, char* buff,int count) ; 27 28 28 29 MPI_Comm intraComm ; … … 45 46 bool scheduled ; /*!< event of current timeline is alreading scheduled ? */ 46 47 size_t hashId ; 48 49 static size_t getTotalBuf(void); 50 47 51 ~CContextServer() ; 48 52 49 53 private: 50 std::map<int, StdSize> mapBufferSize_; 54 std::map<int, StdSize> mapBufferSize_; 55 static size_t totalBuf_ ; /*!< Total memory allocated by servers per context.*/ 51 56 52 57 } ; -
XIOS/dev/dev_olga/src/cxios.cpp
r1021 r1054 136 136 137 137 //! Initialize server then put it into listening state 138 void CXios::initServerSide( int serverLvl)138 void CXios::initServerSide(void) 139 139 { 140 140 initServer(); 141 142 // if (serverLvl == 1)143 // isClient = true;144 // else145 // isClient = false;146 //147 // isServer = true;148 // serverLevel = serverLvl;149 150 151 141 152 142 // Initialize all aspects MPI … … 163 153 { 164 154 if (CServer::serverLevel == 0) 165 // if (CXios::serverLevel == 0)166 155 { 167 156 CServer::openInfoStream(serverFile); … … 169 158 } 170 159 else if (CServer::serverLevel == 1) 171 // else if (CXios::serverLevel == 1)172 160 { 173 161 CServer::openInfoStream(serverPrmFile); -
XIOS/dev/dev_olga/src/cxios.hpp
r1021 r1054 16 16 static void initialize(void) ; 17 17 static void initClientSide(const string & codeId, MPI_Comm& localComm, MPI_Comm& returnComm) ; 18 static void initServerSide( int serverLevel) ;18 static void initServerSide(void) ; 19 19 static void clientFinalize(void) ; 20 20 static void parseFile(const string& filename) ; -
XIOS/dev/dev_olga/src/distribution_server.hpp
r1025 r1054 41 41 const std::vector<int>& getZoomSizeServer() const; 42 42 const GlobalLocalMap& getGlobalLocalIndex() const { return globalLocalIndexMap_; } 43 const std::vector<CArray<int,1> >& getGlobalIndexEachDimension() const ;43 const std::vector<CArray<int,1> >& getGlobalIndexEachDimension() const {return globalIndexEachDimension_;} 44 44 45 45 virtual CArray<size_t,1> computeLocalIndex(const CArray<size_t,1>& globalIndex); -
XIOS/dev/dev_olga/src/interface/c/icdata.cpp
r983 r1054 47 47 } 48 48 49 void cxios_init_server( int server_level)50 { 51 CXios::initServerSide( server_level);49 void cxios_init_server(void) 50 { 51 CXios::initServerSide(); 52 52 } 53 53 -
XIOS/dev/dev_olga/src/interface/fortran/idata.F90
r983 r1054 7 7 INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 8 8 9 SUBROUTINE cxios_init_server(server_level) BIND(C) 10 USE ISO_C_BINDING 11 INTEGER (kind = C_INT) , VALUE :: server_level 9 SUBROUTINE cxios_init_server() BIND(C) 10 USE ISO_C_BINDING 12 11 END SUBROUTINE cxios_init_server 13 12 … … 453 452 CONTAINS ! Fonctions disponibles pour les utilisateurs. 454 453 455 SUBROUTINE xios(init_server)(server_level) 456 IMPLICIT NONE 457 INTEGER (kind = C_INT), INTENT(IN) :: server_level 458 CALL cxios_init_server(server_level) 454 SUBROUTINE xios(init_server)() 455 IMPLICIT NONE 456 CALL cxios_init_server() 459 457 END SUBROUTINE xios(init_server) 460 458 -
XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
r1030 r1054 231 231 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 232 232 CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1])) ; 233 // CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1]-1)) ; 233 234 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 234 235 break; -
XIOS/dev/dev_olga/src/node/axis.cpp
r1030 r1054 174 174 std::map<int, StdSize> CAxis::getAttributesBufferSize() 175 175 { 176 CContextClient* client = CContext::getCurrent()->client; 176 // CContextClient* client = CContext::getCurrent()->client; 177 // For now the assumption is that secondary server pools consist of the same number of procs. 178 // CHANGE the line below if the assumption changes. 179 CContext* context = CContext::getCurrent(); 180 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 177 181 178 182 std::map<int, StdSize> attributesSizes = getMinimumBufferSizeForAttributes(); … … 455 459 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 456 460 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 457 for (int i = 0; i < nbSrvPools; ++i)458 { 459 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;461 for (int p = 0; p < nbSrvPools; ++p) 462 { 463 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 460 464 int nbServer = client->serverSize; 461 465 int range, clientSize = client->clientSize; … … 751 755 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 752 756 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 753 for (int i = 0; i < nbSrvPools; ++i)754 { 755 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;757 for (int p = 0; p < nbSrvPools; ++p) 758 { 759 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 756 760 757 761 CEventClient event(getType(), EVENT_ID_NON_DISTRIBUTED_ATTRIBUTES); … … 857 861 //int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 858 862 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 859 for (int i = 0; i < nbSrvPools; ++i)860 { 861 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;863 for (int p = 0; p < nbSrvPools; ++p) 864 { 865 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 862 866 863 867 CEventClient eventData(getType(), EVENT_ID_DISTRIBUTED_ATTRIBUTES); -
XIOS/dev/dev_olga/src/node/context.cpp
r1030 r1054 249 249 250 250 hasClient = true; 251 251 252 if (CServer::serverLevel != 1) 252 // if (CXios::serverLevel != 1) 253 // initClient is called by client pool 253 // initClient is called by client 254 254 { 255 255 client = new CContextClient(this, intraComm, interComm, cxtServer); 256 256 server = new CContextServer(this, intraComm, interComm); 257 } 257 MPI_Comm intraCommServer, interCommServer; 258 if (cxtServer) // Attached mode 259 { 260 intraCommServer = intraComm; 261 interCommServer = interComm; 262 } 263 else 264 { 265 // MPI_Comm_dup(intraComm, &intraCommServer); 266 // comms.push_back(intraCommServer); 267 // MPI_Comm_dup(interComm, &interCommServer); 268 // comms.push_back(interCommServer); 269 } 270 } 271 258 272 else 259 // initClient is called by primary server pool273 // initClient is called by primary server 260 274 { 261 275 clientPrimServer.push_back(new CContextClient(this, intraComm, interComm)); … … 263 277 } 264 278 265 registryIn=new CRegistry(intraComm); 266 registryIn->setPath(getId()) ; 267 if (client->clientRank==0) registryIn->fromFile("xios_registry.bin") ; 268 registryIn->bcastRegistry() ; 269 270 registryOut=new CRegistry(intraComm) ; 271 registryOut->setPath(getId()) ; 272 273 MPI_Comm intraCommServer, interCommServer; 274 if (cxtServer) // Attached mode 275 { 276 intraCommServer = intraComm; 277 interCommServer = interComm; 278 } 279 else 280 { 281 MPI_Comm_dup(intraComm, &intraCommServer); 282 comms.push_back(intraCommServer); 283 MPI_Comm_dup(interComm, &interCommServer); 284 comms.push_back(interCommServer); 285 } 279 280 281 // registryIn=new CRegistry(intraComm); 282 // registryIn->setPath(getId()) ; 283 // if (client->clientRank==0) registryIn->fromFile("xios_registry.bin") ; 284 // registryIn->bcastRegistry() ; 285 // 286 // registryOut=new CRegistry(intraComm) ; 287 // registryOut->setPath(getId()) ; 288 289 286 290 } 287 291 … … 353 357 // client = new CContextClient(this,intraComm,interComm, cxtClient); 354 358 355 registryIn=new CRegistry(intraComm);356 registryIn->setPath(getId()) ;357 if (server->intraCommRank==0) registryIn->fromFile("xios_registry.bin") ;358 registryIn->bcastRegistry() ;359 registryOut=new CRegistry(intraComm) ;360 registryOut->setPath(getId()) ;359 // registryIn=new CRegistry(intraComm); 360 // registryIn->setPath(getId()) ; 361 // if (server->intraCommRank==0) registryIn->fromFile("xios_registry.bin") ; 362 // registryIn->bcastRegistry() ; 363 // registryOut=new CRegistry(intraComm) ; 364 // registryOut->setPath(getId()) ; 361 365 362 366 MPI_Comm intraCommClient, interCommClient; … … 368 372 else 369 373 { 370 MPI_Comm_dup(intraComm, &intraCommClient);371 comms.push_back(intraCommClient);372 MPI_Comm_dup(interComm, &interCommClient);373 comms.push_back(interCommClient);374 // MPI_Comm_dup(intraComm, &intraCommClient); 375 // comms.push_back(intraCommClient); 376 // MPI_Comm_dup(interComm, &interCommClient); 377 // comms.push_back(interCommClient); 374 378 } 375 379 … … 377 381 378 382 //! Server side: Put server into a loop in order to listen message from client 379 bool CContext::eventLoop(void)380 {381 if (CServer::serverLevel == 0)382 {383 return server->eventLoop();384 }385 else if (CServer::serverLevel == 1)386 {387 bool serverFinished = server->eventLoop();388 bool serverPrimFinished = true;389 for (int i = 0; i < serverPrimServer.size(); ++i)390 {391 serverPrimFinished *= serverPrimServer[i]->eventLoop();392 }393 return ( serverFinished && serverPrimFinished);394 }395 else396 {397 return server->eventLoop();398 }399 }383 // bool CContext::eventLoop(void) 384 // { 385 // if (CServer::serverLevel == 0) 386 // { 387 // return server->eventLoop(); 388 // } 389 // else if (CServer::serverLevel == 1) 390 // { 391 // bool serverFinished = server->eventLoop(); 392 // bool serverPrimFinished = true; 393 // for (int i = 0; i < serverPrimServer.size(); ++i) 394 // { 395 // serverPrimFinished *= serverPrimServer[i]->eventLoop(); 396 // } 397 // return ( serverFinished && serverPrimFinished); 398 // } 399 // else 400 // { 401 // return server->eventLoop(); 402 // } 403 // } 400 404 401 405 //! Try to send the buffers and receive possible answers … … 405 409 { 406 410 client->checkBuffers(); 407 return server->eventLoop(); 408 } 411 bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 412 if (hasTmpBufferedEvent) 413 hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 414 415 // Don't process events if there is a temporarily buffered event 416 return server->eventLoop(!hasTmpBufferedEvent); 417 } 418 409 419 else if (CServer::serverLevel == 1) 410 420 { 411 421 client->checkBuffers(); 422 bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 423 if (hasTmpBufferedEvent) 424 hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 425 bool serverFinished = server->eventLoop(!hasTmpBufferedEvent); 426 427 bool serverPrimFinished = true; 412 428 for (int i = 0; i < clientPrimServer.size(); ++i) 429 { 413 430 clientPrimServer[i]->checkBuffers(); 414 bool serverFinished = server->eventLoop(); 415 bool serverPrimFinished = true; 416 for (int i = 0; i < serverPrimServer.size(); ++i) 417 { 418 serverPrimFinished *= serverPrimServer[i]->eventLoop(); 431 bool hasTmpBufferedEventPrim = clientPrimServer[i]->hasTemporarilyBufferedEvent(); 432 if (hasTmpBufferedEventPrim) 433 hasTmpBufferedEventPrim = !clientPrimServer[i]->sendTemporarilyBufferedEvent(); 434 serverPrimFinished *= serverPrimServer[i]->eventLoop(hasTmpBufferedEventPrim); 419 435 } 420 436 return ( serverFinished && serverPrimFinished); 421 437 } 438 422 439 else if (CServer::serverLevel == 2) 423 440 { 424 441 client->checkBuffers(); 425 return server->eventLoop(); 442 bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 443 if (hasTmpBufferedEvent) 444 hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 445 return server->eventLoop(!hasTmpBufferedEvent); 426 446 } 427 447 } … … 433 453 { 434 454 finalized = true; 435 if (hasClient) sendRegistry() ; 455 // if (hasClient) sendRegistry() ; 456 457 client->finalize(); 458 while (!server->hasFinished()) 459 { 460 server->eventLoop(); 461 } 436 462 437 463 if ((hasClient) && (hasServer)) … … 450 476 } 451 477 452 client->finalize(); 453 while (!server->hasFinished()) 454 { 455 server->eventLoop(); 456 } 457 458 if (hasServer) 478 report(0)<< " Memory report : Context <"<<getId()<<"> : server side : total memory used for buffers "<<CContextServer::getTotalBuf()<<" bytes"<<endl; 479 480 // if (hasServer) 481 if (hasServer && !hasClient) 459 482 { 460 483 closeAllFile(); 461 registryOut->hierarchicalGatherRegistry() ;462 if (server->intraCommRank==0) CXios::globalRegistry->mergeRegistry(*registryOut) ;484 // registryOut->hierarchicalGatherRegistry() ; 485 // if (server->intraCommRank==0) CXios::globalRegistry->mergeRegistry(*registryOut) ; 463 486 } 464 487 … … 472 495 MPI_Comm_free(&(*it)); 473 496 comms.clear(); 474 475 497 476 498 } … … 1627 1649 } 1628 1650 1651 bool CContext::isFinalized(void) 1652 { 1653 return finalized; 1654 } 1655 1629 1656 } // namespace xios -
XIOS/dev/dev_olga/src/node/context.hpp
r1025 r1054 95 95 96 96 // Put sever or client into loop state 97 bool eventLoop(void);98 99 97 bool checkBuffersAndListen(void); 100 98 … … 167 165 void recvRegistry(CBufferIn& buffer) ; //!< registry is received by the servers 168 166 167 bool isFinalized(void); 168 169 169 // dispatch event 170 170 static bool dispatchEvent(CEventServer& event); … … 208 208 virtual bool hasChild(void) const; 209 209 210 210 211 public : 211 212 // Calendar of context … … 238 239 CContextServer* server; 239 240 240 // Client-server pair in case of secondary server pool241 241 // CContextClient* clientPrimServer; 242 242 // CContextServer* serverPrimServer; … … 250 250 StdString idServer_; 251 251 CGarbageCollector garbageCollector; 252 std::list<MPI_Comm> comms; //!< Communicators allocated internally 252 std::list<MPI_Comm> comms; //!< Communicators allocated internally --- significance?? 253 253 254 254 public: // Some function maybe removed in the near future -
XIOS/dev/dev_olga/src/node/domain.cpp
r1030 r1054 156 156 std::map<int, StdSize> CDomain::getAttributesBufferSize() 157 157 { 158 CContextClient* client = CContext::getCurrent()->client; 158 CContext* context = CContext::getCurrent(); 159 // For now the assumption is that secondary server pools consist of the same number of procs. 160 // CHANGE the line below if the assumption changes. 161 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 159 162 160 163 std::map<int, StdSize> attributesSizes = getMinimumBufferSizeForAttributes(); … … 272 275 this->isRedistributed_ = true; 273 276 CContext* context = CContext::getCurrent(); 274 CContextClient* client = context->client; 277 // For now the assumption is that secondary server pools consist of the same number of procs. 278 // CHANGE the line below if the assumption changes. 279 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 275 280 int rankClient = client->clientRank; 276 281 int rankOnDomain = rankClient%nbLocalDomain; … … 508 513 { 509 514 CContext* context = CContext::getCurrent(); 510 CContextClient* client = context->client; 515 // For now the assumption is that secondary server pools consist of the same number of procs. 516 // CHANGE the line below if the assumption changes. 517 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 511 518 lon_g.resize(ni_glo) ; 512 519 lat_g.resize(nj_glo) ; … … 1351 1358 this->computeConnectedClients(); 1352 1359 // if (hasLonLat || hasArea || isCompressible_) this->computeConnectedClients(); 1353 if (hasLonLat) this->completeLonLatClient(); 1360 if (hasLonLat) 1361 if (!context->hasServer) 1362 this->completeLonLatClient(); 1354 1363 } 1355 1364 … … 1397 1406 if (context->hasClient) 1398 1407 { 1408 // this->completeLonLatClient(); 1399 1409 sendAttributes(); 1400 1410 } … … 1444 1454 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1445 1455 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1446 for (int i = 0; i < nbSrvPools; ++i) 1447 { 1448 CContextClient* contextClientTmp = (context->hasServer) ? context->clientPrimServer[i] 1449 : context->client; 1456 for (int p = 0; p < nbSrvPools; ++p) 1457 { 1458 CContextClient* contextClientTmp = (context->hasServer) ? context->clientPrimServer[p] 1459 : context->client; 1460 1450 1461 int nbServer = contextClientTmp->serverSize; 1451 1462 std::vector<int> nGlobDomain(2); … … 1498 1509 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1499 1510 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1500 for (int i = 0; i < nbSrvPools; ++i)1501 { 1502 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;1511 for (int p = 0; p < nbSrvPools; ++p) 1512 { 1513 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 1503 1514 int nbServer=client->serverSize; 1504 1515 int rank = client->clientRank; … … 1668 1679 for (it = globalIndexDomainOnServer.begin(); it != ite; ++it) { 1669 1680 connectedServerRank_.push_back(it->first); 1670 //std::vector<size_t> vec = it->second;1671 //std::sort(vec.begin(), vec.end());1672 //indSrv_[it->first] = vec;1673 } 1674 1675 indSrv_.swap(globalIndexDomainOnServer);1681 std::vector<size_t> vec = it->second; 1682 std::sort(vec.begin(), vec.end()); 1683 indSrv_[it->first] = vec; 1684 } 1685 1686 // indSrv_.swap(globalIndexDomainOnServer); 1676 1687 nbConnectedClients_ = clientServerMap->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_); 1677 1688 1678 1689 clientServerMap->computeServerIndexMapping(globalIndexDomainZoom); 1679 1690 CClientServerMapping::GlobalIndexMap& globalIndexDomainZoomOnServer = clientServerMap->getGlobalIndexOnServer(); 1680 indZoomSrv_.swap(globalIndexDomainZoomOnServer);1691 // indZoomSrv_.swap(globalIndexDomainZoomOnServer); 1681 1692 std::vector<int> connectedServerZoomRank(indZoomSrv_.size()); 1682 for (it = indZoomSrv_.begin(); it != indZoomSrv_.end(); ++it) 1693 // for (it = indZoomSrv_.begin(); it != indZoomSrv_.end(); ++it) 1694 // connectedServerZoomRank.push_back(it->first); 1695 for (it = globalIndexDomainZoomOnServer.begin(); it != globalIndexDomainZoomOnServer.end(); ++it) 1696 { 1683 1697 connectedServerZoomRank.push_back(it->first); 1698 std::vector<size_t> vec = it->second; 1699 std::sort(vec.begin(), vec.end()); 1700 indZoomSrv_[it->first] = vec; 1701 } 1684 1702 nbConnectedClientsZoom_ = clientServerMap->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerZoomRank); 1685 1703 … … 1699 1717 void CDomain::sendAttributes() 1700 1718 { 1719 sendDistributionAttributes(); 1701 1720 sendIndex(); 1702 sendDistributionAttributes();1703 1721 sendMask(); 1704 1722 sendLonLat(); … … 1717 1735 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1718 1736 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1719 for (int i = 0; i < nbSrvPools; ++i)1720 { 1721 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;1737 for (int p = 0; p < nbSrvPools; ++p) 1738 { 1739 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 1722 1740 1723 1741 CEventClient eventIndex(getType(), EVENT_ID_INDEX); … … 1788 1806 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1789 1807 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1790 for (int i = 0; i < nbSrvPools; ++i)1791 { 1792 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;1808 for (int p = 0; p < nbSrvPools; ++p) 1809 { 1810 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 1793 1811 1794 1812 // send area for each connected server … … 1835 1853 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1836 1854 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1837 for (int i = 0; i < nbSrvPools; ++i)1838 { 1839 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;1855 for (int p = 0; p < nbSrvPools; ++p) 1856 { 1857 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 1840 1858 1841 1859 // send area for each connected server … … 1885 1903 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1886 1904 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1887 for (int i = 0; i < nbSrvPools; ++i)1888 { 1889 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;1905 for (int p = 0; p < nbSrvPools; ++p) 1906 { 1907 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 1890 1908 1891 1909 // send lon lat for each connected server … … 1954 1972 eventLat.push(rank, nbConnectedClients_[rank], list_msgsLat.back()); 1955 1973 } 1956 1957 1974 client->sendEvent(eventLon); 1958 1975 client->sendEvent(eventLat); … … 1971 1988 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1972 1989 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 1973 for (int i = 0; i < nbSrvPools; ++i)1974 { 1975 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[ i] : context->client;1990 for (int p = 0; p < nbSrvPools; ++p) 1991 { 1992 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 1976 1993 1977 1994 // send area for each connected server … … 2204 2221 for (idx =0; idx < ni_zoom; ++idx) 2205 2222 { 2206 2223 if ((ibegin <= zoom_i_index(idx)) && (zoom_i_index(idx) < ibegin+ni) && (nbIZoom < ni)) 2207 2224 ++nbIZoom; 2208 2225 if ((jbegin <= zoom_j_index(idx)) && (zoom_j_index(idx) < jbegin+nj) && (nbJZoom < nj)) 2209 2226 ++nbJZoom; 2210 2227 } … … 2237 2254 } 2238 2255 2239 MPI_Scan(&count_write_index_[0], &start_write_index_[0], 2, MPI_INT, MPI_SUM, server->intraComm); 2240 start_write_index_[0] = 0; 2241 start_write_index_[1] -= count_write_index_[1]; 2256 MPI_Scan(&count_write_index_[0], &start_write_index_[0], 2, MPI_INT, MPI_SUM, server->intraComm); 2257 if ((this->type) != CDomain::type_attr::unstructured) 2258 { 2259 start_write_index_[0] = 0; 2260 start_write_index_[1] -= count_write_index_[1]; 2261 } 2262 else 2263 { 2264 start_write_index_[0] -= count_write_index_[0]; 2265 } 2242 2266 local_write_size_[0] = count_write_index_[0]; 2243 2267 local_write_size_[1] = count_write_index_[1]; 2244 2268 MPI_Allreduce(&count_write_index_[0], &global_write_size_[0], 2, MPI_INT, MPI_SUM, server->intraComm); 2245 global_write_size_[0] = count_write_index_[0]; 2246 global_write_size_[1] = (global_write_size_[1] > nj_glo) ? nj_glo : global_write_size_[1]; 2247 2269 if ((this->type) != CDomain::type_attr::unstructured) 2270 { 2271 global_write_size_[0] = count_write_index_[0]; 2272 global_write_size_[1] = (global_write_size_[1] > nj_glo) ? nj_glo : global_write_size_[1]; 2273 } 2248 2274 } 2249 2275 -
XIOS/dev/dev_olga/src/node/field.cpp
r1030 r1054 125 125 // CContextClient* client = context->client; 126 126 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 127 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 128 for (int i = 0; i < nbSrvPools; ++i) 129 { 130 CContextClient* client = (!context->hasServer) ? context->client : context->clientPrimServer[i]; 127 // int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 128 // for (int i = 0; i < nbSrvPools; ++i) 129 // { 130 // CContextClient* client = (!context->hasServer) ? context->client : context->clientPrimServer[i]; 131 CContextClient* client = (!context->hasServer) ? context->client : this->file->getContextClient(); 131 132 132 133 CEventClient event(getType(), EVENT_ID_UPDATE_DATA); … … 176 177 client->sendEvent(event); 177 178 } 178 }179 // } 179 180 180 181 CTimer::get("XIOS Send Data").suspend(); 181 182 } 182 183 184 /* 183 185 void CField::sendUpdateData(const CArray<double,1>& data, CContextClient* client) 184 186 { … … 233 235 CTimer::get("XIOS Send Data").suspend(); 234 236 } 235 237 */ 236 238 void CField::recvUpdateData(CEventServer& event) 237 239 { -
XIOS/dev/dev_olga/src/node/field.hpp
r1024 r1054 146 146 static bool dispatchEvent(CEventServer& event); 147 147 void sendUpdateData(const CArray<double,1>& data); 148 void sendUpdateData(const CArray<double,1>& data, CContextClient* client);148 // void sendUpdateData(const CArray<double,1>& data, CContextClient* client); 149 149 static void recvUpdateData(CEventServer& event); 150 150 void recvUpdateData(std::map<int,CBufferIn*>& rankBuffers); -
XIOS/dev/dev_olga/src/node/file.cpp
r1025 r1054 270 270 void CFile::checkFile(void) 271 271 { 272 if (mode.isEmpty() || mode.getValue() == mode_attr::write) 272 CContext* context = CContext::getCurrent(); 273 // Done by classical server or secondary server 274 if (!CXios::usingServer2 || (CXios::usingServer2 && !context->hasClient)) 273 275 { 274 if (!isOpen) createHeader(); 275 checkSync(); 276 } 277 else 278 { 279 if (!isOpen) openInReadMode(); 280 } 281 checkSplit(); 276 if (mode.isEmpty() || mode.getValue() == mode_attr::write) 277 { 278 if (!isOpen) createHeader(); 279 checkSync(); 280 } 281 else 282 { 283 if (!isOpen) openInReadMode(); 284 } 285 checkSplit(); 286 } 282 287 } 283 288 … … 590 595 CContext* context = CContext::getCurrent(); 591 596 CContextClient* client=context->client; 597 // CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 592 598 593 599 // It would probably be better to call initFile() somehow -
XIOS/dev/dev_olga/src/node/file.hpp
r1025 r1054 170 170 private : 171 171 /// Propriétés privées /// 172 CContextClient* client; 172 173 CFieldGroup* vFieldGroup; 173 174 CVariableGroup* vVariableGroup; … … 175 176 boost::shared_ptr<CDataInput> data_in; 176 177 std::vector<CField*> enabledFields; 177 CContextClient* client;178 178 179 179 public: -
XIOS/dev/dev_olga/src/node/grid.cpp
r1030 r1054 630 630 computeClientIndex(); 631 631 if (context->hasClient) 632 computeConnectedClients(); 632 { 633 computeConnectedClients(); 634 } 633 635 634 636 … … 792 794 } 793 795 794 nbIndexOnServer = 0; 795 for (it = itb; it != ite; ++it) 796 // nbIndexOnServer = 0; 797 // for (it = itb; it != ite; ++it) 798 // { 799 // const std::vector<int>& tmp = it->second; 800 // nbIndexOnServerTmp = 0; 801 // for (int i = 0; i < tmp.size(); ++i) 802 // { 803 // if (0 == nbIndexOnServerTmp(tmp[i])) 804 // { 805 // globalElementIndexOnServer[idx][tmp[i]][nbIndexOnServer(tmp[i])] = it->first; 806 // ++nbIndexOnServerTmp(tmp[i]); 807 // } 808 // } 809 // nbIndexOnServer += nbIndexOnServerTmp; 810 // } 811 // } 812 813 nbIndexOnServer = 0; 814 // for (it = itb; it != ite; ++it) 815 for (size_t j = 0; j < globalIndexElementOnServerMap.size(); ++j) 816 { 817 it = globalIndexElementOnServerMap.find(globalIndexElementOnClient(j)); 818 if (it != ite) 796 819 { 797 820 const std::vector<int>& tmp = it->second; … … 808 831 } 809 832 } 833 } 810 834 811 835 // Determine server which contain global source index … … 1236 1260 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 1237 1261 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 1238 for (int i = 0; i < nbSrvPools; ++i)1239 { 1240 CContextClient* client = context->hasServer ? context->clientPrimServer[ i] : context->client ;1262 for (int p = 0; p < nbSrvPools; ++p) 1263 { 1264 CContextClient* client = context->hasServer ? context->clientPrimServer[p] : context->client ; 1241 1265 1242 1266 CEventClient event(getType(), EVENT_ID_INDEX); … … 1397 1421 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 1398 1422 nbSrvPools = 1; 1399 for (int i = 0; i < nbSrvPools; ++i) 1400 { 1401 CContextServer* server = (context->hasServer) ? context->server : context->serverPrimServer[i]; 1402 CContextClient* client = (context->hasServer) ? context->client : context->clientPrimServer[i]; 1423 for (int p = 0; p < nbSrvPools; ++p) 1424 { 1425 CContextServer* server = (!context->hasClient) ? context->server : context->serverPrimServer[p]; 1426 CContextClient* client = (!context->hasClient) ? context->client : context->clientPrimServer[p]; 1427 // CContextServer* server = (context->hasServer) ? context->server : context->serverPrimServer[p]; 1428 // CContextClient* client = (context->hasServer) ? context->client : context->clientPrimServer[p]; 1403 1429 numberWrittenIndexes_ = totalNumberWrittenIndexes_ = offsetWrittenIndexes_ = 0; 1404 1430 connectedServerRank_ = ranks; … … 1503 1529 else 1504 1530 { 1505 dataSize = outIndex.numElements(); 1506 for (int i = 0; i < outIndex.numElements(); ++i) outIndex(i) = i; 1531 // dataSize = outIndex.numElements(); 1532 // for (int i = 0; i < outIndex.numElements(); ++i) outIndex(i) = i; 1533 // THE PROBLEM HERE IS THAT DATA CAN BE NONDISTRIBUTED ON CLIENT AND DISTRIBUTED ON SERVER 1534 // BELOW IS THE TEMPORARY FIX only for a single type of element (domain, asix, scalar) 1535 dataSize = serverDistribution_->getGlobalIndexEachDimension()[0].numElements(); 1536 outIndex.resize(dataSize); 1537 outIndex = serverDistribution_->getGlobalIndexEachDimension()[0]; 1538 1507 1539 } 1508 1540 writtenDataSize_ += dataSize; -
XIOS/dev/dev_olga/src/object_template_impl.hpp
r1030 r1054 296 296 } 297 297 } 298 // // if (!context->hasServer)299 // if (context->hasClient)300 // {301 // CContextClient* client=context->client;302 303 // CEventClient event(getType(),EVENT_ID_SEND_ATTRIBUTE);304 // if (client->isServerLeader())305 // {306 // CMessage msg;307 // // msg << this->getId();308 // msg << this->getIdServer();309 // msg << attr.getName();310 // msg << attr;311 // const std::list<int>& ranks = client->getRanksServerLeader();312 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank)313 // event.push(*itRank,1,msg);314 // client->sendEvent(event);315 // }316 // else client->sendEvent(event);317 // }318 319 298 } 320 299 -
XIOS/dev/dev_olga/src/server.cpp
r1021 r1054 20 20 list<MPI_Comm> CServer::interCommLeft ; 21 21 list<MPI_Comm> CServer::interCommRight ; 22 list<MPI_Comm> CServer::interComm ;22 // list<MPI_Comm> CServer::interComm ; 23 23 std::list<MPI_Comm> CServer::contextInterComms; 24 24 int CServer::serverLevel = 0 ; 25 int CServer::serverLeader = 0; 26 int CServer::serverSize = 0; 25 27 int CServer::nbPools = 0; 26 28 int CServer::poolId = 0; 27 int CServer::serverSize = 0;28 29 bool CServer::isRoot = false ; 29 30 int CServer::rank = INVALID_RANK; … … 38 39 /*! 39 40 * \fn void CServer::initialize(void) 40 * Creates intraComm and interComm for a server pool (primary or secondary). 41 * Creates intraComm for each possible type of servers (classical, primary or secondary). 42 * In case of secondary servers intraComm is created for each secondary server pool. 43 * (For now the assumption is that there is one proc per pool.) 44 * Creates the following lists of interComms: 45 * classical server -- interCommLeft 46 * primary server -- interCommLeft and interCommRight 47 * secondary server -- interComm for each pool. 41 48 */ 42 49 void CServer::initialize(void) … … 64 71 65 72 unsigned long* hashAll ; 66 // unsigned long* hashAllServers ;67 73 68 74 // int rank ; … … 129 135 MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ; 130 136 interCommLeft.push_back(newComm) ; 131 interComm.push_back(newComm) ;132 137 } 133 138 } … … 135 140 else if (serverLevel == 1) 136 141 { 137 int clientLeader, srvPrmLeader, srvSndLeader; 142 int clientLeader, srvSndLeader; 143 int srvPrmLeader ; 138 144 for (it=leaders.begin();it!=leaders.end();it++) 139 145 { … … 148 154 MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ; 149 155 interCommLeft.push_back(newComm) ; 150 interComm.push_back(newComm) ;151 156 } 152 157 else 153 s rvPrmLeader = it->second;158 serverLeader = it->second; 154 159 } 155 160 156 161 for (int i = 0; i < nbPools; ++i) 157 162 { 158 srvSndLeader = srvPrmLeader + serverSize - nbPools + i; 159 // CClient::initializeClientOnServer(rank, serversComm, srvSndLeader); 160 CClient::initializeClientOnServer(rank, intraComm, srvSndLeader); 161 interCommRight.push_back(CClient::getInterComm()); 162 interComm.push_back(CClient::getInterComm()); 163 srvSndLeader = serverLeader + serverSize - nbPools + i; 164 int intraCommSize, intraCommRank ; 165 MPI_Comm_size(intraComm, &intraCommSize) ; 166 MPI_Comm_rank(intraComm, &intraCommRank) ; 167 info(50)<<"intercommCreate::client "<<rank<<" intraCommSize : "<<intraCommSize 168 <<" intraCommRank :"<<intraCommRank<<" clientLeader "<< srvSndLeader<<endl ; 169 MPI_Intercomm_create(intraComm, 0, CXios::globalComm, srvSndLeader, 0, &newComm) ; 170 interCommRight.push_back(newComm) ; 163 171 } 164 172 } // primary server … … 175 183 MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ; 176 184 interCommLeft.push_back(newComm) ; 177 interComm.push_back(newComm) ;178 185 } // secondary server 179 186 … … 210 217 if (rank==0) MPI_Send(&globalRank,1,MPI_INT,0,0,newComm) ; 211 218 MPI_Comm_remote_size(newComm,&size); 212 interComm.push_back(newComm) ; 219 // interComm.push_back(newComm) ; 220 interCommLeft.push_back(newComm) ; 213 221 } 214 222 oasis_enddef() ; 215 223 } 216 224 217 MPI_Comm_rank(intraComm, &rank) ; 218 if (rank==0) isRoot=true; 225 int rankServer; 226 MPI_Comm_rank(intraComm, &rankServer) ; 227 if (rankServer==0) isRoot=true; 219 228 else isRoot=false; 220 229 … … 235 244 // MPI_Comm_free(&(*it)); 236 245 237 for (std::list<MPI_Comm>::iterator it = interCommLeft.begin(); it != interCommLeft.end(); it++)238 MPI_Comm_free(&(*it));239 240 for (std::list<MPI_Comm>::iterator it = interCommRight.begin(); it != interCommRight.end(); it++)241 MPI_Comm_free(&(*it));246 for (std::list<MPI_Comm>::iterator it = interCommLeft.begin(); it != interCommLeft.end(); it++) 247 MPI_Comm_free(&(*it)); 248 249 for (std::list<MPI_Comm>::iterator it = interCommRight.begin(); it != interCommRight.end(); it++) 250 MPI_Comm_free(&(*it)); 242 251 243 252 MPI_Comm_free(&intraComm); … … 273 282 274 283 contextEventLoop() ; 284 // if (finished && contextList.empty()) stop=true ; 275 285 if (finished && contextList.empty()) stop=true ; 276 286 eventScheduler->checkEvent() ; … … 294 304 if (flag==true) 295 305 { 296 MPI_Recv(&msg,1,MPI_INT,0,0,*it,&status) ; 297 info(20)<<" CServer : Receive client finalize"<<endl ; 298 299 // If primary server, send finalize to secondary server pool(s) 300 for(itr=interCommRight.begin(); itr!=interCommRight.end(); itr++) 301 { 302 MPI_Send(&msg,1,MPI_INT,0,0,*itr) ; 303 // MPI_Comm_free(&(*itr)); 304 // interCommRight.erase(itr) ; 305 } 306 306 MPI_Recv(&msg,1,MPI_INT,0,0,*it,&status) ; 307 info(20)<<" CServer : Receive client finalize"<<endl ; 308 // Sending server finalize message to secondary servers (if any) 309 for(itr=interCommRight.begin();itr!=interCommRight.end();itr++) 310 { 311 MPI_Send(&msg,1,MPI_INT,0,0,*itr) ; 312 // itr = interCommRight.erase(itr) ; 313 } 307 314 MPI_Comm_free(&(*it)); 308 // interComm.erase(it) ;309 315 interCommLeft.erase(it) ; 310 316 break ; … … 312 318 } 313 319 314 if (interCommLeft.empty()) 315 // if (interComm.empty()) 320 if (interCommLeft.empty()) 316 321 { 317 322 int i,size ; … … 381 386 MPI_Get_count(&status,MPI_CHAR,&count) ; 382 387 recvContextMessage(buffer,count) ; 383 delete [] buffer 388 delete [] buffer; 384 389 recept=false ; 385 390 } … … 390 395 { 391 396 static map<string,contextMessage> recvContextId; 392 393 397 map<string,contextMessage>::iterator it ; 394 395 398 CBufferIn buffer(buff,count) ; 396 399 string id ; … … 434 437 void CServer::listenRootContext(void) 435 438 { 436 437 439 MPI_Status status ; 438 440 int flag ; … … 464 466 MPI_Get_count(&status,MPI_CHAR,&count) ; 465 467 registerContext(buffer,count) ; 466 467 468 delete [] buffer ; 468 469 recept=false ; … … 484 485 << "Context '" << contextId << "' has already been registred"); 485 486 486 MPI_Comm contextInterComm;487 MPI_Intercomm_create(intraComm,0,CXios::globalComm,leaderRank,10+leaderRank,&contextInterComm);488 489 MPI_Comm inter;490 MPI_Intercomm_merge(contextInterComm,1,&inter);491 MPI_Barrier(inter);492 493 487 context=CContext::create(contextId); 494 488 contextList[contextId]=context; 495 context->initServer(intraComm,contextInterComm); 496 contextInterComms.push_back(contextInterComm); 497 489 490 // All type of servers initialize its own server (CContextServer) 491 if (serverLevel < 2) 492 { 493 MPI_Comm contextInterComm; 494 MPI_Intercomm_create(intraComm, 0, CXios::globalComm, leaderRank, 10+leaderRank, &contextInterComm); 495 MPI_Comm inter; 496 MPI_Intercomm_merge(contextInterComm,1,&inter); 497 MPI_Barrier(inter); 498 MPI_Comm_free(&inter); 499 context->initServer(intraComm,contextInterComm); 500 contextInterComms.push_back(contextInterComm); 501 } 502 else if (serverLevel == 2) 503 { 504 context->initServer(intraComm, interCommLeft.front()); 505 } 506 507 // Primary server: send create context message to secondary servers and initialize its own client (CContextClient) 498 508 if (serverLevel == 1) 499 509 { 500 // CClient::registerContext(contextId, intraComm); 501 CClient::registerContextByClienOfServer(contextId, intraComm); 502 } 503 504 MPI_Comm_free(&inter); 505 510 int i = 0, size; 511 CMessage msg; 512 int messageSize; 513 MPI_Comm_size(intraComm, &size) ; 514 for (std::list<MPI_Comm>::iterator it = interCommRight.begin(); it != interCommRight.end(); it++, ++i) 515 { 516 StdString str = contextId +"_server_" + boost::lexical_cast<string>(i); 517 msg<<str<<size<<rank ; 518 messageSize = msg.size() ; 519 buff = new char[messageSize] ; 520 CBufferOut buffer(buff,messageSize) ; 521 buffer<<msg ; 522 int sndServerGloRanks = serverSize-nbPools+serverLeader +i; // the assumption is that there is only one proc per secondary server pool 523 MPI_Send(buff, buffer.count(), MPI_CHAR, sndServerGloRanks, 1, CXios::globalComm) ; 524 context->initClient(intraComm, *it) ; 525 delete [] buff ; 526 } 527 } 506 528 } 507 529 … … 509 531 { 510 532 bool finished ; 533 511 534 map<string,CContext*>::iterator it ; 512 535 513 536 for(it=contextList.begin();it!=contextList.end();it++) 514 537 { 515 finished=it->second-> checkBuffersAndListen();538 finished=it->second->isFinalized(); 516 539 if (finished) 517 540 { … … 519 542 break ; 520 543 } 544 else 545 finished=it->second->checkBuffersAndListen(); 521 546 } 522 547 } … … 554 579 { 555 580 if (serverLevel == 1) 556 id = getRank();581 id = rank-serverLeader; 557 582 else 558 583 id = poolId; -
XIOS/dev/dev_olga/src/server.hpp
r1021 r1054 14 14 public: 15 15 static void initialize(void); 16 static void initialize(const StdString& serverId);17 16 static void finalize(void); 18 17 static void eventLoop(void); … … 23 22 static void listenRootContext(void); 24 23 static void listenRootFinalize(void); 25 static void registerContext(void* buff,int count, int leaderRank=0); // context registered by the primary server24 static void registerContext(void* buff,int count, int leaderRank=0); 26 25 27 // Communicators for the primary group of servers28 26 static MPI_Comm intraComm; 29 static list<MPI_Comm> interCommLeft; // interComm between server (primary or secondary) and its client (client or primary server) 30 static list<MPI_Comm> interCommRight; // interComm between primary server and secondary server (non-empty only for primary server pool) 31 static list<MPI_Comm> interComm; // interCommLeft + interCommRight 32 static std::list<MPI_Comm> contextInterComms; 27 static list<MPI_Comm> interCommLeft; // interComm between server (primary, classical or secondary) and its client (client or primary server) 28 static list<MPI_Comm> interCommRight; // interComm between primary server and secondary server (non-empty only for primary server pool) 29 static std::list<MPI_Comm> contextInterComms; // significance ?? 33 30 static CEventScheduler* eventScheduler; 34 31 35 32 static int serverLevel ; 36 37 // static int nbSndSrvPools; // number of secondary server pools38 // static int poolNb; // for secondary servers; stores the pool number39 33 40 34 struct contextMessage … … 46 40 static bool isRoot; 47 41 48 static map<string,CContext*> contextList; // contexts on the primary server42 static map<string,CContext*> contextList; 49 43 static bool finished; 50 44 static bool is_MPI_Initialized; … … 70 64 private: 71 65 static int rank; 72 static int serverSize; //!< Number of procs dedicated to server 73 static int nbPools; //!< Number of secondary-server pools 74 static int poolId; //!< ID of a secondary-server pool 66 static int serverLeader; //!< Leader of the classical or primary server (needed in case of secondary servers) 67 static int serverSize; //!< Number of procs dedicated to servers (primary and seconday (if any) combined) 68 static int nbPools; //!< Number of secondary server pools 69 static int poolId; //!< id of a secondary server pool starting from 1 75 70 static StdOFStream m_infoStream; 76 71 static StdOFStream m_errorStream; -
XIOS/dev/dev_olga/src/xios_server.f90
r983 r1054 4 4 INCLUDE "mpif.h" 5 5 INTEGER :: ierr 6 INTEGER :: server_level = 07 ! 0 in case of a single server pool8 ! 1 for primary server in case of two server pools9 ! 2 for secondary server in case of two server pools10 6 11 CALL xios_init_server (server_level)7 CALL xios_init_server 12 8 13 9 END PROGRAM server_main
Note: See TracChangeset
for help on using the changeset viewer.