From fee4053bd3dd075a2dd2cba4da8166ec5307eadd Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 18 Nov 2012 21:43:28 +0000 Subject: Release-1.8.2-20121118 --- INSTALL | 4 +- README | 4 +- configure | 4 +- doc/commands.doc | 40 ++-- doc/config.doc | 20 ++ doc/htmlcmds.doc | 2 +- doc/language.doc | 6 +- doc/markdown.doc | 7 +- doc/translator_report.txt | 22 +- qtools/Doxyfile | 8 +- src/arguments.h | 2 +- src/bufstr.h | 4 - src/cite.cpp | 18 +- src/cite.h | 2 - src/classdef.cpp | 319 ++++++++++++++-------------- src/classdef.h | 50 +++-- src/classlist.cpp | 4 +- src/classlist.h | 4 +- src/cmdmapper.cpp | 1 + src/cmdmapper.h | 3 +- src/code.h | 3 - src/code.l | 9 +- src/commentcnv.l | 24 +-- src/commentscan.h | 4 +- src/commentscan.l | 24 ++- src/condparser.cpp | 306 +++++++++++++++++++++++++++ src/condparser.h | 75 +++++++ src/config.h | 2 - src/config.l | 7 + src/config.xml | 19 +- src/configoptions.cpp | 23 +- src/constexp.h | 2 +- src/debug.cpp | 1 - src/declinfo.h | 2 +- src/defargs.h | 4 +- src/defargs.l | 1 - src/defgen.cpp | 111 +++++----- src/define.h | 7 +- src/definition.cpp | 28 +-- src/definition.h | 8 +- src/diagram.cpp | 6 +- src/diagram.h | 3 - src/dirdef.cpp | 3 +- src/dirdef.h | 9 +- src/docparser.cpp | 79 ++++++- src/docparser.h | 15 +- src/docsets.cpp | 30 +-- src/docsets.h | 2 - src/doctokenizer.l | 11 +- src/docvisitor.h | 3 + src/dot.cpp | 82 ++++---- src/dot.h | 1 - src/doxygen.cpp | 243 ++++++++++++---------- src/doxygen.h | 60 +++--- src/eclipsehelp.cpp | 1 + src/eclipsehelp.h | 1 - src/entry.h | 3 +- src/example.h | 6 +- src/filedef.cpp | 86 ++++---- src/filedef.h | 26 +-- src/filename.cpp | 16 +- src/filename.h | 9 +- src/formula.cpp | 5 +- src/formula.h | 1 - src/fortrancode.h | 3 - src/fortrancode.l | 7 +- src/fortranscanner.l | 1 - src/ftextstream.h | 8 +- src/ftvhelp.cpp | 4 +- src/ftvhelp.h | 2 - src/groupdef.cpp | 187 +++++++++-------- src/groupdef.h | 22 +- src/htags.cpp | 7 +- src/htmldocvisitor.cpp | 70 +++++-- src/htmldocvisitor.h | 2 + src/htmlgen.cpp | 48 +++-- src/htmlgen.h | 1 - src/htmlhelp.cpp | 8 +- src/htmlhelp.h | 1 - src/image.cpp | 1 - src/index.cpp | 252 +++++++++++----------- src/index.h | 3 +- src/language.cpp | 2 + src/latexdocvisitor.cpp | 12 ++ src/latexdocvisitor.h | 2 + src/latexgen.cpp | 13 +- src/layout.cpp | 187 ++++++++--------- src/layout.h | 13 +- src/libdoxygen.pro.in | 3 +- src/logos.cpp | 1 - src/mandocvisitor.cpp | 14 +- src/mandocvisitor.h | 2 + src/mangen.cpp | 3 +- src/markdown.cpp | 46 ++-- src/memberdef.cpp | 136 ++++++------ src/memberdef.h | 29 +-- src/membergroup.cpp | 11 +- src/membergroup.h | 13 +- src/memberlist.cpp | 188 +++++++++-------- src/memberlist.h | 95 +-------- src/membername.cpp | 6 +- src/membername.h | 8 +- src/message.cpp | 1 + src/msc.cpp | 6 +- src/msc.h | 3 +- src/namespacedef.cpp | 76 +++---- src/namespacedef.h | 17 +- src/navtree.js | 72 ++++--- src/navtree_js.h | 72 ++++--- src/outputgen.cpp | 3 +- src/outputgen.h | 7 +- src/outputlist.cpp | 4 +- src/outputlist.h | 1 - src/pagedef.cpp | 25 ++- src/pagedef.h | 2 +- src/perlmodgen.cpp | 176 +++++++++------- src/pre.h | 4 - src/pre.l | 41 +++- src/printdocvisitor.h | 10 + src/pycode.h | 3 - src/pycode.l | 5 + src/pyscanner.l | 1 - src/qhp.cpp | 19 +- src/qhp.h | 5 +- src/qhpxmlwriter.cpp | 6 + src/qhpxmlwriter.h | 1 + src/qtbc.h | 24 --- src/reflist.h | 3 +- src/resize.js | 6 +- src/resize_js.h | 6 +- src/rtfdocvisitor.cpp | 13 +- src/rtfdocvisitor.h | 2 + src/rtfgen.cpp | 10 +- src/rtfstyle.h | 1 - src/scanner.l | 22 +- src/searchindex.cpp | 12 +- src/searchindex.h | 2 - src/section.h | 3 - src/sortdict.h | 9 +- src/tagreader.cpp | 8 +- src/tagreader.h | 2 - src/tclscanner.l | 15 +- src/textdocvisitor.h | 2 + src/translator.cpp | 1 + src/translator.h | 3 - src/translator_de.h | 67 +++++- src/translator_tr.h | 2 +- src/types.h | 101 ++++++++- src/util.cpp | 110 ++++++++-- src/util.h | 10 +- src/vhdlcode.h | 3 - src/vhdlcode.l | 7 +- src/vhdldocgen.cpp | 519 +++++++++++++++++++++++++--------------------- src/vhdldocgen.h | 107 ++++------ src/vhdlparser.y | 312 ++++++++++++++++------------ src/vhdlscanner.h | 24 +-- src/vhdlscanner.l | 10 +- src/xmldocvisitor.cpp | 12 +- src/xmldocvisitor.h | 2 + src/xmlgen.cpp | 145 +++++++------ winbuild/Doxygen.vcproj | 8 + 161 files changed, 3243 insertions(+), 2196 deletions(-) create mode 100644 src/condparser.cpp create mode 100644 src/condparser.h diff --git a/INSTALL b/INSTALL index ff2992f..ce02cda 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.8.2-20120930 +DOXYGEN Version 1.8.2-20121118 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (30 September 2012) +Dimitri van Heesch (18 November 2012) diff --git a/README b/README index 139c0f6..59812fc 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.8.2_20120930 +DOXYGEN Version 1.8.2_20121118 Please read INSTALL for compilation instructions. @@ -26,4 +26,4 @@ forum. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (30 September 2012) +Dimitri van Heesch (dimitri@stack.nl) (18 November 2012) diff --git a/configure b/configure index 8dd7960..ab7bb21 100755 --- a/configure +++ b/configure @@ -20,7 +20,7 @@ doxygen_version_minor=8 doxygen_version_revision=2 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=20120930 +doxygen_version_mmn=20121118 bin_dirs=`echo $PATH | sed -e "s/:/ /g"` @@ -144,7 +144,7 @@ Options: --enable-langs list Include support for output languages listed in list. [default: $f_langs] --with-doxywizard Build the GUI frontend for doxygen. This - requires Qt 3.3.x + requires Qt version 4. --with-doxyapp Example showing how to embed doxygen in an application. EOF diff --git a/doc/commands.doc b/doc/commands.doc index d922efe..b19e38f 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -180,6 +180,7 @@ documentation: \refitem cmdverbatim \\verbatim \refitem cmdverbinclude \\verbinclude \refitem cmdversion \\version +\refitem cmdvhdlflow \\vhdlflow \refitem cmdwarning \\warning \refitem cmdweakgroup \\weakgroup \refitem cmdxmlonly \\xmlonly @@ -973,6 +974,15 @@ Structural indicators \sa section \ref cmdfn "\\fn", \ref cmdproperty "\\property", and \ref cmdtypedef "\\typedef".
+\section cmdvhdlflow \\vhdlflow [(title for the flow chart)] + + \addindex \\vhdlflow + This is a VHDL specific command, which can be put in the documentation of a process to + produce a flow chart of the logic in the process. + Optionally a title for the flow chart can be given. + \note Currently the flow chart will only appear in the HTML output. + +
\section cmdweakgroup \\weakgroup [(title)] \addindex \\addtogroup Can be used exactly like \ref cmdaddtogroup "\\addtogroup", but has @@ -1061,7 +1071,7 @@ Section indicators for an example.
-\section cmdcond \\cond [] +\section cmdcond \\cond [(section-label)] \addindex \\cond Starts a conditional section that ends with a corresponding @@ -1073,7 +1083,8 @@ Section indicators The section between \\cond and \\endcond commands can be included by adding its section label to the \ref cfg_enabled_sections "ENABLED_SECTIONS" configuration option. If the section label is omitted, the section will - be excluded from processing unconditionally. + be excluded from processing unconditionally. The section label can be a logical expression + build of section names, round brackets, && (AND), || (OR) and ! (NOT). For conditional sections within a comment block one should use a \ref cmdif "\\if" ... \ref cmdendif "\\endif" block. @@ -1129,7 +1140,7 @@ contains \c TEST, or \c DEV \sa section \ref cmdcondnot "\\condnot" and section \ref cmdendcond "\\endcond".
-\section cmdcondnot \\condnot +\section cmdcondnot \\condnot [(section-label)] \addindex \\condnot Starts a conditional section that ends with a corresponding @@ -1140,7 +1151,8 @@ contains \c TEST, or \c DEV The section between \\condnot and \\endcond commands can be excluded by adding its section label to the \ref cfg_enabled_sections "ENABLED_SECTIONS" - configuration option. + configuration option. The section label can be a logical expression + build of section names, round brackets, && (AND), || (OR) and ! (NOT). For conditional sections within a comment block one should use a \ref cmdif "\\if" ... \ref cmdendif "\\endif" block. @@ -1202,15 +1214,16 @@ contains \c TEST, or \c DEV \ref cmdendif "\\endif."
-\section cmdelseif \\elseif +\section cmdelseif \\elseif (section-label) \addindex \\elseif Starts a conditional documentation section if the previous section was not enabled. A conditional section is disabled by default. To enable it you must put the section-label after the \ref cfg_enabled_sections "ENABLED_SECTIONS" - tag in the configuration - file. Conditional blocks can be nested. A nested section is + tag in the configuration file. The section label can be a logical expression + build of section names, round brackets, && (AND), || (OR) and ! (NOT). + Conditional blocks can be nested. A nested section is only enabled if all enclosing sections are enabled as well. \sa sections \ref cmdendif "\\endif", \ref cmdifnot "\\ifnot", @@ -1249,15 +1262,16 @@ contains \c TEST, or \c DEV example.
-\section cmdif \\if +\section cmdif \\if (section-label) \addindex \\if Starts a conditional documentation section. The section ends with a matching \c \\endif command. A conditional section is disabled by default. To enable it you must put the section-label after the \ref cfg_enabled_sections "ENABLED_SECTIONS" - tag in the configuration - file. Conditional blocks can be nested. A nested section is + tag in the configuration file. The section label can be a logical expression + build of section names, round brackets, && (AND), || (OR) and ! (NOT). + Conditional blocks can be nested. A nested section is only enabled if all enclosing sections are enabled as well. \par Example: @@ -1309,15 +1323,15 @@ ALIASES = "english=\if english" \ \ref cmdelse "\\else", and \ref cmdelseif "\\elseif".
-\section cmdifnot \\ifnot +\section cmdifnot \\ifnot (section-label) \addindex \\ifnot Starts a conditional documentation section. The section ends with a matching \c \\endif command. This conditional section is enabled by default. To disable it you must put the section-label after the \ref cfg_enabled_sections "ENABLED_SECTIONS" - tag in the configuration - file. + tag in the configuration file. The section label can be a logical expression + build of section names, round brackets, && (AND), || (OR) and ! (NOT). \sa sections \ref cmdendif "\\endif", \ref cmdif "\\if", \ref cmdelse "\\else", and \ref cmdelseif "\\elseif". diff --git a/doc/config.doc b/doc/config.doc index 8dfb199..64456c7 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -208,6 +208,7 @@ followed by the descriptions of the tags grouped by category. \refitem cfg_man_output MAN_OUTPUT \refitem cfg_markdown_support MARKDOWN_SUPPORT \refitem cfg_mathjax_extensions MATHJAX_EXTENSIONS +\refitem cfg_mathjax_format MATHJAX_FORMAT \refitem cfg_mathjax_relpath MATHJAX_RELPATH \refitem cfg_max_dot_graph_depth MAX_DOT_GRAPH_DEPTH \refitem cfg_max_initializer_lines MAX_INITIALIZER_LINES @@ -281,6 +282,7 @@ followed by the descriptions of the tags grouped by category. \refitem cfg_uml_look UML_LOOK \refitem cfg_use_htags USE_HTAGS \refitem cfg_use_mathjax USE_MATHJAX +\refitem cfg_use_mdfile_as_mainpage USE_MDFILE_AS_MAINPAGE \refitem cfg_use_pdflatex USE_PDFLATEX \refitem cfg_verbatim_headers VERBATIM_HEADERS \refitem cfg_warn_format WARN_FORMAT @@ -1204,6 +1206,14 @@ AClass::ANamespace, ANamespace::*Test using `*.ext=` (so without naming a filter). This option only has effect when \c FILTER_SOURCE_FILES is enabled. +\anchor cfg_use_mdfile_as_mainpage +
\c USE_MDFILE_AS_MAINPAGE
+ \addindex USE_MDFILE_AS_MAINPAGE +If the \c USE_MD_FILE_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 reuse +the introduction page also for the doxygen output. + \section sourcebrowser_index Source browsing related options @@ -1867,6 +1877,16 @@ and does not have live searching capabilities. configure the path to it using the \ref cfg_mathjax_relpath "MATHJAX_RELPATH" option. +\anchor cfg_mathjax_format +
\c MATHJAX_FORMAT
+ \addindex MATHJAX_FORMAT + When MathJax is enabled you can set the default output format to be used for + the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and + SVG. The default value is HTML-CSS, which is slower, but has the best + compatibility. See +the MathJax site +for more details. + \anchor cfg_mathjax_relpath
\c MATHJAX_RELPATH
\addindex MATHJAX_RELPATH diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc index d4af0f9..db3c6f3 100644 --- a/doc/htmlcmds.doc +++ b/doc/htmlcmds.doc @@ -112,7 +112,7 @@ The special HTML character entities that are recognized by Doxygen:
  • the copyright symbol -
  • \&tm; the trade mark symbol +
  • \™ the trade mark symbol
  • the registered trade mark symbol
  • \< less-than symbol
  • \> greater-than symbol diff --git a/doc/language.doc b/doc/language.doc index 6052537..b1cdf4e 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other than English (the default). The output language is chosen through the configuration file (with default name and known as Doxyfile). -Currently (version 1.8.2), 39 languages +Currently (version 1.8.1.2), 39 languages are supported (sorted alphabetically): Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, @@ -146,7 +146,7 @@ when the translator was updated. German Peter Grotrian
    Jens Seidel Peter dot Grotrian at pdv-FS dot de
    jensseidel at users dot sf dot net - 1.8.2 + up-to-date Greek @@ -351,7 +351,7 @@ when the translator was updated. French & David Martinet & {\tt\tiny contact at e-concept-applications dot fr} & 1.8.0 \\ ~ & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & ~ \\ \hline - German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & 1.8.2 \\ + German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & up-to-date \\ ~ & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & ~ \\ \hline Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & up-to-date \\ diff --git a/doc/markdown.doc b/doc/markdown.doc index d0243dd..3799fbc 100644 --- a/doc/markdown.doc +++ b/doc/markdown.doc @@ -556,15 +556,16 @@ Example: 2. Item2 of list 2 With Markdown the actual numbers you use to mark the list have no -effect on the HTML output Markdown produces. I.e. it treats the -following as a list with 3 numbered items: +effect on the HTML output Markdown produces. I.e. standard Markdown treats the +following as one list with 3 numbered items: 1. Item1 1. Item2 1. Item3 Doxygen however requires that the numbers used as marks are in -strictly ascending order; an item with a equal or lower number than +strictly ascending order, so the above example would produce 3 lists +with one item. An item with a equal or lower number than the preceding item, will start a new list. For example: 1. Item1 of list 1 diff --git a/doc/translator_report.txt b/doc/translator_report.txt index a50ef27..b364de4 100644 --- a/doc/translator_report.txt +++ b/doc/translator_report.txt @@ -1,4 +1,4 @@ -(1.8.2) +(1.8.1.2) Doxygen supports the following 39 languages (sorted alphabetically): @@ -10,7 +10,7 @@ Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. -Of them, 7 translators are up-to-date, 32 translators are based on +Of them, 8 translators are up-to-date, 31 translators are based on some adapter class, and 2 are English based. ---------------------------------------------------------------------- @@ -23,6 +23,7 @@ still may be some details listed even for them: TranslatorDutch TranslatorEnglish TranslatorEsperanto + TranslatorGerman TranslatorGreek TranslatorSlovak TranslatorSpanish @@ -38,7 +39,6 @@ must be implemented to become up-to-date: Note: Change the base class to TranslatorAdapter_1_8_2. TranslatorItalian 1.8.2 7 methods to implement (2 %) - TranslatorGerman 1.8.2 7 methods to implement (2 %) TranslatorCroatian 1.8.2 7 methods to implement (2 %) TranslatorChinese 1.8.2 7 methods to implement (2 %) TranslatorPortuguese 1.8.0 14 methods to implement (5 %) @@ -440,22 +440,6 @@ TranslatorFrench (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) virtual QCString trInstanceMethods() -TranslatorGerman (TranslatorAdapter_1_8_2) 7 methods to implement (2 %) ----------------- - - Implements 235 of the required methods (97 %). - - Missing methods (should be implemented): - - virtual QCString trClassMethods() - virtual QCString trProvidedByCategory() - virtual QCString trDesignOverview() - virtual QCString trMethodDocumentation() - virtual QCString trPanelSynchronisationTooltip(bool enable) - virtual QCString trExtendsClass() - virtual QCString trInstanceMethods() - - TranslatorHungarian (TranslatorAdapter_1_4_6) 50 methods to implement (20 %) ------------------- diff --git a/qtools/Doxyfile b/qtools/Doxyfile index 8d3aff7..23d4e31 100644 --- a/qtools/Doxyfile +++ b/qtools/Doxyfile @@ -117,7 +117,7 @@ FILTER_SOURCE_PATTERNS = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- -SOURCE_BROWSER = YES +SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES @@ -217,7 +217,7 @@ MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- -GENERATE_XML = NO +GENERATE_XML = YES XML_OUTPUT = xml XML_SCHEMA = XML_DTD = @@ -256,10 +256,10 @@ PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES +CLASS_DIAGRAMS = NO MSCGEN_PATH = HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES +HAVE_DOT = NO DOT_NUM_THREADS = 0 DOT_FONTNAME = DOT_FONTSIZE = 10 diff --git a/src/arguments.h b/src/arguments.h index 42fd7bc..09f5b63 100644 --- a/src/arguments.h +++ b/src/arguments.h @@ -16,8 +16,8 @@ #ifndef ARGUMENTS_H #define ARGUMENTS_H -#include "qtbc.h" #include +#include class StorageIntf; diff --git a/src/bufstr.h b/src/bufstr.h index 2945b5b..2e704f5 100644 --- a/src/bufstr.h +++ b/src/bufstr.h @@ -18,10 +18,6 @@ #ifndef _BUFSTR_H #define _BUFSTR_H -#include "qtbc.h" -#include -#include - /*! @brief Buffer used to store strings * * This buffer is used append characters and strings. It will automatically diff --git a/src/cite.cpp b/src/cite.cpp index 5612eb4..91dd1e1 100644 --- a/src/cite.cpp +++ b/src/cite.cpp @@ -204,7 +204,7 @@ void CiteDict::generatePage() const } } - QCString oldDir = convertToQCString(QDir::currentDirPath()); + QCString oldDir = QDir::currentDirPath().utf8(); QDir::setCurrent(outputDir); // 5. run bib2xhtml perl script on the generated file which will insert the @@ -292,13 +292,13 @@ void CiteDict::generatePage() const } // 9. Remove temporary files - //thisDir.remove(citeListFile); - //thisDir.remove(doxygenBstFile); - //thisDir.remove(bib2xhtmlFile); - //while (!tempFiles.isEmpty()) - //{ - // QCString *s=tempFiles.take(); - // thisDir.remove(*s); - //} + thisDir.remove(citeListFile); + thisDir.remove(doxygenBstFile); + thisDir.remove(bib2xhtmlFile); + while (!tempFiles.isEmpty()) + { + QCString *s=tempFiles.take(); + thisDir.remove(*s); + } } diff --git a/src/cite.h b/src/cite.h index 10fc56e..1c59553 100644 --- a/src/cite.h +++ b/src/cite.h @@ -19,9 +19,7 @@ #ifndef CITEDB_H #define CITEDB_H -#include "qtbc.h" #include -#include class FTextStream; diff --git a/src/classdef.cpp b/src/classdef.cpp index 3dd562e..4349d3f 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -39,6 +39,11 @@ #include "vhdldocgen.h" #include "layout.h" #include "arguments.h" +#include "memberlist.h" +#include "groupdef.h" +#include "filedef.h" +#include "namespacedef.h" +#include "membergroup.h" //----------------------------------------------------------------------------- @@ -370,7 +375,7 @@ void ClassDef::addMembersToMemberGroup() MemberList *ml; for (mli.toFirst();(ml=mli.current());++mli) { - if ((ml->listType()&MemberList::detailedLists)==0) + if ((ml->listType()&MemberListType_detailedLists)==0) { ::addMembersToMemberGroup(ml,&m_impl->memberGroupSDict,this); } @@ -420,40 +425,40 @@ void ClassDef::internalInsertMember(MemberDef *md, /********************************************/ if (md->isRelated() && protectionLevelVisible(prot)) { - addMemberToList(MemberList::related,md,TRUE); + addMemberToList(MemberListType_related,md,TRUE); } else if (md->isFriend()) { - addMemberToList(MemberList::friends,md,TRUE); + addMemberToList(MemberListType_friends,md,TRUE); } else { switch (md->memberType()) { - case MemberDef::Signal: // Qt specific - addMemberToList(MemberList::signals,md,TRUE); + case MemberType_Signal: // Qt specific + addMemberToList(MemberListType_signals,md,TRUE); break; - case MemberDef::DCOP: // KDE2 specific - addMemberToList(MemberList::dcopMethods,md,TRUE); + case MemberType_DCOP: // KDE2 specific + addMemberToList(MemberListType_dcopMethods,md,TRUE); break; - case MemberDef::Property: - addMemberToList(MemberList::properties,md,TRUE); + case MemberType_Property: + addMemberToList(MemberListType_properties,md,TRUE); break; - case MemberDef::Event: - addMemberToList(MemberList::events,md,TRUE); + case MemberType_Event: + addMemberToList(MemberListType_events,md,TRUE); break; - case MemberDef::Slot: // Qt specific + case MemberType_Slot: // Qt specific switch (prot) { case Protected: case Package: // slots in packages are not possible! - addMemberToList(MemberList::proSlots,md,TRUE); + addMemberToList(MemberListType_proSlots,md,TRUE); break; case Public: - addMemberToList(MemberList::pubSlots,md,TRUE); + addMemberToList(MemberListType_pubSlots,md,TRUE); break; case Private: - addMemberToList(MemberList::priSlots,md,TRUE); + addMemberToList(MemberListType_priSlots,md,TRUE); break; } break; @@ -465,16 +470,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proStaticAttribs,md,TRUE); + addMemberToList(MemberListType_proStaticAttribs,md,TRUE); break; case Package: - addMemberToList(MemberList::pacStaticAttribs,md,TRUE); + addMemberToList(MemberListType_pacStaticAttribs,md,TRUE); break; case Public: - addMemberToList(MemberList::pubStaticAttribs,md,TRUE); + addMemberToList(MemberListType_pubStaticAttribs,md,TRUE); break; case Private: - addMemberToList(MemberList::priStaticAttribs,md,TRUE); + addMemberToList(MemberListType_priStaticAttribs,md,TRUE); break; } } @@ -483,16 +488,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proStaticMethods,md,TRUE); + addMemberToList(MemberListType_proStaticMethods,md,TRUE); break; case Package: - addMemberToList(MemberList::pacStaticMethods,md,TRUE); + addMemberToList(MemberListType_pacStaticMethods,md,TRUE); break; case Public: - addMemberToList(MemberList::pubStaticMethods,md,TRUE); + addMemberToList(MemberListType_pubStaticMethods,md,TRUE); break; case Private: - addMemberToList(MemberList::priStaticMethods,md,TRUE); + addMemberToList(MemberListType_priStaticMethods,md,TRUE); break; } } @@ -504,17 +509,17 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proAttribs,md,TRUE); + addMemberToList(MemberListType_proAttribs,md,TRUE); break; case Package: - addMemberToList(MemberList::pacAttribs,md,TRUE); + addMemberToList(MemberListType_pacAttribs,md,TRUE); break; case Public: - addMemberToList(MemberList::pubAttribs,md,TRUE); + addMemberToList(MemberListType_pubAttribs,md,TRUE); isSimple=!md->isFunctionPtr(); break; case Private: - addMemberToList(MemberList::priAttribs,md,TRUE); + addMemberToList(MemberListType_priAttribs,md,TRUE); break; } } @@ -523,16 +528,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proTypes,md,TRUE); + addMemberToList(MemberListType_proTypes,md,TRUE); break; case Package: - addMemberToList(MemberList::pacTypes,md,TRUE); + addMemberToList(MemberListType_pacTypes,md,TRUE); break; case Public: - addMemberToList(MemberList::pubTypes,md,TRUE); + addMemberToList(MemberListType_pubTypes,md,TRUE); break; case Private: - addMemberToList(MemberList::priTypes,md,TRUE); + addMemberToList(MemberListType_priTypes,md,TRUE); break; } } @@ -541,16 +546,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proMethods,md,TRUE); + addMemberToList(MemberListType_proMethods,md,TRUE); break; case Package: - addMemberToList(MemberList::pacMethods,md,TRUE); + addMemberToList(MemberListType_pacMethods,md,TRUE); break; case Public: - addMemberToList(MemberList::pubMethods,md,TRUE); + addMemberToList(MemberListType_pubMethods,md,TRUE); break; case Private: - addMemberToList(MemberList::priMethods,md,TRUE); + addMemberToList(MemberListType_priMethods,md,TRUE); break; } } @@ -569,26 +574,26 @@ void ClassDef::internalInsertMember(MemberDef *md, /*******************************************************/ if ((md->isRelated() && protectionLevelVisible(prot)) || md->isFriend()) { - addMemberToList(MemberList::relatedMembers,md,FALSE); + addMemberToList(MemberListType_relatedMembers,md,FALSE); } else { switch (md->memberType()) { - case MemberDef::Property: - addMemberToList(MemberList::propertyMembers,md,FALSE); + case MemberType_Property: + addMemberToList(MemberListType_propertyMembers,md,FALSE); break; - case MemberDef::Event: - addMemberToList(MemberList::eventMembers,md,FALSE); + case MemberType_Event: + addMemberToList(MemberListType_eventMembers,md,FALSE); break; - case MemberDef::Signal: // fall through - case MemberDef::DCOP: - addMemberToList(MemberList::functionMembers,md,FALSE); + case MemberType_Signal: // fall through + case MemberType_DCOP: + addMemberToList(MemberListType_functionMembers,md,FALSE); break; - case MemberDef::Slot: + case MemberType_Slot: if (protectionLevelVisible(prot)) { - addMemberToList(MemberList::functionMembers,md,FALSE); + addMemberToList(MemberListType_functionMembers,md,FALSE); } break; default: // any of the other members @@ -596,28 +601,28 @@ void ClassDef::internalInsertMember(MemberDef *md, { switch (md->memberType()) { - case MemberDef::Typedef: - addMemberToList(MemberList::typedefMembers,md,FALSE); + case MemberType_Typedef: + addMemberToList(MemberListType_typedefMembers,md,FALSE); break; - case MemberDef::Enumeration: - addMemberToList(MemberList::enumMembers,md,FALSE); + case MemberType_Enumeration: + addMemberToList(MemberListType_enumMembers,md,FALSE); break; - case MemberDef::EnumValue: - addMemberToList(MemberList::enumValMembers,md,FALSE); + case MemberType_EnumValue: + addMemberToList(MemberListType_enumValMembers,md,FALSE); break; - case MemberDef::Function: + case MemberType_Function: if (md->isConstructor() || md->isDestructor()) { - MemberList *ml = createMemberList(MemberList::constructors); + MemberList *ml = createMemberList(MemberListType_constructors); ml->append(md); } else { - addMemberToList(MemberList::functionMembers,md,FALSE); + addMemberToList(MemberListType_functionMembers,md,FALSE); } break; - case MemberDef::Variable: - addMemberToList(MemberList::variableMembers,md,FALSE); + case MemberType_Variable: + addMemberToList(MemberListType_variableMembers,md,FALSE); break; default: err("Unexpected member type %d found!\n",md->memberType()); @@ -684,16 +689,16 @@ void ClassDef::insertMember(MemberDef *md) // compute the anchors for all members void ClassDef::computeAnchors() { - ClassDef *context = Config_getBool("INLINE_INHERITED_MEMB") ? this : 0; - const char *letters = "abcdefghijklmnopqrstuvwxyz0123456789"; + //ClassDef *context = Config_getBool("INLINE_INHERITED_MEMB") ? this : 0; + //const char *letters = "abcdefghijklmnopqrstuvwxyz0123456789"; QListIterator mli(m_impl->memberLists); MemberList *ml; - int index = 0; + //int index = 0; for (mli.toFirst();(ml=mli.current());++mli) { - if ((ml->listType()&MemberList::detailedLists)==0) + if ((ml->listType()&MemberListType_detailedLists)==0) { - setAnchors(context,letters[index++],ml); + setAnchors(ml); } } @@ -703,7 +708,7 @@ void ClassDef::computeAnchors() MemberGroup *mg; for (;(mg=mgli.current());++mgli) { - mg->setAnchors(context); + mg->setAnchors(); } } } @@ -737,7 +742,7 @@ void ClassDef::findSectionsInDocumentation() MemberList *ml; for (mli.toFirst();(ml=mli.current());++mli) { - if ((ml->listType()&MemberList::detailedLists)==0) + if ((ml->listType()&MemberListType_detailedLists)==0) { ml->findSectionsInDocumentation(); } @@ -1784,7 +1789,7 @@ void ClassDef::writeDeclarationLink(OutputList &ol,bool &found,const char *heade ol.endMemberItem(); // add the brief description if available - if (!briefDescription().isEmpty()) + if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC")) { ol.startMemberDescription(anchor()); ol.parseDoc(briefFile(),briefLine(),this,0, @@ -1833,7 +1838,7 @@ void ClassDef::writeDocumentationContents(OutputList &ol,const QCString & /*page writeTagFileMarker(); - Doxygen::indexList.addIndexItem(this,0); + Doxygen::indexList->addIndexItem(this,0); if (Doxygen::searchIndex) { @@ -2019,7 +2024,7 @@ void ClassDef::writeMemberPages(OutputList &ol) MemberList *ml; for (mli.toFirst();(ml=mli.current());++mli) { - if (ml->listType()&MemberList::detailedLists) + if (ml->listType()&MemberListType_detailedLists) { ml->writeDocumentationPage(ol,displayName(),this); } @@ -3716,7 +3721,7 @@ void ClassDef::addListReferences() MemberList *ml; for (mli.toFirst();(ml=mli.current());++mli) { - if (ml->listType()&MemberList::detailedLists) + if (ml->listType()&MemberListType_detailedLists) { ml->addListReferences(this); } @@ -3758,7 +3763,7 @@ bool ClassDef::isAccessibleMember(MemberDef *md) return md->getClassDef() && isBaseClass(md->getClassDef(),TRUE); } -MemberList *ClassDef::createMemberList(MemberList::ListType lt) +MemberList *ClassDef::createMemberList(MemberListType lt) { m_impl->memberLists.setAutoDelete(TRUE); QListIterator mli(m_impl->memberLists); @@ -3776,7 +3781,7 @@ MemberList *ClassDef::createMemberList(MemberList::ListType lt) return ml; } -MemberList *ClassDef::getMemberList(MemberList::ListType lt) +MemberList *ClassDef::getMemberList(MemberListType lt) { MemberList *ml = m_impl->memberLists.first(); while (ml) @@ -3790,7 +3795,7 @@ MemberList *ClassDef::getMemberList(MemberList::ListType lt) return 0; } -void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief) +void ClassDef::addMemberToList(MemberListType lt,MemberDef *md,bool isBrief) { static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS"); static bool sortMemberDocs = Config_getBool("SORT_MEMBER_DOCS"); @@ -3799,7 +3804,7 @@ void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrie ml->append(md); // for members in the declaration lists we set the section, needed for member grouping - if ((ml->listType()&MemberList::detailedLists)==0) md->setSectionList(this,ml); + if ((ml->listType()&MemberListType_detailedLists)==0) md->setSectionList(this,ml); } void ClassDef::sortMemberLists() @@ -3813,7 +3818,7 @@ void ClassDef::sortMemberLists() } static void convertProtectionLevel( - MemberList::ListType inListType, + MemberListType inListType, Protection inProt, int *outListType1, int *outListType2 @@ -3828,12 +3833,12 @@ static void convertProtectionLevel( // the private section of the base class should not // be visible { - case MemberList::priMethods: - case MemberList::priStaticMethods: - case MemberList::priSlots: - case MemberList::priAttribs: - case MemberList::priStaticAttribs: - case MemberList::priTypes: + case MemberListType_priMethods: + case MemberListType_priStaticMethods: + case MemberListType_priSlots: + case MemberListType_priAttribs: + case MemberListType_priStaticAttribs: + case MemberListType_priTypes: *outListType1=-1; *outListType2=-1; break; @@ -3847,45 +3852,45 @@ static void convertProtectionLevel( // both the public and protected members are shown // as protected { - case MemberList::pubMethods: - case MemberList::pubStaticMethods: - case MemberList::pubSlots: - case MemberList::pubAttribs: - case MemberList::pubStaticAttribs: - case MemberList::pubTypes: - case MemberList::priMethods: - case MemberList::priStaticMethods: - case MemberList::priSlots: - case MemberList::priAttribs: - case MemberList::priStaticAttribs: - case MemberList::priTypes: + case MemberListType_pubMethods: + case MemberListType_pubStaticMethods: + case MemberListType_pubSlots: + case MemberListType_pubAttribs: + case MemberListType_pubStaticAttribs: + case MemberListType_pubTypes: + case MemberListType_priMethods: + case MemberListType_priStaticMethods: + case MemberListType_priSlots: + case MemberListType_priAttribs: + case MemberListType_priStaticAttribs: + case MemberListType_priTypes: *outListType1=-1; *outListType2=-1; break; - case MemberList::proMethods: - *outListType1=MemberList::pubMethods; - *outListType2=MemberList::proMethods; + case MemberListType_proMethods: + *outListType1=MemberListType_pubMethods; + *outListType2=MemberListType_proMethods; break; - case MemberList::proStaticMethods: - *outListType1=MemberList::pubStaticMethods; - *outListType2=MemberList::proStaticMethods; + case MemberListType_proStaticMethods: + *outListType1=MemberListType_pubStaticMethods; + *outListType2=MemberListType_proStaticMethods; break; - case MemberList::proSlots: - *outListType1=MemberList::pubSlots; - *outListType1=MemberList::proSlots; + case MemberListType_proSlots: + *outListType1=MemberListType_pubSlots; + *outListType1=MemberListType_proSlots; break; - case MemberList::proAttribs: - *outListType1=MemberList::pubAttribs; - *outListType2=MemberList::proAttribs; + case MemberListType_proAttribs: + *outListType1=MemberListType_pubAttribs; + *outListType2=MemberListType_proAttribs; break; - case MemberList::proStaticAttribs: - *outListType1=MemberList::pubStaticAttribs; - *outListType2=MemberList::proStaticAttribs; + case MemberListType_proStaticAttribs: + *outListType1=MemberListType_pubStaticAttribs; + *outListType2=MemberListType_proStaticAttribs; break; - case MemberList::proTypes: - *outListType1=MemberList::pubTypes; - *outListType2=MemberList::proTypes; + case MemberListType_proTypes: + *outListType1=MemberListType_pubTypes; + *outListType2=MemberListType_proTypes; break; default: break; @@ -3897,45 +3902,45 @@ static void convertProtectionLevel( // both the public and protected members are shown // as private { - case MemberList::pubMethods: - case MemberList::pubStaticMethods: - case MemberList::pubSlots: - case MemberList::pubAttribs: - case MemberList::pubStaticAttribs: - case MemberList::pubTypes: - case MemberList::proMethods: - case MemberList::proStaticMethods: - case MemberList::proSlots: - case MemberList::proAttribs: - case MemberList::proStaticAttribs: - case MemberList::proTypes: + case MemberListType_pubMethods: + case MemberListType_pubStaticMethods: + case MemberListType_pubSlots: + case MemberListType_pubAttribs: + case MemberListType_pubStaticAttribs: + case MemberListType_pubTypes: + case MemberListType_proMethods: + case MemberListType_proStaticMethods: + case MemberListType_proSlots: + case MemberListType_proAttribs: + case MemberListType_proStaticAttribs: + case MemberListType_proTypes: *outListType1=-1; *outListType2=-1; break; - case MemberList::priMethods: - *outListType1=MemberList::pubMethods; - *outListType2=MemberList::proMethods; + case MemberListType_priMethods: + *outListType1=MemberListType_pubMethods; + *outListType2=MemberListType_proMethods; break; - case MemberList::priStaticMethods: - *outListType1=MemberList::pubStaticMethods; - *outListType2=MemberList::proStaticMethods; + case MemberListType_priStaticMethods: + *outListType1=MemberListType_pubStaticMethods; + *outListType2=MemberListType_proStaticMethods; break; - case MemberList::priSlots: - *outListType1=MemberList::pubSlots; - *outListType1=MemberList::proSlots; + case MemberListType_priSlots: + *outListType1=MemberListType_pubSlots; + *outListType1=MemberListType_proSlots; break; - case MemberList::priAttribs: - *outListType1=MemberList::pubAttribs; - *outListType2=MemberList::proAttribs; + case MemberListType_priAttribs: + *outListType1=MemberListType_pubAttribs; + *outListType2=MemberListType_proAttribs; break; - case MemberList::priStaticAttribs: - *outListType1=MemberList::pubStaticAttribs; - *outListType2=MemberList::proStaticAttribs; + case MemberListType_priStaticAttribs: + *outListType1=MemberListType_pubStaticAttribs; + *outListType2=MemberListType_proStaticAttribs; break; - case MemberList::priTypes: - *outListType1=MemberList::pubTypes; - *outListType2=MemberList::proTypes; + case MemberListType_priTypes: + *outListType1=MemberListType_pubTypes; + *outListType2=MemberListType_proTypes; break; default: break; @@ -3945,7 +3950,7 @@ static void convertProtectionLevel( // inListType,inProt,*outListType1,*outListType2); } -int ClassDef::countInheritedDecMembersRec(MemberList::ListType lt, +int ClassDef::countInheritedDecMembersRec(MemberListType lt, ClassDef *inheritedFrom) { //printf("> %s::countedInheritedDecMembersRec(%d)\n",name().data(),lt); @@ -3963,23 +3968,23 @@ int ClassDef::countInheritedDecMembersRec(MemberList::ListType lt, // in the bass class (e.g. for protected inheritance, the protected // member comes from protected and public methods in the base class) convertProtectionLevel(lt,ibcd->prot,<1,<2); - MemberList *ml1 = icd->getMemberList((MemberList::ListType)lt1); - MemberList *ml2 = icd->getMemberList((MemberList::ListType)lt2); + MemberList *ml1 = icd->getMemberList((MemberListType)lt1); + MemberList *ml2 = icd->getMemberList((MemberListType)lt2); if (ml1) { - count+=icd->countMembersIncludingGrouped((MemberList::ListType)lt1,inheritedFrom,TRUE); + count+=icd->countMembersIncludingGrouped((MemberListType)lt1,inheritedFrom,TRUE); } if (ml2) { - count+=icd->countMembersIncludingGrouped((MemberList::ListType)lt2,inheritedFrom,TRUE); + count+=icd->countMembersIncludingGrouped((MemberListType)lt2,inheritedFrom,TRUE); } if (lt1!=-1) { - count+=icd->countInheritedDecMembersRec((MemberList::ListType)lt1,inheritedFrom); + count+=icd->countInheritedDecMembersRec((MemberListType)lt1,inheritedFrom); } if (lt2!=-1) { - count+=icd->countInheritedDecMembersRec((MemberList::ListType)lt2,inheritedFrom); + count+=icd->countInheritedDecMembersRec((MemberListType)lt2,inheritedFrom); } } } @@ -3987,7 +3992,7 @@ int ClassDef::countInheritedDecMembersRec(MemberList::ListType lt, return count; } -int ClassDef::countInheritedDecMembers(MemberList::ListType lt) +int ClassDef::countInheritedDecMembers(MemberListType lt) { int count=0; MemberList *ml = getMemberList(lt); @@ -4019,7 +4024,7 @@ int ClassDef::countAdditionalInheritedMembers() if (lde->kind()==LayoutDocEntry::MemberDecl) { LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; - if (lmd->type!=MemberList::friends) // friendship is not inherited + if (lmd->type!=MemberListType_friends) // friendship is not inherited { totalCount+=countInheritedDecMembers(lmd->type); } @@ -4050,7 +4055,7 @@ void ClassDef::writeAdditionalInheritedMembers(OutputList &ol) } } -int ClassDef::countMembersIncludingGrouped(MemberList::ListType lt, +int ClassDef::countMembersIncludingGrouped(MemberListType lt, ClassDef *inheritedFrom,bool additional) { int count=0; @@ -4080,7 +4085,7 @@ int ClassDef::countMembersIncludingGrouped(MemberList::ListType lt, } void ClassDef::writeInheritedMemberDeclarations(OutputList &ol, - MemberList::ListType lt,const QCString &title, + MemberListType lt,const QCString &title, ClassDef *inheritedFrom,bool invert, QPtrDict *visitedClasses) { @@ -4108,7 +4113,7 @@ void ClassDef::writeInheritedMemberDeclarations(OutputList &ol, visitedClasses->insert(icd,icd); if (lt1!=-1) { - icd->writeMemberDeclarations(ol,(MemberList::ListType)lt1, + icd->writeMemberDeclarations(ol,(MemberListType)lt1, title,QCString(),FALSE,inheritedFrom,lt2,invert,visitedClasses); } } @@ -4117,7 +4122,7 @@ void ClassDef::writeInheritedMemberDeclarations(OutputList &ol, ol.popGeneratorState(); } -void ClassDef::writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title, +void ClassDef::writeMemberDeclarations(OutputList &ol,MemberListType lt,const QCString &title, const char *subTitle,bool showInline,ClassDef *inheritedFrom,int lt2,bool invert,QPtrDict *visitedClasses) { //printf("%s: ClassDef::writeMemberDeclarations for %s\n",name().data(),ml->listTypeAsString().data()); @@ -4138,7 +4143,7 @@ void ClassDef::writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,co ml->writeDeclarations(ol,this,0,0,0,title,subTitle,FALSE,showInline,inheritedFrom); if (lt2!=-1) { - MemberList * ml2 = getMemberList((MemberList::ListType)lt2); + MemberList * ml2 = getMemberList((MemberListType)lt2); if (ml2) { ml2->writeDeclarations(ol,this,0,0,0,0,0,FALSE,showInline,inheritedFrom); @@ -4156,7 +4161,7 @@ void ClassDef::writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,co } } -void ClassDef::addGroupedInheritedMembers(OutputList &ol,MemberList::ListType lt, +void ClassDef::addGroupedInheritedMembers(OutputList &ol,MemberListType lt, ClassDef *inheritedFrom,const QCString &inheritId) { //printf("** %s::addGroupedInheritedMembers(%p) inheritId=%s\n",name().data(),m_impl->memberGroupSDict,inheritId.data()); @@ -4174,14 +4179,14 @@ void ClassDef::addGroupedInheritedMembers(OutputList &ol,MemberList::ListType lt } } -void ClassDef::writeMemberDocumentation(OutputList &ol,MemberList::ListType lt,const QCString &title,bool showInline) +void ClassDef::writeMemberDocumentation(OutputList &ol,MemberListType lt,const QCString &title,bool showInline) { //printf("%s: ClassDef::writeMemberDocumentation()\n",name().data()); MemberList * ml = getMemberList(lt); if (ml) ml->writeDocumentation(ol,displayName(),this,title,FALSE,showInline); } -void ClassDef::writeSimpleMemberDocumentation(OutputList &ol,MemberList::ListType lt) +void ClassDef::writeSimpleMemberDocumentation(OutputList &ol,MemberListType lt) { //printf("%s: ClassDef::writeSimpleMemberDocumentation()\n",name().data()); MemberList * ml = getMemberList(lt); @@ -4189,7 +4194,7 @@ void ClassDef::writeSimpleMemberDocumentation(OutputList &ol,MemberList::ListTyp } void ClassDef::writePlainMemberDeclaration(OutputList &ol, - MemberList::ListType lt,bool inGroup, + MemberListType lt,bool inGroup, ClassDef *inheritedFrom,const char *inheritId) { //printf("%s: ClassDef::writePlainMemberDeclaration()\n",name().data()); @@ -4396,7 +4401,7 @@ MemberDef *ClassDef::isSmartPointer() const return m_impl->arrowOperator; } -void ClassDef::reclassifyMember(MemberDef *md,MemberDef::MemberType t) +void ClassDef::reclassifyMember(MemberDef *md,MemberType t) { md->setMemberType(t); MemberList *ml = m_impl->memberLists.first(); diff --git a/src/classdef.h b/src/classdef.h index 5c18728..1525dfd 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -18,17 +18,14 @@ #ifndef CLASSDEF_H #define CLASSDEF_H -#include "qtbc.h" #include #include #include -#include -#include "util.h" -#include "memberlist.h" #include "definition.h" -#include "sortdict.h" +class MemberDef; +class MemberList; class MemberDict; class ClassList; class ClassSDict; @@ -47,8 +44,9 @@ class GroupDef; class StringDict; struct IncludeInfo; class ClassDefImpl; +class ArgumentList; -/** A model of a compound symbol. +/** A class representing of a compound symbol. * * A compound can be a class, struct, union, interface, or exception. * \note This class should be renamed to CompoundDef @@ -57,13 +55,13 @@ class ClassDef : public Definition { public: /** The various compound types */ - enum CompoundType { Class, //=Entry::CLASS_SEC, - Struct, //=Entry::STRUCT_SEC, - Union, //=Entry::UNION_SEC, + enum CompoundType { Class, //=Entry::CLASS_SEC, + Struct, //=Entry::STRUCT_SEC, + Union, //=Entry::UNION_SEC, Interface, //=Entry::INTERFACE_SEC, - Protocol, //=Entry::PROTOCOL_SEC, - Category, //=Entry::CATEGORY_SEC, - Exception //=Entry::EXCEPTION_SEC + Protocol, //=Entry::PROTOCOL_SEC, + Category, //=Entry::CATEGORY_SEC, + Exception //=Entry::EXCEPTION_SEC }; /** Creates a new compound definition. @@ -262,7 +260,7 @@ class ClassDef : public Definition QCString className() const; /** Returns the members in the list identified by \a lt */ - MemberList *getMemberList(MemberList::ListType lt); + MemberList *getMemberList(MemberListType lt); /** Returns the list containing the list of members sorted per type */ const QList &getMemberLists() const; @@ -347,14 +345,14 @@ class ClassDef : public Definition ClassDef *inheritedFrom,const char *inheritId); void writeQuickMemberLinks(OutputList &ol,MemberDef *md) const; void writeSummaryLinks(OutputList &ol); - void reclassifyMember(MemberDef *md,MemberDef::MemberType t); + void reclassifyMember(MemberDef *md,MemberType t); void writeInlineDocumentation(OutputList &ol); void writeDeclarationLink(OutputList &ol,bool &found, const char *header,bool localNames); void removeMemberFromLists(MemberDef *md); - void addGroupedInheritedMembers(OutputList &ol,MemberList::ListType lt, + void addGroupedInheritedMembers(OutputList &ol,MemberListType lt, ClassDef *inheritedFrom,const QCString &inheritId); - int countMembersIncludingGrouped(MemberList::ListType lt,ClassDef *inheritedFrom,bool additional); + int countMembersIncludingGrouped(MemberListType lt,ClassDef *inheritedFrom,bool additional); bool visited; @@ -369,14 +367,14 @@ class ClassDef : public Definition void writeDocumentationContents(OutputList &ol,const QCString &pageTitle); void internalInsertMember(MemberDef *md,Protection prot,bool addToAllList); QCString getMemberListFileName() const; - void addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief); - MemberList *createMemberList(MemberList::ListType lt); - void writeInheritedMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title,ClassDef *inheritedFrom,bool invert,QPtrDict *visitedClasses); - void writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title, + void addMemberToList(MemberListType lt,MemberDef *md,bool isBrief); + MemberList *createMemberList(MemberListType lt); + void writeInheritedMemberDeclarations(OutputList &ol,MemberListType lt,const QCString &title,ClassDef *inheritedFrom,bool invert,QPtrDict *visitedClasses); + void writeMemberDeclarations(OutputList &ol,MemberListType lt,const QCString &title, const char *subTitle=0,bool showInline=FALSE,ClassDef *inheritedFrom=0,int lt2=-1,bool invert=FALSE,QPtrDict *visitedClasses=0); - void writeMemberDocumentation(OutputList &ol,MemberList::ListType lt,const QCString &title,bool showInline=FALSE); - void writeSimpleMemberDocumentation(OutputList &ol,MemberList::ListType lt); - void writePlainMemberDeclaration(OutputList &ol,MemberList::ListType lt,bool inGroup,ClassDef *inheritedFrom,const char *inheritId); + void writeMemberDocumentation(OutputList &ol,MemberListType lt,const QCString &title,bool showInline=FALSE); + void writeSimpleMemberDocumentation(OutputList &ol,MemberListType lt); + void writePlainMemberDeclaration(OutputList &ol,MemberListType lt,bool inGroup,ClassDef *inheritedFrom,const char *inheritId); void writeBriefDescription(OutputList &ol,bool exampleFlag); void writeDetailedDescription(OutputList &ol,const QCString &pageType,bool exampleFlag, const QCString &title,const QCString &anchor=QCString()); @@ -395,8 +393,8 @@ class ClassDef : public Definition void writeMoreLink(OutputList &ol,const QCString &anchor); void writeDetailedDocumentationBody(OutputList &ol); - int countInheritedDecMembersRec(MemberList::ListType lt,ClassDef *inheritedFrom); - int countInheritedDecMembers(MemberList::ListType lt); + int countInheritedDecMembersRec(MemberListType lt,ClassDef *inheritedFrom); + int countInheritedDecMembers(MemberListType lt); int countAdditionalInheritedMembers(); void writeAdditionalInheritedMembers(OutputList &ol); void addClassAttributes(OutputList &ol); @@ -496,7 +494,7 @@ class BaseClassList : public QList { public: ~BaseClassList() {} - int compareItems(GCI item1,GCI item2) + int compareItems(QCollection::Item item1,QCollection::Item item2) { ClassDef *c1=((BaseClassDef *)item1)->classDef; ClassDef *c2=((BaseClassDef *)item2)->classDef; diff --git a/src/classlist.cpp b/src/classlist.cpp index 11f36b6..fec1cb8 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -51,12 +51,12 @@ static int compItems(void *item1,void *item2) } } -int ClassList::compareItems(GCI item1, GCI item2) +int ClassList::compareItems(QCollection::Item item1, QCollection::Item item2) { return compItems(item1,item2); } -int ClassSDict::compareItems(GCI item1, GCI item2) +int ClassSDict::compareItems(QCollection::Item item1, QCollection::Item item2) { return compItems(item1,item2); } diff --git a/src/classlist.h b/src/classlist.h index 830c3cd..abe7064 100644 --- a/src/classlist.h +++ b/src/classlist.h @@ -33,7 +33,7 @@ class ClassList : public QList ClassList(); ~ClassList(); - int compareItems(GCI item1,GCI item2); + int compareItems(QCollection::Item item1,QCollection::Item item2); }; /** An iterator for ClassDef objects in a ClassList. */ @@ -57,7 +57,7 @@ class ClassSDict : public SDict public: ClassSDict(int size=17) : SDict(size) {} ~ClassSDict() {} - int compareItems(GCI item1,GCI item2); + int compareItems(QCollection::Item item1,QCollection::Item item2); void writeDeclaration(OutputList &ol,const ClassDef::CompoundType *filter=0, const char *header=0,bool localNames=FALSE); void writeDocumentation(OutputList &ol,Definition *container=0); diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp index b13fc37..767978c 100644 --- a/src/cmdmapper.cpp +++ b/src/cmdmapper.cpp @@ -128,6 +128,7 @@ CommandMap cmdMap[] = { "mscfile", CMD_MSCFILE }, { "rtfonly", CMD_RTFONLY }, { "endrtfonly", CMD_ENDRTFONLY }, + { "vhdlflow", CMD_VHDLFLOW }, { 0, 0 }, }; diff --git a/src/cmdmapper.h b/src/cmdmapper.h index 06778c5..968b017 100644 --- a/src/cmdmapper.h +++ b/src/cmdmapper.h @@ -117,7 +117,8 @@ enum CommandType CMD_SNIPPET = 87, CMD_RTFONLY = 88, CMD_ENDRTFONLY = 89, - CMD_PIPE = 90 + CMD_PIPE = 90, + CMD_VHDLFLOW = 91 }; enum HtmlTagType diff --git a/src/code.h b/src/code.h index 5be7852..2c4d68a 100644 --- a/src/code.h +++ b/src/code.h @@ -18,9 +18,6 @@ #ifndef CODE_H #define CODE_H -#include "qtbc.h" -#include - class CodeOutputInterface; class FileDef; class MemberDef; diff --git a/src/code.l b/src/code.l index 9930f8a..337f400 100644 --- a/src/code.l +++ b/src/code.l @@ -26,7 +26,6 @@ #include #include -#include "qtbc.h" #include "entry.h" #include "doxygen.h" #include "message.h" @@ -35,6 +34,12 @@ #include "membername.h" #include "searchindex.h" #include "arguments.h" +#include "config.h" +#include "groupdef.h" +#include "classlist.h" +#include "filedef.h" +#include "filename.h" +#include "namespacedef.h" #define YY_NEVER_INTERACTIVE 1 @@ -2003,7 +2008,7 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" if (ambig) // multiple input files match the name { //printf("===== yes %s is ambiguous\n",yytext); - QCString name = convertToQCString(QDir::cleanDirPath(yytext)); + QCString name = QDir::cleanDirPath(yytext).utf8(); if (!name.isEmpty() && g_sourceFileDef) { FileName *fn = Doxygen::inputNameDict->find(name); diff --git a/src/commentcnv.l b/src/commentcnv.l index e9fc74b..88d9ce3 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -18,6 +18,7 @@ %{ #define YY_NEVER_INTERACTIVE 1 + #include #include @@ -33,6 +34,7 @@ #include "config.h" #include "doxygen.h" #include "util.h" +#include "condparser.h" #include @@ -178,30 +180,22 @@ static inline void copyToOutput(const char *s,int len) static void startCondSection(const char *sectId) { + CondParser prs; + bool expResult = prs.parse(g_fileName,g_lineNr,sectId); g_condStack.push(new CondCtx(g_lineNr,sectId,g_skip)); if (guardType == Guard_Cond) { - if (Config_getList("ENABLED_SECTIONS").find(sectId)!=-1) - { - //printf("*** Section is enabled!\n"); - } - else + if (expResult) { - //printf("*** Section is disabled!\n"); g_skip=TRUE; } } else if (guardType == Guard_CondNot) { - if (Config_getList("ENABLED_SECTIONS").find(sectId)!=-1) + if (!expResult) { - //printf("*** Section is disabled!\n"); g_skip=TRUE; } - else - { - //printf("*** Section is enabled!\n"); - } } } @@ -276,7 +270,7 @@ void replaceComment(int offset); BEGIN(CComment); } } -"!>" { +"!>"|"!<"|"!!" { if (g_lang!=SrcLangExt_Fortran) { REJECT; @@ -360,7 +354,7 @@ void replaceComment(int offset); BEGIN(CComment); } } -"!>" { +"!>"|"!<"|"!!" { if (g_lang!=SrcLangExt_Fortran) { REJECT; @@ -709,7 +703,7 @@ void replaceComment(int offset); } } } -[a-z_A-Z][a-z_A-Z0-9.\-]* { +[!()&| \ta-z_A-Z0-9.\-]+ { bool oldSkip=g_skip; startCondSection(yytext); if (g_condCtx==CComment && !oldSkip && g_skip) diff --git a/src/commentscan.h b/src/commentscan.h index 41cf766..9f90663 100644 --- a/src/commentscan.h +++ b/src/commentscan.h @@ -16,9 +16,9 @@ #ifndef COMMENTSCAN_H #define COMMENTSCAN_H -#include "qtbc.h" -#include "entry.h" +#include "types.h" +class Entry; class ParserInterface; /** @file diff --git a/src/commentscan.l b/src/commentscan.l index 21f6f1c..375b0f9 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -23,7 +23,6 @@ #include #include -#include "qtbc.h" #include #include #include @@ -46,6 +45,8 @@ #include "parserintf.h" #include "cite.h" #include "markdown.h" +#include "condparser.h" +#include "formula.h" #define YY_NO_INPUT 1 @@ -580,7 +581,7 @@ static void addXRefItem(const char *listName,const char *itemTitle, SectionInfo *si=new SectionInfo(listName,anchorLabel, g_sectionTitle,SectionInfo::Anchor, g_sectionLevel); - Doxygen::sectionDict.append(anchorLabel,si); + Doxygen::sectionDict->append(anchorLabel,si); docEntry->anchors->append(si); } outputXRef.resize(0); @@ -595,13 +596,13 @@ static QCString addFormula() QCString formLabel; QCString fText=formulaText.simplifyWhiteSpace(); Formula *f=0; - if ((f=Doxygen::formulaDict[fText])==0) + if ((f=Doxygen::formulaDict->find(fText))==0) { f = new Formula(fText); - Doxygen::formulaList.append(f); - Doxygen::formulaDict.insert(fText,f); + Doxygen::formulaList->append(f); + Doxygen::formulaDict->insert(fText,f); formLabel.sprintf("\\form#%d",f->getId()); - Doxygen::formulaNameDict.insert(formLabel,f); + Doxygen::formulaNameDict->insert(formLabel,f); } else { @@ -637,7 +638,7 @@ static void addSection() current->anchors->append(si); // add section to the global dictionary - Doxygen::sectionDict.append(g_sectionLabel,si); + Doxygen::sectionDict->append(g_sectionLabel,si); } @@ -1661,7 +1662,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" {LABELID} { // found argument SectionInfo *si = new SectionInfo(yyFileName,yytext,0,SectionInfo::Anchor,0); - Doxygen::sectionDict.append(yytext,si); + Doxygen::sectionDict->append(yytext,si); current->anchors->append(si); addOutput(yytext); BEGIN( Comment ); @@ -1684,7 +1685,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" /* ----- handle arguments of the preformatted block commands ------- */ -{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode"|"endmsc")/{NW} { // possible ends +{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode"|"endmsc"|"endvhdlflow")/{NW} { // possible ends addOutput(yytext); if (&yytext[4]==blockName) // found end of the block { @@ -1724,8 +1725,9 @@ RCSTAG "$"{ID}":"[^\n$]+"$" /* ----- handle arguments of if/ifnot commands ------- */ -{LABELID} { // parameter of if/ifnot guard - bool sectionEnabled = Config_getList("ENABLED_SECTIONS").find(yytext)!=-1; +[!()&| \ta-z_A-Z0-9.\-]+ {// parameter of if/ifnot guard + CondParser prs; + bool sectionEnabled=prs.parse(yyFileName,yyLineNr,yytext); bool parentEnabled = TRUE; if (!guards.isEmpty()) parentEnabled = guards.top()->isEnabled(); if (parentEnabled) diff --git a/src/condparser.cpp b/src/condparser.cpp new file mode 100644 index 0000000..4920ade --- /dev/null +++ b/src/condparser.cpp @@ -0,0 +1,306 @@ +/** + * Copyright (C) 1997-2012 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + * C++ Expression parser for ENABLED_SECTIONS in Doxygen + * + * Features used: + * Operators: + * && AND operator + * || OR operator + * ! NOT operator + */ + +#include "condparser.h" +#include "config.h" +#include "message.h" + +// declarations + +/** + * parses and evaluates the given expression. + * @returns + * - On error, an error message is returned. + * - On success, the result of the expression is either "1" or "0". + */ +bool CondParser::parse(const char *fileName,int lineNr,const char *expr) +{ + m_expr = expr; + m_tokenType = NOTHING; + + // initialize all variables + m_e = m_expr.data(); // let m_e point to the start of the expression + + getToken(); + if (m_tokenType==DELIMITER && m_token.isEmpty()) + { + return "Empty expression"; + } + bool answer=FALSE; + if (m_err.isEmpty()) + { + answer = parseLevel1(); + + // check for garbage at the end of the expression + // an expression ends with a character '\0' and token_type = delimeter + if (m_tokenType!=DELIMITER || !m_token.isEmpty()) + { + if (m_tokenType == DELIMITER) + { + if (m_token=="(" || m_token==")") + { + m_err=QCString("Unexpected parenthesis ")+m_token+"'"; + } + else + { + // user entered a not existing operator like "//" + m_err=QCString("Unexpected operator ")+m_token+"'"; + } + } + else + { + m_err=QCString("Unexpected part '")+m_token+"'"; + } + } + } + if (m_err) + { + warn(fileName,lineNr,"Warning: problem evaluating expression '%s': %s", + expr,m_err.data()); + } + return answer; +} + + +/** + * checks if the given char c is a delimeter + * minus is checked apart, can be unary minus + */ +static bool isDelimiter(const char c) +{ + return c=='&' || c=='|' || c=='!'; +} + +/** + * checks if the given char c is a letter or underscore + */ +static bool isAlpha(const char c) +{ + return (c>='A' && c<='Z') || (c>='a' && c<='z') || c=='_'; +} + +static bool isAlphaNum(const char c) +{ + return isAlpha(c) || (c>='0' && c<='9'); +} + +/** + * returns the id of the given operator + * returns -1 if the operator is not recognized + */ +int CondParser::getOperatorId(const QCString &opName) +{ + // level 2 + if (opName=="&&") { return AND; } + if (opName=="||") { return OR; } + + // not operator + if (opName=="!") { return NOT; } + + return UNKNOWN_OP; +} + +/** + * Get next token in the current string expr. + * Uses the data in m_expr pointed to by m_e to + * produce m_tokenType and m_token, set m_err in case of an error + */ +void CondParser::getToken() +{ + m_tokenType = NOTHING; + m_token.resize(0); + + //printf("\tgetToken e:{%c}, ascii=%i, col=%i\n", *e, *e, e-expr); + + // skip over whitespaces + while (*m_e == ' ' || *m_e == '\t') // space or tab + { + m_e++; + } + + // check for end of expression + if (*m_e=='\0') + { + // token is still empty + m_tokenType = DELIMITER; + return; + } + + // check for parentheses + if (*m_e == '(' || *m_e == ')') + { + m_tokenType = DELIMITER; + m_token += *m_e++; + return; + } + + // check for operators (delimeters) + if (isDelimiter(*m_e)) + { + m_tokenType = DELIMITER; + while (isDelimiter(*m_e)) + { + m_token += *m_e++; + } + return; + } + + // check for variables + if (isAlpha(*m_e)) + { + m_tokenType = VARIABLE; + while (isAlphaNum(*m_e)) + { + m_token += *m_e++; + } + return; + } + + // something unknown is found, wrong characters -> a syntax error + m_tokenType = UNKNOWN; + while (*m_e) + { + m_token += *m_e++; + } + m_err = QCString("Syntax error in part '")+m_token+"'"; + return; +} + + +/** + * conditional operators AND and OR + */ +bool CondParser::parseLevel1() +{ + bool ans = parseLevel2(); + int opId = getOperatorId(m_token); + + while (opId==AND || opId==OR) + { + getToken(); + ans = evalOperator(opId, ans, parseLevel2()); + opId = getOperatorId(m_token); + } + + return ans; +} + +/** + * NOT + */ +bool CondParser::parseLevel2() +{ + bool ans; + int opId = getOperatorId(m_token); + if (opId == NOT) + { + getToken(); + ans = !parseLevel3(); + } + else + { + ans = parseLevel3(); + } + + return ans; +} + + +/** + * parenthesized expression or variable + */ +bool CondParser::parseLevel3() +{ + // check if it is a parenthesized expression + if (m_tokenType == DELIMITER) + { + if (m_token=="(") + { + getToken(); + int ans = parseLevel1(); + if (m_tokenType!=DELIMITER || m_token!=")") + { + m_err="Parenthesis ) missing"; + return FALSE; + } + getToken(); + return ans; + } + } + + // if not parenthesized then the expression is a variable + return parseVar(); +} + + +bool CondParser::parseVar() +{ + bool ans = 0; + switch (m_tokenType) + { + case VARIABLE: + // this is a variable + ans = evalVariable(m_token); + getToken(); + break; + + default: + // syntax error or unexpected end of expression + if (m_token.isEmpty()) + { + m_err="Unexpected end of expression"; + return FALSE; + } + else + { + m_err="Value expected"; + return FALSE; + } + break; + } + return ans; +} + +/** + * evaluate an operator for given valuess + */ +bool CondParser::evalOperator(int opId, bool lhs, bool rhs) +{ + switch (opId) + { + // level 2 + case AND: return lhs && rhs; + case OR: return lhs || rhs; + } + + m_err = "Internal error unknown operator: id="+QCString().setNum(opId); + return FALSE; +} + +/** + * evaluate a variable + */ +bool CondParser::evalVariable(const char *varName) +{ + if (Config_getList("ENABLED_SECTIONS").find(varName)==-1) return FALSE; + return TRUE; +} + diff --git a/src/condparser.h b/src/condparser.h new file mode 100644 index 0000000..74a05cf --- /dev/null +++ b/src/condparser.h @@ -0,0 +1,75 @@ +#ifndef CONDPARSER_H +#define CONDPARSER_H + +/** + * Copyright (C) 1997-2012 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + * C++ Expression parser for EXTABLED_SETIONS in Doxygen + * + * Features used: + * Operators: + * && AND operator + * || OR operator + * ! NOT operator + */ + +#include + +class CondParser +{ + // public functions + public: + bool parse(const char *fileName,int lineNr,const char *expr); + + // enumerations + private: + enum TOKENTYPE + { + NOTHING = -1, + DELIMITER, + VARIABLE, + UNKNOWN + }; + enum OPERATOR_ID + { + UNKNOWN_OP = -1, + AND = 1, + OR, + NOT + }; + + // data + private: + + QCString m_err; //!< error state + QCString m_expr; //!< holds the expression + const char *m_e; //!< points to a character in expr + + QCString m_token; //!< holds the token + TOKENTYPE m_tokenType; //!< type of the token + + // private functions + private: + void getToken(); + + bool parseLevel1(); + bool parseLevel2(); + bool parseLevel3(); + bool parseVar(); + + bool evalOperator(const int opId, bool lhs, bool rhs); + bool evalVariable(const char *varName); + int getOperatorId(const QCString &opName); +}; + +#endif + diff --git a/src/config.h b/src/config.h index d18e87d..5ed8bc4 100644 --- a/src/config.h +++ b/src/config.h @@ -19,9 +19,7 @@ #ifndef CONFIG_H #define CONFIG_H -#include "qtbc.h" #include -#include #include #include #include "ftextstream.h" diff --git a/src/config.l b/src/config.l index 3b2c426..7c37dea 100644 --- a/src/config.l +++ b/src/config.l @@ -1451,6 +1451,13 @@ void Config::check() gamma=240; } + QCString mathJaxFormat = Config_getEnum("MATHJAX_FORMAT"); + if (!mathJaxFormat.isEmpty() && mathJaxFormat!="HTML-CSS" && + mathJaxFormat!="NativeMML" && mathJaxFormat!="SVG") + { + config_err("error: Unsupported value for MATHJAX_FORMAT: Should be one of HTML-CSS, NativeMML, or SVG\n"); + Config_getEnum("MATHJAX_FORMAT")="HTML-CSS"; + } // add default words if needed QStrList &annotationFromBrief = Config_getList("ABBREVIATE_BRIEF"); diff --git a/src/config.xml b/src/config.xml index 410f732..3ca3313 100644 --- a/src/config.xml +++ b/src/config.xml @@ -510,7 +510,8 @@ disable (NO) the deprecated list. This list is created by putting ' defval='1'/>