Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7401


Ignore:
Timestamp:
Sep 11, 2010, 12:34:00 AM (11 years ago)
Author:
landauf
Message:

merged doc branch back to trunk

Location:
code/trunk
Files:
12 deleted
206 edited
16 copied

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/cmake/tools/TargetUtilities.cmake

    r7170 r7401  
    209209    )
    210210    ADD_MODULE(${_target_name})
     211    # Ensure that the main program depends on the module
     212    SET(ORXONOX_MODULES ${ORXONOX_MODULES} ${_target_name} CACHE STRING "" FORCE)
    211213  ENDIF()
    212214
  • code/trunk/doc/api/CMakeLists.txt

    r6417 r7401  
    4646  #ENDIF (NOT DVIPS_CONVERTER)
    4747
     48  SET(INTERNAL_DOCFILE ${CMAKE_CURRENT_BINARY_DIR}/Internal.dox)
     49  IF(WIN32)
     50    SET(_working_dir ${RUNTIME_LIBRARY_DIRECTORY})
     51  ELSE()
     52    SET(_working_dir ${CMAKE_CURRENT_BINARY_DIR})
     53  ENDIF()
     54  ADD_CUSTOM_COMMAND(
     55    OUTPUT ${INTERNAL_DOCFILE}
     56    COMMAND orxonox-main
     57    ARGS --noIOConsole --generateDoc ${INTERNAL_DOCFILE}
     58    WORKING_DIRECTORY ${_working_dir}
     59    COMMENT "Generating additional Doxygen documentation from Orxonox executable"
     60  )
     61  ADD_CUSTOM_TARGET(doc_internal DEPENDS ${INTERNAL_DOCFILE})
     62  IF (NOT EXISTS ${INTERNAL_DOCFILE})
     63    FILE(WRITE ${INTERNAL_DOCFILE} "// empty...")
     64  ENDIF()
     65
     66  # Take care of most of the conditional compilation problems
     67  # (Doxygen requires separate input for that)
     68  IF(WIN32)
     69    SET(DOXY_PLATFORM_DEF "ORXONOX_PLATFORM_WINDOWS")
     70  ELSEIF(APPLE)
     71    SET(DOXY_PLATFORM_DEF "ORXONOX_PLATFORM_APPLE ORXONOX_PLATFORM_UNIX")
     72  ELSE()
     73    SET(DOXY_PLATFORM_DEF "ORXONOX_PLATFORM_LINUX ORXONOX_PLATFORM_UNIX")
     74  ENDIF()
     75  IF(MSVC)
     76    SET(DOXY_COMPILER_DEF "ORXONOX_COMPILER_MSVC")
     77  ELSE()
     78    SET(DOXY_COMPILER_DEF "ORXONOX_COMPILER_GCC")
     79  ENDIF()
     80
    4881  IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/doxy.config.in)
    49     CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doxy.config.in ${CMAKE_CURRENT_BINARY_DIR}/doxy.config @ONLY)
    5082    # use (configured) doxy.config from (out of place) BUILD tree:
    5183    SET(DOXY_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/doxy.config)
    5284    SET(DOXY_LOGFILE ${CMAKE_CURRENT_BINARY_DIR}/doxy.log)
     85    CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doxy.config.in ${CMAKE_CURRENT_BINARY_DIR}/doxy.config @ONLY)
    5386  ELSE()
    5487    MESSAGE(FATAL_ERROR "Warning: Could not find dox.config.in in the root directory.")
  • code/trunk/doc/api/doxy.config.in

    r6085 r7401  
    1 # Doxyfile 1.4.5
     1# Doxyfile 1.6.3
    22
    33# This file describes the settings to be used by the documentation system
     
    1515#---------------------------------------------------------------------------
    1616
    17 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
     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.
     22
     23DOXYFILE_ENCODING      = UTF-8
     24
     25# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
    1826# by quotes) that should identify the project.
    1927
    2028PROJECT_NAME           = "@PROJECT_NAME@"
    2129
    22 # The PROJECT_NUMBER tag can be used to enter a project or revision number. 
    23 # This could be handy for archiving the generated documentation or 
     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
    2432# if some version control system is used.
    2533
    2634PROJECT_NUMBER         = "@ORXONOX_VERSION@ Codename: @ORXONOX_VERSION_NAME@"
    2735
    28 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
    29 # base path where the generated documentation will be put. 
    30 # If a relative path is entered, it will be relative to the location 
     36# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
     37# base path where the generated documentation will be put.
     38# If a relative path is entered, it will be relative to the location
    3139# where doxygen was started. If left blank the current directory will be used.
    3240
    3341OUTPUT_DIRECTORY       = @DOXY_OUTPUT_DIR@
    3442
    35 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
    36 # 4096 sub-directories (in 2 levels) under the output directory of each output 
    37 # format and will distribute the generated files over these directories. 
    38 # Enabling this option can be useful when feeding doxygen a huge amount of 
    39 # source files, where putting all generated files in the same directory would 
     43# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
     44# 4096 sub-directories (in 2 levels) under the output directory of each output
     45# format and will distribute the generated files over these directories.
     46# Enabling this option can be useful when feeding doxygen a huge amount of
     47# source files, where putting all generated files in the same directory would
    4048# otherwise cause performance problems for the file system.
    4149
    4250CREATE_SUBDIRS         = NO
    4351
    44 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
    45 # documentation generated by doxygen is written. Doxygen will use this
    46 # information to generate all constant output in the proper language.
    47 # The default language is English, other supported languages are:
    48 # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
    49 # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
    50 # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
    51 # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
    52 # Swedish, and Ukrainian.
     52# The OUTPUT_LANGUAGE tag is used to specify the language in which all
     53# documentation generated by doxygen is written. Doxygen will use this
     54# information to generate all constant output in the proper language.
     55# The default language is English, other supported languages are:
     56# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
     57# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
     58# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
     59# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
     60# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
     61# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
    5362
    5463OUTPUT_LANGUAGE        = English
    5564
    56 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
    57 # include brief member descriptions after the members that are listed in 
    58 # the file and class documentation (similar to JavaDoc). 
     65# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
     66# include brief member descriptions after the members that are listed in
     67# the file and class documentation (similar to JavaDoc).
    5968# Set to NO to disable this.
    6069
    6170BRIEF_MEMBER_DESC      = YES
    6271
    63 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
    64 # the brief description of a member or function before the detailed description. 
    65 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
     72# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
     73# the brief description of a member or function before the detailed description.
     74# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
    6675# brief descriptions will be completely suppressed.
    6776
    6877REPEAT_BRIEF           = YES
    6978
    70 # This tag implements a quasi-intelligent brief description abbreviator 
    71 # that is used to form the text in various listings. Each string 
    72 # in this list, if found as the leading text of the brief description, will be 
    73 # stripped from the text and the result after processing the whole list, is 
    74 # used as the annotated text. Otherwise, the brief description is used as-is. 
    75 # If left blank, the following values are used ("$name" is automatically 
    76 # replaced with the name of the entity): "The $name class" "The $name widget" 
    77 # "The $name file" "is" "provides" "specifies" "contains" 
     79# This tag implements a quasi-intelligent brief description abbreviator
     80# that is used to form the text in various listings. Each string
     81# in this list, if found as the leading text of the brief description, will be
     82# stripped from the text and the result after processing the whole list, is
     83# used as the annotated text. Otherwise, the brief description is used as-is.
     84# If left blank, the following values are used ("$name" is automatically
     85# replaced with the name of the entity): "The $name class" "The $name widget"
     86# "The $name file" "is" "provides" "specifies" "contains"
    7887# "represents" "a" "an" "the"
    7988
     
    9099                         the
    91100
    92 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
    93 # Doxygen will generate a detailed section even if there is only a brief 
     101# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
     102# Doxygen will generate a detailed section even if there is only a brief
    94103# description.
    95104
    96105ALWAYS_DETAILED_SEC    = NO
    97106
    98 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
    99 # inherited members of a class in the documentation of that class as if those 
    100 # members were ordinary class members. Constructors, destructors and assignment 
     107# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
     108# inherited members of a class in the documentation of that class as if those
     109# members were ordinary class members. Constructors, destructors and assignment
    101110# operators of the base classes will not be shown.
    102111
    103112INLINE_INHERITED_MEMB  = NO
    104113
    105 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
    106 # path before files name in the file list and in the header files. If set 
     114# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
     115# path before files name in the file list and in the header files. If set
    107116# to NO the shortest path that makes the file name unique will be used.
    108117
    109118FULL_PATH_NAMES        = YES
    110119
    111 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
    112 # can be used to strip a user-defined part of the path. Stripping is 
    113 # only done if one of the specified strings matches the left-hand part of 
    114 # the path. The tag can be used to show relative paths in the file list. 
    115 # If left blank the directory from which doxygen is run is used as the 
     120# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
     121# can be used to strip a user-defined part of the path. Stripping is
     122# only done if one of the specified strings matches the left-hand part of
     123# the path. The tag can be used to show relative paths in the file list.
     124# If left blank the directory from which doxygen is run is used as the
    116125# path to strip.
    117126
    118 STRIP_FROM_PATH        = @CMAKE_SOURCE_DIR@
    119 
    120 
    121 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
    122 # the path mentioned in the documentation of a class, which tells 
    123 # the reader which header file to include in order to use a class. 
    124 # If left blank only the name of the header file containing the class 
    125 # definition is used. Otherwise one should specify the include paths that 
     127STRIP_FROM_PATH        = @CMAKE_SOURCE_DIR@/src \
     128                         @CMAKE_BINARY_DIR@/src
     129
     130# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
     131# the path mentioned in the documentation of a class, which tells
     132# the reader which header file to include in order to use a class.
     133# If left blank only the name of the header file containing the class
     134# definition is used. Otherwise one should specify the include paths that
    126135# are normally passed to the compiler using the -I flag.
    127136
    128 STRIP_FROM_INC_PATH    = @CMAKE_SOURCE_DIR@
    129 
    130 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
    131 # (but less readable) file names. This can be useful is your file systems 
     137STRIP_FROM_INC_PATH    = @DOXYGEN_INCLUDE_DIRECTORIES@
     138
     139# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
     140# (but less readable) file names. This can be useful is your file systems
    132141# doesn't support long names like on DOS, Mac, or CD-ROM.
    133142
    134143SHORT_NAMES            = NO
    135144
    136 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
    137 # will interpret the first line (until the first dot) of a JavaDoc-style 
    138 # comment as the brief description. If set to NO, the JavaDoc 
    139 # comments will behave just like the Qt-style comments (thus requiring an
    140 # explicit @brief command for a brief description.
     145# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
     146# will interpret the first line (until the first dot) of a JavaDoc-style
     147# comment as the brief description. If set to NO, the JavaDoc
     148# comments will behave just like regular Qt-style comments
     149# (thus requiring an explicit @brief command for a brief description.)
    141150
    142151JAVADOC_AUTOBRIEF      = YES
    143152
    144 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
    145 # treat a multi-line C++ special comment block (i.e. a block of //! or ///
    146 # comments) as a brief description. This used to be the default behaviour.
    147 # The new default is to treat a multi-line C++ comment block as a detailed
     153# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
     154# interpret the first line (until the first dot) of a Qt-style
     155# comment as the brief description. If set to NO, the comments
     156# will behave just like regular Qt-style comments (thus requiring
     157# an explicit \brief command for a brief description.)
     158
     159QT_AUTOBRIEF           = NO
     160
     161# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
     162# treat a multi-line C++ special comment block (i.e. a block of //! or ///
     163# comments) as a brief description. This used to be the default behaviour.
     164# The new default is to treat a multi-line C++ comment block as a detailed
    148165# description. Set this tag to YES if you prefer the old behaviour instead.
    149166
    150167MULTILINE_CPP_IS_BRIEF = NO
    151168
    152 # If the DETAILS_AT_TOP tag is set to YES then Doxygen
    153 # will output the detailed description near the top, like JavaDoc.
    154 # If set to NO, the detailed description appears after the member
     169# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
     170# member inherits the documentation from any documented member that it
     171# re-implements.
     172
     173INHERIT_DOCS           = YES
     174
     175# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
     176# a new page for each member. If set to NO, the documentation of a member will
     177# be part of the file/class/namespace that contains it.
     178
     179SEPARATE_MEMBER_PAGES  = NO
     180
     181# The TAB_SIZE tag can be used to set the number of spaces in a tab.
     182# Doxygen uses this value to replace tabs by spaces in code fragments.
     183
     184TAB_SIZE               = 4
     185
     186# This tag can be used to specify a number of aliases that acts
     187# as commands in the documentation. An alias has the form "name=value".
     188# For example adding "sideeffect=\par Side Effects:\n" will allow you to
     189# put the command \sideeffect (or @sideeffect) in the documentation, which
     190# will result in a user-defined paragraph with heading "Side Effects:".
     191# You can put \n's in the value part of an alias to insert newlines.
     192
     193ALIASES                =
     194
     195# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
     196# sources only. Doxygen will then generate output that is more tailored for C.
     197# For instance, some of the names that are used will be different. The list
     198# of all members will be omitted, etc.
     199
     200OPTIMIZE_OUTPUT_FOR_C  = NO
     201
     202# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
     203# sources only. Doxygen will then generate output that is more tailored for
     204# Java. For instance, namespaces will be presented as packages, qualified
     205# scopes will look different, etc.
     206
     207OPTIMIZE_OUTPUT_JAVA   = NO
     208
     209# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
     210# sources only. Doxygen will then generate output that is more tailored for
     211# Fortran.
     212
     213OPTIMIZE_FOR_FORTRAN   = NO
     214
     215# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
     216# sources. Doxygen will then generate output that is tailored for
     217# VHDL.
     218
     219OPTIMIZE_OUTPUT_VHDL   = NO
     220
     221# Doxygen selects the parser to use depending on the extension of the files it parses.
     222# With this tag you can assign which parser to use for a given extension.
     223# Doxygen has a built-in mapping, but you can override or extend it using this tag.
     224# The format is ext=language, where ext is a file extension, and language is one of
     225# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
     226# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
     227# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
     228# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
     229
     230EXTENSION_MAPPING      =
     231
     232# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
     233# to include (a tag file for) the STL sources as input, then you should
     234# set this tag to YES in order to let doxygen match functions declarations and
     235# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
     236# func(std::string) {}). This also make the inheritance and collaboration
     237# diagrams that involve STL classes more complete and accurate.
     238
     239BUILTIN_STL_SUPPORT    = YES
     240
     241# If you use Microsoft's C++/CLI language, you should set this option to YES to
     242# enable parsing support.
     243
     244CPP_CLI_SUPPORT        = NO
     245
     246# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
     247# Doxygen will parse them like normal C++ but will assume all classes use public
     248# instead of private inheritance when no explicit protection keyword is present.
     249
     250SIP_SUPPORT            = NO
     251
     252# For Microsoft's IDL there are propget and propput attributes to indicate getter
     253# and setter methods for a property. Setting this option to YES (the default)
     254# will make doxygen to replace the get and set methods by a property in the
     255# documentation. This will only work if the methods are indeed getting or
     256# setting a simple type. If this is not the case, or you want to show the
     257# methods anyway, you should set this option to NO.
     258
     259IDL_PROPERTY_SUPPORT   = YES
     260
     261# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
     262# tag is set to YES, then doxygen will reuse the documentation of the first
     263# member in the group (if any) for the other members of the group. By default
     264# all members of a group must be documented explicitly.
     265
     266DISTRIBUTE_GROUP_DOC   = NO
     267
     268# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
     269# the same type (for instance a group of public functions) to be put as a
     270# subgroup of that type (e.g. under the Public Functions section). Set it to
     271# NO to prevent subgrouping. Alternatively, this can be done per class using
     272# the \nosubgrouping command.
     273
     274SUBGROUPING            = YES
     275
     276# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
     277# is documented as struct, union, or enum with the name of the typedef. So
     278# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
     279# with name TypeT. When disabled the typedef will appear as a member of a file,
     280# namespace, or class. And the struct will be named TypeS. This can typically
     281# be useful for C code in case the coding convention dictates that all compound
     282# types are typedef'ed and only the typedef is referenced, never the tag name.
     283
     284TYPEDEF_HIDES_STRUCT   = NO
     285
     286# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
     287# determine which symbols to keep in memory and which to flush to disk.
     288# When the cache is full, less often used symbols will be written to disk.
     289# For small to medium size projects (<1000 input files) the default value is
     290# probably good enough. For larger projects a too small cache size can cause
     291# doxygen to be busy swapping symbols to and from disk most of the time
     292# causing a significant performance penality.
     293# If the system has enough physical memory increasing the cache will improve the
     294# performance by keeping more symbols in memory. Note that the value works on
     295# a logarithmic scale so increasing the size by one will rougly double the
     296# memory usage. The cache size is given by this formula:
     297# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
     298# corresponding to a cache size of 2^16 = 65536 symbols
     299
     300SYMBOL_CACHE_SIZE      = 0
     301
     302#---------------------------------------------------------------------------
     303# Build related configuration options
     304#---------------------------------------------------------------------------
     305
     306# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
     307# documentation are documented, even if no documentation was available.
     308# Private class members and static file members will be hidden unless
     309# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
     310
     311EXTRACT_ALL            = YES
     312
     313# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
     314# will be included in the documentation.
     315
     316EXTRACT_PRIVATE        = YES
     317
     318# If the EXTRACT_STATIC tag is set to YES all static members of a file
     319# will be included in the documentation.
     320
     321EXTRACT_STATIC         = YES
     322
     323# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
     324# defined locally in source files will be included in the documentation.
     325# If set to NO only classes defined in header files are included.
     326
     327EXTRACT_LOCAL_CLASSES  = YES
     328
     329# This flag is only useful for Objective-C code. When set to YES local
     330# methods, which are defined in the implementation section but not in
     331# the interface are included in the documentation.
     332# If set to NO (the default) only methods in the interface are included.
     333
     334EXTRACT_LOCAL_METHODS  = NO
     335
     336# If this flag is set to YES, the members of anonymous namespaces will be
     337# extracted and appear in the documentation as a namespace called
     338# 'anonymous_namespace{file}', where file will be replaced with the base
     339# name of the file that contains the anonymous namespace. By default
     340# anonymous namespace are hidden.
     341
     342EXTRACT_ANON_NSPACES   = NO
     343
     344# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
     345# undocumented members of documented classes, files or namespaces.
     346# If set to NO (the default) these members will be included in the
     347# various overviews, but no documentation section is generated.
     348# This option has no effect if EXTRACT_ALL is enabled.
     349
     350HIDE_UNDOC_MEMBERS     = NO
     351
     352# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
     353# undocumented classes that are normally visible in the class hierarchy.
     354# If set to NO (the default) these classes will be included in the various
     355# overviews. This option has no effect if EXTRACT_ALL is enabled.
     356
     357HIDE_UNDOC_CLASSES     = NO
     358
     359# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
     360# friend (class|struct|union) declarations.
     361# If set to NO (the default) these declarations will be included in the
    155362# documentation.
    156363
    157 DETAILS_AT_TOP         = NO
    158 
    159 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
    160 # member inherits the documentation from any documented member that it
    161 # re-implements.
    162 
    163 INHERIT_DOCS           = YES
    164 
    165 # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
    166 # a new page for each member. If set to NO, the documentation of a member will
    167 # be part of the file/class/namespace that contains it.
    168 
    169 SEPARATE_MEMBER_PAGES  = NO
    170 
    171 # The TAB_SIZE tag can be used to set the number of spaces in a tab.
    172 # Doxygen uses this value to replace tabs by spaces in code fragments.
    173 
    174 TAB_SIZE               = 4
    175 
    176 # This tag can be used to specify a number of aliases that acts
    177 # as commands in the documentation. An alias has the form "name=value".
    178 # For example adding "sideeffect=\par Side Effects:\n" will allow you to
    179 # put the command \sideeffect (or @sideeffect) in the documentation, which
    180 # will result in a user-defined paragraph with heading "Side Effects:".
    181 # You can put \n's in the value part of an alias to insert newlines.
    182 
    183 ALIASES                =
    184 
    185 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
    186 # sources only. Doxygen will then generate output that is more tailored for C.
    187 # For instance, some of the names that are used will be different. The list
    188 # of all members will be omitted, etc.
    189 
    190 OPTIMIZE_OUTPUT_FOR_C  = NO
    191 
    192 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
    193 # sources only. Doxygen will then generate output that is more tailored for Java.
    194 # For instance, namespaces will be presented as packages, qualified scopes
    195 # will look different, etc.
    196 
    197 OPTIMIZE_OUTPUT_JAVA   = NO
    198 
    199 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
    200 # include (a tag file for) the STL sources as input, then you should
    201 # set this tag to YES in order to let doxygen match functions declarations and
    202 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
    203 # func(std::string) {}). This also make the inheritance and collaboration
    204 # diagrams that involve STL classes more complete and accurate.
    205 
    206 BUILTIN_STL_SUPPORT    = NO
    207 
    208 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
    209 # tag is set to YES, then doxygen will reuse the documentation of the first
    210 # member in the group (if any) for the other members of the group. By default
    211 # all members of a group must be documented explicitly.
    212 
    213 DISTRIBUTE_GROUP_DOC   = NO
    214 
    215 # Set the SUBGROUPING tag to YES (the default) to allow class member groups of
    216 # the same type (for instance a group of public functions) to be put as a
    217 # subgroup of that type (e.g. under the Public Functions section). Set it to
    218 # NO to prevent subgrouping. Alternatively, this can be done per class using
    219 # the \nosubgrouping command.
    220 
    221 SUBGROUPING            = YES
    222 
    223 #---------------------------------------------------------------------------
    224 # Build related configuration options
    225 #---------------------------------------------------------------------------
    226 
    227 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
    228 # documentation are documented, even if no documentation was available.
    229 # Private class members and static file members will be hidden unless
    230 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
    231 
    232 EXTRACT_ALL            = YES
    233 
    234 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class
    235 # will be included in the documentation.
    236 
    237 EXTRACT_PRIVATE        = YES
    238 
    239 # If the EXTRACT_STATIC tag is set to YES all static members of a file
    240 # will be included in the documentation.
    241 
    242 EXTRACT_STATIC         = YES
    243 
    244 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
    245 # defined locally in source files will be included in the documentation.
    246 # If set to NO only classes defined in header files are included.
    247 
    248 EXTRACT_LOCAL_CLASSES  = YES
    249 
    250 # This flag is only useful for Objective-C code. When set to YES local
    251 # methods, which are defined in the implementation section but not in
    252 # the interface are included in the documentation.
    253 # If set to NO (the default) only methods in the interface are included.
    254 
    255 EXTRACT_LOCAL_METHODS  = NO
    256 
    257 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
    258 # undocumented members of documented classes, files or namespaces.
    259 # If set to NO (the default) these members will be included in the
    260 # various overviews, but no documentation section is generated.
    261 # This option has no effect if EXTRACT_ALL is enabled.
    262 
    263 HIDE_UNDOC_MEMBERS     = NO
    264 
    265 # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
    266 # undocumented classes that are normally visible in the class hierarchy.
    267 # If set to NO (the default) these classes will be included in the various
    268 # overviews. This option has no effect if EXTRACT_ALL is enabled.
    269 
    270 HIDE_UNDOC_CLASSES     = NO
    271 
    272 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
    273 # friend (class|struct|union) declarations.
    274 # If set to NO (the default) these declarations will be included in the
     364HIDE_FRIEND_COMPOUNDS  = NO
     365
     366# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
     367# documentation blocks found inside the body of a function.
     368# If set to NO (the default) these blocks will be appended to the
     369# function's detailed documentation block.
     370
     371HIDE_IN_BODY_DOCS      = NO
     372
     373# The INTERNAL_DOCS tag determines if documentation
     374# that is typed after a \internal command is included. If the tag is set
     375# to NO (the default) then the documentation will be excluded.
     376# Set it to YES to include the internal documentation.
     377
     378INTERNAL_DOCS          = NO
     379
     380# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
     381# file names in lower-case letters. If set to YES upper-case letters are also
     382# allowed. This is useful if you have classes or files whose names only differ
     383# in case and if your file system supports case sensitive file names. Windows
     384# and Mac users are advised to set this option to NO.
     385
     386CASE_SENSE_NAMES       = NO
     387
     388# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
     389# will show members with their full class and namespace scopes in the
     390# documentation. If set to YES the scope will be hidden.
     391
     392HIDE_SCOPE_NAMES       = NO
     393
     394# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
     395# will put a list of the files that are included by a file in the documentation
     396# of that file.
     397
     398SHOW_INCLUDE_FILES     = YES
     399
     400# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
     401# will list include files with double quotes in the documentation
     402# rather than with sharp brackets.
     403
     404FORCE_LOCAL_INCLUDES   = NO
     405
     406# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
     407# is inserted in the documentation for inline members.
     408
     409INLINE_INFO            = YES
     410
     411# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
     412# will sort the (detailed) documentation of file and class members
     413# alphabetically by member name. If set to NO the members will appear in
     414# declaration order.
     415
     416SORT_MEMBER_DOCS       = YES
     417
     418# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
     419# brief documentation of file, namespace and class members alphabetically
     420# by member name. If set to NO (the default) the members will appear in
     421# declaration order.
     422
     423SORT_BRIEF_DOCS        = YES
     424
     425# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
     426
     427SORT_MEMBERS_CTORS_1ST = YES
     428
     429# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
     430# hierarchy of group names into alphabetical order. If set to NO (the default)
     431# the group names will appear in their defined order.
     432
     433SORT_GROUP_NAMES       = NO
     434
     435# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
     436# sorted by fully-qualified names, including namespaces. If set to
     437# NO (the default), the class list will be sorted only by class name,
     438# not including the namespace part.
     439# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
     440# Note: This option applies only to the class list, not to the
     441# alphabetical list.
     442
     443SORT_BY_SCOPE_NAME     = YES
     444
     445# The GENERATE_TODOLIST tag can be used to enable (YES) or
     446# disable (NO) the todo list. This list is created by putting \todo
     447# commands in the documentation.
     448
     449GENERATE_TODOLIST      = YES
     450
     451# The GENERATE_TESTLIST tag can be used to enable (YES) or
     452# disable (NO) the test list. This list is created by putting \test
     453# commands in the documentation.
     454
     455GENERATE_TESTLIST      = YES
     456
     457# The GENERATE_BUGLIST tag can be used to enable (YES) or
     458# disable (NO) the bug list. This list is created by putting \bug
     459# commands in the documentation.
     460
     461GENERATE_BUGLIST       = YES
     462
     463# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
     464# disable (NO) the deprecated list. This list is created by putting
     465# \deprecated commands in the documentation.
     466
     467GENERATE_DEPRECATEDLIST= YES
     468
     469# The ENABLED_SECTIONS tag can be used to enable conditional
     470# documentation sections, marked by \if sectionname ... \endif.
     471
     472ENABLED_SECTIONS       =
     473
     474# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
     475# the initial value of a variable or define consists of for it to appear in
     476# the documentation. If the initializer consists of more lines than specified
     477# here it will be hidden. Use a value of 0 to hide initializers completely.
     478# The appearance of the initializer of individual variables and defines in the
     479# documentation can be controlled using \showinitializer or \hideinitializer
     480# command in the documentation regardless of this setting.
     481
     482MAX_INITIALIZER_LINES  = 30
     483
     484# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
     485# at the bottom of the documentation of classes and structs. If set to YES the
     486# list will mention the files that were used to generate the documentation.
     487
     488SHOW_USED_FILES        = YES
     489
     490# If the sources in your project are distributed over multiple directories
     491# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
     492# in the documentation. The default is NO.
     493
     494SHOW_DIRECTORIES       = YES
     495
     496# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
     497# This will remove the Files entry from the Quick Index and from the
     498# Folder Tree View (if specified). The default is YES.
     499
     500SHOW_FILES             = YES
     501
     502# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
     503# Namespaces page.
     504# This will remove the Namespaces entry from the Quick Index
     505# and from the Folder Tree View (if specified). The default is YES.
     506
     507SHOW_NAMESPACES        = YES
     508
     509# The FILE_VERSION_FILTER tag can be used to specify a program or script that
     510# doxygen should invoke to get the current version for each file (typically from
     511# the version control system). Doxygen will invoke the program by executing (via
     512# popen()) the command <command> <input-file>, where <command> is the value of
     513# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
     514# provided by doxygen. Whatever the program writes to standard output
     515# is used as the file version. See the manual for examples.
     516
     517FILE_VERSION_FILTER    =
     518
     519# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
     520# doxygen. The layout file controls the global structure of the generated output files
     521# in an output format independent way. The create the layout file that represents
     522# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
     523# file name after the option, if omitted DoxygenLayout.xml will be used as the name
     524# of the layout file.
     525
     526LAYOUT_FILE            =
     527
     528#---------------------------------------------------------------------------
     529# configuration options related to warning and progress messages
     530#---------------------------------------------------------------------------
     531
     532# The QUIET tag can be used to turn on/off the messages that are generated
     533# by doxygen. Possible values are YES and NO. If left blank NO is used.
     534
     535QUIET                  = NO
     536
     537# The WARNINGS tag can be used to turn on/off the warning messages that are
     538# generated by doxygen. Possible values are YES and NO. If left blank
     539# NO is used.
     540
     541WARNINGS               = YES
     542
     543# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
     544# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
     545# automatically be disabled.
     546
     547WARN_IF_UNDOCUMENTED   = YES
     548
     549# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
     550# potential errors in the documentation, such as not documenting some
     551# parameters in a documented function, or documenting parameters that
     552# don't exist or using markup commands wrongly.
     553
     554WARN_IF_DOC_ERROR      = YES
     555
     556# This WARN_NO_PARAMDOC option can be abled to get warnings for
     557# functions that are documented, but have no documentation for their parameters
     558# or return value. If set to NO (the default) doxygen will only warn about
     559# wrong or incomplete parameter documentation, but not about the absence of
    275560# documentation.
    276561
    277 HIDE_FRIEND_COMPOUNDS  = NO
    278 
    279 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
    280 # documentation blocks found inside the body of a function.
    281 # If set to NO (the default) these blocks will be appended to the
    282 # function's detailed documentation block.
    283 
    284 HIDE_IN_BODY_DOCS      = NO
    285 
    286 # The INTERNAL_DOCS tag determines if documentation
    287 # that is typed after a \internal command is included. If the tag is set
    288 # to NO (the default) then the documentation will be excluded.
    289 # Set it to YES to include the internal documentation.
    290 
    291 INTERNAL_DOCS          = NO
    292 
    293 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
    294 # file names in lower-case letters. If set to YES upper-case letters are also
    295 # allowed. This is useful if you have classes or files whose names only differ
    296 # in case and if your file system supports case sensitive file names. Windows
    297 # and Mac users are advised to set this option to NO.
    298 
    299 CASE_SENSE_NAMES       = YES
    300 
    301 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
    302 # will show members with their full class and namespace scopes in the
    303 # documentation. If set to YES the scope will be hidden.
    304 
    305 HIDE_SCOPE_NAMES       = NO
    306 
    307 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
    308 # will put a list of the files that are included by a file in the documentation
    309 # of that file.
    310 
    311 SHOW_INCLUDE_FILES     = YES
    312 
    313 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
    314 # is inserted in the documentation for inline members.
    315 
    316 INLINE_INFO            = YES
    317 
    318 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
    319 # will sort the (detailed) documentation of file and class members
    320 # alphabetically by member name. If set to NO the members will appear in
    321 # declaration order.
    322 
    323 SORT_MEMBER_DOCS       = YES
    324 
    325 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
    326 # brief documentation of file, namespace and class members alphabetically
    327 # by member name. If set to NO (the default) the members will appear in
    328 # declaration order.
    329 
    330 SORT_BRIEF_DOCS        = YES
    331 
    332 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
    333 # sorted by fully-qualified names, including namespaces. If set to
    334 # NO (the default), the class list will be sorted only by class name,
    335 # not including the namespace part.
    336 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
    337 # Note: This option applies only to the class list, not to the
    338 # alphabetical list.
    339 
    340 SORT_BY_SCOPE_NAME     = NO
    341 
    342 # The GENERATE_TODOLIST tag can be used to enable (YES) or
    343 # disable (NO) the todo list. This list is created by putting \todo
    344 # commands in the documentation.
    345 
    346 GENERATE_TODOLIST      = YES
    347 
    348 # The GENERATE_TESTLIST tag can be used to enable (YES) or
    349 # disable (NO) the test list. This list is created by putting \test
    350 # commands in the documentation.
    351 
    352 GENERATE_TESTLIST      = YES
    353 
    354 # The GENERATE_BUGLIST tag can be used to enable (YES) or
    355 # disable (NO) the bug list. This list is created by putting \bug
    356 # commands in the documentation.
    357 
    358 GENERATE_BUGLIST       = YES
    359 
    360 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
    361 # disable (NO) the deprecated list. This list is created by putting
    362 # \deprecated commands in the documentation.
    363 
    364 GENERATE_DEPRECATEDLIST= YES
    365 
    366 # The ENABLED_SECTIONS tag can be used to enable conditional
    367 # documentation sections, marked by \if sectionname ... \endif.
    368 
    369 ENABLED_SECTIONS       = YES
    370 
    371 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
    372 # the initial value of a variable or define consists of for it to appear in
    373 # the documentation. If the initializer consists of more lines than specified
    374 # here it will be hidden. Use a value of 0 to hide initializers completely.
    375 # The appearance of the initializer of individual variables and defines in the
    376 # documentation can be controlled using \showinitializer or \hideinitializer
    377 # command in the documentation regardless of this setting.
    378 
    379 MAX_INITIALIZER_LINES  = 30
    380 
    381 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated
    382 # at the bottom of the documentation of classes and structs. If set to YES the
    383 # list will mention the files that were used to generate the documentation.
    384 
    385 SHOW_USED_FILES        = YES
    386 
    387 # If the sources in your project are distributed over multiple directories
    388 # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
    389 # in the documentation. The default is YES.
    390 
    391 SHOW_DIRECTORIES       = YES
    392 
    393 # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
    394 # This will remove the Files entry from the Quick Index and from the Folder
    395 # Tree View (if specified). The default is YES.
    396 
    397 SHOW_FILES             = YES
    398 
    399 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the
    400 # Namespaces page. This will remove the Namespaces entry from the Quick Index
    401 # and from the Folder Tree View (if specified). The default is YES.
    402 
    403 SHOW_NAMESPACES        = YES
    404 
    405 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
    406 # doxygen should invoke to get the current version for each file (typically from the
    407 # version control system). Doxygen will invoke the program by executing (via
    408 # popen()) the command <command> <input-file>, where <command> is the value of
    409 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
    410 # provided by doxygen. Whatever the program writes to standard output
    411 # is used as the file version. See the manual for examples.
    412 
    413 FILE_VERSION_FILTER    =
    414 
    415 #---------------------------------------------------------------------------
    416 # configuration options related to warning and progress messages
    417 #---------------------------------------------------------------------------
    418 
    419 # The QUIET tag can be used to turn on/off the messages that are generated
    420 # by doxygen. Possible values are YES and NO. If left blank NO is used.
    421 
    422 QUIET                  = NO
    423 
    424 # The WARNINGS tag can be used to turn on/off the warning messages that are
    425 # generated by doxygen. Possible values are YES and NO. If left blank
    426 # NO is used.
    427 
    428 WARNINGS               = YES
    429 
    430 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
    431 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will
    432 # automatically be disabled.
    433 
    434 WARN_IF_UNDOCUMENTED   = YES
    435 
    436 # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
    437 # potential errors in the documentation, such as not documenting some
    438 # parameters in a documented function, or documenting parameters that
    439 # don't exist or using markup commands wrongly.
    440 
    441 WARN_IF_DOC_ERROR      = YES
    442 
    443 # This WARN_NO_PARAMDOC option can be abled to get warnings for
    444 # functions that are documented, but have no documentation for their parameters
    445 # or return value. If set to NO (the default) doxygen will only warn about
    446 # wrong or incomplete parameter documentation, but not about the absence of
    447 # documentation.
    448 
    449562WARN_NO_PARAMDOC       = NO
    450563
    451 # The WARN_FORMAT tag determines the format of the warning messages that 
    452 # doxygen can produce. The string should contain the $file, $line, and $text 
    453 # tags, which will be replaced by the file and line number from which the 
    454 # warning originated and the warning text. Optionally the format may contain 
    455 # $version, which will be replaced by the version of the file (if it could 
     564# The WARN_FORMAT tag determines the format of the warning messages that
     565# doxygen can produce. The string should contain the $file, $line, and $text
     566# tags, which will be replaced by the file and line number from which the
     567# warning originated and the warning text. Optionally the format may contain
     568# $version, which will be replaced by the version of the file (if it could
    456569# be obtained via FILE_VERSION_FILTER)
    457570
    458571WARN_FORMAT            = @DOXY_WARN_FORMAT@
    459572
    460 # The WARN_LOGFILE tag can be used to specify a file to which warning 
    461 # and error messages should be written. If left blank the output is written 
     573# The WARN_LOGFILE tag can be used to specify a file to which warning
     574# and error messages should be written. If left blank the output is written
    462575# to stderr.
    463576
     
    468581#---------------------------------------------------------------------------
    469582
    470 # The INPUT tag can be used to specify the files and/or directories that contain 
    471 # documented source files. You may enter file names like "myfile.cpp" or 
    472 # directories like "/usr/src/myproject". Separate the files or directories 
     583# The INPUT tag can be used to specify the files and/or directories that contain
     584# documented source files. You may enter file names like "myfile.cpp" or
     585# directories like "/usr/src/myproject". Separate the files or directories
    473586# with spaces.
    474587
     
    476589                         @CMAKE_CURRENT_SOURCE_DIR@ \
    477590                         @CMAKE_BINARY_DIR@/src/OrxonoxConfig.h \
    478                          @CMAKE_BINARY_DIR@/src/SpecialConfig.h
    479 
    480 # If the value of the INPUT tag contains directories, you can use the
    481 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
    482 # and *.h) to filter out the source-files in the directories. If left
    483 # blank the following patterns are tested:
    484 # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
    485 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
     591                         @CMAKE_BINARY_DIR@/src/SpecialConfig.h \
     592                         @INTERNAL_DOCFILE@
     593
     594# This tag can be used to specify the character encoding of the source files
     595# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
     596# also the default input encoding. Doxygen uses libiconv (or the iconv built
     597# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
     598# the list of possible encodings.
     599
     600INPUT_ENCODING         = UTF-8
     601
     602# If the value of the INPUT tag contains directories, you can use the
     603# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
     604# and *.h) to filter out the source-files in the directories. If left
     605# blank the following patterns are tested:
     606# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
     607# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
    486608
    487609FILE_PATTERNS          = *.cpp \
     
    492614                         *.dox
    493615
    494 # The RECURSIVE tag can be used to turn specify whether or not subdirectories 
    495 # should be searched for input files as well. Possible values are YES and NO. 
     616# The RECURSIVE tag can be used to turn specify whether or not subdirectories
     617# should be searched for input files as well. Possible values are YES and NO.
    496618# If left blank NO is used.
    497619
    498620RECURSIVE              = YES
    499621
    500 # The EXCLUDE tag can be used to specify files and/or directories that should 
    501 # excluded from the INPUT source files. This way you can easily exclude a 
     622# The EXCLUDE tag can be used to specify files and/or directories that should
     623# excluded from the INPUT source files. This way you can easily exclude a
    502624# subdirectory from a directory tree whose root is specified with the INPUT tag.
    503625
    504 EXCLUDE                = @CMAKE_SOURCE_DIR@/src/external/bullet/
    505 
    506 # The EXCLUDE_SYMLINKS tag can be used select whether or not files or
    507 # directories that are symbolic links (a Unix filesystem feature) are excluded
     626EXCLUDE                = @CMAKE_SOURCE_DIR@/src/external/bullet/ \
     627                         @CMAKE_SOURCE_DIR@/src/external/cpptcl/ \
     628                         @CMAKE_SOURCE_DIR@/src/external/ceguilua/ceguilua-0.5.0 \
     629                         @CMAKE_SOURCE_DIR@/src/external/ceguilua/ceguilua-0.6.0 \
     630                         @CMAKE_SOURCE_DIR@/src/external/ceguilua/ceguilua-0.6.1 \
     631                         @CMAKE_SOURCE_DIR@/src/libraries/core/command/IOConsoleWindows.h \
     632                         @CMAKE_SOURCE_DIR@/src/libraries/core/command/IOConsoleWindows.cc \
     633                         @CMAKE_SOURCE_DIR@/src/libraries/tools/bsp \
     634
     635# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
     636# directories that are symbolic links (a Unix filesystem feature) are excluded
    508637# from the input.
    509638
    510639EXCLUDE_SYMLINKS       = NO
    511640
    512 # If the value of the INPUT tag contains directories, you can use the 
    513 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
    514 # certain files from those directories. Note that the wildcards are matched 
    515 # against the file with absolute path, so to exclude all test directories 
     641# If the value of the INPUT tag contains directories, you can use the
     642# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
     643# certain files from those directories. Note that the wildcards are matched
     644# against the file with absolute path, so to exclude all test directories
    516645# for example use the pattern */test/*
    517646
    518647EXCLUDE_PATTERNS       = */.svn/*
    519648
    520 # The EXAMPLE_PATH tag can be used to specify one or more files or
    521 # directories that contain example code fragments that are included (see
     649# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
     650# (namespaces, classes, functions, etc.) that should be excluded from the
     651# output. The symbol name can be a fully qualified name, a word, or if the
     652# wildcard * is used, a substring. Examples: ANamespace, AClass,
     653# AClass::ANamespace, ANamespace::*Test
     654
     655EXCLUDE_SYMBOLS        = orxonox::detail
     656
     657# The EXAMPLE_PATH tag can be used to specify one or more files or
     658# directories that contain example code fragments that are included (see
    522659# the \include command).
    523660
    524661EXAMPLE_PATH           = @CMAKE_CURRENT_SOURCE_DIR@/examples/
    525662
    526 # If the value of the EXAMPLE_PATH tag contains directories, you can use the 
    527 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
    528 # and *.h) to filter out the source-files in the directories. If left 
     663# If the value of the EXAMPLE_PATH tag contains directories, you can use the
     664# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
     665# and *.h) to filter out the source-files in the directories. If left
    529666# blank all files are included.
    530667
     
    535672                         INSTALL DEPENDENCIES CHANGELOG LICENSE LGPL
    536673
    537 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
    538 # searched for input files to be used with the \include or \dontinclude 
    539 # commands irrespective of the value of the RECURSIVE tag. 
     674# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
     675# searched for input files to be used with the \include or \dontinclude
     676# commands irrespective of the value of the RECURSIVE tag.
    540677# Possible values are YES and NO. If left blank NO is used.
    541678
    542679EXAMPLE_RECURSIVE      = YES
    543680
    544 # The IMAGE_PATH tag can be used to specify one or more files or 
    545 # directories that contain image that are included in the documentation (see 
     681# The IMAGE_PATH tag can be used to specify one or more files or
     682# directories that contain image that are included in the documentation (see
    546683# the \image command).
    547684
    548685IMAGE_PATH             = @CMAKE_CURRENT_SOURCE_DIR@/images/
    549686
    550 
    551 # The INPUT_FILTER tag can be used to specify a program that doxygen should
    552 # invoke to filter for each input file. Doxygen will invoke the filter program
    553 # by executing (via popen()) the command <filter> <input-file>, where <filter>
    554 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an
    555 # input file. Doxygen will then use the output that the filter program writes
    556 # to standard output.  If FILTER_PATTERNS is specified, this tag will be
     687# The INPUT_FILTER tag can be used to specify a program that doxygen should
     688# invoke to filter for each input file. Doxygen will invoke the filter program
     689# by executing (via popen()) the command <filter> <input-file>, where <filter>
     690# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
     691# input file. Doxygen will then use the output that the filter program writes
     692# to standard output.
     693# If FILTER_PATTERNS is specified, this tag will be
    557694# ignored.
    558695
    559 INPUT_FILTER           =
    560 
    561 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
    562 # basis.  Doxygen will compare the file name with each pattern and apply the
    563 # filter if there is a match.  The filters are a list of the form:
    564 # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
    565 # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
     696INPUT_FILTER           =
     697
     698# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
     699# basis.
     700# Doxygen will compare the file name with each pattern and apply the
     701# filter if there is a match.
     702# The filters are a list of the form:
     703# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
     704# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
    566705# is applied to all files.
    567706
    568 FILTER_PATTERNS        = 
    569 
    570 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
    571 # INPUT_FILTER) will be used to filter the input files when producing source 
     707FILTER_PATTERNS        =
     708
     709# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
     710# INPUT_FILTER) will be used to filter the input files when producing source
    572711# files to browse (i.e. when SOURCE_BROWSER is set to YES).
    573712
     
    578717#---------------------------------------------------------------------------
    579718
    580 # If the SOURCE_BROWSER tag is set to YES then a list of source files will 
    581 # be generated. Documented entities will be cross-referenced with these sources. 
    582 # Note: To get rid of all source code in the generated output, make sure also 
     719# If the SOURCE_BROWSER tag is set to YES then a list of source files will
     720# be generated. Documented entities will be cross-referenced with these sources.
     721# Note: To get rid of all source code in the generated output, make sure also
    583722# VERBATIM_HEADERS is set to NO.
    584723
    585724SOURCE_BROWSER         = NO
    586725
    587 # Setting the INLINE_SOURCES tag to YES will include the body 
     726# Setting the INLINE_SOURCES tag to YES will include the body
    588727# of functions and classes directly in the documentation.
    589728
    590729INLINE_SOURCES         = NO
    591730
    592 # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
    593 # doxygen to hide any special comment blocks from generated source code 
     731# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
     732# doxygen to hide any special comment blocks from generated source code
    594733# fragments. Normal C and C++ comments will always remain visible.
    595734
    596735STRIP_CODE_COMMENTS    = YES
    597736
    598 # If the REFERENCED_BY_RELATION tag is set to YES (the default)
    599 # then for each documented function all documented 
     737# If the REFERENCED_BY_RELATION tag is set to YES
     738# then for each documented function all documented
    600739# functions referencing it will be listed.
    601740
    602 REFERENCED_BY_RELATION = YES
    603 
    604 # If the REFERENCES_RELATION tag is set to YES (the default)
    605 # then for each documented function all documented entities 
     741REFERENCED_BY_RELATION = NO
     742
     743# If the REFERENCES_RELATION tag is set to YES
     744# then for each documented function all documented entities
    606745# called/used by that function will be listed.
    607746
    608 REFERENCES_RELATION    = YES
    609 
    610 # If the USE_HTAGS tag is set to YES then the references to source code
    611 # will point to the HTML generated by the htags(1) tool instead of doxygen
    612 # built-in source browser. The htags tool is part of GNU's global source
    613 # tagging system (see http://www.gnu.org/software/global/global.html). You
     747REFERENCES_RELATION    = NO
     748
     749# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
     750# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
     751# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
     752# link to the source code.
     753# Otherwise they will link to the documentation.
     754
     755REFERENCES_LINK_SOURCE = YES
     756
     757# If the USE_HTAGS tag is set to YES then the references to source code
     758# will point to the HTML generated by the htags(1) tool instead of doxygen
     759# built-in source browser. The htags tool is part of GNU's global source
     760# tagging system (see http://www.gnu.org/software/global/global.html). You
    614761# will need version 4.8.6 or higher.
    615762
    616763USE_HTAGS              = NO
    617764
    618 # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
    619 # will generate a verbatim copy of the header file for each class for 
     765# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
     766# will generate a verbatim copy of the header file for each class for
    620767# which an include is specified. Set to NO to disable this.
    621768
     
    626773#---------------------------------------------------------------------------
    627774
    628 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
    629 # of all compounds will be generated. Enable this if the project 
     775# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
     776# of all compounds will be generated. Enable this if the project
    630777# contains a lot of classes, structs, unions or interfaces.
    631778
    632779ALPHABETICAL_INDEX     = YES
    633780
    634 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
    635 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
     781# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
     782# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
    636783# in which this list will be split (can be a number in the range [1..20])
    637784
    638785COLS_IN_ALPHA_INDEX    = 2
    639786
    640 # In case all classes in a project start with a common prefix, all 
    641 # classes will be put under the same header in the alphabetical index. 
    642 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
     787# In case all classes in a project start with a common prefix, all
     788# classes will be put under the same header in the alphabetical index.
     789# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
    643790# should be ignored while generating the index headers.
    644791
    645 IGNORE_PREFIX          = 
     792IGNORE_PREFIX          =
    646793
    647794#---------------------------------------------------------------------------
     
    649796#---------------------------------------------------------------------------
    650797
    651 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
     798# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
    652799# generate HTML output.
    653800
    654801GENERATE_HTML          = YES
    655802
    656 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
    657 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
     803# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
     804# If a relative path is entered the value of OUTPUT_DIRECTORY will be
    658805# put in front of it. If left blank `html' will be used as the default path.
    659806
    660807HTML_OUTPUT            = html
    661808
    662 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
    663 # each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
     809# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
     810# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
    664811# doxygen will generate files with .html extension.
    665812
    666813HTML_FILE_EXTENSION    = .html
    667814
    668 # The HTML_HEADER tag can be used to specify a personal HTML header for 
    669 # each generated HTML page. If it is left blank doxygen will generate a 
     815# The HTML_HEADER tag can be used to specify a personal HTML header for
     816# each generated HTML page. If it is left blank doxygen will generate a
    670817# standard header.
    671 HTML_HEADER            =
    672 
    673 
    674 # The HTML_FOOTER tag can be used to specify a personal HTML footer for 
    675 # each generated HTML page. If it is left blank doxygen will generate a 
     818
     819HTML_HEADER            =
     820
     821# The HTML_FOOTER tag can be used to specify a personal HTML footer for
     822# each generated HTML page. If it is left blank doxygen will generate a
    676823# standard footer.
    677824
    678 HTML_FOOTER            = 
    679 
    680 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
    681 # style sheet that is used by each HTML page. It can be used to 
    682 # fine-tune the look of the HTML output. If the tag is left blank doxygen 
    683 # will generate a default style sheet. Note that doxygen will try to copy 
    684 # the style sheet file to the HTML output directory, so don't put your own 
     825HTML_FOOTER            =
     826
     827# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
     828# style sheet that is used by each HTML page. It can be used to
     829# fine-tune the look of the HTML output. If the tag is left blank doxygen
     830# will generate a default style sheet. Note that doxygen will try to copy
     831# the style sheet file to the HTML output directory, so don't put your own
    685832# stylesheet in the HTML output directory as well, or it will be erased!
    686833
    687 HTML_STYLESHEET        =
    688 
    689 # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
    690 # files or namespaces will be aligned in HTML using tables. If set to
     834HTML_STYLESHEET        =
     835
     836# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
     837# page will contain the date and time when the page was generated. Setting
     838# this to NO can help when comparing the output of multiple runs.
     839
     840HTML_TIMESTAMP         = YES
     841
     842# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
     843# files or namespaces will be aligned in HTML using tables. If set to
    691844# NO a bullet list will be used.
    692845
    693846HTML_ALIGN_MEMBERS     = YES
    694847
    695 # If the GENERATE_HTMLHELP tag is set to YES, additional index files
    696 # will be generated that can be used as input for tools like the
    697 # Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
     848# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
     849# documentation will contain sections that can be hidden and shown after the
     850# page has loaded. For this to work a browser that supports
     851# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
     852# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
     853
     854HTML_DYNAMIC_SECTIONS  = NO
     855
     856# If the GENERATE_DOCSET tag is set to YES, additional index files
     857# will be generated that can be used as input for Apple's Xcode 3
     858# integrated development environment, introduced with OSX 10.5 (Leopard).
     859# To create a documentation set, doxygen will generate a Makefile in the
     860# HTML output directory. Running make will produce the docset in that
     861# directory and running "make install" will install the docset in
     862# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
     863# it at startup.
     864# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
     865
     866GENERATE_DOCSET        = NO
     867
     868# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
     869# feed. A documentation feed provides an umbrella under which multiple
     870# documentation sets from a single provider (such as a company or product suite)
     871# can be grouped.
     872
     873DOCSET_FEEDNAME        = "Doxygen generated docs"
     874
     875# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
     876# should uniquely identify the documentation set bundle. This should be a
     877# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
     878# will append .docset to the name.
     879
     880DOCSET_BUNDLE_ID       = org.doxygen.Project
     881
     882# If the GENERATE_HTMLHELP tag is set to YES, additional index files
     883# will be generated that can be used as input for tools like the
     884# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
    698885# of the generated HTML documentation.
    699886
    700887GENERATE_HTMLHELP      = YES
    701888
    702 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
    703 # be used to specify the file name of the resulting .chm file. You 
    704 # can add a path in front of the file if the result should not be 
     889# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
     890# be used to specify the file name of the resulting .chm file. You
     891# can add a path in front of the file if the result should not be
    705892# written to the html output directory.
    706893
    707 CHM_FILE               = 
    708 
    709 # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
    710 # be used to specify the location (absolute path including file name) of 
    711 # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
     894CHM_FILE               =
     895
     896# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
     897# be used to specify the location (absolute path including file name) of
     898# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
    712899# the HTML help compiler on the generated index.hhp.
    713900
    714 HHC_LOCATION           = 
    715 
    716 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
    717 # controls if a separate .chi index file is generated (YES) or that 
     901HHC_LOCATION           =
     902
     903# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
     904# controls if a separate .chi index file is generated (YES) or that
    718905# it should be included in the master .chm file (NO).
    719906
    720907GENERATE_CHI           = NO
    721908
    722 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
    723 # controls whether a binary table of contents is generated (YES) or a
     909# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
     910# is used to encode HtmlHelp index (hhk), content (hhc) and project file
     911# content.
     912
     913CHM_INDEX_ENCODING     =
     914
     915# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
     916# controls whether a binary table of contents is generated (YES) or a
    724917# normal table of contents (NO) in the .chm file.
    725918
    726919BINARY_TOC             = NO
    727920
    728 # The TOC_EXPAND flag can be set to YES to add extra items for group members 
     921# The TOC_EXPAND flag can be set to YES to add extra items for group members
    729922# to the contents of the HTML help documentation and to the tree view.
    730923
    731924TOC_EXPAND             = NO
    732925
    733 # The DISABLE_INDEX tag can be used to turn on/off the condensed index at
    734 # top of each HTML page. The value NO (the default) enables the index and
     926# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
     927# are set, an additional index file will be generated that can be used as input for
     928# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
     929# HTML documentation.
     930
     931GENERATE_QHP           = NO
     932
     933# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
     934# be used to specify the file name of the resulting .qch file.
     935# The path specified is relative to the HTML output folder.
     936
     937QCH_FILE               =
     938
     939# The QHP_NAMESPACE tag specifies the namespace to use when generating
     940# Qt Help Project output. For more information please see
     941# http://doc.trolltech.com/qthelpproject.html#namespace
     942
     943QHP_NAMESPACE          = org.doxygen.Project
     944
     945# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
     946# Qt Help Project output. For more information please see
     947# http://doc.trolltech.com/qthelpproject.html#virtual-folders
     948
     949QHP_VIRTUAL_FOLDER     = doc
     950
     951# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
     952# For more information please see
     953# http://doc.trolltech.com/qthelpproject.html#custom-filters
     954
     955QHP_CUST_FILTER_NAME   =
     956
     957# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
     958# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
     959
     960QHP_CUST_FILTER_ATTRS  =
     961
     962# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
     963# filter section matches.
     964# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
     965
     966QHP_SECT_FILTER_ATTRS  =
     967
     968# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
     969# be used to specify the location of Qt's qhelpgenerator.
     970# If non-empty doxygen will try to run qhelpgenerator on the generated
     971# .qhp file.
     972
     973QHG_LOCATION           =
     974
     975# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
     976#  will be generated, which together with the HTML files, form an Eclipse help
     977#  plugin. To install this plugin and make it available under the help contents
     978# menu in Eclipse, the contents of the directory containing the HTML and XML
     979# files needs to be copied into the plugins directory of eclipse. The name of
     980# the directory within the plugins directory should be the same as
     981# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears.
     982
     983GENERATE_ECLIPSEHELP   = NO
     984
     985# A unique identifier for the eclipse help plugin. When installing the plugin
     986# the directory name containing the HTML and XML files should also have
     987# this name.
     988
     989ECLIPSE_DOC_ID         = org.doxygen.Project
     990
     991# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
     992# top of each HTML page. The value NO (the default) enables the index and
    735993# the value YES disables it.
    736994
    737995DISABLE_INDEX          = NO
    738996
    739 # This tag can be used to set the number of enum values (range [1..20]) 
     997# This tag can be used to set the number of enum values (range [1..20])
    740998# that doxygen will group on one line in the generated HTML documentation.
    741999
    7421000ENUM_VALUES_PER_LINE   = 4
    7431001
    744 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
    745 # generated containing a tree-like index structure (just like the one that
    746 # is generated for HTML Help). For this to work a browser that supports
    747 # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
    748 # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
    749 # probably better off using the HTML help feature.
     1002# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
     1003# structure should be generated to display hierarchical information.
     1004# If the tag value is set to YES, a side panel will be generated
     1005# containing a tree-like index structure (just like the one that
     1006# is generated for HTML Help). For this to work a browser that supports
     1007# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
     1008# Windows users are probably better off using the HTML help feature.
    7501009
    7511010GENERATE_TREEVIEW      = NO
    7521011
    753 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
    754 # used to set the initial width (in pixels) of the frame in which the tree
     1012# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
     1013# and Class Hierarchy pages using a tree view instead of an ordered list.
     1014
     1015USE_INLINE_TREES       = NO
     1016
     1017# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
     1018# used to set the initial width (in pixels) of the frame in which the tree
    7551019# is shown.
    7561020
    7571021TREEVIEW_WIDTH         = 250
    7581022
     1023# Use this tag to change the font size of Latex formulas included
     1024# as images in the HTML documentation. The default is 10. Note that
     1025# when you change the font size after a successful doxygen run you need
     1026# to manually remove any form_*.png images from the HTML output directory
     1027# to force them to be regenerated.
     1028
     1029FORMULA_FONTSIZE       = 10
     1030
     1031# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
     1032# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should
     1033# typically be disabled. For large projects the javascript based search engine
     1034# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
     1035
     1036SEARCHENGINE           = YES
     1037
     1038# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index
     1039# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup
     1040# and does not have live searching capabilities.
     1041
     1042SERVER_BASED_SEARCH    = NO
     1043
    7591044#---------------------------------------------------------------------------
    7601045# configuration options related to the LaTeX output
    7611046#---------------------------------------------------------------------------
    7621047
    763 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
     1048# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
    7641049# generate Latex output.
    7651050
    7661051GENERATE_LATEX         = NO
    7671052
    768 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
    769 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
     1053# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
     1054# If a relative path is entered the value of OUTPUT_DIRECTORY will be
    7701055# put in front of it. If left blank `latex' will be used as the default path.
    7711056
    7721057LATEX_OUTPUT           = latex
    7731058
    774 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
     1059# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
    7751060# invoked. If left blank `latex' will be used as the default command name.
    776 
    777 #LATEX_CMD_NAME         = latex
    778 LATEX_CMD_NAME          = @LATEX_COMPILER@
    779 
    780 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
    781 # generate index for LaTeX. If left blank `makeindex' will be used as the
     1061# Note that when enabling USE_PDFLATEX this option is only used for
     1062# generating bitmaps for formulas in the HTML output, but not in the
     1063# Makefile that is written to the output directory.
     1064
     1065LATEX_CMD_NAME         = @LATEX_COMPILER@
     1066
     1067# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
     1068# generate index for LaTeX. If left blank `makeindex' will be used as the
    7821069# default command name.
    7831070
    784 #MAKEINDEX_CMD_NAME     = makeindex
    7851071MAKEINDEX_CMD_NAME     = @MAKEINDEX_COMPILER@
    7861072
    787 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
    788 # LaTeX documents. This may be useful for small projects and may help to 
     1073# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
     1074# LaTeX documents. This may be useful for small projects and may help to
    7891075# save some trees in general.
    7901076
    7911077COMPACT_LATEX          = NO
    7921078
    793 # The PAPER_TYPE tag can be used to set the paper type that is used 
    794 # by the printer. Possible values are: a4, a4wide, letter, legal and 
     1079# The PAPER_TYPE tag can be used to set the paper type that is used
     1080# by the printer. Possible values are: a4, a4wide, letter, legal and
    7951081# executive. If left blank a4wide will be used.
    7961082
    7971083PAPER_TYPE             = a4wide
    7981084
    799 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
     1085# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
    8001086# packages that should be included in the LaTeX output.
    8011087
    802 EXTRA_PACKAGES         = 
    803 
    804 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
    805 # the generated latex document. The header should contain everything until 
    806 # the first chapter. If it is left blank doxygen will generate a 
     1088EXTRA_PACKAGES         =
     1089
     1090# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
     1091# the generated latex document. The header should contain everything until
     1092# the first chapter. If it is left blank doxygen will generate a
    8071093# standard header. Notice: only use this tag if you know what you are doing!
    8081094
    809 LATEX_HEADER           = 
    810 
    811 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
    812 # is prepared for conversion to pdf (using ps2pdf). The pdf file will 
    813 # contain links (just like the HTML output) instead of page references 
     1095LATEX_HEADER           =
     1096
     1097# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
     1098# is prepared for conversion to pdf (using ps2pdf). The pdf file will
     1099# contain links (just like the HTML output) instead of page references
    8141100# This makes the output suitable for online browsing using a pdf viewer.
    8151101
    8161102PDF_HYPERLINKS         = YES
    8171103
    818 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
    819 # plain latex in the generated Makefile. Set this option to YES to get a 
     1104# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
     1105# plain latex in the generated Makefile. Set this option to YES to get a
    8201106# higher quality PDF documentation.
    8211107
    8221108USE_PDFLATEX           = YES
    8231109
    824 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
    825 # command to the generated LaTeX files. This will instruct LaTeX to keep 
    826 # running if errors occur, instead of asking the user for help. 
     1110# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
     1111# command to the generated LaTeX files. This will instruct LaTeX to keep
     1112# running if errors occur, instead of asking the user for help.
    8271113# This option is also used when generating formulas in HTML.
    8281114
    8291115LATEX_BATCHMODE        = YES
    8301116
    831 # If LATEX_HIDE_INDICES is set to YES then doxygen will not 
    832 # include the index chapters (such as File Index, Compound Index, etc.) 
     1117# If LATEX_HIDE_INDICES is set to YES then doxygen will not
     1118# include the index chapters (such as File Index, Compound Index, etc.)
    8331119# in the output.
    8341120
    8351121LATEX_HIDE_INDICES     = NO
    8361122
     1123# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
     1124
     1125LATEX_SOURCE_CODE      = NO
     1126
    8371127#---------------------------------------------------------------------------
    8381128# configuration options related to the RTF output
    8391129#---------------------------------------------------------------------------
    8401130
    841 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
    842 # The RTF output is optimized for Word 97 and may not look very pretty with 
     1131# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
     1132# The RTF output is optimized for Word 97 and may not look very pretty with
    8431133# other RTF readers or editors.
    8441134
    8451135GENERATE_RTF           = NO
    8461136
    847 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
    848 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
     1137# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
     1138# If a relative path is entered the value of OUTPUT_DIRECTORY will be
    8491139# put in front of it. If left blank `rtf' will be used as the default path.
    8501140
    8511141RTF_OUTPUT             = rtf
    8521142
    853 # If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
    854 # RTF documents. This may be useful for small projects and may help to 
     1143# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
     1144# RTF documents. This may be useful for small projects and may help to
    8551145# save some trees in general.
    8561146
    8571147COMPACT_RTF            = NO
    8581148
    859 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
    860 # will contain hyperlink fields. The RTF file will 
    861 # contain links (just like the HTML output) instead of page references. 
    862 # This makes the output suitable for online browsing using WORD or other 
    863 # programs which support those fields. 
     1149# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
     1150# will contain hyperlink fields. The RTF file will
     1151# contain links (just like the HTML output) instead of page references.
     1152# This makes the output suitable for online browsing using WORD or other
     1153# programs which support those fields.
    8641154# Note: wordpad (write) and others do not support links.
    8651155
    8661156RTF_HYPERLINKS         = NO
    8671157
    868 # Load stylesheet definitions from file. Syntax is similar to doxygen's 
    869 # config file, i.e. a series of assignments. You only have to provide 
     1158# Load stylesheet definitions from file. Syntax is similar to doxygen's
     1159# config file, i.e. a series of assignments. You only have to provide
    8701160# replacements, missing definitions are set to their default value.
    8711161
    872 RTF_STYLESHEET_FILE    = 
    873 
    874 # Set optional variables used in the generation of an rtf document. 
     1162RTF_STYLESHEET_FILE    =
     1163
     1164# Set optional variables used in the generation of an rtf document.
    8751165# Syntax is similar to doxygen's config file.
    8761166
    877 RTF_EXTENSIONS_FILE    = 
     1167RTF_EXTENSIONS_FILE    =
    8781168
    8791169#---------------------------------------------------------------------------
     
    8811171#---------------------------------------------------------------------------
    8821172
    883 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
     1173# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
    8841174# generate man pages
    8851175
    8861176GENERATE_MAN           = NO
    8871177
    888 # The MAN_OUTPUT tag is used to specify where the man pages will be put. 
    889 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
     1178# The MAN_OUTPUT tag is used to specify where the man pages will be put.
     1179# If a relative path is entered the value of OUTPUT_DIRECTORY will be
    8901180# put in front of it. If left blank `man' will be used as the default path.
    8911181
    8921182MAN_OUTPUT             = man
    8931183
    894 # The MAN_EXTENSION tag determines the extension that is added to 
     1184# The MAN_EXTENSION tag determines the extension that is added to
    8951185# the generated man pages (default is the subroutine's section .3)
    8961186
    8971187MAN_EXTENSION          = .3
    8981188
    899 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
    900 # then it will generate one additional man file for each entity 
    901 # documented in the real man page(s). These additional files 
    902 # only source the real man page, but without them the man command 
     1189# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
     1190# then it will generate one additional man file for each entity
     1191# documented in the real man page(s). These additional files
     1192# only source the real man page, but without them the man command
    9031193# would be unable to find the correct page. The default is NO.
    9041194
     
    9091199#---------------------------------------------------------------------------
    9101200
    911 # If the GENERATE_XML tag is set to YES Doxygen will 
    912 # generate an XML file that captures the structure of 
     1201# If the GENERATE_XML tag is set to YES Doxygen will
     1202# generate an XML file that captures the structure of
    9131203# the code including all documentation.
    9141204
    9151205GENERATE_XML           = NO
    9161206
    917 # The XML_OUTPUT tag is used to specify where the XML pages will be put. 
    918 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
     1207# The XML_OUTPUT tag is used to specify where the XML pages will be put.
     1208# If a relative path is entered the value of OUTPUT_DIRECTORY will be
    9191209# put in front of it. If left blank `xml' will be used as the default path.
    9201210
    9211211XML_OUTPUT             = xml
    9221212
    923 # The XML_SCHEMA tag can be used to specify an XML schema, 
    924 # which can be used by a validating XML parser to check the 
     1213# The XML_SCHEMA tag can be used to specify an XML schema,
     1214# which can be used by a validating XML parser to check the
    9251215# syntax of the XML files.
    9261216
    927 XML_SCHEMA             = 
    928 
    929 # The XML_DTD tag can be used to specify an XML DTD, 
    930 # which can be used by a validating XML parser to check the 
     1217XML_SCHEMA             =
     1218
     1219# The XML_DTD tag can be used to specify an XML DTD,
     1220# which can be used by a validating XML parser to check the
    9311221# syntax of the XML files.
    9321222
    933 XML_DTD                = 
    934 
    935 # If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
    936 # dump the program listings (including syntax highlighting 
    937 # and cross-referencing information) to the XML output. Note that 
     1223XML_DTD                =
     1224
     1225# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
     1226# dump the program listings (including syntax highlighting
     1227# and cross-referencing information) to the XML output. Note that
    9381228# enabling this will significantly increase the size of the XML output.
    9391229
     
    9441234#---------------------------------------------------------------------------
    9451235
    946 # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
    947 # generate an AutoGen Definitions (see autogen.sf.net) file 
    948 # that captures the structure of the code including all 
    949 # documentation. Note that this feature is still experimental 
     1236# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
     1237# generate an AutoGen Definitions (see autogen.sf.net) file
     1238# that captures the structure of the code including all
     1239# documentation. Note that this feature is still experimental
    9501240# and incomplete at the moment.
    9511241
     
    9561246#---------------------------------------------------------------------------
    9571247
    958 # If the GENERATE_PERLMOD tag is set to YES Doxygen will 
    959 # generate a Perl module file that captures the structure of 
    960 # the code including all documentation. Note that this 
    961 # feature is still experimental and incomplete at the 
     1248# If the GENERATE_PERLMOD tag is set to YES Doxygen will
     1249# generate a Perl module file that captures the structure of
     1250# the code including all documentation. Note that this
     1251# feature is still experimental and incomplete at the
    9621252# moment.
    9631253
    9641254GENERATE_PERLMOD       = NO
    9651255
    966 # If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
    967 # the necessary Makefile rules, Perl scripts and LaTeX code to be able 
     1256# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
     1257# the necessary Makefile rules, Perl scripts and LaTeX code to be able
    9681258# to generate PDF and DVI output from the Perl module output.
    9691259
    9701260PERLMOD_LATEX          = NO
    9711261
    972 # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
    973 # nicely formatted so it can be parsed by a human reader.  This is useful
    974 # if you want to understand what is going on.  On the other hand, if this
    975 # tag is set to NO the size of the Perl module output will be much smaller
     1262# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
     1263# nicely formatted so it can be parsed by a human reader.
     1264# This is useful
     1265# if you want to understand what is going on.
     1266# On the other hand, if this
     1267# tag is set to NO the size of the Perl module output will be much smaller
    9761268# and Perl will parse it just the same.
    9771269
    9781270PERLMOD_PRETTY         = YES
    9791271
    980 # The names of the make variables in the generated doxyrules.make file 
    981 # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
    982 # This is useful so different doxyrules.make files included by the same 
     1272# The names of the make variables in the generated doxyrules.make file
     1273# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
     1274# This is useful so different doxyrules.make files included by the same
    9831275# Makefile don't overwrite each other's variables.
    9841276
    985 PERLMOD_MAKEVAR_PREFIX = 
    986 
    987 #---------------------------------------------------------------------------
    988 # Configuration options related to the preprocessor   
    989 #---------------------------------------------------------------------------
    990 
    991 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
    992 # evaluate all C-preprocessor directives found in the sources and include 
     1277PERLMOD_MAKEVAR_PREFIX =
     1278
     1279#---------------------------------------------------------------------------
     1280# Configuration options related to the preprocessor
     1281#---------------------------------------------------------------------------
     1282
     1283# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
     1284# evaluate all C-preprocessor directives found in the sources and include
    9931285# files.
    9941286
    9951287ENABLE_PREPROCESSING   = YES
    9961288
    997 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
    998 # names in the source code. If set to NO (the default) only conditional 
    999 # compilation will be performed. Macro expansion can be done in a controlled 
     1289# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
     1290# names in the source code. If set to NO (the default) only conditional
     1291# compilation will be performed. Macro expansion can be done in a controlled
    10001292# way by setting EXPAND_ONLY_PREDEF to YES.
    10011293
    1002 MACRO_EXPANSION        = YES
    1003 
    1004 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
    1005 # then the macro expansion is limited to the macros specified with the 
     1294MACRO_EXPANSION        = NO
     1295
     1296# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
     1297# then the macro expansion is limited to the macros specified with the
    10061298# PREDEFINED and EXPAND_AS_DEFINED tags.
    10071299
    10081300EXPAND_ONLY_PREDEF     = YES
    10091301
    1010 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
     1302# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
    10111303# in the INCLUDE_PATH (see below) will be search if a #include is found.
    10121304
    1013 SEARCH_INCLUDES        = YES
    1014 
    1015 # The INCLUDE_PATH tag can be used to specify one or more directories that 
    1016 # contain include files that are not input files but should be processed by 
     1305SEARCH_INCLUDES        = NO
     1306
     1307# The INCLUDE_PATH tag can be used to specify one or more directories that
     1308# contain include files that are not input files but should be processed by
    10171309# the preprocessor.
    10181310
    1019 INCLUDE_PATH           =
    1020 
    1021 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
    1022 # patterns (like *.h and *.hpp) to filter out the header-files in the 
    1023 # directories. If left blank, the patterns specified with FILE_PATTERNS will 
     1311INCLUDE_PATH           = #@DOXYGEN_INCLUDE_DIRECTORIES@
     1312
     1313# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
     1314# patterns (like *.h and *.hpp) to filter out the header-files in the
     1315# directories. If left blank, the patterns specified with FILE_PATTERNS will
    10241316# be used.
    10251317
    1026 INCLUDE_FILE_PATTERNS  = 
    1027 
    1028 # The PREDEFINED tag can be used to specify one or more macro names that 
    1029 # are defined before the preprocessor is started (similar to the -D option of 
    1030 # gcc). The argument of the tag is a list of macros of the form: name 
    1031 # or name=definition (no spaces). If the definition and the = are 
    1032 # omitted =1 is assumed. To prevent a macro definition from being 
    1033 # undefined via #undef or recursively expanded use the := operator 
     1318INCLUDE_FILE_PATTERNS  =
     1319
     1320# The PREDEFINED tag can be used to specify one or more macro names that
     1321# are defined before the preprocessor is started (similar to the -D option of
     1322# gcc). The argument of the tag is a list of macros of the form: name
     1323# or name=definition (no spaces). If the definition and the = are
     1324# omitted =1 is assumed. To prevent a macro definition from being
     1325# undefined via #undef or recursively expanded use the := operator
    10341326# instead of the = operator.
    10351327
    1036 PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS
    1037 
    1038 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
    1039 # this tag can be used to specify a list of macro names that should be expanded.
    1040 # The macro definition that is found in the sources will be used.
     1328PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS \
     1329                         @DOXY_PLATFORM_DEF@ \
     1330                         @DOXY_COMPILER_DEF@
     1331
     1332# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
     1333# this tag can be used to specify a list of macro names that should be expanded.
     1334# The macro definition that is found in the sources will be used.
    10411335# Use the PREDEFINED tag if you want to use a different macro definition.
    10421336
    1043 EXPAND_AS_DEFINED      = 
    1044 
    1045 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
    1046 # doxygen's preprocessor will remove all function-like macros that are alone 
    1047 # on a line, have an all uppercase name, and do not end with a semicolon. Such 
    1048 # function macros are typically used for boiler-plate code, and will confuse 
     1337EXPAND_AS_DEFINED      =
     1338
     1339# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
     1340# doxygen's preprocessor will remove all function-like macros that are alone
     1341# on a line, have an all uppercase name, and do not end with a semicolon. Such
     1342# function macros are typically used for boiler-plate code, and will confuse
    10491343# the parser if not removed.
    10501344
     
    10521346
    10531347#---------------------------------------------------------------------------
    1054 # Configuration::additions related to external references   
    1055 #---------------------------------------------------------------------------
    1056 
    1057 # The TAGFILES option can be used to specify one or more tagfiles.
    1058 # Optionally an initial location of the external documentation
    1059 # can be added for each tagfile. The format of a tag file without
    1060 # this location is as follows:
    1061 #   TAGFILES = file1 file2 ...
    1062 # Adding location for the tag files is done as follows:
    1063 #   TAGFILES = file1=loc1 "file2 = loc2" ...
    1064 # where "loc1" and "loc2" can be relative or absolute paths or
    1065 # URLs. If a location is present for each tag, the installdox tool
     1348# Configuration::additions related to external references
     1349#---------------------------------------------------------------------------
     1350
     1351# The TAGFILES option can be used to specify one or more tagfiles.
     1352# Optionally an initial location of the external documentation
     1353# can be added for each tagfile. The format of a tag file without
     1354# this location is as follows:
     1355#
     1356# TAGFILES = file1 file2 ...
     1357# Adding location for the tag files is done as follows:
     1358#
     1359# TAGFILES = file1=loc1 "file2 = loc2" ...
     1360# where "loc1" and "loc2" can be relative or absolute paths or
     1361# URLs. If a location is present for each tag, the installdox tool
    10661362# does not have to be run to correct the links.
    10671363# Note that each tag file must have a unique name
    10681364# (where the name does NOT include the path)
    1069 # If a tag file is not located in the directory in which doxygen 
     1365# If a tag file is not located in the directory in which doxygen
    10701366# is run, you must also specify the path to the tagfile here.
    10711367
    1072 TAGFILES               = 
    1073 
    1074 # When a file name is specified after GENERATE_TAGFILE, doxygen will create 
     1368TAGFILES               =
     1369
     1370# When a file name is specified after GENERATE_TAGFILE, doxygen will create
    10751371# a tag file that is based on the input files it reads.
    10761372
    10771373GENERATE_TAGFILE       = @DOXY_OUTPUT_DIR@/html/@PROJECT_NAME@.TAGFILE
    10781374
    1079 # If the ALLEXTERNALS tag is set to YES all external classes will be listed 
    1080 # in the class index. If set to NO only the inherited external classes 
     1375# If the ALLEXTERNALS tag is set to YES all external classes will be listed
     1376# in the class index. If set to NO only the inherited external classes
    10811377# will be listed.
    10821378
    10831379ALLEXTERNALS           = NO
    10841380
    1085 # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
    1086 # in the modules index. If set to NO, only the current project's groups will 
     1381# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
     1382# in the modules index. If set to NO, only the current project's groups will
    10871383# be listed.
    10881384
    10891385EXTERNAL_GROUPS        = YES
    10901386
    1091 # The PERL_PATH should be the absolute path and name of the perl script 
     1387# The PERL_PATH should be the absolute path and name of the perl script
    10921388# interpreter (i.e. the result of `which perl').
    10931389
     
    10951391
    10961392#---------------------------------------------------------------------------
    1097 # Configuration options related to the dot tool   
    1098 #---------------------------------------------------------------------------
    1099 
    1100 # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
    1101 # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
    1102 # or super classes. Setting the tag to NO turns the diagrams off. Note that 
    1103 # this option is superseded by the HAVE_DOT option below. This is only a 
    1104 # fallback. It is recommended to install and use dot, since it yields more 
     1393# Configuration options related to the dot tool
     1394#---------------------------------------------------------------------------
     1395
     1396# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
     1397# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
     1398# or super classes. Setting the tag to NO turns the diagrams off. Note that
     1399# this option is superseded by the HAVE_DOT option below. This is only a
     1400# fallback. It is recommended to install and use dot, since it yields more
    11051401# powerful graphs.
    11061402
    11071403CLASS_DIAGRAMS         = YES
    11081404
    1109 # If set to YES, the inheritance and collaboration graphs will hide
    1110 # inheritance and usage relations if the target is undocumented
     1405# You can define message sequence charts within doxygen comments using the \msc
     1406# command. Doxygen will then run the mscgen tool (see
     1407# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
     1408# documentation. The MSCGEN_PATH tag allows you to specify the directory where
     1409# the mscgen tool resides. If left empty the tool is assumed to be found in the
     1410# default search path.
     1411
     1412MSCGEN_PATH            =
     1413
     1414# If set to YES, the inheritance and collaboration graphs will hide
     1415# inheritance and usage relations if the target is undocumented
    11111416# or is not a class.
    11121417
    11131418HIDE_UNDOC_RELATIONS   = YES
    11141419
    1115 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
    1116 # available from the path. This tool is part of Graphviz, a graph visualization 
    1117 # toolkit from AT&T and Lucent Bell Labs. The other options in this section 
     1420# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
     1421# available from the path. This tool is part of Graphviz, a graph visualization
     1422# toolkit from AT&T and Lucent Bell Labs. The other options in this section
    11181423# have no effect if this option is set to NO (the default)
    11191424
    11201425HAVE_DOT               = NO
    11211426
    1122 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
    1123 # will generate a graph for each documented class showing the direct and
    1124 # indirect inheritance relations. Setting this tag to YES will force the
     1427# By default doxygen will write a font called FreeSans.ttf to the output
     1428# directory and reference it in all dot files that doxygen generates. This
     1429# font does not include all possible unicode characters however, so when you need
     1430# these (or just want a differently looking font) you can specify the font name
     1431# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
     1432# which can be done by putting it in a standard location or by setting the
     1433# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
     1434# containing the font.
     1435
     1436DOT_FONTNAME           = FreeSans
     1437
     1438# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
     1439# The default size is 10pt.
     1440
     1441DOT_FONTSIZE           = 10
     1442
     1443# By default doxygen will tell dot to use the output directory to look for the
     1444# FreeSans.ttf font (which doxygen will put there itself). If you specify a
     1445# different font using DOT_FONTNAME you can set the path where dot
     1446# can find it using this tag.
     1447
     1448DOT_FONTPATH           =
     1449
     1450# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
     1451# will generate a graph for each documented class showing the direct and
     1452# indirect inheritance relations. Setting this tag to YES will force the
    11251453# the CLASS_DIAGRAMS tag to NO.
    11261454
    11271455CLASS_GRAPH            = YES
    11281456
    1129 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
    1130 # will generate a graph for each documented class showing the direct and 
    1131 # indirect implementation dependencies (inheritance, containment, and 
     1457# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
     1458# will generate a graph for each documented class showing the direct and
     1459# indirect implementation dependencies (inheritance, containment, and
    11321460# class references variables) of the class with other documented classes.
    11331461
    11341462COLLABORATION_GRAPH    = YES
    11351463
    1136 # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
     1464# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
    11371465# will generate a graph for groups, showing the direct groups dependencies
    11381466
    11391467GROUP_GRAPHS           = YES
    11401468
    1141 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
    1142 # collaboration diagrams in a style similar to the OMG's Unified Modeling 
     1469# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
     1470# collaboration diagrams in a style similar to the OMG's Unified Modeling
    11431471# Language.
    11441472
    11451473UML_LOOK               = NO
    11461474
    1147 # If set to YES, the inheritance and collaboration graphs will show the 
     1475# If set to YES, the inheritance and collaboration graphs will show the
    11481476# relations between templates and their instances.
    11491477
    11501478TEMPLATE_RELATIONS     = NO
    11511479
    1152 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
    1153 # tags are set to YES then doxygen will generate a graph for each documented 
    1154 # file showing the direct and indirect include dependencies of the file with 
     1480# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
     1481# tags are set to YES then doxygen will generate a graph for each documented
     1482# file showing the direct and indirect include dependencies of the file with
    11551483# other documented files.
    11561484
    11571485INCLUDE_GRAPH          = YES
    11581486
    1159 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
    1160 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
    1161 # documented header file showing the documented files that directly or 
     1487# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
     1488# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
     1489# documented header file showing the documented files that directly or
    11621490# indirectly include this file.
    11631491
    11641492INCLUDED_BY_GRAPH      = YES
    11651493
    1166 # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
    1167 # generate a call dependency graph for every global function or class method.
    1168 # Note that enabling this option will significantly increase the time of a run.
    1169 # So in most cases it will be better to enable call graphs for selected
    1170 # functions only using the \callgraph command.
     1494# If the CALL_GRAPH and HAVE_DOT options are set to YES then
     1495# doxygen will generate a call dependency graph for every global function
     1496# or class method. Note that enabling this option will significantly increase
     1497# the time of a run. So in most cases it will be better to enable call graphs
     1498# for selected functions only using the \callgraph command.
    11711499
    11721500CALL_GRAPH             = NO
    11731501
    1174 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
     1502# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
     1503# doxygen will generate a caller dependency graph for every global function
     1504# or class method. Note that enabling this option will significantly increase
     1505# the time of a run. So in most cases it will be better to enable caller
     1506# graphs for selected functions only using the \callergraph command.
     1507
     1508CALLER_GRAPH           = NO
     1509
     1510# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
    11751511# will graphical hierarchy of all classes instead of a textual one.
    11761512
    11771513GRAPHICAL_HIERARCHY    = YES
    11781514
    1179 # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
    1180 # then doxygen will show the dependencies a directory has on other directories 
     1515# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
     1516# then doxygen will show the dependencies a directory has on other directories
    11811517# in a graphical way. The dependency relations are determined by the #include
    11821518# relations between the files in the directories.
     
    11841520DIRECTORY_GRAPH        = YES
    11851521
    1186 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
     1522# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
    11871523# generated by dot. Possible values are png, jpg, or gif
    11881524# If left blank png will be used.
     
    11901526DOT_IMAGE_FORMAT       = png
    11911527
    1192 # The tag DOT_PATH can be used to specify the path where the dot tool can be 
     1528# The tag DOT_PATH can be used to specify the path where the dot tool can be
    11931529# found. If left blank, it is assumed the dot tool can be found in the path.
    11941530
    11951531DOT_PATH               = @DOXYGEN_DOT_EXECUTABLE_PATH@
    11961532
    1197 # The DOTFILE_DIRS tag can be used to specify one or more directories that 
    1198 # contain dot files that are included in the documentation (see the 
     1533# The DOTFILE_DIRS tag can be used to specify one or more directories that
     1534# contain dot files that are included in the documentation (see the
    11991535# \dotfile command).
    12001536
    12011537DOTFILE_DIRS           = @CMAKE_CURRENT_SOURCE_DIR@/dot
    12021538
    1203 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
    1204 # graphs generated by dot. A depth value of 3 means that only nodes reachable
    1205 # from the root by following a path via at most 3 edges will be shown. Nodes
    1206 # that lay further from the root node will be omitted. Note that setting this
    1207 # option to 1 or 2 may greatly reduce the computation time needed for large
    1208 # code bases. Also note that a graph may be further truncated if the graph's
    1209 # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
    1210 # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
    1211 # the graph is not depth-constrained.
     1539# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
     1540# nodes that will be shown in the graph. If the number of nodes in a graph
     1541# becomes larger than this value, doxygen will truncate the graph, which is
     1542# visualized by representing a node as a red box. Note that doxygen if the
     1543# number of direct children of the root node in a graph is already larger than
     1544# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
     1545# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
     1546
     1547DOT_GRAPH_MAX_NODES    = 50
     1548
     1549# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
     1550# graphs generated by dot. A depth value of 3 means that only nodes reachable
     1551# from the root by following a path via at most 3 edges will be shown. Nodes
     1552# that lay further from the root node will be omitted. Note that setting this
     1553# option to 1 or 2 may greatly reduce the computation time needed for large
     1554# code bases. Also note that the size of a graph can be further restricted by
     1555# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
    12121556
    12131557MAX_DOT_GRAPH_DEPTH    = 1000
    12141558
    1215 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
    1216 # background. This is disabled by default, which results in a white background.
    1217 # Warning: Depending on the platform used, enabling this option may lead to
    1218 # badly anti-aliased labels on the edges of a graph (i.e. they become hard to
    1219 # read).
     1559# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
     1560# background. This is disabled by default, because dot on Windows does not
     1561# seem to support this out of the box. Warning: Depending on the platform used,
     1562# enabling this option may lead to badly anti-aliased labels on the edges of
     1563# a graph (i.e. they become hard to read).
    12201564
    12211565DOT_TRANSPARENT        = NO
    12221566
    1223 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
    1224 # files in one run (i.e. multiple -o and -T options on the command line). This 
    1225 # makes dot run faster, but since only newer versions of dot (>1.8.10) 
     1567# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
     1568# files in one run (i.e. multiple -o and -T options on the command line). This
     1569# makes dot run faster, but since only newer versions of dot (>1.8.10)
    12261570# support this, this feature is disabled by default.
    12271571
    12281572DOT_MULTI_TARGETS      = NO
    12291573
    1230 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
    1231 # generate a legend page explaining the meaning of the various boxes and 
     1574# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
     1575# generate a legend page explaining the meaning of the various boxes and
    12321576# arrows in the dot generated graphs.
    12331577
    12341578GENERATE_LEGEND        = YES
    12351579
    1236 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
    1237 # remove the intermediate dot files that are used to generate 
     1580# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
     1581# remove the intermediate dot files that are used to generate
    12381582# the various graphs.
    12391583
    12401584DOT_CLEANUP            = YES
    1241 
    1242 #---------------------------------------------------------------------------
    1243 # Configuration::additions related to the search engine   
    1244 #---------------------------------------------------------------------------
    1245 
    1246 # The SEARCHENGINE tag specifies whether or not a search engine should be
    1247 # used. If set to NO the values of all tags below this one will be ignored.
    1248 
    1249 SEARCHENGINE           = YES
  • code/trunk/doc/api/main.dox

    r6417 r7401  
    11/**
    2 @mainpage
    3     Orxonox Doxygen Reference
     2    @mainpage
     3
     4    @image html orxonox.jpg
     5
     6    This is the documentation of Orxonox. It contains descriptions of our classes and functions and
     7    explains their usage with several examples and background information. Because Orxonox is so big,
     8    we can't document all of our code - sorry for that! But we do your best to document the most
     9    important parts of it, namely the @ref Core "core" and @ref Util "util" libraries, as well as the
     10    central classes in the @ref Orxonox "orxonox" main library and some @ref Modules "modules".
     11
     12    To understand the connection between different classes in Orxonox, have a look at the
     13    <a href="modules.html"><b>Modules section</b></a>. It contains a list of the most important topics
     14    and groups files that contribute to the same feature.
    415*/
  • code/trunk/src/CMakeLists.txt

    r7224 r7401  
    116116ADD_SUBDIRECTORY(modules)
    117117
    118 ################ Executable ################
     118################## Executable ###################
    119119
    120120INCLUDE_DIRECTORIES(
     
    137137  OUTPUT_NAME orxonox
    138138)
     139# Main executable should depend on all modules
     140ADD_DEPENDENCIES(orxonox-main ${ORXONOX_MODULES})
    139141
    140142# Get name to configure the run scripts
     
    161163  CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/orxonox-main.vcproj.user.in" "${CMAKE_CURRENT_BINARY_DIR}/orxonox-main.vcproj.user")
    162164ENDIF(MSVC)
     165
     166#################### Doxygen ####################
     167
     168# Prepare include paths for Doxygen. This is necessary to display
     169# the correct path to use when including a file, e.g.
     170# core/XMLPort.h instead of src/core/XMLPort.h
     171
     172INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/modules)
     173GET_DIRECTORY_PROPERTY(_temp INCLUDE_DIRECTORIES)
     174# Replace ';' by spaces
     175STRING(REPLACE ";" " " _temp "${_temp}")
     176SET(DOXYGEN_INCLUDE_DIRECTORIES "${_temp}" PARENT_SCOPE)
  • code/trunk/src/OrxonoxConfig.h.in

    r5695 r7401  
    145145 * Options
    146146 *-------------------------------*/
    147 /**
    148 @def ORXONOX_RELEASE
    149     Enables expensive (build time) optimisations and disables certain features
    150 */
    151 #cmakedefine ORXONOX_RELEASE
     147#cmakedefine ORXONOX_RELEASE  ///< Enables expensive (build time) optimisations and disables certain features
    152148
    153149
  • code/trunk/src/SpecialConfig.h.in

    r7380 r7401  
    4242#include "OrxonoxConfig.h"
    4343
    44 /**
    45 @def CEGUILUA_USE_INTERNAL_LIBRARY
    46     Set whether we must suffix "ceguilua/" for the CEGUILua.h include
    47 */
    48 #cmakedefine CEGUILUA_USE_INTERNAL_LIBRARY
     44#cmakedefine CEGUILUA_USE_INTERNAL_LIBRARY  ///< Set whether we must suffix "ceguilua/" for the CEGUILua.h include
    4945
    50 /**
    51 @def DEPENDENCY_PACKAGE_ENABLE
    52     Defined if a precompiled depdency package was used. We then copy all libraries
    53     too when installing.
    54 */
    55 #cmakedefine DEPENDENCY_PACKAGE_ENABLE
     46#cmakedefine DEPENDENCY_PACKAGE_ENABLE      ///< Defined if a precompiled depdency package was used. We then copy all libraries too when installing.
    5647
    57 /**
    58 @def INSTALL_COPYABLE
    59     Orxonox either gets installed to the system or just into a folder.
    60     The latter uses relative paths.
    61 */
    62 #cmakedefine INSTALL_COPYABLE
     48#cmakedefine INSTALL_COPYABLE               ///< Orxonox either gets installed to the system or just into a folder. The latter uses relative paths.
    6349
    64 /**
    65 @def CMAKE_CONFIGURATION_TYPES
    66     Using MSVC or XCode IDE
    67 */
    68 #cmakedefine CMAKE_CONFIGURATION_TYPES
     50#cmakedefine CMAKE_CONFIGURATION_TYPES      ///< Using MSVC or XCode IDE
    6951
    7052// Handle default ConfigValues
     
    125107} }
    126108
    127 /**
    128 @def ORXONOX_USE_WINMAIN
    129     Use main() or WinMain()?
    130 */
    131 #cmakedefine ORXONOX_USE_WINMAIN
     109#cmakedefine ORXONOX_USE_WINMAIN  ///< Using MSVC or XCode IDE
    132110
    133111#endif /* _SpecialConfig_H__ */
  • code/trunk/src/libraries/CMakeLists.txt

    r5929 r7401  
    1818 #
    1919
    20 INCLUDE_DIRECTORIES(
    21   ${CMAKE_SOURCE_DIR}/src/external
    22   ${CMAKE_CURRENT_SOURCE_DIR}
    23 )
     20INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
    2421
    2522################ Sub Directories ################
  • code/trunk/src/libraries/core/BaseObject.cc

    r7284 r7401  
    116116        @brief XML loading and saving.
    117117        @param xmlelement The XML-element
    118         @param loading Loading (true) or saving (false)
     118        @param mode The mode defines the operation that is being executed: loading or saving the object (from or to XML respectively)
    119119    */
    120120    void BaseObject::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     
    141141        @brief Defines the possible event states of this object and parses eventsources from an XML file.
    142142        @param xmlelement The XML-element
    143         @param loading Loading (true) or saving (false)
     143        @param mode The mode defines the operation that is being executed: loading or saving the object (from or to XML respectively)
    144144    */
    145145    void BaseObject::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
  • code/trunk/src/libraries/core/BaseObject.h

    r7284 r7401  
    2828
    2929/**
     30    @defgroup BaseObject BaseObject
     31    @ingroup Core
     32*/
     33
     34/**
    3035    @file
    31     @brief Definition of the BaseObject class.
     36    @ingroup BaseObject
     37    @brief Declaration of BaseObject, the base class of all objects in Orxonox.
    3238
    3339    The BaseObject is the parent of all classes representing an instance in the game.
     
    5359    class Level;
    5460
    55     //! The BaseObject is the parent of all classes representing an instance in the game.
     61    /// The BaseObject is the parent of all classes representing an instance in the game.
    5662    class _CoreExport BaseObject : virtual public OrxonoxClass
    5763    {
  • code/trunk/src/libraries/core/ClassFactory.h

    r5929 r7401  
    2929/**
    3030    @file
     31    @ingroup Object Factory
    3132    @brief Definition and implementation of the ClassFactory class
    3233
    33     The ClassFactory is able to create new objects of a specific class.
     34    The ClassFactory is able to create new objects of a specific class which creates objects.
    3435*/
    3536
     
    4950    // ###       Factory       ###
    5051    // ###########################
    51     //! Base-class of ClassFactory.
     52    /// Base-class of ClassFactory.
    5253    class _CoreExport Factory
    5354    {
     
    6061    // ###      ClassFactory       ###
    6162    // ###############################
    62     //! The ClassFactory is able to create new objects of a specific class.
     63    /// The ClassFactory is able to create new objects of a specific class.
    6364    template <class T>
    6465    class ClassFactory : public Factory
  • code/trunk/src/libraries/core/ClassTreeMask.cc

    r7268 r7401  
    2929/**
    3030    @file
    31     @brief Implementation of the ClassTreeMask, ClassTreeMaskNode and ClassTreeMaskIterator classes.
     31    @brief Implementation of the ClassTreeMask, ClassTreeMaskNode, and ClassTreeMaskIterator classes.
    3232*/
    3333
     
    9393    /**
    9494        @brief Adds a new subnode to the list of subnodes.
    95         @param subnode The new subnode
    9695    */
    9796    void ClassTreeMaskNode::addSubnode(ClassTreeMaskNode* subnode)
     
    178177    /**
    179178        @brief Returns a pointer to the ClassTreeMaskNode whereon the iterator points.
    180         @return The pointer to the node
    181179    */
    182180    ClassTreeMaskNode* ClassTreeMaskIterator::operator*() const
     
    187185    /**
    188186        @brief Returns a pointer to the ClassTreeMaskNode whereon the iterator points.
    189         @return The pointer to the node
    190187    */
    191188    ClassTreeMaskNode* ClassTreeMaskIterator::operator->() const
     
    196193    /**
    197194        @brief Returns true if the stack is empty, meaning we've reached the end of the tree.
    198         @return True if we've reached the end of the tree
    199195    */
    200196    ClassTreeMaskIterator::operator bool() const
     
    205201    /**
    206202        @brief Compares the current node with the given one and returns true if they match.
    207         @param compare The node to compare with
    208         @return The result of the comparison (true if they match)
    209203    */
    210204    bool ClassTreeMaskIterator::operator==(ClassTreeMaskNode* compare) const
     
    218212    /**
    219213        @brief Compares the current node with the given one and returns true if they don't match.
    220         @param compare The node to compare with
    221         @return The result of the comparison (true if they don't match)
    222214    */
    223215    bool ClassTreeMaskIterator::operator!=(ClassTreeMaskNode* compare) const
     
    242234
    243235    /**
    244         @brief Copyconstructor: Adds the root-node of the tree with the first rule ("include everything") and adds all rules from the other mask.
    245         @param other The other mask
     236        @brief Copy-constructor: Adds the root-node of the tree with the first rule ("include everything") and adds all rules from the other mask.
    246237    */
    247238    ClassTreeMask::ClassTreeMask(const ClassTreeMask& other)
  • code/trunk/src/libraries/core/ClassTreeMask.h

    r7268 r7401  
    2929/**
    3030    @file
    31     @brief Definition of the ClassTreeMask, ClassTreeMaskNode and ClassTreeMaskIterator classes.
    32 
    33     ClassTreeMask is a class to define a mask of the class-tree beginning with BaseObject.
     31    @ingroup Class
     32    @brief Declaration of the ClassTreeMask, ClassTreeMaskNode, and ClassTreeMaskIterator classes.
     33
     34    ClassTreeMask is a class to define a mask of the class-tree beginning with orxonox::BaseObject.
    3435    You can include or exclude classes by calling the corresponding functions with the
    35     Identifier of the class.
     36    orxonox::Identifier of the class. This mask can then be used to filter out objects that
     37    are instances of classes which aren't included in the tree, for example when Loading a
     38    level file or if a Trigger should be triggered by only a few classes.
     39
     40    See the description of orxonox::ClassTreeMask for a short example.
    3641
    3742    You can work with a ClassTreeMask in the sense of the set-theory, meaning that you can create
    3843    unions, intersections, complements and differences by using overloaded operators.
    3944
    40 
     45    @par Tree structure
    4146
    4247    The ClassTreeMask is internally represented by a tree. The nodes in the tree are
     
    4550    nodes changing the mask. By adding new rules, the tree gets reordered dynamically.
    4651
    47     Adding a new rule overwrites all rules assigned to inherited classes. Use overwrite = false
     52    Adding a new rule overwrites all rules assigned to inherited classes. Use <tt>overwrite = false</tt>
    4853    if you don't like this feature. Useless rules that don't change the information of the mask
    49     aren't saved in the internal tree. Use clean = false if you wan't to save them.
    50 
    51     With overwrite = false and clean = false it doesn't matter in which way you create the mask.
    52     You can manually drop useless rules from the tree by calling clean().
    53 
    54 
    55 
    56     Because of the complicated shape of the internal tree, there is an iterator to iterate
    57     through all ClassTreeMaskNodes of a mask. It starts with the BaseObject and moves on to
    58     the first subclass until it reaches a leaf of the tree. Then the iterator moves one step
    59     back and iterates to the second subclass. If there are no more subclasses, it steps another
    60     step back, and so on.
    61 
    62     Example: A and B are children of BaseObject, A1 and A2 are children of A, B1 and B2 are children of B.
    63     The ClassTreeMaskIterator would move trough the tree in the following order:
    64     BaseObject, A, A1, A2, B, B1, B2.
    65 
    66     Note that the iterator doesn't move trough the whole class-tree, but only through the
    67     internal tree of the mask, containing the minimal needed set of nodes to describe the mask.
     54    aren't saved in the internal tree. Use <tt>clean = false</tt> if you still want to save them.
     55
     56    With <tt>overwrite = false</tt> and <tt>clean = false</tt> it doesn't matter in which order
     57    you create the mask. You can manually drop useless rules from the tree by calling
     58    @ref orxonox::ClassTreeMask::clean() "clean()".
     59
     60    @par Objects
     61
     62    To iterate through all objects of the classes that were included by a ClassTreeMask,
     63    use orxonox::ClassTreeMaskObjectIterator. The description of this class also contains
     64    a short example of how to use it.
    6865*/
    6966
     
    8380    // ###      ClassTreeMaskNode      ###
    8481    // ###################################
    85     //! The ClassTreeMaskNode is a node in the internal tree of the ClassTreeMask, containing the rules of the mask.
    8682    /**
     83        @brief The ClassTreeMaskNode is a node in the internal tree of the ClassTreeMask, containing the rules of the mask.
     84
    8785        The ClassTreeMaskNode is used to store the rule (included or excluded) for a given
    8886        class (described by the corresponding Identifier). The nodes are used in the internal
     
    105103            void addSubnode(ClassTreeMaskNode* subnode);
    106104
    107             /** @brief Tells if the rule is "included" or not. @return The rule: true = included, false = excluded */
     105            /// Tells if the rule is "included" or not.
    108106            inline bool isIncluded() const { return this->bIncluded_; }
    109             /** @brief Tells if the rule is "excluded" or not. @return The inverted rule: true = excluded, false = included */
     107            /// Tells if the rule is "excluded" or not.
    110108            inline bool isExcluded() const { return (!this->bIncluded_); }
    111109
    112             /** @brief Returns the Identifier of the class the rule refers to. @return The Identifier representing the class */
     110            /// Returns the Identifier of the class the rule refers to.
    113111            inline const Identifier* getClass() const { return this->subclass_; }
    114112
    115             /** @brief Returns true if the Node has some subnodes. */
     113            /// Returns true if the node has some subnodes.
    116114            inline bool hasSubnodes() const { return !this->subnodes_.empty(); }
    117115
     
    119117            void deleteAllSubnodes();
    120118
    121             const Identifier* subclass_;                //!< The Identifier of the subclass the rule refers to
    122             bool bIncluded_;                            //!< The rule: included or excluded
    123             std::list<ClassTreeMaskNode*> subnodes_;    //!< A list containing all subnodes in the tree
     119            const Identifier* subclass_;                ///< The Identifier of the subclass the rule refers to
     120            bool bIncluded_;                            ///< The rule: included or excluded
     121            std::list<ClassTreeMaskNode*> subnodes_;    ///< A list containing all subnodes of this node
    124122    };
    125123
     
    128126    // ###    ClassTreeMaskIterator    ###
    129127    // ###################################
    130     //! The ClassTreeMaskIterator moves through all ClassTreeMaskNodes of the internal tree of a ClassTreeMask, containing the rules.
    131128    /**
     129        @brief The ClassTreeMaskIterator moves through all ClassTreeMaskNodes of the internal tree of a ClassTreeMask which contains the rules.
     130
    132131        Because of the complicated shape of the internal rule-tree of ClassTreeMask, an
    133132        iterator is used to move through all nodes of the tree. It starts with the BaseObject
     
    135134        iterator moves one step back and iterates to the second subclass. If there are no more
    136135        subclasses, it steps another step back, and so on.
     136
     137        Example: A and B are children of BaseObject, A1 and A2 are children of A, B1 and B2 are children of B.
     138        The ClassTreeMaskIterator would move trough the tree in the following order:
     139        BaseObject, A, A1, A2, B, B1, B2.
     140
     141        Note that the iterator doesn't move trough the whole class-tree, but only through the
     142        internal tree of the mask, containing the minimal needed set of nodes to describe the mask.
    137143    */
    138144    class _CoreExport ClassTreeMaskIterator
     
    150156
    151157        private:
    152             std::stack<std::pair<std::list<ClassTreeMaskNode*>::iterator, std::list<ClassTreeMaskNode*>::iterator> > nodes_;    //!< A stack to store list-iterators
    153             std::list<ClassTreeMaskNode*> rootlist_;                                                                            //!< A list for internal use (it only stores the root-node)
     158            std::stack<std::pair<std::list<ClassTreeMaskNode*>::iterator, std::list<ClassTreeMaskNode*>::iterator> > nodes_;    ///< A stack to store list-iterators
     159            std::list<ClassTreeMaskNode*> rootlist_;                                                                            ///< A list for internal use (it only stores the root-node)
    154160    };
    155161
     
    158164    // ###        ClassTreeMask        ###
    159165    // ###################################
    160     //! The ClassTreeMask is a set of rules, containing the information for each class whether it's included or not.
    161166    /**
     167        @brief The ClassTreeMask is a set of rules, containing the information for each class whether it's included or not.
     168
    162169        With a ClassTreeMask, you can include or exclude subtrees of the class-tree, starting
    163170        with a given subclass, described by the corresponding Identifier. To minimize the size
    164171        of the mask, the mask saves only relevant rules. But you can manually add rules that
    165         don't change the information of the mask by using clean = false. If you want to drop
     172        don't change the information of the mask by using <tt>clean = false</tt>. If you want to drop
    166173        useless rules, call the clean() function.
     174
     175        Example:
     176        @code
     177        ClassTreeMask mymask;
     178        mymask.exclude(Class(A));
     179        mymask.exclude(Class(B));
     180        mymask.include(Class(ChildOfA));
     181        @endcode
     182
     183        In this example, the classes A and B are excluded from the mask, but one of the child
     184        classes of A is included again.
    167185    */
    168186    class _CoreExport ClassTreeMask
     
    189207            bool isExcluded(const Identifier* subclass) const;
    190208
    191             /** @brief Begin of the ClassTreeMaskObjectIterator. */
     209            /// Begin of the ClassTreeMaskObjectIterator.
    192210            inline const ClassTreeMask& begin() const { return (*this); }
    193             /** @brief End of the ClassTreeMaskObjectIterator. */
     211            /// End of the ClassTreeMaskObjectIterator.
    194212            inline BaseObject*          end()   const { return 0; }
    195213
     
    228246            bool nodeExists(const Identifier* subclass);
    229247
    230             ClassTreeMaskNode* root_;   //!< The root-node of the internal rule-tree, usually BaseObject
     248            ClassTreeMaskNode* root_;   ///< The root-node of the internal rule-tree, usually BaseObject
    231249    };
    232250
     
    235253    // ### ClassTreeMaskObjectIterator ###
    236254    // ###################################
    237     //! The ClassTreeMaskObjectIterator iterates through all objects of all classes, included by a ClassTreeMask.
    238255    /**
    239         The ClassTreeMaskObjectIterator iterates through all objects of all classes,
    240         included by a ClassTreeMask. This is done the following way:
    241 
     256        @brief The ClassTreeMaskObjectIterator iterates through all objects of the classes that were included by a ClassTreeMask.
     257
     258        This is done the following way:
     259        @code
    242260        ClassTreeMask mask;
    243261        for (ClassTreeMaskObjectIterator it = mask.begin(); it != mask.end(); ++it)
    244262            it->doSomething();
    245 
    246         Note: The ClassTreeMaskObjectIterator handles all objects as BaseObjects. If
     263        @endcode
     264
     265        @note The ClassTreeMaskObjectIterator handles all objects as BaseObjects. If
    247266              you want to use another class, you should use a dynamic_cast.
    248267
    249         Performance of ClassTreeMaskObjectIterator is good as long as you don't exclude
     268        The performance of ClassTreeMaskObjectIterator is good as long as you don't exclude
    250269        subclasses of included classes. Of course you can still exlucde subclasses, but
    251270        if this is done more often, we need a new implementation using a second ObjectList
     
    255274    {
    256275        public:
    257             /** @brief Defaultconstructor: Does nothing. */
     276            /// Default-constructor: Does nothing.
    258277            inline ClassTreeMaskObjectIterator() {}
    259             /** @brief Constructor: Initializes the iterator from a given ClassTreeMask. @param mask The mask */
     278            /// Copy-Constructor: Initializes the iterator from another ClassTreeMask.
    260279            inline ClassTreeMaskObjectIterator(const ClassTreeMask& mask) { (*this) = mask; }
    261280
     
    264283            const ClassTreeMaskObjectIterator& operator++();
    265284
    266             /** @brief Returns true if the ClassTreeMaskObjectIterator points at the given object. @param pointer The pointer of the object */
     285            /// Returns true if the ClassTreeMaskObjectIterator points at the given object.
    267286            inline bool operator==(BaseObject* pointer) const { return (this->objectIterator_ && (*this->objectIterator_) == pointer) || (!this->objectIterator_ && pointer == 0); }
    268             /** @brief Returns true if the ClassTreeMaskObjectIterator doesn't point at the given object. @param pointer The pointer of the object */
     287            /// Returns true if the ClassTreeMaskObjectIterator doesn't point at the given object.
    269288            inline bool operator!=(BaseObject* pointer) const { return (this->objectIterator_ && (*this->objectIterator_) != pointer) || (!this->objectIterator_ && pointer != 0); }
    270             /** @brief Returns true if the ClassTreeMaskObjectIterator hasn't already reached the end. */
     289            /// Returns true if the ClassTreeMaskObjectIterator hasn't already reached the end.
    271290            inline operator bool() const { return (this->objectIterator_); }
    272             /** @brief Returns the object the ClassTreeMaskObjectIterator currently points at. */
     291            /// Returns the object the ClassTreeMaskObjectIterator currently points at.
    273292            inline BaseObject* operator*() const { return (*this->objectIterator_); }
    274             /** @brief Returns the object the ClassTreeMaskObjectIterator currently points at. */
     293            /// Returns the object the ClassTreeMaskObjectIterator currently points at.
    275294            inline BaseObject* operator->() const { return (*this->objectIterator_); }
    276295
     
    278297            void create(ClassTreeMaskNode* node);
    279298
    280             std::list<std::pair<const Identifier*, bool> >           subclasses_;       //!< A list of all Identifiers through which objects the iterator should iterate
    281             std::list<std::pair<const Identifier*, bool> >::iterator subclassIterator_; //!< The current class of the iterator
    282             Iterator<BaseObject>                                     objectIterator_;   //!< The current object of the iterator
     299            std::list<std::pair<const Identifier*, bool> >           subclasses_;       ///< A list of all Identifiers through which objects the iterator should iterate
     300            std::list<std::pair<const Identifier*, bool> >::iterator subclassIterator_; ///< The current class of the iterator
     301            Iterator<BaseObject>                                     objectIterator_;   ///< The current object of the iterator
    283302    };
    284303}
  • code/trunk/src/libraries/core/CommandLineParser.cc

    r7284 r7401  
    126126    @param arguments
    127127        Vector of space separated strings.
     128    @param bParsingFile
     129        Parsing a file or the command line itself
    128130    */
    129131    void CommandLineParser::_parse(const std::vector<std::string>& arguments, bool bParsingFile)
     
    244246    @param value
    245247        String containing the value
     248    @param bParsingFile
     249        Parsing a file or the command line itself
    246250    */
    247251    void CommandLineParser::checkFullArgument(const std::string& name, const std::string& value, bool bParsingFile)
     
    258262        Parses an argument based on its shortcut.
    259263    @param shortcut
    260         Shotcut to the argument
     264        Shortcut to the argument
    261265    @param value
    262266        String containing the value
     267    @param bParsingFile
     268        Parsing a file or the command line itself
    263269    */
    264270    void CommandLineParser::checkShortcut(const std::string& shortcut, const std::string& value, bool bParsingFile)
     
    308314    }
    309315
     316    void CommandLineParser::generateDoc(std::ofstream& file)
     317    {
     318        file << "/** @page cmdargspage Command Line Arguments Reference" << endl;
     319        file << "    @verbatim"; /*no endl*/
     320        file << getUsageInformation(); /*no endl*/
     321        file << "    @endverbatim" << endl;
     322        file << "*/" << endl;
     323    }
     324
    310325    /**
    311326    @brief
     
    313328        The method throws an exception if 'name' was not found or the value could not be converted.
    314329    @note
    315         You shold of course not call this method before the command line has been parsed.
     330        You should of course not call this method before the command line has been parsed.
    316331    */
    317332    const CommandLineArgument* CommandLineParser::getArgument(const std::string& name)
  • code/trunk/src/libraries/core/CommandLineParser.h

    r7284 r7401  
    2727 */
    2828
     29/**
     30    @defgroup CmdArgs Commandline arguments
     31    @ingroup Config
     32    @brief For a reference of all commandline arguments see @ref cmdargspage
     33*/
     34
     35/**
     36    @file
     37    @ingroup Config CmdArgs
     38    @brief Declaration of CommandLineParser and CommandLineArgument, definition of the SetCommandLineArgument() macros.
     39*/
     40
    2941#ifndef _CommandLine_H__
    3042#define _CommandLine_H__
     
    3244#include "CorePrereqs.h"
    3345
     46#include <fstream>
    3447#include <map>
    3548#include "util/OrxAssert.h"
     
    165178        static void destroyAllArguments();
    166179
     180        static void generateDoc(std::ofstream& file);
     181
    167182    private:
    168183        //! Constructor initialises bFirstTimeParse_ with true.
     
    207222    @param defaultValue
    208223        Default value that is used when argument was not given.
     224    @param bCommandLineOnly
     225        Parsing a file or the command line itself
    209226    */
    210227    template <class T>
  • code/trunk/src/libraries/core/ConfigFileManager.cc

    r7284 r7401  
    2727 */
    2828
     29/**
     30    @file
     31    @brief Implementation of ConfigFileManager and its helper classes.
     32*/
     33
    2934#include "ConfigFileManager.h"
    3035
     
    4348    // ConfigFileEntryValue //
    4449    //////////////////////////
    45 
     50    /**
     51        @brief Updates the string that will be stored in the file after one of it's components (name, value, comment) has changed.
     52    */
    4653    void ConfigFileEntryValue::update()
    4754    {
     
    6370    // ConfigFileEntryVectorValue //
    6471    ////////////////////////////////
     72    /**
     73        @brief Updates the string that will be stored in the file after one of it's components (name, value, index, comment) has changed.
     74    */
    6575    void ConfigFileEntryVectorValue::update()
    6676    {
     
    7383    // ConfigFileSection //
    7484    ///////////////////////
     85    /**
     86        @brief Destructor: Deletes all entries.
     87    */
    7588    ConfigFileSection::~ConfigFileSection()
    7689    {
     
    7992    }
    8093
     94    /**
     95        @brief Deletes all elements of a config vector if their index is greater or equal to @a startindex.
     96
     97        @param name         The name of the vector
     98        @param startindex   The index of the first element that will be deleted
     99    */
    81100    void ConfigFileSection::deleteVectorEntries(const std::string& name, unsigned int startindex)
    82101    {
     
    95114    }
    96115
     116    /**
     117        @brief Returns the size of a config vector.
     118        @param name     The name of the vector
     119    */
    97120    unsigned int ConfigFileSection::getVectorSize(const std::string& name) const
    98121    {
     
    108131    }
    109132
     133    /**
     134        @brief Returns the title and comment of the section as it will be stored in the file.
     135    */
    110136    std::string ConfigFileSection::getFileEntry() const
    111137    {
     
    116142    }
    117143
     144    /**
     145        @brief Returns the entry with given name (or NULL if it doesn't exist).
     146
     147        @param name     The name of the entry
     148    */
    118149    ConfigFileEntry* ConfigFileSection::getEntry(const std::string& name) const
    119150    {
     
    126157    }
    127158
     159    /**
     160        @brief Returns the entry of a vector element with given name and index (or NULL if it doesn't exist).
     161
     162        @param name     The name of the vector
     163        @param index    The index of the element in the vector
     164    */
    128165    ConfigFileEntry* ConfigFileSection::getEntry(const std::string& name, unsigned int index) const
    129166    {
     
    136173    }
    137174
     175    /**
     176        @brief Returns the iterator to the entry with given name. If the entry doesn't exist, it is created using the fallback value.
     177
     178        @param name     The name of the entry
     179        @param fallback The value that will be used if the entry doesn't exist
     180        @param bString  If true, the value is treated as string which means some special treatment of special characters.
     181    */
    138182    std::list<ConfigFileEntry*>::iterator ConfigFileSection::getOrCreateEntryIterator(const std::string& name, const std::string& fallback, bool bString)
    139183    {
     
    152196    }
    153197
     198    /**
     199        @brief Returns the iterator to the entry of a vector element with given name and index. If the entry doesn't exist, it is created using the fallback value.
     200
     201        @param name     The name of the vector
     202        @param index    The index of the element in the vector
     203        @param fallback The value that will be used if the entry doesn't exist
     204        @param bString  If true, the value is treated as string which means some special treatment of special characters.
     205    */
    154206    std::list<ConfigFileEntry*>::iterator ConfigFileSection::getOrCreateEntryIterator(const std::string& name, unsigned int index, const std::string& fallback, bool bString)
    155207    {
     
    178230    const char* ConfigFile::DEFAULT_CONFIG_FOLDER = "defaultConfig";
    179231
     232    /**
     233        @brief Constructor: Initializes the config file.
     234        @param filename The file-name of this config file
     235        @param bCopyFallbackFile If true, the default config file is copied into the config-directory before loading the file
     236    */
    180237    ConfigFile::ConfigFile(const std::string& filename, bool bCopyFallbackFile)
    181238        : filename_(filename)
     
    185242    }
    186243
     244    /**
     245        @brief Destructor: Deletes all sections and entries.
     246    */
    187247    ConfigFile::~ConfigFile()
    188248    {
     
    190250    }
    191251
     252    /**
     253        @brief Loads the config file from the hard-disk and reads the sections and their values.
     254    */
    192255    void ConfigFile::load()
    193256    {
     
    318381    }
    319382
     383    /**
     384        @brief Writes the sections and values to the hard-disk.
     385    */
    320386    void ConfigFile::save() const
    321387    {
     
    323389    }
    324390
     391    /**
     392        @brief Writes the sections and values to a given file on the hard-disk.
     393    */
    325394    void ConfigFile::saveAs(const std::string& filename) const
    326395    {
     
    354423    }
    355424
     425    /**
     426        @brief Deletes all sections (which again delete all their values) and clears the list of sections.
     427    */
    356428    void ConfigFile::clear()
    357429    {
     
    361433    }
    362434
    363     const std::string& ConfigFile::getOrCreateValue(const std::string& section, const std::string& name, const std::string& fallback, bool bString)
    364     {
    365         const std::string& output = this->getOrCreateSection(section)->getOrCreateValue(name, fallback, bString);
    366         this->saveIfUpdated();
    367         return output;
    368     }
    369 
    370     const std::string& ConfigFile::getOrCreateValue(const std::string& section, const std::string& name, unsigned int index, const std::string& fallback, bool bString)
    371     {
    372         const std::string& output = this->getOrCreateSection(section)->getOrCreateValue(name, index, fallback, bString);
    373         this->saveIfUpdated();
    374         return output;
    375     }
    376 
     435    /**
     436        @brief Deletes all elements of a config vector if their index is greater or equal to @a startindex.
     437
     438        @param section      The name of the section
     439        @param name         The name of the vector
     440        @param startindex   The index of the first element that will be deleted
     441    */
    377442    void ConfigFile::deleteVectorEntries(const std::string& section, const std::string& name, unsigned int startindex)
    378443    {
     
    384449    }
    385450
     451    /**
     452        @brief Returns a pointer to the section with given name (or NULL if the section doesn't exist).
     453    */
    386454    ConfigFileSection* ConfigFile::getSection(const std::string& section) const
    387455    {
     
    392460    }
    393461
     462    /**
     463        @brief Returns a pointer to the section with given name. If it doesn't exist, the section is created.
     464    */
    394465    ConfigFileSection* ConfigFile::getOrCreateSection(const std::string& section)
    395466    {
     
    403474    }
    404475
     476    /**
     477        @brief Saves the config file if it was updated (or if any of its sections were updated).
     478    */
    405479    void ConfigFile::saveIfUpdated()
    406480    {
     
    442516    SettingsConfigFile* SettingsConfigFile::singletonPtr_s = 0;
    443517
     518    /**
     519        @brief Constructor: Activates the console commands.
     520    */
    444521    SettingsConfigFile::SettingsConfigFile(const std::string& filename)
    445522        : ConfigFile(filename)
     
    452529    }
    453530
     531    /**
     532        @brief Destructor: Deactivates the console commands.
     533    */
    454534    SettingsConfigFile::~SettingsConfigFile()
    455535    {
     
    461541    }
    462542
     543    /**
     544        @brief Loads the config file and updates the @ref ConfigValueContainer "config value containers".
     545    */
    463546    void SettingsConfigFile::load()
    464547    {
     
    467550    }
    468551
     552    /**
     553        @brief Changes the file-name.
     554    */
    469555    void SettingsConfigFile::setFilename(const std::string& filename)
    470556    {
     
    472558    }
    473559
     560    /**
     561        @brief Registers a new @ref ConfigValueContainer "config value container".
     562    */
    474563    void SettingsConfigFile::addConfigValueContainer(ConfigValueContainer* container)
    475564    {
     
    481570    }
    482571
     572    /**
     573        @brief Unregisters a @ref ConfigValueContainer "config value container".
     574    */
    483575    void SettingsConfigFile::removeConfigValueContainer(ConfigValueContainer* container)
    484576    {
     
    500592    }
    501593
     594    /**
     595        @brief Updates all @ref ConfigValueContainer "config value containers".
     596    */
    502597    void SettingsConfigFile::updateConfigValues()
    503598    {
     599        // todo: can this be done more efficiently? looks like some identifiers will be updated multiple times.
     600
    504601        for (ContainerMap::const_iterator it = this->containers_.begin(); it != this->containers_.end(); ++it)
    505602        {
     
    509606    }
    510607
     608    /**
     609        @brief Removes entries and sections from the file that don't exist anymore (i.e. if there's no corresponding @ref ConfigValueContainer "config value container").
     610        @param bCleanComments If true, comments are also removed from the file
     611    */
    511612    void SettingsConfigFile::clean(bool bCleanComments)
    512613    {
     
    558659    }
    559660
     661    /**
     662        @brief Console-command: Changes the value of an entry and stores it the file.
     663
     664        @param section  The section of the config value
     665        @param entry    The name of the config value
     666        @param value    The new value
     667    */
    560668    void SettingsConfigFile::config(const std::string& section, const std::string& entry, const std::string& value)
    561669    {
     
    564672    }
    565673
     674    /**
     675        @brief Console-command: Changes the value of an entry, but doesn't store it in the file (it's only a temporary change).
     676
     677        @param section  The section of the config value
     678        @param entry    The name of the config value
     679        @param value    The new value
     680    */
    566681    void SettingsConfigFile::tconfig(const std::string& section, const std::string& entry, const std::string& value)
    567682    {
     
    570685    }
    571686
     687    /**
     688        @brief Changes the value of an entry, depending on @a function, either by using "set" or "tset"
     689
     690        @param section  The section of the config value
     691        @param entry    The name of the config value
     692        @param value    The new value
     693        @param function The function ("set" or "tset") that will be used to change the value.
     694    */
    572695    bool SettingsConfigFile::configImpl(const std::string& section, const std::string& entry, const std::string& value, bool (ConfigValueContainer::*function)(const MultiType&))
    573696    {
     
    586709    }
    587710
     711    /**
     712        @brief Console-command: Returns the value of a given entry.
     713
     714        @param section  The section of the config value
     715        @param entry    The name of the config value
     716    */
    588717    std::string SettingsConfigFile::getConfig(const std::string& section, const std::string& entry)
    589718    {
     
    611740    ConfigFileManager* ConfigFileManager::singletonPtr_s = 0;
    612741
     742    /// Constructor: Initializes the array of config files with NULL.
    613743    ConfigFileManager::ConfigFileManager()
    614744    {
     
    616746    }
    617747
     748    /// Destructor: Deletes the config files.
    618749    ConfigFileManager::~ConfigFileManager()
    619750    {
     
    623754    }
    624755
     756    /// Defines the file-name for the config file of a given type (settings, calibration, etc.).
    625757    void ConfigFileManager::setFilename(ConfigFileType::Value type, const std::string& filename)
    626758    {
  • code/trunk/src/libraries/core/ConfigFileManager.h

    r7284 r7401  
    2727 */
    2828
     29/**
     30    @file
     31    @ingroup Config ConfigFile
     32    @brief Declaration of ConfigFileManager and its helper classes, used to load and save config files.
     33*/
     34
    2935#ifndef _ConfigFileManager_H__
    3036#define _ConfigFileManager_H__
     
    4652    // ConfigFileEntry //
    4753    /////////////////////
     54    /**
     55        @brief This class represents an entry in the config file.
     56
     57        This class is pure virtual. Use one of the derived classes to define the type of the entry.
     58    */
    4859    class _CoreExport ConfigFileEntry
    4960    {
    5061        public:
     62            /// Destructor
    5163            virtual ~ConfigFileEntry() {};
     64
     65            /// Changes the value of the entry.
    5266            virtual void setValue(const std::string& value) = 0;
     67            /// Returns the value of the entry.
    5368            virtual const std::string& getValue() const = 0;
     69
     70            /// Returns the name of the entry
    5471            virtual const std::string& getName() const = 0;
     72
     73            /// Changes the comment of the entry (will be placed after the value)
    5574            virtual void setComment(const std::string& comment) = 0;
     75
     76            /// Returns the index of the entry in a vector (used only if it is a vector)
    5677            virtual unsigned int getIndex() const { return 0; }
     78
     79            /// Defines if this entry is treated as string which means some special treatment of special characters.
    5780            virtual void setString(bool bString) = 0;
     81
     82            /// Returns the line as it will be stored in the config file.
    5883            virtual const std::string& getFileEntry() const = 0;
    5984    };
     
    6388    // ConfigFileEntryValue //
    6489    //////////////////////////
     90    /**
     91        @brief This class represents a normal value in the config file.
     92    */
    6593    class _CoreExport ConfigFileEntryValue : public ConfigFileEntry
    6694    {
    6795        public:
     96            /**
     97                @brief Constructor: Initializes the entry.
     98
     99                @param name                 The name of the entry
     100                @param value                The value of the entry
     101                @param bString              If true, the value is treated as string which means some special treatment of special characters.
     102                @param additionalComment    An optional comment that will be placed behind the value in the config file
     103            */
    68104            inline ConfigFileEntryValue(const std::string& name, const std::string& value = "", bool bString = false, const std::string& additionalComment = "")
    69105                : name_(name)
     
    73109                { this->update(); }
    74110
     111            /// Destructor
    75112            inline virtual ~ConfigFileEntryValue() {}
    76113
     
    92129                { return this->fileEntry_; }
    93130
     131            /// Returns the "key" of the value (in this case it's just the name of the entry, but for vectors it's different)
    94132            inline virtual const std::string& getKeyString() const
    95133                { return this->name_; }
     
    98136            virtual void update();
    99137
    100             const std::string name_;
    101             std::string value_;
    102             std::string additionalComment_;
    103             std::string fileEntry_;
    104             bool bString_;
     138            const std::string name_;            ///< The name of the value
     139            std::string value_;                 ///< The value
     140            std::string additionalComment_;     ///< The additional comment
     141            std::string fileEntry_;             ///< The string as it will be stored in the config file
     142            bool bString_;                      ///< If true, the value is treated as string which means some special treatment of special characters.
    105143    };
    106144
     
    109147    // ConfigFileEntryVectorValue //
    110148    ////////////////////////////////
     149    /**
     150        @brief Subclass of ConfigFileEntryValue, represents an element of a vector.
     151    */
    111152    class _CoreExport ConfigFileEntryVectorValue : public ConfigFileEntryValue
    112153    {
    113154        public:
     155            /**
     156                @brief Constructor: Initializes the entry.
     157
     158                @param name                 The name of the vector
     159                @param index                The index of the element in the vector
     160                @param value                The value of the element
     161                @param bString              If true, the value is treated as string which means some special treatment of special characters.
     162                @param additionalComment    An optional comment that will be placed behind the value in the config file
     163            */
    114164            inline ConfigFileEntryVectorValue(const std::string& name, unsigned int index, const std::string& value = "", bool bString = false, const std::string& additionalComment = "")
    115165                : ConfigFileEntryValue(name, value, bString, additionalComment)
     
    117167                { this->update(); /*No virtual calls in base class ctor*/ }
    118168
     169            /// Destructor
    119170            inline ~ConfigFileEntryVectorValue() {}
    120171
     
    122173                { return this->index_; }
    123174
     175            /// Returns the "key" of the value (the name of the vector plus the index of the element)
    124176            inline const std::string& getKeyString() const
    125177                { return this->keyString_; }
     
    128180            void update();
    129181
    130             unsigned int index_;
    131             std::string keyString_;
     182            unsigned int index_;        ///< The index of the element in the vector
     183            std::string keyString_;     ///< The full name of the entry (the name of the vector plus the index of the element)
    132184    };
    133185
     
    136188    // ConfigFileEntryComment //
    137189    ////////////////////////////
     190    /**
     191        @brief This class represents a line in the config file which contains only a comment.
     192    */
    138193    class _CoreExport ConfigFileEntryComment : public ConfigFileEntry
    139194    {
    140195        public:
     196            /// Constructor: Initializes the object.
    141197            inline ConfigFileEntryComment(const std::string& comment) : comment_(comment) {}
     198
     199            /// Destructor
    142200            inline virtual ~ConfigFileEntryComment() {}
    143201
     
    159217                { return this->comment_; }
    160218
    161             inline virtual const std::string& getKeyString() const
    162                 { return BLANKSTRING; }
    163 
    164219        private:
    165             std::string comment_;
     220            std::string comment_;   ///< The comment
    166221    };
    167222
     
    170225    // ConfigFileSection //
    171226    ///////////////////////
     227    /**
     228        @brief Represents a section in a config file.
     229
     230        A section has a name and a list of config values.
     231    */
    172232    class _CoreExport ConfigFileSection
    173233    {
     
    176236
    177237        public:
     238            /**
     239                @brief Constructor: Initializes the section.
     240
     241                @param name The name of the section
     242                @param additionalComment An additional comment placed after the title of the section in the config file
     243            */
    178244            inline ConfigFileSection(const std::string& name, const std::string& additionalComment = "")
    179245                : name_(name)
     
    183249            ~ConfigFileSection();
    184250
     251            /// Returns the name of the section.
    185252            inline const std::string& getName() const
    186253                { return this->name_; }
    187254
     255            /// Changes the comment which is placed after the title of the section in the config file.
    188256            inline void setComment(const std::string& comment)
    189257                { this->additionalComment_ = comment; }
    190258
     259            /**
     260                @brief Stores a value in the section. If the entry doesn't exist, it's created.
     261
     262                @param name     The name of the entry
     263                @param value    The new value
     264                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     265            */
    191266            inline void setValue(const std::string& name, const std::string& value, bool bString)
    192267                { this->getOrCreateEntry(name, value, bString)->setValue(value); }
     268            /**
     269                @brief Returns the value of a given entry in the section. Returns a blank string if the value doesn't exist.
     270
     271                @param name     The name of the entry
     272                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     273            */
    193274            inline const std::string& getValue(const std::string& name, bool bString)
    194275            {
     
    196277                if (entry)
    197278                {
    198                     entry->setString(bString);
     279                    entry->setString(bString);  // if the entry was loaded from the config file, we have to tell it if it's a string
    199280                    return entry->getValue();
    200281                }
    201282                return BLANKSTRING;
    202283            }
     284            /**
     285                @brief Returns the value of a given entry in the section. If it doesn't exist, the entry is created using the fallback value.
     286
     287                @param name     The name of the entry
     288                @param fallback The value that will be used if the entry doesn't exist
     289                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     290            */
    203291            inline const std::string& getOrCreateValue(const std::string& name, const std::string& fallback, bool bString)
    204292                { return this->getOrCreateEntry(name, fallback, bString)->getValue(); }
    205293
     294            /**
     295                @brief Stores the value of an element of a vector in the section. If the entry doesn't exist, it's created.
     296
     297                @param name     The name of the vector
     298                @param index    The index of the element in the vector
     299                @param value    The new value
     300                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     301            */
    206302            inline void setValue(const std::string& name, unsigned int index, const std::string& value, bool bString)
    207303                { this->getOrCreateEntry(name, index, value, bString)->setValue(value); }
     304            /**
     305                @brief Returns the value of a given element of a vector in the section. Returns a blank string if the value doesn't exist.
     306
     307                @param name     The name of the vector
     308                @param index    The index of the element in the vector
     309                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     310            */
    208311            inline const std::string& getValue(const std::string& name, unsigned int index, bool bString)
    209312            {
     
    211314                if (entry)
    212315                {
    213                     entry->setString(bString);
     316                    entry->setString(bString);  // if the entry was loaded from the config file, we have to tell it if it's a string
    214317                    return entry->getValue();
    215318                }
    216319                return BLANKSTRING;
    217320            }
     321            /**
     322                @brief Returns the value of a given element of a vector in the section. If it doesn't exist, the entry is created using the fallback value.
     323
     324                @param name     The name of the vector
     325                @param index    The index of the element in the vector
     326                @param fallback The value that will be used if the entry doesn't exist
     327                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     328            */
    218329            inline const std::string& getOrCreateValue(const std::string& name, unsigned int index, const std::string& fallback, bool bString)
    219330                { return this->getOrCreateEntry(name, index, fallback, bString)->getValue(); }
     
    225336
    226337        private:
     338            /// Returns the list of entries in this section.
    227339            std::list<ConfigFileEntry*>& getEntries()
    228340                { return this->entries_; }
     341            /// Returns the begin-iterator of the list of entries in this section.
    229342            std::list<ConfigFileEntry*>::const_iterator getEntriesBegin() const
    230343                { return this->entries_.begin(); }
     344            /// Returns the end-iterator of the list of entries in this section.
    231345            std::list<ConfigFileEntry*>::const_iterator getEntriesEnd() const
    232346                { return this->entries_.end(); }
     
    236350
    237351            ConfigFileEntry* getEntry(const std::string& name) const;
     352            /**
     353                @brief Returns the entry with given name. If it doesn't exist, the entry is created using the fallback value.
     354
     355                @param name     The name of the entry
     356                @param fallback The value that will be used if the entry doesn't exist
     357                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     358            */
    238359            inline ConfigFileEntry* getOrCreateEntry(const std::string& name, const std::string& fallback, bool bString)
    239360                { return (*this->getOrCreateEntryIterator(name, fallback, bString)); }
     361
    240362            ConfigFileEntry* getEntry(const std::string& name, unsigned int index) const;
     363            /**
     364                @brief Returns the entry that contains an element of a vector with given name. If it doesn't exist, the entry is created using the fallback value.
     365
     366                @param name     The name of the entry
     367                @param index    The index of the element in the vector
     368                @param fallback The value that will be used if the entry doesn't exist
     369                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     370            */
    241371            inline ConfigFileEntry* getOrCreateEntry(const std::string& name, unsigned int index, const std::string& fallback, bool bString)
    242372                { return (*this->getOrCreateEntryIterator(name, index, fallback, bString)); }
    243373
    244             std::string name_;
    245             std::string additionalComment_;
    246             std::list<ConfigFileEntry*> entries_;
    247             bool bUpdated_;
     374            std::string name_;                      ///< The name of the section
     375            std::string additionalComment_;         ///< The additional comment which is placed after the title of the section in the config file
     376            std::list<ConfigFileEntry*> entries_;   ///< The list of entries in this section
     377            bool bUpdated_;                         ///< True if an entry is created
    248378    };
    249379
     
    252382    // ConfigFile //
    253383    ////////////////
     384    /**
     385        @brief This class represents a config file, which is stored on the hard-disk and contains config values in different sections.
     386
     387        It provides an interface to manipulate the sections and values.
     388    */
    254389    class _CoreExport ConfigFile
    255390    {
     
    263398            virtual void clear();
    264399
     400            /// Returns the file-name of this config file
    265401            inline const std::string& getFilename()
    266402                { return this->filename_; }
    267403
     404            /**
     405                @brief Stores a value in the config file. If the entry or its section doesn't exist, it's created.
     406
     407                @param section  The name of the section
     408                @param name     The name of the entry
     409                @param value    The new value
     410                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     411            */
    268412            inline void setValue(const std::string& section, const std::string& name, const std::string& value, bool bString)
    269413            {
     
    271415                this->save();
    272416            }
     417            /**
     418                @brief Returns the value of a given entry in the config file. Returns a blank string if the value doesn't exist.
     419
     420                @param section  The name of the section
     421                @param name     The name of the entry
     422                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     423            */
    273424            inline const std::string& getValue(const std::string& section, const std::string& name, bool bString)
    274425            {
     
    276427                return (sectionPtr ? sectionPtr->getValue(name, bString) : BLANKSTRING);
    277428            }
    278             const std::string& getOrCreateValue(const std::string& section, const std::string& name, const std::string& fallback, bool bString);
    279 
     429            /**
     430                @brief Returns the value of a given entry in the config file. If it doesn't exist, the entry is created using the fallback value.
     431
     432                @param section  The name of the section
     433                @param name     The name of the entry
     434                @param fallback The value that will be used if the entry doesn't exist
     435                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     436            */
     437            inline const std::string& getOrCreateValue(const std::string& section, const std::string& name, const std::string& fallback, bool bString)
     438            {
     439                const std::string& output = this->getOrCreateSection(section)->getOrCreateValue(name, fallback, bString);
     440                this->saveIfUpdated();
     441                return output;
     442            }
     443
     444            /**
     445                @brief Stores the value of an element of a vector in the config file. If the entry or its section doesn't exist, it's created.
     446
     447                @param section  The name of the section
     448                @param name     The name of the vector
     449                @param index    The index of the element in the vector
     450                @param value    The new value
     451                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     452            */
    280453            inline void setValue(const std::string& section, const std::string& name, unsigned int index, const std::string& value, bool bString)
    281454            {
     
    283456                this->save();
    284457            }
     458            /**
     459                @brief Returns the value of a given element of a vector in the config file. Returns a blank string if the value doesn't exist.
     460
     461                @param section  The name of the section
     462                @param name     The name of the vector
     463                @param index    The index of the element in the vector
     464                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     465            */
    285466            inline const std::string& getValue(const std::string& section, const std::string& name, unsigned int index, bool bString)
    286467            {
     
    288469                return (sectionPtr ? sectionPtr->getValue(name, index, bString) : BLANKSTRING);
    289470            }
    290             const std::string& getOrCreateValue(const std::string& section, const std::string& name, unsigned int index, const std::string& fallback, bool bString);
     471            /**
     472                @brief Returns the value of a given element of a vector in the config file. If it doesn't exist, the entry is created using the fallback value.
     473
     474                @param section  The name of the section
     475                @param name     The name of the vector
     476                @param index    The index of the element in the vector
     477                @param fallback The value that will be used if the entry doesn't exist
     478                @param bString  If true, the value is treated as string which means some special treatment of special characters.
     479            */
     480            const std::string& getOrCreateValue(const std::string& section, const std::string& name, unsigned int index, const std::string& fallback, bool bString)
     481            {
     482                const std::string& output = this->getOrCreateSection(section)->getOrCreateValue(name, index, fallback, bString);
     483                this->saveIfUpdated();
     484                return output;
     485            }
    291486
    292487            void deleteVectorEntries(const std::string& section, const std::string& name, unsigned int startindex = 0);
     488            /**
     489                @brief Returns the size of a config vector.
     490                @param section  The section of the vector
     491                @param name     The name of the vector
     492            */
    293493            inline unsigned int getVectorSize(const std::string& section, const std::string& name) const
    294494            {
     
    297497            }
    298498
    299             static const char* DEFAULT_CONFIG_FOLDER;
     499            static const char* DEFAULT_CONFIG_FOLDER;   ///< The folder where the default config files will be stored
    300500
    301501        protected:
     
    303503            ConfigFileSection* getOrCreateSection(const std::string& section);
    304504
    305             std::list<ConfigFileSection*> sections_;
     505            std::list<ConfigFileSection*> sections_;    ///< A list of sections in this config file
    306506
    307507        private:
    308508            void saveIfUpdated();
    309             const std::string filename_;
    310             const bool bCopyFallbackFile_;
    311             bool bUpdated_;
     509
     510            const std::string filename_;                ///< The filename of this config file
     511            const bool bCopyFallbackFile_;              ///< If true, the default config file is copied into the config-directory before loading the file
     512            bool bUpdated_;                             ///< Becomes true if a section is added
    312513    };
    313514
     
    316517    // SettingsConfigFile //
    317518    ////////////////////////
     519    /**
     520        @brief Child class of ConfigFile, used to store the settings of the game.
     521
     522        In addition to ConfigFile, this class provides an interface to manipulate the settings
     523        with console commands and to cache entries in instances of ConfigValueContainer.
     524
     525        SettingsConfigFile is a Singleton, meaning there's only one instance of this class
     526        (and thus only one config file that stores settings).
     527    */
    318528    class _CoreExport SettingsConfigFile // tolua_export
    319529        : public ConfigFile, public Singleton<SettingsConfigFile>
     
    338548            void removeConfigValueContainer(ConfigValueContainer* container);
    339549
     550            /// Returns a set containing the names of all sections in this config file.
    340551            inline const std::set<std::string>& getSectionNames()
    341552                { return this->sectionNames_; }
     553            /// Returns the lower-bound-iterator of the @ref ConfigValueContainer "config value containers" for the given section.
    342554            inline ContainerMap::const_iterator getContainerLowerBound(const std::string section)
    343555                { return this->containers_.lower_bound(section); }
     556            /// Returns the upper-bound-iterator of the @ref ConfigValueContainer "config value containers" for the given section.
    344557            inline ContainerMap::const_iterator getContainerUpperBound(const std::string section)
    345558                { return this->containers_.upper_bound(section); }
     
    351564            bool configImpl(const std::string& section, const std::string& entry, const std::string& value, bool (ConfigValueContainer::*function)(const MultiType&));
    352565
    353             ContainerMap containers_;
    354             std::set<std::string> sectionNames_;
    355             static SettingsConfigFile* singletonPtr_s;
     566            ContainerMap containers_;                   ///< Stores all @ref ConfigValueContainer "config value containers"
     567            std::set<std::string> sectionNames_;        ///< Stores all section names
     568            static SettingsConfigFile* singletonPtr_s;  ///< The singleton pointer
    356569    }; // tolua_export
    357570
     
    360573    // ConfigFileManager //
    361574    ///////////////////////
     575    /**
     576        @brief Manages the different config files (settings, calibration, etc). Implemented as Singleton.
     577    */
    362578    class _CoreExport ConfigFileManager : public Singleton<ConfigFileManager>
    363579    {
     
    369585            void setFilename(ConfigFileType::Value type, const std::string& filename);
    370586
     587            /// Returns the config file of a given type (settings, calibration, etc.)
    371588            inline ConfigFile* getConfigFile(ConfigFileType::Value type)
    372589            {
     
    376593
    377594        private:
    378             ConfigFileManager(const ConfigFileManager&);
    379 
    380             boost::array<ConfigFile*, 3> configFiles_;
    381             static ConfigFileManager* singletonPtr_s;
     595            ConfigFileManager(const ConfigFileManager&);    ///< Copy-constructor: not implemented
     596
     597            boost::array<ConfigFile*, 3> configFiles_;      ///< Stores the config files for each type in an array (must have the same size like ConfigFileType::Value)
     598            static ConfigFileManager* singletonPtr_s;       ///< Stores the singleton-pointer
    382599    };
    383600} // tolua_export
  • code/trunk/src/libraries/core/ConfigValueContainer.h

    r6536 r7401  
    2929/**
    3030    @file
    31     @brief Definition of the ConfigValueContainer class.
     31    @ingroup Config ConfigFile
     32    @brief Declaration of the ConfigValueContainer class, caches a config-value.
    3233
    3334    The ConfigValueContainer class contains all needed information about a configurable variable:
     
    7879
    7980
    80     //! The ConfigValuecontainer contains all needed information about a configurable variable.
    8181    /**
     82        @brief The ConfigValuecontainer contains all needed information about a configurable variable.
     83
    8284        The ConfigValueContainer class contains all needed information about a configurable variable:
    8385         - the name of the variable
     
    117119                @param type The type of the corresponding config-file
    118120                @param identifier The identifier of the class the variable belongs to
     121                @param sectionname Name of the section the configValue should be put in.
    119122                @param varname The name of the variable
    120123                @param defvalue The default-value
     124                @param value Only needed do determine the right type.
    121125            */
    122126            template <class D, class V>
     
    213217            }
    214218
    215             /** @brief Returns the name of this container. */
     219            /// Returns the name of this container.
    216220            inline const std::string& getName() const
    217221                { return this->varname_; }
    218             /** @brief Returns the name of the section this config value is in. */
     222            /// Returns the name of the section this config value is in.
    219223            inline const std::string& getSectionName() const
    220224                { return this->sectionname_; }
    221             /** @brief Returns the associated identifier (can be NULL). */
     225            /// Returns the associated identifier (can be NULL).
    222226            inline Identifier* getIdentifier() const
    223227                { return this->identifier_; }
    224             /** @brief Returns true if this config-value is a vector */
     228            /// Returns true if this config-value is a vector.
    225229            inline bool isVector() const
    226230                { return this->bIsVector_; }
    227             /** @brief Returns the vectors size (or zero if it's not a vector). */
     231            /// Returns the vectors size (or zero if it's not a vector).
    228232            inline unsigned int getVectorSize() const
    229233                { return this->valueVector_.size(); }
     
    265269            void update();
    266270
    267             /** @brief Converts the config-value to a string. @return The string */
     271            /// Converts the config-value to a string.
    268272            inline std::string toString() const
    269273                { return this->value_; }
    270             /** @brief Returns the typename of the assigned config-value. @return The typename */
     274            /// Returns the typename of the assigned config-value.
    271275            inline std::string getTypename() const
    272276                { return this->value_.getTypename(); }
  • code/trunk/src/libraries/core/ConfigValueIncludes.h

    r7166 r7401  
    2828
    2929/**
    30 @file
    31 @brief
    32     Definition of macros and functions for config-values.
     30    @defgroup ConfigFile Config file
     31    @ingroup Config
     32*/
     33
     34/**
     35    @file
     36    @ingroup Config ConfigFile
     37    @brief Definition of macros and functions for config-values.
     38
     39    An example of how to use SetConfigValue():
     40
     41    Definition of a class in the header-file:
     42    @code
     43    class MyClass : public BaseObject
     44    {
     45        public:
     46            MyClass();              // Constructor
     47            void setConfigValues(); // Inherited function
     48
     49            const std::string& getName()
     50                { return this->name_; }
     51
     52            float getVersion()
     53                { return this->version_; }
     54
     55        private:
     56            std::string name_;
     57            float version_;
     58    };
     59    @endcode
     60
     61    Implementation of the class source-file:
     62    @code
     63    MyClass::MyClass()
     64    {
     65        // Macro-call to create an Identifier
     66        RegisterObject(MyClass);
     67
     68        // Function-call to assign the config-values to the new object
     69        this->setConfigValues();
     70    }
     71
     72    void MyClass::setConfigValues()
     73    {
     74        SetConfigValue(name_, "Orxonox").description("The name of the game");
     75        SetConfigValue(version_, "1.0").description("The version-number");
     76    }
     77    @endcode
     78
     79    Extract of orxonox.ini:
     80    @code
     81    [MyClass]
     82    name_ = "Orxonox"
     83    version_ = 1.1 // We have changed this value from 1.0 to 1.1
     84    @endcode
     85
     86    Some other code:
     87    @code
     88    MyObject orxonoxobject;
     89    std::cout << "Name:    " << orxonoxobject.getName() << std::endl;
     90    std::cout << "Version: " << orxonoxobject.getVersion() << std::endl;
     91    @endcode
     92
     93    Output:
     94    @code
     95    Name:    Orxonox
     96    Version: 1.1
     97    @endcode
    3398*/
    3499
  • code/trunk/src/libraries/core/Core.cc

    r7284 r7401  
    3737
    3838#include <cassert>
     39#include <fstream>
    3940#include <vector>
    4041
     
    171172        // Create singletons that always exist (in other libraries)
    172173        this->rootScope_.reset(new Scope<ScopeID::Root>());
     174
     175        // Generate documentation instead of normal run?
     176        std::string docFilename;
     177        CommandLineParser::getValue("generateDoc", &docFilename);
     178        if (!docFilename.empty())
     179        {
     180            std::ofstream docFile(docFilename.c_str());
     181            if (docFile.is_open())
     182            {
     183                CommandLineParser::generateDoc(docFile);
     184                docFile.close();
     185            }
     186            else
     187                COUT(0) << "Error: Could not open file for documentation writing" << endl;
     188        }
    173189    }
    174190
  • code/trunk/src/libraries/core/Core.h

    r7266 r7401  
    2828 */
    2929
     30/**
     31    @defgroup CoreGame Core and Game
     32    @ingroup Management
     33*/
     34
     35/**
     36    @file
     37    @ingroup Management CoreGame
     38    @brief Declaration of the Core singleton which is used to configure the program basics.
     39*/
     40
    3041#ifndef _Core_H__
    3142#define _Core_H__
     
    3344#include "CorePrereqs.h"
    3445
    35 #include <cassert>
    3646#include <string>
    3747#include <boost/scoped_ptr.hpp>
  • code/trunk/src/libraries/core/CoreIncludes.h

    r6423 r7401  
    2828
    2929/**
     30    @defgroup Factory RegisterObject() and CreateFactory()
     31    @ingroup Object
     32*/
     33
     34/**
    3035    @file
    31     @brief Definition of macros for Identifiers
     36    @ingroup Object Factory
     37    @brief Defines several very important macros used to register objects, create factories, and to work with identifiers.
    3238
    33     Every class needs the RegisterObject(class) macro in its constructor. If the class is an interface
    34     or the BaseObject itself, it needs the macro RegisterRootObject(class) instead.
     39    Every class needs the @c RegisterObject(class) macro in its constructor. If the class is an interface
     40    or the @c BaseObject itself, it needs the macro @c RegisterRootObject(class) instead.
    3541
    36     To allow the object being created through the factory, use the CreateFactory(class) macro outside
    37     the of the class implementation, so it gets executed before main().
     42    To allow the object being created through the factory, use the @c CreateFactory(class) macro outside
     43    of the class implementation, so it gets executed statically before @c main(). This will at the same time
     44    register @a class in the class-hierarchy. If you don't want @a class to be loadable, but still
     45    register it, call @c CreateUnloadableFactory(class).
     46
     47    Example:
     48    @code
     49    // Create the factory for MyClass
     50    CreateFactory(MyClass);
     51
     52    // Constructor:
     53    MyClass::MyClass()
     54    {
     55        // Register the object in the Identifier of MyClass
     56        RegisterObject(MyClass);
     57    }
     58    @endcode
     59
     60    This file also defines a number of other useful macros, like, for example, @c Class(class) which
     61    returns the @ref orxonox::Identifier "Identifier" of @a class, or @c ClassByString("class") which
     62    returns the Identifier of a class with name @a "class".
     63
     64    Example:
     65    @code
     66    // Assigns the Identifier of MyClass
     67    Identifier* identifier = Class(MyClass);
     68    @endcode
     69    @code
     70    // Assigns the Identifier of a class named "MyClass"
     71    Identifier* identifier = ClassByString("MyClass");
     72    @endcode
    3873*/
    3974
     
    5186
    5287/**
    53     @brief Intern macro, containing the common parts of RegisterObject and RegisterRootObject.
     88    @brief Intern macro, containing the common parts of @c RegisterObject and @c RegisterRootObject.
    5489    @param ClassName The name of the class
    55     @param bRootClass True if the class is directly derived from OrxonoxClass
     90    @param bRootClass True if the class is directly derived from orxonox::OrxonoxClass
    5691*/
    5792#define InternRegisterObject(ClassName, bRootClass) \
     
    6297
    6398/**
    64     @brief RegisterObject - with and without debug output.
     99    @brief Registers a newly created object in the core. Has to be called at the beginning of the constructor of @a ClassName.
    65100    @param ClassName The name of the class
    66101*/
     
    69104
    70105/**
    71     @brief RegisterRootObject - with and without debug output.
     106    @brief Registers a newly created object in the core. Has to be called at the beginning of the constructor of @a ClassName.
    72107    @param ClassName The name of the class
     108
     109    In contrast to RegisterObject, this is used for classes that inherit directly from
     110    orxonox::OrxonoxClass, namely all interfaces and orxonox::BaseObject.
    73111*/
    74112#define RegisterRootObject(ClassName) \
     
    101139    /**
    102140        @brief Returns the Identifier with a given name.
    103         @param String The name of the class
     141        @param name The name of the class
    104142    */
    105143    inline Identifier* ClassByString(const std::string& name)
     
    110148    /**
    111149        @brief Returns the Identifier with a given lowercase name.
    112         @param String The lowercase name of the class
     150        @param name The lowercase name of the class
    113151    */
    114152    inline Identifier* ClassByLowercaseString(const std::string& name)
     
    119157    /**
    120158        @brief Returns the Identifier with a given network ID.
    121         @param networkID The network ID of the class
     159        @param id The network ID of the class
    122160    */
    123161    inline Identifier* ClassByID(uint32_t id)
     
    130168        @note This of course only works with OrxonoxClasses.
    131169              The only use is in conjunction with macros that don't know the class type.
    132         @param Pointer to an OrxonoxClass
     170        @param object Pointer to an OrxonoxClass
    133171    */
    134172    template <class T>
  • code/trunk/src/libraries/core/DynLib.h

    r6073 r7401  
    2929
    3030// 08/11/2009: Small adjustments for Orxonox by Fabian 'x3n' Landau
     31
     32/**
     33    @file
     34    @ingroup Management CoreGame
     35    @brief Declaration of DynLib which represents a dynamically loaded module.
     36*/
    3137
    3238#ifndef _Core_DynLib_H__
     
    6167namespace orxonox
    6268{
    63     /** Resource holding data about a dynamic library.
     69    /** %Resource holding data about a dynamic library.
    6470        @remarks
    6571            This class holds the data required to get symbols from
     
    6975        @since
    7076            27 January 2002
    71         @see
    72             Resource
    7377    */
    7478    class _CoreExport DynLib
  • code/trunk/src/libraries/core/DynLibManager.h

    r5738 r7401  
    3030// 08/11/2009: Small adjustments for Orxonox by Fabian 'x3n' Landau
    3131
     32/**
     33    @file
     34    @ingroup Management CoreGame
     35    @brief Declaration of DynLibManager, used to load modules at runtime.
     36*/
     37
    3238#ifndef _Core_DynLibManager_H__
    3339#define _Core_DynLibManager_H__
     
    5662
    5763        public:
    58             /** Default constructor.
    59                 @note
    60                     <br>Should never be called as the singleton is automatically
    61                     created during the creation of the Root object.
    62                 @see
    63                     Root::Root
     64            /**
     65            @brief
     66                Default constructor.
     67            @note
     68                Should never be called as the singleton is automatically
     69                created during the creation of the Root object.
     70            @see
     71                Root::Root
    6472            */
    6573            DynLibManager();
    6674
    67             /** Default destructor.
    68                 @see
    69                     Root::~Root
     75            /**
     76            @brief
     77                Default destructor.
     78            @see
     79                Root::~Root
    7080            */
    7181            virtual ~DynLibManager();
    7282
    73             /** Loads the passed library.
    74                 @param
    75                     filename The name of the library. The extension can be omitted
     83            /**
     84            @brief
     85                Loads the passed library.
     86            @param filename
     87                The name of the library. The extension can be omitted
    7688            */
    7789            DynLib* load(const std::string& filename);
    7890
    79             /** Unloads the passed library.
    80             @param
    81             filename The name of the library. The extension can be omitted
     91            /**
     92            @brief
     93                Unloads the passed library.
     94            @param lib
     95                A pointer to the library object
    8296            */
    8397            void unload(DynLib* lib);
  • code/trunk/src/libraries/core/Event.cc

    r7284 r7401  
    2626 *
    2727 */
     28
     29/**
     30    @file
     31    @brief Implementation of the classes Event and EventState.
     32*/
    2833
    2934#include "Event.h"
  • code/trunk/src/libraries/core/Event.h

    r7284 r7401  
    2727 */
    2828
     29/**
     30    @defgroup Event Events
     31    @ingroup Core
     32*/
     33
     34/**
     35    @file
     36    @ingroup Event
     37    @brief Declaration of the classes Event and EventState.
     38*/
     39
    2940#ifndef _Event_H__
    3041#define _Event_H__
     
    5465        An event state is a state of an object, which can be changed by events.
    5566        Event states are changed through functions. Possible functions headers for set event states are:
    56          - memoryless state: function()
    57          - boolean state:    function(bool state)
    58          - individual state: function(bool state, SomeClass originator)
     67         - memoryless state: <tt>function()</tt>
     68         - boolean state:    <tt>function(bool state)</tt>
     69         - individual state: <tt>function(bool state, SomeClass originator)</tt>
    5970
    6071        Note that SomeClass may be any class deriving from BaseObject. You will not receive events from originators of other classes.
    61         The actual class for SomeClass must be specified as the second argument of the XMLPortEventState macro.
     72        The actual class for SomeClass must be specified as the second argument of the XMLPortEventState() macro.
    6273
    6374        The this pointer of the affected object is hidden in the functors, because the events are processed in the BaseObject, but some
  • code/trunk/src/libraries/core/EventIncludes.h

    r7301 r7401  
    2626 *
    2727 */
     28
     29/**
     30    @file
     31    @ingroup Event
     32    @brief Definition of the XMLPortEventState() macro, as well as some more useful macros.
     33*/
    2834
    2935#ifndef _EventIncludes_H__
  • code/trunk/src/libraries/core/GUIManager.cc

    r7284 r7401  
    110110        After Lua setup tolua++-elements are linked to Lua-state to give Lua access to C++-code.
    111111        Finally initial Lua code is executed (maybe we can do this with the CEGUI startup script automatically).
    112     @param renderWindow
    113         Ogre's render window. Without this, the GUI cannot be displayed.
    114112    @return true if success, otherwise false
    115113    */
     
    237235    @param name
    238236        The name of the GUI
     237    @param bHidePrevious
     238        If true all displayed GUIs on the stack, that are below this GUI are hidden.
    239239
    240240        The function executes the Lua function with the same name in case the GUIManager is ready.
  • code/trunk/src/libraries/core/GUIManager.h

    r7163 r7401  
    2727 *
    2828 */
     29
     30/**
     31    @file
     32    @ingroup Graphics
     33*/
    2934
    3035#ifndef _GUIManager_H__
  • code/trunk/src/libraries/core/Game.h

    r7266 r7401  
    2929/**
    3030@file
     31@ingroup Management CoreGame
    3132@brief
    32     Declaration of Game Singleton.
     33    Declaration of Game Singleton which is responsible for running the game.
    3334 */
    3435
     
    5354
    5455/**
    55 @def
     56@brief
    5657    Adds a new GameState to the Game. The second parameter is the name as string
    5758    and every following paramter is a constructor argument (which is usually non existent)
  • code/trunk/src/libraries/core/GameMode.cc

    r5929 r7401  
    3333    bool GameMode::bShowsGraphics_s = false;
    3434    bool GameMode::bPlaysSound_s    = false;
    35     bool GameMode::bHasServer_s     = false;
     35    bool GameMode::bIsServer_s      = false;
    3636    bool GameMode::bIsClient_s      = false;
    3737    bool GameMode::bIsStandalone_s  = false;
  • code/trunk/src/libraries/core/GameMode.h

    r6417 r7401  
    2929/**
    3030    @file
    31     @brief Declaration of the GameMode class.
     31    @ingroup Management CoreGame
     32    @brief Declaration of the GameMode class which stores and returns the current mode of the game.
    3233*/
    3334
     
    4041namespace orxonox
    4142{
     43    /// Helper class, stores and returns the current mode of the game.
    4244    class _CoreExport GameMode
    4345    {
     
    4749        public:
    4850// tolua_begin
    49             static bool showsGraphics() { return bShowsGraphics_s; }
    50             static bool playsSound()    { return bPlaysSound_s; }
    51             static bool hasServer()     { return bHasServer_s; }
    52             static bool isClient()      { return bIsClient_s; }
    53             static bool isStandalone()  { return bIsStandalone_s; }
    54             static bool isMaster()      { return bIsMaster_s; }
     51            static bool showsGraphics() { return bShowsGraphics_s; }    ///< Returns true if the game shows graphics, false if it is in text-console mode
     52            static bool playsSound()    { return bPlaysSound_s; }       ///< Returns true if the game is able to play sounds
     53            static bool isServer()      { return bIsServer_s; }         ///< Returns true if we're currently a server (online)
     54            static bool isClient()      { return bIsClient_s; }         ///< Returns true if we're currently a client (online)
     55            static bool isStandalone()  { return bIsStandalone_s; }     ///< Returns true if we're in standalone mode (offline)
     56            static bool isMaster()      { return bIsMaster_s; }         ///< Returns true if we're in control of the game (either standalone or server)
    5557// tolua_end
    5658
    57             static void setPlaysSound   (bool val) { bPlaysSound_s    = val; }
    58             static void setHasServer    (bool val) { bHasServer_s     = val; updateIsMaster(); }
    59             static void setIsClient     (bool val) { bIsClient_s      = val; updateIsMaster(); }
    60             static void setIsStandalone (bool val) { bIsStandalone_s  = val; updateIsMaster(); }
     59            static void setPlaysSound   (bool val) { bPlaysSound_s    = val; }                      ///< Defines if the game can play sounds
     60            static void setIsServer     (bool val) { bIsServer_s      = val; updateIsMaster(); }    ///< Defines if the program is in server mode (online)
     61            static void setIsClient     (bool val) { bIsClient_s      = val; updateIsMaster(); }    ///< Defines if the program is in client mode (online)
     62            static void setIsStandalone (bool val) { bIsStandalone_s  = val; updateIsMaster(); }    ///< Defines if the program is in standalone mode (offline)
    6163
    6264        private:
     
    6567            ~GameMode();
    6668
     69            /// Checks if we're in control of the game (either standalone or server).
    6770            static void updateIsMaster()
    6871            {
    69                 bIsMaster_s = (bHasServer_s || bIsStandalone_s);
     72                bIsMaster_s = (bIsServer_s || bIsStandalone_s);
    7073            }
    7174
    7275            static bool bShowsGraphics_s;                   //!< global variable that tells whether to show graphics
    7376            static bool bPlaysSound_s;                      //!< global variable that tells whether to sound works
    74             static bool bHasServer_s;                       //!< global variable that tells whether this is a server
    75             static bool bIsClient_s;
    76             static bool bIsStandalone_s;
    77             static bool bIsMaster_s;
     77            static bool bIsServer_s;                        //!< global variable that tells whether this is a server (online)
     78            static bool bIsClient_s;                        //!< global variable that tells whether this is a client (online)
     79            static bool bIsStandalone_s;                    //!< global variable that tells whether the game is running in standalone mode (offline)
     80            static bool bIsMaster_s;                        //!< global variable that tells whether we're in control of the game (standalone or server)
    7881    }; // tolua_export
    7982} // tolua_export
  • code/trunk/src/libraries/core/GameState.h

    r5929 r7401  
    2929/**
    3030@file
     31@ingroup Management CoreGame
    3132@brief
    3233    Definition of GameState class.
  • code/trunk/src/libraries/core/GraphicsManager.h

    r7284 r7401  
    2929
    3030/**
     31    @defgroup Graphics Graphics and GUI
     32    @ingroup Core
     33*/
     34
     35/**
    3136@file
     37@ingroup Graphics
    3238@brief
    3339    Declaration of GraphicsManager Singleton.
  • code/trunk/src/libraries/core/Identifier.cc

    r7284 r7401  
    217217    /**
    218218        @brief Sets the name of the class.
    219         @param name The name
    220219    */
    221220    void Identifier::setName(const std::string& name)
     
    253252    /**
    254253        @brief Sets the network ID to a new value and changes the entry in the ID-Identifier-map.
    255         @param id The new network ID
    256254    */
    257255    void Identifier::setNetworkID(uint32_t id)
  • code/trunk/src/libraries/core/Identifier.h

    r7284 r7401  
    2828
    2929/**
     30    @defgroup Identifier Identifier
     31    @ingroup Class
     32*/
     33
     34/**
    3035    @file
    31     @brief Definition of the Identifier class, definition and implementation of the ClassIdentifier class.
    32 
    33     The Identifier contains all needed information about the class it belongs to:
    34      - the name
    35      - a list with all objects
    36      - parents and children
    37      - the factory (if available)
    38      - the networkID that can be synchronised with the server
    39      - all configurable variables (if available)
    40 
    41     Every object has a pointer to the Identifier of its class. This allows the use isA(...),
    42     isExactlyA(...), isChildOf(...) and isParentOf(...).
    43 
    44     To create the class-hierarchy, the Identifier has some intern functions and variables.
    45 
    46     Every Identifier is in fact a ClassIdentifier, but they are derived from Identifier.
     36    @ingroup Class Identifier
     37    @brief Declaration of Identifier, definition of ClassIdentifier<T>; used to identify the class of an object.
     38
     39    @anchor IdentifierExample
     40
     41    An Identifier "identifies" the class of an object. It contains different information about
     42    the class: Its name and ID, a list of all instances of this class, a factory to create new
     43    instances of this class, and more.
     44
     45    It also contains information about the inheritance of this class: It stores a list of the
     46    Identifiers of all parent-classes as well as a list of all child-classes. These relationships
     47    can be tested using functions like @c isA(), @c isChildOf(), @c isParentOf(), and more.
     48
     49    Every Identifier is in fact a ClassIdentifier<T> (where T is the class that is identified
     50    by the Identifier), Identifier is just the common base-class.
     51
     52    Example:
     53    @code
     54    MyClass* object = new MyClass();                                            // create an instance of MyClass
     55
     56    object->getIdentifier()->getName();                                         // returns "MyClass"
     57
     58    BaseObject* other = object->getIdentifier()->fabricate(0);                  // fabricates a new instance of MyClass
     59
     60
     61    // iterate through all objects of type MyClass:
     62    ObjectListBase* objects = object->getIdentifier()->getObjects();            // get a pointer to the object-list
     63    int count;
     64    for (Iterator<BaseObject> it = objects.begin(); it != objects.end(); ++it)  // iterate through the objects
     65        ++count;
     66    COUT(0) << count << std::endl;                                              // prints "2" because we created 2 instances of MyClass so far
     67
     68
     69    // test the class hierarchy
     70    object->getIdentifier()->isA(Class(MyClass));                               // returns true
     71    object->isA(Class(MyClass));                                                // returns true (short version)
     72
     73    object->isA(Class(BaseClass));                                              // returns true if MyClass is a child of BaseClass
     74
     75    Class(ChildClass)->isChildOf(object->getIdentifier());                      // returns true if ChildClass is a child of MyClass
     76    @endcode
    4777*/
    4878
     
    70100    // ###       Identifier        ###
    71101    // ###############################
    72     //! The Identifier is used to identify the class of an object and to store information about the class.
    73     /**
    74         The Identifier contains all needed information about the class it belongs to:
    75          - the name
    76          - a list with all objects
    77          - parents and children
    78          - the factory (if available)
    79          - the networkID that can be synchronised with the server
    80          - all configurable variables (if available)
    81 
    82         Every object has a pointer to the Identifier of its class. This allows the use isA(...),
    83         isExactlyA(...), isChildOf(...) and isParentOf(...).
    84 
    85         You can't directly create an Identifier, it's just the base-class for ClassIdentifier.
     102    /**
     103        @brief The Identifier is used to identify the class of an object and to store information about the class.
     104
     105        Each Identifier stores information about one class. The Identifier can then be used to identify
     106        this class. On the other hand it's also possible to get the corresponding Identifier of a class,
     107        for example by using the macro Class().
     108
     109        @see See @ref IdentifierExample "Identifier.h" for more information and some examples.
     110
     111        @note You can't directly create an Identifier, it's just the base-class of ClassIdentifier<T>.
    86112    */
    87113    class _CoreExport Identifier
    88114    {
    89115        public:
    90             /** @brief Returns the name of the class the Identifier belongs to. @return The name */
     116            /// Returns the name of the class the Identifier belongs to.
    91117            inline const std::string& getName() const { return this->name_; }
    92118            void setName(const std::string& name);
    93119
    94             /** @brief Returns the network ID to identify a class through the network. @return the network ID */
     120            /// Returns the network ID to identify a class through the network.
    95121            inline const uint32_t getNetworkID() const { return this->networkID_; }
    96122            void setNetworkID(uint32_t id);
    97123
    98             /** @brief Returns the unique ID of the class */
     124            /// Returns the unique ID of the class.
    99125            FORCEINLINE unsigned int getClassID() const { return this->classID_; }
    100126
    101             /** @brief Returns the list of all existing objects of this class. @return The list */
     127            /// Returns the list of all existing objects of this class.
    102128            inline ObjectListBase* getObjects() const { return this->objects_; }
    103129
    104             /** @brief Sets the Factory. @param factory The factory to assign */
     130            /// Sets the Factory.
    105131            inline void addFactory(Factory* factory) { this->factory_ = factory; }
    106             /** @brief Returns true if the Identifier has a Factory. */
     132            /// Returns true if the Identifier has a Factory.
    107133            inline bool hasFactory() const { return (this->factory_ != 0); }
    108134
    109135            BaseObject* fabricate(BaseObject* creator);
    110136
    111             /** @brief Returns true if the class can be loaded through XML. */
     137            /// Returns true if the class can be loaded through XML.
    112138            inline bool isLoadable() const { return this->bLoadable_; }
    113             /** @brief Set the class to be loadable through XML or not. */
     139            /// Set the class to be loadable through XML or not.
    114140            inline void setLoadable(bool bLoadable) { this->bLoadable_ = bLoadable; }
    115141
     
    127153            static void createClassHierarchy();
    128154
    129             /** @brief Returns true, if a branch of the class-hierarchy is being created, causing all new objects to store their parents. @return The status of the class-hierarchy creation */
     155            /// Returns true, if a branch of the class-hierarchy is being created, causing all new objects to store their parents.
    130156            inline static bool isCreatingHierarchy() { return (hierarchyCreatingCounter_s > 0); }
    131157
    132             /** @brief Returns the parents of the class the Identifier belongs to. @return The list of all parents */
     158            /// Returns the parents of the class the Identifier belongs to.
    133159            inline const std::set<const Identifier*>& getParents() const { return this->parents_; }
    134             /** @brief Returns the begin-iterator of the parents-list. @return The begin-iterator */
     160            /// Returns the begin-iterator of the parents-list.
    135161            inline std::set<const Identifier*>::const_iterator getParentsBegin() const { return this->parents_.begin(); }
    136             /** @brief Returns the end-iterator of the parents-list. @return The end-iterator */
     162            /// Returns the end-iterator of the parents-list.
    137163            inline std::set<const Identifier*>::const_iterator getParentsEnd() const { return this->parents_.end(); }
    138164
    139             /** @brief Returns the children of the class the Identifier belongs to. @return The list of all children */
     165            /// Returns the children of the class the Identifier belongs to.
    140166            inline const std::set<const Identifier*>& getChildren() const { return this->children_; }
    141             /** @brief Returns the begin-iterator of the children-list. @return The begin-iterator */
     167            /// Returns the begin-iterator of the children-list.
    142168            inline std::set<const Identifier*>::const_iterator getChildrenBegin() const { return this->children_.begin(); }
    143             /** @brief Returns the end-iterator of the children-list. @return The end-iterator */
     169            /// Returns the end-iterator of the children-list.
    144170            inline std::set<const Identifier*>::const_iterator getChildrenEnd() const { return this->children_.end(); }
    145171
    146             /** @brief Returns the direct parents of the class the Identifier belongs to. @return The list of all direct parents */
     172            /// Returns the direct parents of the class the Identifier belongs to.
    147173            inline const std::set<const Identifier*>& getDirectParents() const { return this->directParents_; }
    148             /** @brief Returns the begin-iterator of the direct-parents-list. @return The begin-iterator */
     174            /// Returns the begin-iterator of the direct-parents-list.
    149175            inline std::set<const Identifier*>::const_iterator getDirectParentsBegin() const { return this->directParents_.begin(); }
    150             /** @brief Returns the end-iterator of the direct-parents-list. @return The end-iterator */
     176            /// Returns the end-iterator of the direct-parents-list.
    151177            inline std::set<const Identifier*>::const_iterator getDirectParentsEnd() const { return this->directParents_.end(); }
    152178
    153             /** @brief Returns the direct children the class the Identifier belongs to. @return The list of all direct children */
     179            /// Returns the direct children the class the Identifier belongs to.
    154180            inline const std::set<const Identifier*>& getDirectChildren() const { return this->directChildren_; }
    155             /** @brief Returns the begin-iterator of the direct-children-list. @return The begin-iterator */
     181            /// Returns the begin-iterator of the direct-children-list.
    156182            inline std::set<const Identifier*>::const_iterator getDirectChildrenBegin() const { return this->directChildren_.begin(); }
    157             /** @brief Returns the end-iterator of the direct-children-list. @return The end-iterator */
     183            /// Returns the end-iterator of the direct-children-list.
    158184            inline std::set<const Identifier*>::const_iterator getDirectChildrenEnd() const { return this->directChildren_.end(); }
    159185
     
    170196            static void clearNetworkIDs();
    171197
    172             /** @brief Returns the map that stores all Identifiers with their names. @return The map */
     198            /// Returns the map that stores all Identifiers with their names.
    173199            static inline const std::map<std::string, Identifier*>& getStringIdentifierMap() { return Identifier::getStringIdentifierMapIntern(); }
    174             /** @brief Returns a const_iterator to the beginning of the map that stores all Identifiers with their names. @return The const_iterator */
     200            /// Returns a const_iterator to the beginning of the map that stores all Identifiers with their names.
    175201            static inline std::map<std::string, Identifier*>::const_iterator getStringIdentifierMapBegin() { return Identifier::getStringIdentifierMap().begin(); }
    176             /** @brief Returns a const_iterator to the end of the map that stores all Identifiers with their names. @return The const_iterator */
     202            /// Returns a const_iterator to the end of the map that stores all Identifiers with their names.
    177203            static inline std::map<std::string, Identifier*>::const_iterator getStringIdentifierMapEnd() { return Identifier::getStringIdentifierMap().end(); }
    178204
    179             /** @brief Returns the map that stores all Identifiers with their names in lowercase. @return The map */
     205            /// Returns the map that stores all Identifiers with their names in lowercase.
    180206            static inline const std::map<std::string, Identifier*>& getLowercaseStringIdentifierMap() { return Identifier::getLowercaseStringIdentifierMapIntern(); }
    181             /** @brief Returns a const_iterator to the beginning of the map that stores all Identifiers with their names in lowercase. @return The const_iterator */
     207            /// Returns a const_iterator to the beginning of the map that stores all Identifiers with their names in lowercase.
    182208            static inline std::map<std::string, Identifier*>::const_iterator getLowercaseStringIdentifierMapBegin() { return Identifier::getLowercaseStringIdentifierMap().begin(); }
    183             /** @brief Returns a const_iterator to the end of the map that stores all Identifiers with their names in lowercase. @return The const_iterator */
     209            /// Returns a const_iterator to the end of the map that stores all Identifiers with their names in lowercase.
    184210            static inline std::map<std::string, Identifier*>::const_iterator getLowercaseStringIdentifierMapEnd() { return Identifier::getLowercaseStringIdentifierMap().end(); }
    185211
    186             /** @brief Returns the map that stores all Identifiers with their IDs. @return The map */
     212            /// Returns the map that stores all Identifiers with their IDs.
    187213            static inline const std::map<uint32_t, Identifier*>& getIDIdentifierMap() { return Identifier::getIDIdentifierMapIntern(); }
    188             /** @brief Returns a const_iterator to the beginning of the map that stores all Identifiers with their IDs. @return The const_iterator */
     214            /// Returns a const_iterator to the beginning of the map that stores all Identifiers with their IDs.
    189215            static inline std::map<uint32_t, Identifier*>::const_iterator getIDIdentifierMapBegin() { return Identifier::getIDIdentifierMap().begin(); }
    190             /** @brief Returns a const_iterator to the end of the map that stores all Identifiers with their IDs. @return The const_iterator */
     216            /// Returns a const_iterator to the end of the map that stores all Identifiers with their IDs.
    191217            static inline std::map<uint32_t, Identifier*>::const_iterator getIDIdentifierMapEnd() { return Identifier::getIDIdentifierMap().end(); }
    192218
     
    197223            virtual void updateConfigValues(bool updateChildren = true) const = 0;
    198224
    199             /** @brief Returns true if this class has at least one config value. @return True if this class has at least one config value */
     225            /// Returns true if this class has at least one config value.
    200226            inline bool hasConfigValues() const { return this->bHasConfigValues_; }
    201227
     
    207233            ///// XMLPort /////
    208234            ///////////////////
    209             /** @brief Returns the map that stores all XMLPort params. @return The const_iterator */
     235            /// Returns the map that stores all XMLPort params.
    210236            inline const std::map<std::string, XMLPortParamContainer*>& getXMLPortParamMap() const { return this->xmlportParamContainers_; }
    211             /** @brief Returns a const_iterator to the beginning of the map that stores all XMLPort params. @return The const_iterator */
     237            /// Returns a const_iterator to the beginning of the map that stores all XMLPort params.
    212238            inline std::map<std::string, XMLPortParamContainer*>::const_iterator getXMLPortParamMapBegin() const { return this->xmlportParamContainers_.begin(); }
    213             /** @brief Returns a const_iterator to the end of the map that stores all XMLPort params. @return The const_iterator */
     239            /// Returns a const_iterator to the end of the map that stores all XMLPort params.
    214240            inline std::map<std::string, XMLPortParamContainer*>::const_iterator getXMLPortParamMapEnd() const { return this->xmlportParamContainers_.end(); }
    215241
    216             /** @brief Returns the map that stores all XMLPort objects. @return The const_iterator */
     242            /// Returns the map that stores all XMLPort objects.
    217243            inline const std::map<std::string, XMLPortObjectContainer*>& getXMLPortObjectMap() const { return this->xmlportObjectContainers_; }
    218             /** @brief Returns a const_iterator to the beginning of the map that stores all XMLPort objects. @return The const_iterator */
     244            /// Returns a const_iterator to the beginning of the map that stores all XMLPort objects.
    219245            inline std::map<std::string, XMLPortObjectContainer*>::const_iterator getXMLPortObjectMapBegin() const { return this->xmlportObjectContainers_.begin(); }
    220             /** @brief Returns a const_iterator to the end of the map that stores all XMLPort objects. @return The const_iterator */
     246            /// Returns a const_iterator to the end of the map that stores all XMLPort objects.
    221247            inline std::map<std::string, XMLPortObjectContainer*>::const_iterator getXMLPortObjectMapEnd() const { return this->xmlportObjectContainers_.end(); }
    222248
     
    238264            void initializeClassHierarchy(std::set<const Identifier*>* parents, bool bRootClass);
    239265
    240             /** @brief Returns the map that stores all Identifiers with their names. @return The map */
     266            /// Returns the map that stores all Identifiers with their names.
    241267            static std::map<std::string, Identifier*>& getStringIdentifierMapIntern();
    242             /** @brief Returns the map that stores all Identifiers with their names in lowercase. @return The map */
     268            /// Returns the map that stores all Identifiers with their names in lowercase.
    243269            static std::map<std::string, Identifier*>& getLowercaseStringIdentifierMapIntern();
    244             /** @brief Returns the map that stores all Identifiers with their network IDs. @return The map */
     270            /// Returns the map that stores all Identifiers with their network IDs.
    245271            static std::map<uint32_t, Identifier*>& getIDIdentifierMapIntern();
    246272
    247             /** @brief Returns the children of the class the Identifier belongs to. @return The list of all children */
     273            /// Returns the children of the class the Identifier belongs to.
    248274            inline std::set<const Identifier*>& getChildrenIntern() const { return this->children_; }
    249             /** @brief Returns the direct children of the class the Identifier belongs to. @return The list of all direct children */
     275            /// Returns the direct children of the class the Identifier belongs to.
    250276            inline std::set<const Identifier*>& getDirectChildrenIntern() const { return this->directChildren_; }
    251277
     
    253279
    254280        private:
    255             /** @brief Increases the hierarchyCreatingCounter_s variable, causing all new objects to store their parents. */
     281            /// Increases the hierarchyCreatingCounter_s variable, causing all new objects to store their parents.
    256282            inline static void startCreatingHierarchy() { hierarchyCreatingCounter_s++; }
    257             /** @brief Decreases the hierarchyCreatingCounter_s variable, causing the objects to stop storing their parents. */
     283            /// Decreases the hierarchyCreatingCounter_s variable, causing the objects to stop storing their parents.
    258284            inline static void stopCreatingHierarchy()  { hierarchyCreatingCounter_s--; }
    259285
     
    291317    // ###     ClassIdentifier     ###
    292318    // ###############################
    293     //! The ClassIdentifier is derived from Identifier and holds all class-specific functions and variables the Identifier cannot have.
    294     /**
    295         ClassIdentifier is a Singleton, which means that only one object of a given type T exists.
     319    /**
     320        @brief The ClassIdentifier is derived from Identifier and holds all class-specific functions and variables the Identifier cannot have.
     321
     322        ClassIdentifier is a Singleton, which means that only one ClassIdentifier for a given type T exists.
    296323        This makes it possible to store information about a class, sharing them with all
    297324        objects of that class without defining static variables in every class.
    298325
    299326        To be really sure that not more than exactly one object exists (even with libraries),
    300         ClassIdentifiers are stored in the Identifier Singleton.
     327        ClassIdentifiers are stored in a static map in Identifier.
    301328    */
    302329    template <class T>
    303330    class ClassIdentifier : public Identifier
    304331    {
    305         #define SUPER_INTRUSIVE_DECLARATION_INCLUDE
    306         #include "Super.h"
     332        #ifndef DOXYGEN_SHOULD_SKIP_THIS
     333          #define SUPER_INTRUSIVE_DECLARATION_INCLUDE
     334          #include "Super.h"
     335        #endif
    307336
    308337        public:
     
    387416        @brief Adds an object of the given type to the ObjectList.
    388417        @param object The object to add
     418        @param className The name of the class T
     419        @param bRootClass True if this is a root class (i.e. it inherits directly from OrxonoxClass)
    389420    */
    390421    template <class T>
  • code/trunk/src/libraries/core/Iterator.h

    r7271 r7401  
    2929/**
    3030    @file
    31     @brief Definition and implementation of the Iterator class.
    32 
    33     The Iterator of a given class allows to iterate through an ObjectList. Objects in
    34     this list are cast to the template argument of the Iterator.
     31    @ingroup Object ObjectList
     32    @brief Definition of the Iterator class, used to iterate through object-lists.
     33
     34    @anchor IteratorExample
     35
     36    @ref orxonox::Iterator "Iterator" allows to iterate through an @ref orxonox::ObjectListBase
     37    "ObjectListBase". Objects in this list are cast to the template argument @a T of Iterator<T> using
     38    @c dynamic_cast. In contrast to @ref orxonox::ObjectListIterator "ObjectListIterator<T>",
     39    @ref orxonox::Iterator "Iterator<T>" can iterate through every object-list. In practice though it
     40    is limited to objects of type @a T and its subclasses. Because of the @c dynamic_cast, this iterator
     41    is much slower than ObjectListIterator.
    3542
    3643    Usage:
     44    @code
    3745    for (Iterator<myClass> it = anyidentifier->getObjects()->begin(); it != anyidentifier->getObjects()->end(); ++it)
    3846    {
     
    4048        myClass* myObject = *it;
    4149    }
     50    @endcode
    4251*/
    4352
     
    5261namespace orxonox
    5362{
    54     //! The Iterator allows to iterate through a given ObjectList
     63    /**
     64        @brief The Iterator allows to iterate through a given ObjectList.
     65
     66        Independent of the object-list's type, the objects in the list are always casted
     67        to @a T using @c dynamic_cast.
     68
     69        @see See @ref IteratorExample "Iterator.h" for more information an example.
     70    */
    5571    template <class T = OrxonoxClass>
    5672    class Iterator
     
    200216                @return The Iterator itself
    201217            */
    202             inline Iterator<T> operator++(int i)
     218            inline Iterator<T> operator++(int)
    203219            {
    204220                Iterator<T> copy = *this;
  • code/trunk/src/libraries/core/Language.cc

    r7284 r7401  
    168168        @brief Returns the localisation of a given entry.
    169169        @param label The label of the entry
     170        @param bError If true, an error is printed if the label doesn't exist and the default localisation is returned. If false, no error is printed and an empty string is returned.
    170171        @return The localisation
    171172    */
  • code/trunk/src/libraries/core/Language.h

    r7284 r7401  
    2828
    2929/**
     30    @defgroup Language Language
     31    @ingroup Core
     32*/
     33
     34/**
    3035    @file
    31     @brief Definition of the Language and the LanguageEntry class.
     36    @ingroup Language
     37    @brief Declaration of the Language and the LanguageEntry class, as well as some helper functions.
     38
     39    @anchor LanguageExample
    3240
    3341    The Language class is used, to get a localisation of a string in the configured language.
     
    3745    Usage:
    3846     - Set the entry with the default string:
     47       @code
    3948       Language::getInstance()->addEntry("label of the entry", "the string to translate");
     49       @endcode
    4050
    4151     - Get the localisation of the entry in the configured language:
     52       @code
    4253       std::cout << Language::getInstance()->getLocalisation("name of the entry") << std::endl;
     54       @endcode
     55
     56    Example:
     57    @code
     58    int age = 20;
     59    AddLanguageEntry("user_age", "Age");
     60    std::cout << GetLocalisation("user_age") << ": " << age << std::endl;
     61    @endcode
     62
     63    Resulting output:
     64    @code
     65    Age: 20
     66    @endcode
     67
     68    The language entry is now defined in @a translation_default.lang:
     69    @code
     70    user_age=Age
     71    @endcode
     72
     73    We can add a translation for another language, for example @a translation_german.lang: