From 53b341ac87dc8cfb47136b007f7fe4eba0fc2105 Mon Sep 17 00:00:00 2001 From: Nicolas Cornu Date: Wed, 7 Apr 2021 13:02:52 +0200 Subject: [PATCH 1/3] Fix documentation to reduce warnings --- docs/Doxyfile.in | 262 ++++++++++++------ src/language/templates/visitors/visitor.hpp | 4 +- src/visitors/defuse_analyze_visitor.hpp | 4 +- .../sympy_replace_solutions_visitor.cpp | 2 +- .../sympy_replace_solutions_visitor.hpp | 65 +++-- 5 files changed, 208 insertions(+), 129 deletions(-) diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index f1d13619a5..8a9ec48c67 100644 --- a/docs/Doxyfile.in +++ b/docs/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. @@ -197,6 +197,16 @@ SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES +# 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 @@ -217,6 +227,14 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO +# 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. @@ -253,12 +271,6 @@ TAB_SIZE = 4 ALIASES = -# 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 @@ -299,22 +311,25 @@ 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 = .yaml=Python -EXTENSION_MAPPING += .ispc=C +EXTENSION_MAPPING = .yaml=Python \ + .ispc=C # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable @@ -330,7 +345,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 @@ -446,6 +461,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 #--------------------------------------------------------------------------- @@ -466,6 +494,12 @@ EXTRACT_ALL = YES EXTRACT_PRIVATE = YES +# 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 = NO + # 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. @@ -503,6 +537,13 @@ EXTRACT_LOCAL_METHODS = NO 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 @@ -520,8 +561,8 @@ HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO # 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 = NO @@ -540,11 +581,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 @@ -783,7 +831,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 @@ -814,16 +865,17 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @NMODL_PROJECT_SOURCE_DIR@/src -INPUT += @NMODL_PROJECT_SOURCE_DIR@/test -INPUT += @PROJECT_BINARY_DIR@/src/ast -INPUT += @PROJECT_BINARY_DIR@/src/visitors +INPUT = @NMODL_PROJECT_SOURCE_DIR@/src \ + @NMODL_PROJECT_SOURCE_DIR@/test \ + @PROJECT_BINARY_DIR@/src/ast \ + @PROJECT_BINARY_DIR@/src/visitors \ + ../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 # 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 @@ -836,11 +888,15 @@ 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 \ @@ -858,7 +914,7 @@ FILE_PATTERNS = *.c \ *.md \ *.mm \ *.dox \ - *.yaml \ + *.yaml # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. @@ -982,7 +1038,6 @@ FILTER_SOURCE_PATTERNS = # (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. -INPUT += ../README.md USE_MDFILE_AS_MAINPAGE = ../README.md #--------------------------------------------------------------------------- @@ -1082,13 +1137,6 @@ VERBATIM_HEADERS = YES 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 @@ -1227,9 +1275,9 @@ HTML_TIMESTAMP = NO # 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. @@ -1259,10 +1307,11 @@ HTML_INDEX_NUM_ENTRIES = 100 # 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. @@ -1304,8 +1353,8 @@ DOCSET_PUBLISHER_NAME = Publisher # 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 @@ -1335,7 +1384,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. @@ -1380,7 +1429,8 @@ QCH_FILE = # 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. @@ -1388,8 +1438,8 @@ QHP_NAMESPACE = org.doxygen.Project # 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. @@ -1397,30 +1447,30 @@ QHP_VIRTUAL_FOLDER = doc # 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 = # 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 = # 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 = -# 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 = @@ -1497,6 +1547,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 @@ -1517,8 +1578,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 @@ -1530,7 +1597,7 @@ USE_MATHJAX = YES # 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. @@ -1546,7 +1613,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 = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ @@ -1560,7 +1627,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. @@ -1588,7 +1656,7 @@ MATHJAX_CODEFILE = 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 @@ -1607,7 +1675,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. @@ -1620,8 +1689,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 = @@ -1785,9 +1855,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. @@ -2160,7 +2232,6 @@ SKIP_FUNCTION_MACROS = YES # run, you must also specify the path to the tagfile here. TAGFILES = -# TAGFILES += "cppreference-doxygen-web.tag.xml=http://en.cppreference.com/w/" # 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 @@ -2189,12 +2260,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 #--------------------------------------------------------------------------- @@ -2208,15 +2273,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 = - # 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. @@ -2314,10 +2370,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 = 10 +# 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. @@ -2507,9 +2585,11 @@ DOT_MULTI_TARGETS = NO 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/src/language/templates/visitors/visitor.hpp b/src/language/templates/visitors/visitor.hpp index 01bbe3bd1e..20c6037be6 100644 --- a/src/language/templates/visitors/visitor.hpp +++ b/src/language/templates/visitors/visitor.hpp @@ -65,7 +65,7 @@ class ConstVisitor { {% endfor %} }; +/** \} */ // end of visitor_classes + } // namespace visitor } // namespace nmodl - -/** \} */ // end of visitor_classes diff --git a/src/visitors/defuse_analyze_visitor.hpp b/src/visitors/defuse_analyze_visitor.hpp index 71f9257fc5..9508078203 100644 --- a/src/visitors/defuse_analyze_visitor.hpp +++ b/src/visitors/defuse_analyze_visitor.hpp @@ -108,9 +108,9 @@ class DUInstance { * We also want the outermost binary expression. Thus, we do not keep track * of the interior ones. For example: * - * \f tau = tau + 1 \f + * \f$ tau = tau + 1 \f$ * - * we want to return the full statement, not only \f tau + 1 \f + * we want to return the full statement, not only \f$ tau + 1 \f$ */ std::shared_ptr binary_expression; }; diff --git a/src/visitors/sympy_replace_solutions_visitor.cpp b/src/visitors/sympy_replace_solutions_visitor.cpp index d4b120ec16..2c8aab1c35 100644 --- a/src/visitors/sympy_replace_solutions_visitor.cpp +++ b/src/visitors/sympy_replace_solutions_visitor.cpp @@ -21,7 +21,7 @@ using namespace fmt::literals; * \details SympyReplaceSolutionsVisitor tells us that a new equation appear and, depending where * it is located, it can determine if it is part of the main system of equations or is something * else. Every time we are out of the system and we print a new equation that is in the system - * we update the counter. \ref in_system follows, with lag, \ref is_in_system and every time + * we update the counter. \ref in_system follows, with lag, \param is_in_system and every time * they are false and true respectively we detect a switch. * * \param is_in_system is a bool provided from outside that tells us if a new equation is indeed diff --git a/src/visitors/sympy_replace_solutions_visitor.hpp b/src/visitors/sympy_replace_solutions_visitor.hpp index 6bf5a928b4..e65f76c5dc 100644 --- a/src/visitors/sympy_replace_solutions_visitor.hpp +++ b/src/visitors/sympy_replace_solutions_visitor.hpp @@ -34,7 +34,7 @@ namespace visitor { * \class SympyReplaceSolutionsVisitor * \brief Replace statements in \p node with pre_solve_statements, tmp_statements, and solutions * - * The goal is to replace statements with \ref solutions in place. In this way we can allow (to + * The goal is to replace statements with solutions in place. In this way we can allow (to * some extent) the use of control flow blocks and assignments. \ref pre_solve_statements are added * in front of the replaced statements in case their variable needs updating. \ref StatementDispenser @@ -48,13 +48,12 @@ namespace visitor { * assigns a variable * - pre_solve_Statements: statements that update the variables (i.e. x = old_x) * - tmp_statements: assignment of temporary variables in the solution generated by sympy in case - * --cse. (i.e. \f tmp = f - * (...) \f + * --cse. (i.e. \f$ tmp = f (...) \f$ * * We employ a multi-step approach: * - * - try to replace the old_statements (not binary_expressions) and in "assignment form: \f x = - * f(...) \f" with the corresponding solution matching by variable (i.e. x in \f x = f(...) \f) + * - try to replace the old_statements (not binary_expressions) and in "assignment form: \f$ x = + * f(...) \f$" with the corresponding solution matching by variable (i.e. x in \f$ x = f(...) \f$) * - try to replace the old_Statements with a greedy approach. When we find a * diff_eq_expression/linEquation that needs replacing we take the next solution that was not yet * used @@ -165,7 +164,7 @@ namespace visitor { * Last notes: * * For linEquations or NonLinEquations association of the solution with a particular statement could - * be impossible. For example \f ~ x + y = 0 \f does not have a simple variable in the lhs. Thus, an + * be impossible. For example \f$ ~ x + y = 0 \f$ does not have a simple variable in the lhs. Thus, an * association with a particular solution statement is not possible. Thus we do 2 runs where we * first match everything we can by value and then we associate everything we can in a greedy way. * @@ -264,17 +263,17 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * Example: * * \code - * \\ not in the system, n = 0, is_in_system_ = false - * ~ x + y = 0 \\ system, in_system_ switch false -> true, n = 1 + * \\ not in the system, n = 0, is_in_system = false + * ~ x + y = 0 \\ system, in_system switch false -> true, n = 1 * ~ y = a + 1 \\ system, no switch, nothing to do - * a = ... \\ no system, in_system_ switch true -> false, nothing to do - * ~ z = x + y + z \\ system, in_system_ switch false -> true, n = 2 + * a = ... \\ no system, in_system switch true -> false, nothing to do + * ~ z = x + y + z \\ system, in_system switch false -> true, n = 2 * \endcode * * Number of interleaves: n-1 = 1 */ struct InterleavesCounter { - /// Count interleaves defined as a switch false -> true for \ref in_system_ + /// Count interleaves defined as a switch false -> true for \ref in_system void new_equation(const bool is_in_system); /// Number of interleaves. We need to remove the first activation of the switch except if @@ -288,7 +287,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * \brief Number of interleaves of assignment statements in between equations of the system * of equations * - * This is equivalent to the number of switches false -> true of \ref in_system_ minus the + * This is equivalent to the number of switches false -> true of \ref in_system minus the * very first one (if the system exists). */ size_t n_interleaves = 0; @@ -306,8 +305,8 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * This is a multi-purpose object that: * * - keeps track of what was already updated - * - decides what statements need updating in case there was a variable assignment (i.e. \f a = - * 3 \f) + * - decides what statements need updating in case there was a variable assignment (i.e. \f$ a = + * 3 \f$) * - builds the statements from a vector of strings * */ @@ -320,11 +319,11 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { const std::vector::const_iterator& statements_str_end, const int error_on_n_flushes); - /// Construct the maps \ref var2dependants_, \ref var2statement_ and \ref dependency_map_ + /// Construct the maps \ref var2dependants, \ref var2statement and \ref dependency_map /// for easy access and classification of the statements void build_maps(); - /// Check if one of the statements assigns this variable (i.e. \f x' = f(x, y, x) \f) and is + /// Check if one of the statements assigns this variable (i.e. \f$ x' = f(x, y, x) \f$) and is /// still tagged inline bool is_var_assigned_here(const std::string& var) const { const auto it = var2statement.find(var); @@ -332,21 +331,21 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { } /** - * \brief Look for \p var in \ref var2statement_ and emplace back that statement in \p + * \brief Look for \p var in \ref var2statement and emplace back that statement in \p * new_statements * - * If there is no \p var key in \ref var2statement_, return false + * If there is no \p var key in \ref var2statement, return false */ bool try_emplace_back_tagged_statement(ast::StatementVector& new_statements, const std::string& var); /// Emplace back the next \p n_next_statements solutions in \ref statements that is marked - /// for updating in \ref tags_ + /// for updating in \ref tags size_t emplace_back_next_tagged_statements(ast::StatementVector& new_statements, const size_t n_next_statements); - /// Emplace back all the statements that are marked for updating in \ref tags_ + /// Emplace back all the statements that are marked for updating in \ref tags size_t emplace_back_all_tagged_statements(ast::StatementVector& new_statements); /** @@ -372,7 +371,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * x = a + tmp + exp(a) * \endcode * - * \ref dependency_map_ is: + * \ref dependency_map is: * * - tmp : b * - x : a, b @@ -383,10 +382,10 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { /** * \brief a (key) : f(..., a, ...), g(..., a, ...), h(..., a, ...), ... (values) * - * This the "reverse" of \ref dependency_map_. Given a certain variable it provides + * This the "reverse" of \ref dependency_map. Given a certain variable it provides * the statements that depend on it. It is a set because we want to print them in - * order and we do not want duplicates. The value is the index in \ref statements_ or \ref - * tags_ + * order and we do not want duplicates. The value is the index in \ref statements or \ref + * tags * * For example: * @@ -395,7 +394,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * x = a + tmp + exp(a) // statement 1 * \endcode * - * \ref var2dependants_ is: + * \ref var2dependants is: * * - a : 1 * - b : 0, 1 @@ -415,7 +414,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * x = a + tmp + exp(a) // statement 1 * \endcode * - * \ref var2dependants_ is: + * \ref var2dependants is: * * - tmp : 0 * - x : 1 @@ -429,7 +428,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { /** * \brief Keeps track of what statements need updating * - * The elements of this set are the indexes of the \ref statements_ vector that need + * The elements of this set are the indexes of the \ref statements vector that need * updating. It is a set because we need to be able to easily find them by value and we need * them ordered to pick "the next one" */ @@ -437,7 +436,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { /** * \brief Max number of times a statement was printed using an \ref - * emplace_all_back_statement command + * emplace_back_all_tagged_statements command * * This is useful to check if, during updates, a variable was assigned. * @@ -449,20 +448,20 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * y' = b * \endcode * - * In this sequence of statements \f x \f was assigned within variable updates. This + * In this sequence of statements \f$ x \f$ was assigned within variable updates. This * sequence of statements could lead to instability/wrong results for derivimplicit methods. * Better to prevent this entirely. It can still be assigned at the end/beginning */ size_t n_flushes = 0; - /// Emit error when \ref n_flushes_ reaches this number. -1 disables the error entirely + /// Emit error when \ref n_flushes reaches this number. -1 disables the error entirely int error_on_n_flushes; }; - /// Update state variable statements (i.e. \f old_x = x \f) + /// Update state variable statements (i.e. \f$old_x = x \f$) StatementDispenser pre_solve_statements; - /// tmp statements that appear with --cse (i.e. \f tmp0 = a \f) + /// tmp statements that appear with --cse (i.e. \f$tmp0 = a \f$) StatementDispenser tmp_statements; /// solutions that we want to replace @@ -472,7 +471,7 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { * \brief Replacements found by the visitor * * The keys are the old_statements that need replacing with the new ones (the - * value). Since there are \ref pre_solve_statements_ and \ref tmp_statements; it is in general + * value). Since there are \ref pre_solve_statements and \ref tmp_statements; it is in general * a replacement of 1 : n statements */ std::unordered_map, ast::StatementVector> replacements; From 2fbad5062c36e2af144c9260bdc97910ce4fce31 Mon Sep 17 00:00:00 2001 From: Nicolas Cornu Date: Wed, 7 Apr 2021 17:42:05 +0200 Subject: [PATCH 2/3] Fix jupyter-client, wait that the error with zmq is fixed --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 914648c53e..1e1d13f0e4 100644 --- a/setup.py +++ b/setup.py @@ -121,6 +121,7 @@ def _config_exe(exe_name): zip_safe=False, setup_requires=[ "jinja2>=2.9.3", + "jupyter-client==6.1.12", "jupyter", "m2r", "mistune<2", # prevents a version conflict with nbconvert From a1ea62d7405851078c1ece15d596bbec77610a85 Mon Sep 17 00:00:00 2001 From: Nicolas Cornu Date: Wed, 7 Apr 2021 18:33:40 +0200 Subject: [PATCH 3/3] Fix clang-format --- src/visitors/sympy_replace_solutions_visitor.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/visitors/sympy_replace_solutions_visitor.hpp b/src/visitors/sympy_replace_solutions_visitor.hpp index e65f76c5dc..fc4c821e26 100644 --- a/src/visitors/sympy_replace_solutions_visitor.hpp +++ b/src/visitors/sympy_replace_solutions_visitor.hpp @@ -164,8 +164,8 @@ namespace visitor { * Last notes: * * For linEquations or NonLinEquations association of the solution with a particular statement could - * be impossible. For example \f$ ~ x + y = 0 \f$ does not have a simple variable in the lhs. Thus, an - * association with a particular solution statement is not possible. Thus we do 2 runs where we + * be impossible. For example \f$ ~ x + y = 0 \f$ does not have a simple variable in the lhs. Thus, + * an association with a particular solution statement is not possible. Thus we do 2 runs where we * first match everything we can by value and then we associate everything we can in a greedy way. * * For large system of equations the code sets up the J matrix and F vector to be sent to eigen for @@ -323,8 +323,8 @@ class SympyReplaceSolutionsVisitor: public AstVisitor { /// for easy access and classification of the statements void build_maps(); - /// Check if one of the statements assigns this variable (i.e. \f$ x' = f(x, y, x) \f$) and is - /// still tagged + /// Check if one of the statements assigns this variable (i.e. \f$ x' = f(x, y, x) \f$) and + /// is still tagged inline bool is_var_assigned_here(const std::string& var) const { const auto it = var2statement.find(var); return it != var2statement.end() && tags.find(it->second) != tags.end();