diff --git a/SeQuant/core/op.hpp b/SeQuant/core/op.hpp index 4a92e49ef3..02067b0326 100644 --- a/SeQuant/core/op.hpp +++ b/SeQuant/core/op.hpp @@ -462,6 +462,7 @@ concept index_or_op_sequence = (meta::is_statically_castable_v, Index> || meta::is_statically_castable_v, Op>); +// clang-format off /// @brief NormalOperator is an Operator normal-ordered with respect to a /// vacuum. @@ -469,19 +470,18 @@ concept index_or_op_sequence = /// annihilators. It is natural to express at least number-conserving normal /// operators (i.e. those with equal number of creators and annihilators) as /// tensors with creators as superscripts and annihilators as subscripts. -/// Operator cre(p1) cre(p2) ... cre(pN) ann(qN) ... ann(q2) ann(q1) is -/// represented in such notation as a^{p1 p2 ... pN}_{q1 q2 ... qN}, hence it is +/// Operator `cre(p1) cre(p2) ... cre(pN) ann(qN) ... ann(q2) ann(q1)` is +/// represented in tensor notation as \f$ \tensor*{a}{*^{p1\dots}_{q1\dots} *^{pN}_{qN}} \f$ , hence it is /// natural to specify annihilators in the order of their particle index (i.e. -/// as q1 q2, etc.) which is reverse of the order of their appearance in +/// as `q1` `q2`, etc.) which is reverse of the order of their appearance in /// Operator. /// /// @note The tensor notation becomes less intuitive for number non-conserving -/// operators, e.g. cre(p1) cre(p2) ann(q2) could be represented as a^{p1 -/// p2}_{q2 ⎵} or a^{p1 p2}_{⎵ q2}. To make it explicit that ann(q2) acts on -/// same particle as cre(p2) the latter notation is used; similarly, cre(p1) -/// ann(q1) ann(q2) is represented as a^{⎵ p1}_{q1 q2}. +/// operators, e.g. `cre(p1) cre(p2) ann(q2)` could be represented as \f$ \tensor*{a}{*^{p1}_{q2} *^{p1}_{\textvisiblespace}} \f$ or \f$ \tensor*{a}{*^{p1}_{\textvisiblespace} *^{p1}_{q2}} \f$. To make it explicit that ann(q2) acts on +/// same particle as `cre(p2)` the latter notation is used; similarly, `cre(p1) ann(q1) ann(q2)` is represented as \f$ \tensor*{a}{*^{\textvisiblespace}_{q1} *^{p1}_{q2}} \f$. /// /// @tparam S specifies the particle statistics +// clang-format on template class NormalOperator : public Operator, public AbstractTensor, diff --git a/doc/.doxygen/Doxyfile.in b/doc/.doxygen/Doxyfile.in index 2085f8f529..98739a97c5 100644 --- a/doc/.doxygen/Doxyfile.in +++ b/doc/.doxygen/Doxyfile.in @@ -1,7 +1,7 @@ -# Doxyfile 1.10.0 +# Doxyfile 1.13.2 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. +# Doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. @@ -15,10 +15,10 @@ # # Note: # -# Use doxygen to compare the used configuration file with the template +# Use Doxygen to compare the used configuration file with the template # configuration file: # doxygen -x [configFile] -# Use doxygen to compare the used configuration file with the template +# Use Doxygen to compare the used configuration file with the template # configuration file without replacing the environment variables or CMake type # replacement variables: # doxygen -x_noenv [configFile] @@ -51,17 +51,17 @@ PROJECT_NAME = @PROJECT_NAME@ PROJECT_NUMBER = @SEQUANT_VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a +# for a project that appears at the top of each page and should give viewers a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = +PROJECT_BRIEF = "Symbolic and Numerical Tensor Algebra over Scalar and Operator Fields" # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = @PROJECT_SOURCE_DIR@/doc/images/logo.png # With the PROJECT_ICON tag one can specify an icon that is included in the tabs # when the HTML document is shown. Doxygen will copy the logo to the output @@ -71,16 +71,16 @@ PROJECT_ICON = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If +# entered, it will be relative to the location where Doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = @SEQUANT_DOXYGEN_OUTPUT_DIR@ -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format # and will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause # performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to # control the number of sub-directories. # The default value is: NO. @@ -98,7 +98,7 @@ CREATE_SUBDIRS = NO CREATE_SUBDIRS_LEVEL = 8 -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. @@ -107,7 +107,7 @@ CREATE_SUBDIRS_LEVEL = 8 ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this +# documentation generated by Doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, # Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English @@ -121,14 +121,14 @@ ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the @@ -159,13 +159,13 @@ ABBREVIATE_BRIEF = "The $name class" \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief +# Doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. @@ -173,7 +173,7 @@ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. @@ -183,11 +183,11 @@ FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to +# If left blank the directory from which Doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. +# will be relative from the directory where Doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ @@ -201,41 +201,42 @@ STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. +# interpreted by Doxygen. # The default value is: NO. JAVADOC_BANNER = NO -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this @@ -247,10 +248,10 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO -# By default Python docstrings are displayed as preformatted text and doxygen's +# By default Python docstrings are displayed as preformatted text and Doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES @@ -261,7 +262,7 @@ PYTHON_DOCSTRING = YES INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. @@ -331,30 +332,30 @@ OPTIMIZE_OUTPUT_SLICE = NO # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, # VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files +# default for Fortran type files). For instance to make Doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add +# the files are not read by Doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. EXTENSION_MAPPING = -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. @@ -364,7 +365,7 @@ MARKDOWN_SUPPORT = YES # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. +# Minimum value: 0, maximum value: 99, default value: 6. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 0 @@ -380,20 +381,29 @@ TOC_INCLUDE_HEADINGS = 0 MARKDOWN_ID_STYLE = GITHUB -# When enabled doxygen tries to link words that correspond to documented +# When enabled Doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. # The default value is: YES. AUTOLINK_SUPPORT = YES +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect affect links explicitly created +# using \# or the \link or commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and +# tag to YES in order to let Doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = YES @@ -405,16 +415,16 @@ BUILTIN_STL_SUPPORT = YES CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. +# Doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. @@ -423,7 +433,7 @@ SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first +# tag is set to YES then Doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. @@ -481,18 +491,18 @@ TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest +# symbols. At the end of a run Doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 -# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple @@ -516,7 +526,7 @@ TIMESTAMP = YES # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. @@ -582,7 +592,7 @@ EXTRACT_ANON_NSPACES = NO RESOLVE_UNNAMED_PARAMS = YES -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. @@ -590,7 +600,7 @@ RESOLVE_UNNAMED_PARAMS = YES HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # will also hide undocumented C++ concepts if enabled. This option has no effect @@ -599,14 +609,22 @@ HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. @@ -620,7 +638,7 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly @@ -629,7 +647,7 @@ INTERNAL_DOCS = NO # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option +# Windows (including Cygwin) and macOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. # Possible values are: SYSTEM, NO and YES. @@ -637,14 +655,14 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. @@ -657,7 +675,7 @@ HIDE_COMPOUND_REFERENCE= NO SHOW_HEADERFILE = YES -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -670,7 +688,7 @@ SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. @@ -682,14 +700,14 @@ FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. @@ -697,7 +715,7 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# 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 constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. @@ -709,7 +727,7 @@ SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. @@ -726,11 +744,11 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = YES -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. @@ -800,25 +818,25 @@ SHOW_FILES = YES SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from +# Doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file +# by Doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated +# by Doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can +# that represents Doxygen's defaults, run Doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. See also section "Changing the # layout of pages" for information. # -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = @SEQUANT_DOXYGEN_SOURCE_DIR@/layout.xml @@ -833,19 +851,35 @@ LAYOUT_FILE = @SEQUANT_DOXYGEN_SOURCE_DIR@/layout.xml CITE_BIB_FILES = +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the +# standard output by Doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. @@ -853,14 +887,14 @@ QUIET = NO WARNINGS = YES -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for # potential errors in the documentation, such as documenting some parameters in # a documented function twice, or documenting parameters that don't exist or # using markup commands wrongly. @@ -868,8 +902,8 @@ WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES -# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete -# function parameter documentation. If set to NO, doxygen will accept that some +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some # parameters have no documentation without warning. # The default value is: YES. @@ -877,7 +911,7 @@ WARN_IF_INCOMPLETE_DOC = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong parameter +# value. If set to NO, Doxygen will only warn about wrong parameter # documentation, but not about the absence of documentation. If EXTRACT_ALL is # set to YES then this flag will automatically be disabled. See also # WARN_IF_INCOMPLETE_DOC @@ -885,20 +919,28 @@ WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = NO -# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about -# undocumented enumeration values. If set to NO, doxygen will accept +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept # undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: NO. WARN_IF_UNDOC_ENUM_VAL = NO -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves -# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not # write the warning messages in between other messages but write them at the end # of a run, in case a WARN_LOGFILE is defined the warning messages will be # besides being in the defined file also be shown at the end of a run, unless @@ -909,7 +951,7 @@ WARN_IF_UNDOC_ENUM_VAL = NO WARN_AS_ERROR = NO -# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will @@ -922,7 +964,7 @@ WARN_FORMAT = "$file:$line: $text" # In the $text part of the WARN_FORMAT command it is possible that a reference # to a more specific place is given. To make it easier to jump to this place -# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. # Example: # WARN_LINE_FORMAT = "'vi $file +$line'" # See also: WARN_FORMAT @@ -953,7 +995,7 @@ INPUT = @PROJECT_SOURCE_DIR@/SeQuant \ @PROJECT_SOURCE_DIR@/README.md # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. @@ -963,12 +1005,12 @@ INPUT = @PROJECT_SOURCE_DIR@/SeQuant \ INPUT_ENCODING = UTF-8 # This tag can be used to specify the character encoding of the source files -# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify # character encoding on a per file pattern basis. Doxygen will compare the file # name with each pattern and apply the encoding instead of the default -# INPUT_ENCODING) if there is a match. The character encodings are a list of the -# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding -# "INPUT_ENCODING" for further information on supported encodings. +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. INPUT_FILE_ENCODING = @@ -978,7 +1020,7 @@ INPUT_FILE_ENCODING = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. +# read by Doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. @@ -987,7 +1029,7 @@ INPUT_FILE_ENCODING = # *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, # *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, # *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to -# be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, # *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.c \ @@ -1032,7 +1074,7 @@ RECURSIVE = YES # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # -# Note that relative paths are relative to the directory from which doxygen is +# Note that relative paths are relative to the directory from which Doxygen is # run. EXCLUDE = @@ -1052,7 +1094,7 @@ EXCLUDE_SYMLINKS = NO # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = */external/* \ - meta.hpp + meta.hpp # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the @@ -1088,7 +1130,7 @@ EXAMPLE_RECURSIVE = NO IMAGE_PATH = -# The INPUT_FILTER tag can be used to specify a program that doxygen should +# The INPUT_FILTER tag can be used to specify a program that Doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # @@ -1103,14 +1145,14 @@ IMAGE_PATH = # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # -# Note that doxygen will use the data processed and written to standard output +# Note that Doxygen will use the data processed and written to standard output # for further processing, therefore nothing else, like debug statements or used # commands (so in case of a Windows batch file always use @echo OFF), should be # written to standard output. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. INPUT_FILTER = @@ -1123,7 +1165,7 @@ INPUT_FILTER = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. FILTER_PATTERNS = @@ -1145,9 +1187,18 @@ FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. +# and want to reuse the introduction page also for the Doxygen output. + +USE_MDFILE_AS_MAINPAGE = -USE_MDFILE_AS_MAINPAGE = @PROJECT_SOURCE_DIR@/README.md +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES # The Fortran standard specifies that for fixed formatted Fortran code all # characters from position 72 are to be considered as comment. A common @@ -1178,7 +1229,7 @@ SOURCE_BROWSER = YES INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. @@ -1216,7 +1267,7 @@ REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. @@ -1230,14 +1281,14 @@ SOURCE_TOOLTIPS = YES # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # -# The result: instead of the source browser generated by doxygen, the links to +# The result: instead of the source browser generated by Doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. @@ -1269,10 +1320,10 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output # The default value is: YES. -GENERATE_HTML = YES +GENERATE_HTML = @SEQUANT_DOXYGEN_BUILD_HTML@ # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of @@ -1290,40 +1341,40 @@ HTML_OUTPUT = html HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a +# each generated HTML page. If the tag is left blank Doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. +# that Doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally +# for information on how to generate the default header that Doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description +# default header when upgrading to a newer version of Doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = @SEQUANT_DOXYGEN_SOURCE_DIR@/header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard +# generated HTML page. If the tag is left blank Doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. +# that Doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FOOTER = @SEQUANT_DOXYGEN_SOURCE_DIR@/footer.html +HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. +# the HTML output. If left blank Doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. +# sheet that Doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. @@ -1333,7 +1384,7 @@ HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. +# created by Doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. @@ -1347,7 +1398,8 @@ HTML_STYLESHEET = # documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_STYLESHEET = @SEQUANT_DOXYGEN_SOURCE_DIR@/customdoxygen.css +HTML_EXTRA_STYLESHEET = @AWESOME_CSS_DIR@/doxygen-awesome.css \ + @AWESOME_CSS_DIR@/doxygen-awesome-sidebar-only-darkmode-toggle.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1357,23 +1409,21 @@ HTML_EXTRA_STYLESHEET = @SEQUANT_DOXYGEN_SOURCE_DIR@/customdoxygen.css # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_FILES = @SEQUANT_DOXYGEN_SOURCE_DIR@/doxy-boot.js \ - @SEQUANT_DOXYGEN_SOURCE_DIR@/jquery.smartmenus.js \ - @SEQUANT_DOXYGEN_SOURCE_DIR@/addons/bootstrap/jquery.smartmenus.bootstrap.js \ - @SEQUANT_DOXYGEN_SOURCE_DIR@/addons/bootstrap/jquery.smartmenus.bootstrap.css +HTML_EXTRA_FILES = @AWESOME_CSS_DIR@/doxygen-awesome-darkmode-toggle.js \ + @AWESOME_CSS_DIR@/doxygen-awesome-paragraph-link.js # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. -# Possible values are: LIGHT always generate light mode output, DARK always -# generate dark mode output, AUTO_LIGHT automatically set the mode according to -# the user preference, use light mode if no preference is set (the default), -# AUTO_DARK automatically set the mode according to the user preference, use -# dark mode if no preference is set and TOGGLE allow to user to switch between +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between # light and dark mode via a button. # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE = AUTO_LIGHT +HTML_COLORSTYLE = AUTO_DARK # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to @@ -1384,7 +1434,7 @@ HTML_COLORSTYLE = AUTO_LIGHT # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_HUE = 209 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use gray-scales only. A @@ -1392,7 +1442,7 @@ HTML_COLORSTYLE_HUE = 220 # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_SAT = 255 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 @@ -1403,7 +1453,7 @@ HTML_COLORSTYLE_SAT = 100 # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_GAMMA = 80 +HTML_COLORSTYLE_GAMMA = 113 # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that @@ -1414,7 +1464,7 @@ HTML_COLORSTYLE_GAMMA = 80 # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_DYNAMIC_MENUS = NO +HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the @@ -1431,7 +1481,7 @@ HTML_DYNAMIC_SECTIONS = NO HTML_CODE_FOLDING = YES -# If the HTML_COPY_CLIPBOARD tag is set to YES then doxygen will show an icon in +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in # the top right corner of code and text fragments that allows the user to copy # its content to the clipboard. Note this only works if supported by the browser # and the web page is served via a secure context (see: @@ -1444,7 +1494,7 @@ HTML_COPY_CLIPBOARD = YES # Doxygen stores a couple of settings persistently in the browser (via e.g. # cookies). By default these settings apply to all HTML pages generated by -# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store # the settings under a project specific key, such that the user preferences will # be stored separately. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1468,7 +1518,7 @@ HTML_INDEX_NUM_ENTRIES = 100 # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML +# create a documentation set, Doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at @@ -1516,18 +1566,18 @@ DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # on Windows. In the beginning of 2021 Microsoft took the original page, with -# a.o. the download links, offline the HTML help workshop was already many years -# in maintenance mode). You can download the HTML help workshop from the web -# archives at Installation executable (see: +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: # http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo # ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for @@ -1547,7 +1597,7 @@ CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. +# Doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1649,7 +1699,7 @@ QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1681,7 +1731,7 @@ ECLIPSE_DOC_ID = org.doxygen.Project # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. +# The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO @@ -1694,11 +1744,11 @@ DISABLE_INDEX = NO # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by doxygen has an example that +# example, the default style sheet generated by Doxygen has an example that # shows how to put an image at the root of the tree instead of the PROJECT_NAME. # Since the tree basically has the same information as the tab index, you could # consider setting DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. +# The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO @@ -1716,7 +1766,7 @@ GENERATE_TREEVIEW = NO FULL_SIDEBAR = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. +# Doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. @@ -1725,6 +1775,12 @@ FULL_SIDEBAR = NO ENUM_VALUES_PER_LINE = 4 +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. @@ -1732,21 +1788,21 @@ ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 250 -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO -# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email # addresses. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. OBFUSCATE_EMAILS = YES -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. @@ -1759,7 +1815,7 @@ HTML_FORMULA_FORMAT = png # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML +# Doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1770,7 +1826,7 @@ FORMULA_FONTSIZE = 10 # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. -FORMULA_MACROFILE = +FORMULA_MACROFILE = @SEQUANT_DOXYGEN_SOURCE_DIR@/formula-macros.tex # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # https://www.mathjax.org) which uses client side JavaScript for the rendering @@ -1781,7 +1837,7 @@ FORMULA_MACROFILE = # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -USE_MATHJAX = YES +USE_MATHJAX = NO # With MATHJAX_VERSION it is possible to specify the MathJax version to be used. # Note that the different versions of MathJax have different requirements with @@ -1792,7 +1848,7 @@ USE_MATHJAX = YES # The default value is: MathJax_2. # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_VERSION = MathJax_2 +MATHJAX_VERSION = MathJax_3 # When MathJax is enabled you can set the default output format to be used for # the MathJax output. For more details about the output format see MathJax @@ -1803,13 +1859,13 @@ MATHJAX_VERSION = MathJax_2 # Possible values are: HTML-CSS (which is slower, but has the best # compatibility. This is the name for Mathjax version 2, for MathJax version 3 # this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This # is the name for Mathjax version 3, for MathJax version 2 this will be # translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_FORMAT = HTML-CSS +MATHJAX_FORMAT = svg # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory @@ -1823,7 +1879,7 @@ MATHJAX_FORMAT = HTML-CSS # - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@3 # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example @@ -1835,9 +1891,9 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_EXTENSIONS = +MATHJAX_EXTENSIONS = ams -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an @@ -1846,12 +1902,12 @@ MATHJAX_EXTENSIONS = MATHJAX_CODEFILE = -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript 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 typically be disabled. -# For large projects the javascript based search engine can be slow, then +# For large projects the JavaScript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically @@ -1870,7 +1926,7 @@ SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH -# setting. When disabled, doxygen will generate a PHP script for searching and +# setting. When disabled, Doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing # and searching needs to be provided by external tools. See the section # "External Indexing and Searching" for details. @@ -1879,7 +1935,7 @@ SEARCHENGINE = YES SERVER_BASED_SEARCH = NO -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain the @@ -1924,7 +1980,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of @@ -1938,7 +1994,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output. # The default value is: YES. GENERATE_LATEX = NO @@ -1983,7 +2039,7 @@ MAKEINDEX_CMD_NAME = makeindex LATEX_MAKEINDEX_CMD = makeindex -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -2010,19 +2066,19 @@ PAPER_TYPE = letter # If left blank no extra packages will be included. # This tag requires that the tag GENERATE_LATEX is set to YES. -EXTRA_PACKAGES = +EXTRA_PACKAGES = tensor # The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for # the generated LaTeX document. The header should contain everything until the -# first chapter. If it is left blank doxygen will generate a standard header. It +# first chapter. If it is left blank Doxygen will generate a standard header. It # is highly recommended to start with a default header using # doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty # and then modify the file new_header.tex. See also section "Doxygen usage" for -# information on how to generate the default header that doxygen normally uses. +# information on how to generate the default header that Doxygen normally uses. # # Note: Only use a user-defined header if you know what you are doing! # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. The following +# default header when upgrading to a newer version of Doxygen. The following # commands have a special meaning inside the header (and footer): For a # description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2031,10 +2087,10 @@ LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for # the generated LaTeX document. The footer should contain everything after the -# last chapter. If it is left blank doxygen will generate a standard footer. See +# last chapter. If it is left blank Doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what # special commands can be used inside the footer. See also section "Doxygen -# usage" for information on how to generate the default footer that doxygen +# usage" for information on how to generate the default footer that Doxygen # normally uses. Note: Only use a user-defined footer if you know what you are # doing! # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2043,7 +2099,7 @@ LATEX_FOOTER = # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created -# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# by Doxygen. Using this option one can overrule certain style aspects. Doxygen # will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the @@ -2069,7 +2125,7 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as +# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as # specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX # files. Set this option to YES, to get a higher quality PDF documentation. # @@ -2094,7 +2150,7 @@ USE_PDFLATEX = YES LATEX_BATCHMODE = NO -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the # index chapters (such as File Index, Compound Index, etc.) in the output. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2104,7 +2160,7 @@ LATEX_HIDE_INDICES = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See # https://en.wikipedia.org/wiki/BibTeX and \cite for more info. -# The default value is: plain. +# The default value is: plainnat. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_BIB_STYLE = plain @@ -2121,7 +2177,7 @@ LATEX_EMOJI_DIRECTORY = # Configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The # RTF output is optimized for Word 97 and may not look too pretty with other RTF # readers/editors. # The default value is: NO. @@ -2136,7 +2192,7 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -2156,28 +2212,36 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's +# Load stylesheet definitions from file. Syntax is similar to Doxygen's # configuration file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the -# default style sheet that doxygen normally uses. +# default style sheet that Doxygen normally uses. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's configuration file. A template extensions file can be +# similar to Doxygen's configuration file. A template extensions file can be # generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_EXTENSIONS_FILE = +# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the RTF_OUTPUT output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTRA_FILES = + #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for # classes and files. # The default value is: NO. @@ -2208,7 +2272,7 @@ MAN_EXTENSION = .3 MAN_SUBDIR = -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it # will generate one additional man file for each entity documented in the real # man page(s). These additional files only source the real man page, but without # them the man command would be unable to find the correct page. @@ -2221,11 +2285,11 @@ MAN_LINKS = NO # Configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that # captures the structure of the code including all documentation. # The default value is: NO. -GENERATE_XML = YES +GENERATE_XML = @SEQUANT_DOXYGEN_BUILD_XML@ # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of @@ -2235,7 +2299,7 @@ GENERATE_XML = YES XML_OUTPUT = xml -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program # listings (including syntax highlighting and cross-referencing information) to # the XML output. Note that enabling this will significantly increase the size # of the XML output. @@ -2244,7 +2308,7 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES -# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include # namespace members in file scope as well, matching the HTML output. # The default value is: NO. # This tag requires that the tag GENERATE_XML is set to YES. @@ -2255,7 +2319,7 @@ XML_NS_MEMB_FILE_SCOPE = NO # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files # that can be used to generate PDF. # The default value is: NO. @@ -2273,7 +2337,7 @@ DOCBOOK_OUTPUT = docbook # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an # AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. @@ -2285,8 +2349,8 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to Sqlite3 output #--------------------------------------------------------------------------- -# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3 -# database with symbols found by doxygen stored in tables. +# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3 +# database with symbols found by Doxygen stored in tables. # The default value is: NO. GENERATE_SQLITE3 = NO @@ -2300,7 +2364,7 @@ GENERATE_SQLITE3 = NO SQLITE3_OUTPUT = sqlite3 # The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db -# database file will be recreated with each doxygen run. If set to NO, doxygen +# database file will be recreated with each Doxygen run. If set to NO, Doxygen # will warn if a database file is already found and not modify it. # The default value is: YES. # This tag requires that the tag GENERATE_SQLITE3 is set to YES. @@ -2311,7 +2375,7 @@ SQLITE3_RECREATE_DB = YES # Configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module # file that captures the structure of the code including all documentation. # # Note that this feature is still experimental and incomplete at the moment. @@ -2319,7 +2383,7 @@ SQLITE3_RECREATE_DB = YES GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI # output from the Perl module output. # The default value is: NO. @@ -2349,13 +2413,13 @@ PERLMOD_MAKEVAR_PREFIX = # Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all # C-preprocessor directives found in the sources and include files. # The default value is: YES. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be # performed. Macro expansion can be done in a controlled way by setting # EXPAND_ONLY_PREDEF to YES. @@ -2414,7 +2478,7 @@ PREDEFINED = EXPAND_AS_DEFINED = -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have # an all uppercase name, and do not end with a semicolon. Such function macros # are typically used for boiler-plate code, and will confuse the parser if not @@ -2438,12 +2502,12 @@ SKIP_FUNCTION_MACROS = YES # section "Linking to external documentation" for more information about the use # of tag files. # Note: Each tag file must have a unique name (where the name does NOT include -# the path). If a tag file is not located in the directory in which doxygen is +# the path). If a tag file is not located in the directory in which Doxygen is # run, you must also specify the path to the tagfile here. TAGFILES = -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. @@ -2480,7 +2544,7 @@ EXTERNAL_PAGES = YES HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: # https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is @@ -2489,8 +2553,8 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = @DOXYGEN_DOT_FOUND@ -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed -# to run in parallel. When set to 0 doxygen will base this on the number of +# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed +# to run in parallel. When set to 0 Doxygen will base this on the number of # processors available in the system. You can set it explicitly to a value # larger than 0 to get control over the balance between CPU load and processing # speed. @@ -2501,7 +2565,7 @@ DOT_NUM_THREADS = 0 # DOT_COMMON_ATTR is common attributes for nodes, edges and labels of # subgraphs. When you want a differently looking font in the dot files that -# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# Doxygen generates you can specify fontname, fontcolor and fontsize attributes. # For details please see Node, # Edge and Graph Attributes specification You need to make sure dot is able # to find the font, which can be done by putting it in a standard location or by @@ -2535,7 +2599,7 @@ DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will # generate a graph for each documented class showing the direct and indirect # inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and # HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case @@ -2552,7 +2616,7 @@ DOT_FONTPATH = CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a # graph for each documented class showing the direct and indirect implementation # dependencies (inheritance, containment, and class references variables) of the # class with other documented classes. Explicit enabling a collaboration graph, @@ -2564,7 +2628,7 @@ CLASS_GRAPH = YES COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for # groups, showing the direct groups dependencies. Explicit enabling a group # dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means # of the command \groupgraph. Disabling a directory graph can be accomplished by @@ -2575,7 +2639,7 @@ COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. # The default value is: NO. @@ -2596,10 +2660,10 @@ UML_LOOK = NO UML_LIMIT_NUM_FIELDS = 10 -# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and # methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS -# tag is set to YES, doxygen will add type and arguments for attributes and -# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# tag is set to YES, Doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen # will not generate fields with class member information in the UML graphs. The # class diagrams will look similar to the default class diagrams but using UML # notation for the relationships. @@ -2627,7 +2691,7 @@ DOT_WRAP_THRESHOLD = 17 TEMPLATE_RELATIONS = NO # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to -# YES then doxygen will generate a graph for each documented file showing the +# YES then Doxygen will generate a graph for each documented file showing the # direct and indirect include dependencies of the file with other documented # files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO, # can be accomplished by means of the command \includegraph. Disabling an @@ -2638,7 +2702,7 @@ TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are -# set to YES then doxygen will generate a graph for each documented file showing +# set to YES then Doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented # files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set # to NO, can be accomplished by means of the command \includedbygraph. Disabling @@ -2649,7 +2713,7 @@ INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2661,7 +2725,7 @@ INCLUDED_BY_GRAPH = YES CALL_GRAPH = YES -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2673,14 +2737,14 @@ CALL_GRAPH = YES CALLER_GRAPH = YES -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical # hierarchy of all classes instead of a textual one. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the # dependencies a directory has on other directories in a graphical way. The # dependency relations are determined by the #include relations between the # files in the directories. Explicit enabling a directory graph, when @@ -2703,24 +2767,29 @@ DIR_GRAPH_MAX_DEPTH = 1 # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: # https://www.graphviz.org/)). -# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order -# to make the SVG files visible in IE 9+ (other browsers do not have this -# requirement). +# +# Note the formats svg:cairo and svg:cairo:cairo cannot be used in combination +# with INTERACTIVE_SVG (the INTERACTIVE_SVG will be set to NO). # Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, -# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and -# png:gdiplus:gdiplus. +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus, +# png:gdiplus:gdiplus, svg:cairo, svg:cairo:cairo, svg:svg, svg:svg:core, +# gif:cairo, gif:cairo:gd, gif:cairo:gdiplus, gif:gdiplus, gif:gdiplus:gdiplus, +# gif:gd, gif:gd:gd, jpg:cairo, jpg:cairo:gd, jpg:cairo:gdiplus, jpg:gd, +# jpg:gd:gd, jpg:gdiplus and jpg:gdiplus:gdiplus. # The default value is: png. # This tag requires that the tag HAVE_DOT is set to YES. DOT_IMAGE_FORMAT = png -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to -# enable generation of interactive SVG images that allow zooming and panning. +# If DOT_IMAGE_FORMAT is set to svg or svg:svg or svg:svg:core, then this option +# can be set to YES to enable generation of interactive SVG images that allow +# zooming and panning. # # Note that this requires a modern browser other than Internet Explorer. Tested # and working are Firefox, Chrome, Safari, and Opera. -# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make -# the SVG files visible. Older versions of IE do not have SVG support. +# +# Note This option will be automatically disabled when DOT_IMAGE_FORMAT is set +# to svg:cairo or svg:cairo:cairo. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2739,7 +2808,7 @@ DOT_PATH = @DOXYGEN_DOT_PATH@ DOTFILE_DIRS = -# You can include diagrams made with dia in doxygen documentation. Doxygen will +# You can include diagrams made with dia in Doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. # If left empty dia is assumed to be found in the default search path. @@ -2752,7 +2821,7 @@ DIA_PATH = DIAFILE_DIRS = -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the # path where java can find the plantuml.jar file or to the filename of jar file # to be used. If left blank, it is assumed PlantUML is not used or called during # a preprocessing step. Doxygen will generate a warning when it encounters a @@ -2760,20 +2829,26 @@ DIAFILE_DIRS = PLANTUML_JAR_PATH = -# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a -# configuration file for plantuml. +# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for PlantUML. PLANTUML_CFG_FILE = -# When using plantuml, the specified paths are searched for files specified by -# the !include statement in a plantuml block. +# When using PlantUML, the specified paths are searched for files specified by +# the !include statement in a PlantUML block. PLANTUML_INCLUDE_PATH = +# The PLANTUMLFILE_DIRS tag can be used to specify one or more directories that +# contain PlantUml files that are included in the documentation (see the +# \plantumlfile command). + +PLANTUMLFILE_DIRS = + # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes -# larger than this value, doxygen will truncate the graph, which is visualized -# by representing a node as a red box. Note that doxygen if the number of direct +# larger than this value, Doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that if the number of direct # children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. @@ -2803,17 +2878,17 @@ MAX_DOT_GRAPH_DEPTH = 0 DOT_MULTI_TARGETS = NO -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. -# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal # graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate # files that are used to generate the various graphs. # # Note: This setting is not only used for dot files but also for msc temporary @@ -2822,11 +2897,11 @@ GENERATE_LEGEND = YES DOT_CLEANUP = YES -# You can define message sequence charts within doxygen comments using the \msc -# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will +# You can define message sequence charts within Doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will # use a built-in version of mscgen tool to produce the charts. Alternatively, # the MSCGEN_TOOL tag can also specify the name an external tool. For instance, -# specifying prog as the value, doxygen will call the tool as prog -T +# specifying prog as the value, Doxygen will call the tool as prog -T # -o . The external tool should support # output file formats "png", "eps", "svg", and "ismap". diff --git a/doc/.doxygen/README.md b/doc/.doxygen/README.md deleted file mode 100644 index 0f37131054..0000000000 --- a/doc/.doxygen/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Doxygen - -* to build: `cmake --build --target html` - -## Maintainer notes - -Bootstrap extensions for Doxygen courtesy of [github.com:Velron/doxygen-bootstrapped](https://github.com/Velron/doxygen-bootstrapped/tree/feature/support-doxygen-1.1.12+), branch `feature/support-doxygen-1.1.12+`. Requires Doxygen 1.8.12 or later. diff --git a/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.css b/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.css deleted file mode 100755 index e8eb974c1e..0000000000 --- a/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.css +++ /dev/null @@ -1,122 +0,0 @@ -/* - You probably do not need to edit this at all. - - Add some SmartMenus required styles not covered in Bootstrap 3's default CSS. - These are theme independent and should work with any Bootstrap 3 theme mod. -*/ -/* sub menus arrows on desktop */ -.navbar-nav:not(.sm-collapsible) ul .caret { - position: absolute; - right: 0; - margin-top: 6px; - margin-right: 15px; - border-top: 4px solid transparent; - border-bottom: 4px solid transparent; - border-left: 4px dashed; -} -.navbar-nav:not(.sm-collapsible) ul a.has-submenu { - padding-right: 30px; -} -/* make sub menu arrows look like +/- buttons in collapsible mode */ -.navbar-nav.sm-collapsible .caret, .navbar-nav.sm-collapsible ul .caret { - position: absolute; - right: 0; - margin: -3px 15px 0 0; - padding: 0; - width: 32px; - height: 26px; - line-height: 24px; - text-align: center; - border-width: 1px; - border-style: solid; -} -.navbar-nav.sm-collapsible .caret:before { - content: '+'; - font-family: monospace; - font-weight: bold; -} -.navbar-nav.sm-collapsible .open > a > .caret:before { - content: '-'; -} -.navbar-nav.sm-collapsible a.has-submenu { - padding-right: 50px; -} -/* revert to Bootstrap's default carets in collapsible mode when the "data-sm-skip-collapsible-behavior" attribute is set to the ul.navbar-nav */ -.navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] .caret, .navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] ul .caret { - position: static; - margin: 0 0 0 2px; - padding: 0; - width: 0; - height: 0; - border-top: 4px dashed; - border-right: 4px solid transparent; - border-bottom: 0; - border-left: 4px solid transparent; -} -.navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] .caret:before { - content: '' !important; -} -.navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] a.has-submenu { - padding-right: 15px; -} -/* scrolling arrows for tall menus */ -.navbar-nav span.scroll-up, .navbar-nav span.scroll-down { - position: absolute; - display: none; - visibility: hidden; - height: 20px; - overflow: hidden; - text-align: center; -} -.navbar-nav span.scroll-up-arrow, .navbar-nav span.scroll-down-arrow { - position: absolute; - top: -2px; - left: 50%; - margin-left: -8px; - width: 0; - height: 0; - overflow: hidden; - border-top: 7px dashed transparent; - border-right: 7px dashed transparent; - border-bottom: 7px solid; - border-left: 7px dashed transparent; -} -.navbar-nav span.scroll-down-arrow { - top: 6px; - border-top: 7px solid; - border-right: 7px dashed transparent; - border-bottom: 7px dashed transparent; - border-left: 7px dashed transparent; -} -/* add more indentation for 2+ level sub in collapsible mode - Bootstrap normally supports just 1 level sub menus */ -.navbar-nav.sm-collapsible ul .dropdown-menu > li > a, -.navbar-nav.sm-collapsible ul .dropdown-menu .dropdown-header { - padding-left: 35px; -} -.navbar-nav.sm-collapsible ul ul .dropdown-menu > li > a, -.navbar-nav.sm-collapsible ul ul .dropdown-menu .dropdown-header { - padding-left: 45px; -} -.navbar-nav.sm-collapsible ul ul ul .dropdown-menu > li > a, -.navbar-nav.sm-collapsible ul ul ul .dropdown-menu .dropdown-header { - padding-left: 55px; -} -.navbar-nav.sm-collapsible ul ul ul ul .dropdown-menu > li > a, -.navbar-nav.sm-collapsible ul ul ul ul .dropdown-menu .dropdown-header { - padding-left: 65px; -} -/* fix SmartMenus sub menus auto width (subMenusMinWidth and subMenusMaxWidth options) */ -.navbar-nav .dropdown-menu > li > a { - white-space: normal; -} -.navbar-nav ul.sm-nowrap > li > a { - white-space: nowrap; -} -.navbar-nav.sm-collapsible ul.sm-nowrap > li > a { - white-space: normal; -} -/* fix .navbar-right subs alignment */ -.navbar-right ul.dropdown-menu { - left: 0; - right: auto; -} diff --git a/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.js b/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.js deleted file mode 100755 index f06183e8c4..0000000000 --- a/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * SmartMenus jQuery Plugin Bootstrap Addon - v0.3.1 - November 1, 2016 - * http://www.smartmenus.org/ - * - * Copyright Vasil Dinkov, Vadikom Web Ltd. - * http://vadikom.com - * - * Licensed MIT - */ - -(function(factory) { - if (typeof define === 'function' && define.amd) { - // AMD - define(['jquery', 'jquery.smartmenus'], factory); - } else if (typeof module === 'object' && typeof module.exports === 'object') { - // CommonJS - module.exports = factory(require('jquery')); - } else { - // Global jQuery - factory(jQuery); - } -} (function($) { - - $.extend($.SmartMenus.Bootstrap = {}, { - keydownFix: false, - init: function() { - // init all navbars that don't have the "data-sm-skip" attribute set - var $navbars = $('ul.navbar-nav:not([data-sm-skip])'); - $navbars.each(function() { - var $this = $(this), - obj = $this.data('smartmenus'); - // if this navbar is not initialized - if (!obj) { - $this.smartmenus({ - - // these are some good default options that should work for all - // you can, of course, tweak these as you like - subMenusSubOffsetX: 2, - subMenusSubOffsetY: -6, - subIndicators: false, - collapsibleShowFunction: null, - collapsibleHideFunction: null, - rightToLeftSubMenus: $this.hasClass('navbar-right'), - bottomToTopSubMenus: $this.closest('.navbar').hasClass('navbar-fixed-bottom') - }) - .bind({ - // set/unset proper Bootstrap classes for some menu elements - 'show.smapi': function(e, menu) { - var $menu = $(menu), - $scrollArrows = $menu.dataSM('scroll-arrows'); - if ($scrollArrows) { - // they inherit border-color from body, so we can use its background-color too - $scrollArrows.css('background-color', $(document.body).css('background-color')); - } - $menu.parent().addClass('open'); - }, - 'hide.smapi': function(e, menu) { - $(menu).parent().removeClass('open'); - } - }); - - function onInit() { - // set Bootstrap's "active" class to SmartMenus "current" items (should someone decide to enable markCurrentItem: true) - $this.find('a.current').parent().addClass('active'); - // remove any Bootstrap required attributes that might cause conflicting issues with the SmartMenus script - $this.find('a.has-submenu').each(function() { - var $this = $(this); - if ($this.is('[data-toggle="dropdown"]')) { - $this.dataSM('bs-data-toggle-dropdown', true).removeAttr('data-toggle'); - } - if ($this.is('[role="button"]')) { - $this.dataSM('bs-role-button', true).removeAttr('role'); - } - }); - } - - onInit(); - - function onBeforeDestroy() { - $this.find('a.current').parent().removeClass('active'); - $this.find('a.has-submenu').each(function() { - var $this = $(this); - if ($this.dataSM('bs-data-toggle-dropdown')) { - $this.attr('data-toggle', 'dropdown').removeDataSM('bs-data-toggle-dropdown'); - } - if ($this.dataSM('bs-role-button')) { - $this.attr('role', 'button').removeDataSM('bs-role-button'); - } - }); - } - - obj = $this.data('smartmenus'); - - // custom "isCollapsible" method for Bootstrap - obj.isCollapsible = function() { - return !/^(left|right)$/.test(this.$firstLink.parent().css('float')); - }; - - // custom "refresh" method for Bootstrap - obj.refresh = function() { - $.SmartMenus.prototype.refresh.call(this); - onInit(); - // update collapsible detection - detectCollapsible(true); - }; - - // custom "destroy" method for Bootstrap - obj.destroy = function(refresh) { - onBeforeDestroy(); - $.SmartMenus.prototype.destroy.call(this, refresh); - }; - - // keep Bootstrap's default behavior for parent items when the "data-sm-skip-collapsible-behavior" attribute is set to the ul.navbar-nav - // i.e. use the whole item area just as a sub menu toggle and don't customize the carets - if ($this.is('[data-sm-skip-collapsible-behavior]')) { - $this.bind({ - // click the parent item to toggle the sub menus (and reset deeper levels and other branches on click) - 'click.smapi': function(e, item) { - if (obj.isCollapsible()) { - var $item = $(item), - $sub = $item.parent().dataSM('sub'); - if ($sub && $sub.dataSM('shown-before') && $sub.is(':visible')) { - obj.itemActivate($item); - obj.menuHide($sub); - return false; - } - } - } - }); - } - - // onresize detect when the navbar becomes collapsible and add it the "sm-collapsible" class - var winW; - function detectCollapsible(force) { - var newW = obj.getViewportWidth(); - if (newW != winW || force) { - var $carets = $this.find('.caret'); - if (obj.isCollapsible()) { - $this.addClass('sm-collapsible'); - // set "navbar-toggle" class to carets (so they look like a button) if the "data-sm-skip-collapsible-behavior" attribute is not set to the ul.navbar-nav - if (!$this.is('[data-sm-skip-collapsible-behavior]')) { - $carets.addClass('navbar-toggle sub-arrow'); - } - } else { - $this.removeClass('sm-collapsible'); - if (!$this.is('[data-sm-skip-collapsible-behavior]')) { - $carets.removeClass('navbar-toggle sub-arrow'); - } - } - winW = newW; - } - } - detectCollapsible(); - $(window).bind('resize.smartmenus' + obj.rootId, detectCollapsible); - } - }); - // keydown fix for Bootstrap 3.3.5+ conflict - if ($navbars.length && !$.SmartMenus.Bootstrap.keydownFix) { - // unhook BS keydown handler for all dropdowns - $(document).off('keydown.bs.dropdown.data-api', '.dropdown-menu'); - // restore BS keydown handler for dropdowns that are not inside SmartMenus navbars - if ($.fn.dropdown && $.fn.dropdown.Constructor) { - $(document).on('keydown.bs.dropdown.data-api', '.dropdown-menu:not([id^="sm-"])', $.fn.dropdown.Constructor.prototype.keydown); - } - $.SmartMenus.Bootstrap.keydownFix = true; - } - } - }); - - // init ondomready - $($.SmartMenus.Bootstrap.init); - - return $; -})); diff --git a/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.min.js b/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.min.js deleted file mode 100755 index fb4d01eb6a..0000000000 --- a/doc/.doxygen/addons/bootstrap/jquery.smartmenus.bootstrap.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! SmartMenus jQuery Plugin Bootstrap Addon - v0.3.1 - November 1, 2016 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery","jquery.smartmenus"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function(t){return t.extend(t.SmartMenus.Bootstrap={},{keydownFix:!1,init:function(){var e=t("ul.navbar-nav:not([data-sm-skip])");e.each(function(){function e(){o.find("a.current").parent().addClass("active"),o.find("a.has-submenu").each(function(){var e=t(this);e.is('[data-toggle="dropdown"]')&&e.dataSM("bs-data-toggle-dropdown",!0).removeAttr("data-toggle"),e.is('[role="button"]')&&e.dataSM("bs-role-button",!0).removeAttr("role")})}function s(){o.find("a.current").parent().removeClass("active"),o.find("a.has-submenu").each(function(){var e=t(this);e.dataSM("bs-data-toggle-dropdown")&&e.attr("data-toggle","dropdown").removeDataSM("bs-data-toggle-dropdown"),e.dataSM("bs-role-button")&&e.attr("role","button").removeDataSM("bs-role-button")})}function i(t){var e=a.getViewportWidth();if(e!=n||t){var s=o.find(".caret");a.isCollapsible()?(o.addClass("sm-collapsible"),o.is("[data-sm-skip-collapsible-behavior]")||s.addClass("navbar-toggle sub-arrow")):(o.removeClass("sm-collapsible"),o.is("[data-sm-skip-collapsible-behavior]")||s.removeClass("navbar-toggle sub-arrow")),n=e}}var o=t(this),a=o.data("smartmenus");if(!a){o.smartmenus({subMenusSubOffsetX:2,subMenusSubOffsetY:-6,subIndicators:!1,collapsibleShowFunction:null,collapsibleHideFunction:null,rightToLeftSubMenus:o.hasClass("navbar-right"),bottomToTopSubMenus:o.closest(".navbar").hasClass("navbar-fixed-bottom")}).bind({"show.smapi":function(e,s){var i=t(s),o=i.dataSM("scroll-arrows");o&&o.css("background-color",t(document.body).css("background-color")),i.parent().addClass("open")},"hide.smapi":function(e,s){t(s).parent().removeClass("open")}}),e(),a=o.data("smartmenus"),a.isCollapsible=function(){return!/^(left|right)$/.test(this.$firstLink.parent().css("float"))},a.refresh=function(){t.SmartMenus.prototype.refresh.call(this),e(),i(!0)},a.destroy=function(e){s(),t.SmartMenus.prototype.destroy.call(this,e)},o.is("[data-sm-skip-collapsible-behavior]")&&o.bind({"click.smapi":function(e,s){if(a.isCollapsible()){var i=t(s),o=i.parent().dataSM("sub");if(o&&o.dataSM("shown-before")&&o.is(":visible"))return a.itemActivate(i),a.menuHide(o),!1}}});var n;i(),t(window).bind("resize.smartmenus"+a.rootId,i)}}),e.length&&!t.SmartMenus.Bootstrap.keydownFix&&(t(document).off("keydown.bs.dropdown.data-api",".dropdown-menu"),t.fn.dropdown&&t.fn.dropdown.Constructor&&t(document).on("keydown.bs.dropdown.data-api",'.dropdown-menu:not([id^="sm-"])',t.fn.dropdown.Constructor.prototype.keydown),t.SmartMenus.Bootstrap.keydownFix=!0)}}),t(t.SmartMenus.Bootstrap.init),t}); diff --git a/doc/.doxygen/addons/keyboard/jquery.smartmenus.keyboard.js b/doc/.doxygen/addons/keyboard/jquery.smartmenus.keyboard.js deleted file mode 100755 index 0275ca11d3..0000000000 --- a/doc/.doxygen/addons/keyboard/jquery.smartmenus.keyboard.js +++ /dev/null @@ -1,215 +0,0 @@ -/*! - * SmartMenus jQuery Plugin Keyboard Addon - v0.3.1 - November 1, 2016 - * http://www.smartmenus.org/ - * - * Copyright Vasil Dinkov, Vadikom Web Ltd. - * http://vadikom.com - * - * Licensed MIT - */ - -(function(factory) { - if (typeof define === 'function' && define.amd) { - // AMD - define(['jquery', 'jquery.smartmenus'], factory); - } else if (typeof module === 'object' && typeof module.exports === 'object') { - // CommonJS - module.exports = factory(require('jquery')); - } else { - // Global jQuery - factory(jQuery); - } -} (function($) { - - function getFirstItemLink($ul) { - // make sure we also allow the link to be nested deeper inside the LI's (e.g. in a heading) - return $ul.find('> li > a:not(.disabled), > li > :not(ul) a:not(.disabled)').eq(0); - } - function getLastItemLink($ul) { - return $ul.find('> li > a:not(.disabled), > li > :not(ul) a:not(.disabled)').eq(-1); - } - function getNextItemLink($li, noLoop) { - var $a = $li.nextAll('li').find('> a:not(.disabled), > :not(ul) a:not(.disabled)').eq(0); - return noLoop || $a.length ? $a : getFirstItemLink($li.parent()); - } - function getPreviousItemLink($li, noLoop) { - // bug workaround: elements are returned in reverse order just in jQuery 1.8.x - var $a = $li.prevAll('li').find('> a:not(.disabled), > :not(ul) a:not(.disabled)').eq(/^1\.8\./.test($.fn.jquery) ? 0 : -1); - return noLoop || $a.length ? $a : getLastItemLink($li.parent()); - } - - // jQuery's .focus() is unreliable in some versions, so we're going to call the links' native JS focus method - $.fn.focusSM = function() { - if (this.length && this[0].focus) { - this[0].focus(); - } - return this; - }; - - $.extend($.SmartMenus.Keyboard = {}, { - docKeydown: function(e) { - var keyCode = e.keyCode; - if (!/^(37|38|39|40)$/.test(keyCode)) { - return; - } - var $root = $(this), - obj = $root.data('smartmenus'), - $target = $(e.target); - // exit if this is an A inside a mega drop-down - if (!obj || !$target.is('a') || !obj.handleItemEvents($target)) { - return; - } - var $li = $target.closest('li'), - $ul = $li.parent(), - level = $ul.dataSM('level'); - // swap left & right keys - if ($root.hasClass('sm-rtl')) { - if (keyCode == 37) { - keyCode = 39; - } else if (keyCode == 39) { - keyCode = 37; - } - } - switch (keyCode) { - case 37: // Left - if (obj.isCollapsible()) { - break; - } - if (level > 2 || level == 2 && $root.hasClass('sm-vertical')) { - obj.activatedItems[level - 2].focusSM(); - // move to previous non-disabled parent item (make sure we cycle so it might be the last item) - } else if (!$root.hasClass('sm-vertical')) { - getPreviousItemLink((obj.activatedItems[0] || $target).closest('li')).focusSM(); - } - break; - case 38: // Up - if (obj.isCollapsible()) { - var $firstItem; - // if this is the first item of a sub menu, move to the parent item - if (level > 1 && ($firstItem = getFirstItemLink($ul)).length && $target[0] == $firstItem[0]) { - obj.activatedItems[level - 2].focusSM(); - } else { - getPreviousItemLink($li).focusSM(); - } - } else { - if (level == 1 && !$root.hasClass('sm-vertical') && obj.opts.bottomToTopSubMenus) { - if (!obj.activatedItems[0] && $target.dataSM('sub')) { - if (obj.opts.showOnClick) { - obj.clickActivated = true; - } - obj.itemActivate($target); - if ($target.dataSM('sub').is(':visible')) { - obj.focusActivated = true; - } - } - if (obj.activatedItems[0] && obj.activatedItems[0].dataSM('sub') && obj.activatedItems[0].dataSM('sub').is(':visible') && !obj.activatedItems[0].dataSM('sub').hasClass('mega-menu')) { - getLastItemLink(obj.activatedItems[0].dataSM('sub')).focusSM(); - } - } else if (level > 1 || $root.hasClass('sm-vertical')) { - getPreviousItemLink($li).focusSM(); - } - } - break; - case 39: // Right - if (obj.isCollapsible()) { - break; - } - if (level == 1 && $root.hasClass('sm-vertical')) { - if (!obj.activatedItems[0] && $target.dataSM('sub')) { - if (obj.opts.showOnClick) { - obj.clickActivated = true; - } - obj.itemActivate($target); - if ($target.dataSM('sub').is(':visible')) { - obj.focusActivated = true; - } - } - if (obj.activatedItems[0] && obj.activatedItems[0].dataSM('sub') && obj.activatedItems[0].dataSM('sub').is(':visible') && !obj.activatedItems[0].dataSM('sub').hasClass('mega-menu')) { - getFirstItemLink(obj.activatedItems[0].dataSM('sub')).focusSM(); - } - // move to next non-disabled parent item (make sure we cycle so it might be the last item) - } else if ((level == 1 || obj.activatedItems[level - 1] && (!obj.activatedItems[level - 1].dataSM('sub') || !obj.activatedItems[level - 1].dataSM('sub').is(':visible') || obj.activatedItems[level - 1].dataSM('sub').hasClass('mega-menu'))) && !$root.hasClass('sm-vertical')) { - getNextItemLink((obj.activatedItems[0] || $target).closest('li')).focusSM(); - } else if (obj.activatedItems[level - 1] && obj.activatedItems[level - 1].dataSM('sub') && obj.activatedItems[level - 1].dataSM('sub').is(':visible') && !obj.activatedItems[level - 1].dataSM('sub').hasClass('mega-menu')) { - getFirstItemLink(obj.activatedItems[level - 1].dataSM('sub')).focusSM(); - } - break; - case 40: // Down - if (obj.isCollapsible()) { - var $firstSubItem, - $lastItem; - // move to sub menu if appropriate - if (obj.activatedItems[level - 1] && obj.activatedItems[level - 1].dataSM('sub') && obj.activatedItems[level - 1].dataSM('sub').is(':visible') && !obj.activatedItems[level - 1].dataSM('sub').hasClass('mega-menu') && ($firstSubItem = getFirstItemLink(obj.activatedItems[level - 1].dataSM('sub'))).length) { - $firstSubItem.focusSM(); - // if this is the last item of a sub menu, move to the next parent item - } else if (level > 1 && ($lastItem = getLastItemLink($ul)).length && $target[0] == $lastItem[0]) { - var $parentItem = obj.activatedItems[level - 2].closest('li'), - $nextParentItem = null; - while ($parentItem.is('li') && !($nextParentItem = getNextItemLink($parentItem, true)).length) { - $parentItem = $parentItem.parent().parent(); - } - if ($nextParentItem.length) { - $nextParentItem.focusSM(); - } else { - getFirstItemLink($root).focusSM(); - } - } else { - getNextItemLink($li).focusSM(); - } - } else { - if (level == 1 && !$root.hasClass('sm-vertical') && !obj.opts.bottomToTopSubMenus) { - if (!obj.activatedItems[0] && $target.dataSM('sub')) { - if (obj.opts.showOnClick) { - obj.clickActivated = true; - } - obj.itemActivate($target); - if ($target.dataSM('sub').is(':visible')) { - obj.focusActivated = true; - } - } - if (obj.activatedItems[0] && obj.activatedItems[0].dataSM('sub') && obj.activatedItems[0].dataSM('sub').is(':visible') && !obj.activatedItems[0].dataSM('sub').hasClass('mega-menu')) { - getFirstItemLink(obj.activatedItems[0].dataSM('sub')).focusSM(); - } - } else if (level > 1 || $root.hasClass('sm-vertical')) { - getNextItemLink($li).focusSM(); - } - } - break; - } - e.stopPropagation(); - e.preventDefault(); - } - }); - - // hook it - $(document).delegate('ul.sm, ul.navbar-nav:not([data-sm-skip])', 'keydown.smartmenus', $.SmartMenus.Keyboard.docKeydown); - - $.extend($.SmartMenus.prototype, { - keyboardSetHotkey: function(keyCode, modifiers) { - var self = this; - $(document).bind('keydown.smartmenus' + this.rootId, function(e) { - if (keyCode == e.keyCode) { - var procede = true; - if (modifiers) { - if (typeof modifiers == 'string') { - modifiers = [modifiers]; - } - $.each(['ctrlKey', 'shiftKey', 'altKey', 'metaKey'], function(index, value) { - if ($.inArray(value, modifiers) >= 0 && !e[value] || $.inArray(value, modifiers) < 0 && e[value]) { - procede = false; - return false; - } - }); - } - if (procede) { - getFirstItemLink(self.$root).focusSM(); - e.stopPropagation(); - e.preventDefault(); - } - } - }); - } - }); - - return $; -})); diff --git a/doc/.doxygen/addons/keyboard/jquery.smartmenus.keyboard.min.js b/doc/.doxygen/addons/keyboard/jquery.smartmenus.keyboard.min.js deleted file mode 100755 index 33afdfba19..0000000000 --- a/doc/.doxygen/addons/keyboard/jquery.smartmenus.keyboard.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! SmartMenus jQuery Plugin Keyboard Addon - v0.3.1 - November 1, 2016 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery","jquery.smartmenus"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function(t){function e(t){return t.find("> li > a:not(.disabled), > li > :not(ul) a:not(.disabled)").eq(0)}function s(t){return t.find("> li > a:not(.disabled), > li > :not(ul) a:not(.disabled)").eq(-1)}function i(t,s){var i=t.nextAll("li").find("> a:not(.disabled), > :not(ul) a:not(.disabled)").eq(0);return s||i.length?i:e(t.parent())}function o(e,i){var o=e.prevAll("li").find("> a:not(.disabled), > :not(ul) a:not(.disabled)").eq(/^1\.8\./.test(t.fn.jquery)?0:-1);return i||o.length?o:s(e.parent())}return t.fn.focusSM=function(){return this.length&&this[0].focus&&this[0].focus(),this},t.extend(t.SmartMenus.Keyboard={},{docKeydown:function(a){var n=a.keyCode;if(/^(37|38|39|40)$/.test(n)){var r=t(this),u=r.data("smartmenus"),h=t(a.target);if(u&&h.is("a")&&u.handleItemEvents(h)){var l=h.closest("li"),d=l.parent(),c=d.dataSM("level");switch(r.hasClass("sm-rtl")&&(37==n?n=39:39==n&&(n=37)),n){case 37:if(u.isCollapsible())break;c>2||2==c&&r.hasClass("sm-vertical")?u.activatedItems[c-2].focusSM():r.hasClass("sm-vertical")||o((u.activatedItems[0]||h).closest("li")).focusSM();break;case 38:if(u.isCollapsible()){var m;c>1&&(m=e(d)).length&&h[0]==m[0]?u.activatedItems[c-2].focusSM():o(l).focusSM()}else 1==c&&!r.hasClass("sm-vertical")&&u.opts.bottomToTopSubMenus?(!u.activatedItems[0]&&h.dataSM("sub")&&(u.opts.showOnClick&&(u.clickActivated=!0),u.itemActivate(h),h.dataSM("sub").is(":visible")&&(u.focusActivated=!0)),u.activatedItems[0]&&u.activatedItems[0].dataSM("sub")&&u.activatedItems[0].dataSM("sub").is(":visible")&&!u.activatedItems[0].dataSM("sub").hasClass("mega-menu")&&s(u.activatedItems[0].dataSM("sub")).focusSM()):(c>1||r.hasClass("sm-vertical"))&&o(l).focusSM();break;case 39:if(u.isCollapsible())break;1==c&&r.hasClass("sm-vertical")?(!u.activatedItems[0]&&h.dataSM("sub")&&(u.opts.showOnClick&&(u.clickActivated=!0),u.itemActivate(h),h.dataSM("sub").is(":visible")&&(u.focusActivated=!0)),u.activatedItems[0]&&u.activatedItems[0].dataSM("sub")&&u.activatedItems[0].dataSM("sub").is(":visible")&&!u.activatedItems[0].dataSM("sub").hasClass("mega-menu")&&e(u.activatedItems[0].dataSM("sub")).focusSM()):1!=c&&(!u.activatedItems[c-1]||u.activatedItems[c-1].dataSM("sub")&&u.activatedItems[c-1].dataSM("sub").is(":visible")&&!u.activatedItems[c-1].dataSM("sub").hasClass("mega-menu"))||r.hasClass("sm-vertical")?u.activatedItems[c-1]&&u.activatedItems[c-1].dataSM("sub")&&u.activatedItems[c-1].dataSM("sub").is(":visible")&&!u.activatedItems[c-1].dataSM("sub").hasClass("mega-menu")&&e(u.activatedItems[c-1].dataSM("sub")).focusSM():i((u.activatedItems[0]||h).closest("li")).focusSM();break;case 40:if(u.isCollapsible()){var p,f;if(u.activatedItems[c-1]&&u.activatedItems[c-1].dataSM("sub")&&u.activatedItems[c-1].dataSM("sub").is(":visible")&&!u.activatedItems[c-1].dataSM("sub").hasClass("mega-menu")&&(p=e(u.activatedItems[c-1].dataSM("sub"))).length)p.focusSM();else if(c>1&&(f=s(d)).length&&h[0]==f[0]){for(var v=u.activatedItems[c-2].closest("li"),b=null;v.is("li")&&!(b=i(v,!0)).length;)v=v.parent().parent();b.length?b.focusSM():e(r).focusSM()}else i(l).focusSM()}else 1!=c||r.hasClass("sm-vertical")||u.opts.bottomToTopSubMenus?(c>1||r.hasClass("sm-vertical"))&&i(l).focusSM():(!u.activatedItems[0]&&h.dataSM("sub")&&(u.opts.showOnClick&&(u.clickActivated=!0),u.itemActivate(h),h.dataSM("sub").is(":visible")&&(u.focusActivated=!0)),u.activatedItems[0]&&u.activatedItems[0].dataSM("sub")&&u.activatedItems[0].dataSM("sub").is(":visible")&&!u.activatedItems[0].dataSM("sub").hasClass("mega-menu")&&e(u.activatedItems[0].dataSM("sub")).focusSM())}a.stopPropagation(),a.preventDefault()}}}}),t(document).delegate("ul.sm, ul.navbar-nav:not([data-sm-skip])","keydown.smartmenus",t.SmartMenus.Keyboard.docKeydown),t.extend(t.SmartMenus.prototype,{keyboardSetHotkey:function(s,i){var o=this;t(document).bind("keydown.smartmenus"+this.rootId,function(a){if(s==a.keyCode){var n=!0;i&&("string"==typeof i&&(i=[i]),t.each(["ctrlKey","shiftKey","altKey","metaKey"],function(e,s){return t.inArray(s,i)>=0&&!a[s]||0>t.inArray(s,i)&&a[s]?(n=!1,!1):void 0})),n&&(e(o.$root).focusSM(),a.stopPropagation(),a.preventDefault())}})}}),t}); diff --git a/doc/.doxygen/customdoxygen.css b/doc/.doxygen/customdoxygen.css deleted file mode 100644 index 725ee7e17e..0000000000 --- a/doc/.doxygen/customdoxygen.css +++ /dev/null @@ -1,485 +0,0 @@ -h1, .h1, h2, .h2, h3, .h3{ - font-weight: 200 !important; -} - -.sm-dox a span.sub-arrow { - position: absolute; - top: 50%; - margin-top: -14px; - left: auto; - right: 3px; - width: 28px; - height: 28px; - overflow: hidden; - font: bold 12px / 28px monospace !important; - text-align: center; - text-shadow: none; - background: rgba(255, 255, 255, 0.5); - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px -} - -/* Handing of arrow-carets in the smart menus */ -.sm-dox a.highlighted span.sub-arrow:before { - display: block; - content: '-' -} - -.sm-dox a span.sub-arrow { - top: 50%; - margin-top: -2px; - right: 12px; - width: 0; - height: 0; - border-width: 4px; - border-style: solid dashed dashed dashed; - border-color: #283a5d transparent transparent transparent; - background: transparent; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0 -} - -.sm-dox a:hover span.sub-arrow { - border-color: red transparent transparent transparent -} - - -.sm-dox.sm-rtl a.has-submenu { - padding-right: 12px; - padding-left: 24px -} - -.sm-dox.sm-rtl a span.sub-arrow { - right: auto; - left: 12px -} - -.sm-dox.sm-rtl.sm-vertical a.has-submenu { - padding: 10px 20px -} - -.sm-dox.sm-rtl.sm-vertical a span.sub-arrow { - right: auto; - left: 8px; - border-style: dashed solid dashed dashed; - border-color: transparent #555 transparent transparent -} - -.sm-dox.sm-rtl ul a.has-submenu { - padding: 10px 20px !important -} - -.sm-dox.sm-rtl ul a span.sub-arrow { - right: auto; - left: 8px; - border-style: dashed solid dashed dashed; - border-color: transparent #555 transparent transparent -} - -.sm-dox.sm-vertical a.disabled { -} - -.sm-dox.sm-vertical a span.sub-arrow { - right: 8px; - top: 50%; - margin-top: -5px; - border-width: 5px; - border-style: dashed dashed dashed solid; - border-color: transparent transparent transparent #555 -} -.sm-dox ul a span.sub-arrow { - right: 8px; - top: 50%; - margin-top: -5px; - border-width: 5px; - border-color: transparent transparent transparent #555; - border-style: dashed dashed dashed solid -} - -#navrow1, #navrow2, #navrow3, #navrow4, #navrow5{ - border-bottom: 1px solid #EEEEEE; -} - -.adjust-right { -margin-left: 30px !important; -font-size: 1.15em !important; -} -.navbar{ - border: 0px solid #222 !important; -} -table{ - white-space:pre-wrap !important; -} -/* - =========================== - */ - - -/* Sticky footer styles --------------------------------------------------- */ -html, -body { - height: 100%; - /* The html and body elements cannot have any padding or margin. */ -} - -/* Wrapper for page content to push down footer */ -#wrap { - min-height: 100%; - height: auto; - /* Negative indent footer by its height */ - margin: 0 auto -60px; - /* Pad bottom by footer height */ - padding: 0 0 60px; -} - -/* Set the fixed height of the footer here */ -#footer { - font-size: 0.9em; - padding: 8px 0px; - background-color: #f5f5f5; -} - -.footer-row { - line-height: 44px; -} - -#footer > .container { - padding-left: 15px; - padding-right: 15px; -} - -.footer-follow-icon { - margin-left: 3px; - text-decoration: none !important; -} - -.footer-follow-icon img { - width: 20px; -} - -.footer-link { - padding-top: 5px; - display: inline-block; - color: #999999; - text-decoration: none; -} - -.footer-copyright { - text-align: center; -} - - -@media (min-width: 992px) { - .footer-row { - text-align: left; - } - - .footer-icons { - text-align: right; - } -} -@media (max-width: 991px) { - .footer-row { - text-align: center; - } - - .footer-icons { - text-align: center; - } -} - -/* DOXYGEN Code Styles ------------------------------------ */ - - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 4px 6px; - margin: 4px 8px 4px 2px; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 12px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: normal; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} -div.line:hover{ - background-color: #FBFF00; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - color:rgba(0,0,0,0.3); - border-right: 1px solid #EEE; - border-left: 1px solid #EEE; - background-color: #FFF; - white-space: pre; - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace ; -} -span.lineno a { - background-color: #FAFAFA; - cursor:pointer; -} - -span.lineno a:hover { - background-color: #EFE200; - color: #1e1e1e; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/*---------------- Search Box */ - -#search-box { - margin: 10px 0px; -} -#search-box .close { - display: none; - position: absolute; - right: 0px; - padding: 6px 12px; - z-index: 5; -} - -/*---------------- Search results window */ - -#search-results-window { - display: none; -} - -iframe#MSearchResults { - width: 100%; - height: 15em; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} -.SRPage .SRChildren { - display: none; -} -a.SRScope { - display: block; -} -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} -span.SRScope { - padding-left: 4px; -} -.SRResult { - display: none; -} - -/* class and file list */ -.directory .icona, -.directory .arrow { - height: auto; -} -.directory .icona .icon { - height: 16px; -} -.directory .icondoc { - background-position: 0px 0px; - height: 20px; -} -.directory .iconfopen { - background-position: 0px 0px; -} -.directory td.entry { - padding: 7px 8px 6px 8px; -} - -.table > tbody > tr > td.memSeparator { - line-height: 0; - .table-hover; - -} - -.memItemLeft, .memTemplItemLeft { - white-space: normal; -} - -/* enumerations */ -.panel-body thead > tr { - background-color: #e0e0e0; -} - -/* todo lists */ -.todoname, -.todoname a { - font-weight: bold; -} - -/* Class title */ -.summary { - margin-top: 25px; -} -.page-header { - margin: 20px 0px !important; -} -.page-header .title { - display: inline-block; -} -.page-header .pull-right { - margin-top: 0.3em; - margin-left: 0.5em; -} -.page-header .label { - font-size: 50%; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} diff --git a/doc/.doxygen/doxy-boot.js b/doc/.doxygen/doxy-boot.js deleted file mode 100644 index 3ffd9471b9..0000000000 --- a/doc/.doxygen/doxy-boot.js +++ /dev/null @@ -1,278 +0,0 @@ -$( document ).ready(function() { - $("div.headertitle").addClass("page-header"); - $("div.title").addClass("h1"); - - $('li > a[href="index.html"] > span').before(" "); - $('li > a[href="modules.html"] > span').before(" "); - $('li > a[href="namespaces.html"] > span').before(" "); - $('li > a[href="annotated.html"] > span').before(" "); - $('li > a[href="classes.html"] > span').before(" "); - $('li > a[href="inherits.html"] > span').before(" "); - $('li > a[href="functions.html"] > span').before(" "); - $('li > a[href="functions_func.html"] > span').before(" "); - $('li > a[href="functions_vars.html"] > span').before(" "); - $('li > a[href="functions_enum.html"] > span').before(" "); - $('li > a[href="functions_eval.html"] > span').before(" "); - $('img[src="ftv2ns.png"]').replaceWith('N '); - $('img[src="ftv2cl.png"]').replaceWith('C '); - - $("ul.tablist").addClass("nav nav-pills nav-justified"); - $("ul.tablist").css("margin-top", "0.5em"); - $("ul.tablist").css("margin-bottom", "0.5em"); - $("li.current").addClass("active"); - $("iframe").attr("scrolling", "yes"); - - $("#nav-path > ul").addClass("breadcrumb"); - - $("table.params").addClass("table"); - $("div.ingroups").wrapInner(""); - $("div.levels").css("margin", "0.5em"); - $("div.levels > span").addClass("btn btn-default btn-xs"); - $("div.levels > span").css("margin-right", "0.25em"); - - $("table.directory").addClass("table table-striped"); - $("div.summary > a").addClass("btn btn-default btn-xs"); - $("table.fieldtable").addClass("table"); - $(".fragment").addClass("well"); - $(".memitem").addClass("panel panel-default"); - $(".memproto").addClass("panel-heading"); - $(".memdoc").addClass("panel-body"); - $("span.mlabel").addClass("label label-info"); - - $("table.memberdecls").addClass("table"); - $("[class^=memitem]").addClass("active"); - - $("div.ah").addClass("btn btn-default"); - $("span.mlabels").addClass("pull-right"); - $("table.mlabels").css("width", "100%"); - $("td.mlabels-right").addClass("pull-right"); - - $("div.ttc").addClass("panel panel-primary"); - $("div.ttname").addClass("panel-heading"); - $("div.ttname a").css("color", 'white'); - $("div.ttdef,div.ttdoc,div.ttdeci").addClass("panel-body"); - - $('div.fragment.well div.line:first').css('margin-top', '2px'); - $('div.fragment.well div.line:last').css('margin-bottom', '2px'); - - $('table.doxtable').removeClass('doxtable').addClass('table table-striped table-bordered').each(function(){ - $(this).prepend(''); - $(this).find('tbody > tr:first').prependTo($(this).find('thead')); - - $(this).find('td > span.success').parent().addClass('success'); - $(this).find('td > span.warning').parent().addClass('warning'); - $(this).find('td > span.danger').parent().addClass('danger'); - }); - - - - if($('div.fragment.well div.ttc').length > 0) - { - $('div.fragment.well div.line:first').parent().removeClass('fragment well'); - } - - $('table.memberdecls').find('.memItemRight').each(function(){ - $(this).contents().appendTo($(this).siblings('.memItemLeft')); - $(this).siblings('.memItemLeft').attr('align', 'left'); - }); - - $('table.memberdecls').find('.memTemplItemRight').each(function(){ - $(this).contents().appendTo($(this).siblings('.memTemplItemLeft')); - $(this).siblings('.memTemplItemLeft').attr('align', 'left'); - }); - - function getOriginalWidthOfImg(img_element) { - var t = new Image(); - t.src = (img_element.getAttribute ? img_element.getAttribute("src") : false) || img_element.src; - return t.width; - } - - $('div.dyncontent').find('img').each(function(){ - if(getOriginalWidthOfImg($(this)[0]) > $('#content>div.container').width()) - $(this).css('width', '100%'); - }); - - var nav_container = $('#main-nav').detach(); - nav_container.addClass('nav navbar-nav navbar-right'); - $('nav > .container').append(nav_container); - $('#main-nav > ul').addClass('nav navbar-nav navbar-right'); - $('#main-nav * li > ul').addClass('dropdown-menu'); - - - - /* responsive search box */ - //$('#MSearchBox').parent().remove(); - - /* - var nav_container = $('
'); - $('#navrow1').parent().prepend(nav_container); - - var left_nav = $('
'); - for (i = 0; i < 6; i++) { - var navrow = $('#navrow' + i + ' > ul.tablist').detach(); - left_nav.append(navrow); - $('#navrow' + i).remove(); - } - var right_nav = $('
').append('\ - '); - $(nav_container).append(left_nav); - $(nav_container).append(right_nav); - - - $('#MSearchSelectWindow .SelectionMark').remove(); - var search_selectors = $('#MSearchSelectWindow .SelectItem'); - for (var i = 0; i < search_selectors.length; i += 1) { - var element_a = $('').text($(search_selectors[i]).text()); - - element_a.click(function(){ - $('#search-box .dropdown-menu li').removeClass('active'); - $(this).parent().addClass('active'); - searchBox.OnSelectItem($('#search-box li a').index(this)); - searchBox.Search(); - return false; - }); - - var element = $('
  • ').append(element_a); - $('#search-box .dropdown-menu').append(element); - } - $('#MSearchSelectWindow').remove(); - - $('#search-box .close').click(function (){ - searchBox.CloseResultsWindow(); - }); - - $('body').append('
    '); - $('body').append('
    '); - $('body').append('
    '); - - searchBox.searchLabel = ''; - searchBox.DOMSearchField = function() { - return document.getElementById("search-field"); - } - searchBox.DOMSearchClose = function(){ - return document.getElementById("search-close"); - } - */ - /* search results */ - - var results_iframe = $('#MSearchResults').detach(); - $('#MSearchResultsWindow') - .attr('id', 'search-results-window') - .addClass('panel panel-default') - .append( - '
    \ -

    Search Results

    \ -
    \ -
    ' - ); - $('#search-results-window .panel-body').append(results_iframe); - - searchBox.DOMPopupSearchResultsWindow = function() { - return document.getElementById("search-results-window"); - }; - - function update_search_results_window() { - $('#search-results-window').removeClass('panel-default panel-success panel-warning panel-danger'); - var status = $('#MSearchResults').contents().find('.SRStatus:visible'); - if (status.length > 0) { - switch(status.attr('id')) { - case 'Loading': - case 'Searching': - $('#search-results-window').addClass('panel-warning'); - break; - case 'NoMatches': - $('#search-results-window').addClass('panel-danger'); - break; - default: - $('#search-results-window').addClass('panel-default'); - } - } else { - $('#search-results-window').addClass('panel-success'); - } - } - $('#MSearchResults').load(function() { - $('#MSearchResults').contents().find('link[href="search.css"]').attr('href','../doxygen.css'); - $('#MSearchResults').contents().find('head').append( - ''); - - update_search_results_window(); - - // detect status changes (only for search with external search backend) - var observer = new MutationObserver(function(mutations) { - update_search_results_window(); - }); - var config = { attributes: true}; - - var targets = $('#MSearchResults').contents().find('.SRStatus'); - for (i = 0; i < targets.length; i++) { - observer.observe(targets[i], config); - } - }); - - /* enumerations */ - $('table.fieldtable').removeClass('fieldtable').addClass('table table-striped table-bordered').each(function(){ - $(this).prepend(''); - $(this).find('tbody > tr:first').prependTo($(this).find('thead')); - - $(this).find('td > span.success').parent().addClass('success'); - $(this).find('td > span.warning').parent().addClass('warning'); - $(this).find('td > span.danger').parent().addClass('danger'); - }); - - /* todo list */ - var todoelements = $('.contents > .textblock > dl.reflist > dt, .contents > .textblock > dl.reflist > dd'); - for (var i = 0; i < todoelements.length; i += 2) { - $('.contents > .textblock').append( - '
    ' - + "
    " + $(todoelements[i]).html() + "
    " - + "
    " + $(todoelements[i+1]).html() + "
    " - + '
    '); - } - $('.contents > .textblock > dl').remove(); - - - $(".memitem").removeClass('memitem'); - $(".memproto").removeClass('memproto'); - $(".memdoc").removeClass('memdoc'); - $("span.mlabel").removeClass('mlabel'); - $("table.memberdecls").removeClass('memberdecls'); - $("[class^=memitem]").removeClass('memitem'); - $("span.mlabels").removeClass('mlabels'); - $("table.mlabels").removeClass('mlabels'); - $("td.mlabels-right").removeClass('mlabels-right'); - $(".navpath").removeClass('navpath'); - $("li.navelem").removeClass('navelem'); - $("a.el").removeClass('el'); - $("div.ah").removeClass('ah'); - $("div.header").removeClass("header"); - - $('.mdescLeft').each(function(){ - if($(this).html()==" ") { - $(this).siblings('.mdescRight').attr('colspan', 2); - $(this).remove(); - } - }); - $('td.memItemLeft').each(function(){ - if($(this).siblings('.memItemRight').html()=="") { - $(this).attr('colspan', 2); - $(this).siblings('.memItemRight').remove(); - } - }); - $('td.memTemplItemLeft').each(function(){ - if($(this).siblings('.memTemplItemRight').html()=="") { - $(this).attr('colspan', 2); - $(this).siblings('.memTemplItemRight').remove(); - } - }); - //searchBox.CloseResultsWindow(); -}); diff --git a/doc/.doxygen/header.html b/doc/.doxygen/header.html index 6b088e61b9..47ccd2acd6 100644 --- a/doc/.doxygen/header.html +++ b/doc/.doxygen/header.html @@ -1,47 +1,86 @@ - - - - - - - + + + + + + + + + $projectname: $title + $title + + + + + + + + + + + + + + + $treeview + $search + $mathjax + $darkmode + + $extrastylesheet + + + + + + + +
    + + - - - - +
    - $projectname: $title - $title - - - $treeview - $search - $mathjax - - $extrastylesheet - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    - + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    $projectname $projectnumber +
    +
    $projectbrief
    +
    +
    $projectbrief
    +
    $searchbox
    $searchbox
    +
    + + diff --git a/doc/.doxygen/jquery.smartmenus.js b/doc/.doxygen/jquery.smartmenus.js deleted file mode 100755 index bca929094c..0000000000 --- a/doc/.doxygen/jquery.smartmenus.js +++ /dev/null @@ -1,1223 +0,0 @@ -/*! - * SmartMenus jQuery Plugin - v1.0.1 - November 1, 2016 - * http://www.smartmenus.org/ - * - * Copyright Vasil Dinkov, Vadikom Web Ltd. - * http://vadikom.com - * - * Licensed MIT - */ - -(function(factory) { - if (typeof define === 'function' && define.amd) { - // AMD - define(['jquery'], factory); - } else if (typeof module === 'object' && typeof module.exports === 'object') { - // CommonJS - module.exports = factory(require('jquery')); - } else { - // Global jQuery - factory(jQuery); - } -} (function($) { - - var menuTrees = [], - IE = !!window.createPopup, // detect it for the iframe shim - mouse = false, // optimize for touch by default - we will detect for mouse input - touchEvents = 'ontouchstart' in window, // we use this just to choose between toucn and pointer events, not for touch screen detection - mouseDetectionEnabled = false, - requestAnimationFrame = window.requestAnimationFrame || function(callback) { return setTimeout(callback, 1000 / 60); }, - cancelAnimationFrame = window.cancelAnimationFrame || function(id) { clearTimeout(id); }; - - // Handle detection for mouse input (i.e. desktop browsers, tablets with a mouse, etc.) - function initMouseDetection(disable) { - var eNS = '.smartmenus_mouse'; - if (!mouseDetectionEnabled && !disable) { - // if we get two consecutive mousemoves within 2 pixels from each other and within 300ms, we assume a real mouse/cursor is present - // in practice, this seems like impossible to trick unintentianally with a real mouse and a pretty safe detection on touch devices (even with older browsers that do not support touch events) - var firstTime = true, - lastMove = null; - $(document).bind(getEventsNS([ - ['mousemove', function(e) { - var thisMove = { x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() }; - if (lastMove) { - var deltaX = Math.abs(lastMove.x - thisMove.x), - deltaY = Math.abs(lastMove.y - thisMove.y); - if ((deltaX > 0 || deltaY > 0) && deltaX <= 2 && deltaY <= 2 && thisMove.timeStamp - lastMove.timeStamp <= 300) { - mouse = true; - // if this is the first check after page load, check if we are not over some item by chance and call the mouseenter handler if yes - if (firstTime) { - var $a = $(e.target).closest('a'); - if ($a.is('a')) { - $.each(menuTrees, function() { - if ($.contains(this.$root[0], $a[0])) { - this.itemEnter({ currentTarget: $a[0] }); - return false; - } - }); - } - firstTime = false; - } - } - } - lastMove = thisMove; - }], - [touchEvents ? 'touchstart' : 'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut', function(e) { - if (isTouchEvent(e.originalEvent)) { - mouse = false; - } - }] - ], eNS)); - mouseDetectionEnabled = true; - } else if (mouseDetectionEnabled && disable) { - $(document).unbind(eNS); - mouseDetectionEnabled = false; - } - } - - function isTouchEvent(e) { - return !/^(4|mouse)$/.test(e.pointerType); - } - - // returns a jQuery bind() ready object - function getEventsNS(defArr, eNS) { - if (!eNS) { - eNS = ''; - } - var obj = {}; - $.each(defArr, function(index, value) { - obj[value[0].split(' ').join(eNS + ' ') + eNS] = value[1]; - }); - return obj; - } - - $.SmartMenus = function(elm, options) { - this.$root = $(elm); - this.opts = options; - this.rootId = ''; // internal - this.accessIdPrefix = ''; - this.$subArrow = null; - this.activatedItems = []; // stores last activated A's for each level - this.visibleSubMenus = []; // stores visible sub menus UL's (might be in no particular order) - this.showTimeout = 0; - this.hideTimeout = 0; - this.scrollTimeout = 0; - this.clickActivated = false; - this.focusActivated = false; - this.zIndexInc = 0; - this.idInc = 0; - this.$firstLink = null; // we'll use these for some tests - this.$firstSub = null; // at runtime so we'll cache them - this.disabled = false; - this.$disableOverlay = null; - this.$touchScrollingSub = null; - this.cssTransforms3d = 'perspective' in elm.style || 'webkitPerspective' in elm.style; - this.wasCollapsible = false; - this.init(); - }; - - $.extend($.SmartMenus, { - hideAll: function() { - $.each(menuTrees, function() { - this.menuHideAll(); - }); - }, - destroy: function() { - while (menuTrees.length) { - menuTrees[0].destroy(); - } - initMouseDetection(true); - }, - prototype: { - init: function(refresh) { - var self = this; - - if (!refresh) { - menuTrees.push(this); - - this.rootId = (new Date().getTime() + Math.random() + '').replace(/\D/g, ''); - this.accessIdPrefix = 'sm-' + this.rootId + '-'; - - if (this.$root.hasClass('sm-rtl')) { - this.opts.rightToLeftSubMenus = true; - } - - // init root (main menu) - var eNS = '.smartmenus'; - this.$root - .data('smartmenus', this) - .attr('data-smartmenus-id', this.rootId) - .dataSM('level', 1) - .bind(getEventsNS([ - ['mouseover focusin', $.proxy(this.rootOver, this)], - ['mouseout focusout', $.proxy(this.rootOut, this)], - ['keydown', $.proxy(this.rootKeyDown, this)] - ], eNS)) - .delegate('a', getEventsNS([ - ['mouseenter', $.proxy(this.itemEnter, this)], - ['mouseleave', $.proxy(this.itemLeave, this)], - ['mousedown', $.proxy(this.itemDown, this)], - ['focus', $.proxy(this.itemFocus, this)], - ['blur', $.proxy(this.itemBlur, this)], - ['click', $.proxy(this.itemClick, this)] - ], eNS)); - - // hide menus on tap or click outside the root UL - eNS += this.rootId; - if (this.opts.hideOnClick) { - $(document).bind(getEventsNS([ - ['touchstart', $.proxy(this.docTouchStart, this)], - ['touchmove', $.proxy(this.docTouchMove, this)], - ['touchend', $.proxy(this.docTouchEnd, this)], - // for Opera Mobile < 11.5, webOS browser, etc. we'll check click too - ['click', $.proxy(this.docClick, this)] - ], eNS)); - } - // hide sub menus on resize - $(window).bind(getEventsNS([['resize orientationchange', $.proxy(this.winResize, this)]], eNS)); - - if (this.opts.subIndicators) { - this.$subArrow = $('').addClass('sub-arrow'); - if (this.opts.subIndicatorsText) { - this.$subArrow.html(this.opts.subIndicatorsText); - } - } - - // make sure mouse detection is enabled - initMouseDetection(); - } - - // init sub menus - this.$firstSub = this.$root.find('ul').each(function() { self.menuInit($(this)); }).eq(0); - - this.$firstLink = this.$root.find('a').eq(0); - - // find current item - if (this.opts.markCurrentItem) { - var reDefaultDoc = /(index|default)\.[^#\?\/]*/i, - reHash = /#.*/, - locHref = window.location.href.replace(reDefaultDoc, ''), - locHrefNoHash = locHref.replace(reHash, ''); - this.$root.find('a').each(function() { - var href = this.href.replace(reDefaultDoc, ''), - $this = $(this); - if (href == locHref || href == locHrefNoHash) { - $this.addClass('current'); - if (self.opts.markCurrentTree) { - $this.parentsUntil('[data-smartmenus-id]', 'ul').each(function() { - $(this).dataSM('parent-a').addClass('current'); - }); - } - } - }); - } - - // save initial state - this.wasCollapsible = this.isCollapsible(); - }, - destroy: function(refresh) { - if (!refresh) { - var eNS = '.smartmenus'; - this.$root - .removeData('smartmenus') - .removeAttr('data-smartmenus-id') - .removeDataSM('level') - .unbind(eNS) - .undelegate(eNS); - eNS += this.rootId; - $(document).unbind(eNS); - $(window).unbind(eNS); - if (this.opts.subIndicators) { - this.$subArrow = null; - } - } - this.menuHideAll(); - var self = this; - this.$root.find('ul').each(function() { - var $this = $(this); - if ($this.dataSM('scroll-arrows')) { - $this.dataSM('scroll-arrows').remove(); - } - if ($this.dataSM('shown-before')) { - if (self.opts.subMenusMinWidth || self.opts.subMenusMaxWidth) { - $this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap'); - } - if ($this.dataSM('scroll-arrows')) { - $this.dataSM('scroll-arrows').remove(); - } - $this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' }); - } - if (($this.attr('id') || '').indexOf(self.accessIdPrefix) == 0) { - $this.removeAttr('id'); - } - }) - .removeDataSM('in-mega') - .removeDataSM('shown-before') - .removeDataSM('ie-shim') - .removeDataSM('scroll-arrows') - .removeDataSM('parent-a') - .removeDataSM('level') - .removeDataSM('beforefirstshowfired') - .removeAttr('role') - .removeAttr('aria-hidden') - .removeAttr('aria-labelledby') - .removeAttr('aria-expanded'); - this.$root.find('a.has-submenu').each(function() { - var $this = $(this); - if ($this.attr('id').indexOf(self.accessIdPrefix) == 0) { - $this.removeAttr('id'); - } - }) - .removeClass('has-submenu') - .removeDataSM('sub') - .removeAttr('aria-haspopup') - .removeAttr('aria-controls') - .removeAttr('aria-expanded') - .closest('li').removeDataSM('sub'); - if (this.opts.subIndicators) { - this.$root.find('span.sub-arrow').remove(); - } - if (this.opts.markCurrentItem) { - this.$root.find('a.current').removeClass('current'); - } - if (!refresh) { - this.$root = null; - this.$firstLink = null; - this.$firstSub = null; - if (this.$disableOverlay) { - this.$disableOverlay.remove(); - this.$disableOverlay = null; - } - menuTrees.splice($.inArray(this, menuTrees), 1); - } - }, - disable: function(noOverlay) { - if (!this.disabled) { - this.menuHideAll(); - // display overlay over the menu to prevent interaction - if (!noOverlay && !this.opts.isPopup && this.$root.is(':visible')) { - var pos = this.$root.offset(); - this.$disableOverlay = $('
    ').css({ - position: 'absolute', - top: pos.top, - left: pos.left, - width: this.$root.outerWidth(), - height: this.$root.outerHeight(), - zIndex: this.getStartZIndex(true), - opacity: 0 - }).appendTo(document.body); - } - this.disabled = true; - } - }, - docClick: function(e) { - if (this.$touchScrollingSub) { - this.$touchScrollingSub = null; - return; - } - // hide on any click outside the menu or on a menu link - if (this.visibleSubMenus.length && !$.contains(this.$root[0], e.target) || $(e.target).is('a')) { - this.menuHideAll(); - } - }, - docTouchEnd: function(e) { - if (!this.lastTouch) { - return; - } - if (this.visibleSubMenus.length && (this.lastTouch.x2 === undefined || this.lastTouch.x1 == this.lastTouch.x2) && (this.lastTouch.y2 === undefined || this.lastTouch.y1 == this.lastTouch.y2) && (!this.lastTouch.target || !$.contains(this.$root[0], this.lastTouch.target))) { - if (this.hideTimeout) { - clearTimeout(this.hideTimeout); - this.hideTimeout = 0; - } - // hide with a delay to prevent triggering accidental unwanted click on some page element - var self = this; - this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, 350); - } - this.lastTouch = null; - }, - docTouchMove: function(e) { - if (!this.lastTouch) { - return; - } - var touchPoint = e.originalEvent.touches[0]; - this.lastTouch.x2 = touchPoint.pageX; - this.lastTouch.y2 = touchPoint.pageY; - }, - docTouchStart: function(e) { - var touchPoint = e.originalEvent.touches[0]; - this.lastTouch = { x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target }; - }, - enable: function() { - if (this.disabled) { - if (this.$disableOverlay) { - this.$disableOverlay.remove(); - this.$disableOverlay = null; - } - this.disabled = false; - } - }, - getClosestMenu: function(elm) { - var $closestMenu = $(elm).closest('ul'); - while ($closestMenu.dataSM('in-mega')) { - $closestMenu = $closestMenu.parent().closest('ul'); - } - return $closestMenu[0] || null; - }, - getHeight: function($elm) { - return this.getOffset($elm, true); - }, - // returns precise width/height float values - getOffset: function($elm, height) { - var old; - if ($elm.css('display') == 'none') { - old = { position: $elm[0].style.position, visibility: $elm[0].style.visibility }; - $elm.css({ position: 'absolute', visibility: 'hidden' }).show(); - } - var box = $elm[0].getBoundingClientRect && $elm[0].getBoundingClientRect(), - val = box && (height ? box.height || box.bottom - box.top : box.width || box.right - box.left); - if (!val && val !== 0) { - val = height ? $elm[0].offsetHeight : $elm[0].offsetWidth; - } - if (old) { - $elm.hide().css(old); - } - return val; - }, - getStartZIndex: function(root) { - var zIndex = parseInt(this[root ? '$root' : '$firstSub'].css('z-index')); - if (!root && isNaN(zIndex)) { - zIndex = parseInt(this.$root.css('z-index')); - } - return !isNaN(zIndex) ? zIndex : 1; - }, - getTouchPoint: function(e) { - return e.touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e; - }, - getViewport: function(height) { - var name = height ? 'Height' : 'Width', - val = document.documentElement['client' + name], - val2 = window['inner' + name]; - if (val2) { - val = Math.min(val, val2); - } - return val; - }, - getViewportHeight: function() { - return this.getViewport(true); - }, - getViewportWidth: function() { - return this.getViewport(); - }, - getWidth: function($elm) { - return this.getOffset($elm); - }, - handleEvents: function() { - return !this.disabled && this.isCSSOn(); - }, - handleItemEvents: function($a) { - return this.handleEvents() && !this.isLinkInMegaMenu($a); - }, - isCollapsible: function() { - return this.$firstSub.css('position') == 'static'; - }, - isCSSOn: function() { - return this.$firstLink.css('display') == 'block'; - }, - isFixed: function() { - var isFixed = this.$root.css('position') == 'fixed'; - if (!isFixed) { - this.$root.parentsUntil('body').each(function() { - if ($(this).css('position') == 'fixed') { - isFixed = true; - return false; - } - }); - } - return isFixed; - }, - isLinkInMegaMenu: function($a) { - return $(this.getClosestMenu($a[0])).hasClass('mega-menu'); - }, - isTouchMode: function() { - return !mouse || this.opts.noMouseOver || this.isCollapsible(); - }, - itemActivate: function($a, focus) { - var $ul = $a.closest('ul'), - level = $ul.dataSM('level'); - // if for some reason the parent item is not activated (e.g. this is an API call to activate the item), activate all parent items first - if (level > 1 && (!this.activatedItems[level - 2] || this.activatedItems[level - 2][0] != $ul.dataSM('parent-a')[0])) { - var self = this; - $($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function() { - self.itemActivate($(this).dataSM('parent-a')); - }); - } - // hide any visible deeper level sub menus - if (!this.isCollapsible() || focus) { - this.menuHideSubMenus(!this.activatedItems[level - 1] || this.activatedItems[level - 1][0] != $a[0] ? level - 1 : level); - } - // save new active item for this level - this.activatedItems[level - 1] = $a; - if (this.$root.triggerHandler('activate.smapi', $a[0]) === false) { - return; - } - // show the sub menu if this item has one - var $sub = $a.dataSM('sub'); - if ($sub && (this.isTouchMode() || (!this.opts.showOnClick || this.clickActivated))) { - this.menuShow($sub); - } - }, - itemBlur: function(e) { - var $a = $(e.currentTarget); - if (!this.handleItemEvents($a)) { - return; - } - this.$root.triggerHandler('blur.smapi', $a[0]); - }, - itemClick: function(e) { - var $a = $(e.currentTarget); - if (!this.handleItemEvents($a)) { - return; - } - if (this.$touchScrollingSub && this.$touchScrollingSub[0] == $a.closest('ul')[0]) { - this.$touchScrollingSub = null; - e.stopPropagation(); - return false; - } - if (this.$root.triggerHandler('click.smapi', $a[0]) === false) { - return false; - } - var subArrowClicked = $(e.target).is('span.sub-arrow'), - $sub = $a.dataSM('sub'), - firstLevelSub = $sub ? $sub.dataSM('level') == 2 : false; - // if the sub is not visible - if ($sub && !$sub.is(':visible')) { - if (this.opts.showOnClick && firstLevelSub) { - this.clickActivated = true; - } - // try to activate the item and show the sub - this.itemActivate($a); - // if "itemActivate" showed the sub, prevent the click so that the link is not loaded - // if it couldn't show it, then the sub menus are disabled with an !important declaration (e.g. via mobile styles) so let the link get loaded - if ($sub.is(':visible')) { - this.focusActivated = true; - return false; - } - } else if (this.isCollapsible() && subArrowClicked) { - this.itemActivate($a); - this.menuHide($sub); - return false; - } - if (this.opts.showOnClick && firstLevelSub || $a.hasClass('disabled') || this.$root.triggerHandler('select.smapi', $a[0]) === false) { - return false; - } - }, - itemDown: function(e) { - var $a = $(e.currentTarget); - if (!this.handleItemEvents($a)) { - return; - } - $a.dataSM('mousedown', true); - }, - itemEnter: function(e) { - var $a = $(e.currentTarget); - if (!this.handleItemEvents($a)) { - return; - } - if (!this.isTouchMode()) { - if (this.showTimeout) { - clearTimeout(this.showTimeout); - this.showTimeout = 0; - } - var self = this; - this.showTimeout = setTimeout(function() { self.itemActivate($a); }, this.opts.showOnClick && $a.closest('ul').dataSM('level') == 1 ? 1 : this.opts.showTimeout); - } - this.$root.triggerHandler('mouseenter.smapi', $a[0]); - }, - itemFocus: function(e) { - var $a = $(e.currentTarget); - if (!this.handleItemEvents($a)) { - return; - } - // fix (the mousedown check): in some browsers a tap/click produces consecutive focus + click events so we don't need to activate the item on focus - if (this.focusActivated && (!this.isTouchMode() || !$a.dataSM('mousedown')) && (!this.activatedItems.length || this.activatedItems[this.activatedItems.length - 1][0] != $a[0])) { - this.itemActivate($a, true); - } - this.$root.triggerHandler('focus.smapi', $a[0]); - }, - itemLeave: function(e) { - var $a = $(e.currentTarget); - if (!this.handleItemEvents($a)) { - return; - } - if (!this.isTouchMode()) { - $a[0].blur(); - if (this.showTimeout) { - clearTimeout(this.showTimeout); - this.showTimeout = 0; - } - } - $a.removeDataSM('mousedown'); - this.$root.triggerHandler('mouseleave.smapi', $a[0]); - }, - menuHide: function($sub) { - if (this.$root.triggerHandler('beforehide.smapi', $sub[0]) === false) { - return; - } - $sub.stop(true, true); - if ($sub.css('display') != 'none') { - var complete = function() { - // unset z-index - $sub.css('z-index', ''); - }; - // if sub is collapsible (mobile view) - if (this.isCollapsible()) { - if (this.opts.collapsibleHideFunction) { - this.opts.collapsibleHideFunction.call(this, $sub, complete); - } else { - $sub.hide(this.opts.collapsibleHideDuration, complete); - } - } else { - if (this.opts.hideFunction) { - this.opts.hideFunction.call(this, $sub, complete); - } else { - $sub.hide(this.opts.hideDuration, complete); - } - } - // remove IE iframe shim - if ($sub.dataSM('ie-shim')) { - $sub.dataSM('ie-shim').remove().css({ '-webkit-transform': '', transform: '' }); - } - // deactivate scrolling if it is activated for this sub - if ($sub.dataSM('scroll')) { - this.menuScrollStop($sub); - $sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' }) - .unbind('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide(); - } - // unhighlight parent item + accessibility - $sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false'); - $sub.attr({ - 'aria-expanded': 'false', - 'aria-hidden': 'true' - }); - var level = $sub.dataSM('level'); - this.activatedItems.splice(level - 1, 1); - this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1); - this.$root.triggerHandler('hide.smapi', $sub[0]); - } - }, - menuHideAll: function() { - if (this.showTimeout) { - clearTimeout(this.showTimeout); - this.showTimeout = 0; - } - // hide all subs - // if it's a popup, this.visibleSubMenus[0] is the root UL - var level = this.opts.isPopup ? 1 : 0; - for (var i = this.visibleSubMenus.length - 1; i >= level; i--) { - this.menuHide(this.visibleSubMenus[i]); - } - // hide root if it's popup - if (this.opts.isPopup) { - this.$root.stop(true, true); - if (this.$root.is(':visible')) { - if (this.opts.hideFunction) { - this.opts.hideFunction.call(this, this.$root); - } else { - this.$root.hide(this.opts.hideDuration); - } - // remove IE iframe shim - if (this.$root.dataSM('ie-shim')) { - this.$root.dataSM('ie-shim').remove(); - } - } - } - this.activatedItems = []; - this.visibleSubMenus = []; - this.clickActivated = false; - this.focusActivated = false; - // reset z-index increment - this.zIndexInc = 0; - this.$root.triggerHandler('hideAll.smapi'); - }, - menuHideSubMenus: function(level) { - for (var i = this.activatedItems.length - 1; i >= level; i--) { - var $sub = this.activatedItems[i].dataSM('sub'); - if ($sub) { - this.menuHide($sub); - } - } - }, - menuIframeShim: function($ul) { - // create iframe shim for the menu - if (IE && this.opts.overlapControlsInIE && !$ul.dataSM('ie-shim')) { - $ul.dataSM('ie-shim', $('