From e4aec3f95e855a7cb2c647d52bff4bab611f8a4c Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 15 Mar 2022 15:10:59 +0300 Subject: [PATCH] Doxyfile.in upgrade --- CMakeLists.txt | 5 +- doc/Doxyfile.in | 335 +++++++++++++--------- doc/pip.png | Bin 0 -> 1885 bytes libs/main/containers/picontainers.h | 7 +- libs/main/containers/picontainersmodule.h | 11 +- logo.png | Bin 0 -> 8108 bytes 6 files changed, 215 insertions(+), 143 deletions(-) create mode 100644 doc/pip.png create mode 100644 logo.png diff --git a/CMakeLists.txt b/CMakeLists.txt index e55205be..5b74c633 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -555,7 +555,9 @@ if ((NOT PIP_FREERTOS) AND (NOT CROSSTOOLS)) set(DOXY_QHP_SECT_FILTER_ATTRS "\"PIP ${pip_VERSION}\"") set(DOXY_EXAMPLE_PATH "\"${CMAKE_CURRENT_SOURCE_DIR}/doc/examples\"") set(DOXY_IMAGE_PATH "\"${CMAKE_CURRENT_SOURCE_DIR}/doc/images\"") + set(DOXY_LOGO_PATH "\"${CMAKE_CURRENT_SOURCE_DIR}/doc/pip.png\"") set(DOXY_EXCLUDE "\"${CMAKE_CURRENT_SOURCE_DIR}/libs/lua/3rd\"") + set(DOXY_DOMAIN "${pip_DOMAIN}.${PROJECT_NAME}.doc") if ("x${DOC_LANG}" STREQUAL "x") set(DOXY_OUTPUT_LANGUAGE English) set(DOXY_OUTPUT_DIR en) @@ -564,9 +566,8 @@ if ((NOT PIP_FREERTOS) AND (NOT CROSSTOOLS)) set(DOXY_OUTPUT_DIR ${DOC_DIR}) endif() if(DOXYGEN_DOT_EXECUTABLE) - string(REPLACE "\\" "" _DOT_PATH "${DOXYGEN_DOT_PATH}") + string(REPLACE "\\" "/" _DOT_PATH "${DOXYGEN_DOT_PATH}") set(DOXY_DOT_PATH "\"${_DOT_PATH}\"") - set(DOXY_MSCGEN_PATH "\"${_DOT_PATH}\"") set(DOXY_DIA_PATH "\"${_DOT_PATH}\"") endif() set(DOXY_INPUT) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index d36ddaa0..d2dd9bc3 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -1,4 +1,4 @@ -# Doxyfile 1.8.15 +# Doxyfile 1.9.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -51,7 +51,7 @@ PROJECT_BRIEF = "Platform-Independent Primitives" # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = ${DOXY_LOGO_PATH} # 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 @@ -197,10 +197,20 @@ SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO +# 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. +# 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.) +# requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO @@ -217,6 +227,14 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = YES +# 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. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. @@ -256,12 +274,6 @@ ALIASES = "handlers=\name Handlers" \ "events=\name Events" \ "ioparams=\name Configurable parameters" -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all @@ -302,19 +314,22 @@ 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, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, 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), VHDL, tcl. 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. +# 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. +# 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 = @@ -332,7 +347,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: 0. +# Minimum value: 0, maximum value: 99, default value: 5. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 0 @@ -448,6 +463,19 @@ TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 +# The NUM_PROC_THREADS specifies the number 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 +# threads. Since this is still an experimental feature the default is set to 1, +# which efficively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -468,6 +496,12 @@ EXTRACT_ALL = NO EXTRACT_PRIVATE = NO +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = YES + # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. @@ -505,6 +539,13 @@ EXTRACT_LOCAL_METHODS = YES EXTRACT_ANON_NSPACES = NO +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + # 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 @@ -522,8 +563,8 @@ HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. +# declarations. If set to NO, these declarations will be included in the +# documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = YES @@ -542,11 +583,18 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. +# 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 +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# 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 +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. # The default value is: system dependent. CASE_SENSE_NAMES = NO @@ -785,7 +833,10 @@ WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. +# 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. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. # The default value is: NO. WARN_AS_ERROR = NO @@ -821,8 +872,8 @@ INPUT = ${DOXY_INPUT} # 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 # 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. +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 @@ -835,46 +886,20 @@ INPUT_ENCODING = UTF-8 # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, +# *.ucf, *.qsf and *.ice. -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ +FILE_PATTERNS = *.c \ *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.f90 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl + *.md # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. @@ -1087,16 +1112,22 @@ USE_HTAGS = NO VERBATIM_HEADERS = NO # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse_libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO +# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to +# YES then doxygen will add the directory of each input to the include path. +# The default value is: YES. + +CLANG_ADD_INC_PATHS = YES + # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories @@ -1106,10 +1137,13 @@ CLANG_ASSISTED_PARSING = NO CLANG_OPTIONS = # If clang assisted parsing is enabled you can provide the clang parser with the -# path to the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files -# were built. This is equivalent to specifying the "-p" option to a clang tool, -# such as clang-check. These options will then be passed to the parser. +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse_libclang=ON option for CMake. @@ -1126,13 +1160,6 @@ CLANG_DATABASE_PATH = ALPHABETICAL_INDEX = YES -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored @@ -1239,7 +1266,7 @@ HTML_EXTRA_FILES = # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_HUE = 246 +HTML_COLORSTYLE_HUE = 221 # 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 grayscales only. A @@ -1247,7 +1274,7 @@ HTML_COLORSTYLE_HUE = 246 # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_SAT = 79 +HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 @@ -1271,9 +1298,9 @@ HTML_TIMESTAMP = YES # 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 -# are dynamically created via Javascript. If disabled, the navigation index will +# are dynamically created via JavaScript. If disabled, the navigation index will # consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have Javascript, +# page. Disable this option to support browsers that do not have JavaScript, # like the Qt help browser. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1299,14 +1326,15 @@ HTML_DYNAMIC_SECTIONS = NO # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_INDEX_NUM_ENTRIES = 100 +HTML_INDEX_NUM_ENTRIES = 1 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # 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 output directory. Running make will produce the docset in -# that directory and running make install will install the docset in +# 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 +# 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 # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy # genXcode/_index.html for more information. @@ -1329,7 +1357,7 @@ DOCSET_FEEDNAME = "Doxygen generated docs" # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. -DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_BUNDLE_ID = ${DOXY_DOMAIN} # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style @@ -1337,19 +1365,19 @@ DOCSET_BUNDLE_ID = org.doxygen.Project # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. -DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_ID = ${DOXY_DOMAIN} # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. -DOCSET_PUBLISHER_NAME = Publisher +DOCSET_PUBLISHER_NAME = PIP # 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 -# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. +# (see: +# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. # # 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 @@ -1379,7 +1407,7 @@ CHM_FILE = HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). +# (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1424,7 +1452,8 @@ QCH_FILE = pip_${DOXY_OUTPUT_DIR}.qch # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1432,8 +1461,8 @@ QHP_NAMESPACE = PIP # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- -# folders). +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1441,30 +1470,30 @@ QHP_VIRTUAL_FOLDER = PIP # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = PIP # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = ${DOXY_QHP_CUST_FILTER_ATTRS} # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = ${DOXY_QHP_SECT_FILTER_ATTRS} -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. +# 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 +# run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = qhelpgenerator @@ -1487,7 +1516,7 @@ GENERATE_ECLIPSEHELP = NO # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. -ECLIPSE_DOC_ID = org.doxygen.Project +ECLIPSE_DOC_ID = PIP # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The @@ -1515,7 +1544,7 @@ DISABLE_INDEX = NO # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_TREEVIEW = YES +GENERATE_TREEVIEW = 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. @@ -1541,6 +1570,17 @@ TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO +# 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. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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 @@ -1561,8 +1601,14 @@ FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side Javascript for the rendering +# https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path @@ -1574,7 +1620,7 @@ USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. @@ -1590,7 +1636,7 @@ MATHJAX_FORMAT = HTML-CSS # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest @@ -1604,7 +1650,8 @@ MATHJAX_EXTENSIONS = # 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/latest/output.html) for more details. For an +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -1629,10 +1676,10 @@ MATHJAX_CODEFILE = # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -SEARCHENGINE = NO +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 +# 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 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing @@ -1651,7 +1698,8 @@ SERVER_BASED_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: https://xapian.org/). +# Xapian (see: +# https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1664,8 +1712,9 @@ EXTERNAL_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: https://xapian.org/). See the section "External Indexing and -# Searching" for details. +# Xapian (see: +# https://xapian.org/). See the section "External Indexing and Searching" for +# details. # This tag requires that the tag SEARCHENGINE is set to YES. SEARCHENGINE_URL = @@ -1736,13 +1785,14 @@ LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex # The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to -# generate index for LaTeX. +# generate index for LaTeX. In case there is no backslash (\) as first character +# it will be automatically added in the LaTeX code. # Note: This tag is used in the generated output file (.tex). # See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat. -# The default value is: \makeindex. +# The default value is: makeindex. # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_MAKEINDEX_CMD = \makeindex +LATEX_MAKEINDEX_CMD = makeindex # 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 @@ -1828,9 +1878,11 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate -# the PDF file directly from the LaTeX files. Set this option to YES, to get a -# higher quality PDF documentation. +# 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. +# +# See also section LATEX_CMD_NAME for selecting the engine. # The default value is: YES. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2209,7 +2261,7 @@ TAGFILES = # 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. -GENERATE_TAGFILE = doc/html/${DOXY_OUTPUT_DIR}/pip_${DOXY_OUTPUT_DIR}.cfg +GENERATE_TAGFILE = doc/html/${DOXY_OUTPUT_DIR}/pip.cfg # If the ALLEXTERNALS tag is set to YES, all external class will be listed in # the class index. If set to NO, only the inherited external classes will be @@ -2232,12 +2284,6 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of 'which perl'). -# The default file (with absolute path) is: /usr/bin/perl. - -PERL_PATH = /usr/bin/perl - #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- @@ -2251,15 +2297,6 @@ PERL_PATH = /usr/bin/perl CLASS_DIAGRAMS = YES -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see: -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = ${DOXY_MSCGEN_PATH} - # 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. @@ -2357,10 +2394,32 @@ UML_LOOK = NO # but if the number exceeds 15, the total amount of fields shown is limited to # 10. # Minimum value: 0, maximum value: 100, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. +# This tag requires that the tag UML_LOOK is set to YES. UML_LIMIT_NUM_FIELDS = 12 +# 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 +# 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. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will wrapped across multiple lines. Some heuristics are apply +# to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and # collaboration graphs will show the relations between templates and their # instances. @@ -2550,9 +2609,11 @@ DOT_MULTI_TARGETS = YES GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# 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 and +# plantuml temporary files. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. DOT_CLEANUP = YES diff --git a/doc/pip.png b/doc/pip.png new file mode 100644 index 0000000000000000000000000000000000000000..4eea6e1c975005643f3e8fe99d2aba7a4ea755b6 GIT binary patch literal 1885 zcmV-j2cr0iP)4Tx04UFukvT{MK^TQU6U87Ng%Lz7wooerq9T?OMG+JvM(`@!-Iyq3H(@to zV=34MEIb;o!p2%#3tK@DJU}e1tQ2h|tp99;1R;V0!+gA%_n3JDfy1W_Y?QIN;#k7{!W{|Ami)kM zkrRqH6kF*v^XH!Gh4st!%(T*Fwll^!lT4vuu*NEBaztdcMRAGAezbzW&G%1<%MjNp zrZ`5(V4?ed)F1rr)=l>H7L)3uQ1k40@10P)4TZeteI0pT;TVEXaA}wPnL`--5ItYg zIu4*|6V9(nny~{HThRKL)g9fJf-(ciB)pxy&nzq)K7EWcgYD`vS zbB%0s{h0BGS*;dkFiMiG96yeQu27Og8fZX(!2OVenp~0fRw&Zg>trUNe3OFJf~UDjLx@f0;lzf$|0h z!6JGjxCelC{tz~mpyJ;WnIDkZu+23Ha(0v;>~iiO>eCNRr4mA~JD&wm!C05`Y<|3` ze{No1e9M40P3jB>;Yu02zgG*dZeJwY)eS>XP-GBwPi)TBzz;`LMSWLE zCsfopPkC1+17O17Mi*XUUI*FtsG+hn6&A;biT0L5?NE7fSkygW4}gblFfgn*G6zm{ z!xdZtgh$qDATBCsUq2;{Z5DXFyo*^lV7fS_`6j4$NRr>rdOCH(!(@=64Hxyf;#~c( zmKOZUlXZMl6ox6Q-QI89*2@PXOybC~-;pL(uP#BsT)NkAdNFQJ*VTEmheQ zp}*G-Y5+2lRq%KY7L!O%zZDEOeeKEKQ*Nj^UnZvcCMW@jitKrO>%VB2$Ews#71DyO(taGL$pa4`9uK;7!8oLZs zu7NL)tN?8y-Ga_yCHLOxK2Z-gQECMUzpk~*P*o;e{3IQ=Z=f}WbxeTWM?0abj}&}U z6HowDnBk)$8%E4F__}rw?%#V=EUf$`phD>I z$!_?i*(mDd-pRATKfPlxX!JSfo!FckjfGH}sP8Jdj)l;msC#3w5F*K~@L)UhlJXbC zXMyWIR&n(GWM+lX-(927&}yb~#SATm(P?#lCXiCter=Sdt7d4!`V0P8FxH7A%@x zTjtdE_H&MkZkAwMnDY!E`_K)l1|L!@DC9D`;Ex@mOWVk~v&?07l+*!)JpHHWB5zLJ zP>0JPK9>B2j67)Az%n|$$r2MO2Thb?+WW$YPjy4Mw@XRHYpd`c$i9EG-@hu)3mqtF zSOA^#xJh;j})?)3?m!{Kl^91e%W;cz&d1qs0a X@z16iB00000NkvXXu0mjf%4dF+ literal 0 HcmV?d00001 diff --git a/libs/main/containers/picontainers.h b/libs/main/containers/picontainers.h index 71455a12..6a126e25 100644 --- a/libs/main/containers/picontainers.h +++ b/libs/main/containers/picontainers.h @@ -1,4 +1,6 @@ -/*! \file picontainers.h +/*! \addtogroup Containers + * \{ + * \file picontainers.h * \~\brief * \~english Base macros for generic containers * \~russian Базовые макросы для контейнеров @@ -9,7 +11,7 @@ * \~russian * Иван Пелипенко peri4ko@yandex.ru; * Андрей Бычков work.a.b@yandex.ru; -*/ + * \~\} */ /* PIP - Platform Independent Primitives Base macros for generic containers @@ -143,5 +145,4 @@ template _PIReverseWrapper PIReverseWrap(const C & c) {return _P #define piForeachRC(i, c) for(const i : PIReverseWrap(c)) #define piForeachCR piForeachRC - #endif // PICONTAINERS_H diff --git a/libs/main/containers/picontainersmodule.h b/libs/main/containers/picontainersmodule.h index b16b2fef..2f04c2c6 100644 --- a/libs/main/containers/picontainersmodule.h +++ b/libs/main/containers/picontainersmodule.h @@ -16,7 +16,16 @@ You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ - +/** \defgroup Containers + * \~\brief + * \~english This module contains various standart containers realization. + * This includes + * \~russian Модуль содержит основные классы контейнеров. + * В него входят + * \~ \a PIVector, \a PIDeque, \a PIMap, \a PISet, + * \a PIStack, \a PIQueue, \a PIVector2D. + * +*/ #ifndef PICONTAINERSMODULE_H #define PICONTAINERSMODULE_H diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b00636c1578cc188792bc306b205a9743223d957 GIT binary patch literal 8108 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