summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
l---------[-rw-r--r--]addon/doxmlparser/include/doxmlintf.h1142
-rw-r--r--addon/doxmlparser/src/basehandler.h2
-rw-r--r--addon/doxmlparser/src/baseiterator.h2
-rw-r--r--addon/doxmlparser/src/compoundhandler.cpp2
-rw-r--r--addon/doxmlparser/src/compoundhandler.h2
-rw-r--r--addon/doxmlparser/src/dochandler.cpp2
-rw-r--r--addon/doxmlparser/src/dochandler.h2
-rw-r--r--[l---------]addon/doxmlparser/src/doxmlintf.h1142
-rw-r--r--addon/doxmlparser/src/graphhandler.h2
-rw-r--r--addon/doxmlparser/src/linkedtexthandler.cpp2
-rw-r--r--addon/doxmlparser/src/linkedtexthandler.h2
-rw-r--r--addon/doxmlparser/src/loamhandler.h2
-rw-r--r--addon/doxmlparser/src/mainhandler.cpp2
-rw-r--r--addon/doxmlparser/src/mainhandler.h2
-rw-r--r--addon/doxmlparser/src/memberhandler.cpp2
-rw-r--r--addon/doxmlparser/src/memberhandler.h2
-rw-r--r--addon/doxmlparser/src/paramhandler.cpp2
-rw-r--r--addon/doxmlparser/src/paramhandler.h2
-rw-r--r--addon/doxmlparser/src/sectionhandler.cpp2
-rw-r--r--addon/doxmlparser/src/sectionhandler.h2
-rw-r--r--addon/doxyapp/doxyapp.cpp2
-rw-r--r--addon/doxysearch/doxyindexer.cpp2
-rw-r--r--addon/doxysearch/doxysearch.cpp2
-rw-r--r--addon/doxywizard/Makefile.in2
-rw-r--r--addon/doxywizard/config.l2
-rw-r--r--addon/doxywizard/config_doxyw.l2
-rw-r--r--addon/doxywizard/inputbool.cpp2
-rw-r--r--addon/doxywizard/inputbool.h2
-rw-r--r--addon/doxywizard/inputint.cpp2
-rw-r--r--addon/doxywizard/inputint.h2
-rw-r--r--addon/doxywizard/inputstring.cpp2
-rw-r--r--addon/doxywizard/inputstring.h2
-rw-r--r--addon/doxywizard/inputstrlist.cpp2
-rw-r--r--addon/doxywizard/inputstrlist.h2
-rw-r--r--addon/doxywizard/version.h2
-rw-r--r--addon/doxywizard/wizard.h2
-rwxr-xr-xconfigure2
-rwxr-xr-xconfigure.bin2
-rw-r--r--doc/Makefile.in2
-rw-r--r--doc/Makefile.latex2
-rw-r--r--doc/Makefile.win_make.in2
-rw-r--r--doc/Makefile.win_nmake.in2
-rw-r--r--doc/arch.doc2
-rw-r--r--doc/autolink.doc2
-rw-r--r--doc/commands.doc2
-rw-r--r--doc/custcmd.doc2
-rw-r--r--doc/customize.doc2
-rw-r--r--doc/diagrams.doc2
-rw-r--r--doc/docblocks.doc2
-rw-r--r--doc/doxygen.12
-rw-r--r--doc/doxygen_manual.tex4
-rw-r--r--doc/doxygen_usage.doc2
-rw-r--r--doc/doxywizard_usage.doc2
-rw-r--r--doc/external.doc2
-rw-r--r--doc/extsearch.doc2
-rw-r--r--doc/faq.doc2
-rw-r--r--doc/features.doc2
-rw-r--r--doc/formulas.doc2
-rw-r--r--doc/grouping.doc2
-rw-r--r--doc/htmlcmds.doc364
-rw-r--r--doc/index.doc4
-rw-r--r--doc/install.doc2
-rw-r--r--doc/language.doc774
-rw-r--r--doc/language.tpl2
-rw-r--r--doc/maintainers.txt2
-rw-r--r--doc/markdown.doc2
-rw-r--r--doc/output.doc2
-rw-r--r--doc/preprocessing.doc2
-rw-r--r--doc/searching.doc2
-rw-r--r--doc/starting.doc2
-rw-r--r--doc/trouble.doc2
-rw-r--r--doc/xmlcmds.doc2
-rw-r--r--src/Makefile.in2
-rw-r--r--src/arguments.h2
-rw-r--r--src/bufstr.h2
-rw-r--r--src/classdef.cpp2
-rw-r--r--src/classdef.h2
-rw-r--r--src/classlist.cpp2
-rw-r--r--src/classlist.h2
-rw-r--r--src/cmdmapper.cpp2
-rw-r--r--src/cmdmapper.h2
-rw-r--r--src/code.h2
-rw-r--r--src/code.l2
-rw-r--r--src/commentcnv.h2
-rw-r--r--src/commentcnv.l2
-rw-r--r--src/commentscan.h2
-rw-r--r--src/commentscan.l12
-rw-r--r--src/compound.xsd93
-rw-r--r--src/condparser.cpp2
-rw-r--r--src/condparser.h2
-rw-r--r--src/config.h2
-rw-r--r--src/config.l2
-rw-r--r--src/config.xml2
-rwxr-xr-xsrc/configgen.py2
-rw-r--r--src/configoptions.h2
-rw-r--r--src/constexp.h2
-rw-r--r--src/constexp.l2
-rw-r--r--src/constexp.y2
-rw-r--r--src/context.cpp273
-rw-r--r--src/context.h6
-rw-r--r--src/cppvalue.cpp2
-rw-r--r--src/cppvalue.h2
-rw-r--r--src/debug.cpp2
-rw-r--r--src/debug.h2
-rw-r--r--src/declinfo.h2
-rw-r--r--src/declinfo.l2
-rw-r--r--src/defargs.h2
-rw-r--r--src/defargs.l2
-rw-r--r--src/defgen.cpp2
-rw-r--r--src/defgen.h2
-rw-r--r--src/define.cpp2
-rw-r--r--src/define.h2
-rw-r--r--src/definition.cpp2
-rw-r--r--src/definition.h2
-rw-r--r--src/dia.cpp2
-rw-r--r--src/dia.h2
-rw-r--r--src/diagram.cpp2
-rw-r--r--src/diagram.h2
-rw-r--r--src/dirdef.h2
-rw-r--r--src/docbookgen.cpp2
-rw-r--r--src/docbookgen.h2
-rw-r--r--src/docbookvisitor.cpp112
-rw-r--r--src/docbookvisitor.h2
-rw-r--r--src/docparser.cpp257
-rw-r--r--src/docparser.h94
-rw-r--r--src/docsets.cpp2
-rw-r--r--src/docsets.h2
-rw-r--r--src/doctokenizer.h2
-rw-r--r--src/doctokenizer.l2
-rw-r--r--src/docvisitor.h2
-rw-r--r--src/dot.cpp4
-rw-r--r--src/dot.h2
-rw-r--r--src/doxygen.cpp4
-rw-r--r--src/doxygen.h2
-rw-r--r--src/doxygen.pro.in2
-rw-r--r--src/eclipsehelp.cpp2
-rw-r--r--src/eclipsehelp.h2
-rw-r--r--src/entry.cpp2
-rw-r--r--src/entry.h2
-rw-r--r--src/example.h2
-rw-r--r--src/filedef.cpp2
-rw-r--r--src/filedef.h2
-rw-r--r--src/filename.cpp2
-rw-r--r--src/filename.h2
-rw-r--r--src/filestorage.h2
-rw-r--r--src/formula.cpp2
-rw-r--r--src/formula.h2
-rw-r--r--src/fortrancode.h2
-rw-r--r--src/fortranscanner.h2
-rw-r--r--src/ftvhelp.cpp4
-rw-r--r--src/ftvhelp.h2
-rw-r--r--src/groupdef.cpp2
-rw-r--r--src/groupdef.h2
-rw-r--r--src/htags.cpp2
-rw-r--r--src/htags.h2
-rw-r--r--src/htmlattrib.h2
-rw-r--r--src/htmldocvisitor.cpp115
-rw-r--r--src/htmldocvisitor.h2
-rw-r--r--src/htmlentity.cpp495
-rw-r--r--src/htmlentity.h47
-rw-r--r--src/htmlgen.cpp2
-rw-r--r--src/htmlgen.h2
-rw-r--r--src/htmlhelp.cpp2
-rw-r--r--src/htmlhelp.h2
-rw-r--r--src/image.cpp2
-rw-r--r--src/image.h2
-rw-r--r--src/index.cpp2
-rw-r--r--src/index.h2
-rw-r--r--src/language.cpp2
-rw-r--r--src/language.h2
-rw-r--r--src/latexdocvisitor.cpp151
-rw-r--r--src/latexdocvisitor.h2
-rw-r--r--src/latexgen.cpp4
-rw-r--r--src/latexgen.h2
-rw-r--r--src/layout.cpp2
-rw-r--r--src/layout.h2
-rw-r--r--src/libdoxycfg.pro.in2
-rw-r--r--src/libdoxycfg.t.in2
-rw-r--r--src/libdoxygen.pro.in4
-rw-r--r--src/libdoxygen.t.in2
-rw-r--r--src/logos.cpp2
-rw-r--r--src/logos.h2
-rw-r--r--src/main.cpp2
-rw-r--r--src/mandocvisitor.cpp46
-rw-r--r--src/mandocvisitor.h2
-rw-r--r--src/mangen.cpp2
-rw-r--r--src/mangen.h2
-rw-r--r--src/markdown.cpp14
-rw-r--r--src/markdown.h2
-rw-r--r--src/marshal.h2
-rw-r--r--src/memberdef.cpp2
-rw-r--r--src/memberdef.h2
-rw-r--r--src/membergroup.cpp2
-rw-r--r--src/membergroup.h2
-rw-r--r--src/memberlist.cpp2
-rw-r--r--src/memberlist.h2
-rw-r--r--src/membername.cpp2
-rw-r--r--src/membername.h2
-rw-r--r--src/message.cpp2
-rw-r--r--src/message.h2
-rw-r--r--src/msc.cpp2
-rw-r--r--src/msc.h2
-rw-r--r--src/namespacedef.cpp20
-rw-r--r--src/namespacedef.h3
-rw-r--r--src/objcache.cpp2
-rw-r--r--src/objcache.h2
-rw-r--r--src/outputgen.cpp2
-rw-r--r--src/outputgen.h2
-rw-r--r--src/outputlist.cpp2
-rw-r--r--src/outputlist.h2
-rw-r--r--src/pagedef.cpp2
-rw-r--r--src/pagedef.h2
-rw-r--r--src/parserintf.h2
-rw-r--r--src/perlmodgen.cpp199
-rw-r--r--src/perlmodgen.h2
-rw-r--r--src/pre.h2
-rw-r--r--src/pre.l2
-rw-r--r--src/printdocvisitor.h109
-rw-r--r--src/pycode.h2
-rw-r--r--src/pycode.l2
-rw-r--r--src/pyscanner.h2
-rw-r--r--src/pyscanner.l2
-rw-r--r--src/qtbc.h2
-rw-r--r--src/reflist.cpp2
-rw-r--r--src/reflist.h2
-rw-r--r--src/rtfdocvisitor.cpp201
-rw-r--r--src/rtfdocvisitor.h2
-rw-r--r--src/rtfgen.cpp2
-rw-r--r--src/rtfgen.h2
-rw-r--r--src/rtfstyle.cpp2
-rw-r--r--src/rtfstyle.h2
-rw-r--r--src/scanner.h2
-rw-r--r--src/scanner.l2
-rw-r--r--src/searchindex.cpp2
-rw-r--r--src/searchindex.h2
-rw-r--r--src/section.h2
-rw-r--r--src/sortdict.h2
-rw-r--r--src/sqlite3gen.cpp2
-rw-r--r--src/sqlite3gen.h2
-rw-r--r--src/store.cpp2
-rw-r--r--src/store.h2
-rw-r--r--src/tagreader.cpp2
-rw-r--r--src/tagreader.h2
-rw-r--r--src/tclscanner.h2
-rw-r--r--src/template.cpp765
-rw-r--r--src/textdocvisitor.cpp114
-rw-r--r--src/textdocvisitor.h2
-rw-r--r--src/tooltip.cpp2
-rw-r--r--src/tooltip.h2
-rw-r--r--src/translator.h2
-rw-r--r--src/translator_am.h2
-rw-r--r--src/translator_ar.h2
-rw-r--r--src/translator_br.h2
-rw-r--r--src/translator_ca.h2
-rw-r--r--src/translator_cn.h2
-rw-r--r--src/translator_cz.h2
-rw-r--r--src/translator_de.h2
-rw-r--r--src/translator_dk.h2
-rw-r--r--src/translator_en.h2
-rw-r--r--src/translator_eo.h2
-rw-r--r--src/translator_es.h2
-rw-r--r--src/translator_fa.h2
-rw-r--r--src/translator_fi.h2
-rw-r--r--src/translator_fr.h2
-rw-r--r--src/translator_gr.h2
-rw-r--r--src/translator_hr.h2
-rw-r--r--src/translator_hu.h2
-rw-r--r--src/translator_id.h2
-rw-r--r--src/translator_it.h2
-rw-r--r--src/translator_je.h2
-rw-r--r--src/translator_jp.h2
-rw-r--r--src/translator_ke.h2
-rw-r--r--src/translator_kr.h2
-rw-r--r--src/translator_lt.h2
-rw-r--r--src/translator_lv.h2
-rw-r--r--src/translator_mk.h2
-rw-r--r--src/translator_nl.h2
-rw-r--r--src/translator_no.h2
-rw-r--r--src/translator_pl.h2
-rw-r--r--src/translator_pt.h2
-rw-r--r--src/translator_ro.h2
-rw-r--r--src/translator_ru.h2
-rw-r--r--src/translator_sc.h2
-rw-r--r--src/translator_si.h2
-rw-r--r--src/translator_sk.h2
-rw-r--r--src/translator_sr.h2
-rw-r--r--src/translator_sv.h265
-rw-r--r--src/translator_tr.h2
-rw-r--r--src/translator_tw.h2
-rw-r--r--src/translator_ua.h2
-rw-r--r--src/translator_vi.h2
-rw-r--r--src/translator_za.h2
-rw-r--r--src/types.h2
-rw-r--r--src/util.cpp154
-rw-r--r--src/util.h3
-rw-r--r--src/version.h2
-rw-r--r--src/vhdlcode.l2
-rw-r--r--src/vhdldocgen.cpp2
-rw-r--r--src/vhdldocgen.h2
-rw-r--r--src/vhdlparser.y2
-rw-r--r--src/vhdlscanner.h2
-rw-r--r--src/xmldocvisitor.cpp113
-rw-r--r--src/xmldocvisitor.h2
-rw-r--r--src/xmlgen.cpp30
-rw-r--r--src/xmlgen.h2
306 files changed, 3686 insertions, 3994 deletions
diff --git a/.gitignore b/.gitignore
index 8d3fcf3..6abfaa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,6 +55,7 @@
/doc/Makefile
/doc/translator_report.txt
/doc/config.doc
+/doc/language.doc
/doxygen_docs
/doxygen.tag
diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h
index f13971f..2d2b707 100644..120000
--- a/addon/doxmlparser/include/doxmlintf.h
+++ b/addon/doxmlparser/include/doxmlintf.h
@@ -1,1141 +1 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2013 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.
- *
- */
-
-#ifndef _DOXMLINTF_H
-#define _DOXMLINTF_H
-
-/*! \file
- * \brief The interface to the object model provided by the XML parser
- * library.
- *
- * To start using this library one calls createObjectModel() and then
- * uses the returned IDoxygen interface to read doxygen generated
- * XML output and navigate through the information contained in it.
- *
- * @see createObjectModel()
- */
-
-class IMember;
-class IDocIterator;
-class ICompound;
-class ISection;
-class INode;
-class IDocInternal;
-class IDocRoot;
-
-#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {}
-
-/*! \brief Read only interface to a string.
- */
-class IString
-{
- public:
- VIRTUAL_DESTRUCTOR(IString)
- /*! Returns a latin1 character representation of the string. */
- virtual const char *latin1() const = 0;
- /*! Returns a utf8 character representation of the string. */
- virtual const char *utf8() const = 0;
- /*! Returns a 16-bit unicode character representation of the character at
- * position \a index in the string. The first character is at index 0.
- */
- virtual unsigned short unicodeCharAt(int index) const = 0;
- /*! Returns true if this string is empty or false otherwise */
- virtual bool isEmpty() const = 0;
- /*! Returns the number of characters in the string. */
- virtual int length() const = 0;
-};
-
-/*! \brief Base interface for hyperlinked text
- *
- * Depending on the result of kind() the interface is extended by
- * ILT_Text or ILT_Ref.
- */
-class ILinkedText
-{
- public:
- VIRTUAL_DESTRUCTOR(ILinkedText)
- enum Kind { Kind_Text, Kind_Ref };
- virtual Kind kind() const = 0;
-};
-
-/*! \brief Plain text fragment.
- */
-class ILT_Text : public ILinkedText
-{
- public:
- VIRTUAL_DESTRUCTOR(ILT_Text)
- virtual const IString *text() const = 0;
-};
-
-/*! \brief Reference to an object.
- */
-class ILT_Ref : public ILinkedText
-{
- public:
- VIRTUAL_DESTRUCTOR(ILT_Ref)
- enum TargetKind { Member, Compound };
- virtual const IString *id() const = 0;
- virtual TargetKind targetKind() const = 0;
- virtual const IString *external() const = 0;
- virtual const IString *text() const = 0;
-};
-
-/*! \brief Iterates over a list of ILinkedText fragments.
- */
-class ILinkedTextIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(ILinkedTextIterator)
- virtual ILinkedText *toFirst() = 0;
- virtual ILinkedText *toLast() = 0;
- virtual ILinkedText *toNext() = 0;
- virtual ILinkedText *toPrev() = 0;
- virtual ILinkedText *current() const = 0;
- virtual void release() = 0;
-};
-
-/*! \brief Representation of a parameter of a function. */
-class IParam
-{
- public:
- VIRTUAL_DESTRUCTOR(IParam)
- virtual ILinkedTextIterator *type() const = 0;
- virtual const IString * declarationName() const = 0;
- virtual const IString * definitionName() const = 0;
- virtual const IString * attrib() const = 0;
- virtual const IString * arraySpecifier() const = 0;
- virtual ILinkedTextIterator *defaultValue() const = 0;
- virtual IDocRoot *briefDescription() const = 0;
-};
-
-class IParamIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IParamIterator)
- virtual IParam *toFirst() = 0;
- virtual IParam *toLast() = 0;
- virtual IParam *toNext() = 0;
- virtual IParam *toPrev() = 0;
- virtual IParam *current() const = 0;
- virtual void release() = 0;
-};
-
-class IMemberReference
-{
- public:
- VIRTUAL_DESTRUCTOR(IMemberReference)
- virtual IMember *member() const = 0;
- virtual const IString * name() const = 0;
- virtual const IString * scope() const = 0;
- virtual const IString * protection() const = 0;
- virtual const IString * virtualness() const = 0;
- virtual const IString * ambiguityScope() const = 0;
-};
-
-class IMemberReferenceIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IMemberReferenceIterator)
- virtual IMemberReference *toFirst() = 0;
- virtual IMemberReference *toLast() = 0;
- virtual IMemberReference *toNext() = 0;
- virtual IMemberReference *toPrev() = 0;
- virtual IMemberReference *current() const = 0;
- virtual void release() = 0;
-};
-
-class IDoc
-{
- public:
- VIRTUAL_DESTRUCTOR(IDoc)
- enum Kind
- {
- Invalid = 0, // 0
- Para, // 1 -> IDocPara
- Text, // 2 -> IDocText
- MarkupModifier, // 3 -> IDocMarkupModifier
- ItemizedList, // 4 -> IDocItemizedList
- OrderedList, // 5 -> IDocOrderedList
- ListItem, // 6 -> IDocListItem
- ParameterList, // 7 -> IDocParameterList
- Parameter, // 8 -> IDocParameter
- SimpleSect, // 9 -> IDocSimpleSect
- Title, // 10 -> IDocTitle
- Ref, // 11 -> IDocRef
- VariableList, // 12 -> IDocVariableList
- VariableListEntry, // 13 -> IDocVariableListEntry
- HRuler, // 14 -> IDocHRuler
- LineBreak, // 15 -> IDocLineBreak
- ULink, // 16 -> IDocULink
- EMail, // 17 -> IDocEMail
- Link, // 18 -> IDocLink
- ProgramListing, // 19 -> IDocProgramListing
- CodeLine, // 20 -> IDocCodeLine
- Highlight, // 21 -> IDocHighlight
- Formula, // 22 -> IDocFormula
- Image, // 23 -> IDocImage
- DotFile, // 24 -> IDocDotFile
- IndexEntry, // 25 -> IDocIndexEntry
- Table, // 26 -> IDocTable
- Row, // 27 -> IDocRow
- Entry, // 28 -> IDocEntry
- Section, // 29 -> IDocSection
- Verbatim, // 30 -> IDocVerbatim
- Copy, // 31 -> IDocCopy
- TocList, // 32 -> IDocTocList
- TocItem, // 33 -> IDocTocItem
- Anchor, // 34 -> IDocAnchor
- Symbol, // 35 -> IDocSymbol
- Internal, // 36 -> IDocInternal
- Root, // 37 -> IDocRoot
- ParameterItem // 38 -> IDocParameterItem
- };
- virtual Kind kind() const = 0;
-};
-
-class IDocMarkup : public IDoc
-{
- public:
- enum Markup
- {
- Normal = 0x000,
- Bold = 0x001,
- Emphasis = 0x002,
- ComputerOutput = 0x004,
- Subscript = 0x008,
- Superscript = 0x010,
- SmallFont = 0x020,
- Center = 0x040,
- Preformatted = 0x080,
- Heading = 0x100
- };
-};
-
-class IDocPara : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocText : public IDocMarkup
-{
- public:
- virtual const IString * text() const = 0;
- virtual int markup() const = 0;
- virtual int headingLevel() const = 0;
-};
-
-class IDocMarkupModifier : public IDoc
-{
- public:
- virtual bool enabled() const = 0;
- virtual int markup() const = 0;
- virtual int headingLevel() const = 0;
-};
-
-class IDocItemizedList : public IDoc
-{
- public:
- virtual IDocIterator *elements() const = 0;
-};
-
-class IDocOrderedList : public IDoc
-{
- public:
- virtual IDocIterator *elements() const = 0;
-};
-
-class IDocListItem : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocParameterList : public IDoc
-{
- public:
- enum Types { Param, RetVal, Exception };
- virtual Types sectType() const = 0;
- virtual IDocIterator *params() const = 0;
-};
-
-class IDocParameterItem : public IDoc
-{
- public:
- virtual IDocIterator *paramNames() const = 0;
- virtual IDocPara *description() const = 0;
-};
-
-class IDocParameter : public IDoc
-{
- public:
- virtual const IString * name() const = 0;
-};
-
-class IDocTitle : public IDoc
-{
- public:
- virtual IDocIterator *title() const = 0;
-};
-
-class IDocSimpleSect : public IDoc
-{
- public:
- enum Types { Invalid = 0,
- See, Return, Author, Version,
- Since, Date, Bug, Note,
- Warning, Par, Deprecated, Pre,
- Post, Invar, Remark, Attention,
- Todo, Test, RCS, EnumValues,
- Examples
- };
- virtual Types type() const = 0;
- virtual const IString * typeString() const = 0;
- virtual IDocTitle *title() const = 0;
- virtual IDocPara *description() const = 0;
-};
-
-class IDocRef : public IDoc
-{
- public:
- enum TargetKind { Member, Compound };
- virtual const IString * refId() const = 0;
- virtual TargetKind targetKind() const = 0;
- virtual const IString * external() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocVariableList : public IDoc
-{
- public:
- virtual IDocIterator *entries() const = 0;
-};
-
-class IDocVariableListEntry : public IDoc
-{
- public:
- virtual ILinkedTextIterator * term() const = 0;
- virtual IDocPara *description() const = 0;
-};
-
-class IDocHRuler : public IDoc
-{
-};
-
-class IDocLineBreak : public IDoc
-{
-};
-
-class IDocULink : public IDoc
-{
- public:
- virtual const IString * url() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocEMail : public IDoc
-{
- public:
- virtual const IString * address() const = 0;
-};
-
-class IDocLink : public IDoc
-{
- public:
- virtual const IString * refId() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocProgramListing : public IDoc
-{
- public:
- virtual IDocIterator *codeLines() const = 0;
-};
-
-class IDocCodeLine : public IDoc
-{
- public:
- virtual int lineNumber() const = 0;
- virtual const IString * refId() const = 0;
- virtual IDocIterator *codeElements() const = 0;
-};
-
-class IDocHighlight : public IDoc
-{
- public:
- enum HighlightKind
- { Invalid=0,
- Comment, Keyword,
- KeywordType, KeywordFlow, CharLiteral,
- StringLiteral, Preprocessor
- };
- virtual HighlightKind highlightKind() const = 0;
- virtual IDocIterator *codeElements() const = 0;
-};
-
-class IDocFormula : public IDoc
-{
- public:
- virtual const IString * id() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocImage : public IDoc
-{
- public:
- virtual const IString * name() const = 0;
- virtual const IString * caption() const = 0;
-};
-
-class IDocDotFile : public IDoc
-{
- public:
- virtual const IString * name() const = 0;
- virtual const IString * caption() const = 0;
-};
-
-class IDocIndexEntry : public IDoc
-{
- public:
- virtual const IString * primary() const = 0;
- virtual const IString * secondary() const = 0;
-};
-
-class IDocTable : public IDoc
-{
- public:
- virtual IDocIterator *rows() const = 0;
- virtual int numColumns() const = 0;
- virtual const IString * caption() const = 0;
-};
-
-class IDocRow : public IDoc
-{
- public:
- virtual IDocIterator *entries() const = 0;
-};
-
-class IDocEntry : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocSection : public IDoc
-{
- public:
- virtual const IString * id() const = 0;
- virtual int level() const = 0;
- virtual IDocTitle *title() const = 0;
- virtual IDocIterator *paragraphs() const = 0;
- virtual IDocIterator *subSections() const = 0;
- virtual IDocInternal *internal() const = 0;
-};
-
-class IDocInternal : public IDoc
-{
- public:
- virtual IDocIterator *paragraphs() const = 0;
- virtual IDocIterator *subSections() const = 0;
-};
-
-class IDocTocList : public IDoc
-{
- public:
- virtual IDocIterator *elements() const = 0;
-};
-
-class IDocTocItem : public IDoc
-{
- public:
- virtual const IString *id() const = 0;
- virtual const IString *title() const = 0;
-};
-
-class IDocCopy : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocVerbatim : public IDoc
-{
- public:
- enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim };
- virtual const IString *text() const = 0;
- virtual Types type() const = 0;
-};
-
-class IDocAnchor : public IDoc
-{
- public:
- virtual const IString *id() const = 0;
-};
-
-class IDocSymbol : public IDoc
-{
- public:
- enum Types
- { Invalid = 0,
- Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy
- };
- virtual Types type() const = 0;
- virtual const IString * typeString() const = 0;
- virtual char letter() const = 0;
-};
-
-class IDocRoot : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
- virtual IDocInternal *internal() const = 0;
-};
-
-class IDocIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IDocIterator)
- virtual IDoc *toFirst() = 0;
- virtual IDoc *toLast() = 0;
- virtual IDoc *toNext() = 0;
- virtual IDoc *toPrev() = 0;
- virtual IDoc *current() const = 0;
- virtual void release() = 0;
-};
-
-class IEdgeLabel
-{
- public:
- VIRTUAL_DESTRUCTOR(IEdgeLabel)
- virtual const IString * label() const = 0;
-};
-
-class IEdgeLabelIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IEdgeLabelIterator)
- virtual IEdgeLabel *toFirst() = 0;
- virtual IEdgeLabel *toLast() = 0;
- virtual IEdgeLabel *toNext() = 0;
- virtual IEdgeLabel *toPrev() = 0;
- virtual IEdgeLabel *current() const = 0;
- virtual void release() = 0;
-};
-
-class IChildNode
-{
- public:
- VIRTUAL_DESTRUCTOR(IChildNode)
- enum NodeRelation { PublicInheritance, ProtectedInheritance,
- PrivateInheritance, Usage, TemplateInstance
- };
- virtual INode * node() const = 0;
- virtual NodeRelation relation() const = 0;
- virtual const IString * relationString() const = 0;
- virtual IEdgeLabelIterator *edgeLabels() const = 0;
-};
-
-class IChildNodeIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IChildNodeIterator)
- virtual IChildNode *toFirst() = 0;
- virtual IChildNode *toLast() = 0;
- virtual IChildNode *toNext() = 0;
- virtual IChildNode *toPrev() = 0;
- virtual IChildNode *current() const = 0;
- virtual void release() = 0;
-};
-
-class INode
-{
- public:
- VIRTUAL_DESTRUCTOR(INode)
- virtual const IString * id() const = 0;
- virtual const IString * label() const = 0;
- virtual const IString * linkId() const = 0;
- virtual IChildNodeIterator *children() const = 0;
-};
-
-class INodeIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(INodeIterator)
- virtual INode *toFirst() = 0;
- virtual INode *toLast() = 0;
- virtual INode *toNext() = 0;
- virtual INode *toPrev() = 0;
- virtual INode *current() const = 0;
- virtual void release() = 0;
-};
-
-class IGraph
-{
- public:
- VIRTUAL_DESTRUCTOR(IGraph)
- virtual INodeIterator *nodes() const = 0;
-};
-
-class IMember
-{
- public:
- VIRTUAL_DESTRUCTOR(IMember)
- enum MemberKind { Invalid=0,
- Define, Property, Variable, Typedef, Enum,
- Function, Signal, Prototype, Friend, DCOP, Slot,
- EnumValue
- };
- virtual ICompound *compound() const = 0;
- virtual ISection *section() const = 0;
- virtual MemberKind kind() const = 0;
- virtual const IString * kindString() const = 0;
- virtual const IString * id() const = 0;
- virtual const IString * protection() const = 0;
- virtual const IString * virtualness() const = 0;
- virtual ILinkedTextIterator *type() const = 0;
- virtual const IString * typeString() const = 0;
- virtual const IString * name() const = 0;
- virtual const IString * readAccessor() const = 0;
- virtual const IString * writeAccessor() const = 0;
- virtual const IString * definition() const = 0;
- virtual const IString * argsstring() const = 0;
- virtual bool isConst() const = 0;
- virtual bool isVolatile() const = 0;
- virtual bool isStatic() const = 0;
- virtual bool isExplicit() const = 0;
- virtual bool isInline() const = 0;
- virtual bool isMutable() const = 0;
- virtual bool isReadable() const = 0;
- virtual bool isWritable() const = 0;
- virtual IParamIterator *parameters() const = 0;
- virtual IParamIterator *templateParameters() const = 0;
- virtual ILinkedTextIterator *initializer() const = 0;
- virtual ILinkedTextIterator *exceptions() const = 0;
- virtual IMemberReferenceIterator *references() const = 0;
- virtual IMemberReferenceIterator *referencedBy() const = 0;
- virtual const IString *bodyFile() const = 0;
- virtual int bodyStart() const = 0;
- virtual int bodyEnd() const = 0;
- virtual const IString * definitionFile() const = 0;
- virtual int definitionLine() const = 0;
- virtual IMemberReference *reimplements() const = 0;
- virtual IMemberReferenceIterator *reimplementedBy() const = 0;
- virtual IDocRoot *briefDescription() const = 0;
- virtual IDocRoot *detailedDescription() const = 0;
- virtual IDocRoot *inbodyDescription() const = 0;
-};
-
-class IDefine : public IMember
-{
- public:
-};
-
-class IProperty : public IMember
-{
- public:
-};
-
-class IVariable : public IMember
-{
- public:
-};
-
-class ITypedef : public IMember
-{
- public:
-};
-
-class IFunction : public IMember
-{
- public:
-};
-
-class ISignal : public IMember
-{
- public:
-};
-
-class IPrototype : public IMember
-{
- public:
-};
-
-class IFriend : public IMember
-{
- public:
-};
-
-class IDCOP : public IMember
-{
- public:
-};
-
-class ISlot : public IMember
-{
- public:
-};
-
-class IEnumValue : public IMember
-{
- public:
- virtual const IString * name() const = 0;
-};
-
-/*! \brief Include relation
- */
-class IInclude
-{
- public:
- VIRTUAL_DESTRUCTOR(IInclude)
- virtual const IString * name() const = 0;
- virtual const IString * refId() const = 0;
- virtual bool isLocal() const = 0;
-};
-
-class IIncludeIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IIncludeIterator)
- virtual IInclude *toFirst() = 0;
- virtual IInclude *toLast() = 0;
- virtual IInclude *toNext() = 0;
- virtual IInclude *toPrev() = 0;
- virtual IInclude *current() const = 0;
- virtual void release() = 0;
-};
-
-class IMemberIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IMemberIterator)
- virtual IMember *toFirst() = 0;
- virtual IMember *toLast() = 0;
- virtual IMember *toNext() = 0;
- virtual IMember *toPrev() = 0;
- virtual IMember *current() const = 0;
- virtual void release() = 0;
-};
-
-class IEnum : public IMember
-{
- public:
- virtual IMemberIterator *enumValues() const = 0;
-};
-
-/*! \brief The interface to a section in the object model.
- *
- * A compound can have a number of sections, where each
- * section contains a set of members with the properties implied by
- * the section kind. The kind() method returns the kind of the section.
- * The members of the section can be accessed via members(). Apart
- * from using kind(), some of the individual properties of the section can
- * also be inspected via isStatic(), isPublic(), isProtected() and
- * isPrivate().
- */
-class ISection
-{
- public:
- VIRTUAL_DESTRUCTOR(ISection)
- /*! Possible section types */
- enum SectionKind
- { Invalid=0,
- UserDefined, //!< A user defined member group
- PubTypes, //!< Public member typedefs
- PubFuncs, //!< Public member functions
- PubAttribs, //!< Public member attributes
- PubSlots, //!< Public Qt Slots
- Signals, //!< Qt Signals
- DCOPFuncs, //!< KDE-DCOP interface functions
- Properties, //!< IDL properties
- Events, //!< C# events
- PubStatFuncs, //!< Public static member functions
- PubStatAttribs, //!< Public static attributes
- ProTypes, //!< Protected member typedefs
- ProFuncs, //!< Protected member functions
- ProAttribs, //!< Protected member attributes
- ProSlots, //!< Protected slots
- ProStatFuncs, //!< Protected static member functions
- ProStatAttribs, //!< Protected static member attributes
- PacTypes, //!< Package member typedefs
- PacFuncs, //!< Package member functions
- PacAttribs, //!< Package member attributes
- PacStatFuncs, //!< Package static member functions
- PacStatAttribs, //!< Package static member attributes
- PriTypes, //!< Private member typedefs
- PriFuncs, //!< Private member functions
- PriAttribs, //!< Private member attributes
- PriSlots, //!< Private Qt slots
- PriStatFuncs, //!< Private static member functions
- PriStatAttribs, //!< Private static member attributes
- Friend, //!< Friends
- Related, //!< Function marked as related
- Defines, //!< Preprocessor defines
- Prototypes, //!< Global function prototypes
- Typedefs, //!< Global typedefs
- Enums, //!< Enumerations
- Functions, //!< Global functions
- Variables //!< Global variables
- };
-
- /*! Returns a string representation of the value returned by kind() */
- virtual const IString * kindString() const = 0;
-
- /*! Returns what kind of section this is */
- virtual SectionKind kind() const = 0;
-
- /*! Returns the description attached to this section (for user defined
- * sections, also known as member groups).
- */
- virtual IDocRoot *description() const = 0;
-
- /*! Returns an iterator for the members of this section */
- virtual IMemberIterator *members() const = 0;
-
- /*! Returns \c true if this section contains statics */
- virtual bool isStatic() const = 0;
-
- /*! Returns \c true if this section belongs to a
- * public section of a class
- */
- virtual bool isPublic() const = 0;
-
- /*! Returns \c true if this section belongs to a
- * private section of a class
- */
- virtual bool isPrivate() const = 0;
-
- /*! Returns \c true if this section belongs to a
- * protected section of a class
- * */
- virtual bool isProtected() const = 0;
-};
-
-class IUserDefined : public ISection
-{
- public:
- virtual const IString * header() const = 0;
-};
-
-class ISectionIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(ISectionIterator)
- virtual ISection *toFirst() = 0;
- virtual ISection *toLast() = 0;
- virtual ISection *toNext() = 0;
- virtual ISection *toPrev() = 0;
- virtual ISection *current() const = 0;
- virtual void release() = 0;
-};
-
-/*! \brief The interface to a compound in the object model.
- *
- * A compound has a name which can be obtained via the name() method
- * and a unique id, which is return via the id() method.
- * A compound consists zero or more members which are grouped into sections.
- * The sections() method can be used to access the individual sections.
- * Alternatively, members can be obtained by name or id. There are
- * different types of compounds. The kind() method returns what kind of
- * compound this is. Depending on the return value one can dynamically
- * cast an interface pointer to an more specialised interface that provides
- * additional methods.
- * Example:
- * \code
- * ICompound *comp=...;
- * if (comp->kind()==ICompound::Class)
- * {
- * IClass *cls = dynamic_cast<IClass*>(comp);
- * // use methods of IClass
- * }
- * \endcode
- * The documentation that is provided by a compound is available via
- * the briefDescription() and detailedDescription() methods.
- * To avoid excessive memory usage, release() should be called (once) on each
- * compound interface pointer that is no longer needed.
- */
-class ICompound
-{
- public:
- VIRTUAL_DESTRUCTOR(ICompound)
- /*! Represents the kind of compounds recognised by doxygen. */
- enum CompoundKind { Invalid=0,
- Class, Struct, Union, Interface, Protocol, Category,
- Exception, File, Namespace, Group, Page, Example, Dir
- };
-
- /*! Returns the name of this compound */
- virtual const IString * name() const = 0;
-
- /*! Returns the id of this compound. The id is a
- * unique string representing a specific compound object.
- */
- virtual const IString * id() const = 0;
-
- /*! Returns the kind of compound. See #CompoundKind for possible
- * values.
- */
- virtual CompoundKind kind() const = 0;
-
- /*! Returns a string representation of the compound kind.
- * @see kind()
- */
- virtual const IString * kindString() const = 0;
-
- /*! Returns an iterator for the different member sections in this
- * compound.
- */
- virtual ISectionIterator *sections() const = 0;
-
- /*! Returns a tree-structured representation of the brief
- * description that is attached to this compound.
- */
- virtual IDocRoot *briefDescription() const = 0;
-
- /*! Returns a tree-structured representation of the detailed
- * description that is attached to this compound.
- */
- virtual IDocRoot *detailedDescription() const = 0;
-
- /*! Returns an interface to a member given its id.
- * @param id The member id.
- */
- virtual IMember *memberById(const char * id) const = 0;
-
- /*! Returns a list of all members within the compound having a certain
- * name. Member overloading is the reason why there can be more than
- * one member.
- * @param name The name of the member.
- */
- virtual IMemberIterator *memberByName(const char * name) const = 0;
-
- /*! Decreases the reference counter for this compound. If it reaches
- * zero, the memory for the compound will be released.
- */
- virtual void release() = 0;
-};
-
-class ICompoundIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(ICompoundIterator)
- virtual void toFirst() = 0;
- virtual void toLast() = 0;
- virtual void toNext() = 0;
- virtual void toPrev() = 0;
- virtual ICompound *current() const = 0;
- virtual void release() = 0;
-};
-
-class IRelatedCompound
-{
- public:
- VIRTUAL_DESTRUCTOR(IRelatedCompound)
- enum Protection { Public, Protected, Private };
- enum Kind { Normal, Virtual };
- virtual ICompound *compound() const = 0;
- virtual Protection protection() const = 0;
- virtual Kind kind() const = 0;
- virtual const IString *name() const = 0;
-
-};
-
-class IRelatedCompoundIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator)
- virtual IRelatedCompound *toFirst() = 0;
- virtual IRelatedCompound *toLast() = 0;
- virtual IRelatedCompound *toNext() = 0;
- virtual IRelatedCompound *toPrev() = 0;
- virtual IRelatedCompound *current() const = 0;
- virtual void release() = 0;
-};
-
-/*! \brief The interface to a class in the object model.
- */
-class IClass : public ICompound
-{
- public:
- virtual IGraph *inheritanceGraph() const = 0;
- virtual IGraph *collaborationGraph() const = 0;
- virtual IRelatedCompoundIterator *baseCompounds() const = 0;
- virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
- virtual ICompoundIterator *nestedCompounds() const = 0;
- virtual IParamIterator *templateParameters() const = 0;
- virtual const IString *locationFile() const = 0;
- virtual int locationLine() const = 0;
- virtual const IString *locationBodyFile() const = 0;
- virtual int locationBodyStartLine() const = 0;
- virtual int locationBodyEndLine() const = 0;
-
- // TODO:
- // class:
- // listOfAllMembers()
- // protection()
- // isAbstract()
-};
-
-/*! \brief The interface to a struct in the object model.
- */
-class IStruct : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
- virtual IRelatedCompoundIterator *baseCompounds() const = 0;
- virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
- virtual const IString *locationFile() const = 0;
- virtual int locationLine() const = 0;
- virtual int locationBodyStartLine() const = 0;
- virtual int locationBodyEndLine() const = 0;
-};
-
-/*! \brief The interface to a union in the object model.
- */
-class IUnion : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
-};
-
-/*! \brief The interface to a Java/IDL interface in the object model.
- */
-class IInterface : public ICompound
-{
- public:
- virtual IRelatedCompoundIterator *baseCompounds() const = 0;
- virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
-};
-
-
-/*! \brief The interface to a Java/IDL exception in the object model.
- */
-class IException : public ICompound
-{
-};
-
-/*! \brief The interface to a namespace in the object model.
- */
-class INamespace : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
-};
-
-/*! \brief The interface to a file in the object model.
- */
-class IFile : public ICompound
-{
- public:
- virtual IGraph *includeDependencyGraph() const = 0;
- virtual IGraph *includedByDependencyGraph() const = 0;
- virtual IDocProgramListing *source() const = 0;
- virtual ICompoundIterator *nestedCompounds() const = 0;
-
- virtual IIncludeIterator *includes() const = 0;
- virtual IIncludeIterator *includedBy() const = 0;
-
- // ICompound *innerNamespaces()
- // ICompoundIterator *innerClasses()
-};
-
-/*! \brief The interface to a group in the object model.
- */
-class IGroup : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
- // group:
- // Title()
- // innerFile()
- // innerPage()
-};
-
-/*! \brief The interface to a page in the object model.
- */
-class IPage : public ICompound
-{
- public:
- virtual const IDocTitle *title() const = 0;
-};
-
-/** \brief Interface to a directory in the object model. */
-class IDir : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
-};
-
-/*! Root node of the object model. */
-class IDoxygen
-{
- public:
- VIRTUAL_DESTRUCTOR(IDoxygen)
-
- /*! Returns an iterator that can be used to iterate over the list
- * of compounds found in the project.
- */
- virtual ICompoundIterator *compounds() const = 0;
-
- /*! Returns a compound given its unique \a id. If you have a
- * compound id this function is much more efficient than iterating
- * over the compound list. Returns 0 if the id is not valid.
- */
- virtual ICompound *compoundById(const char * id) const = 0;
-
- /*! Returns a compound given its name (including the scope).
- * Returns 0 if the name is not found in the project.
- */
- virtual ICompound *compoundByName(const char * name) const = 0;
-
- /*! Returns an interface to a compound containing a member given it the
- * member's id. Given the ICompound interface one can use the same id
- * to obtain the IMember interface.
- * @param id The member id.
- */
- virtual ICompound *memberById(const char * id) const = 0;
-
- /*! Returns a list of all compounds containing at least one members
- * with a certain name. Each compound can be asked to return the
- * list of members with that name.
- * @param name The name of the member.
- */
- virtual ICompoundIterator *memberByName(const char * name) const = 0;
-
- /*! Releases the memory for the object hierarchy obtained by
- * createdObjecModelFromXML(). First release all iterators before calling
- * this function.
- */
- virtual void release() = 0;
-
- /*! Sets the debug level.
- * - 0 all debugging messages are disabled (the default).
- * - 1 display important messages only
- * - 2 display any messages.
- */
- virtual void setDebugLevel(int level) = 0;
-
- /*! Reads an XML directory produced by doxygen and builds up a data
- * structure representing the contents of the XML files in the directory.
- */
- virtual bool readXMLDir(const char *xmlDirName) = 0;
-};
-
-/*! Factory method that creates an empty object model for a doxygen generated XML file.
- * Use the readXMLDir() method to build the model from an XML output
- * directory containing doxygen output.
- */
-IDoxygen *createObjectModel();
-
-#endif
+../src/doxmlintf.h \ No newline at end of file
diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h
index 32e4181..31fbf24 100644
--- a/addon/doxmlparser/src/basehandler.h
+++ b/addon/doxmlparser/src/basehandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/baseiterator.h b/addon/doxmlparser/src/baseiterator.h
index 9a59502..2ee9c2f 100644
--- a/addon/doxmlparser/src/baseiterator.h
+++ b/addon/doxmlparser/src/baseiterator.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp
index 3cd77b0..87b0440 100644
--- a/addon/doxmlparser/src/compoundhandler.cpp
+++ b/addon/doxmlparser/src/compoundhandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h
index 635cff3..c7e5ac0 100644
--- a/addon/doxmlparser/src/compoundhandler.h
+++ b/addon/doxmlparser/src/compoundhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp
index 992b185..df71e6a 100644
--- a/addon/doxmlparser/src/dochandler.cpp
+++ b/addon/doxmlparser/src/dochandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h
index 172bcd2..6bc2bd9 100644
--- a/addon/doxmlparser/src/dochandler.h
+++ b/addon/doxmlparser/src/dochandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h
index 1b1e847..ba863d4 120000..100644
--- a/addon/doxmlparser/src/doxmlintf.h
+++ b/addon/doxmlparser/src/doxmlintf.h
@@ -1 +1,1141 @@
-../include/doxmlintf.h \ No newline at end of file
+/******************************************************************************
+ *
+ * $Id$
+ *
+ *
+ * Copyright (C) 1997-2014 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.
+ *
+ */
+
+#ifndef _DOXMLINTF_H
+#define _DOXMLINTF_H
+
+/*! \file
+ * \brief The interface to the object model provided by the XML parser
+ * library.
+ *
+ * To start using this library one calls createObjectModel() and then
+ * uses the returned IDoxygen interface to read doxygen generated
+ * XML output and navigate through the information contained in it.
+ *
+ * @see createObjectModel()
+ */
+
+class IMember;
+class IDocIterator;
+class ICompound;
+class ISection;
+class INode;
+class IDocInternal;
+class IDocRoot;
+
+#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {}
+
+/*! \brief Read only interface to a string.
+ */
+class IString
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IString)
+ /*! Returns a latin1 character representation of the string. */
+ virtual const char *latin1() const = 0;
+ /*! Returns a utf8 character representation of the string. */
+ virtual const char *utf8() const = 0;
+ /*! Returns a 16-bit unicode character representation of the character at
+ * position \a index in the string. The first character is at index 0.
+ */
+ virtual unsigned short unicodeCharAt(int index) const = 0;
+ /*! Returns true if this string is empty or false otherwise */
+ virtual bool isEmpty() const = 0;
+ /*! Returns the number of characters in the string. */
+ virtual int length() const = 0;
+};
+
+/*! \brief Base interface for hyperlinked text
+ *
+ * Depending on the result of kind() the interface is extended by
+ * ILT_Text or ILT_Ref.
+ */
+class ILinkedText
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ILinkedText)
+ enum Kind { Kind_Text, Kind_Ref };
+ virtual Kind kind() const = 0;
+};
+
+/*! \brief Plain text fragment.
+ */
+class ILT_Text : public ILinkedText
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ILT_Text)
+ virtual const IString *text() const = 0;
+};
+
+/*! \brief Reference to an object.
+ */
+class ILT_Ref : public ILinkedText
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ILT_Ref)
+ enum TargetKind { Member, Compound };
+ virtual const IString *id() const = 0;
+ virtual TargetKind targetKind() const = 0;
+ virtual const IString *external() const = 0;
+ virtual const IString *text() const = 0;
+};
+
+/*! \brief Iterates over a list of ILinkedText fragments.
+ */
+class ILinkedTextIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ILinkedTextIterator)
+ virtual ILinkedText *toFirst() = 0;
+ virtual ILinkedText *toLast() = 0;
+ virtual ILinkedText *toNext() = 0;
+ virtual ILinkedText *toPrev() = 0;
+ virtual ILinkedText *current() const = 0;
+ virtual void release() = 0;
+};
+
+/*! \brief Representation of a parameter of a function. */
+class IParam
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IParam)
+ virtual ILinkedTextIterator *type() const = 0;
+ virtual const IString * declarationName() const = 0;
+ virtual const IString * definitionName() const = 0;
+ virtual const IString * attrib() const = 0;
+ virtual const IString * arraySpecifier() const = 0;
+ virtual ILinkedTextIterator *defaultValue() const = 0;
+ virtual IDocRoot *briefDescription() const = 0;
+};
+
+class IParamIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IParamIterator)
+ virtual IParam *toFirst() = 0;
+ virtual IParam *toLast() = 0;
+ virtual IParam *toNext() = 0;
+ virtual IParam *toPrev() = 0;
+ virtual IParam *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IMemberReference
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IMemberReference)
+ virtual IMember *member() const = 0;
+ virtual const IString * name() const = 0;
+ virtual const IString * scope() const = 0;
+ virtual const IString * protection() const = 0;
+ virtual const IString * virtualness() const = 0;
+ virtual const IString * ambiguityScope() const = 0;
+};
+
+class IMemberReferenceIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IMemberReferenceIterator)
+ virtual IMemberReference *toFirst() = 0;
+ virtual IMemberReference *toLast() = 0;
+ virtual IMemberReference *toNext() = 0;
+ virtual IMemberReference *toPrev() = 0;
+ virtual IMemberReference *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IDoc
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IDoc)
+ enum Kind
+ {
+ Invalid = 0, // 0
+ Para, // 1 -> IDocPara
+ Text, // 2 -> IDocText
+ MarkupModifier, // 3 -> IDocMarkupModifier
+ ItemizedList, // 4 -> IDocItemizedList
+ OrderedList, // 5 -> IDocOrderedList
+ ListItem, // 6 -> IDocListItem
+ ParameterList, // 7 -> IDocParameterList
+ Parameter, // 8 -> IDocParameter
+ SimpleSect, // 9 -> IDocSimpleSect
+ Title, // 10 -> IDocTitle
+ Ref, // 11 -> IDocRef
+ VariableList, // 12 -> IDocVariableList
+ VariableListEntry, // 13 -> IDocVariableListEntry
+ HRuler, // 14 -> IDocHRuler
+ LineBreak, // 15 -> IDocLineBreak
+ ULink, // 16 -> IDocULink
+ EMail, // 17 -> IDocEMail
+ Link, // 18 -> IDocLink
+ ProgramListing, // 19 -> IDocProgramListing
+ CodeLine, // 20 -> IDocCodeLine
+ Highlight, // 21 -> IDocHighlight
+ Formula, // 22 -> IDocFormula
+ Image, // 23 -> IDocImage
+ DotFile, // 24 -> IDocDotFile
+ IndexEntry, // 25 -> IDocIndexEntry
+ Table, // 26 -> IDocTable
+ Row, // 27 -> IDocRow
+ Entry, // 28 -> IDocEntry
+ Section, // 29 -> IDocSection
+ Verbatim, // 30 -> IDocVerbatim
+ Copy, // 31 -> IDocCopy
+ TocList, // 32 -> IDocTocList
+ TocItem, // 33 -> IDocTocItem
+ Anchor, // 34 -> IDocAnchor
+ Symbol, // 35 -> IDocSymbol
+ Internal, // 36 -> IDocInternal
+ Root, // 37 -> IDocRoot
+ ParameterItem // 38 -> IDocParameterItem
+ };
+ virtual Kind kind() const = 0;
+};
+
+class IDocMarkup : public IDoc
+{
+ public:
+ enum Markup
+ {
+ Normal = 0x000,
+ Bold = 0x001,
+ Emphasis = 0x002,
+ ComputerOutput = 0x004,
+ Subscript = 0x008,
+ Superscript = 0x010,
+ SmallFont = 0x020,
+ Center = 0x040,
+ Preformatted = 0x080,
+ Heading = 0x100
+ };
+};
+
+class IDocPara : public IDoc
+{
+ public:
+ virtual IDocIterator *contents() const = 0;
+};
+
+class IDocText : public IDocMarkup
+{
+ public:
+ virtual const IString * text() const = 0;
+ virtual int markup() const = 0;
+ virtual int headingLevel() const = 0;
+};
+
+class IDocMarkupModifier : public IDoc
+{
+ public:
+ virtual bool enabled() const = 0;
+ virtual int markup() const = 0;
+ virtual int headingLevel() const = 0;
+};
+
+class IDocItemizedList : public IDoc
+{
+ public:
+ virtual IDocIterator *elements() const = 0;
+};
+
+class IDocOrderedList : public IDoc
+{
+ public:
+ virtual IDocIterator *elements() const = 0;
+};
+
+class IDocListItem : public IDoc
+{
+ public:
+ virtual IDocIterator *contents() const = 0;
+};
+
+class IDocParameterList : public IDoc
+{
+ public:
+ enum Types { Param, RetVal, Exception };
+ virtual Types sectType() const = 0;
+ virtual IDocIterator *params() const = 0;
+};
+
+class IDocParameterItem : public IDoc
+{
+ public:
+ virtual IDocIterator *paramNames() const = 0;
+ virtual IDocPara *description() const = 0;
+};
+
+class IDocParameter : public IDoc
+{
+ public:
+ virtual const IString * name() const = 0;
+};
+
+class IDocTitle : public IDoc
+{
+ public:
+ virtual IDocIterator *title() const = 0;
+};
+
+class IDocSimpleSect : public IDoc
+{
+ public:
+ enum Types { Invalid = 0,
+ See, Return, Author, Version,
+ Since, Date, Bug, Note,
+ Warning, Par, Deprecated, Pre,
+ Post, Invar, Remark, Attention,
+ Todo, Test, RCS, EnumValues,
+ Examples
+ };
+ virtual Types type() const = 0;
+ virtual const IString * typeString() const = 0;
+ virtual IDocTitle *title() const = 0;
+ virtual IDocPara *description() const = 0;
+};
+
+class IDocRef : public IDoc
+{
+ public:
+ enum TargetKind { Member, Compound };
+ virtual const IString * refId() const = 0;
+ virtual TargetKind targetKind() const = 0;
+ virtual const IString * external() const = 0;
+ virtual const IString * text() const = 0;
+};
+
+class IDocVariableList : public IDoc
+{
+ public:
+ virtual IDocIterator *entries() const = 0;
+};
+
+class IDocVariableListEntry : public IDoc
+{
+ public:
+ virtual ILinkedTextIterator * term() const = 0;
+ virtual IDocPara *description() const = 0;
+};
+
+class IDocHRuler : public IDoc
+{
+};
+
+class IDocLineBreak : public IDoc
+{
+};
+
+class IDocULink : public IDoc
+{
+ public:
+ virtual const IString * url() const = 0;
+ virtual const IString * text() const = 0;
+};
+
+class IDocEMail : public IDoc
+{
+ public:
+ virtual const IString * address() const = 0;
+};
+
+class IDocLink : public IDoc
+{
+ public:
+ virtual const IString * refId() const = 0;
+ virtual const IString * text() const = 0;
+};
+
+class IDocProgramListing : public IDoc
+{
+ public:
+ virtual IDocIterator *codeLines() const = 0;
+};
+
+class IDocCodeLine : public IDoc
+{
+ public:
+ virtual int lineNumber() const = 0;
+ virtual const IString * refId() const = 0;
+ virtual IDocIterator *codeElements() const = 0;
+};
+
+class IDocHighlight : public IDoc
+{
+ public:
+ enum HighlightKind
+ { Invalid=0,
+ Comment, Keyword,
+ KeywordType, KeywordFlow, CharLiteral,
+ StringLiteral, Preprocessor
+ };
+ virtual HighlightKind highlightKind() const = 0;
+ virtual IDocIterator *codeElements() const = 0;
+};
+
+class IDocFormula : public IDoc
+{
+ public:
+ virtual const IString * id() const = 0;
+ virtual const IString * text() const = 0;
+};
+
+class IDocImage : public IDoc
+{
+ public:
+ virtual const IString * name() const = 0;
+ virtual const IString * caption() const = 0;
+};
+
+class IDocDotFile : public IDoc
+{
+ public:
+ virtual const IString * name() const = 0;
+ virtual const IString * caption() const = 0;
+};
+
+class IDocIndexEntry : public IDoc
+{
+ public:
+ virtual const IString * primary() const = 0;
+ virtual const IString * secondary() const = 0;
+};
+
+class IDocTable : public IDoc
+{
+ public:
+ virtual IDocIterator *rows() const = 0;
+ virtual int numColumns() const = 0;
+ virtual const IString * caption() const = 0;
+};
+
+class IDocRow : public IDoc
+{
+ public:
+ virtual IDocIterator *entries() const = 0;
+};
+
+class IDocEntry : public IDoc
+{
+ public:
+ virtual IDocIterator *contents() const = 0;
+};
+
+class IDocSection : public IDoc
+{
+ public:
+ virtual const IString * id() const = 0;
+ virtual int level() const = 0;
+ virtual IDocTitle *title() const = 0;
+ virtual IDocIterator *paragraphs() const = 0;
+ virtual IDocIterator *subSections() const = 0;
+ virtual IDocInternal *internal() const = 0;
+};
+
+class IDocInternal : public IDoc
+{
+ public:
+ virtual IDocIterator *paragraphs() const = 0;
+ virtual IDocIterator *subSections() const = 0;
+};
+
+class IDocTocList : public IDoc
+{
+ public:
+ virtual IDocIterator *elements() const = 0;
+};
+
+class IDocTocItem : public IDoc
+{
+ public:
+ virtual const IString *id() const = 0;
+ virtual const IString *title() const = 0;
+};
+
+class IDocCopy : public IDoc
+{
+ public:
+ virtual IDocIterator *contents() const = 0;
+};
+
+class IDocVerbatim : public IDoc
+{
+ public:
+ enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim };
+ virtual const IString *text() const = 0;
+ virtual Types type() const = 0;
+};
+
+class IDocAnchor : public IDoc
+{
+ public:
+ virtual const IString *id() const = 0;
+};
+
+class IDocSymbol : public IDoc
+{
+ public:
+ enum Types
+ { Invalid = 0,
+ Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy
+ };
+ virtual Types type() const = 0;
+ virtual const IString * typeString() const = 0;
+ virtual char letter() const = 0;
+};
+
+class IDocRoot : public IDoc
+{
+ public:
+ virtual IDocIterator *contents() const = 0;
+ virtual IDocInternal *internal() const = 0;
+};
+
+class IDocIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IDocIterator)
+ virtual IDoc *toFirst() = 0;
+ virtual IDoc *toLast() = 0;
+ virtual IDoc *toNext() = 0;
+ virtual IDoc *toPrev() = 0;
+ virtual IDoc *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IEdgeLabel
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IEdgeLabel)
+ virtual const IString * label() const = 0;
+};
+
+class IEdgeLabelIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IEdgeLabelIterator)
+ virtual IEdgeLabel *toFirst() = 0;
+ virtual IEdgeLabel *toLast() = 0;
+ virtual IEdgeLabel *toNext() = 0;
+ virtual IEdgeLabel *toPrev() = 0;
+ virtual IEdgeLabel *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IChildNode
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IChildNode)
+ enum NodeRelation { PublicInheritance, ProtectedInheritance,
+ PrivateInheritance, Usage, TemplateInstance
+ };
+ virtual INode * node() const = 0;
+ virtual NodeRelation relation() const = 0;
+ virtual const IString * relationString() const = 0;
+ virtual IEdgeLabelIterator *edgeLabels() const = 0;
+};
+
+class IChildNodeIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IChildNodeIterator)
+ virtual IChildNode *toFirst() = 0;
+ virtual IChildNode *toLast() = 0;
+ virtual IChildNode *toNext() = 0;
+ virtual IChildNode *toPrev() = 0;
+ virtual IChildNode *current() const = 0;
+ virtual void release() = 0;
+};
+
+class INode
+{
+ public:
+ VIRTUAL_DESTRUCTOR(INode)
+ virtual const IString * id() const = 0;
+ virtual const IString * label() const = 0;
+ virtual const IString * linkId() const = 0;
+ virtual IChildNodeIterator *children() const = 0;
+};
+
+class INodeIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(INodeIterator)
+ virtual INode *toFirst() = 0;
+ virtual INode *toLast() = 0;
+ virtual INode *toNext() = 0;
+ virtual INode *toPrev() = 0;
+ virtual INode *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IGraph
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IGraph)
+ virtual INodeIterator *nodes() const = 0;
+};
+
+class IMember
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IMember)
+ enum MemberKind { Invalid=0,
+ Define, Property, Variable, Typedef, Enum,
+ Function, Signal, Prototype, Friend, DCOP, Slot,
+ EnumValue
+ };
+ virtual ICompound *compound() const = 0;
+ virtual ISection *section() const = 0;
+ virtual MemberKind kind() const = 0;
+ virtual const IString * kindString() const = 0;
+ virtual const IString * id() const = 0;
+ virtual const IString * protection() const = 0;
+ virtual const IString * virtualness() const = 0;
+ virtual ILinkedTextIterator *type() const = 0;
+ virtual const IString * typeString() const = 0;
+ virtual const IString * name() const = 0;
+ virtual const IString * readAccessor() const = 0;
+ virtual const IString * writeAccessor() const = 0;
+ virtual const IString * definition() const = 0;
+ virtual const IString * argsstring() const = 0;
+ virtual bool isConst() const = 0;
+ virtual bool isVolatile() const = 0;
+ virtual bool isStatic() const = 0;
+ virtual bool isExplicit() const = 0;
+ virtual bool isInline() const = 0;
+ virtual bool isMutable() const = 0;
+ virtual bool isReadable() const = 0;
+ virtual bool isWritable() const = 0;
+ virtual IParamIterator *parameters() const = 0;
+ virtual IParamIterator *templateParameters() const = 0;
+ virtual ILinkedTextIterator *initializer() const = 0;
+ virtual ILinkedTextIterator *exceptions() const = 0;
+ virtual IMemberReferenceIterator *references() const = 0;
+ virtual IMemberReferenceIterator *referencedBy() const = 0;
+ virtual const IString *bodyFile() const = 0;
+ virtual int bodyStart() const = 0;
+ virtual int bodyEnd() const = 0;
+ virtual const IString * definitionFile() const = 0;
+ virtual int definitionLine() const = 0;
+ virtual IMemberReference *reimplements() const = 0;
+ virtual IMemberReferenceIterator *reimplementedBy() const = 0;
+ virtual IDocRoot *briefDescription() const = 0;
+ virtual IDocRoot *detailedDescription() const = 0;
+ virtual IDocRoot *inbodyDescription() const = 0;
+};
+
+class IDefine : public IMember
+{
+ public:
+};
+
+class IProperty : public IMember
+{
+ public:
+};
+
+class IVariable : public IMember
+{
+ public:
+};
+
+class ITypedef : public IMember
+{
+ public:
+};
+
+class IFunction : public IMember
+{
+ public:
+};
+
+class ISignal : public IMember
+{
+ public:
+};
+
+class IPrototype : public IMember
+{
+ public:
+};
+
+class IFriend : public IMember
+{
+ public:
+};
+
+class IDCOP : public IMember
+{
+ public:
+};
+
+class ISlot : public IMember
+{
+ public:
+};
+
+class IEnumValue : public IMember
+{
+ public:
+ virtual const IString * name() const = 0;
+};
+
+/*! \brief Include relation
+ */
+class IInclude
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IInclude)
+ virtual const IString * name() const = 0;
+ virtual const IString * refId() const = 0;
+ virtual bool isLocal() const = 0;
+};
+
+class IIncludeIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IIncludeIterator)
+ virtual IInclude *toFirst() = 0;
+ virtual IInclude *toLast() = 0;
+ virtual IInclude *toNext() = 0;
+ virtual IInclude *toPrev() = 0;
+ virtual IInclude *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IMemberIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IMemberIterator)
+ virtual IMember *toFirst() = 0;
+ virtual IMember *toLast() = 0;
+ virtual IMember *toNext() = 0;
+ virtual IMember *toPrev() = 0;
+ virtual IMember *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IEnum : public IMember
+{
+ public:
+ virtual IMemberIterator *enumValues() const = 0;
+};
+
+/*! \brief The interface to a section in the object model.
+ *
+ * A compound can have a number of sections, where each
+ * section contains a set of members with the properties implied by
+ * the section kind. The kind() method returns the kind of the section.
+ * The members of the section can be accessed via members(). Apart
+ * from using kind(), some of the individual properties of the section can
+ * also be inspected via isStatic(), isPublic(), isProtected() and
+ * isPrivate().
+ */
+class ISection
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ISection)
+ /*! Possible section types */
+ enum SectionKind
+ { Invalid=0,
+ UserDefined, //!< A user defined member group
+ PubTypes, //!< Public member typedefs
+ PubFuncs, //!< Public member functions
+ PubAttribs, //!< Public member attributes
+ PubSlots, //!< Public Qt Slots
+ Signals, //!< Qt Signals
+ DCOPFuncs, //!< KDE-DCOP interface functions
+ Properties, //!< IDL properties
+ Events, //!< C# events
+ PubStatFuncs, //!< Public static member functions
+ PubStatAttribs, //!< Public static attributes
+ ProTypes, //!< Protected member typedefs
+ ProFuncs, //!< Protected member functions
+ ProAttribs, //!< Protected member attributes
+ ProSlots, //!< Protected slots
+ ProStatFuncs, //!< Protected static member functions
+ ProStatAttribs, //!< Protected static member attributes
+ PacTypes, //!< Package member typedefs
+ PacFuncs, //!< Package member functions
+ PacAttribs, //!< Package member attributes
+ PacStatFuncs, //!< Package static member functions
+ PacStatAttribs, //!< Package static member attributes
+ PriTypes, //!< Private member typedefs
+ PriFuncs, //!< Private member functions
+ PriAttribs, //!< Private member attributes
+ PriSlots, //!< Private Qt slots
+ PriStatFuncs, //!< Private static member functions
+ PriStatAttribs, //!< Private static member attributes
+ Friend, //!< Friends
+ Related, //!< Function marked as related
+ Defines, //!< Preprocessor defines
+ Prototypes, //!< Global function prototypes
+ Typedefs, //!< Global typedefs
+ Enums, //!< Enumerations
+ Functions, //!< Global functions
+ Variables //!< Global variables
+ };
+
+ /*! Returns a string representation of the value returned by kind() */
+ virtual const IString * kindString() const = 0;
+
+ /*! Returns what kind of section this is */
+ virtual SectionKind kind() const = 0;
+
+ /*! Returns the description attached to this section (for user defined
+ * sections, also known as member groups).
+ */
+ virtual IDocRoot *description() const = 0;
+
+ /*! Returns an iterator for the members of this section */
+ virtual IMemberIterator *members() const = 0;
+
+ /*! Returns \c true if this section contains statics */
+ virtual bool isStatic() const = 0;
+
+ /*! Returns \c true if this section belongs to a
+ * public section of a class
+ */
+ virtual bool isPublic() const = 0;
+
+ /*! Returns \c true if this section belongs to a
+ * private section of a class
+ */
+ virtual bool isPrivate() const = 0;
+
+ /*! Returns \c true if this section belongs to a
+ * protected section of a class
+ * */
+ virtual bool isProtected() const = 0;
+};
+
+class IUserDefined : public ISection
+{
+ public:
+ virtual const IString * header() const = 0;
+};
+
+class ISectionIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ISectionIterator)
+ virtual ISection *toFirst() = 0;
+ virtual ISection *toLast() = 0;
+ virtual ISection *toNext() = 0;
+ virtual ISection *toPrev() = 0;
+ virtual ISection *current() const = 0;
+ virtual void release() = 0;
+};
+
+/*! \brief The interface to a compound in the object model.
+ *
+ * A compound has a name which can be obtained via the name() method
+ * and a unique id, which is return via the id() method.
+ * A compound consists zero or more members which are grouped into sections.
+ * The sections() method can be used to access the individual sections.
+ * Alternatively, members can be obtained by name or id. There are
+ * different types of compounds. The kind() method returns what kind of
+ * compound this is. Depending on the return value one can dynamically
+ * cast an interface pointer to an more specialised interface that provides
+ * additional methods.
+ * Example:
+ * \code
+ * ICompound *comp=...;
+ * if (comp->kind()==ICompound::Class)
+ * {
+ * IClass *cls = dynamic_cast<IClass*>(comp);
+ * // use methods of IClass
+ * }
+ * \endcode
+ * The documentation that is provided by a compound is available via
+ * the briefDescription() and detailedDescription() methods.
+ * To avoid excessive memory usage, release() should be called (once) on each
+ * compound interface pointer that is no longer needed.
+ */
+class ICompound
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ICompound)
+ /*! Represents the kind of compounds recognised by doxygen. */
+ enum CompoundKind { Invalid=0,
+ Class, Struct, Union, Interface, Protocol, Category,
+ Exception, File, Namespace, Group, Page, Example, Dir
+ };
+
+ /*! Returns the name of this compound */
+ virtual const IString * name() const = 0;
+
+ /*! Returns the id of this compound. The id is a
+ * unique string representing a specific compound object.
+ */
+ virtual const IString * id() const = 0;
+
+ /*! Returns the kind of compound. See #CompoundKind for possible
+ * values.
+ */
+ virtual CompoundKind kind() const = 0;
+
+ /*! Returns a string representation of the compound kind.
+ * @see kind()
+ */
+ virtual const IString * kindString() const = 0;
+
+ /*! Returns an iterator for the different member sections in this
+ * compound.
+ */
+ virtual ISectionIterator *sections() const = 0;
+
+ /*! Returns a tree-structured representation of the brief
+ * description that is attached to this compound.
+ */
+ virtual IDocRoot *briefDescription() const = 0;
+
+ /*! Returns a tree-structured representation of the detailed
+ * description that is attached to this compound.
+ */
+ virtual IDocRoot *detailedDescription() const = 0;
+
+ /*! Returns an interface to a member given its id.
+ * @param id The member id.
+ */
+ virtual IMember *memberById(const char * id) const = 0;
+
+ /*! Returns a list of all members within the compound having a certain
+ * name. Member overloading is the reason why there can be more than
+ * one member.
+ * @param name The name of the member.
+ */
+ virtual IMemberIterator *memberByName(const char * name) const = 0;
+
+ /*! Decreases the reference counter for this compound. If it reaches
+ * zero, the memory for the compound will be released.
+ */
+ virtual void release() = 0;
+};
+
+class ICompoundIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(ICompoundIterator)
+ virtual void toFirst() = 0;
+ virtual void toLast() = 0;
+ virtual void toNext() = 0;
+ virtual void toPrev() = 0;
+ virtual ICompound *current() const = 0;
+ virtual void release() = 0;
+};
+
+class IRelatedCompound
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IRelatedCompound)
+ enum Protection { Public, Protected, Private };
+ enum Kind { Normal, Virtual };
+ virtual ICompound *compound() const = 0;
+ virtual Protection protection() const = 0;
+ virtual Kind kind() const = 0;
+ virtual const IString *name() const = 0;
+
+};
+
+class IRelatedCompoundIterator
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator)
+ virtual IRelatedCompound *toFirst() = 0;
+ virtual IRelatedCompound *toLast() = 0;
+ virtual IRelatedCompound *toNext() = 0;
+ virtual IRelatedCompound *toPrev() = 0;
+ virtual IRelatedCompound *current() const = 0;
+ virtual void release() = 0;
+};
+
+/*! \brief The interface to a class in the object model.
+ */
+class IClass : public ICompound
+{
+ public:
+ virtual IGraph *inheritanceGraph() const = 0;
+ virtual IGraph *collaborationGraph() const = 0;
+ virtual IRelatedCompoundIterator *baseCompounds() const = 0;
+ virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+ virtual IParamIterator *templateParameters() const = 0;
+ virtual const IString *locationFile() const = 0;
+ virtual int locationLine() const = 0;
+ virtual const IString *locationBodyFile() const = 0;
+ virtual int locationBodyStartLine() const = 0;
+ virtual int locationBodyEndLine() const = 0;
+
+ // TODO:
+ // class:
+ // listOfAllMembers()
+ // protection()
+ // isAbstract()
+};
+
+/*! \brief The interface to a struct in the object model.
+ */
+class IStruct : public ICompound
+{
+ public:
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+ virtual IRelatedCompoundIterator *baseCompounds() const = 0;
+ virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
+ virtual const IString *locationFile() const = 0;
+ virtual int locationLine() const = 0;
+ virtual int locationBodyStartLine() const = 0;
+ virtual int locationBodyEndLine() const = 0;
+};
+
+/*! \brief The interface to a union in the object model.
+ */
+class IUnion : public ICompound
+{
+ public:
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+};
+
+/*! \brief The interface to a Java/IDL interface in the object model.
+ */
+class IInterface : public ICompound
+{
+ public:
+ virtual IRelatedCompoundIterator *baseCompounds() const = 0;
+ virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
+};
+
+
+/*! \brief The interface to a Java/IDL exception in the object model.
+ */
+class IException : public ICompound
+{
+};
+
+/*! \brief The interface to a namespace in the object model.
+ */
+class INamespace : public ICompound
+{
+ public:
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+};
+
+/*! \brief The interface to a file in the object model.
+ */
+class IFile : public ICompound
+{
+ public:
+ virtual IGraph *includeDependencyGraph() const = 0;
+ virtual IGraph *includedByDependencyGraph() const = 0;
+ virtual IDocProgramListing *source() const = 0;
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+
+ virtual IIncludeIterator *includes() const = 0;
+ virtual IIncludeIterator *includedBy() const = 0;
+
+ // ICompound *innerNamespaces()
+ // ICompoundIterator *innerClasses()
+};
+
+/*! \brief The interface to a group in the object model.
+ */
+class IGroup : public ICompound
+{
+ public:
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+ // group:
+ // Title()
+ // innerFile()
+ // innerPage()
+};
+
+/*! \brief The interface to a page in the object model.
+ */
+class IPage : public ICompound
+{
+ public:
+ virtual const IDocTitle *title() const = 0;
+};
+
+/** \brief Interface to a directory in the object model. */
+class IDir : public ICompound
+{
+ public:
+ virtual ICompoundIterator *nestedCompounds() const = 0;
+};
+
+/*! Root node of the object model. */
+class IDoxygen
+{
+ public:
+ VIRTUAL_DESTRUCTOR(IDoxygen)
+
+ /*! Returns an iterator that can be used to iterate over the list
+ * of compounds found in the project.
+ */
+ virtual ICompoundIterator *compounds() const = 0;
+
+ /*! Returns a compound given its unique \a id. If you have a
+ * compound id this function is much more efficient than iterating
+ * over the compound list. Returns 0 if the id is not valid.
+ */
+ virtual ICompound *compoundById(const char * id) const = 0;
+
+ /*! Returns a compound given its name (including the scope).
+ * Returns 0 if the name is not found in the project.
+ */
+ virtual ICompound *compoundByName(const char * name) const = 0;
+
+ /*! Returns an interface to a compound containing a member given it the
+ * member's id. Given the ICompound interface one can use the same id
+ * to obtain the IMember interface.
+ * @param id The member id.
+ */
+ virtual ICompound *memberById(const char * id) const = 0;
+
+ /*! Returns a list of all compounds containing at least one members
+ * with a certain name. Each compound can be asked to return the
+ * list of members with that name.
+ * @param name The name of the member.
+ */
+ virtual ICompoundIterator *memberByName(const char * name) const = 0;
+
+ /*! Releases the memory for the object hierarchy obtained by
+ * createdObjecModelFromXML(). First release all iterators before calling
+ * this function.
+ */
+ virtual void release() = 0;
+
+ /*! Sets the debug level.
+ * - 0 all debugging messages are disabled (the default).
+ * - 1 display important messages only
+ * - 2 display any messages.
+ */
+ virtual void setDebugLevel(int level) = 0;
+
+ /*! Reads an XML directory produced by doxygen and builds up a data
+ * structure representing the contents of the XML files in the directory.
+ */
+ virtual bool readXMLDir(const char *xmlDirName) = 0;
+};
+
+/*! Factory method that creates an empty object model for a doxygen generated XML file.
+ * Use the readXMLDir() method to build the model from an XML output
+ * directory containing doxygen output.
+ */
+IDoxygen *createObjectModel();
+
+#endif
diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h
index d946fcf..090c62a 100644
--- a/addon/doxmlparser/src/graphhandler.h
+++ b/addon/doxmlparser/src/graphhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp
index d51d8e2..fe45133 100644
--- a/addon/doxmlparser/src/linkedtexthandler.cpp
+++ b/addon/doxmlparser/src/linkedtexthandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/linkedtexthandler.h b/addon/doxmlparser/src/linkedtexthandler.h
index 6c6a1c7..cebdeb0 100644
--- a/addon/doxmlparser/src/linkedtexthandler.h
+++ b/addon/doxmlparser/src/linkedtexthandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h
index 61f9e6b..a113aa9 100644
--- a/addon/doxmlparser/src/loamhandler.h
+++ b/addon/doxmlparser/src/loamhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp
index 49cfef9..48c77fa 100644
--- a/addon/doxmlparser/src/mainhandler.cpp
+++ b/addon/doxmlparser/src/mainhandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/mainhandler.h b/addon/doxmlparser/src/mainhandler.h
index 5706e6e..270f417 100644
--- a/addon/doxmlparser/src/mainhandler.h
+++ b/addon/doxmlparser/src/mainhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp
index 4d0a0cf..ea55333 100644
--- a/addon/doxmlparser/src/memberhandler.cpp
+++ b/addon/doxmlparser/src/memberhandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h
index 66c9a14..a84cc79 100644
--- a/addon/doxmlparser/src/memberhandler.h
+++ b/addon/doxmlparser/src/memberhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/paramhandler.cpp b/addon/doxmlparser/src/paramhandler.cpp
index 4b57e50..e6d3db1 100644
--- a/addon/doxmlparser/src/paramhandler.cpp
+++ b/addon/doxmlparser/src/paramhandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/paramhandler.h b/addon/doxmlparser/src/paramhandler.h
index 89ef541..7ecf711 100644
--- a/addon/doxmlparser/src/paramhandler.h
+++ b/addon/doxmlparser/src/paramhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp
index df89941..bb43925 100644
--- a/addon/doxmlparser/src/sectionhandler.cpp
+++ b/addon/doxmlparser/src/sectionhandler.cpp
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxmlparser/src/sectionhandler.h b/addon/doxmlparser/src/sectionhandler.h
index b43e878..2730307 100644
--- a/addon/doxmlparser/src/sectionhandler.h
+++ b/addon/doxmlparser/src/sectionhandler.h
@@ -3,7 +3,7 @@
* $Id$
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxyapp/doxyapp.cpp b/addon/doxyapp/doxyapp.cpp
index a05f414..e73d12a 100644
--- a/addon/doxyapp/doxyapp.cpp
+++ b/addon/doxyapp/doxyapp.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxysearch/doxyindexer.cpp b/addon/doxysearch/doxyindexer.cpp
index 9c27f56..b44a940 100644
--- a/addon/doxysearch/doxyindexer.cpp
+++ b/addon/doxysearch/doxyindexer.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxysearch/doxysearch.cpp b/addon/doxysearch/doxysearch.cpp
index 8aeed81..11af8e3 100644
--- a/addon/doxysearch/doxysearch.cpp
+++ b/addon/doxysearch/doxysearch.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in
index 149da22..9b14174 100644
--- a/addon/doxywizard/Makefile.in
+++ b/addon/doxywizard/Makefile.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/config.l b/addon/doxywizard/config.l
index 48d233e..f11bc46 100644
--- a/addon/doxywizard/config.l
+++ b/addon/doxywizard/config.l
@@ -2,7 +2,7 @@
*
* $Id: config_templ.l,v 1.8 2001/01/01 10:15:16 root Exp $
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/config_doxyw.l b/addon/doxywizard/config_doxyw.l
index 3a26eb6..400330f 100644
--- a/addon/doxywizard/config_doxyw.l
+++ b/addon/doxywizard/config_doxyw.l
@@ -2,7 +2,7 @@
*
* $Id: config_templ.l,v 1.8 2001/01/01 10:15:16 root Exp $
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp
index 9e28852..be99b0a 100644
--- a/addon/doxywizard/inputbool.cpp
+++ b/addon/doxywizard/inputbool.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputbool.h b/addon/doxywizard/inputbool.h
index 69a6893..03bb76e 100644
--- a/addon/doxywizard/inputbool.h
+++ b/addon/doxywizard/inputbool.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp
index 876a920..e0c426c 100644
--- a/addon/doxywizard/inputint.cpp
+++ b/addon/doxywizard/inputint.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputint.h b/addon/doxywizard/inputint.h
index c4723be..6662865 100644
--- a/addon/doxywizard/inputint.h
+++ b/addon/doxywizard/inputint.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp
index 36fe319..913bf93 100644
--- a/addon/doxywizard/inputstring.cpp
+++ b/addon/doxywizard/inputstring.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h
index c904dad..2b8b099 100644
--- a/addon/doxywizard/inputstring.h
+++ b/addon/doxywizard/inputstring.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp
index 23c20ff..0a0f01f 100644
--- a/addon/doxywizard/inputstrlist.cpp
+++ b/addon/doxywizard/inputstrlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/inputstrlist.h b/addon/doxywizard/inputstrlist.h
index 352ed5e..0d7efe7 100644
--- a/addon/doxywizard/inputstrlist.h
+++ b/addon/doxywizard/inputstrlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/version.h b/addon/doxywizard/version.h
index 9d523c1..b31fe4f 100644
--- a/addon/doxywizard/version.h
+++ b/addon/doxywizard/version.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/addon/doxywizard/wizard.h b/addon/doxywizard/wizard.h
index 877de1d..a18df62 100644
--- a/addon/doxywizard/wizard.h
+++ b/addon/doxywizard/wizard.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/configure b/configure
index c32b32c..e8f702d 100755
--- a/configure
+++ b/configure
@@ -2,7 +2,7 @@
#
# $Id$
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/configure.bin b/configure.bin
index 0b15cd4..dbc21c6 100755
--- a/configure.bin
+++ b/configure.bin
@@ -2,7 +2,7 @@
#
# $Id: configure,v 1.1 1999/07/19 17:00:15 root Exp $
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 5036116..1f472e6 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/doc/Makefile.latex b/doc/Makefile.latex
index f62f97a..803b75d 100644
--- a/doc/Makefile.latex
+++ b/doc/Makefile.latex
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/doc/Makefile.win_make.in b/doc/Makefile.win_make.in
index 418c5b6..1d22dbf 100644
--- a/doc/Makefile.win_make.in
+++ b/doc/Makefile.win_make.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in
index b889e7c..99ac2f1 100644
--- a/doc/Makefile.win_nmake.in
+++ b/doc/Makefile.win_nmake.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/doc/arch.doc b/doc/arch.doc
index 62661bc..c464a3e 100644
--- a/doc/arch.doc
+++ b/doc/arch.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/autolink.doc b/doc/autolink.doc
index 3c50435..3c87ec3 100644
--- a/doc/autolink.doc
+++ b/doc/autolink.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/commands.doc b/doc/commands.doc
index 7644f69..5f7cb2e 100644
--- a/doc/commands.doc
+++ b/doc/commands.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/custcmd.doc b/doc/custcmd.doc
index 70d52e4..68f863e 100644
--- a/doc/custcmd.doc
+++ b/doc/custcmd.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/customize.doc b/doc/customize.doc
index b1ef58d..7252a4a 100644
--- a/doc/customize.doc
+++ b/doc/customize.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/diagrams.doc b/doc/diagrams.doc
index 59a81cc..fce39b9 100644
--- a/doc/diagrams.doc
+++ b/doc/diagrams.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/docblocks.doc b/doc/docblocks.doc
index b86ed89..6a96588 100644
--- a/doc/docblocks.doc
+++ b/doc/docblocks.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/doxygen.1 b/doc/doxygen.1
index c227791..f3a7abc 100644
--- a/doc/doxygen.1
+++ b/doc/doxygen.1
@@ -45,6 +45,6 @@ doxygen \fB\-e\fR rtf extensionsFile
If \fB\-s\fR is specified the comments in the config file will be omitted.
If configName is omitted `Doxyfile' will be used as a default.
.SH AUTHOR
-Doxygen version VERSION, Copyright Dimitri van Heesch 1997-2013
+Doxygen version VERSION, Copyright Dimitri van Heesch 1997-2014
.SH SEE ALSO
doxywizard(1).
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex
index 58615ed..4bac9a9 100644
--- a/doc/doxygen_manual.tex
+++ b/doc/doxygen_manual.tex
@@ -1,7 +1,7 @@
%
%
%
-% Copyright (C) 1997-2013 by Dimitri van Heesch.
+% Copyright (C) 1997-2014 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
@@ -24,7 +24,9 @@
\usepackage{color}
\usepackage{ifthen}
\usepackage[table]{xcolor}
+\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp}
+\usepackage[nointegrals]{wasysym}
\usepackage{alltt}
\usepackage{ifpdf}
\ifpdf
diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc
index b7fdc40..738c5f6 100644
--- a/doc/doxygen_usage.doc
+++ b/doc/doxygen_usage.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/doxywizard_usage.doc b/doc/doxywizard_usage.doc
index e6fe814..9047f22 100644
--- a/doc/doxywizard_usage.doc
+++ b/doc/doxywizard_usage.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/external.doc b/doc/external.doc
index 501254d..be7d764 100644
--- a/doc/external.doc
+++ b/doc/external.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/extsearch.doc b/doc/extsearch.doc
index bc937e4..e07edd7 100644
--- a/doc/extsearch.doc
+++ b/doc/extsearch.doc
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/faq.doc b/doc/faq.doc
index f5b95aa..92d78f0 100644
--- a/doc/faq.doc
+++ b/doc/faq.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/features.doc b/doc/features.doc
index 87ca4bc..a475486 100644
--- a/doc/features.doc
+++ b/doc/features.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/formulas.doc b/doc/formulas.doc
index ddae9ef..eb1075d 100644
--- a/doc/formulas.doc
+++ b/doc/formulas.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/grouping.doc b/doc/grouping.doc
index d7f6275..4397b76 100644
--- a/doc/grouping.doc
+++ b/doc/grouping.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc
index 7038e99..b07509c 100644
--- a/doc/htmlcmds.doc
+++ b/doc/htmlcmds.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -109,106 +109,270 @@ of a HTML tag are passed on to the HTML output only
<li><tt>\</VAR\></tt> Ends a <tt>\<VAR\></tt> section.
</ul>
-The special HTML character entities that are recognized by Doxygen:
-
+The special HTML4 character entities.<br>
+The list of entities with their descriptions has been taken from <a href="http://www.w3.org/TR/html4/sgml/entities.html">Character entity references in HTML 4</a>.
+( Portions &copy; International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.)
+<ul>
+<li><tt>\&nbsp;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` no-break space = non-breaking space: &nbsp;
+<li><tt>\&iexcl;</tt>`&nbsp;&nbsp;&nbsp;` inverted exclamation mark: &iexcl;
+<li><tt>\&cent;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` cent sign: &cent;
+<li><tt>\&pound;</tt>`&nbsp;&nbsp;&nbsp;` pound sign: &pound;
+<li><tt>\&curren;</tt>`&nbsp;&nbsp;` currency sign: &curren;
+<li><tt>\&yen;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` yen sign = yuan sign: &yen;
+<li><tt>\&brvbar;</tt>`&nbsp;&nbsp;` broken bar = broken vertical bar: &brvbar;
+<li><tt>\&sect;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` section sign: &sect;
+<li><tt>\&uml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` diaeresis = spacing diaeresis: &uml;
+<li><tt>\&copy;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` copyright sign: &copy;
+<li><tt>\&ordf;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` feminine ordinal indicator: &ordf;
+<li><tt>\&laquo;</tt>`&nbsp;&nbsp;&nbsp;` left-pointing double angle quotation mark = left pointing guillemet: &laquo;
+<li><tt>\&not;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` not sign: &not;
+<li><tt>\&shy;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` soft hyphen = discretionary hyphen: &shy;
+<li><tt>\&reg;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` registered sign = registered trade mark sign: &reg;
+<li><tt>\&macr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` macron = spacing macron = overline = APL overbar: &macr;
+<li><tt>\&deg;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` degree sign: &deg;
+<li><tt>\&plusmn;</tt>`&nbsp;&nbsp;` plus-minus sign = plus-or-minus sign: &plusmn;
+<li><tt>\&sup2;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` superscript two = superscript digit two = squared: &sup2;
+<li><tt>\&sup3;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` superscript three = superscript digit three = cubed: &sup3;
+<li><tt>\&acute;</tt>`&nbsp;&nbsp;&nbsp;` acute accent = spacing acute: &acute;
+<li><tt>\&micro;</tt>`&nbsp;&nbsp;&nbsp;` micro sign: &micro;
+<li><tt>\&para;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` pilcrow sign = paragraph sign: &para;
+<li><tt>\&middot;</tt>`&nbsp;&nbsp;` middle dot = Georgian comma = Greek middle dot: &middot;
+<li><tt>\&cedil;</tt>`&nbsp;&nbsp;&nbsp;` cedilla = spacing cedilla: &cedil;
+<li><tt>\&sup1;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` superscript one = superscript digit one: &sup1;
+<li><tt>\&ordm;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` masculine ordinal indicator: &ordm;
+<li><tt>\&raquo;</tt>`&nbsp;&nbsp;&nbsp;` right-pointing double angle quotation mark = right pointing guillemet: &raquo;
+<li><tt>\&frac14;</tt>`&nbsp;&nbsp;` vulgar fraction one quarter = fraction one quarter: &frac14;
+<li><tt>\&frac12;</tt>`&nbsp;&nbsp;` vulgar fraction one half = fraction one half: &frac12;
+<li><tt>\&frac34;</tt>`&nbsp;&nbsp;` vulgar fraction three quarters = fraction three quarters: &frac34;
+<li><tt>\&iquest;</tt>`&nbsp;&nbsp;` inverted question mark = turned question mark: &iquest;
+<li><tt>\&Agrave;</tt>`&nbsp;&nbsp;` latin capital letter A with grave = latin capital letter A grave: &Agrave;
+<li><tt>\&Aacute;</tt>`&nbsp;&nbsp;` latin capital letter A with acute: &Aacute;
+<li><tt>\&Acirc;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter A with circumflex: &Acirc;
+<li><tt>\&Atilde;</tt>`&nbsp;&nbsp;` latin capital letter A with tilde: &Atilde;
+<li><tt>\&Auml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter A with diaeresis: &Auml;
+<li><tt>\&Aring;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter A with ring above = latin capital letter A ring: &Aring;
+<li><tt>\&AElig;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter AE = latin capital ligature AE: &AElig;
+<li><tt>\&Ccedil;</tt>`&nbsp;&nbsp;` latin capital letter C with cedilla: &Ccedil;
+<li><tt>\&Egrave;</tt>`&nbsp;&nbsp;` latin capital letter E with grave: &Egrave;
+<li><tt>\&Eacute;</tt>`&nbsp;&nbsp;` latin capital letter E with acute: &Eacute;
+<li><tt>\&Ecirc;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter E with circumflex: &Ecirc;
+<li><tt>\&Euml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter E with diaeresis: &Euml;
+<li><tt>\&Igrave;</tt>`&nbsp;&nbsp;` latin capital letter I with grave: &Igrave;
+<li><tt>\&Iacute;</tt>`&nbsp;&nbsp;` latin capital letter I with acute: &Iacute;
+<li><tt>\&Icirc;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter I with circumflex: &Icirc;
+<li><tt>\&Iuml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter I with diaeresis: &Iuml;
+<li><tt>\&ETH;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter ETH: &ETH;
+<li><tt>\&Ntilde;</tt>`&nbsp;&nbsp;` latin capital letter N with tilde: &Ntilde;
+<li><tt>\&Ograve;</tt>`&nbsp;&nbsp;` latin capital letter O with grave: &Ograve;
+<li><tt>\&Oacute;</tt>`&nbsp;&nbsp;` latin capital letter O with acute: &Oacute;
+<li><tt>\&Ocirc;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter O with circumflex: &Ocirc;
+<li><tt>\&Otilde;</tt>`&nbsp;&nbsp;` latin capital letter O with tilde: &Otilde;
+<li><tt>\&Ouml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter O with diaeresis: &Ouml;
+<li><tt>\&times;</tt>`&nbsp;&nbsp;&nbsp;` multiplication sign: &times;
+<li><tt>\&Oslash;</tt>`&nbsp;&nbsp;` latin capital letter O with stroke = latin capital letter O slash: &Oslash;
+<li><tt>\&Ugrave;</tt>`&nbsp;&nbsp;` latin capital letter U with grave: &Ugrave;
+<li><tt>\&Uacute;</tt>`&nbsp;&nbsp;` latin capital letter U with acute: &Uacute;
+<li><tt>\&Ucirc;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter U with circumflex: &Ucirc;
+<li><tt>\&Uuml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter U with diaeresis: &Uuml;
+<li><tt>\&Yacute;</tt>`&nbsp;&nbsp;` latin capital letter Y with acute: &Yacute;
+<li><tt>\&THORN;</tt>`&nbsp;&nbsp;&nbsp;` latin capital letter THORN: &THORN;
+<li><tt>\&szlig;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter sharp s = ess-zed: &szlig;
+<li><tt>\&agrave;</tt>`&nbsp;&nbsp;` latin small letter a with grave = latin small letter a grave: &agrave;
+<li><tt>\&aacute;</tt>`&nbsp;&nbsp;` latin small letter a with acute: &aacute;
+<li><tt>\&acirc;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter a with circumflex: &acirc;
+<li><tt>\&atilde;</tt>`&nbsp;&nbsp;` latin small letter a with tilde: &atilde;
+<li><tt>\&auml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter a with diaeresis: &auml;
+<li><tt>\&aring;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter a with ring above = latin small letter a ring: &aring;
+<li><tt>\&aelig;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter ae = latin small ligature ae: &aelig;
+<li><tt>\&ccedil;</tt>`&nbsp;&nbsp;` latin small letter c with cedilla: &ccedil;
+<li><tt>\&egrave;</tt>`&nbsp;&nbsp;` latin small letter e with grave: &egrave;
+<li><tt>\&eacute;</tt>`&nbsp;&nbsp;` latin small letter e with acute: &eacute;
+<li><tt>\&ecirc;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter e with circumflex: &ecirc;
+<li><tt>\&euml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter e with diaeresis: &euml;
+<li><tt>\&igrave;</tt>`&nbsp;&nbsp;` latin small letter i with grave: &igrave;
+<li><tt>\&iacute;</tt>`&nbsp;&nbsp;` latin small letter i with acute: &iacute;
+<li><tt>\&icirc;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter i with circumflex: &icirc;
+<li><tt>\&iuml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter i with diaeresis: &iuml;
+<li><tt>\&eth;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter eth: &eth;
+<li><tt>\&ntilde;</tt>`&nbsp;&nbsp;` latin small letter n with tilde: &ntilde;
+<li><tt>\&ograve;</tt>`&nbsp;&nbsp;` latin small letter o with grave: &ograve;
+<li><tt>\&oacute;</tt>`&nbsp;&nbsp;` latin small letter o with acute: &oacute;
+<li><tt>\&ocirc;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter o with circumflex: &ocirc;
+<li><tt>\&otilde;</tt>`&nbsp;&nbsp;` latin small letter o with tilde: &otilde;
+<li><tt>\&ouml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter o with diaeresis: &ouml;
+<li><tt>\&divide;</tt>`&nbsp;&nbsp;` division sign: &divide;
+<li><tt>\&oslash;</tt>`&nbsp;&nbsp;` latin small letter o with stroke, = latin small letter o slash: &oslash;
+<li><tt>\&ugrave;</tt>`&nbsp;&nbsp;` latin small letter u with grave: &ugrave;
+<li><tt>\&uacute;</tt>`&nbsp;&nbsp;` latin small letter u with acute: &uacute;
+<li><tt>\&ucirc;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter u with circumflex: &ucirc;
+<li><tt>\&uuml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter u with diaeresis: &uuml;
+<li><tt>\&yacute;</tt>`&nbsp;&nbsp;` latin small letter y with acute: &yacute;
+<li><tt>\&thorn;</tt>`&nbsp;&nbsp;&nbsp;` latin small letter thorn: &thorn;
+<li><tt>\&yuml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small letter y with diaeresis: &yuml;
+<li><tt>\&fnof;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin small f with hook = function = florin: &fnof;
+<li><tt>\&Alpha;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter alpha: &Alpha;
+<li><tt>\&Beta;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter beta: &Beta;
+<li><tt>\&Gamma;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter gamma: &Gamma;
+<li><tt>\&Delta;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter delta: &Delta;
+<li><tt>\&Epsilon;</tt>`&nbsp;` greek capital letter epsilon: &Epsilon;
+<li><tt>\&Zeta;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter zeta: &Zeta;
+<li><tt>\&Eta;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter eta: &Eta;
+<li><tt>\&Theta;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter theta: &Theta;
+<li><tt>\&Iota;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter iota: &Iota;
+<li><tt>\&Kappa;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter kappa: &Kappa;
+<li><tt>\&Lambda;</tt>`&nbsp;&nbsp;` greek capital letter lambda: &Lambda;
+<li><tt>\&Mu;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter mu: &Mu;
+<li><tt>\&Nu;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter nu: &Nu;
+<li><tt>\&Xi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter xi: &Xi;
+<li><tt>\&Omicron;</tt>`&nbsp;` greek capital letter omicron: &Omicron;
+<li><tt>\&Pi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter pi: &Pi;
+<li><tt>\&Rho;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter rho: &Rho;
+<li><tt>\&Sigma;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter sigma: &Sigma;
+<li><tt>\&Tau;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter tau: &Tau;
+<li><tt>\&Upsilon;</tt>`&nbsp;` greek capital letter upsilon: &Upsilon;
+<li><tt>\&Phi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter phi: &Phi;
+<li><tt>\&Chi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter chi: &Chi;
+<li><tt>\&Psi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek capital letter psi: &Psi;
+<li><tt>\&Omega;</tt>`&nbsp;&nbsp;&nbsp;` greek capital letter omega: &Omega;
+<li><tt>\&alpha;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter alpha: &alpha;
+<li><tt>\&beta;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter beta: &beta;
+<li><tt>\&gamma;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter gamma: &gamma;
+<li><tt>\&delta;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter delta: &delta;
+<li><tt>\&epsilon;</tt>`&nbsp;` greek small letter epsilon: &epsilon;
+<li><tt>\&zeta;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter zeta: &zeta;
+<li><tt>\&eta;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter eta: &eta;
+<li><tt>\&theta;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter theta: &theta;
+<li><tt>\&iota;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter iota: &iota;
+<li><tt>\&kappa;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter kappa: &kappa;
+<li><tt>\&lambda;</tt>`&nbsp;&nbsp;` greek small letter lambda: &lambda;
+<li><tt>\&mu;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter mu: &mu;
+<li><tt>\&nu;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter nu: &nu;
+<li><tt>\&xi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter xi: &xi;
+<li><tt>\&omicron;</tt>`&nbsp;` greek small letter omicron: &omicron;
+<li><tt>\&pi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter pi: &pi;
+<li><tt>\&rho;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter rho: &rho;
+<li><tt>\&sigmaf;</tt>`&nbsp;&nbsp;` greek small letter final sigma: &sigmaf;
+<li><tt>\&sigma;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter sigma: &sigma;
+<li><tt>\&tau;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter tau: &tau;
+<li><tt>\&upsilon;</tt>`&nbsp;` greek small letter upsilon: &upsilon;
+<li><tt>\&phi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter phi: &phi;
+<li><tt>\&chi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter chi: &chi;
+<li><tt>\&psi;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek small letter psi: &psi;
+<li><tt>\&omega;</tt>`&nbsp;&nbsp;&nbsp;` greek small letter omega: &omega;
+<li><tt>\&thetasym;</tt> greek small letter theta symbol: &thetasym;
+<li><tt>\&upsih;</tt>`&nbsp;&nbsp;&nbsp;` greek upsilon with hook symbol: &upsih;
+<li><tt>\&piv;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greek pi symbol: &piv;
+<li><tt>\&bull;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` bullet = black small circle: &bull;
+<li><tt>\&hellip;</tt>`&nbsp;&nbsp;` horizontal ellipsis = three dot leader: &hellip;
+<li><tt>\&prime;</tt>`&nbsp;&nbsp;&nbsp;` prime = minutes = feet: &prime;
+<li><tt>\&Prime;</tt>`&nbsp;&nbsp;&nbsp;` double prime = seconds = inches: &Prime;
+<li><tt>\&oline;</tt>`&nbsp;&nbsp;&nbsp;` overline = spacing overscore: &oline;
+<li><tt>\&frasl;</tt>`&nbsp;&nbsp;&nbsp;` fraction slash: &frasl;
+<li><tt>\&weierp;</tt>`&nbsp;&nbsp;` script capital P = power set = Weierstrass p: &weierp;
+<li><tt>\&image;</tt>`&nbsp;&nbsp;&nbsp;` blackletter capital I = imaginary part: &image;
+<li><tt>\&real;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` blackletter capital R = real part symbol: &real;
+<li><tt>\&trade;</tt>`&nbsp;&nbsp;&nbsp;` trade mark sign: &trade;
+<li><tt>\&alefsym;</tt>`&nbsp;` alef symbol = first transfinite cardinal: &alefsym;
+<li><tt>\&larr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` leftwards arrow: &larr;
+<li><tt>\&uarr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` upwards arrow: &uarr;
+<li><tt>\&rarr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` rightwards arrow: &rarr;
+<li><tt>\&darr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` downwards arrow: &darr;
+<li><tt>\&harr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` left right arrow: &harr;
+<li><tt>\&crarr;</tt>`&nbsp;&nbsp;&nbsp;` downwards arrow with corner leftwards = carriage return: &crarr;
+<li><tt>\&lArr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` leftwards double arrow: &lArr;
+<li><tt>\&uArr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` upwards double arrow: &uArr;
+<li><tt>\&rArr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` rightwards double arrow: &rArr;
+<li><tt>\&dArr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` downwards double arrow: &dArr;
+<li><tt>\&hArr;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` left right double arrow: &hArr;
+<li><tt>\&forall;</tt>`&nbsp;&nbsp;` for all: &forall;
+<li><tt>\&part;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` partial differential: &part;
+<li><tt>\&exist;</tt>`&nbsp;&nbsp;&nbsp;` there exists: &exist;
+<li><tt>\&empty;</tt>`&nbsp;&nbsp;&nbsp;` empty set = null set = diameter: &empty;
+<li><tt>\&nabla;</tt>`&nbsp;&nbsp;&nbsp;` nabla = backward difference: &nabla;
+<li><tt>\&isin;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` element of: &isin;
+<li><tt>\&notin;</tt>`&nbsp;&nbsp;&nbsp;` not an element of: &notin;
+<li><tt>\&ni;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` contains as member: &ni;
+<li><tt>\&prod;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` n-ary product = product sign: &prod;
+<li><tt>\&sum;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` n-ary sumation: &sum;
+<li><tt>\&minus;</tt>`&nbsp;&nbsp;&nbsp;` minus sign: &minus;
+<li><tt>\&lowast;</tt>`&nbsp;&nbsp;` asterisk operator: &lowast;
+<li><tt>\&radic;</tt>`&nbsp;&nbsp;&nbsp;` square root = radical sign: &radic;
+<li><tt>\&prop;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` proportional to: &prop;
+<li><tt>\&infin;</tt>`&nbsp;&nbsp;&nbsp;` infinity: &infin;
+<li><tt>\&ang;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` angle: &ang;
+<li><tt>\&and;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` logical and = wedge: &and;
+<li><tt>\&or;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` logical or = vee: &or;
+<li><tt>\&cap;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` intersection = cap: &cap;
+<li><tt>\&cup;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` union = cup: &cup;
+<li><tt>\&int;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` integral: &int;
+<li><tt>\&there4;</tt>`&nbsp;&nbsp;` therefore: &there4;
+<li><tt>\&sim;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` tilde operator = varies with = similar to: &sim;
+<li><tt>\&cong;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` approximately equal to: &cong;
+<li><tt>\&asymp;</tt>`&nbsp;&nbsp;&nbsp;` almost equal to = asymptotic to: &asymp;
+<li><tt>\&ne;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` not equal to: &ne;
+<li><tt>\&equiv;</tt>`&nbsp;&nbsp;&nbsp;` identical to: &equiv;
+<li><tt>\&le;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` less-than or equal to: &le;
+<li><tt>\&ge;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greater-than or equal to: &ge;
+<li><tt>\&sub;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` subset of: &sub;
+<li><tt>\&sup;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` superset of: &sup;
+<li><tt>\&nsub;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` not a subset of: &nsub;
+<li><tt>\&sube;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` subset of or equal to: &sube;
+<li><tt>\&supe;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` superset of or equal to: &supe;
+<li><tt>\&oplus;</tt>`&nbsp;&nbsp;&nbsp;` circled plus = direct sum: &oplus;
+<li><tt>\&otimes;</tt>`&nbsp;&nbsp;` circled times = vector product: &otimes;
+<li><tt>\&perp;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` up tack = orthogonal to = perpendicular: &perp;
+<li><tt>\&sdot;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` dot operator: &sdot;
+<li><tt>\&lceil;</tt>`&nbsp;&nbsp;&nbsp;` left ceiling = apl upstile: &lceil;
+<li><tt>\&rceil;</tt>`&nbsp;&nbsp;&nbsp;` right ceiling: &rceil;
+<li><tt>\&lfloor;</tt>`&nbsp;&nbsp;` left floor = apl downstile: &lfloor;
+<li><tt>\&rfloor;</tt>`&nbsp;&nbsp;` right floor: &rfloor;
+<li><tt>\&lang;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` left-pointing angle bracket = bra: &lang;
+<li><tt>\&rang;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` right-pointing angle bracket = ket: &rang;
+<li><tt>\&loz;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` lozenge: &loz;
+<li><tt>\&spades;</tt>`&nbsp;&nbsp;` black spade suit: &spades;
+<li><tt>\&clubs;</tt>`&nbsp;&nbsp;&nbsp;` black club suit = shamrock: &clubs;
+<li><tt>\&hearts;</tt>`&nbsp;&nbsp;` black heart suit = valentine: &hearts;
+<li><tt>\&diams;</tt>`&nbsp;&nbsp;&nbsp;` black diamond suit: &diams;
+<li><tt>\&quot;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` quotation mark = APL quote: &quot;
+<li><tt>\&amp;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` ampersand: &amp;
+<li><tt>\&lt;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` less-than sign: &lt;
+<li><tt>\&gt;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` greater-than sign: &gt;
+<li><tt>\&OElig;</tt>`&nbsp;&nbsp;&nbsp;` latin capital ligature OE: &OElig;
+<li><tt>\&oelig;</tt>`&nbsp;&nbsp;&nbsp;` latin small ligature oe: &oelig;
+<li><tt>\&Scaron;</tt>`&nbsp;&nbsp;` latin capital letter S with caron: &Scaron;
+<li><tt>\&scaron;</tt>`&nbsp;&nbsp;` latin small letter s with caron: &scaron;
+<li><tt>\&Yuml;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` latin capital letter Y with diaeresis: &Yuml;
+<li><tt>\&circ;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` modifier letter circumflex accent: &circ;
+<li><tt>\&tilde;</tt>`&nbsp;&nbsp;&nbsp;` small tilde: &tilde;
+<li><tt>\&ensp;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` en space: &ensp;
+<li><tt>\&emsp;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` em space: &emsp;
+<li><tt>\&thinsp;</tt>`&nbsp;&nbsp;` thin space: &thinsp;
+<li><tt>\&zwnj;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` zero width non-joiner: &zwnj;
+<li><tt>\&zwj;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` zero width joiner: &zwj;
+<li><tt>\&lrm;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` left-to-right mark: &lrm;
+<li><tt>\&rlm;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` right-to-left mark: &rlm;
+<li><tt>\&ndash;</tt>`&nbsp;&nbsp;&nbsp;` en dash: &ndash;
+<li><tt>\&mdash;</tt>`&nbsp;&nbsp;&nbsp;` em dash: &mdash;
+<li><tt>\&lsquo;</tt>`&nbsp;&nbsp;&nbsp;` left single quotation mark: &lsquo;
+<li><tt>\&rsquo;</tt>`&nbsp;&nbsp;&nbsp;` right single quotation mark: &rsquo;
+<li><tt>\&sbquo;</tt>`&nbsp;&nbsp;&nbsp;` single low-9 quotation mark: &sbquo;
+<li><tt>\&ldquo;</tt>`&nbsp;&nbsp;&nbsp;` left double quotation mark: &ldquo;
+<li><tt>\&rdquo;</tt>`&nbsp;&nbsp;&nbsp;` right double quotation mark: &rdquo;
+<li><tt>\&bdquo;</tt>`&nbsp;&nbsp;&nbsp;` double low-9 quotation mark: &bdquo;
+<li><tt>\&dagger;</tt>`&nbsp;&nbsp;` dagger: &dagger;
+<li><tt>\&Dagger;</tt>`&nbsp;&nbsp;` double dagger: &Dagger;
+<li><tt>\&permil;</tt>`&nbsp;&nbsp;` per mille sign: &permil;
+<li><tt>\&lsaquo;</tt>`&nbsp;&nbsp;` single left-pointing angle quotation mark: &lsaquo;
+<li><tt>\&rsaquo;</tt>`&nbsp;&nbsp;` single right-pointing angle quotation mark: &rsaquo;
+<li><tt>\&euro;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;` euro sign: &euro;
+</ul>
+Doxygen extensions:
<ul>
-<li><tt>\&copy;</tt> the copyright symbol
-<li><tt>\&trade;</tt> the trade mark symbol
-<li><tt>\&reg;</tt> the registered trade mark symbol
-<li><tt>\&lt;</tt> less-than symbol
-<li><tt>\&gt;</tt> greater-than symbol
-<li><tt>\&amp;</tt> ampersand
-<li><tt>\&apos;</tt> single quotation mark (straight)
-<li><tt>\&quot;</tt> double quotation mark (straight)
-<li><tt>\&lsquo;</tt> left single quotation mark
-<li><tt>\&rsquo;</tt> right single quotation mark
-<li><tt>\&ldquo;</tt> left double quotation mark
-<li><tt>\&rdquo;</tt> right double quotation mark
-<li><tt>\&ndash;</tt> n-dash (for numeric ranges, e.g. 2&ndash;8)
-<li><tt>\&mdash;</tt> m-dash (for parenthetical punctuation &mdash; like this)
-<li><tt>\&?uml;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
- writes a character with a diaeresis accent (like &auml;).
-<li><tt>\&?acute;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
- writes a character with an acute accent (like &aacute;).
-<li><tt>\&?grave;</tt> where ? is one of {A,E,I,O,U,a,e,i,o,u,y},
- writes a character with a grave accent (like &agrave;).
-<li><tt>\&?circ;</tt> where ? is one of {A,E,I,O,U,a,e,i,o,u,y},
- writes a character with a circumflex accent (like &acirc;).
-<li><tt>\&?tilde;</tt> where ? is one of {A,N,O,a,n,o},
- writes a character with a tilde accent (like &atilde;).
-<li><tt>\&szlig;</tt> write a sharp s (i.e. &szlig;) to the output.
-<li><tt>\&?cedil;</tt> where ? is one of {c,C},
- writes a c-cedille (like &ccedil;).
-<li><tt>\&?ring;</tt> where ? is one of {a,A},
- writes an <tt>a</tt> with a ring (like &aring;).
-<li><tt>\&nbsp;</tt> a non breakable space.
-<li><tt>\&Gamma;</tt> Greek letter Gamma &Gamma;.
-<li><tt>\&Delta;</tt> Greek letter Delta &Delta;.
-<li><tt>\&Theta;</tt> Greek letter Theta &Theta;.
-<li><tt>\&Lambda;</tt> Greek letter Lambda &Lambda;.
-<li><tt>\&Xi;</tt> Greek letter Xi &Xi;.
-<li><tt>\&Pi;</tt> Greek letter Pi &Pi;.
-<li><tt>\&Sigma;</tt> Greek letter Sigma &Sigma;.
-<li><tt>\&Upsilon;</tt> Greek letter Upsilon &Upsilon;.
-<li><tt>\&Phi;</tt> Greek letter Phi &Phi;.
-<li><tt>\&Psi;</tt> Greek letter Psi &Psi;.
-<li><tt>\&Omega;</tt> Greek letter Omega &Omega;.
-<li><tt>\&alpha;</tt> Greek letter alpha &alpha;.
-<li><tt>\&beta;</tt> Greek letter beta &beta;.
-<li><tt>\&gamma;</tt> Greek letter gamma &gamma;.
-<li><tt>\&delta;</tt> Greek letter delta &delta;.
-<li><tt>\&epsilon;</tt> Greek letter epsilon &epsilon;.
-<li><tt>\&zeta;</tt> Greek letter zeta &zeta;.
-<li><tt>\&eta;</tt> Greek letter eta &eta;.
-<li><tt>\&theta;</tt> Greek letter theta &theta;.
-<li><tt>\&iota;</tt> Greek letter iota &iota;.
-<li><tt>\&kappa;</tt> Greek letter kappa &kappa;.
-<li><tt>\&lambda;</tt> Greek letter lambda &lambda;.
-<li><tt>\&mu;</tt> Greek letter mu &mu;.
-<li><tt>\&nu;</tt> Greek letter nu &nu;.
-<li><tt>\&xi;</tt> Greek letter xi &xi;.
-<li><tt>\&pi;</tt> Greek letter pi &pi;.
-<li><tt>\&rho;</tt> Greek letter rho &rho;.
-<li><tt>\&sigma;</tt> Greek letter sigma &sigma;.
-<li><tt>\&tau;</tt> Greek letter tau &tau;.
-<li><tt>\&upsilon;</tt> Greek letter upsilon &upsilon;.
-<li><tt>\&phi;</tt> Greek letter phi &phi;.
-<li><tt>\&chi;</tt> Greek letter chi &chi;.
-<li><tt>\&psi;</tt> Greek letter psi &psi;.
-<li><tt>\&omega;</tt> Greek letter omega &omega;.
-<li><tt>\&sigmaf;</tt> Greek final sigma &sigmaf;.
-<li><tt>\&sect;</tt> section sign &sect;.
-<li><tt>\&deg;</tt> degree &deg;.
-<li><tt>\&prime;</tt> prime &prime;.
-<li><tt>\&Prime;</tt> double prime &Prime;.
-<li><tt>\&infin;</tt> infinity &infin;.
-<li><tt>\&empty;</tt> empty set &empty;.
-<li><tt>\&plusmn;</tt> plus or minus &plusmn;.
-<li><tt>\&times;</tt> multiplication sign &times;.
-<li><tt>\&minus;</tt> minus sign &minus;.
-<li><tt>\&sdot;</tt> centered dot &sdot;.
-<li><tt>\&part;</tt> partial derivative &part;.
-<li><tt>\&nabla;</tt> nabla symbol &nabla;.
-<li><tt>\&radic;</tt> square root &radic;.
-<li><tt>\&perp;</tt> perpendicular symbol &perp;.
-<li><tt>\&sum;</tt> sum &sum;.
-<li><tt>\&int;</tt> integral &int;.
-<li><tt>\&prod;</tt> product &prod;.
-<li><tt>\&sim;</tt> similar to &sim;.
-<li><tt>\&asymp;</tt> approximately equal to &asymp;.
-<li><tt>\&ne;</tt> not equal to &ne;.
-<li><tt>\&equiv;</tt> equivalent to &equiv;.
-<li><tt>\&prop;</tt> proportional to &prop;.
-<li><tt>\&le;</tt> less than or equal to &le;.
-<li><tt>\&ge;</tt> greater than or equal to &ge;.
-<li><tt>\&larr;</tt> left arrow &larr;.
-<li><tt>\&rarr;</tt> right arrow &rarr;.
-<li><tt>\&isin;</tt> in the set &isin;.
-<li><tt>\&notin;</tt> not in the set &notin;.
-<li><tt>\&lceil;</tt> left ceiling sign &lceil;.
-<li><tt>\&rceil;</tt> right ceiling sign &rceil;.
-<li><tt>\&lfloor;</tt> left floor sign &lfloor;.
-<li><tt>\&rfloor;</tt> right floor sign &rfloor;.
+<li><tt>\&tm;</tt>`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` trade mark sign: &tm;
+<li><tt>\&apos;</tt>`&nbsp;&nbsp;&nbsp;` apostrophe: &apos;
</ul>
Finally, to put invisible comments inside comment blocks, HTML style
diff --git a/doc/index.doc b/doc/index.doc
index 298d413..0feafaa 100644
--- a/doc/index.doc
+++ b/doc/index.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -118,7 +118,7 @@ The third part provides information for developers:
\addindex license
\addindex GPL
-Copyright &copy; 1997-2013 by
+Copyright &copy; 1997-2014 by
<a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>.<p>
Permission to use, copy, modify, and distribute this software and its
diff --git a/doc/install.doc b/doc/install.doc
index d0878b3..150ff55 100644
--- a/doc/install.doc
+++ b/doc/install.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/language.doc b/doc/language.doc
deleted file mode 100644
index f923be3..0000000
--- a/doc/language.doc
+++ /dev/null
@@ -1,774 +0,0 @@
-/******************************************************************************
- * Do not edit this file. It was generated by the translator.py script.
- * Instead edit language.tpl and maintainers.txt
- *
- * Copyright (C) 1997-2013 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.
- *
- */
-/*! \page langhowto Internationalization
-
-<h3>Support for multiple languages</h3>
-
-Doxygen has built-in support for multiple languages. This means that the
-text fragments, generated by doxygen, can be produced in languages other
-than English (the default). The output language is chosen through the
-configuration option \ref cfg_output_language "OUTPUT_LANGUAGE" in the
-configuration file (with default name and known as Doxyfile).
-
-Currently (version 1.8.5), 40 languages
-are supported (sorted alphabetically):
-Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese,
-Chinese Traditional, Croatian, Czech, Danish, Dutch, English,
-Esperanto, Finnish, French, German, Greek, Hungarian, Indonesian,
-Italian, Japanese (+En), Korean (+En), Latvian, Lithuanian,
-Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian,
-Serbian, SerbianCyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-Ukrainian, and Vietnamese..
-
-The table of information related to the supported languages follows.
-It is sorted by language alphabetically. The <b>Status</b> column
-was generated from sources and shows approximately the last version
-when the translator was updated.
-
-\htmlonly
-<table align="center" cellspacing="0" cellpadding="0" border="0">
-<tr bgcolor="#000000">
-<td>
- <table cellspacing="1" cellpadding="2" border="0">
- <tr bgcolor="#4040c0">
- <td ><b><font size="+1" color="#ffffff"> Language </font></b></td>
- <td ><b><font size="+1" color="#ffffff"> Maintainer </font></b></td>
- <td ><b><font size="+1" color="#ffffff"> Contact address </font>
- <font size="-2" color="#ffffff">(replace the at and dot)</font></b></td>
- <td ><b><font size="+1" color="#ffffff"> Status </font></b></td>
- </tr>
- <!-- table content begin -->
-
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Afrikaans</td>
- <td>Johan Prinsloo</td>
- <td>johan at zippysnoek dot com</td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ff5555">Arabic</td>
- <td>Moaz Reyad<br/>Muhammad Bashir Al-Noimi</td>
- <td><span style="color: brown">[resigned]</span><br/>mbnoimi at gmail dot com</td>
- <td bgcolor="#ff5555">1.4.6</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Armenian</td>
- <td>Armen Tangamyan</td>
- <td>armen dot tangamyan at anu dot edu dot au</td>
- <td bgcolor="#ffffcc">1.8.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Brazilian Portuguese</td>
- <td>Fabio "FJTC" Jun Takada Chino</td>
- <td>jun-chino at uol dot com dot br</td>
- <td bgcolor="#ffffcc">1.8.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Catalan</td>
- <td>Maximiliano Pin<br/>Albert Mora</td>
- <td>max dot pin at bitroit dot com<br/><span style="color: brown">[unreachable]</span></td>
- <td bgcolor="#ffffcc">1.8.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Chinese</td>
- <td>Lian Yang<br/>Li Daobing<br/>Wei Liu</td>
- <td>lian dot yang dot cn at gmail dot com<br/>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td>
- <td bgcolor="#ffffcc">1.8.2</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Chinese Traditional</td>
- <td>Daniel YC Lin<br/>Gary Lee</td>
- <td>dlin dot tw at gmail dot com<br/>garywlee at gmail dot com</td>
- <td bgcolor="#ffffff">almost up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Croatian</td>
- <td>Boris Bralo</td>
- <td>boris dot bralo at gmail dot com</td>
- <td bgcolor="#ffffcc">1.8.2</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Czech</td>
- <td>Petr Přikryl</td>
- <td>prikryl at atlas dot cz</td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Danish</td>
- <td>Poul-Erik Hansen<br/>Erik Søe Sørensen</td>
- <td>pouhan at gnotometrics dot dk<br/>eriksoe+doxygen at daimi dot au dot dk</td>
- <td bgcolor="#ffffcc">1.8.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Dutch</td>
- <td>Dimitri van Heesch</td>
- <td>dimitri at stack dot nl</td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">English</td>
- <td>Dimitri van Heesch</td>
- <td>dimitri at stack dot nl</td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Esperanto</td>
- <td>Ander Martínez</td>
- <td>ander dot basaundi at gmail dot com</td>
- <td bgcolor="#ffffcc">1.8.4</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Finnish</td>
- <td>Antti Laine</td>
- <td>antti dot a dot laine at tut dot fi</td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">French</td>
- <td>David Martinet<br/>Xavier Outhier<br/>Benoît BROSSE</td>
- <td>contact at e-concept-applications dot fr<br/>xouthier at yahoo dot fr<br/>Benoit dot BROSSE at ingenico dot com</td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">German</td>
- <td>Peter Grotrian<br/>Jens Seidel</td>
- <td>Peter dot Grotrian at pdv-FS dot de<br/>jensseidel at users dot sf dot net</td>
- <td bgcolor="#ffffcc">1.8.4</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Greek</td>
- <td>Paul Gessos</td>
- <td>gessos dot paul at yahoo dot gr</td>
- <td bgcolor="#ffffcc">1.8.4</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ff5555">Hungarian</td>
- <td>Ákos Kiss<br/>Földvári György</td>
- <td>akiss at users dot sourceforge dot net<br/><span style="color: brown">[unreachable]</span></td>
- <td bgcolor="#ff5555">1.4.6</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Indonesian</td>
- <td>Hendy Irawan</td>
- <td>ceefour at gauldong dot net</td>
- <td bgcolor="#ffffcc">1.8.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Italian</td>
- <td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td>
- <td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td>
- <td bgcolor="#ffffcc">1.8.2</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Japanese</td>
- <td>Suzumizaki-Kimikata<br/>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
- <td>szmml at h12u.com<br/>goyoki at gmail dot com<br/>sun594 at hotmail dot com<br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span></td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">JapaneseEn</td>
- <td>see the Japanese language</td>
- <td>&nbsp;</td>
- <td bgcolor="#ccffcc">English based</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Korean</td>
- <td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td>
- <td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/><span style="color: brown">[unreachable]</span></td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">KoreanEn</td>
- <td>see the Korean language</td>
- <td>&nbsp;</td>
- <td bgcolor="#ccffcc">English based</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Latvian</td>
- <td>Lauris</td>
- <td>lauris at nix.lv</td>
- <td bgcolor="#ffffcc">1.8.4</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ff5555">Lithuanian</td>
- <td>Tomas Simonaitis<br/>Mindaugas Radzius<br/>Aidas Berukstis<br/><span style="color: red; background-color: yellow">-- searching for the maintainer --</span></td>
- <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[Please, try to help to find someone.]</span></td>
- <td bgcolor="#ff5555">1.4.6</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Macedonian</td>
- <td>Slave Jovanovski</td>
- <td>slavejovanovski at yahoo dot com</td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ff5555">Norwegian</td>
- <td>Lars Erik Jordet</td>
- <td>lejordet at gmail dot com</td>
- <td bgcolor="#ff5555">1.4.6</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Persian</td>
- <td>Ali Nadalizadeh</td>
- <td>nadalizadeh at gmail dot com</td>
- <td bgcolor="#ffcccc">1.7.5</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Polish</td>
- <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
- <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/>krzysztof dot kral at gmail dot com</td>
- <td bgcolor="#ffffcc">1.8.2</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Portuguese</td>
- <td>Rui Godinho Lopes<br/>Fabio "FJTC" Jun Takada Chino</td>
- <td><span style="color: brown">[resigned]</span><br/>jun-chino at uol dot com dot br</td>
- <td bgcolor="#ffffcc">1.8.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Romanian</td>
- <td>Ionut Dumitrascu<br/>Alexandru Iosup</td>
- <td>reddumy at yahoo dot com<br/>aiosup at yahoo dot com</td>
- <td bgcolor="#ffffff">almost up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Russian</td>
- <td>Brilliantov Kirill Vladimirovich<br/>Alexandr Chelpanov</td>
- <td>brilliantov at byterg dot ru<br/>cav at cryptopro dot ru</td>
- <td bgcolor="#ffffff">almost up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Serbian</td>
- <td>Dejan Milosavljevic</td>
- <td><span style="color: brown">[unreachable]</span></td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">SerbianCyrillic</td>
- <td>Nedeljko Stefanovic</td>
- <td>stenedjo at yahoo dot com</td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Slovak</td>
- <td>Kali+Laco Švec<br/>Petr Přikryl</td>
- <td><span style="color: brown">[the Slovak language advisors]</span><br/>prikryl at atlas dot cz</td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ff5555">Slovene</td>
- <td>Matjaž Ostroveršnik</td>
- <td>matjaz dot ostroversnik at ostri dot org</td>
- <td bgcolor="#ff5555">1.4.6</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Spanish</td>
- <td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
- <td>bartomeu at loteria3cornella dot com<br/><span style="color: brown">[unreachable]</span><br/>david at grupoikusnet dot com</td>
- <td bgcolor="#ccffcc">up-to-date</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Swedish</td>
- <td>Mikael Hallin</td>
- <td>mikaelhallin at yahoo dot se</td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Turkish</td>
- <td>Emin Ilker Cetinbas</td>
- <td>niw3 at yahoo dot com</td>
- <td bgcolor="#ffcccc">1.7.5</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Ukrainian</td>
- <td>Olexij Tkatchenko<br/>Petro Yermolenko</td>
- <td><span style="color: brown">[resigned]</span><br/>python at i dot ua</td>
- <td bgcolor="#ffffcc">1.8.4</td>
- </tr>
- <tr bgcolor="#ffffff">
- <td bgcolor="#ffffff">Vietnamese</td>
- <td>Dang Minh Tuan</td>
- <td>tuanvietkey at gmail dot com</td>
- <td bgcolor="#ffcccc">1.6.0</td>
- </tr>
- <!-- table content end -->
- </table>
-</td>
-</tr>
-</table>
-\endhtmlonly
-
-
-\latexonly
-\footnotesize
-\begin{longtable}{|l|l|l|l|}
- \hline
- {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
- \hline
-
- \hline
- Afrikaans & Johan Prinsloo & {\tt\tiny johan at zippysnoek dot com} & 1.6.0 \\
- \hline
- Arabic & Moaz Reyad & {\tt\tiny [resigned] moazreyad at yahoo dot com} & 1.4.6 \\
- ~ & Muhammad Bashir Al-Noimi & {\tt\tiny mbnoimi at gmail dot com} & ~ \\
- \hline
- Armenian & Armen Tangamyan & {\tt\tiny armen dot tangamyan at anu dot edu dot au} & 1.8.0 \\
- \hline
- Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & 1.8.0 \\
- \hline
- Catalan & Maximiliano Pin & {\tt\tiny max dot pin at bitroit dot com} & 1.8.0 \\
- ~ & Albert Mora & {\tt\tiny [unreachable] amora at iua dot upf dot es} & ~ \\
- \hline
- Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & 1.8.2 \\
- ~ & Li Daobing & {\tt\tiny lidaobing at gmail dot com} & ~ \\
- ~ & Wei Liu & {\tt\tiny liuwei at asiainfo dot com} & ~ \\
- \hline
- Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin dot tw at gmail dot com} & almost up-to-date \\
- ~ & Gary Lee & {\tt\tiny garywlee at gmail dot com} & ~ \\
- \hline
- Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & 1.8.2 \\
- \hline
- Czech & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & up-to-date \\
- \hline
- Danish & Poul-Erik Hansen & {\tt\tiny pouhan at gnotometrics dot dk} & 1.8.0 \\
- ~ & Erik Søe Sørensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & ~ \\
- \hline
- Dutch & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
- \hline
- English & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
- \hline
- Esperanto & Ander Martínez & {\tt\tiny ander dot basaundi at gmail dot com} & 1.8.4 \\
- \hline
- Finnish & Antti Laine & {\tt\tiny antti dot a dot laine at tut dot fi} & 1.6.0 \\
- \hline
- French & David Martinet & {\tt\tiny contact at e-concept-applications dot fr} & up-to-date \\
- ~ & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & ~ \\
- ~ & Benoît BROSSE & {\tt\tiny Benoit dot BROSSE at ingenico dot com} & ~ \\
- \hline
- German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & 1.8.4 \\
- ~ & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & ~ \\
- \hline
- Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & 1.8.4 \\
- \hline
- Hungarian & Ákos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\
- ~ & Földvári György & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\
- \hline
- Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.8.0 \\
- \hline
- Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.8.2 \\
- ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\
- \hline
- Japanese & Suzumizaki-Kimikata & {\tt\tiny szmml at h12u.com} & up-to-date \\
- ~ & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & ~ \\
- ~ & Ryunosuke Satoh & {\tt\tiny sun594 at hotmail dot com} & ~ \\
- ~ & Kenji Nagamatsu & {\tt\tiny [unreachable] naga at joyful dot club dot ne dot jp} & ~ \\
- ~ & Iwasa Kazmi & {\tt\tiny [unreachable] iwasa at cosmo-system dot jp} & ~ \\
- \hline
- JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
- \hline
- Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & up-to-date \\
- ~ & SooYoung Jung & {\tt\tiny jung5000 at gmail dot com} & ~ \\
- ~ & Richard Kim & {\tt\tiny [unreachable] ryk at dspwiz dot com} & ~ \\
- \hline
- KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
- \hline
- Latvian & Lauris & {\tt\tiny lauris at nix.lv} & 1.8.4 \\
- \hline
- Lithuanian & Tomas Simonaitis & {\tt\tiny [unreachable] haden at homelan dot lt} & 1.4.6 \\
- ~ & Mindaugas Radzius & {\tt\tiny [unreachable] mindaugasradzius at takas dot lt} & ~ \\
- ~ & Aidas Berukstis & {\tt\tiny [unreachable] aidasber at takas dot lt} & ~ \\
- ~ & -- searching for the maintainer -- & {\tt\tiny [Please, try to help to find someone.]} & ~ \\
- \hline
- Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski at yahoo dot com} & 1.6.0 \\
- \hline
- Norwegian & Lars Erik Jordet & {\tt\tiny lejordet at gmail dot com} & 1.4.6 \\
- \hline
- Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & 1.7.5 \\
- \hline
- Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.8.2 \\
- ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal at poczta dot onet dot pl} & ~ \\
- ~ & Krzysztof Kral & {\tt\tiny krzysztof dot kral at gmail dot com} & ~ \\
- \hline
- Portuguese & Rui Godinho Lopes & {\tt\tiny [resigned] rgl at ruilopes dot com} & 1.8.0 \\
- ~ & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & ~ \\
- \hline
- Romanian & Ionut Dumitrascu & {\tt\tiny reddumy at yahoo dot com} & almost up-to-date \\
- ~ & Alexandru Iosup & {\tt\tiny aiosup at yahoo dot com} & ~ \\
- \hline
- Russian & Brilliantov Kirill Vladimirovich & {\tt\tiny brilliantov at byterg dot ru} & almost up-to-date \\
- ~ & Alexandr Chelpanov & {\tt\tiny cav at cryptopro dot ru} & ~ \\
- \hline
- Serbian & Dejan Milosavljevic & {\tt\tiny [unreachable] dmilos at email dot com} & 1.6.0 \\
- \hline
- SerbianCyrillic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\
- \hline
- Slovak & Kali+Laco Švec & {\tt\tiny [the Slovak language advisors]} & up-to-date \\
- ~ & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & ~ \\
- \hline
- Slovene & Matjaž Ostroveršnik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\
- \hline
- Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & up-to-date \\
- ~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra at puc dot cl} & ~ \\
- ~ & David Vaquero & {\tt\tiny david at grupoikusnet dot com} & ~ \\
- \hline
- Swedish & Mikael Hallin & {\tt\tiny mikaelhallin at yahoo dot se} & 1.6.0 \\
- \hline
- Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & 1.7.5 \\
- \hline
- Ukrainian & Olexij Tkatchenko & {\tt\tiny [resigned] olexij at tkatchenko dot com} & 1.8.4 \\
- ~ & Petro Yermolenko & {\tt\tiny python at i dot ua} & ~ \\
- \hline
- Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey at gmail dot com} & 1.6.0 \\
- \hline
-\end{longtable}
-\normalsize
-\endlatexonly
-
-
-Most people on the list have indicated that they were also busy
-doing other things, so if you want to help to speed things up please
-let them (or me) know.
-
-If you want to add support for a language that is not yet listed
-please read the next section.
-
-
-<h3>Adding a new language to doxygen</h3>
-
-This short HOWTO explains how to add support for the new language to doxygen:
-
-Just follow the following steps:
-<ol>
-<li>Tell me for which language you want to add support. If no one else
- is already working on support for that language, you will be
- assigned as the maintainer for the language.
-<li>Create a copy of `doxygen/src/translator_en.h` and name it
- `doxygen/src/translator_<your_2_letter_country_code>.h`
- I'll use `xx` in the rest of this document (and `XX` for the uppercase version).
-<li>Edit `doxygen/src/language.cpp`:
- Add the following code:
-\verbatim
-#ifdef LANG_XX
-#include<translator_xx.h>
-#endif
-\endverbatim
- Remember to use the same symbol `LANG_XX` that was added to `doxygen/src/lang_cfg.h`.
- <p>Now, in <code>setTranslator()</code> add
-\verbatim
-#ifdef LANG_XX
- else if (L_EQUAL("your_language_name"))
- {
- theTranslator = new TranslatorYourLanguage;
- }
-#endif
-\endverbatim
- after the <code>if { ... }</code>. I.e., it must be placed after the code
- for creating the English translator at the beginning, and before the
- <code>else { ... }</code> part that creates the translator for the
- default language (English again).
-<li>Edit <code>doxygen/src/translator_xx.h</code>:
- <ul>
- <li>Use the UTF-8 capable editor and open the file using the UTF-8 mode.
- <li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code>
- twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at
- the beginning of the file).
- <li>Rename \c TranslatorEnglish to \c TranslatorYourLanguage
- <li>In the member <code>idLanguage()</code> change "english" into the
- name of your language (use lower case characters only). Depending
- on the language you may also wish to change the member functions
- `latexLanguageSupportCommand()` and other (you will recognize them when
- you start the work).
- <li>Edit all the strings that are returned by the member functions that
- start with \c tr.
- Try to match punctuation and capitals!
- To enter special characters (with accents) you can:
- <ul>
- <li> Enter them directly if your keyboard supports that. Recall that
- the text is expected to be saved using the UTF-8 encoding. Doxygen
- will translate the characters to proper \f$\mbox{\LaTeX}\f$ and
- leaves the HTML and man output in UTF-8.
- <li> Use HTML codes like \c \&auml; for an \c a with an \c umlaut (i.e. \c &auml;).
- See the HTML specification for the codes.
- </ul>
- </ul>
-<li>
- <ul>
- <li>On *nix systems:<br>
- <ul>
- <li>Rerun the `configure` script from the root (i.e. in the \c doxygen directory) so
- that it generates `doxygen/src/lang_cfg.h`.
- This file should now contain a \c \#define for your language code.<br>
- <li>Run \c make again from the root (i.e. in the \c doxygen
- directory) of the distribution, in order to regenerate the `Makefile`s.
- </ul>
- <li> On Windows:<br>
- <ul>
- <li>stop Visual Stdio<br>
- <li>open a command window<br>
- <li>goto the directory `doxygen\src`<br>
- <li>give the command `python languages.py > ..\winbuild\Languages.rules`<br>
- <li>close the command window<br>
- <li>start Visual Studio again<br>
- <li>Your language should now be selectable in the `General` part of the `Settings` of the `Properties`
- window of `lang_cfg.py`, by default Your language will be `on`. Rebuild `doxygen` (and `doxywizard`) now.
- </ul>
- </ul>
-<li>Now you can use <code>OUTPUT_LANGUAGE = your_language_name</code>
- in the config file to generate output in your language.
-<li>Send <code>translator_xx.h</code> to me so I can add it to doxygen.
- Send also your name and e-mail address to be included in the
- \c maintainers.txt list. You can also clone the doxygen repository
- at GitHub and make a Pull Request later.
-</ol>
-
-
-<h3>Maintaining a language</h3>
-
-New versions of doxygen may use new translated sentences. In such
-situation, the \c Translator class requires implementation of new
-methods -- its interface changes. Of course, the English
-sentences need to be translated to the other languages. At least,
-new methods have to be implemented by the language-related
-translator class; otherwise, doxygen wouldn't even compile. Waiting
-until all language maintainers have translated the new sentences and
-sent the results would not be very practical. The following text
-describes the usage of translator adapters to solve the problem.
-
-<b>The role of Translator Adapters.</b>
-Whenever the \c Translator class interface changes in the new
-release, the new class \c TranslatorAdapter_x_y_z is added to the \c
-translator_adapter.h file (here x, y, and z are numbers that
-correspond to the current official version of doxygen). All
-translators that previously derived from the \c Translator class now
-derive from this adapter class.
-
-The \c TranslatorAdapter_x_y_z class implements the new, required
-methods. If the new method replaces some similar but obsolete
-method(s) (e.g. if the number of arguments changed and/or the
-functionality of the older method was changed or enriched), the \c
-TranslatorAdapter_x_y_z class may use the obsolete method to get the
-result which is as close as possible to the older result in the
-target language. If it is not possible, the result (the default
-translation) is obtained using the English translator, which is (by
-definition) always up-to-date.
-
-<b>For example,</b> when the new \c trFile() method with
-parameters (to determine the capitalization of the first letter and
-the singular/plural form) was introduced to replace the older method
-\c trFiles() without arguments, the following code appeared in one
-of the translator adapter classes:
-
-\verbatim
- /*! This is the default implementation of the obsolete method
- * used in the documentation of a group before the list of
- * links to documented files. This is possibly localized.
- */
- virtual QCString trFiles()
- { return "Files"; }
-
- /*! This is the localized implementation of newer equivalent
- * using the obsolete method trFiles().
- */
- virtual QCString trFile(bool first_capital, bool singular)
- {
- if (first_capital && !singular)
- return trFiles(); // possibly localized, obsolete method
- else
- return english.trFile(first_capital, singular);
- }
-\endverbatim
-
-The \c trFiles() is not present in the \c TranslatorEnglish class,
-because it was removed as obsolete. However, it was used until now
-and its call was replaced by
-
-\verbatim
- trFile(true, false)
-\endverbatim
-
-in the doxygen source files. Probably, many language translators
-implemented the obsolete method, so it perfectly makes sense to use
-the same language dependent result in those cases. The \c
-TranslatorEnglish does not implement the old method. It derives
-from the abstract \c Translator class. On the other hand, the old
-translator for a different language does not implement the new \c
-trFile() method. Because of that it is derived from another base
-class -- \c TranslatorAdapter_x_y_z. The \c TranslatorAdapter_x_y_z
-class has to implement the new, required \c trFile() method.
-However, the translator adapter would not be compiled if the \c
-trFiles() method was not implemented. This is the reason for
-implementing the old method in the translator adapter class (using
-the same code, that was removed from the TranslatorEnglish).
-
-The simplest way would be to pass the arguments to the English
-translator and to return its result. Instead, the adapter uses the
-old \c trFiles() in one special case -- when the new
-<code>trFile(true,&nbsp;false)</code> is called. This is the
-mostly used case at the time of introducing the new method -- see
-above. While this may look too complicated, the technique allows
-the developers of the core sources to change the Translator
-interface, while the users may not even notice the change. Of
-course, when the new \c trFile() is used with different arguments,
-the English result is returned and it will be noticed by non English
-users. Here the maintainer of the language translator should
-implement at least that one particular method.
-
-<b>What says the base class of a language translator?</b>
-If the language translator class inherits from any adapter class then
-maintenance is needed. In such case, the language translator is
-considered not up-to-date. On the other hand, if the language
-translator derives directly from the abstract class \c Translator, the
-language translator is up-to-date.
-
-The translator adapter classes are chained so that the older
-translator adapter class uses the one-step-newer translator adapter
-as the base class. The newer adapter does less \e adapting work
-than the older one. The oldest adapter class derives (indirectly)
-from all of the adapter classes. The name of the adapter class is
-chosen so that its suffix is derived from the previous official
-version of doxygen that did not need the adapter. This way, one can
-say approximately, when the language translator class was last
-updated -- see details below.
-
-The newest translator adapter derives from the abstract \c
-TranslatorAdapterBase class that derives directly from the abstract
-\c Translator class. It adds only the private English-translator
-member for easy implementation of the default translation inside the
-adapter classes, and it also enforces implementation of one method
-for notifying the user that the language translation is not up-to-date
-(because of that some sentences in the generated files may appear in
-English).
-
-Once the oldest adapter class is not used by any of the language
-translators, it can be removed from the doxygen project. The
-maintainers should try to reach the state with the minimal number of
-translator adapter classes.
-
-<b>To simplify the maintenance of the language translator classes</b>
-for the supported languages, the \c translator.py Python
-script was developed (located in \c doxygen/doc directory).
-It extracts the important information about obsolete and
-new methods from the source files for each of the languages.
-The information is stored in the translator report ASCII file
-(\c translator_report.txt).
-
-\htmlonly If you compiled this documentation
-from sources and if you have also doxygen sources available the
-link <a href="../doc/translator_report.txt"
-><code>doxygen/doc/translator_report.txt</code></a> should be valid.\endhtmlonly
-
-Looking at the base class of the language translator, the script
-guesses also the status of the translator -- see the last column of
-the table with languages above. The \c translator.py is called
-automatically when the doxygen documentation is generated. You can
-also run the script manually whenever you feel that it can help you.
-Of course, you are not forced to use the results of the script. You
-can find the same information by looking at the adapter class and
-its base classes.
-
-<b>How should I update my language translator?</b> First, you
-should be the language maintainer, or you should let him/her know
-about the changes. The following text was written for the language
-maintainers as the primary audience.
-
-There are several approaches to be taken when updating your
-language. If you are not extremely busy, you should always chose
-the most radical one. When the update takes much more time than you
-expected, you can always decide use some suitable translator adapter to
-finish the changes later and still make your translator working.
-
-<b>The most radical way of updating the language translator</b> is
-to make your translator class derive directly
-from the abstract class \c Translator and provide translations for the
-methods that are required to be implemented -- the compiler will
-tell you if you forgot to implement some of them. If you are in
-doubt, have a look at the \c TranslatorEnglish class to recognize the
-purpose of the implemented method. Looking at the previously used
-adapter class may help you sometimes, but it can also be misleading
-because the adapter classes do implement also the obsolete methods
-(see the previous \c trFiles() example).
-
-In other words, the up-to-date language translators do not need the
-\c TranslatorAdapter_x_y_z classes at all, and you do not need to
-implement anything else than the methods required by the Translator
-class (i.e. the pure virtual methods of the \c Translator -- they
-end with <code>=0;</code>).
-
-If everything compiles fine, try to run \c translator.py, and have a
-look at the translator report (ASCII file) at the \c doxygen/doc
-directory. Your translator is marked as up-to-date only if the script
-does not detect anything special. If the translator uses the \c Translator
-base class, there still may be some remarks related to your source code.
-In the case, the translator is marked as <em>almost up-to-date</em>.
-Namely, the obsolete methods--that are not used at all--may be listed in the
-section for your language. Simply, remove their code (and run the \c
-translator.py again). Also, you will be informed when you forgot to
-change the base class of your translator class to some newer adapter
-class or directly to the Translator class.
-
-<b>If you do not have time to finish all the updates</b> you should
-still start with <em>the most radical approach</em> as described
-above. You can always change the base class to the translator
-adapter class that implements all of the not-yet-implemented methods.
-
-<b>If you prefer to update your translator gradually</b>, have a look
-at \c TranslatorEnglish (the \c translator_en.h file). Inside, you
-will find the comments like <code>new since 1.2.4</code> that separate
-always a number of methods that were implemented in the stated
-version. Do implement the group of methods that are placed below the
-comment that uses the same version numbers as your translator adapter
-class. (For example, your translator class have to use the \c
-TranslatorAdapter_1_2_4, if it does not implement the methods below
-the comment <code>new since 1.2.4</code>. When you implement them,
-your class should use a newer translator adapter.
-
-Run the \c translator.py script occasionally and give it your \c xx
-identification (from \c translator_xx.h) to create the translator
-report shorter (also produced faster) -- it will contain only the
-information related to your translator. Once you reach the state when
-the base class should be changed to some newer adapter, you will see
-the note in the translator report.
-
-Warning: Don't forget to compile doxygen to discover, whether it is
-compilable. The \c translator.py does not check if everything is
-correct with respect to the compiler. Because of that, it may lie
-sometimes about the necessary base class.
-
-<b>The most obsolete language translators</b> would lead to
-implementation of too complicated adapters. Because of that, doxygen
-developers may decide to derive such translators from the \c
-TranslatorEnglish class, which is by definition always up-to-date.
-
-When doing so, all the missing methods will be replaced by the
-English translation. This means that not-implemented methods will
-always return the English result. Such translators are marked using
-the word \c obsolete. You should read it <b>really obsolete</b>. No
-guess about the last update can be done.
-
-Often, it is possible to construct better result from the obsolete
-methods. Because of that, the translator adapter classes should be
-used if possible. On the other hand, implementation of adapters for
-really obsolete translators brings too much maintenance and
-run-time overhead.
-
-\htmlonly
-Go to the <a href="perlmod.html">next</a> section or return to the
- <a href="index.html">index</a>.
-\endhtmlonly
-
-*/
-
diff --git a/doc/language.tpl b/doc/language.tpl
index 25c498f..4f008cb 100644
--- a/doc/language.tpl
+++ b/doc/language.tpl
@@ -5,7 +5,7 @@ change the language.doc, make the changes here and inside maintainers.txt.
/******************************************************************************
* %(editnote)s
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/maintainers.txt b/doc/maintainers.txt
index 1c76647..30afcd5 100644
--- a/doc/maintainers.txt
+++ b/doc/maintainers.txt
@@ -151,7 +151,7 @@ Francisco Oltra Thennet: [unreachable] foltra at puc dot cl
David Vaquero: david at grupoikusnet dot com
TranslatorSwedish
-Mikael Hallin: mikaelhallin at yahoo dot se
+Björn Palmqvist: bjorn.palmqvist at aidium.se
TranslatorTurkish
Emin Ilker Cetinbas: niw3 at yahoo dot com
diff --git a/doc/markdown.doc b/doc/markdown.doc
index b539410..e97b29e 100644
--- a/doc/markdown.doc
+++ b/doc/markdown.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/output.doc b/doc/output.doc
index face02a..424d7e0 100644
--- a/doc/output.doc
+++ b/doc/output.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc
index 6ad07ed..0ba9b12 100644
--- a/doc/preprocessing.doc
+++ b/doc/preprocessing.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/searching.doc b/doc/searching.doc
index 4b742f8..25dcc3a 100644
--- a/doc/searching.doc
+++ b/doc/searching.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/starting.doc b/doc/starting.doc
index a84be00..0269301 100644
--- a/doc/starting.doc
+++ b/doc/starting.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/trouble.doc b/doc/trouble.doc
index 84fb835..d36e330 100644
--- a/doc/trouble.doc
+++ b/doc/trouble.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/doc/xmlcmds.doc b/doc/xmlcmds.doc
index 5df9b7b..0e8aa64 100644
--- a/doc/xmlcmds.doc
+++ b/doc/xmlcmds.doc
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/Makefile.in b/src/Makefile.in
index fdfb3a0..875cf1d 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -2,7 +2,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/src/arguments.h b/src/arguments.h
index eba452c..ed09869 100644
--- a/src/arguments.h
+++ b/src/arguments.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/bufstr.h b/src/bufstr.h
index cfb89c4..7fb7d40 100644
--- a/src/bufstr.h
+++ b/src/bufstr.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/classdef.cpp b/src/classdef.cpp
index c7f677a..2443d42 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/classdef.h b/src/classdef.h
index 35c093c..8c5bebf 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/classlist.cpp b/src/classlist.cpp
index 877e993..f728530 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/classlist.h b/src/classlist.h
index 6a4d09c..3f15b3e 100644
--- a/src/classlist.h
+++ b/src/classlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp
index c728be3..cbb0cb7 100644
--- a/src/cmdmapper.cpp
+++ b/src/cmdmapper.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/cmdmapper.h b/src/cmdmapper.h
index 0017c02..adfd1a6 100644
--- a/src/cmdmapper.h
+++ b/src/cmdmapper.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/code.h b/src/code.h
index 8aadc0b..72a906c 100644
--- a/src/code.h
+++ b/src/code.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/code.l b/src/code.l
index babc756..0d23553 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/commentcnv.h b/src/commentcnv.h
index 1c1fcb9..90206df 100644
--- a/src/commentcnv.h
+++ b/src/commentcnv.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 21ebd02..4cc9da9 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/commentscan.h b/src/commentscan.h
index e296b89..ce28ea2 100644
--- a/src/commentscan.h
+++ b/src/commentscan.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/commentscan.l b/src/commentscan.l
index 2170dc2..fc53c57 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -1,6 +1,6 @@
/*****************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -1842,8 +1842,14 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
}
else
{
- delete guards.pop();
- BEGIN( GuardParamEnd );
+ GuardedSection *s = guards.pop();
+ bool parentVisible = s->parentVisible();
+ delete s;
+ if (parentVisible)
+ {
+ enabledSectionFound=TRUE;
+ BEGIN( GuardParamEnd );
+ }
}
}
<SkipGuardedSection>{CMD}"else"/{NW} {
diff --git a/src/compound.xsd b/src/compound.xsd
index c1eb0ab..a1c9784 100644
--- a/src/compound.xsd
+++ b/src/compound.xsd
@@ -390,94 +390,7 @@
<xsd:element name="anchor" type="docAnchorType" />
<xsd:element name="formula" type="docFormulaType" />
<xsd:element name="ref" type="docRefTextType" />
- <xsd:element name="copy" type="docEmptyType" />
- <xsd:element name="trademark" type="docEmptyType" />
- <xsd:element name="registered" type="docEmptyType" />
- <xsd:element name="lsquo" type="docEmptyType" />
- <xsd:element name="rsquo" type="docEmptyType" />
- <xsd:element name="ldquo" type="docEmptyType" />
- <xsd:element name="rdquo" type="docEmptyType" />
- <xsd:element name="ndash" type="docEmptyType" />
- <xsd:element name="mdash" type="docEmptyType" />
- <xsd:element name="umlaut" type="docCharType" />
- <xsd:element name="acute" type="docCharType" />
- <xsd:element name="grave" type="docCharType" />
- <xsd:element name="circ" type="docCharType" />
- <xsd:element name="slash" type="docCharType" />
- <xsd:element name="tilde" type="docCharType" />
- <xsd:element name="cedil" type="docCharType" />
- <xsd:element name="ring" type="docCharType" />
- <xsd:element name="szlig" type="docEmptyType" />
- <xsd:element name="nonbreakablespace" type="docEmptyType" />
- <xsd:element name="aelig" type="docEmptyType" />
- <xsd:element name="AElig" type="docEmptyType" />
- <xsd:element name="Gamma" type="docEmptyType" />
- <xsd:element name="Delta" type="docEmptyType" />
- <xsd:element name="Theta" type="docEmptyType" />
- <xsd:element name="Lambda" type="docEmptyType" />
- <xsd:element name="Xi" type="docEmptyType" />
- <xsd:element name="Pi" type="docEmptyType" />
- <xsd:element name="Sigma" type="docEmptyType" />
- <xsd:element name="Upsilon" type="docEmptyType" />
- <xsd:element name="Phi" type="docEmptyType" />
- <xsd:element name="Psi" type="docEmptyType" />
- <xsd:element name="Omega" type="docEmptyType" />
- <xsd:element name="alpha" type="docEmptyType" />
- <xsd:element name="beta" type="docEmptyType" />
- <xsd:element name="gamma" type="docEmptyType" />
- <xsd:element name="delta" type="docEmptyType" />
- <xsd:element name="epsilon" type="docEmptyType" />
- <xsd:element name="zeta" type="docEmptyType" />
- <xsd:element name="eta" type="docEmptyType" />
- <xsd:element name="theta" type="docEmptyType" />
- <xsd:element name="iota" type="docEmptyType" />
- <xsd:element name="kappa" type="docEmptyType" />
- <xsd:element name="lambda" type="docEmptyType" />
- <xsd:element name="mu" type="docEmptyType" />
- <xsd:element name="nu" type="docEmptyType" />
- <xsd:element name="xi" type="docEmptyType" />
- <xsd:element name="pi" type="docEmptyType" />
- <xsd:element name="rho" type="docEmptyType" />
- <xsd:element name="sigma" type="docEmptyType" />
- <xsd:element name="tau" type="docEmptyType" />
- <xsd:element name="upsilon" type="docEmptyType" />
- <xsd:element name="phi" type="docEmptyType" />
- <xsd:element name="chi" type="docEmptyType" />
- <xsd:element name="psi" type="docEmptyType" />
- <xsd:element name="omega" type="docEmptyType" />
- <xsd:element name="sigmaf" type="docEmptyType" />
- <xsd:element name="sect" type="docEmptyType" />
- <xsd:element name="deg" type="docEmptyType" />
- <xsd:element name="prime" type="docEmptyType" />
- <xsd:element name="Prime" type="docEmptyType" />
- <xsd:element name="infin" type="docEmptyType" />
- <xsd:element name="empty" type="docEmptyType" />
- <xsd:element name="plusmn" type="docEmptyType" />
- <xsd:element name="times" type="docEmptyType" />
- <xsd:element name="minus" type="docEmptyType" />
- <xsd:element name="sdot" type="docEmptyType" />
- <xsd:element name="part" type="docEmptyType" />
- <xsd:element name="nabla" type="docEmptyType" />
- <xsd:element name="radic" type="docEmptyType" />
- <xsd:element name="perp" type="docEmptyType" />
- <xsd:element name="sum" type="docEmptyType" />
- <xsd:element name="int" type="docEmptyType" />
- <xsd:element name="prod" type="docEmptyType" />
- <xsd:element name="sim" type="docEmptyType" />
- <xsd:element name="asymp" type="docEmptyType" />
- <xsd:element name="ne" type="docEmptyType" />
- <xsd:element name="equiv" type="docEmptyType" />
- <xsd:element name="prop" type="docEmptyType" />
- <xsd:element name="le" type="docEmptyType" />
- <xsd:element name="ge" type="docEmptyType" />
- <xsd:element name="larr" type="docEmptyType" />
- <xsd:element name="rarr" type="docEmptyType" />
- <xsd:element name="isin" type="docEmptyType" />
- <xsd:element name="notin" type="docEmptyType" />
- <xsd:element name="lceil" type="docEmptyType" />
- <xsd:element name="rceil" type="docEmptyType" />
- <xsd:element name="lfloor" type="docEmptyType" />
- <xsd:element name="rfloor" type="docEmptyType" />
+ <!-- Automatically insert here the HTML entities -->
</xsd:choice>
</xsd:group>
@@ -717,10 +630,6 @@
</xsd:sequence>
</xsd:complexType>
- <xsd:complexType name="docCharType">
- <xsd:attribute name="char" type="DoxCharRange"/>
- </xsd:complexType>
-
<xsd:complexType name="docEmptyType"/>
<!-- Simple types -->
diff --git a/src/condparser.cpp b/src/condparser.cpp
index c99a232..67da1e3 100644
--- a/src/condparser.cpp
+++ b/src/condparser.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/condparser.h b/src/condparser.h
index a4dfee8..0310f36 100644
--- a/src/condparser.h
+++ b/src/condparser.h
@@ -2,7 +2,7 @@
#define CONDPARSER_H
/**
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/config.h b/src/config.h
index bb5d733..756e94e 100644
--- a/src/config.h
+++ b/src/config.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/config.l b/src/config.l
index 7d451b0..377d6e4 100644
--- a/src/config.l
+++ b/src/config.l
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/config.xml b/src/config.xml
index 45a36e8..dcaa372 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -6,7 +6,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/configgen.py b/src/configgen.py
index 4aed8bf..4023930 100755
--- a/src/configgen.py
+++ b/src/configgen.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
# python script to generate configoptions.cpp and config.doc from config.xml
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/src/configoptions.h b/src/configoptions.h
index 8b4fc22..be8ecf6 100644
--- a/src/configoptions.h
+++ b/src/configoptions.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/constexp.h b/src/constexp.h
index 1828b0b..27ca039 100644
--- a/src/constexp.h
+++ b/src/constexp.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/constexp.l b/src/constexp.l
index b333c72..bb4f842 100644
--- a/src/constexp.l
+++ b/src/constexp.l
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/constexp.y b/src/constexp.y
index 421e26e..1475c1c 100644
--- a/src/constexp.y
+++ b/src/constexp.y
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/context.cpp b/src/context.cpp
index 89b8e0e..3641d1d 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -504,6 +504,10 @@ class TranslateContext::Private : public PropertyMapper
{
return theTranslator->trCompoundList();
}
+ TemplateVariant classListDescription() const
+ {
+ return theTranslator->trCompoundListDescription();
+ }
TemplateVariant classIndex() const
{
return theTranslator->trCompoundIndex();
@@ -713,6 +717,10 @@ class TranslateContext::Private : public PropertyMapper
{
return theTranslator->trCompoundMembers();
}
+ TemplateVariant detailLevel() const
+ {
+ return theTranslator->trDetailLevel();
+ }
Private()
{
//%% string generatedBy
@@ -727,6 +735,8 @@ class TranslateContext::Private : public PropertyMapper
addProperty("classes", this,&Private::classes);
//%% string classList
addProperty("classList", this,&Private::classList);
+ //%% string classListDescription
+ addProperty("classListDescription", this,&Private::classListDescription);
//%% string classIndex
addProperty("classIndex", this,&Private::classIndex);
//%% string classHierarchy
@@ -819,6 +829,8 @@ class TranslateContext::Private : public PropertyMapper
addProperty("classDocumentation", this,&Private::classDocumentation);
//%% string compoundMembers
addProperty("compoundMembers", this,&Private::compoundMembers);
+ //%% strint detailLevel
+ addProperty("detailLevel", this,&Private::detailLevel);
m_javaOpt = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
m_fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
@@ -1984,6 +1996,7 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
addProperty("highlight",this,&Private::highlight);
addProperty("subhighlight",this,&Private::subHighlight);
addProperty("compoundType",this,&Private::compoundType);
+ addProperty("hasDetails",this,&Private::hasDetails);
}
TemplateVariant title() const
{
@@ -2001,6 +2014,10 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
{
return m_namespaceDef->compoundTypeString();
}
+ TemplateVariant hasDetails() const
+ {
+ return m_namespaceDef->hasDetailedDescription();
+ }
private:
NamespaceDef *m_namespaceDef;
};
@@ -4055,9 +4072,9 @@ TemplateVariant ClassHierarchyContext::get(const char *name) const
class NestingNodeContext::Private : public PropertyMapper
{
public:
- Private(Definition *d,bool addCls) : m_def(d),
- m_classContext(m_def->definitionType()==Definition::TypeClass?(ClassDef*)d:0),
- m_namespaceContext(m_def->definitionType()==Definition::TypeNamespace?(NamespaceDef*)d:0)
+ Private(const NestingNodeContext *parent,const NestingNodeContext *thisNode,
+ Definition *d,int index,int level,bool addCls)
+ : m_parent(parent), m_def(d), m_children(thisNode,level+1), m_level(level), m_index(index)
{
//%% bool is_leaf_node: true if this node does not have any children
addProperty("is_leaf_node",this,&Private::isLeafNode);
@@ -4067,6 +4084,23 @@ class NestingNodeContext::Private : public PropertyMapper
addProperty("class",this,&Private::getClass);
//%% [optional] Namespace namespace: namespace info (if this node represents a namespace)
addProperty("namespace",this,&Private::getNamespace);
+ //%% [optional] File file: file info (if this node represents a file)
+ addProperty("file",this,&Private::file);
+ //%% [optional] Dir dir: directory info (if this node represents a directory)
+ addProperty("dir",this,&Private::dir);
+ //%% int id
+ addProperty("id",this,&Private::id);
+ //%% string level
+ addProperty("level",this,&Private::level);
+ //%% string name
+ addProperty("name",this,&Private::name);
+ //%% string brief
+ addProperty("brief",this,&Private::brief);
+ //%% bool isLinkable
+ addProperty("isLinkable",this,&Private::isLinkable);
+ addProperty("anchor",this,&Private::anchor);
+ addProperty("fileName",this,&Private::fileName);
+
addNamespaces(addCls);
addClasses();
}
@@ -4080,9 +4114,13 @@ class NestingNodeContext::Private : public PropertyMapper
}
TemplateVariant getClass() const
{
- if (m_def->definitionType()==Definition::TypeClass)
+ if (!m_cache.classContext && m_def->definitionType()==Definition::TypeClass)
{
- return TemplateVariant(&m_classContext);
+ m_cache.classContext.reset(new ClassContext((ClassDef*)m_def));
+ }
+ if (m_cache.classContext)
+ {
+ return m_cache.classContext.get();
}
else
{
@@ -4091,15 +4129,76 @@ class NestingNodeContext::Private : public PropertyMapper
}
TemplateVariant getNamespace() const
{
- if (m_def->definitionType()==Definition::TypeNamespace)
+ if (!m_cache.namespaceContext && m_def->definitionType()==Definition::TypeNamespace)
+ {
+ m_cache.namespaceContext.reset(new NamespaceContext((NamespaceDef*)m_def));
+ }
+ if (m_cache.namespaceContext)
{
- return TemplateVariant(&m_namespaceContext);
+ return m_cache.namespaceContext.get();
}
else
{
return TemplateVariant(FALSE);
}
}
+ TemplateVariant file() const
+ {
+ return FALSE;
+ }
+ TemplateVariant dir() const
+ {
+ return FALSE;
+ }
+ TemplateVariant level() const
+ {
+ return m_level;
+ }
+ TemplateVariant id() const
+ {
+ QCString result;
+ if (m_parent) result=m_parent->id();
+ result+=QCString().setNum(m_index)+"_";
+ return result;
+ }
+ TemplateVariant name() const
+ {
+ return m_def->name();
+ }
+ QCString relPathAsString() const
+ {
+ static bool createSubdirs = Config_getBool("CREATE_SUBDIRS");
+ return createSubdirs ? QCString("../../") : QCString("");
+ }
+ TemplateVariant brief() const
+ {
+ if (!m_cache.brief)
+ {
+ if (m_def->hasBriefDescription())
+ {
+ m_cache.brief.reset(new TemplateVariant(parseDoc(m_def,m_def->briefFile(),m_def->briefLine(),
+ "",m_def->briefDescription(),TRUE)));
+ }
+ else
+ {
+ m_cache.brief.reset(new TemplateVariant(""));
+ }
+ }
+ return *m_cache.brief;
+ }
+ TemplateVariant isLinkable() const
+ {
+ return m_def->isLinkable();
+ }
+ TemplateVariant anchor() const
+ {
+ return m_def->anchor();
+ }
+ TemplateVariant fileName() const
+ {
+ return m_def->getOutputFileBase();
+ }
+
void addClasses()
{
ClassDef *cd = m_def->definitionType()==Definition::TypeClass ? (ClassDef*)m_def : 0;
@@ -4120,17 +4219,26 @@ class NestingNodeContext::Private : public PropertyMapper
m_children.addClasses(*nd->getClassSDict(),FALSE);
}
}
- Definition *m_def;
private:
+ const NestingNodeContext *m_parent;
+ Definition *m_def;
NestingContext m_children;
- ClassContext m_classContext;
- NamespaceContext m_namespaceContext;
+ int m_level;
+ int m_index;
+ struct Cachable
+ {
+ ScopedPtr<ClassContext> classContext;
+ ScopedPtr<NamespaceContext> namespaceContext;
+ ScopedPtr<TemplateVariant> brief;
+ };
+ mutable Cachable m_cache;
};
//%% }
-NestingNodeContext::NestingNodeContext(Definition *d,bool addClass)
+NestingNodeContext::NestingNodeContext(const NestingNodeContext *parent,
+ Definition *d,int index,int level,bool addClass)
{
- p = new Private(d,addClass);
+ p = new Private(parent,this,d,index,level,addClass);
}
NestingNodeContext::~NestingNodeContext()
@@ -4143,12 +4251,20 @@ TemplateVariant NestingNodeContext::get(const char *n) const
return p->get(n);
}
+QCString NestingNodeContext::id() const
+{
+ return p->id().toString();
+}
+
//------------------------------------------------------------------------
//%% list Nesting[NestingNode]: namespace and class nesting relations
class NestingContext::Private : public GenericNodeListContext<NestingNodeContext>
{
public:
+ Private(const NestingNodeContext *parent,int level)
+ : m_parent(parent), m_level(level), m_index(0) {}
+
void addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bool addClasses)
{
NamespaceSDict::Iterator nli(nsDict);
@@ -4162,8 +4278,9 @@ class NestingContext::Private : public GenericNodeListContext<NestingNodeContext
bool isLinkable = nd->isLinkableInProject();
if (isLinkable || hasChildren)
{
- NestingNodeContext *nnc = new NestingNodeContext(nd,addClasses);
+ NestingNodeContext *nnc = new NestingNodeContext(m_parent,nd,m_index,m_level,addClasses);
append(nnc);
+ m_index++;
}
}
}
@@ -4190,17 +4307,22 @@ class NestingContext::Private : public GenericNodeListContext<NestingNodeContext
{
if (classVisibleInIndex(cd) && cd->templateMaster()==0)
{
- NestingNodeContext *nnc = new NestingNodeContext(cd,TRUE);
+ NestingNodeContext *nnc = new NestingNodeContext(m_parent,cd,m_index,m_level,TRUE);
append(nnc);
+ m_index++;
}
}
}
}
+ private:
+ const NestingNodeContext *m_parent;
+ int m_level;
+ int m_index;
};
-NestingContext::NestingContext()
+NestingContext::NestingContext(const NestingNodeContext *parent,int level)
{
- p = new Private;
+ p = new Private(parent,level);
}
NestingContext::~NestingContext()
@@ -4236,11 +4358,71 @@ void NestingContext::addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bo
//------------------------------------------------------------------------
+static int computeMaxDepth(const TemplateListIntf *list)
+{
+ int maxDepth=0;
+ if (list)
+ {
+ TemplateListIntf::ConstIterator *it = list->createIterator();
+ TemplateVariant v;
+ for (it->toFirst();it->current(v);it->toNext())
+ {
+ const TemplateStructIntf *s = v.toStruct();
+ TemplateVariant child = s->get("children");
+ int d = computeMaxDepth(child.toList())+1;
+ if (d>maxDepth) maxDepth=d;
+ }
+ delete it;
+ }
+ return maxDepth;
+}
+
+static int computeNumNodesAtLevel(const TemplateStructIntf *s,int level,int maxLevel)
+{
+ int num=0;
+ if (level<maxLevel)
+ {
+ num++;
+ TemplateVariant child = s->get("children");
+ if (child.toList())
+ {
+ TemplateListIntf::ConstIterator *it = child.toList()->createIterator();
+ TemplateVariant v;
+ for (it->toFirst();it->current(v);it->toNext())
+ {
+ num+=computeNumNodesAtLevel(v.toStruct(),level+1,maxLevel);
+ }
+ delete it;
+ }
+ }
+ return num;
+}
+
//%% struct ClassTree: Class nesting relations
//%% {
class ClassTreeContext::Private : public PropertyMapper
{
public:
+ Private() : m_classTree(0,0)
+ {
+ if (Doxygen::namespaceSDict)
+ {
+ m_classTree.addNamespaces(*Doxygen::namespaceSDict,TRUE,TRUE);
+ }
+ if (Doxygen::classSDict)
+ {
+ m_classTree.addClasses(*Doxygen::classSDict,TRUE);
+ }
+ //%% Nesting tree
+ addProperty("tree",this,&Private::tree);
+ addProperty("fileName",this,&Private::fileName);
+ addProperty("relPath",this,&Private::relPath);
+ addProperty("highlight",this,&Private::highlight);
+ addProperty("subhighlight",this,&Private::subhighlight);
+ addProperty("title",this,&Private::title);
+ addProperty("preferredDepth",this,&Private::preferredDepth);
+ addProperty("maxDepth",this,&Private::maxDepth);
+ }
TemplateVariant tree() const
{
return TemplateVariant(&m_classTree);
@@ -4278,26 +4460,59 @@ class ClassTreeContext::Private : public PropertyMapper
return theTranslator->trClasses();
}
}
- Private()
+ TemplateVariant maxDepth() const
{
- if (Doxygen::namespaceSDict)
+ if (!m_cache.maxDepthComputed)
{
- m_classTree.addNamespaces(*Doxygen::namespaceSDict,TRUE,TRUE);
+ m_cache.maxDepth = computeMaxDepth(&m_classTree);
+ m_cache.maxDepthComputed=TRUE;
}
- if (Doxygen::classSDict)
+ return m_cache.maxDepth;
+ }
+ TemplateVariant preferredDepth() const
+ {
+ if (!m_cache.preferredDepthComputed)
{
- m_classTree.addClasses(*Doxygen::classSDict,TRUE);
+ int preferredNumEntries = Config_getInt("HTML_INDEX_NUM_ENTRIES");
+ m_cache.preferredDepth=1;
+ if (preferredNumEntries>0)
+ {
+ int depth = maxDepth().toInt();
+ for (int i=1;i<=depth;i++)
+ {
+ int num=0;
+ TemplateListIntf::ConstIterator *it = m_classTree.createIterator();
+ TemplateVariant v;
+ for (it->toFirst();it->current(v);it->toNext())
+ {
+ num+=computeNumNodesAtLevel(v.toStruct(),0,i);
+ }
+ delete it;
+ if (num<=preferredNumEntries)
+ {
+ m_cache.preferredDepth=i;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ m_cache.preferredDepthComputed=TRUE;
}
- //%% Nesting tree
- addProperty("tree",this,&Private::tree);
- addProperty("fileName",this,&Private::fileName);
- addProperty("relPath",this,&Private::relPath);
- addProperty("highlight",this,&Private::highlight);
- addProperty("subhighlight",this,&Private::subhighlight);
- addProperty("title",this,&Private::title);
+ return m_cache.preferredDepth;
}
private:
NestingContext m_classTree;
+ struct Cachable
+ {
+ Cachable() : maxDepthComputed(FALSE), preferredDepthComputed(FALSE) {}
+ int maxDepth;
+ bool maxDepthComputed;
+ int preferredDepth;
+ bool preferredDepthComputed;
+ };
+ mutable Cachable m_cache;
};
//%% }
@@ -4408,7 +4623,7 @@ class NamespaceTreeContext::Private : public PropertyMapper
return theTranslator->trNamespaceList();
}
}
- Private()
+ Private() : m_namespaceTree(0,0)
{
if (Doxygen::namespaceSDict)
{
diff --git a/src/context.h b/src/context.h
index 7506471..589a873 100644
--- a/src/context.h
+++ b/src/context.h
@@ -366,8 +366,10 @@ class ClassHierarchyContext : public TemplateStructIntf
class NestingNodeContext : public TemplateStructIntf
{
public:
- NestingNodeContext(Definition *,bool addClasses);
+ NestingNodeContext(const NestingNodeContext *parent,
+ Definition *,int index,int level,bool addClasses);
~NestingNodeContext();
+ QCString id() const;
// TemplateStructIntf methods
virtual TemplateVariant get(const char *name) const;
@@ -382,7 +384,7 @@ class NestingNodeContext : public TemplateStructIntf
class NestingContext : public TemplateListIntf
{
public:
- NestingContext();
+ NestingContext(const NestingNodeContext *parent,int level);
~NestingContext();
// TemplateListIntf
diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp
index 7efb4f8..a99ec56 100644
--- a/src/cppvalue.cpp
+++ b/src/cppvalue.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/cppvalue.h b/src/cppvalue.h
index 3f3ac3a..67c5433 100644
--- a/src/cppvalue.h
+++ b/src/cppvalue.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/debug.cpp b/src/debug.cpp
index a5000ff..e27ce11 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/debug.h b/src/debug.h
index e1affab..e17c03c 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/declinfo.h b/src/declinfo.h
index 3d8cb87..5f11a1c 100644
--- a/src/declinfo.h
+++ b/src/declinfo.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/declinfo.l b/src/declinfo.l
index 58ecb05..f238be3 100644
--- a/src/declinfo.l
+++ b/src/declinfo.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/defargs.h b/src/defargs.h
index 1dbabdb..6ebfe1d 100644
--- a/src/defargs.h
+++ b/src/defargs.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/defargs.l b/src/defargs.l
index 5f64b66..164c100 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/defgen.cpp b/src/defgen.cpp
index 4e0e5b8..358cd24 100644
--- a/src/defgen.cpp
+++ b/src/defgen.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/defgen.h b/src/defgen.h
index 290a415..696fb5c 100644
--- a/src/defgen.h
+++ b/src/defgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/define.cpp b/src/define.cpp
index 76a64e1..75459c9 100644
--- a/src/define.cpp
+++ b/src/define.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/define.h b/src/define.h
index bc758c0..7971cc4 100644
--- a/src/define.h
+++ b/src/define.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/definition.cpp b/src/definition.cpp
index 8be2217..c4b9f77 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/definition.h b/src/definition.h
index b798e14..dfd9dad 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/dia.cpp b/src/dia.cpp
index 1032564..955171c 100644
--- a/src/dia.cpp
+++ b/src/dia.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/dia.h b/src/dia.h
index 01d5962..ca10332 100644
--- a/src/dia.h
+++ b/src/dia.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/diagram.cpp b/src/diagram.cpp
index a7d2aa4..e50baec 100644
--- a/src/diagram.cpp
+++ b/src/diagram.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/diagram.h b/src/diagram.h
index 62cab2e..6ce83f3 100644
--- a/src/diagram.h
+++ b/src/diagram.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/dirdef.h b/src/dirdef.h
index dc2d01e..6650d45 100644
--- a/src/dirdef.h
+++ b/src/dirdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/docbookgen.cpp b/src/docbookgen.cpp
index 93ef8d8..2011333 100644
--- a/src/docbookgen.cpp
+++ b/src/docbookgen.cpp
@@ -2,7 +2,7 @@
*
*
*
-* Copyright (C) 1997-2012 by Dimitri van Heesch.
+* Copyright (C) 1997-2014 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
diff --git a/src/docbookgen.h b/src/docbookgen.h
index 344cb5b..0431cf2 100644
--- a/src/docbookgen.h
+++ b/src/docbookgen.h
@@ -2,7 +2,7 @@
*
*
*
-* Copyright (C) 1997-2012 by Dimitri van Heesch.
+* Copyright (C) 1997-2014 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
diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp
index aaea045..526ed49 100644
--- a/src/docbookvisitor.cpp
+++ b/src/docbookvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -33,6 +33,7 @@
#include "filedef.h"
#include "msc.h"
#include "dia.h"
+#include "htmlentity.h"
DocbookDocVisitor::DocbookDocVisitor(FTextStream &t,CodeOutputInterface &ci)
: DocVisitor(DocVisitor_Docbook), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
@@ -73,109 +74,14 @@ void DocbookDocVisitor::visit(DocWhiteSpace *w)
void DocbookDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->docbook(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Copy: m_t << "&#x00A9;"; break;
- case DocSymbol::Tm: m_t << "&#8482;"; break;
- case DocSymbol::Reg: m_t << "&#174;"; break;
- case DocSymbol::Apos: m_t << "&apos;"; break;
- case DocSymbol::Quot: m_t << "&quot;"; break;
- case DocSymbol::Lsquo: m_t << "&#8216;"; break;
- case DocSymbol::Rsquo: m_t << "&#8217;"; break;
- case DocSymbol::Ldquo: m_t << "&#8220;"; break;
- case DocSymbol::Rdquo: m_t << "&#8221;"; break;
- case DocSymbol::Ndash: m_t << "&#8211;"; break;
- case DocSymbol::Mdash: m_t << "&#8212;"; break;
- case DocSymbol::Uml: m_t << "&#168;"; break;
- case DocSymbol::Acute: m_t << "&#180;"; break;
- case DocSymbol::Grave: m_t << "&#192;"; break;
- case DocSymbol::Circ: m_t << "&#710;"; break;
- case DocSymbol::Tilde: m_t << "&#732;"; break;
- case DocSymbol::Szlig: m_t << "&#223;"; break;
- case DocSymbol::Cedil: m_t << "&#184;"; break;
- case DocSymbol::Ring: m_t << "&#197;"; break;
- case DocSymbol::Slash: m_t << "&#216;"; break;
- case DocSymbol::Nbsp: m_t << "&#160;"; break;
- case DocSymbol::Aelig: m_t << "&#230;"; break;
- case DocSymbol::AElig: m_t << "&#198;"; break;
- case DocSymbol::GrkGamma: m_t << "&#915;"; break;
- case DocSymbol::GrkDelta: m_t << "&#916;"; break;
- case DocSymbol::GrkTheta: m_t << "&#920;"; break;
- case DocSymbol::GrkLambda: m_t << "&#923;"; break;
- case DocSymbol::GrkXi: m_t << "&#926;"; break;
- case DocSymbol::GrkPi: m_t << "&#928;"; break;
- case DocSymbol::GrkSigma: m_t << "&#931;"; break;
- case DocSymbol::GrkUpsilon: m_t << "&#933;"; break;
- case DocSymbol::GrkPhi: m_t << "&#934;"; break;
- case DocSymbol::GrkPsi: m_t << "&#936;"; break;
- case DocSymbol::GrkOmega: m_t << "&#937;"; break;
- case DocSymbol::Grkalpha: m_t << "&#945;"; break;
- case DocSymbol::Grkbeta: m_t << "&#946;"; break;
- case DocSymbol::Grkgamma: m_t << "&#947;"; break;
- case DocSymbol::Grkdelta: m_t << "&#948;"; break;
- case DocSymbol::Grkepsilon: m_t << "&#949;"; break;
- case DocSymbol::Grkzeta: m_t << "&#950;"; break;
- case DocSymbol::Grketa: m_t << "&#951;"; break;
- case DocSymbol::Grktheta: m_t << "&#952;"; break;
- case DocSymbol::Grkiota: m_t << "&#953;"; break;
- case DocSymbol::Grkkappa: m_t << "&#954;"; break;
- case DocSymbol::Grklambda: m_t << "&#955;"; break;
- case DocSymbol::Grkmu: m_t << "&#956;"; break;
- case DocSymbol::Grknu: m_t << "&#957;"; break;
- case DocSymbol::Grkxi: m_t << "&#958;"; break;
- case DocSymbol::Grkpi: m_t << "&#960;"; break;
- case DocSymbol::Grkrho: m_t << "&#961;"; break;
- case DocSymbol::Grksigma: m_t << "&#963;"; break;
- case DocSymbol::Grktau: m_t << "&#964;"; break;
- case DocSymbol::Grkupsilon: m_t << "&#965;"; break;
- case DocSymbol::Grkphi: m_t << "&#966;"; break;
- case DocSymbol::Grkchi: m_t << "&#967;"; break;
- case DocSymbol::Grkpsi: m_t << "&#968;"; break;
- case DocSymbol::Grkomega: m_t << "&#969;"; break;
- case DocSymbol::Grkvarsigma: m_t << "&#962;"; break;
- case DocSymbol::Section: m_t << "<simplesect/>"; break;
- case DocSymbol::Degree: m_t << "&#176;"; break;
- case DocSymbol::Prime: m_t << "&#8242;"; break;
- case DocSymbol::DoublePrime: m_t << "&#8243;"; break;
- case DocSymbol::Infinity: m_t << "&#8734;"; break;
- case DocSymbol::EmptySet: m_t << "&#8709;"; break;
- case DocSymbol::PlusMinus: m_t << "&#177;"; break;
- case DocSymbol::Times: m_t << "&#215;"; break;
- case DocSymbol::Minus: m_t << "&#8722;"; break;
- case DocSymbol::CenterDot: m_t << "&#8901;"; break;
- case DocSymbol::Partial: m_t << "&#8706;"; break;
- case DocSymbol::Nabla: m_t << "&#8711;"; break;
- case DocSymbol::SquareRoot: m_t << "&#8730;"; break;
- case DocSymbol::Perpendicular: m_t << "&#8869;"; break;
- case DocSymbol::Sum: m_t << "&#8721;"; break;
- case DocSymbol::Integral: m_t << "&#8747;"; break;
- case DocSymbol::Product: m_t << "&#8719;"; break;
- case DocSymbol::Similar: m_t << "&#8764;"; break;
- case DocSymbol::Approx: m_t << "&#8776;"; break;
- case DocSymbol::NotEqual: m_t << "&#8800;"; break;
- case DocSymbol::Equivalent: m_t << "&#8801;"; break;
- case DocSymbol::Proportional: m_t << "&#8733;"; break;
- case DocSymbol::LessEqual: m_t << "&#8804;"; break;
- case DocSymbol::GreaterEqual: m_t << "&#8805;"; break;
- case DocSymbol::LeftArrow: m_t << "&#8592;"; break;
- case DocSymbol::RightArrow: m_t << "&#8594;"; break;
- case DocSymbol::SetIn: m_t << "&#8712;"; break;
- case DocSymbol::SetNotIn: m_t << "&#8713;"; break;
- case DocSymbol::LeftCeil: m_t << "&#8968;"; break;
- case DocSymbol::RightCeil: m_t << "&#8969;"; break;
- case DocSymbol::LeftFloor: m_t << "&#8970;"; break;
- case DocSymbol::RightFloor: m_t << "&#8971;"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("DocBook: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
diff --git a/src/docbookvisitor.h b/src/docbookvisitor.h
index a03e04a..20d424e 100644
--- a/src/docbookvisitor.h
+++ b/src/docbookvisitor.h
@@ -2,7 +2,7 @@
*
*
*
-* Copyright (C) 1997-2012 by Dimitri van Heesch.
+* Copyright (C) 1997-2014 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
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 7e34ad0..927b3ee 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -53,6 +53,7 @@
#include "config.h"
#include "growbuf.h"
#include "markdown.h"
+#include "htmlentity.h"
// debug off
#define DBG(x) do {} while(0)
@@ -1244,34 +1245,34 @@ reparsetoken:
switch (Mappers::cmdMapper->map(tokenName))
{
case CMD_BSLASH:
- children.append(new DocSymbol(parent,DocSymbol::BSlash));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_BSlash));
break;
case CMD_AT:
- children.append(new DocSymbol(parent,DocSymbol::At));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_At));
break;
case CMD_LESS:
- children.append(new DocSymbol(parent,DocSymbol::Less));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Less));
break;
case CMD_GREATER:
- children.append(new DocSymbol(parent,DocSymbol::Greater));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Greater));
break;
case CMD_AMP:
- children.append(new DocSymbol(parent,DocSymbol::Amp));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Amp));
break;
case CMD_DOLLAR:
- children.append(new DocSymbol(parent,DocSymbol::Dollar));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Dollar));
break;
case CMD_HASH:
- children.append(new DocSymbol(parent,DocSymbol::Hash));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Hash));
break;
case CMD_DCOLON:
- children.append(new DocSymbol(parent,DocSymbol::DoubleColon));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_DoubleColon));
break;
case CMD_PERCENT:
- children.append(new DocSymbol(parent,DocSymbol::Percent));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Percent));
break;
case CMD_QUOTE:
- children.append(new DocSymbol(parent,DocSymbol::Quot));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Quot));
break;
case CMD_EMPHASIS:
{
@@ -1488,11 +1489,10 @@ reparsetoken:
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(tokenName,&letter);
- if (s!=DocSymbol::Unknown)
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(tokenName);
+ if (s!=DocSymbol::Sym_Unknown)
{
- children.append(new DocSymbol(parent,s,letter));
+ children.append(new DocSymbol(parent,s));
}
else
{
@@ -1571,138 +1571,10 @@ static void handleImg(DocNode *parent,QList<DocNode> &children,const HtmlAttribL
//---------------------------------------------------------------------------
-DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName,char *letter)
-{
- int l=symName.length();
- DBG(("decodeSymbol(%s) l=%d\n",qPrint(symName),l));
- // TODO: replace this with a hash
- if (symName=="&copy;") return DocSymbol::Copy;
- else if (symName=="&trade;") return DocSymbol::Tm;
- else if (symName=="&tm;") return DocSymbol::Tm; // alias for &trade;
- else if (symName=="&reg;") return DocSymbol::Reg;
- else if (symName=="&lt;") return DocSymbol::Less;
- else if (symName=="&gt;") return DocSymbol::Greater;
- else if (symName=="&amp;") return DocSymbol::Amp;
- else if (symName=="&apos;") return DocSymbol::Apos;
- else if (symName=="&quot;") return DocSymbol::Quot;
- else if (symName=="&lsquo;") return DocSymbol::Lsquo;
- else if (symName=="&rsquo;") return DocSymbol::Rsquo;
- else if (symName=="&ldquo;") return DocSymbol::Ldquo;
- else if (symName=="&rdquo;") return DocSymbol::Rdquo;
- else if (symName=="&ndash;") return DocSymbol::Ndash;
- else if (symName=="&mdash;") return DocSymbol::Mdash;
- else if (symName=="&szlig;") return DocSymbol::Szlig;
- else if (symName=="&nbsp;") return DocSymbol::Nbsp;
- else if (symName=="&AElig;") return DocSymbol::AElig;
- else if (symName=="&aelig;") return DocSymbol::Aelig;
- else if (symName=="&Gamma;") return DocSymbol::GrkGamma;
- else if (symName=="&Delta;") return DocSymbol::GrkDelta;
- else if (symName=="&Theta;") return DocSymbol::GrkTheta;
- else if (symName=="&Lambda;") return DocSymbol::GrkLambda;
- else if (symName=="&Xi;") return DocSymbol::GrkXi;
- else if (symName=="&Pi;") return DocSymbol::GrkPi;
- else if (symName=="&Sigma;") return DocSymbol::GrkSigma;
- else if (symName=="&Upsilon;") return DocSymbol::GrkUpsilon;
- else if (symName=="&Phi;") return DocSymbol::GrkPhi;
- else if (symName=="&Psi;") return DocSymbol::GrkPsi;
- else if (symName=="&Omega;") return DocSymbol::GrkOmega;
- else if (symName=="&alpha;") return DocSymbol::Grkalpha;
- else if (symName=="&beta;") return DocSymbol::Grkbeta;
- else if (symName=="&gamma;") return DocSymbol::Grkgamma;
- else if (symName=="&delta;") return DocSymbol::Grkdelta;
- else if (symName=="&epsilon;") return DocSymbol::Grkepsilon;
- else if (symName=="&zeta;") return DocSymbol::Grkzeta;
- else if (symName=="&eta;") return DocSymbol::Grketa;
- else if (symName=="&theta;") return DocSymbol::Grktheta;
- else if (symName=="&iota;") return DocSymbol::Grkiota;
- else if (symName=="&kappa;") return DocSymbol::Grkkappa;
- else if (symName=="&lambda;") return DocSymbol::Grklambda;
- else if (symName=="&mu;") return DocSymbol::Grkmu;
- else if (symName=="&nu;") return DocSymbol::Grknu;
- else if (symName=="&xi;") return DocSymbol::Grkxi;
- else if (symName=="&pi;") return DocSymbol::Grkpi;
- else if (symName=="&rho;") return DocSymbol::Grkrho;
- else if (symName=="&sigma;") return DocSymbol::Grksigma;
- else if (symName=="&tau;") return DocSymbol::Grktau;
- else if (symName=="&upsilon;") return DocSymbol::Grkupsilon;
- else if (symName=="&phi;") return DocSymbol::Grkphi;
- else if (symName=="&chi;") return DocSymbol::Grkchi;
- else if (symName=="&psi;") return DocSymbol::Grkpsi;
- else if (symName=="&omega;") return DocSymbol::Grkomega;
- else if (symName=="&sigmaf;") return DocSymbol::Grkvarsigma;
- else if (symName=="&sect;") return DocSymbol::Section;
- else if (symName=="&deg;") return DocSymbol::Degree;
- else if (symName=="&prime;") return DocSymbol::Prime;
- else if (symName=="&Prime;") return DocSymbol::DoublePrime;
- else if (symName=="&infin;") return DocSymbol::Infinity;
- else if (symName=="&empty;") return DocSymbol::EmptySet;
- else if (symName=="&plusmn;") return DocSymbol::PlusMinus;
- else if (symName=="&times;") return DocSymbol::Times;
- else if (symName=="&minus;") return DocSymbol::Minus;
- else if (symName=="&sdot;") return DocSymbol::CenterDot;
- else if (symName=="&part;") return DocSymbol::Partial;
- else if (symName=="&nabla;") return DocSymbol::Nabla;
- else if (symName=="&radic;") return DocSymbol::SquareRoot;
- else if (symName=="&perp;") return DocSymbol::Perpendicular;
- else if (symName=="&sum;") return DocSymbol::Sum;
- else if (symName=="&int;") return DocSymbol::Integral;
- else if (symName=="&prod;") return DocSymbol::Product;
- else if (symName=="&sim;") return DocSymbol::Similar;
- else if (symName=="&asymp;") return DocSymbol::Approx;
- else if (symName=="&ne;") return DocSymbol::NotEqual;
- else if (symName=="&equiv;") return DocSymbol::Equivalent;
- else if (symName=="&prop;") return DocSymbol::Proportional;
- else if (symName=="&le;") return DocSymbol::LessEqual;
- else if (symName=="&ge;") return DocSymbol::GreaterEqual;
- else if (symName=="&larr;") return DocSymbol::LeftArrow;
- else if (symName=="&rarr;") return DocSymbol::RightArrow;
- else if (symName=="&isin;") return DocSymbol::SetIn;
- else if (symName=="&notin;") return DocSymbol::SetNotIn;
- else if (symName=="&lceil;") return DocSymbol::LeftCeil;
- else if (symName=="&rceil;") return DocSymbol::RightCeil;
- else if (symName=="&lfloor;") return DocSymbol::LeftFloor;
- else if (symName=="&rfloor;") return DocSymbol::RightFloor;
- else if (l==6 && symName.right(4)=="uml;")
- {
- *letter=symName.at(1);
- return DocSymbol::Uml;
- }
- else if (l==8 && symName.right(6)=="acute;")
- {
- *letter=symName.at(1);
- return DocSymbol::Acute;
- }
- else if (l==8 && symName.right(6)=="grave;")
- {
- *letter=symName.at(1);
- return DocSymbol::Grave;
- }
- else if (l==7 && symName.right(5)=="circ;")
- {
- *letter=symName.at(1);
- return DocSymbol::Circ;
- }
- else if (l==8 && symName.right(6)=="tilde;")
- {
- *letter=symName.at(1);
- return DocSymbol::Tilde;
- }
- else if (l==8 && symName.right(6)=="cedil;")
- {
- *letter=symName.at(1);
- return DocSymbol::Cedil;
- }
- else if (l==7 && symName.right(5)=="ring;")
- {
- *letter=symName.at(1);
- return DocSymbol::Ring;
- }
- else if (l==8 && symName.right(6)=="slash;")
- {
- *letter=symName.at(1);
- return DocSymbol::Slash;
- }
- return DocSymbol::Unknown;
+DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName)
+{
+ DBG(("decodeSymbol(%s)\n",qPrint(symName)));
+ return HtmlEntityMapper::instance()->name2sym(symName);
}
//---------------------------------------------------------------------------
@@ -3369,26 +3241,25 @@ int DocIndexEntry::parse()
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name,&letter);
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name);
switch (s)
{
- case DocSymbol::BSlash: m_entry+='\\'; break;
- case DocSymbol::At: m_entry+='@'; break;
- case DocSymbol::Less: m_entry+='<'; break;
- case DocSymbol::Greater: m_entry+='>'; break;
- case DocSymbol::Amp: m_entry+='&'; break;
- case DocSymbol::Dollar: m_entry+='$'; break;
- case DocSymbol::Hash: m_entry+='#'; break;
- case DocSymbol::Percent: m_entry+='%'; break;
- case DocSymbol::Apos: m_entry+='\''; break;
- case DocSymbol::Quot: m_entry+='"'; break;
- case DocSymbol::Lsquo: m_entry+='`'; break;
- case DocSymbol::Rsquo: m_entry+='\''; break;
- case DocSymbol::Ldquo: m_entry+="``"; break;
- case DocSymbol::Rdquo: m_entry+="''"; break;
- case DocSymbol::Ndash: m_entry+="--"; break;
- case DocSymbol::Mdash: m_entry+="---"; break;
+ case DocSymbol::Sym_BSlash: m_entry+='\\'; break;
+ case DocSymbol::Sym_At: m_entry+='@'; break;
+ case DocSymbol::Sym_Less: m_entry+='<'; break;
+ case DocSymbol::Sym_Greater: m_entry+='>'; break;
+ case DocSymbol::Sym_Amp: m_entry+='&'; break;
+ case DocSymbol::Sym_Dollar: m_entry+='$'; break;
+ case DocSymbol::Sym_Hash: m_entry+='#'; break;
+ case DocSymbol::Sym_Percent: m_entry+='%'; break;
+ case DocSymbol::Sym_apos: m_entry+='\''; break;
+ case DocSymbol::Sym_Quot: m_entry+='"'; break;
+ case DocSymbol::Sym_lsquo: m_entry+='`'; break;
+ case DocSymbol::Sym_rsquo: m_entry+='\''; break;
+ case DocSymbol::Sym_ldquo: m_entry+="``"; break;
+ case DocSymbol::Sym_rdquo: m_entry+="''"; break;
+ case DocSymbol::Sym_ndash: m_entry+="--"; break;
+ case DocSymbol::Sym_mdash: m_entry+="---"; break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected symbol found as argument of \\addindex");
break;
@@ -5470,37 +5341,37 @@ int DocPara::handleCommand(const QCString &cmdName)
if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break;
case CMD_BSLASH:
- m_children.append(new DocSymbol(this,DocSymbol::BSlash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_BSlash));
break;
case CMD_AT:
- m_children.append(new DocSymbol(this,DocSymbol::At));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_At));
break;
case CMD_LESS:
- m_children.append(new DocSymbol(this,DocSymbol::Less));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Less));
break;
case CMD_GREATER:
- m_children.append(new DocSymbol(this,DocSymbol::Greater));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Greater));
break;
case CMD_AMP:
- m_children.append(new DocSymbol(this,DocSymbol::Amp));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Amp));
break;
case CMD_DOLLAR:
- m_children.append(new DocSymbol(this,DocSymbol::Dollar));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Dollar));
break;
case CMD_HASH:
- m_children.append(new DocSymbol(this,DocSymbol::Hash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Hash));
break;
case CMD_PIPE:
- m_children.append(new DocSymbol(this,DocSymbol::Pipe));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Pipe));
break;
case CMD_DCOLON:
- m_children.append(new DocSymbol(this,DocSymbol::DoubleColon));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_DoubleColon));
break;
case CMD_PERCENT:
- m_children.append(new DocSymbol(this,DocSymbol::Percent));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Percent));
break;
case CMD_QUOTE:
- m_children.append(new DocSymbol(this,DocSymbol::Quot));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Quot));
break;
case CMD_SA:
g_inSeeBlock=TRUE;
@@ -6691,11 +6562,10 @@ reparsetoken:
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name,&letter);
- if (s!=DocSymbol::Unknown)
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name);
+ if (s!=DocSymbol::Sym_Unknown)
{
- m_children.append(new DocSymbol(this,s,letter));
+ m_children.append(new DocSymbol(this,s));
}
else
{
@@ -6910,11 +6780,10 @@ void DocText::parse()
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name,&letter);
- if (s!=DocSymbol::Unknown)
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name);
+ if (s!=DocSymbol::Sym_Unknown)
{
- m_children.append(new DocSymbol(this,s,letter));
+ m_children.append(new DocSymbol(this,s));
}
else
{
@@ -6927,34 +6796,34 @@ void DocText::parse()
switch (Mappers::cmdMapper->map(g_token->name))
{
case CMD_BSLASH:
- m_children.append(new DocSymbol(this,DocSymbol::BSlash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_BSlash));
break;
case CMD_AT:
- m_children.append(new DocSymbol(this,DocSymbol::At));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_At));
break;
case CMD_LESS:
- m_children.append(new DocSymbol(this,DocSymbol::Less));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Less));
break;
case CMD_GREATER:
- m_children.append(new DocSymbol(this,DocSymbol::Greater));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Greater));
break;
case CMD_AMP:
- m_children.append(new DocSymbol(this,DocSymbol::Amp));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Amp));
break;
case CMD_DOLLAR:
- m_children.append(new DocSymbol(this,DocSymbol::Dollar));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Dollar));
break;
case CMD_HASH:
- m_children.append(new DocSymbol(this,DocSymbol::Hash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Hash));
break;
case CMD_DCOLON:
- m_children.append(new DocSymbol(this,DocSymbol::DoubleColon));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_DoubleColon));
break;
case CMD_PERCENT:
- m_children.append(new DocSymbol(this,DocSymbol::Percent));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Percent));
break;
case CMD_QUOTE:
- m_children.append(new DocSymbol(this,DocSymbol::Quot));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Quot));
break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected command `%s' found",
diff --git a/src/docparser.h b/src/docparser.h
index 050c871..37c78cd 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -336,34 +336,84 @@ class DocStyleChange : public DocNode
class DocSymbol : public DocNode
{
public:
- enum SymType { Unknown=0, BSlash, At, Less, Greater, Amp, Dollar, Hash,
- DoubleColon, Percent, Copy, Tm, Reg, Apos, Quot, Uml, Acute,
- Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Slash,
- Lsquo, Rsquo, Ldquo, Rdquo, Ndash, Mdash, Aelig, AElig,
- GrkGamma, GrkDelta, GrkTheta, GrkLambda, GrkXi, GrkPi,
- GrkSigma, GrkUpsilon, GrkPhi, GrkPsi, GrkOmega, Grkalpha,
- Grkbeta, Grkgamma, Grkdelta, Grkepsilon, Grkzeta, Grketa,
- Grktheta, Grkiota, Grkkappa, Grklambda, Grkmu, Grknu, Grkxi,
- Grkpi, Grkrho, Grksigma, Grktau, Grkupsilon, Grkphi, Grkchi,
- Grkpsi, Grkomega, Grkvarsigma, Section, Degree, Prime,
- DoublePrime, Infinity, EmptySet, PlusMinus, Times, Minus,
- CenterDot, Partial, Nabla, SquareRoot, Perpendicular, Sum,
- Integral, Product, Similar, Approx, NotEqual, Equivalent,
- Proportional, LessEqual, GreaterEqual, LeftArrow, RightArrow,
- SetIn, SetNotIn, LeftCeil, RightCeil, LeftFloor, RightFloor,
- Pipe
+ enum SymType { Sym_Unknown = -1,
+ Sym_nbsp, Sym_iexcl, Sym_cent, Sym_pound, Sym_curren,
+ Sym_yen, Sym_brvbar, Sym_sect, Sym_uml, Sym_copy,
+ Sym_ordf, Sym_laquo, Sym_not, Sym_shy, Sym_reg,
+ Sym_macr, Sym_deg, Sym_plusmn, Sym_sup2, Sym_sup3,
+ Sym_acute, Sym_micro, Sym_para, Sym_middot, Sym_cedil,
+ Sym_sup1, Sym_ordm, Sym_raquo, Sym_frac14, Sym_frac12,
+ Sym_frac34, Sym_iquest, Sym_Agrave, Sym_Aacute, Sym_Acirc,
+ Sym_Atilde, Sym_Auml, Sym_Aring, Sym_AElig, Sym_Ccedil,
+ Sym_Egrave, Sym_Eacute, Sym_Ecirc, Sym_Euml, Sym_Igrave,
+ Sym_Iacute, Sym_Icirc, Sym_Iuml, Sym_ETH, Sym_Ntilde,
+ Sym_Ograve, Sym_Oacute, Sym_Ocirc, Sym_Otilde, Sym_Ouml,
+ Sym_times, Sym_Oslash, Sym_Ugrave, Sym_Uacute, Sym_Ucirc,
+ Sym_Uuml, Sym_Yacute, Sym_THORN, Sym_szlig, Sym_agrave,
+ Sym_aacute, Sym_acirc, Sym_atilde, Sym_auml, Sym_aring,
+ Sym_aelig, Sym_ccedil, Sym_egrave, Sym_eacute, Sym_ecirc,
+ Sym_euml, Sym_igrave, Sym_iacute, Sym_icirc, Sym_iuml,
+ Sym_eth, Sym_ntilde, Sym_ograve, Sym_oacute, Sym_ocirc,
+ Sym_otilde, Sym_ouml, Sym_divide, Sym_oslash, Sym_ugrave,
+ Sym_uacute, Sym_ucirc, Sym_uuml, Sym_yacute, Sym_thorn,
+ Sym_yuml, Sym_fnof, Sym_Alpha, Sym_Beta, Sym_Gamma,
+ Sym_Delta, Sym_Epsilon, Sym_Zeta, Sym_Eta, Sym_Theta,
+ Sym_Iota, Sym_Kappa, Sym_Lambda, Sym_Mu, Sym_Nu,
+ Sym_Xi, Sym_Omicron, Sym_Pi, Sym_Rho, Sym_Sigma,
+ Sym_Tau, Sym_Upsilon, Sym_Phi, Sym_Chi, Sym_Psi,
+ Sym_Omega, Sym_alpha, Sym_beta, Sym_gamma, Sym_delta,
+ Sym_epsilon, Sym_zeta, Sym_eta, Sym_theta, Sym_iota,
+ Sym_kappa, Sym_lambda, Sym_mu, Sym_nu, Sym_xi,
+ Sym_omicron, Sym_pi, Sym_rho, Sym_sigmaf, Sym_sigma,
+ Sym_tau, Sym_upsilon, Sym_phi, Sym_chi, Sym_psi,
+ Sym_omega, Sym_thetasym, Sym_upsih, Sym_piv, Sym_bull,
+ Sym_hellip, Sym_prime, Sym_Prime, Sym_oline, Sym_frasl,
+ Sym_weierp, Sym_image, Sym_real, Sym_trade, Sym_alefsym,
+ Sym_larr, Sym_uarr, Sym_rarr, Sym_darr, Sym_harr,
+ Sym_crarr, Sym_lArr, Sym_uArr, Sym_rArr, Sym_dArr,
+ Sym_hArr, Sym_forall, Sym_part, Sym_exist, Sym_empty,
+ Sym_nabla, Sym_isin, Sym_notin, Sym_ni, Sym_prod,
+ Sym_sum, Sym_minus, Sym_lowast, Sym_radic, Sym_prop,
+ Sym_infin, Sym_ang, Sym_and, Sym_or, Sym_cap,
+ Sym_cup, Sym_int, Sym_there4, Sym_sim, Sym_cong,
+ Sym_asymp, Sym_ne, Sym_equiv, Sym_le, Sym_ge,
+ Sym_sub, Sym_sup, Sym_nsub, Sym_sube, Sym_supe,
+ Sym_oplus, Sym_otimes, Sym_perp, Sym_sdot, Sym_lceil,
+ Sym_rceil, Sym_lfloor, Sym_rfloor, Sym_lang, Sym_rang,
+ Sym_loz, Sym_spades, Sym_clubs, Sym_hearts, Sym_diams,
+ Sym_quot, Sym_amp, Sym_lt, Sym_gt, Sym_OElig,
+ Sym_oelig, Sym_Scaron, Sym_scaron, Sym_Yuml, Sym_circ,
+ Sym_tilde, Sym_ensp, Sym_emsp, Sym_thinsp, Sym_zwnj,
+ Sym_zwj, Sym_lrm, Sym_rlm, Sym_ndash, Sym_mdash,
+ Sym_lsquo, Sym_rsquo, Sym_sbquo, Sym_ldquo, Sym_rdquo,
+ Sym_bdquo, Sym_dagger, Sym_Dagger, Sym_permil, Sym_lsaquo,
+ Sym_rsaquo, Sym_euro,
+
+ /* doxygen extensions */
+ Sym_tm, Sym_apos,
+
+ /* doxygen commands mapped */
+ Sym_BSlash, Sym_At, Sym_Less, Sym_Greater, Sym_Amp,
+ Sym_Dollar, Sym_Hash, Sym_DoubleColon, Sym_Percent, Sym_Pipe,
+ Sym_Quot
};
- DocSymbol(DocNode *parent,SymType s,char letter='\0') :
- m_symbol(s), m_letter(letter) { m_parent = parent; }
+ enum PerlType { Perl_unknown = 0, Perl_string, Perl_char, Perl_symbol, Perl_umlaut,
+ Perl_acute, Perl_grave, Perl_circ, Perl_slash, Perl_tilde,
+ Perl_cedilla, Perl_ring
+ };
+ typedef struct PerlSymb {
+ const char *symb;
+ const PerlType type;
+ }PerlSymb;
+ DocSymbol(DocNode *parent,SymType s) :
+ m_symbol(s) { m_parent = parent; }
SymType symbol() const { return m_symbol; }
- char letter() const { return m_letter; }
Kind kind() const { return Kind_Symbol; }
void accept(DocVisitor *v) { v->visit(this); }
- static SymType decodeSymbol(const QCString &symName,char *letter);
+ static SymType decodeSymbol(const QCString &symName);
private:
SymType m_symbol;
- char m_letter;
};
/** Node representing some amount of white space */
diff --git a/src/docsets.cpp b/src/docsets.cpp
index 2aa2918..de75819 100644
--- a/src/docsets.cpp
+++ b/src/docsets.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/docsets.h b/src/docsets.h
index c5f0dc7..eac5bfc 100644
--- a/src/docsets.h
+++ b/src/docsets.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/doctokenizer.h b/src/doctokenizer.h
index ca0490c..1db764e 100644
--- a/src/doctokenizer.h
+++ b/src/doctokenizer.h
@@ -3,7 +3,7 @@
* $Id: $
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index 6d521d9..a4e6c4a 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -3,7 +3,7 @@
* $Id: $
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/docvisitor.h b/src/docvisitor.h
index d12295c..a444b47 100644
--- a/src/docvisitor.h
+++ b/src/docvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/dot.cpp b/src/dot.cpp
index 56ddc83..ea41685 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -1224,7 +1224,7 @@ DotManager *DotManager::instance()
return m_theInstance;
}
-DotManager::DotManager() : m_dotMaps(1007)
+DotManager::DotManager() : m_dotMaps(1009)
{
m_dotRuns.setAutoDelete(TRUE);
m_dotMaps.setAutoDelete(TRUE);
diff --git a/src/dot.h b/src/dot.h
index 75474ed..6ff89be 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 3f05396..b195940 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -9822,7 +9822,7 @@ static void devUsage()
static void usage(const char *name)
{
- msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2013\n\n",versionString);
+ msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2014\n\n",versionString);
msg("You can use doxygen in a number of ways:\n\n");
msg("1) Use doxygen to generate a template configuration file:\n");
msg(" %s [-s] -g [configName]\n\n",name);
diff --git a/src/doxygen.h b/src/doxygen.h
index 99d6931..6f766c0 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in
index 506a3e8..8bca741 100644
--- a/src/doxygen.pro.in
+++ b/src/doxygen.pro.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/src/eclipsehelp.cpp b/src/eclipsehelp.cpp
index 213b0fa..6680aeb 100644
--- a/src/eclipsehelp.cpp
+++ b/src/eclipsehelp.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/eclipsehelp.h b/src/eclipsehelp.h
index c21c4ae..f0ab78e 100644
--- a/src/eclipsehelp.h
+++ b/src/eclipsehelp.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/entry.cpp b/src/entry.cpp
index 15263ab..ee3d0ae 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/entry.h b/src/entry.h
index cecd095..a861906 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/example.h b/src/example.h
index c0f405c..7c86554 100644
--- a/src/example.h
+++ b/src/example.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/filedef.cpp b/src/filedef.cpp
index d7bc794..04c56de 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/filedef.h b/src/filedef.h
index 6cb4665..a95cd77 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/filename.cpp b/src/filename.cpp
index 0919024..35a1841 100644
--- a/src/filename.cpp
+++ b/src/filename.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/filename.h b/src/filename.h
index e7383b8..ac7b164 100644
--- a/src/filename.h
+++ b/src/filename.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/filestorage.h b/src/filestorage.h
index a6ee5b4..0d72923 100644
--- a/src/filestorage.h
+++ b/src/filestorage.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/formula.cpp b/src/formula.cpp
index 0d3c4cd..9e835e1 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -1,7 +1,7 @@
/******************************************************************************
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/formula.h b/src/formula.h
index 79821bf..47f7d4b 100644
--- a/src/formula.h
+++ b/src/formula.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/fortrancode.h b/src/fortrancode.h
index 3913ebb..8c947e9 100644
--- a/src/fortrancode.h
+++ b/src/fortrancode.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/fortranscanner.h b/src/fortranscanner.h
index 41f7790..a504abc 100644
--- a/src/fortranscanner.h
+++ b/src/fortranscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index 4fd47b5..4613a92 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -1,7 +1,7 @@
/******************************************************************************
* ftvhelp.cpp,v 1.0 2000/09/06 16:09:00
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -784,7 +784,7 @@ QCString FTVHelp::generateIndentLabel(FTVNode *n,int level)
{
result=generateIndentLabel(n->parent,level+1);
}
- result+=QCString().sprintf("%d_",n->index);
+ result+=QCString().setNum(n->index)+"_";
return result;
}
diff --git a/src/ftvhelp.h b/src/ftvhelp.h
index b37314e..bddb2f0 100644
--- a/src/ftvhelp.h
+++ b/src/ftvhelp.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 77b3610..59f3594 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/groupdef.h b/src/groupdef.h
index 0d1a5ca..481bece 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htags.cpp b/src/htags.cpp
index 5f0c71a..1e18ae1 100644
--- a/src/htags.cpp
+++ b/src/htags.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htags.h b/src/htags.h
index 474b098..5173b2b 100644
--- a/src/htags.h
+++ b/src/htags.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htmlattrib.h b/src/htmlattrib.h
index 0b139aa..e7fd204 100644
--- a/src/htmlattrib.h
+++ b/src/htmlattrib.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 536259a..f6878b9 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -33,6 +33,7 @@
#include "vhdldocgen.h"
#include "filedef.h"
#include "memberdef.h"
+#include "htmlentity.h"
static const int NUM_HTML_LIST_TYPES = 4;
static const char types[][NUM_HTML_LIST_TYPES] = {"1", "a", "i", "A"};
@@ -182,110 +183,14 @@ void HtmlDocVisitor::visit(DocWhiteSpace *w)
void HtmlDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
- {
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "&copy;"; break;
- case DocSymbol::Tm: m_t << "&trade;"; break;
- case DocSymbol::Reg: m_t << "&reg;"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "&lsquo;"; break;
- case DocSymbol::Rsquo: m_t << "&rsquo;"; break;
- case DocSymbol::Ldquo: m_t << "&ldquo;"; break;
- case DocSymbol::Rdquo: m_t << "&rdquo;"; break;
- case DocSymbol::Ndash: m_t << "&ndash;"; break;
- case DocSymbol::Mdash: m_t << "&mdash;"; break;
- case DocSymbol::Uml: m_t << "&" << s->letter() << "uml;"; break;
- case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
- case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
- case DocSymbol::Circ: m_t << "&" << s->letter() << "circ;"; break;
- case DocSymbol::Slash: m_t << "&" << s->letter() << "slash;"; break;
- case DocSymbol::Tilde: m_t << "&" << s->letter() << "tilde;"; break;
- case DocSymbol::Szlig: m_t << "&szlig;"; break;
- case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break;
- case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break;
- case DocSymbol::Nbsp: m_t << "&#160;"; break;
- case DocSymbol::AElig: m_t << "&AElig;"; break;
- case DocSymbol::Aelig: m_t << "&aelig;"; break;
- case DocSymbol::GrkGamma: m_t << "&Gamma;"; break;
- case DocSymbol::GrkDelta: m_t << "&Delta;"; break;
- case DocSymbol::GrkTheta: m_t << "&Theta;"; break;
- case DocSymbol::GrkLambda: m_t << "&Lambda;"; break;
- case DocSymbol::GrkXi: m_t << "&Xi;"; break;
- case DocSymbol::GrkPi: m_t << "&Pi;"; break;
- case DocSymbol::GrkSigma: m_t << "&Sigma;"; break;
- case DocSymbol::GrkUpsilon: m_t << "&Upsilon;"; break;
- case DocSymbol::GrkPhi: m_t << "&Phi;"; break;
- case DocSymbol::GrkPsi: m_t << "&Psi;"; break;
- case DocSymbol::GrkOmega: m_t << "&Omega;"; break;
- case DocSymbol::Grkalpha: m_t << "&alpha;"; break;
- case DocSymbol::Grkbeta: m_t << "&beta;"; break;
- case DocSymbol::Grkgamma: m_t << "&gamma;"; break;
- case DocSymbol::Grkdelta: m_t << "&delta;"; break;
- case DocSymbol::Grkepsilon: m_t << "&epsilon;"; break;
- case DocSymbol::Grkzeta: m_t << "&zeta;"; break;
- case DocSymbol::Grketa: m_t << "&eta;"; break;
- case DocSymbol::Grktheta: m_t << "&theta;"; break;
- case DocSymbol::Grkiota: m_t << "&iota;"; break;
- case DocSymbol::Grkkappa: m_t << "&kappa;"; break;
- case DocSymbol::Grklambda: m_t << "&lambda;"; break;
- case DocSymbol::Grkmu: m_t << "&mu;"; break;
- case DocSymbol::Grknu: m_t << "&nu;"; break;
- case DocSymbol::Grkxi: m_t << "&xi;"; break;
- case DocSymbol::Grkpi: m_t << "&pi;"; break;
- case DocSymbol::Grkrho: m_t << "&rho;"; break;
- case DocSymbol::Grksigma: m_t << "&sigma;"; break;
- case DocSymbol::Grktau: m_t << "&tau;"; break;
- case DocSymbol::Grkupsilon: m_t << "&upsilon;"; break;
- case DocSymbol::Grkphi: m_t << "&phi;"; break;
- case DocSymbol::Grkchi: m_t << "&chi;"; break;
- case DocSymbol::Grkpsi: m_t << "&psi;"; break;
- case DocSymbol::Grkomega: m_t << "&omega;"; break;
- case DocSymbol::Grkvarsigma: m_t << "&sigmaf;"; break;
- case DocSymbol::Section: m_t << "&sect;"; break;
- case DocSymbol::Degree: m_t << "&deg;"; break;
- case DocSymbol::Prime: m_t << "&prime;"; break;
- case DocSymbol::DoublePrime: m_t << "&Prime;"; break;
- case DocSymbol::Infinity: m_t << "&infin;"; break;
- case DocSymbol::EmptySet: m_t << "&empty;"; break;
- case DocSymbol::PlusMinus: m_t << "&plusmn;"; break;
- case DocSymbol::Times: m_t << "&times;"; break;
- case DocSymbol::Minus: m_t << "&minus;"; break;
- case DocSymbol::CenterDot: m_t << "&sdot;"; break;
- case DocSymbol::Partial: m_t << "&part;"; break;
- case DocSymbol::Nabla: m_t << "&nabla;"; break;
- case DocSymbol::SquareRoot: m_t << "&radic;"; break;
- case DocSymbol::Perpendicular: m_t << "&perp;"; break;
- case DocSymbol::Sum: m_t << "&sum;"; break;
- case DocSymbol::Integral: m_t << "&int;"; break;
- case DocSymbol::Product: m_t << "&prod;"; break;
- case DocSymbol::Similar: m_t << "&sim;"; break;
- case DocSymbol::Approx: m_t << "&asymp;"; break;
- case DocSymbol::NotEqual: m_t << "&ne;"; break;
- case DocSymbol::Equivalent: m_t << "&equiv;"; break;
- case DocSymbol::Proportional: m_t << "&prop;"; break;
- case DocSymbol::LessEqual: m_t << "&le;"; break;
- case DocSymbol::GreaterEqual: m_t << "&ge;"; break;
- case DocSymbol::LeftArrow: m_t << "&larr;"; break;
- case DocSymbol::RightArrow: m_t << "&rarr;"; break;
- case DocSymbol::SetIn: m_t << "&isin;"; break;
- case DocSymbol::SetNotIn: m_t << "&notin;"; break;
- case DocSymbol::LeftCeil: m_t << "&lceil;"; break;
- case DocSymbol::RightCeil: m_t << "&rceil;"; break;
- case DocSymbol::LeftFloor: m_t << "&lfloor;"; break;
- case DocSymbol::RightFloor: m_t << "&rfloor;"; break;
- default:
- err("unknown symbol found\n");
+ const char *res = HtmlEntityMapper::instance()->html(s->symbol());
+ if (res)
+ {
+ m_t << res;
+ }
+ else
+ {
+ err("HTML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
diff --git a/src/htmldocvisitor.h b/src/htmldocvisitor.h
index fd7c23a..ddefecd 100644
--- a/src/htmldocvisitor.h
+++ b/src/htmldocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htmlentity.cpp b/src/htmlentity.cpp
new file mode 100644
index 0000000..c7ff1da
--- /dev/null
+++ b/src/htmlentity.cpp
@@ -0,0 +1,495 @@
+/******************************************************************************
+ *
+ * Copyright (C) 1997-2014 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.
+ *
+ */
+
+#include "htmlentity.h"
+#include "message.h"
+#include "ftextstream.h"
+
+//! Number of doxygen commands mapped as if it were HTML entities
+static const int g_numberHtmlMappedCmds = 11;
+
+//! @brief Structure defining all HTML4 entities, doxygen extensions and doxygen commands representing special symbols.
+//! @details In case an entity does not exist a NULL is given for the entity. The first column contains the symbolic code
+//! for the entity, see also doxparser.h The second column contains the name of the enitity (without the starting \& and
+//! ending ;)
+static struct htmlEntityInfo
+{
+ DocSymbol::SymType symb;
+ const char *item;
+ const char *UTF8;
+ const char *html;
+ const char *xml;
+ const char *docbook;
+ const char *latex;
+ const char *man;
+ const char *rtf;
+ DocSymbol::PerlSymb perl;
+} g_htmlEntities[] =
+{
+#undef SYM
+// helper macro to force consistent entries for the symbol and item columns
+#define SYM(s) DocSymbol::Sym_##s,"&"#s";"
+ // HTML4 entities
+ // symb+item UTF-8 html xml docbook latex man rtf perl
+ { SYM(nbsp), "\xc2\xa0", "&#160;", "<nonbreakablespace/>", "&#160;", "~", " ", "\\~", { " ", DocSymbol::Perl_char }},
+ { SYM(iexcl), "\xc2\xa1", "&iexcl;", "<iexcl/>", "&#161;", "!`", NULL, "\\'A1", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(cent), "\xc2\xa2", "&cent;", "<cent/>", "&#162;", "\\textcent{}", NULL, "\\'A2", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(pound), "\xc2\xa3", "&pound;", "<pound/>", "&#163;", "{$\\pounds$}", NULL, "\\'A3", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(curren), "\xc2\xa4", "&curren;", "<curren/>", "&#164;", "\\textcurrency{}", NULL, "\\'A4", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(yen), "\xc2\xa5", "&yen;", "<yen/>", "&#165;", "{$\\yen$}", NULL, "\\'A5", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(brvbar), "\xc2\xa6", "&brvbar;", "<brvbar/>", "&#166;", "\\textbrokenbar{}", NULL, "\\'A6", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(sect), "\xc2\xa7", "&sect;", "<sect/>", "<simplesect/>", "{$\\S$}", NULL, "\\'A7", { "sect", DocSymbol::Perl_symbol }},
+ { SYM(uml), "\xc2\xa8", "&uml;", "<umlaut/>", "&#168;", "\\textasciidieresis{}", " \\*(4", "\\'A8", { " ", DocSymbol::Perl_umlaut }},
+ { SYM(copy), "\xc2\xa9", "&copy;", "<copy/>", "&#169;", "\\copyright{}", "(C)", "\\'A9", { "copyright", DocSymbol::Perl_symbol }},
+ { SYM(ordf), "\xc2\xaa", "&ordf;", "<ordf/>", "&#170;", "\\textordfeminine{}", NULL, "\\'AA", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(laquo), "\xc2\xab", "&laquo;", "<laquo/>", "&#171;", "\\guillemotleft{}", NULL, "\\'AB", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(not), "\xc2\xac", "&not;", "<not/>", "&#172;", "\\textlnot", NULL, "\\'AC", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(shy), "\xc2\xad", "&shy;", "<shy/>", "&#173;", "{$\\-$}", NULL, "\\-", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(reg), "\xc2\xae", "&reg;", "<registered/>", "&#174;", "\\textregistered{}", "(R)", "\\'AE", { "registered", DocSymbol::Perl_symbol }},
+ { SYM(macr), "\xc2\xaf", "&macr;", "<macr/>", "&#175;", "\\={}", NULL, "\\'AF", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(deg), "\xc2\xb0", "&deg;", "<deg/>", "&#176;", "\\textdegree", NULL, "\\'B0", { "deg", DocSymbol::Perl_symbol }},
+ { SYM(plusmn), "\xc2\xb1", "&plusmn;", "<plusmn/>", "&#177;", "{$\\pm$}", NULL, "\\'B1", { "+/-", DocSymbol::Perl_string }},
+ { SYM(sup2), "\xc2\xb2", "&sup2;", "<sup2/>", "&#178;", "\\texttwosuperior{}", NULL, "\\'B2", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(sup3), "\xc2\xb3", "&sup3;", "<sup3/>", "&#179;", "\\textthreesuperior{}", NULL, "\\'B3", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(acute), "\xc2\xb4", "&acute;", "<acute/>", "&#180;", "\\'{}", NULL, "\\'B4", { " ", DocSymbol::Perl_acute }},
+ { SYM(micro), "\xc2\xb5", "&micro;", "<micro/>", "&#181;", "{$\\mu$}", NULL, "\\'B5", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(para), "\xc2\xb6", "&para;", "<para/>", "&#182;", "{$\\P$}", NULL, "\\'B6", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(middot), "\xc2\xb7", "&middot;", "<middot/>", "&#183;", "\\textperiodcentered{}", NULL, "\\'B7", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(cedil), "\xc2\xb8", "&cedil;", "<cedil/>", "&#184;", "\\c{}", " \\*,", "\\'B8", { " ", DocSymbol::Perl_cedilla }},
+ { SYM(sup1), "\xc2\xb9", "&sup1;", "<sup1/>", "&#185;", "\\textonesuperior{}", NULL, "\\'B9", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(ordm), "\xc2\xba", "&ordm;", "<ordm/>", "&#186;", "\\textordmasculine{}", NULL, "\\'BA", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(raquo), "\xc2\xbb", "&raquo;", "<raquo/>", "&#187;", "\\guillemotright{}", NULL, "\\'BB", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(frac14), "\xc2\xbc", "&frac14;", "<frac14/>", "&#188;", "{$\\frac14$}", "1/4", "\\'BC", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(frac12), "\xc2\xbd", "&frac12;", "<frac12/>", "&#189;", "{$\\frac12$}", "1/2", "\\'BD", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(frac34), "\xc2\xbe", "&frac34;", "<frac34/>", "&#190;", "{$\\frac34$}", "3/4", "\\'BE", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(iquest), "\xc2\xbf", "&iquest;", "<iquest/>", "&#191;", "?`", NULL, "\\'BF", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(Agrave), "\xc3\x80", "&Agrave;", "<Agrave/>", "&#192;", "\\`{A}", "A\\*:", "\\'C0", { "A", DocSymbol::Perl_grave }},
+ { SYM(Aacute), "\xc3\x81", "&Aacute;", "<Aacute/>", "&#193;", "\\'{A}", "A\\*(`", "\\'C1", { "A", DocSymbol::Perl_acute }},
+ { SYM(Acirc), "\xc3\x82", "&Acirc;", "<Acirc/>", "&#194;", "\\^{A}", "A\\*^", "\\'C2", { "A", DocSymbol::Perl_circ }},
+ { SYM(Atilde), "\xc3\x83", "&Atilde;", "<Atilde/>", "&#195;", "\\~{A}", "A\\*~", "\\'C3", { "A", DocSymbol::Perl_tilde }},
+ { SYM(Auml), "\xc3\x84", "&Auml;", "<Aumlaut/>", "&#196;", "\\\"{A}", "A\\*(4", "\\'C4", { "A", DocSymbol::Perl_umlaut }},
+ { SYM(Aring), "\xc3\x85", "&Aring;", "<Aring/>", "&#197;", "\\AA", "A\\*o", "\\'C5", { "A", DocSymbol::Perl_ring }},
+ { SYM(AElig), "\xc3\x86", "&AElig;", "<AElig/>", "&#198;", "{\\AE}", NULL, "\\'C6", { "AElig", DocSymbol::Perl_symbol }},
+ { SYM(Ccedil), "\xc3\x87", "&Ccedil;", "<Ccedil/>", "&#199;", "\\c{C}", "C\\*,", "\\'C7", { "C", DocSymbol::Perl_cedilla }},
+ { SYM(Egrave), "\xc3\x88", "&Egrave;", "<Egrave/>", "&#200;", "\\`{E}", "E\\*:", "\\'C8", { "E", DocSymbol::Perl_grave }},
+ { SYM(Eacute), "\xc3\x89", "&Eacute;", "<Eacute/>", "&#201;", "\\'{E}", "E\\*(`", "\\'C9", { "E", DocSymbol::Perl_acute }},
+ { SYM(Ecirc), "\xc3\x8a", "&Ecirc;", "<Ecirc/>", "&#202;", "\\^{E}", "E\\*^", "\\'CA", { "E", DocSymbol::Perl_circ }},
+ { SYM(Euml), "\xc3\x8b", "&Euml;", "<Eumlaut/>", "&#203;", "\\\"{E}", "E\\*(4", "\\'CB", { "E", DocSymbol::Perl_umlaut }},
+ { SYM(Igrave), "\xc3\x8c", "&Igrave;", "<Igrave/>", "&#204;", "\\`{I}", "I\\*:", "\\'CC", { "I", DocSymbol::Perl_grave }},
+ { SYM(Iacute), "\xc3\x8d", "&Iacute;", "<Iacute/>", "&#205;", "\\'{I}", "I\\*(`", "\\'CD", { "I", DocSymbol::Perl_acute }},
+ { SYM(Icirc), "\xc3\x8e", "&Icirc;", "<Icirc/>", "&#206;", "\\^{I}", "I\\*^", "\\'CE", { "I", DocSymbol::Perl_circ }},
+ { SYM(Iuml), "\xc3\x8f", "&Iuml;", "<Iumlaut/>", "&#207;", "\\\"{I}", "I\\*(4", "\\'CF", { "I", DocSymbol::Perl_umlaut }},
+ { SYM(ETH), "\xc3\x90", "&ETH;", "<ETH/>", "&#208;", "\\DH", NULL, "\\'D0", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(Ntilde), "\xc3\x91", "&Ntilde;", "<Ntilde/>", "&#209;", "\\~{N}", "N\\*~", "\\'D1", { "N", DocSymbol::Perl_tilde }},
+ { SYM(Ograve), "\xc3\x92", "&Ograve;", "<Ograve/>", "&#210;", "\\`{O}", "O\\*:", "\\'D2", { "O", DocSymbol::Perl_grave }},
+ { SYM(Oacute), "\xc3\x93", "&Oacute;", "<Oacute/>", "&#211;", "\\'{O}", "O\\*(`", "\\'D3", { "O", DocSymbol::Perl_acute }},
+ { SYM(Ocirc), "\xc3\x94", "&Ocirc;", "<Ocirc/>", "&#212;", "\\^{O}", "O\\*^", "\\'D4", { "O", DocSymbol::Perl_circ }},
+ { SYM(Otilde), "\xc3\x95", "&Otilde;", "<Otilde/>", "&#213;", "\\~{O}", "O\\*~", "\\'D5", { "O", DocSymbol::Perl_tilde }},
+ { SYM(Ouml), "\xc3\x96", "&Ouml;", "<Oumlaut/>", "&#214;", "\\\"{O}", "O\\*(4", "\\'D6", { "O", DocSymbol::Perl_umlaut }},
+ { SYM(times), "\xc3\x97", "&times;", "<times/>", "&#215;", "{$\\times$}", NULL, "\\'D7", { "*", DocSymbol::Perl_char }},
+ { SYM(Oslash), "\xc3\x98", "&Oslash;", "<Oslash/>", "&#216;", "{\\O}", "O\x08/", "\\'D8", { "O", DocSymbol::Perl_slash }},
+ { SYM(Ugrave), "\xc3\x99", "&Ugrave;", "<Ugrave/>", "&#217;", "\\`{U}", "U\\*:", "\\'D9", { "U", DocSymbol::Perl_grave }},
+ { SYM(Uacute), "\xc3\x9a", "&Uacute;", "<Uacute/>", "&#218;", "\\'{U}", "U\\*(`", "\\'DA", { "U", DocSymbol::Perl_acute }},
+ { SYM(Ucirc), "\xc3\x9b", "&Ucirc;", "<Ucirc/>", "&#219;", "\\^{U}", "U\\*^", "\\'DB", { "U", DocSymbol::Perl_circ }},
+ { SYM(Uuml), "\xc3\x9c", "&Uuml;", "<Uumlaut/>", "&#220;", "\\\"{U}", "U\\*(4", "\\'DC", { "U", DocSymbol::Perl_umlaut }},
+ { SYM(Yacute), "\xc3\x9d", "&Yacute;", "<Yacute/>", "&#221;", "\\'{Y}", "Y\\*(`", "\\'DD", { "Y", DocSymbol::Perl_acute }},
+ { SYM(THORN), "\xc3\x9e", "&THORN;", "<THORN/>", "&#222;", "\\TH", NULL, "\\'DE", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(szlig), "\xc3\x9f", "&szlig;", "<szlig/>", "&#223;", "{\\ss}", "s\\*:", "\\'DF", { "szlig", DocSymbol::Perl_symbol }},
+ { SYM(agrave), "\xc3\xa0", "&agrave;", "<agrave/>", "&#224;", "\\`{a}", "a\\*:", "\\'E0", { "a", DocSymbol::Perl_grave }},
+ { SYM(aacute), "\xc3\xa1", "&aacute;", "<aacute/>", "&#225;", "\\'{a}", "a\\*(`", "\\'E1", { "a", DocSymbol::Perl_acute }},
+ { SYM(acirc), "\xc3\xa2", "&acirc;", "<acirc/>", "&#226;", "\\^{a}", "a\\*^", "\\'E2", { "a", DocSymbol::Perl_circ }},
+ { SYM(atilde), "\xc3\xa3", "&atilde;", "<atilde/>", "&#227;", "\\~{a}", "a\\*~", "\\'E3", { "a", DocSymbol::Perl_tilde }},
+ { SYM(auml), "\xc3\xa4", "&auml;", "<aumlaut/>", "&#228;", "\\\"{a}", "a\\*(4", "\\'E4", { "a", DocSymbol::Perl_umlaut }},
+ { SYM(aring), "\xc3\xa5", "&aring;", "<aring/>", "&#229;", "\\aa", "a\\*o", "\\'E5", { "a", DocSymbol::Perl_ring }},
+ { SYM(aelig), "\xc3\xa6", "&aelig;", "<aelig/>", "&#230;", "{\\ae}", NULL, "\\'E6", { "aelig", DocSymbol::Perl_symbol }},
+ { SYM(ccedil), "\xc3\xa7", "&ccedil;", "<ccedil/>", "&#231;", "\\c{c}", "c\\*,", "\\'E7", { "c", DocSymbol::Perl_cedilla }},
+ { SYM(egrave), "\xc3\xa8", "&egrave;", "<egrave/>", "&#232;", "\\`{e}", "e\\*:", "\\'E8", { "e", DocSymbol::Perl_grave }},
+ { SYM(eacute), "\xc3\xa9", "&eacute;", "<eacute/>", "&#233;", "\\'{e}", "e\\*(`", "\\'E9", { "e", DocSymbol::Perl_acute }},
+ { SYM(ecirc), "\xc3\xaa", "&ecirc;", "<ecirc/>", "&#234;", "\\^{e}", "e\\*^", "\\'EA", { "e", DocSymbol::Perl_circ }},
+ { SYM(euml), "\xc3\xab", "&euml;", "<eumlaut/>", "&#235;", "\\\"{e}", "e\\*(4", "\\'EB", { "e", DocSymbol::Perl_umlaut }},
+ { SYM(igrave), "\xc3\xac", "&igrave;", "<igrave/>", "&#236;", "\\`{\\i}", "i\\*:", "\\'EC", { "i", DocSymbol::Perl_grave }},
+ { SYM(iacute), "\xc3\xad", "&iacute;", "<iacute/>", "&#237;", "\\'{\\i}", "i\\*(`", "\\'ED", { "i", DocSymbol::Perl_acute }},
+ { SYM(icirc), "\xc3\xae", "&icirc;", "<icirc/>", "&#238;", "\\^{\\i}", "i\\*^", "\\'EE", { "i", DocSymbol::Perl_circ }},
+ { SYM(iuml), "\xc3\xaf", "&iuml;", "<iumlaut/>", "&#239;", "\\\"{\\i}", "i\\*(4", "\\'EF", { "i", DocSymbol::Perl_umlaut }},
+ { SYM(eth), "\xc3\xb0", "&eth;", "<eth/>", "&#240;", "\\dh", NULL, "\\'F0", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(ntilde), "\xc3\xb1", "&ntilde;", "<ntilde/>", "&#241;", "\\~{n}", "n\\*~", "\\'F1", { "n", DocSymbol::Perl_tilde }},
+ { SYM(ograve), "\xc3\xb2", "&ograve;", "<ograve/>", "&#242;", "\\`{o}", "o\\*:", "\\'F2", { "o", DocSymbol::Perl_grave }},
+ { SYM(oacute), "\xc3\xb3", "&oacute;", "<oacute/>", "&#243;", "\\'{o}", "o\\*(`", "\\'F3", { "o", DocSymbol::Perl_acute }},
+ { SYM(ocirc), "\xc3\xb4", "&ocirc;", "<ocirc/>", "&#244;", "\\^{o}", "o\\*^", "\\'F4", { "o", DocSymbol::Perl_circ }},
+ { SYM(otilde), "\xc3\xb5", "&otilde;", "<otilde/>", "&#245;", "\\~{o}", "o\\*~", "\\'F5", { "o", DocSymbol::Perl_tilde }},
+ { SYM(ouml), "\xc3\xb6", "&ouml;", "<oumlaut/>", "&#246;", "\\\"{o}", "o\\*(4", "\\'F6", { "o", DocSymbol::Perl_umlaut }},
+ { SYM(divide), "\xc3\xb7", "&divide;", "<divide/>", "&#247;", "{$\\div$}", NULL, "\\'F7", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(oslash), "\xc3\xb8", "&oslash;", "<oslash/>", "&#248;", "{\\o}", "o\x08/", "\\'F8", { "o", DocSymbol::Perl_slash }},
+ { SYM(ugrave), "\xc3\xb9", "&ugrave;", "<ugrave/>", "&#249;", "\\`{u}", "u\\*:", "\\'F9", { "u", DocSymbol::Perl_grave }},
+ { SYM(uacute), "\xc3\xba", "&uacute;", "<uacute/>", "&#250;", "\\'{u}", "u\\*(`", "\\'FA", { "u", DocSymbol::Perl_acute }},
+ { SYM(ucirc), "\xc3\xbb", "&ucirc;", "<ucirc/>", "&#251;", "\\^{u}", "u\\*^", "\\'FB", { "u", DocSymbol::Perl_circ }},
+ { SYM(uuml), "\xc3\xbc", "&uuml;", "<uumlaut/>", "&#252;", "\\\"{u}", "u\\*(4", "\\'FC", { "u", DocSymbol::Perl_umlaut }},
+ { SYM(yacute), "\xc3\xbd", "&yacute;", "<yacute/>", "&#253;", "\\'{y}", "y\\*(`", "\\'FD", { "y", DocSymbol::Perl_acute }},
+ { SYM(thorn), "\xc3\xbe", "&thorn;", "<thorn/>", "&#254;", "\\th", NULL, "\\'FE", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(yuml), "\xc3\xbf", "&yuml;", "<yumlaut/>", "&#255;", "\\\"{y}", "y\\*(4", "\\'FF", { "y", DocSymbol::Perl_umlaut }},
+ { SYM(fnof), "\xc6\x92", "&fnof;", "<fnof/>", "&#402;", "\\textflorin", NULL, "\\'83", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(Alpha), "\xce\x91", "&Alpha;", "<Alpha/>", "&#913;", "A", NULL, "\\u0913?", { "A", DocSymbol::Perl_char }},
+ { SYM(Beta), "\xce\x92", "&Beta;", "<Beta/>", "&#914;", "B", NULL, "\\u0914?", { "B", DocSymbol::Perl_char }},
+ { SYM(Gamma), "\xce\x93", "&Gamma;", "<Gamma/>", "&#915;", "{$\\Gamma$}", NULL, "\\u0915?", { "Gamma", DocSymbol::Perl_symbol }},
+ { SYM(Delta), "\xce\x94", "&Delta;", "<Delta/>", "&#916;", "{$\\Delta$}", NULL, "\\u0916?", { "Delta", DocSymbol::Perl_symbol }},
+ { SYM(Epsilon), "\xce\x95", "&Epsilon;", "<Epsilon/>", "&#917;", "E", NULL, "\\u0917?", { "E", DocSymbol::Perl_char }},
+ { SYM(Zeta), "\xce\x96", "&Zeta;", "<Zeta/>", "&#918;", "Z", NULL, "\\u0918?", { "Z", DocSymbol::Perl_char }},
+ { SYM(Eta), "\xce\x97", "&Eta;", "<Eta/>", "&#919;", "H", NULL, "\\u0919?", { "H", DocSymbol::Perl_char }},
+ { SYM(Theta), "\xce\x98", "&Theta;", "<Theta/>", "&#920;", "{$\\Theta$}", NULL, "\\u0920?", { "Theta", DocSymbol::Perl_symbol }},
+ { SYM(Iota), "\xce\x99", "&Iota;", "<Iota/>", "&#921;", "I", NULL, "\\u0921?", { "I", DocSymbol::Perl_char }},
+ { SYM(Kappa), "\xce\x9a", "&Kappa;", "<Kappa/>", "&#922;", "K", NULL, "\\u0922?", { "K", DocSymbol::Perl_char }},
+ { SYM(Lambda), "\xce\x9b", "&Lambda;", "<Lambda/>", "&#923;", "{$\\Lambda$}", NULL, "\\u0923?", { "Lambda", DocSymbol::Perl_symbol }},
+ { SYM(Mu), "\xce\x9c", "&Mu;", "<Mu/>", "&#924;", "M", NULL, "\\u0924?", { "M", DocSymbol::Perl_char }},
+ { SYM(Nu), "\xce\x9d", "&Nu;", "<Nu/>", "&#925;", "N", NULL, "\\u0925?", { "N", DocSymbol::Perl_char }},
+ { SYM(Xi), "\xce\x9e", "&Xi;", "<Xi/>", "&#926;", "{$\\Xi$}", NULL, "\\u0926?", { "Xi", DocSymbol::Perl_symbol }},
+ { SYM(Omicron), "\xce\x9f", "&Omicron;", "<Omicron/>", "&#927;", "O", NULL, "\\u0927?", { "O", DocSymbol::Perl_char }},
+ { SYM(Pi), "\xce\xa0", "&Pi;", "<Pi/>", "&#928;", "{$\\Pi$}", NULL, "\\u0928?", { "Pi", DocSymbol::Perl_symbol }},
+ { SYM(Rho), "\xce\xa1", "&Rho;", "<Rho/>", "&#929;", "P", NULL, "\\u0929?", { "P", DocSymbol::Perl_char }},
+ { SYM(Sigma), "\xce\xa3", "&Sigma;", "<Sigma/>", "&#931;", "{$\\Sigma$}", NULL, "\\u0931?", { "Sigma", DocSymbol::Perl_symbol }},
+ { SYM(Tau), "\xce\xa4", "&Tau;", "<Tau/>", "&#932;", "T", NULL, "\\u0932?", { "T", DocSymbol::Perl_char }},
+ { SYM(Upsilon), "\xce\xa5", "&Upsilon;", "<Upsilon/>", "&#933;", "{$\\Upsilon$}", NULL, "\\u0933?", { "Upsilon", DocSymbol::Perl_symbol }},
+ { SYM(Phi), "\xce\xa6", "&Phi;", "<Phi/>", "&#934;", "{$\\Phi$}", NULL, "\\u0934?", { "Phi", DocSymbol::Perl_symbol }},
+ { SYM(Chi), "\xce\xa7", "&Chi;", "<Chi/>", "&#935;", "X", NULL, "\\u0935?", { "X", DocSymbol::Perl_char }},
+ { SYM(Psi), "\xce\xa8", "&Psi;", "<Psi/>", "&#936;", "{$\\Psi$}", NULL, "\\u0936?", { "Psi", DocSymbol::Perl_symbol }},
+ { SYM(Omega), "\xce\xa9", "&Omega;", "<Omega/>", "&#937;", "{$\\Omega$}", NULL, "\\u0937?", { "Omega", DocSymbol::Perl_symbol }},
+ { SYM(alpha), "\xce\xb1", "&alpha;", "<alpha/>", "&#945;", "{$\\alpha$}", NULL, "\\u0945?", { "alpha", DocSymbol::Perl_symbol }},
+ { SYM(beta), "\xce\xb2", "&beta;", "<beta/>", "&#946;", "{$\\beta$}", NULL, "\\u0946?", { "beta", DocSymbol::Perl_symbol }},
+ { SYM(gamma), "\xce\xb3", "&gamma;", "<gamma/>", "&#947;", "{$\\gamma$}", NULL, "\\u0947?", { "gamma", DocSymbol::Perl_symbol }},
+ { SYM(delta), "\xce\xb4", "&delta;", "<delta/>", "&#948;", "{$\\delta$}", NULL, "\\u0948?", { "delta", DocSymbol::Perl_symbol }},
+ { SYM(epsilon), "\xce\xb5", "&epsilon;", "<epsilon/>", "&#949;", "{$\\varepsilon$}", NULL, "\\u0949?", { "epsilon", DocSymbol::Perl_symbol }},
+ { SYM(zeta), "\xce\xb6", "&zeta;", "<zeta/>", "&#950;", "{$\\zeta$}", NULL, "\\u0950?", { "zeta", DocSymbol::Perl_symbol }},
+ { SYM(eta), "\xce\xb7", "&eta;", "<eta/>", "&#951;", "{$\\eta$}", NULL, "\\u0951?", { "eta", DocSymbol::Perl_symbol }},
+ { SYM(theta), "\xce\xb8", "&theta;", "<theta/>", "&#952;", "{$\\theta$}", NULL, "\\u0952?", { "theta", DocSymbol::Perl_symbol }},
+ { SYM(iota), "\xce\xb9", "&iota;", "<iota/>", "&#953;", "{$\\iota$}", NULL, "\\u0953?", { "iota", DocSymbol::Perl_symbol }},
+ { SYM(kappa), "\xce\xba", "&kappa;", "<kappa/>", "&#954;", "{$\\kappa$}", NULL, "\\u0954?", { "kappa", DocSymbol::Perl_symbol }},
+ { SYM(lambda), "\xce\xbb", "&lambda;", "<lambda/>", "&#955;", "{$\\lambda$}", NULL, "\\u0955?", { "lambda", DocSymbol::Perl_symbol }},
+ { SYM(mu), "\xce\xbc", "&mu;", "<mu/>", "&#956;", "{$\\mu$}", NULL, "\\u0956?", { "mu", DocSymbol::Perl_symbol }},
+ { SYM(nu), "\xce\xbd", "&nu;", "<nu/>", "&#957;", "{$\\nu$}", NULL, "\\u0957?", { "nu", DocSymbol::Perl_symbol }},
+ { SYM(xi), "\xce\xbe", "&xi;", "<xi/>", "&#958;", "{$\\xi$}", NULL, "\\u0958?", { "xi", DocSymbol::Perl_symbol }},
+ { SYM(omicron), "\xce\xbf", "&omicron;", "<omicron/>", "&#959;", "{$\\omicron$}", NULL, "\\u0959?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(pi), "\xcf\x80", "&pi;", "<pi/>", "&#960;", "{$\\pi$}", NULL, "\\u0960?", { "pi", DocSymbol::Perl_symbol }},
+ { SYM(rho), "\xcf\x81", "&rho;", "<rho/>", "&#961;", "{$\\rho$}", NULL, "\\u0961?", { "rho", DocSymbol::Perl_symbol }},
+ { SYM(sigmaf), "\xcf\x82", "&sigmaf;", "<sigmaf/>", "&#962;", "{$\\varsigma$}", NULL, "\\u0962?", { "sigma", DocSymbol::Perl_symbol }},
+ { SYM(sigma), "\xcf\x83", "&sigma;", "<sigma/>", "&#963;", "{$\\sigma$}", NULL, "\\u0963?", { "sigma", DocSymbol::Perl_symbol }},
+ { SYM(tau), "\xcf\x84", "&tau;", "<tau/>", "&#964;", "{$\\tau$}", NULL, "\\u0964?", { "tau", DocSymbol::Perl_symbol }},
+ { SYM(upsilon), "\xcf\x85", "&upsilon;", "<upsilon/>", "&#965;", "{$\\upsilon$}", NULL, "\\u0965?", { "upsilon", DocSymbol::Perl_symbol }},
+ { SYM(phi), "\xcf\x86", "&phi;", "<phi/>", "&#966;", "{$\\varphi$}", NULL, "\\u0966?", { "phi", DocSymbol::Perl_symbol }},
+ { SYM(chi), "\xcf\x87", "&chi;", "<chi/>", "&#967;", "{$\\chi$}", NULL, "\\u0967?", { "chi", DocSymbol::Perl_symbol }},
+ { SYM(psi), "\xcf\x88", "&psi;", "<psi/>", "&#968;", "{$\\psi$}", NULL, "\\u0968?", { "psi", DocSymbol::Perl_symbol }},
+ { SYM(omega), "\xcf\x89", "&omega;", "<omega/>", "&#969;", "{$\\omega$}", NULL, "\\u0969?", { "omega", DocSymbol::Perl_symbol }},
+ { SYM(thetasym), "\xcf\x91", "&thetasym;", "<thetasym/>", "&#977;", "{$\\vartheta$}", NULL, "\\u977?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(upsih), "\xcf\x92", "&upsih;", "<upsih/>", "&#978;", "{$\\Upsilon$}", NULL, "\\u978?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(piv), "\xcf\x96", "&piv;", "<piv/>", "&#982;", "{$\\varpi$}", NULL, "\\u982?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(bull), "\xe2\x80\xa2", "&bull;", "<bull/>", "&#8226;", "\\textbullet{}", NULL, "\\'95", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(hellip), "\xe2\x80\xa6", "&hellip;", "<hellip/>", "&#8230;", "{$\\cdots$}", NULL, "\\'85", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(prime), "\xe2\x80\xb2", "&prime;", "<prime/>", "&#8242;", "'", NULL, "\\u8242?", { "\\\'", DocSymbol::Perl_string }},
+ { SYM(Prime), "\xe2\x80\xb3", "&Prime;", "<Prime/>", "&#8243;", "''", NULL, "\\u8243?", { "\"", DocSymbol::Perl_char }},
+ { SYM(oline), "\xe2\x80\xbe", "&oline;", "<oline/>", "&#8254;", "{$\\overline{\\,}$}", NULL, "\\u8254?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(frasl), "\xe2\x81\x84", "&frasl;", "<frasl/>", "&#8260;", "/", NULL, "\\u8260?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(weierp), "\xe2\x84\x98", "&weierp;", "<weierp/>", "&#8472;", "{$\\wp$}", NULL, "\\u8472?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(image), "\xe2\x84\x91", "&image;", "<image/>", "&#8465;", "{$\\Im$}", NULL, "\\u8465?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(real), "\xe2\x84\x9c", "&real;", "<real/>", "&#8476;", "{$\\Re$}", NULL, "\\u8476?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(trade), "\xe2\x84\xa2", "&trade;", "<trademark/>", "&#8482;", "\\texttrademark{}", "(TM)", "\\'99", { "trademark", DocSymbol::Perl_symbol }},
+ { SYM(alefsym), "\xe2\x85\xb5", "&alefsym;", "<alefsym/>", "&#8501;", "{$\\aleph$}", NULL, "\\u8501?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(larr), "\xe2\x86\x90", "&larr;", "<larr/>", "&#8592;", "{$\\leftarrow$}", NULL, "\\u8592?", { "<-", DocSymbol::Perl_string }},
+ { SYM(uarr), "\xe2\x86\x91", "&uarr;", "<uarr/>", "&#8593;", "{$\\uparrow$}", NULL, "\\u8593?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(rarr), "\xe2\x86\x92", "&rarr;", "<rarr/>", "&#8594;", "{$\\rightarrow$}", NULL, "\\u8594?", { "->", DocSymbol::Perl_string }},
+ { SYM(darr), "\xe2\x86\x93", "&darr;", "<darr/>", "&#8595;", "{$\\downarrow$}", NULL, "\\u8595?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(harr), "\xe2\x86\x94", "&harr;", "<harr/>", "&#8596;", "{$\\leftrightarrow$}", NULL, "\\u8596?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(crarr), "\xe2\x86\xb5", "&crarr;", "<crarr/>", "&#8629;", "{$\\hookleftarrow$}", NULL, "\\u8629?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(lArr), "\xe2\x87\x90", "&lArr;", "<lArr/>", "&#8656;", "{$\\Leftarrow$}", NULL, "\\u8656?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(uArr), "\xe2\x87\x91", "&uArr;", "<uArr/>", "&#8657;", "{$\\Uparrow$}", NULL, "\\u8657?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(rArr), "\xe2\x87\x92", "&rArr;", "<rArr/>", "&#8658;", "{$\\Rightarrow$}", NULL, "\\u8658?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(dArr), "\xe2\x87\x93", "&dArr;", "<dArr/>", "&#8659;", "{$\\Downarrow$}", NULL, "\\u8659?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(hArr), "\xe2\x87\x94", "&hArr;", "<hArr/>", "&#8660;", "{$\\Leftrightarrow$}", NULL, "\\u8660?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(forall), "\xe2\x88\x80", "&forall;", "<forall/>", "&#8704;", "{$\\forall$}", NULL, "\\u8704?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(part), "\xe2\x88\x82", "&part;", "<part/>", "&#8706;", "{$\\partial$}", NULL, "\\u8706?", { "partial", DocSymbol::Perl_symbol }},
+ { SYM(exist), "\xe2\x88\x83", "&exist;", "<exist/>", "&#8707;", "{$\\exists$}", NULL, "\\u8707?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(empty), "\xe2\x88\x85", "&empty;", "<empty/>", "&#8709;", "{$\\emptyset$}", NULL, "\\u8709?", { "empty", DocSymbol::Perl_symbol }},
+ { SYM(nabla), "\xe2\x88\x87", "&nabla;", "<nabla/>", "&#8711;", "{$\\nabla$}", NULL, "\\u8711?", { "nabla", DocSymbol::Perl_symbol }},
+ { SYM(isin), "\xe2\x88\x88", "&isin;", "<isin/>", "&#8712;", "{$\\in$}", NULL, "\\u8712?", { "in", DocSymbol::Perl_symbol }},
+ { SYM(notin), "\xe2\x88\x89", "&notin;", "<notin/>", "&#8713;", "{$\\notin$}", NULL, "\\u8713?", { "notin", DocSymbol::Perl_symbol }},
+ { SYM(ni), "\xe2\x88\x8b", "&ni;", "<ni/>", "&#8715;", "{$\\ni$}", NULL, "\\u8715?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(prod), "\xe2\x88\x8f", "&prod;", "<prod/>", "&#8719;", "{$\\prod$}", NULL, "\\u8719?", { "prod", DocSymbol::Perl_symbol }},
+ { SYM(sum), "\xe2\x88\x91", "&sum;", "<sum/>", "&#8721;", "{$\\sum$}", NULL, "\\u8721?", { "sum", DocSymbol::Perl_symbol }},
+ { SYM(minus), "\xe2\x88\x92", "&minus;", "<minus/>", "&#8722;", "-", NULL, "\\u8722?", { "-", DocSymbol::Perl_char }},
+ { SYM(lowast), "\xe2\x88\x97", "&lowast;", "<lowast/>", "&#8727;", "{$\\ast$}", NULL, "\\u8727?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(radic), "\xe2\x88\x9a", "&radic;", "<radic/>", "&#8730;", "{$\\surd$}", NULL, "\\u8730?", { "sqrt", DocSymbol::Perl_symbol }},
+ { SYM(prop), "\xe2\x88\x9d", "&prop;", "<prop/>", "&#8733;", "{$\\propto$}", NULL, "\\u8733?", { "propto", DocSymbol::Perl_symbol }},
+ { SYM(infin), "\xe2\x88\x9e", "&infin;", "<infin/>", "&#8734;", "{$\\infty$}", NULL, "\\u8734?", { "inf", DocSymbol::Perl_symbol }},
+ { SYM(ang), "\xe2\x88\xa0", "&ang;", "<ang/>", "&#8736;", "{$\\angle$}", NULL, "\\u8736?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(and), "\xe2\x88\xa7", "&and;", "<and/>", "&#8743;", "{$\\wedge$}", NULL, "\\u8743?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(or), "\xe2\x88\xa8", "&or;", "<or/>", "&#8744;", "{$\\vee$}", NULL, "\\u8744?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(cap), "\xe2\x88\xa9", "&cap;", "<cap/>", "&#8745;", "{$\\cap$}", NULL, "\\u8745?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(cup), "\xe2\x88\xaa", "&cup;", "<cup/>", "&#8746;", "{$\\cup$}", NULL, "\\u8746?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(int), "\xe2\x88\xab", "&int;", "<int/>", "&#8747;", "{$\\int$}", NULL, "\\u8747?", { "int", DocSymbol::Perl_symbol }},
+ { SYM(there4), "\xe2\x88\xb4", "&there4;", "<there4/>", "&#8756;", "{$\\therefore$}", NULL, "\\u8756?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(sim), "\xe2\x88\xbc", "&sim;", "<sim/>", "&#8764;", "{$\\sim$}", NULL, "\\u8764?", { "~", DocSymbol::Perl_char }},
+ { SYM(cong), "\xe2\x89\x85", "&cong;", "<cong/>", "&#8773;", "{$\\cong$}", NULL, "\\u8773?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(asymp), "\xe2\x89\x88", "&asymp;", "<asymp/>", "&#8776;", "{$\\approx$}", NULL, "\\u8776?", { "approx", DocSymbol::Perl_symbol }},
+ { SYM(ne), "\xe2\x89\xa0", "&ne;", "<ne/>", "&#8800;", "{$\\ne$}", NULL, "\\u8800?", { "!=", DocSymbol::Perl_string }},
+ { SYM(equiv), "\xe2\x89\xa1", "&equiv;", "<equiv/>", "&#8801;", "{$\\equiv$}", NULL, "\\u8801?", { "equiv", DocSymbol::Perl_symbol }},
+ { SYM(le), "\xe2\x89\xa4", "&le;", "<le/>", "&#8804;", "{$\\le$}", NULL, "\\u8804?", { "<=", DocSymbol::Perl_string }},
+ { SYM(ge), "\xe2\x89\xa5", "&ge;", "<ge/>", "&#8805;", "{$\\ge$}", NULL, "\\u8805?", { ">=", DocSymbol::Perl_string }},
+ { SYM(sub), "\xe2\x8a\x82", "&sub;", "<sub/>", "&#8834;", "{$\\subset$}", NULL, "\\u8834?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(sup), "\xe2\x8a\x83", "&sup;", "<sup/>", "&#8835;", "{$\\supset$}", NULL, "\\u8835?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(nsub), "\xe2\x8a\x84", "&nsub;", "<nsub/>", "&#8836;", "{$\\not\\subset$}", NULL, "\\u8836?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(sube), "\xe2\x8a\x86", "&sube;", "<sube/>", "&#8838;", "{$\\subseteq$}", NULL, "\\u8838?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(supe), "\xe2\x8a\x87", "&supe;", "<supe/>", "&#8839;", "{$\\supseteq$}", NULL, "\\u8839?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(oplus), "\xe2\x8a\x95", "&oplus;", "<oplus/>", "&#8853;", "{$\\oplus$}", NULL, "\\u8853?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(otimes), "\xe2\x8a\x97", "&otimes;", "<otimes/>", "&#8855;", "{$\\otimes$}", NULL, "\\u8855?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(perp), "\xe2\x8a\xa5", "&perp;", "<perp/>", "&#8869;", "{$\\perp$}", NULL, "\\u8869?", { "perp", DocSymbol::Perl_symbol }},
+ { SYM(sdot), "\xe2\x8b\x85", "&sdot;", "<sdot/>", "&#8901;", "{$\\cdot$}", NULL, "\\u8901?", { ".", DocSymbol::Perl_char }},
+ { SYM(lceil), "\xe2\x8c\x88", "&lceil;", "<lceil/>", "&#8968;", "{$\\lceil$}", NULL, "\\u8968?", { "lceil", DocSymbol::Perl_symbol }},
+ { SYM(rceil), "\xe2\x8c\x89", "&rceil;", "<rceil/>", "&#8969;", "{$\\rceil$}", NULL, "\\u8969?", { "rceil", DocSymbol::Perl_symbol }},
+ { SYM(lfloor), "\xe2\x8c\x8a", "&lfloor;", "<lfloor/>", "&#8970;", "{$\\lfloor$}", NULL, "\\u8970?", { "lfloor", DocSymbol::Perl_symbol }},
+ { SYM(rfloor), "\xe2\x8c\x8b", "&rfloor;", "<rfloor/>", "&#8971;", "{$\\rfloor$}", NULL, "\\u8971?", { "rfloor", DocSymbol::Perl_symbol }},
+ { SYM(lang), "\xe2\x8c\xa9", "&lang;", "<lang/>", "&#9001;", "{$\\langle$}", NULL, "\\u9001?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(rang), "\xe2\x8c\xaa", "&rang;", "<rang/>", "&#9002;", "{$\\rangle$}", NULL, "\\u9002?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(loz), "\xe2\x97\x8a", "&loz;", "<loz/>", "&#9674;", "{$\\lozenge$}", NULL, "\\u9674?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(spades), "\xe2\x99\xa0", "&spades;", "<spades/>", "&#9824;", "{$\\spadesuit$}", NULL, "\\u9824?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(clubs), "\xe2\x99\xa3", "&clubs;", "<clubs/>", "&#9827;", "{$\\clubsuit$}", NULL, "\\u9827?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(hearts), "\xe2\x99\xa5", "&hearts;", "<hearts/>", "&#9829;", "{$\\heartsuit$}", NULL, "\\u9829?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(diams), "\xe2\x99\xa6", "&diams;", "<diams/>", "&#9830;", "{$\\diamondsuit$}", NULL, "\\u9830?", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(quot), "\"", "&quot;", "\"", "&quot;", "\"", "\"", "\"", { "\"", DocSymbol::Perl_char }},
+ { SYM(amp), "&", "&amp;", "&amp;", "&amp;", "\\&", "&", "&", { "&", DocSymbol::Perl_char }},
+ { SYM(lt), "<", "&lt;", "&lt;", "&lt;", "<", "<", "<", { "<", DocSymbol::Perl_char }},
+ { SYM(gt), ">", "&gt;", "&gt;", "&gt;", ">", ">", ">", { ">", DocSymbol::Perl_char }},
+ { SYM(OElig), "\xc5\x92", "&OElig;", "<OElig/>", "&#338;", "\\OE", NULL, "\\'8C", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(oelig), "\xc5\x93", "&oelig;", "<oelig/>", "&#339;", "\\oe", NULL, "\\'9C", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(Scaron), "\xc5\xa0", "&Scaron;", "<Scaron/>", "&#352;", "\\v{S}", NULL, "\\'8A", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(scaron), "\xc5\xa1", "&scaron;", "<scaron/>", "&#353;", "\\v{s}", NULL, "\\'9A", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(Yuml), "\xc5\xb8", "&Yuml;", "<Yumlaut/>", "&#376;", "\\\"{Y}", "Y\\*(4", "\\'9F", { "Y", DocSymbol::Perl_umlaut }},
+ { SYM(circ), "\xcb\x86", "&circ;", "<circ/>", "&#710;", "{$\\circ$}", NULL, "\\'88", { " ", DocSymbol::Perl_circ }},
+ { SYM(tilde), "\xcb\x9c", "&tilde;", "<tilde/>", "&#732;", "\\~{}", "~", "\\'98", { " ", DocSymbol::Perl_tilde }},
+ { SYM(ensp), "\xe2\x80\x82", "&ensp;", "<ensp/>", "&#8194;", "\\enskip{}", NULL, "{\\enspace}", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(emsp), "\xe2\x80\x83", "&emsp;", "<emsp/>", "&#8195;", "\\quad{}", NULL, "{\\emspace}", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(thinsp), "\xe2\x80\x89", "&thinsp;", "<thinsp/>", "&#8201;", "\\,", NULL, "{\\qmspace}", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(zwnj), "\xe2\x80\x8c", "&zwnj;", "<zwnj/>", "&#8204;", "{}", NULL, "\\zwnj", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(zwj), "\xe2\x80\x8d", "&zwj;", "<zwj/>", "&#8205;", "", NULL, "\\zwj", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(lrm), "\xe2\x80\x8e", "&lrm;", "<lrm/>", "&#8206;", "", NULL, "\\ltrmark", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(rlm), "\xe2\x80\x8f", "&rlm;", "<rlm/>", "&#8207;", "", NULL, "\\rtlmark", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(ndash), "\xe2\x80\x93", "&ndash;", "<ndash/>", "&#8211;", "--", "--", "\\'96", { "-", DocSymbol::Perl_char }},
+ { SYM(mdash), "\xe2\x80\x94", "&mdash;", "<mdash/>", "&#8212;", "---", "---", "\\'97", { "--", DocSymbol::Perl_string }},
+ { SYM(lsquo), "\xe2\x80\x98", "&lsquo;", "<lsquo/>", "&#8216;", "`", "`", "\\'91", { "\\\'", DocSymbol::Perl_string }},
+ { SYM(rsquo), "\xe2\x80\x99", "&rsquo;", "<rsquo/>", "&#8217;", "'", "'", "\\'92", { "\\\'", DocSymbol::Perl_string }},
+ { SYM(sbquo), "\xe2\x80\x9a", "&sbquo;", "<sbquo/>", "&#8218;", "\\quotesinglbase{}", NULL, "\\'82", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(ldquo), "\xe2\x80\x9c", "&ldquo;", "<ldquo/>", "&#8220;", "``", "``", "\\'93", { "\"", DocSymbol::Perl_char }},
+ { SYM(rdquo), "\xe2\x80\x9d", "&rdquo;", "<rdquo/>", "&#8221;", "''", "''", "\\'94", { "\"", DocSymbol::Perl_char }},
+ { SYM(bdquo), "\xe2\x80\x9e", "&bdquo;", "<bdquo/>", "&#8222;", "\\quotedblbase{}", NULL, "\\'84", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(dagger), "\xe2\x80\xa0", "&dagger;", "<dagger/>", "&#8224;", "{$\\dagger$}", NULL, "\\'86", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(Dagger), "\xe2\x80\xa1", "&Dagger;", "<Dagger/>", "&#8225;", "{$\\ddagger$}", NULL, "\\'87", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(permil), "\xe2\x80\xb0", "&permil;", "<permil/>", "&#8240;", "{$\\permil{}$}", NULL, "\\'89", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(lsaquo), "\xe2\x80\xb9", "&lsaquo;", "<lsaquo/>", "&#8249;", "\\guilsinglleft{}", NULL, "\\'8B", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(rsaquo), "\xe2\x80\xba", "&rsaquo;", "<rsaquo/>", "&#8250;", "\\guilsinglright{}", NULL, "\\'9B", { NULL, DocSymbol::Perl_unknown }},
+ { SYM(euro), "\xe2\x82\xac", "&euro;", "<euro/>", "&#8364;", "\\texteuro{}", NULL, "\\'80", { NULL, DocSymbol::Perl_unknown }},
+
+ // doxygen extension to the HTML4 table of HTML entities
+ { SYM(tm), "\xe2\x84\xa2", "&trade;", "<trademark/>", "&#8482;", "\\texttrademark{}", "(TM)", "\\'99", { "trademark", DocSymbol::Perl_symbol }},
+ { SYM(apos), "'", "'", "'", "&apos;", "'", "'", "'", { "\\\'", DocSymbol::Perl_string }},
+
+ // doxygen commands represented as HTML entities
+ { SYM(BSlash), "\\", "\\", "\\", "\\", "\\textbackslash{}", "\\\\", "\\\\", { "\\\\", DocSymbol::Perl_string }},
+ { SYM(At), "@", "@", "@", "@", "@", "@", "@", { "@", DocSymbol::Perl_char }},
+ { SYM(Less), "<", "&lt;", "&lt;", "&lt;", "<", "<", "<", { "<", DocSymbol::Perl_char }},
+ { SYM(Greater), ">", "&gt;", "&gt;", "&gt;", ">", ">", ">", { ">", DocSymbol::Perl_char }},
+ { SYM(Amp), "&", "&amp;", "&amp;", "&amp;", "\\&", "&", "&", { "&", DocSymbol::Perl_char }},
+ { SYM(Dollar), "$", "$", "$", "$", "\\$", "$", "$", { "$", DocSymbol::Perl_char }},
+ { SYM(Hash), "#;", "#", "#", "#", "\\#", "#", "#", { "#", DocSymbol::Perl_char }},
+ { SYM(DoubleColon), "::", "::", "::", "::", "::", "::", "::", { "::", DocSymbol::Perl_string }},
+ { SYM(Percent), "%", "%", "%", "%", "\\%", "%", "%", { "%", DocSymbol::Perl_char }},
+ { SYM(Pipe), "|", "|", "|", "|", "$|$", "|", "|", { "|", DocSymbol::Perl_char }},
+ { SYM(Quot), "\"", "\"", "\"", "&quot;", "\"", "\"", "\"", { "\"", DocSymbol::Perl_char }}
+};
+
+static const int g_numHtmlEntities = (int)(sizeof(g_htmlEntities)/ sizeof(*g_htmlEntities));
+
+HtmlEntityMapper *HtmlEntityMapper::s_instance = 0;
+
+HtmlEntityMapper::HtmlEntityMapper()
+{
+ m_name2sym = new QDict<int>(1009);
+ m_name2sym->setAutoDelete(TRUE);
+ for (int i = 0; i < g_numHtmlEntities; i++)
+ {
+ m_name2sym->insert(g_htmlEntities[i].item,new int(g_htmlEntities[i].symb));
+ }
+}
+
+HtmlEntityMapper::~HtmlEntityMapper()
+{
+ delete m_name2sym;
+}
+
+/** Returns the one and only instance of the HTML entity mapper */
+HtmlEntityMapper *HtmlEntityMapper::instance()
+{
+ if (s_instance==0)
+ {
+ s_instance = new HtmlEntityMapper;
+ }
+ return s_instance;
+}
+
+/** Deletes the one and only instance of the HTML entity mapper */
+void HtmlEntityMapper::deleteInstance()
+{
+ delete s_instance;
+ s_instance=0;
+}
+
+
+/*! @brief Access routine to the UTF8 code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @param useInPrintf If TRUE the result will be escaped such that it can be
+ * used in a printf string pattern
+ * @return the UTF8 code of the HTML entity,
+ * in case the UTF code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::utf8(DocSymbol::SymType symb,bool useInPrintf) const
+{
+ if (useInPrintf && symb==DocSymbol::Sym_Percent)
+ {
+ return "%%"; // escape for printf
+ }
+ else
+ {
+ return g_htmlEntities[symb].UTF8;
+ }
+}
+
+/*! @brief Access routine to the html code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @param useInPrintf If TRUE the result will be escaped such that it can be
+ * used in a printf string pattern
+ * @return the html representation of the HTML entity,
+ * in case the html code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::html(DocSymbol::SymType symb,bool useInPrintf) const
+{
+ if (useInPrintf && symb==DocSymbol::Sym_Percent)
+ {
+ return "%%"; // escape for printf
+ }
+ else
+ {
+ return g_htmlEntities[symb].html;
+ }
+}
+
+/*! @brief Access routine to the XML code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @return the XML code of the HTML entity,
+ * in case the XML code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::xml(DocSymbol::SymType symb) const
+{
+ return g_htmlEntities[symb].xml;
+}
+
+/*! @brief Access routine to the docbook code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @return the docbook code of the HTML entity,
+ * in case the docbook code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::docbook(DocSymbol::SymType symb) const
+{
+ return g_htmlEntities[symb].docbook;
+}
+
+/*! @brief Access routine to the LaTeX code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @return the LaTeX code of the HTML entity,
+ * in case the LaTeX code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::latex(DocSymbol::SymType symb) const
+{
+ return g_htmlEntities[symb].latex;
+}
+
+/*! @brief Access routine to the man code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @return the man of the HTML entity,
+ * in case the man code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::man(DocSymbol::SymType symb) const
+{
+ return g_htmlEntities[symb].man;
+}
+
+/*! @brief Access routine to the RTF code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @return the RTF of the HTML entity,
+ * in case the RTF code is unknown \c NULL is returned.
+ */
+const char *HtmlEntityMapper::rtf(DocSymbol::SymType symb) const
+{
+ return g_htmlEntities[symb].rtf;
+}
+
+/*! @brief Access routine to the perl struct with the perl code of the HTML entity
+ *
+ * @param symb Code of the requested HTML entity
+ * @return the pointer to perl struct with the perl code of the HTML entity,
+ * in case the perl code does not exists the NULL pointer is entered in the
+ * \c symb field and in the `DocSymbol::Perl_unknown` in the \c type field.
+ */
+const DocSymbol::PerlSymb *HtmlEntityMapper::perl(DocSymbol::SymType symb) const
+{
+ return &g_htmlEntities[symb].perl;
+}
+
+/*!
+ * @brief Give code of the requested HTML entity name
+ * @param symName HTML entity name without \c & and \c;
+ * @return the code for the requested HTML entity name,
+ * in case the requested HTML item does not exist `DocSymbol::Sym_unknown` is returned.
+ */
+DocSymbol::SymType HtmlEntityMapper::name2sym(const QCString &symName) const
+{
+ int *pSymb = m_name2sym->find(symName);
+ return pSymb ? ((DocSymbol::SymType)*pSymb) : DocSymbol::Sym_Unknown;
+}
+
+void HtmlEntityMapper::writeXMLSchema(FTextStream &t)
+{
+ for (int i=0;i<g_numHtmlEntities - g_numberHtmlMappedCmds;i++)
+ {
+ QCString bareName = g_htmlEntities[i].item;
+ bareName = bareName.mid(1,bareName.length()-2);
+ t << " <xsd:element name=\"" << bareName << "\" type=\"docEmptyType\" />\n";
+ }
+}
+
+/*! @brief Routine to check if the entries of the html_entities are numbered correctly
+ * @details in case of a mismatch a warning message is given.
+ */
+void HtmlEntityMapper::validate()
+{
+ for (int i = 0; i < g_numHtmlEntities; i++)
+ {
+ if (i != g_htmlEntities[i].symb)
+ {
+ warn_uncond("Internal inconsistency, htmlentries code %d (item=%s)\n",i,g_htmlEntities[i].item);
+ }
+ }
+}
diff --git a/src/htmlentity.h b/src/htmlentity.h
new file mode 100644
index 0000000..9cebeb3
--- /dev/null
+++ b/src/htmlentity.h
@@ -0,0 +1,47 @@
+/******************************************************************************
+ *
+ * Copyright (C) 1997-2014 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.
+ *
+ */
+#ifndef HTMLENTITY_H
+#define HTMLENTITY_H
+
+#include <qdict.h>
+#include "docparser.h"
+
+class FTextStream;
+
+/** @brief Singleton helper class to map html entities to other formats */
+class HtmlEntityMapper
+{
+ public:
+ static HtmlEntityMapper *instance();
+ static void deleteInstance();
+ DocSymbol::SymType name2sym(const QCString &symName) const;
+ const char *utf8(DocSymbol::SymType symb,bool useInPrintf=FALSE) const;
+ const char *html(DocSymbol::SymType symb,bool useInPrintf=FALSE) const;
+ const char *xml(DocSymbol::SymType symb) const;
+ const char *docbook(DocSymbol::SymType symb) const;
+ const char *latex(DocSymbol::SymType symb) const;
+ const char *man(DocSymbol::SymType symb) const;
+ const char *rtf(DocSymbol::SymType symb) const;
+ const DocSymbol::PerlSymb *perl(DocSymbol::SymType symb) const;
+ void writeXMLSchema(FTextStream &t);
+ void validate();
+ private:
+ HtmlEntityMapper();
+ ~HtmlEntityMapper();
+ static HtmlEntityMapper *s_instance;
+ QDict<int> *m_name2sym;
+};
+
+#endif
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 059d0e7..fa446ed 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 5d86878..7b63a6b 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 50aea83..754893d 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/htmlhelp.h b/src/htmlhelp.h
index 85e46e0..574cec9 100644
--- a/src/htmlhelp.h
+++ b/src/htmlhelp.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/image.cpp b/src/image.cpp
index 49485af..3283754 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/image.h b/src/image.h
index d2311a1..ad11a64 100644
--- a/src/image.h
+++ b/src/image.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/index.cpp b/src/index.cpp
index 88dbd73..a283b0c 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/index.h b/src/index.h
index ae15f16..6805655 100644
--- a/src/index.h
+++ b/src/index.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/language.cpp b/src/language.cpp
index c993323..c7a2b12 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/language.h b/src/language.h
index 9550cb9..4780ab3 100644
--- a/src/language.h
+++ b/src/language.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index bc8e5a5..aefcac3 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -31,6 +31,7 @@
#include "cite.h"
#include "filedef.h"
#include "config.h"
+#include "htmlentity.h"
static QCString escapeLabelName(const char *s)
{
@@ -135,135 +136,25 @@ void LatexDocVisitor::visit(DocWhiteSpace *w)
void LatexDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
- {
- case DocSymbol::BSlash: m_t << "\\textbackslash{}"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: if (m_insidePre) m_t << "<"; else m_t << "$<$";
- break;
- case DocSymbol::Greater: if (m_insidePre) m_t << ">"; else m_t << "$>$"; break;
- case DocSymbol::Amp: m_t << "\\&"; break;
- case DocSymbol::Dollar: m_t << "\\$"; break;
- case DocSymbol::Hash: m_t << "\\#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "\\%"; break;
- case DocSymbol::Pipe: m_t << "$|$"; break;
- case DocSymbol::Copy: m_t << "\\copyright{}"; break;
- case DocSymbol::Tm: m_t << "\\texttrademark{}"; break;
- case DocSymbol::Reg: m_t << "\\textregistered{}"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "`"; break;
- case DocSymbol::Rsquo: m_t << "'"; break;
- case DocSymbol::Ldquo: m_t << "``"; break;
- case DocSymbol::Rdquo: m_t << "''"; break;
- case DocSymbol::Ndash: m_t << "--"; break;
- case DocSymbol::Mdash: m_t << "---"; break;
- case DocSymbol::Uml:
- if (s->letter()=='i')
- m_t << "\\\"{\\i}";
- else
- m_t << "\\\"{" << s->letter() << "}";
- break;
- case DocSymbol::Acute:
- if (s->letter()=='i')
- m_t << "\\'{\\i}";
- else
- m_t << "\\'{" << s->letter() << "}";
- break;
- case DocSymbol::Grave:
- if (s->letter()=='i')
- m_t << "\\`{\\i}";
- else
- m_t << "\\`{" << s->letter() << "}";
- break;
- case DocSymbol::Circ:
- if (s->letter()=='i')
- m_t << "\\^{\\i}";
- else
- m_t << "\\^{" << s->letter() << "}";
- break;
- case DocSymbol::Slash: if (tolower(s->letter())=='o')
- m_t << "{\\" << s->letter() << "}";
- else
- m_t << s->letter();
- break;
- case DocSymbol::Tilde: m_t << "\\~{" << s->letter() << "}"; break;
- case DocSymbol::Szlig: m_t << "{\\ss}"; break;
- case DocSymbol::Cedil: m_t << "\\c{" << s->letter() << "}"; break;
- case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break;
- case DocSymbol::Nbsp: m_t << "~"; break;
- case DocSymbol::AElig: m_t << "{\\AE}"; break;
- case DocSymbol::Aelig: m_t << "{\\ae}"; break;
- case DocSymbol::GrkGamma: m_t << "{$\\Gamma$}"; break;
- case DocSymbol::GrkDelta: m_t << "{$\\Delta$}"; break;
- case DocSymbol::GrkTheta: m_t << "{$\\Theta$}"; break;
- case DocSymbol::GrkLambda: m_t << "{$\\Lambda$}"; break;
- case DocSymbol::GrkXi: m_t << "{$\\Xi$}"; break;
- case DocSymbol::GrkPi: m_t << "{$\\Pi$}"; break;
- case DocSymbol::GrkSigma: m_t << "{$\\Sigma$}"; break;
- case DocSymbol::GrkUpsilon: m_t << "{$\\Upsilon$}"; break;
- case DocSymbol::GrkPhi: m_t << "{$\\Phi$}"; break;
- case DocSymbol::GrkPsi: m_t << "{$\\Psi$}"; break;
- case DocSymbol::GrkOmega: m_t << "{$\\Omega$}"; break;
- case DocSymbol::Grkalpha: m_t << "{$\\alpha$}"; break;
- case DocSymbol::Grkbeta: m_t << "{$\\beta$}"; break;
- case DocSymbol::Grkgamma: m_t << "{$\\gamma$}"; break;
- case DocSymbol::Grkdelta: m_t << "{$\\delta$}"; break;
- case DocSymbol::Grkepsilon: m_t << "{$\\varepsilon$}"; break;
- case DocSymbol::Grkzeta: m_t << "{$\\zeta$}"; break;
- case DocSymbol::Grketa: m_t << "{$\\eta$}"; break;
- case DocSymbol::Grktheta: m_t << "{$\\theta$}"; break;
- case DocSymbol::Grkiota: m_t << "{$\\iota$}"; break;
- case DocSymbol::Grkkappa: m_t << "{$\\kappa$}"; break;
- case DocSymbol::Grklambda: m_t << "{$\\lambda$}"; break;
- case DocSymbol::Grkmu: m_t << "{$\\mu$}"; break;
- case DocSymbol::Grknu: m_t << "{$\\nu$}"; break;
- case DocSymbol::Grkxi: m_t << "{$\\xi$}"; break;
- case DocSymbol::Grkpi: m_t << "{$\\pi$}"; break;
- case DocSymbol::Grkrho: m_t << "{$\\rho$}"; break;
- case DocSymbol::Grksigma: m_t << "{$\\sigma$}"; break;
- case DocSymbol::Grktau: m_t << "{$\\tau$}"; break;
- case DocSymbol::Grkupsilon: m_t << "{$\\upsilon$}"; break;
- case DocSymbol::Grkphi: m_t << "{$\\varphi$}"; break;
- case DocSymbol::Grkchi: m_t << "{$\\chi$}"; break;
- case DocSymbol::Grkpsi: m_t << "{$\\psi$}"; break;
- case DocSymbol::Grkomega: m_t << "{$\\omega$}"; break;
- case DocSymbol::Grkvarsigma: m_t << "{$\\varsigma$}"; break;
- case DocSymbol::Section: m_t << "{$\\S$}"; break;
- case DocSymbol::Degree: m_t << "\\textdegree"; break;
- case DocSymbol::Prime: m_t << "'"; break;
- case DocSymbol::DoublePrime: m_t << "''"; break;
- case DocSymbol::Infinity: m_t << "{$\\infty$}"; break;
- case DocSymbol::EmptySet: m_t << "{$\\emptyset$}"; break;
- case DocSymbol::PlusMinus: m_t << "{$\\pm$}"; break;
- case DocSymbol::Times: m_t << "{$\\times$}"; break;
- case DocSymbol::Minus: m_t << "-"; break;
- case DocSymbol::CenterDot: m_t << "{$\\cdot$}"; break;
- case DocSymbol::Partial: m_t << "{$\\partial$}"; break;
- case DocSymbol::Nabla: m_t << "{$\\nabla$}"; break;
- case DocSymbol::SquareRoot: m_t << "{$\\surd$}"; break;
- case DocSymbol::Perpendicular: m_t << "{$\\perp$}"; break;
- case DocSymbol::Sum: m_t << "{$\\sum$}"; break;
- case DocSymbol::Integral: m_t << "{$\\int$}"; break;
- case DocSymbol::Product: m_t << "{$\\prod$}"; break;
- case DocSymbol::Similar: m_t << "{$\\sim$}"; break;
- case DocSymbol::Approx: m_t << "{$\\approx$}"; break;
- case DocSymbol::NotEqual: m_t << "{$\\ne$}"; break;
- case DocSymbol::Equivalent: m_t << "{$\\equiv$}"; break;
- case DocSymbol::Proportional: m_t << "{$\\propto$}"; break;
- case DocSymbol::LessEqual: m_t << "{$\\le$}"; break;
- case DocSymbol::GreaterEqual: m_t << "{$\\ge$}"; break;
- case DocSymbol::LeftArrow: m_t << "{$\\leftarrow$}"; break;
- case DocSymbol::RightArrow: m_t << "{$\\rightarrow$}"; break;
- case DocSymbol::SetIn: m_t << "{$\\in$}"; break;
- case DocSymbol::SetNotIn: m_t << "{$\\notin$}"; break;
- case DocSymbol::LeftCeil: m_t << "{$\\lceil$}"; break;
- case DocSymbol::RightCeil: m_t << "{$\\rceil$}"; break;
- case DocSymbol::LeftFloor: m_t << "{$\\lfloor$}"; break;
- case DocSymbol::RightFloor: m_t << "{$\\rfloor$}"; break;
- default:
- err("unknown symbol found\n");
+ const char *res = HtmlEntityMapper::instance()->latex(s->symbol());
+ if (res)
+ {
+ if (((s->symbol() == DocSymbol::Sym_lt) || (s->symbol() == DocSymbol::Sym_Less))&& (!m_insidePre))
+ {
+ m_t << "$<$";
+ }
+ else if (((s->symbol() == DocSymbol::Sym_gt) || (s->symbol() == DocSymbol::Sym_Greater)) && (!m_insidePre))
+ {
+ m_t << "$>$";
+ }
+ else
+ {
+ m_t << res;
+ }
+ }
+ else
+ {
+ err("LaTeX: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
diff --git a/src/latexdocvisitor.h b/src/latexdocvisitor.h
index 4073b7f..d386569 100644
--- a/src/latexdocvisitor.h
+++ b/src/latexdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 04750f5..1fa092d 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -293,7 +293,9 @@ static void writeDefaultHeaderPart1(FTextStream &t)
"\\usepackage{makeidx}\n"
"\\usepackage{multicol}\n"
"\\usepackage{multirow}\n"
+ "\\PassOptionsToPackage{warn}{textcomp}\n"
"\\usepackage{textcomp}\n"
+ "\\usepackage[nointegrals]{wasysym}\n"
"\\usepackage[table]{xcolor}\n"
"\n";
diff --git a/src/latexgen.h b/src/latexgen.h
index 8e29c01..f68612d 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/layout.cpp b/src/layout.cpp
index bc00745..739a2a3 100644
--- a/src/layout.cpp
+++ b/src/layout.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/layout.h b/src/layout.h
index 2506076..d50bc7c 100644
--- a/src/layout.h
+++ b/src/layout.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/libdoxycfg.pro.in b/src/libdoxycfg.pro.in
index a8f38c1..ab7c36c 100644
--- a/src/libdoxycfg.pro.in
+++ b/src/libdoxycfg.pro.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/src/libdoxycfg.t.in b/src/libdoxycfg.t.in
index 0afb9c6..89833f6 100644
--- a/src/libdoxycfg.t.in
+++ b/src/libdoxycfg.t.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in
index b441b96..457db58 100644
--- a/src/libdoxygen.pro.in
+++ b/src/libdoxygen.pro.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
@@ -59,6 +59,7 @@ HEADERS = arguments.h \
htmldocvisitor.h \
htmlgen.h \
htmlhelp.h \
+ htmlentity.h \
image.h \
index.h \
language.h \
@@ -152,6 +153,7 @@ SOURCES = arguments.cpp \
htmldocvisitor.cpp \
htmlgen.cpp \
htmlhelp.cpp \
+ htmlentity.cpp \
image.cpp \
index.cpp \
language.cpp \
diff --git a/src/libdoxygen.t.in b/src/libdoxygen.t.in
index 7dfc906..173f90b 100644
--- a/src/libdoxygen.t.in
+++ b/src/libdoxygen.t.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2013 by Dimitri van Heesch.
+# Copyright (C) 1997-2014 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
diff --git a/src/logos.cpp b/src/logos.cpp
index 6aea996..9a9e5db 100644
--- a/src/logos.cpp
+++ b/src/logos.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/logos.h b/src/logos.h
index 13406e1..083d772 100644
--- a/src/logos.h
+++ b/src/logos.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/main.cpp b/src/main.cpp
index 09798ec..b64f700 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 729f3d4..1f8f77e 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -29,6 +29,7 @@
#include "message.h"
#include "parserintf.h"
#include "filedef.h"
+#include "htmlentity.h"
ManDocVisitor::ManDocVisitor(FTextStream &t,CodeOutputInterface &ci,
const char *langExt)
@@ -75,42 +76,15 @@ void ManDocVisitor::visit(DocWhiteSpace *w)
void ManDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->man(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "<"; break;
- case DocSymbol::Greater: m_t << ">"; break;
- case DocSymbol::Amp: m_t << "&"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "(C)"; break;
- case DocSymbol::Tm: m_t << "(TM)"; break;
- case DocSymbol::Reg: m_t << "(R)"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "`"; break;
- case DocSymbol::Rsquo: m_t << "'"; break;
- case DocSymbol::Ldquo: m_t << "``"; break;
- case DocSymbol::Rdquo: m_t << "''"; break;
- case DocSymbol::Ndash: m_t << "--"; break;
- case DocSymbol::Mdash: m_t << "---"; break;
- case DocSymbol::Uml: m_t << s->letter() << "\\*(4"; break;
- case DocSymbol::Acute: m_t << s->letter() << "\\*(`"; break;
- case DocSymbol::Grave: m_t << s->letter() << "\\*:"; break;
- case DocSymbol::Circ: m_t << s->letter() << "\\*^"; break;
- case DocSymbol::Slash: m_t << s->letter(); break; /* todo: implement this */
- case DocSymbol::Tilde: m_t << s->letter() << "\\*~"; break;
- case DocSymbol::Szlig: m_t << "s\\*:"; break;
- case DocSymbol::Cedil: m_t << s->letter() << "\\*,"; break;
- case DocSymbol::Ring: m_t << s->letter() << "\\*o"; break;
- case DocSymbol::Nbsp: m_t << " "; break;
- default:
- // unsupport symbol for man page :-(
- break;
+ m_t << res;
+ }
+ else
+ {
+ // no error or warning to be supplied
+ // err("man: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
m_firstCol=FALSE;
}
diff --git a/src/mandocvisitor.h b/src/mandocvisitor.h
index 7012152..a5906d0 100644
--- a/src/mandocvisitor.h
+++ b/src/mandocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/mangen.cpp b/src/mangen.cpp
index f1cc76a..cf6795b 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/mangen.h b/src/mangen.h
index 7ac5ae1..98ef959 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/markdown.cpp b/src/markdown.cpp
index 6c7c349..6ae95fe 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -1725,7 +1725,7 @@ static int writeBlockQuote(GrowBuf &out,const char *data,int size)
{
// find end of this line
end=i+1;
- while (end<size && data[end-1]!='\n') end++;
+ while (end<=size && data[end-1]!='\n') end++;
int j=i;
int level=0;
int indent=i;
@@ -1781,7 +1781,7 @@ static int writeCodeBlock(GrowBuf &out,const char *data,int size,int refIndent)
{
// find end of this line
end=i+1;
- while (end<size && data[end-1]!='\n') end++;
+ while (end<=size && data[end-1]!='\n') end++;
int j=i;
int indent=0;
while (j<end && data[j]==' ') j++,indent++;
@@ -1828,7 +1828,7 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
// find end of the line
int nb=0;
end=i+1;
- while (end<size && data[end-1]!='\n')
+ while (end<=size && data[end-1]!='\n')
{
// while looking for the end of the line we might encounter a block
// that needs to be passed unprocessed.
@@ -1892,12 +1892,12 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
}
else if (nb==0 && data[end-1]=='`')
{
- while (end<size && data[end-1]=='`') end++,nb++;
+ while (end<=size && data[end-1]=='`') end++,nb++;
}
else if (nb>0 && data[end-1]=='`')
{
int enb=0;
- while (end<size && data[end-1]=='`') end++,enb++;
+ while (end<=size && data[end-1]=='`') end++,enb++;
if (enb==nb) nb=0;
}
else
@@ -1968,7 +1968,7 @@ static QCString processBlocks(const QCString &s,int indent)
// get indent for the first line
end = i+1;
int sp=0;
- while (end<size && data[end-1]!='\n')
+ while (end<=size && data[end-1]!='\n')
{
if (data[end-1]==' ') sp++;
end++;
diff --git a/src/markdown.h b/src/markdown.h
index d3a845e..8fd7677 100644
--- a/src/markdown.h
+++ b/src/markdown.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/marshal.h b/src/marshal.h
index 977a89b..0c61276 100644
--- a/src/marshal.h
+++ b/src/marshal.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 6b890c1..b0a6668 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/memberdef.h b/src/memberdef.h
index dffd53c..3259102 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index 055ddbf..84567e2 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/membergroup.h b/src/membergroup.h
index 1c744d3..42e60c5 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index e0851fe..28ed37e 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/memberlist.h b/src/memberlist.h
index aa20807..607eb01 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/membername.cpp b/src/membername.cpp
index 946ce43..a2f7296 100644
--- a/src/membername.cpp
+++ b/src/membername.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/membername.h b/src/membername.h
index 1b9dd47..7a2fdc5 100644
--- a/src/membername.h
+++ b/src/membername.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/message.cpp b/src/message.cpp
index dad3e0e..8e4ecbd 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/message.h b/src/message.h
index ca76a20..481e8bf 100644
--- a/src/message.h
+++ b/src/message.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/msc.cpp b/src/msc.cpp
index 3592e76..ebbba0f 100644
--- a/src/msc.cpp
+++ b/src/msc.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/msc.h b/src/msc.h
index 961f544..5d71ebd 100644
--- a/src/msc.h
+++ b/src/msc.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 146e8da..253b712 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -248,11 +248,17 @@ void NamespaceDef::computeAnchors()
if (allMemberList) setAnchors(allMemberList);
}
+bool NamespaceDef::hasDetailedDescription() const
+{
+ static bool repeatBrief = Config_getBool("REPEAT_BRIEF");
+ return ((!briefDescription().isEmpty() && repeatBrief) ||
+ !documentation().isEmpty());
+}
+
+
void NamespaceDef::writeDetailedDescription(OutputList &ol,const QCString &title)
{
- if ((!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
- !documentation().isEmpty()
- )
+ if (hasDetailedDescription())
{
ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
@@ -294,7 +300,7 @@ void NamespaceDef::writeDetailedDescription(OutputList &ol,const QCString &title
void NamespaceDef::writeBriefDescription(OutputList &ol)
{
- if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
+ if (hasBriefDescription())
{
DocRoot *rootNode = validatingParseDoc(briefFile(),briefLine(),this,0,
briefDescription(),TRUE,FALSE,0,TRUE,FALSE);
@@ -307,9 +313,7 @@ void NamespaceDef::writeBriefDescription(OutputList &ol)
ol.writeString(" \n");
ol.enable(OutputGenerator::RTF);
- if (Config_getBool("REPEAT_BRIEF") ||
- !documentation().isEmpty()
- )
+ if (hasDetailedDescription())
{
ol.disableAllBut(OutputGenerator::Html);
ol.startTextLink(0,"details");
diff --git a/src/namespacedef.h b/src/namespacedef.h
index c4afac9..fedd410 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -71,6 +71,7 @@ class NamespaceDef : public Definition
bool isLinkableInProject() const;
bool isLinkable() const;
+ bool hasDetailedDescription() const;
void addMembersToMemberGroup();
void distributeMemberGroupDocumentation();
void findSectionsInDocumentation();
diff --git a/src/objcache.cpp b/src/objcache.cpp
index 3a538a3..a59c67b 100644
--- a/src/objcache.cpp
+++ b/src/objcache.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/objcache.h b/src/objcache.h
index d93c1f6..6e6e95d 100644
--- a/src/objcache.h
+++ b/src/objcache.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index 89686e0..ee9bc48 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/outputgen.h b/src/outputgen.h
index 95c467d..aaf1ba7 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/outputlist.cpp b/src/outputlist.cpp
index 4efbd9c..59c3efb 100644
--- a/src/outputlist.cpp
+++ b/src/outputlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/outputlist.h b/src/outputlist.h
index fc41aae..f578d64 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index 3c9e1b6..e75327c 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pagedef.h b/src/pagedef.h
index 01823cb..890829e 100644
--- a/src/pagedef.h
+++ b/src/pagedef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/parserintf.h b/src/parserintf.h
index 5378588..c389597 100644
--- a/src/parserintf.h
+++ b/src/parserintf.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index 237cb8f..7fa0153 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 by Dimitri van Heesch.
* Authors: Dimitri van Heesch, Miguel Lobo.
*
* Permission to use, copy, modify, and distribute this software and its
@@ -41,6 +41,8 @@
#include "namespacedef.h"
#include "membergroup.h"
#include "section.h"
+#include "util.h"
+#include "htmlentity.h"
#define PERLOUTPUT_MAX_INDENTATION 40
@@ -540,140 +542,71 @@ void PerlModDocVisitor::visit(DocWhiteSpace *)
void PerlModDocVisitor::visit(DocSymbol *sy)
{
- char c = 0;
- const char *s = 0;
- const char *accent = 0;
- const char *symbol = 0;
- switch(sy->symbol())
+ const DocSymbol::PerlSymb *res = HtmlEntityMapper::instance()->perl(sy->symbol());
+ const char *accent=0;
+ if (res-> symb)
{
- case DocSymbol::At: c = '@'; break;
- case DocSymbol::Less: c = '<'; break;
- case DocSymbol::Greater: c = '>'; break;
- case DocSymbol::Amp: c = '&'; break;
- case DocSymbol::Dollar: c = '$'; break;
- case DocSymbol::Hash: c = '#'; break;
- case DocSymbol::DoubleColon: s = "::"; break;
- case DocSymbol::Percent: c = '%'; break;
- case DocSymbol::Pipe: c = '|'; break;
- case DocSymbol::Quot: c = '"'; break;
- case DocSymbol::Lsquo: s = "\\\'"; break;
- case DocSymbol::Rsquo: s = "\\\'"; break;
- case DocSymbol::Ldquo: c = '"'; break;
- case DocSymbol::Rdquo: c = '"'; break;
- case DocSymbol::Ndash: c = '-'; break;
- case DocSymbol::Mdash: s = "--"; break;
- case DocSymbol::Nbsp: c = ' '; break;
- case DocSymbol::Uml: accent = "umlaut"; break;
- case DocSymbol::Acute: accent = "acute"; break;
- case DocSymbol::Grave: accent = "grave"; break;
- case DocSymbol::Circ: accent = "circ"; break;
- case DocSymbol::Slash: accent = "slash"; break;
- case DocSymbol::Tilde: accent = "tilde"; break;
- case DocSymbol::Cedil: accent = "cedilla"; break;
- case DocSymbol::Ring: accent = "ring"; break;
- case DocSymbol::BSlash: s = "\\\\"; break;
- case DocSymbol::Copy: symbol = "copyright"; break;
- case DocSymbol::Tm: symbol = "trademark"; break;
- case DocSymbol::Reg: symbol = "registered"; break;
- case DocSymbol::Szlig: symbol = "szlig"; break;
- case DocSymbol::Apos: s = "\\\'"; break;
- case DocSymbol::Aelig: symbol = "aelig"; break;
- case DocSymbol::AElig: symbol = "AElig"; break;
- case DocSymbol::GrkGamma: symbol = "Gamma"; break;
- case DocSymbol::GrkDelta: symbol = "Delta"; break;
- case DocSymbol::GrkTheta: symbol = "Theta"; break;
- case DocSymbol::GrkLambda: symbol = "Lambda"; break;
- case DocSymbol::GrkXi: symbol = "Xi"; break;
- case DocSymbol::GrkPi: symbol = "Pi"; break;
- case DocSymbol::GrkSigma: symbol = "Sigma"; break;
- case DocSymbol::GrkUpsilon: symbol = "Upsilon"; break;
- case DocSymbol::GrkPhi: symbol = "Phi"; break;
- case DocSymbol::GrkPsi: symbol = "Psi"; break;
- case DocSymbol::GrkOmega: symbol = "Omega"; break;
- case DocSymbol::Grkalpha: symbol = "alpha"; break;
- case DocSymbol::Grkbeta: symbol = "beta"; break;
- case DocSymbol::Grkgamma: symbol = "gamma"; break;
- case DocSymbol::Grkdelta: symbol = "delta"; break;
- case DocSymbol::Grkepsilon: symbol = "epsilon"; break;
- case DocSymbol::Grkzeta: symbol = "zeta"; break;
- case DocSymbol::Grketa: symbol = "eta"; break;
- case DocSymbol::Grktheta: symbol = "theta"; break;
- case DocSymbol::Grkiota: symbol = "iota"; break;
- case DocSymbol::Grkkappa: symbol = "kappa"; break;
- case DocSymbol::Grklambda: symbol = "lambda"; break;
- case DocSymbol::Grkmu: symbol = "mu"; break;
- case DocSymbol::Grknu: symbol = "nu"; break;
- case DocSymbol::Grkxi: symbol = "xi"; break;
- case DocSymbol::Grkpi: symbol = "pi"; break;
- case DocSymbol::Grkrho: symbol = "rho"; break;
- case DocSymbol::Grksigma: symbol = "sigma"; break;
- case DocSymbol::Grktau: symbol = "tau"; break;
- case DocSymbol::Grkupsilon: symbol = "upsilon"; break;
- case DocSymbol::Grkphi: symbol = "phi"; break;
- case DocSymbol::Grkchi: symbol = "chi"; break;
- case DocSymbol::Grkpsi: symbol = "psi"; break;
- case DocSymbol::Grkomega: symbol = "omega"; break;
- case DocSymbol::Grkvarsigma: symbol = "sigma"; break;
- case DocSymbol::Section: symbol = "sect"; break;
- case DocSymbol::Degree: symbol = "deg"; break;
- case DocSymbol::Prime: s = "\\\'"; break;
- case DocSymbol::DoublePrime: c = '"'; break;
- case DocSymbol::Infinity: symbol = "inf"; break;
- case DocSymbol::EmptySet: symbol = "empty"; break;
- case DocSymbol::PlusMinus: s = "+/-"; break;
- case DocSymbol::Times: c = '*'; break;
- case DocSymbol::Minus: c = '-'; break;
- case DocSymbol::CenterDot: c = '.'; break;
- case DocSymbol::Partial: symbol = "partial"; break;
- case DocSymbol::Nabla: symbol = "nabla"; break;
- case DocSymbol::SquareRoot: symbol = "sqrt"; break;
- case DocSymbol::Perpendicular: symbol = "perp"; break;
- case DocSymbol::Sum: symbol = "sum"; break;
- case DocSymbol::Integral: symbol = "int"; break;
- case DocSymbol::Product: symbol = "prod"; break;
- case DocSymbol::Similar: c = '~'; break;
- case DocSymbol::Approx: symbol = "approx"; break;
- case DocSymbol::NotEqual: s = "!="; break;
- case DocSymbol::Equivalent: symbol = "equiv"; break;
- case DocSymbol::Proportional: symbol = "propto"; break;
- case DocSymbol::LessEqual: s = "<="; break;
- case DocSymbol::GreaterEqual: s = ">="; break;
- case DocSymbol::LeftArrow: s = "<-"; break;
- case DocSymbol::RightArrow: s = "->"; break;
- case DocSymbol::SetIn: symbol = "in"; break;
- case DocSymbol::SetNotIn: symbol = "notin"; break;
- case DocSymbol::LeftCeil: symbol = "lceil"; break;
- case DocSymbol::RightCeil: symbol = "rceil"; break;
- case DocSymbol::LeftFloor: symbol = "lfloor"; break;
- case DocSymbol::RightFloor: symbol = "rfloor"; break;
- case DocSymbol::Unknown: err("unknown symbol found\n");
- break;
- }
- if (c != 0)
- {
- enterText();
- m_output.add(c);
- }
- else if (s != 0)
- {
- enterText();
- m_output.add(s);
- }
- else if (symbol != 0)
- {
- leaveText();
- openItem("symbol");
- m_output.addFieldQuotedString("symbol", symbol);
- closeItem();
- }
- else if (accent != 0)
+ switch (res->type)
+ {
+ case DocSymbol::Perl_string:
+ enterText();
+ m_output.add(res->symb);
+ break;
+ case DocSymbol::Perl_char:
+ enterText();
+ m_output.add(res->symb[0]);
+ break;
+ case DocSymbol::Perl_symbol:
+ leaveText();
+ openItem("symbol");
+ m_output.addFieldQuotedString("symbol", res->symb);
+ closeItem();
+ break;
+ default:
+ switch(res->type)
+ {
+ case DocSymbol::Perl_umlaut:
+ accent = "umlaut";
+ break;
+ case DocSymbol::Perl_acute:
+ accent = "acute";
+ break;
+ case DocSymbol::Perl_grave:
+ accent = "grave";
+ break;
+ case DocSymbol::Perl_circ:
+ accent = "circ";
+ break;
+ case DocSymbol::Perl_slash:
+ accent = "slash";
+ break;
+ case DocSymbol::Perl_tilde:
+ accent = "tilde";
+ break;
+ case DocSymbol::Perl_cedilla:
+ accent = "cedilla";
+ break;
+ case DocSymbol::Perl_ring:
+ accent = "ring";
+ break;
+ default:
+ break;
+ }
+ leaveText();
+ if (accent)
+ {
+ openItem("accent");
+ m_output
+ .addFieldQuotedString("accent", accent)
+ .addFieldQuotedChar("letter", res->symb[0]);
+ closeItem();
+ }
+ break;
+ }
+ }
+ else
{
- leaveText();
- openItem("accent");
- m_output
- .addFieldQuotedString("accent", accent)
- .addFieldQuotedChar("letter", sy->letter());
- closeItem();
+ err("perl: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(sy->symbol(),TRUE));
}
}
diff --git a/src/perlmodgen.h b/src/perlmodgen.h
index 7f593b2..f908959 100644
--- a/src/perlmodgen.h
+++ b/src/perlmodgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pre.h b/src/pre.h
index 7deb23c..b624be5 100644
--- a/src/pre.h
+++ b/src/pre.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pre.l b/src/pre.l
index 775d448..6d818f3 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 37929fc..ee4104e 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -21,6 +21,7 @@
#include <qglobal.h>
#include "docvisitor.h"
+#include "htmlentity.h"
/*! Concrete visitor implementation for pretty printing */
class PrintDocVisitor : public DocVisitor
@@ -56,106 +57,14 @@ class PrintDocVisitor : public DocVisitor
void visit(DocSymbol *s)
{
indent_leaf();
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->utf8(s->symbol(),TRUE);
+ if (res)
{
- case DocSymbol::BSlash: printf("\\"); break;
- case DocSymbol::At: printf("@"); break;
- case DocSymbol::Less: printf("<"); break;
- case DocSymbol::Greater: printf(">"); break;
- case DocSymbol::Amp: printf("&"); break;
- case DocSymbol::Dollar: printf("$"); break;
- case DocSymbol::Hash: printf("#"); break;
- case DocSymbol::Percent: printf("%%"); break;
- case DocSymbol::Pipe: printf("|"); break;
- case DocSymbol::Copy: printf("&copy;"); break;
- case DocSymbol::Apos: printf("'"); break;
- case DocSymbol::Quot: printf("\""); break;
- case DocSymbol::Lsquo: printf("&lsquo;"); break;
- case DocSymbol::Rsquo: printf("&rsquo;"); break;
- case DocSymbol::Ldquo: printf("&ldquo;"); break;
- case DocSymbol::Rdquo: printf("&rdquo;"); break;
- case DocSymbol::Ndash: printf("&ndash;"); break;
- case DocSymbol::Mdash: printf("&mdash;"); break;
- case DocSymbol::Uml: printf("&%cuml;",s->letter()); break;
- case DocSymbol::Acute: printf("&%cacute;",s->letter()); break;
- case DocSymbol::Grave: printf("&%cgrave;",s->letter()); break;
- case DocSymbol::Circ: printf("&%ccirc;",s->letter()); break;
- case DocSymbol::Tilde: printf("&%ctilde;",s->letter()); break;
- case DocSymbol::Szlig: printf("&szlig;"); break;
- case DocSymbol::Cedil: printf("&%ccedul;",s->letter()); break;
- case DocSymbol::Ring: printf("&%cring;",s->letter()); break;
- case DocSymbol::Nbsp: printf("&nbsp;"); break;
- case DocSymbol::Aelig: printf("&aelig;"); break;
- case DocSymbol::AElig: printf("&AElig;"); break;
- case DocSymbol::GrkGamma: printf("&Gamma;"); break;
- case DocSymbol::GrkDelta: printf("&Delta;"); break;
- case DocSymbol::GrkTheta: printf("&Theta;"); break;
- case DocSymbol::GrkLambda: printf("&Lambda;"); break;
- case DocSymbol::GrkXi: printf("&Xi;"); break;
- case DocSymbol::GrkPi: printf("&Pi;"); break;
- case DocSymbol::GrkSigma: printf("&Sigma;"); break;
- case DocSymbol::GrkUpsilon: printf("&Upsilon;"); break;
- case DocSymbol::GrkPhi: printf("&Phi;"); break;
- case DocSymbol::GrkPsi: printf("&Psi;"); break;
- case DocSymbol::GrkOmega: printf("&Omega;"); break;
- case DocSymbol::Grkalpha: printf("&alpha;"); break;
- case DocSymbol::Grkbeta: printf("&beta;"); break;
- case DocSymbol::Grkgamma: printf("&gamma;"); break;
- case DocSymbol::Grkdelta: printf("&delta;"); break;
- case DocSymbol::Grkepsilon: printf("&epsilon;"); break;
- case DocSymbol::Grkzeta: printf("&zeta;"); break;
- case DocSymbol::Grketa: printf("&eta;"); break;
- case DocSymbol::Grktheta: printf("&theta;"); break;
- case DocSymbol::Grkiota: printf("&iota;"); break;
- case DocSymbol::Grkkappa: printf("&kappa;"); break;
- case DocSymbol::Grklambda: printf("&lambda;"); break;
- case DocSymbol::Grkmu: printf("&mu;"); break;
- case DocSymbol::Grknu: printf("&nu;"); break;
- case DocSymbol::Grkxi: printf("&xi;"); break;
- case DocSymbol::Grkpi: printf("&pi;"); break;
- case DocSymbol::Grkrho: printf("&rho;"); break;
- case DocSymbol::Grksigma: printf("&sigma;"); break;
- case DocSymbol::Grktau: printf("&tau;"); break;
- case DocSymbol::Grkupsilon: printf("&upsilon;"); break;
- case DocSymbol::Grkphi: printf("&phi;"); break;
- case DocSymbol::Grkchi: printf("&chi;"); break;
- case DocSymbol::Grkpsi: printf("&psi;"); break;
- case DocSymbol::Grkomega: printf("&omega;"); break;
- case DocSymbol::Grkvarsigma: printf("&sigmaf;"); break;
- case DocSymbol::Section: printf("&sect;"); break;
- case DocSymbol::Degree: printf("&deg;"); break;
- case DocSymbol::Prime: printf("&prime;"); break;
- case DocSymbol::DoublePrime: printf("&Prime;"); break;
- case DocSymbol::Infinity: printf("&infin;"); break;
- case DocSymbol::EmptySet: printf("&empty;"); break;
- case DocSymbol::PlusMinus: printf("&plusmn;"); break;
- case DocSymbol::Times: printf("&times;"); break;
- case DocSymbol::Minus: printf("&minus;"); break;
- case DocSymbol::CenterDot: printf("&sdot;"); break;
- case DocSymbol::Partial: printf("&part;"); break;
- case DocSymbol::Nabla: printf("&nabla;"); break;
- case DocSymbol::SquareRoot: printf("&radic;"); break;
- case DocSymbol::Perpendicular: printf("&perp;"); break;
- case DocSymbol::Sum: printf("&sum;"); break;
- case DocSymbol::Integral: printf("&int;"); break;
- case DocSymbol::Product: printf("&prod;"); break;
- case DocSymbol::Similar: printf("&sim;"); break;
- case DocSymbol::Approx: printf("&asymp;"); break;
- case DocSymbol::NotEqual: printf("&ne;"); break;
- case DocSymbol::Equivalent: printf("&equiv;"); break;
- case DocSymbol::Proportional: printf("&prop;"); break;
- case DocSymbol::LessEqual: printf("&le;"); break;
- case DocSymbol::GreaterEqual: printf("&ge;"); break;
- case DocSymbol::LeftArrow: printf("&larr;"); break;
- case DocSymbol::RightArrow: printf("&rarr;"); break;
- case DocSymbol::SetIn: printf("&isin;"); break;
- case DocSymbol::SetNotIn: printf("&notin;"); break;
- case DocSymbol::LeftCeil: printf("&lceil;"); break;
- case DocSymbol::RightCeil: printf("&rceil;"); break;
- case DocSymbol::LeftFloor: printf("&lfloor;"); break;
- case DocSymbol::RightFloor: printf("&rfloor;"); break;
- default:
- printf("unknown symbol found\n");
+ printf("%s",res);
+ }
+ else
+ {
+ printf("print: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
void visit(DocURL *u)
diff --git a/src/pycode.h b/src/pycode.h
index 6382975..9b0dacb 100644
--- a/src/pycode.h
+++ b/src/pycode.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pycode.l b/src/pycode.l
index 8512711..585b587 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pyscanner.h b/src/pyscanner.h
index 4b99706..e4e974f 100644
--- a/src/pyscanner.h
+++ b/src/pyscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/pyscanner.l b/src/pyscanner.l
index 671d330..d239d49 100644
--- a/src/pyscanner.l
+++ b/src/pyscanner.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/qtbc.h b/src/qtbc.h
index ab49733..c9ff3ca 100644
--- a/src/qtbc.h
+++ b/src/qtbc.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/reflist.cpp b/src/reflist.cpp
index 70bd9ba..ee6ac91 100644
--- a/src/reflist.cpp
+++ b/src/reflist.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/reflist.h b/src/reflist.h
index 2fb25cf..97b1420 100644
--- a/src/reflist.h
+++ b/src/reflist.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index 7c2fef8..05c8247 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -32,6 +32,7 @@
#include "dia.h"
#include "filedef.h"
#include "config.h"
+#include "htmlentity.h"
//#define DBG_RTF(x) m_t << x
#define DBG_RTF(x) do {} while(0)
@@ -121,198 +122,14 @@ void RTFDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visit(DocSymbol)}\n");
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->rtf(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "<"; break;
- case DocSymbol::Greater: m_t << ">"; break;
- case DocSymbol::Amp: m_t << "&"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "(C)"; break;
- case DocSymbol::Tm: m_t << "(TM)"; break;
- case DocSymbol::Reg: m_t << "(R)"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "`"; break;
- case DocSymbol::Rsquo: m_t << "'"; break;
- case DocSymbol::Ldquo: m_t << "\""; break;
- case DocSymbol::Rdquo: m_t << "\""; break;
- case DocSymbol::Ndash: m_t << "-"; break;
- case DocSymbol::Mdash: m_t << "--"; break;
- case DocSymbol::Uml: switch(s->letter())
- {
- case 'A' : m_t << '\304'; break;
- case 'E' : m_t << '\313'; break;
- case 'I' : m_t << '\317'; break;
- case 'O' : m_t << '\326'; break;
- case 'U' : m_t << '\334'; break;
- case 'Y' : m_t << 'Y'; break;
- case 'a' : m_t << '\344'; break;
- case 'e' : m_t << '\353'; break;
- case 'i' : m_t << '\357'; break;
- case 'o' : m_t << '\366'; break;
- case 'u' : m_t << '\374'; break;
- case 'y' : m_t << '\377'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Acute: switch(s->letter())
- {
- case 'A' : m_t << '\301'; break;
- case 'E' : m_t << '\311'; break;
- case 'I' : m_t << '\315'; break;
- case 'O' : m_t << '\323'; break;
- case 'U' : m_t << '\332'; break;
- case 'Y' : m_t << '\335'; break;
- case 'a' : m_t << '\341'; break;
- case 'e' : m_t << '\351'; break;
- case 'i' : m_t << '\355'; break;
- case 'o' : m_t << '\363'; break;
- case 'u' : m_t << '\372'; break;
- case 'y' : m_t << '\375'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Grave: switch(s->letter())
- {
- case 'A' : m_t << '\300'; break;
- case 'E' : m_t << '\310'; break;
- case 'I' : m_t << '\314'; break;
- case 'O' : m_t << '\322'; break;
- case 'U' : m_t << '\331'; break;
- case 'a' : m_t << '\340'; break;
- case 'e' : m_t << '\350'; break;
- case 'i' : m_t << '\354'; break;
- case 'o' : m_t << '\362'; break;
- case 'u' : m_t << '\371'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Circ: switch(s->letter())
- {
- case 'A' : m_t << '\302'; break;
- case 'E' : m_t << '\312'; break;
- case 'I' : m_t << '\316'; break;
- case 'O' : m_t << '\324'; break;
- case 'U' : m_t << '\333'; break;
- case 'a' : m_t << '\342'; break;
- case 'e' : m_t << '\352'; break;
- case 'i' : m_t << '\356'; break;
- case 'o' : m_t << '\364'; break;
- case 'u' : m_t << '\373'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Tilde: switch(s->letter())
- {
- case 'A' : m_t << '\303'; break;
- case 'N' : m_t << '\321'; break;
- case 'O' : m_t << '\325'; break;
- case 'a' : m_t << '\343'; break;
- case 'n' : m_t << '\361'; break;
- case 'o' : m_t << '\365'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Cedil: switch(s->letter())
- {
- case 'C' : m_t << '\307'; break;
- case 'c' : m_t << '\347'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Slash: switch(s->letter())
- {
- case 'O' : m_t << '\330'; break;
- case 'o' : m_t << '\370'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Ring: switch(s->letter())
- {
- case 'A' : m_t << '\305'; break;
- case 'a' : m_t << '\345'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Szlig: m_t << "\337"; break;
- case DocSymbol::Nbsp: m_t << "\\~ "; break;
- case DocSymbol::Aelig: m_t << "\346"; break;
- case DocSymbol::AElig: m_t << "\306"; break;
- case DocSymbol::GrkGamma: m_t << "Gamma "; break;
- case DocSymbol::GrkDelta: m_t << "Delta "; break;
- case DocSymbol::GrkTheta: m_t << "Theta "; break;
- case DocSymbol::GrkLambda: m_t << "Lambda "; break;
- case DocSymbol::GrkXi: m_t << "Xi "; break;
- case DocSymbol::GrkPi: m_t << "Pi "; break;
- case DocSymbol::GrkSigma: m_t << "Sigma "; break;
- case DocSymbol::GrkUpsilon: m_t << "Upsilon "; break;
- case DocSymbol::GrkPhi: m_t << "Phi "; break;
- case DocSymbol::GrkPsi: m_t << "Psi "; break;
- case DocSymbol::GrkOmega: m_t << "Omega "; break;
- case DocSymbol::Grkalpha: m_t << "alpha "; break;
- case DocSymbol::Grkbeta: m_t << "beta "; break;
- case DocSymbol::Grkgamma: m_t << "gamma "; break;
- case DocSymbol::Grkdelta: m_t << "delta "; break;
- case DocSymbol::Grkepsilon: m_t << "epsilon "; break;
- case DocSymbol::Grkzeta: m_t << "zeta "; break;
- case DocSymbol::Grketa: m_t << "eta "; break;
- case DocSymbol::Grktheta: m_t << "theta "; break;
- case DocSymbol::Grkiota: m_t << "iota "; break;
- case DocSymbol::Grkkappa: m_t << "kappa "; break;
- case DocSymbol::Grklambda: m_t << "lambda "; break;
- case DocSymbol::Grkmu: m_t << "mu "; break;
- case DocSymbol::Grknu: m_t << "nu "; break;
- case DocSymbol::Grkxi: m_t << "xi "; break;
- case DocSymbol::Grkpi: m_t << "pi "; break;
- case DocSymbol::Grkrho: m_t << "rho "; break;
- case DocSymbol::Grksigma: m_t << "sigma "; break;
- case DocSymbol::Grktau: m_t << "tau "; break;
- case DocSymbol::Grkupsilon: m_t << "upsilon "; break;
- case DocSymbol::Grkphi: m_t << "phi "; break;
- case DocSymbol::Grkchi: m_t << "chi "; break;
- case DocSymbol::Grkpsi: m_t << "psi "; break;
- case DocSymbol::Grkomega: m_t << "omega "; break;
- case DocSymbol::Grkvarsigma: m_t << "sigma "; break;
- case DocSymbol::Section: m_t << "\247"; break;
- case DocSymbol::Degree: m_t << "\260"; break;
- case DocSymbol::Prime: m_t << "'"; break;
- case DocSymbol::DoublePrime: m_t << "\""; break;
- case DocSymbol::Infinity: m_t << "inf "; break;
- case DocSymbol::EmptySet: m_t << "empty "; break;
- case DocSymbol::PlusMinus: m_t << "\261"; break;
- case DocSymbol::Times: m_t << "\327"; break;
- case DocSymbol::Minus: m_t << "-"; break;
- case DocSymbol::CenterDot: m_t << "."; break;
- case DocSymbol::Partial: m_t << "partial "; break;
- case DocSymbol::Nabla: m_t << "nabla "; break;
- case DocSymbol::SquareRoot: m_t << "sqrt "; break;
- case DocSymbol::Perpendicular: m_t << "perp "; break;
- case DocSymbol::Sum: m_t << "sum "; break;
- case DocSymbol::Integral: m_t << "int "; break;
- case DocSymbol::Product: m_t << "prod "; break;
- case DocSymbol::Similar: m_t << "~"; break;
- case DocSymbol::Approx: m_t << "approx "; break;
- case DocSymbol::NotEqual: m_t << "!="; break;
- case DocSymbol::Equivalent: m_t << "equiv "; break;
- case DocSymbol::Proportional: m_t << "propto "; break;
- case DocSymbol::LessEqual: m_t << "<="; break;
- case DocSymbol::GreaterEqual: m_t << ">="; break;
- case DocSymbol::LeftArrow: m_t << "<-"; break;
- case DocSymbol::RightArrow: m_t << "->"; break;
- case DocSymbol::SetIn: m_t << "in "; break;
- case DocSymbol::SetNotIn: m_t << "notin "; break;
- case DocSymbol::LeftCeil: m_t << "lceil "; break;
- case DocSymbol::RightCeil: m_t << "rceil "; break;
- case DocSymbol::LeftFloor: m_t << "lfloor "; break;
- case DocSymbol::RightFloor: m_t << "rfloor "; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("RTF: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
m_lastIsPara=FALSE;
}
diff --git a/src/rtfdocvisitor.h b/src/rtfdocvisitor.h
index 9572b73..efc9d21 100644
--- a/src/rtfdocvisitor.h
+++ b/src/rtfdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 14110cb..8699c4e 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2014 by Parker Waechter & Dimitri van Heesch.
*
* Style sheet additions by Alexander Bartolich
*
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 6206311..7b31673 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2014 by Parker Waechter & 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
diff --git a/src/rtfstyle.cpp b/src/rtfstyle.cpp
index 2bede42..f44951a 100644
--- a/src/rtfstyle.cpp
+++ b/src/rtfstyle.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/rtfstyle.h b/src/rtfstyle.h
index 52488f1..4f0a03f 100644
--- a/src/rtfstyle.h
+++ b/src/rtfstyle.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/scanner.h b/src/scanner.h
index 767fea0..8c8c3d9 100644
--- a/src/scanner.h
+++ b/src/scanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/scanner.l b/src/scanner.l
index 9f163e2..dd72ee1 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index 9c37ea2..7aa8216 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/searchindex.h b/src/searchindex.h
index 2ce80e8..872c0d3 100644
--- a/src/searchindex.h
+++ b/src/searchindex.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/section.h b/src/section.h
index 486656d..431c63b 100644
--- a/src/section.h
+++ b/src/section.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/sortdict.h b/src/sortdict.h
index fe51e24..f79a335 100644
--- a/src/sortdict.h
+++ b/src/sortdict.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp
index d4904cc..6f701e2 100644
--- a/src/sqlite3gen.cpp
+++ b/src/sqlite3gen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/sqlite3gen.h b/src/sqlite3gen.h
index 689f1da..59664dd 100644
--- a/src/sqlite3gen.h
+++ b/src/sqlite3gen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/store.cpp b/src/store.cpp
index 7e5118a..8916015 100644
--- a/src/store.cpp
+++ b/src/store.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/store.h b/src/store.h
index d075dc0..597ea63 100644
--- a/src/store.h
+++ b/src/store.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/tagreader.cpp b/src/tagreader.cpp
index cbdf996..467781a 100644
--- a/src/tagreader.cpp
+++ b/src/tagreader.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/tagreader.h b/src/tagreader.h
index 73619db..1b5f7e3 100644
--- a/src/tagreader.h
+++ b/src/tagreader.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/tclscanner.h b/src/tclscanner.h
index 02627b4..baa8e84 100644
--- a/src/tclscanner.h
+++ b/src/tclscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 by Dimitri van Heesch.
* Copyright (C) 2010-2011 by Rene Zaumseil
*
* Permission to use, copy, modify, and distribute this software and its
diff --git a/src/template.cpp b/src/template.cpp
index ea3c673..da4ff6a 100644
--- a/src/template.cpp
+++ b/src/template.cpp
@@ -504,6 +504,8 @@ class Operator
not
in
==, !=, <, >, <=, >=
+ +, -
+ *, /, %
|
:
,
@@ -511,7 +513,9 @@ class Operator
enum Type
{
Or, And, Not, In, Equal, NotEqual, Less, Greater, LessEqual,
- GreaterEqual, Filter, Colon, Comma, Last
+ GreaterEqual, Plus, Minus, Multiply, Divide, Modulo, Filter, Colon, Comma,
+ LeftParen, RightParen,
+ Last
};
static const char *toString(Type op)
@@ -528,9 +532,16 @@ class Operator
case Greater: return ">";
case LessEqual: return "<=";
case GreaterEqual: return ">=";
+ case Plus: return "+";
+ case Minus: return "-";
+ case Multiply: return "*";
+ case Divide: return "/";
+ case Modulo: return "%";
case Filter: return "|";
case Colon: return ":";
case Comma: return ",";
+ case LeftParen: return "(";
+ case RightParen: return ")";
case Last: return "?";
}
return "?";
@@ -890,7 +901,7 @@ class ExprAstFunctionVariable : public ExprAst
public:
ExprAstFunctionVariable(ExprAst *var,const QList<ExprAst> &args)
: m_var(var), m_args(args)
- { TRACE(("ExprAstFunctionVariable(%s)\n",var->name().data()));
+ { TRACE(("ExprAstFunctionVariable()\n"));
m_args.setAutoDelete(TRUE);
}
virtual TemplateVariant resolve(TemplateContext *c)
@@ -982,6 +993,28 @@ class ExprAstNegate : public ExprAst
ExprAst *m_expr;
};
+class ExprAstUnary : public ExprAst
+{
+ public:
+ ExprAstUnary(Operator::Type op,ExprAst *exp) : m_operator(op), m_exp(exp)
+ { TRACE(("ExprAstUnary %s\n",Operator::toString(op))); }
+ ~ExprAstUnary() { delete m_exp; }
+ virtual TemplateVariant resolve(TemplateContext *c)
+ {
+ TemplateVariant exp = m_exp->resolve(c);
+ switch (m_operator)
+ {
+ case Operator::Minus:
+ return -exp.toInt();
+ default:
+ return TemplateVariant();
+ }
+ }
+ private:
+ Operator::Type m_operator;
+ ExprAst *m_exp;
+};
+
/** @brief Class representing a binary operator in the AST */
class ExprAstBinary : public ExprAst
{
@@ -992,6 +1025,7 @@ class ExprAstBinary : public ExprAst
~ExprAstBinary() { delete m_lhs; delete m_rhs; }
virtual TemplateVariant resolve(TemplateContext *c)
{
+ TemplateContextImpl *ci = dynamic_cast<TemplateContextImpl*>(c);
TemplateVariant lhs = m_lhs->resolve(c);
TemplateVariant rhs = m_rhs ? m_rhs->resolve(c) : TemplateVariant();
switch(m_operator)
@@ -1040,6 +1074,44 @@ class ExprAstBinary : public ExprAst
{
return lhs.toInt()>=rhs.toInt();
}
+ case Operator::Plus:
+ {
+ return TemplateVariant(lhs.toInt() + rhs.toInt());
+ }
+ case Operator::Minus:
+ {
+ return TemplateVariant(lhs.toInt() - rhs.toInt());
+ }
+ case Operator::Multiply:
+ {
+ return TemplateVariant(lhs.toInt() * rhs.toInt());
+ }
+ case Operator::Divide:
+ {
+ int denom = rhs.toInt();
+ if (denom!=0)
+ {
+ return TemplateVariant(lhs.toInt() / denom);
+ }
+ else // divide by zero
+ {
+ ci->warn(ci->templateName(),ci->line(),"division by zero while evaluating expression is undefined");
+ return 0;
+ }
+ }
+ case Operator::Modulo:
+ {
+ int denom = rhs.toInt();
+ if (denom!=0)
+ {
+ return TemplateVariant(lhs.toInt() % denom);
+ }
+ else // module zero
+ {
+ ci->warn(ci->templateName(),ci->line(),"modulo zero while evaluating expression is undefined");
+ return 0;
+ }
+ }
default:
return TemplateVariant();
}
@@ -1110,23 +1182,7 @@ class ExpressionParser
if (expr==0) return 0;
m_tokenStream = expr;
getNextToken();
- return parseOrExpression();
- }
-
- ExprAst *parsePrimary(const char *expr)
- {
- if (expr==0) return 0;
- m_tokenStream = expr;
- getNextToken();
- return parsePrimaryExpression();
- }
-
- ExprAst *parseVariable(const char *varExpr)
- {
- if (varExpr==0) return 0;
- m_tokenStream = varExpr;
- getNextToken();
- return parseFilteredVariable();
+ return parseExpression();
}
private:
@@ -1149,6 +1205,14 @@ class ExpressionParser
Operator::Type op;
};
+ ExprAst *parseExpression()
+ {
+ TRACE(("{parseExpression(%s)\n",m_tokenStream));
+ ExprAst *result = parseOrExpression();
+ TRACE(("}parseExpression(%s)\n",m_tokenStream));
+ return result;
+ }
+
ExprAst *parseOrExpression()
{
TRACE(("{parseOrExpression(%s)\n",m_tokenStream));
@@ -1212,7 +1276,7 @@ class ExpressionParser
ExprAst *parseCompareExpression()
{
TRACE(("{parseCompareExpression(%s)\n",m_tokenStream));
- ExprAst *lhs = parsePrimaryExpression();
+ ExprAst *lhs = parseAdditiveExpression();
if (lhs)
{
Operator::Type op = m_curToken.op;
@@ -1235,6 +1299,74 @@ class ExpressionParser
return lhs;
}
+ ExprAst *parseAdditiveExpression()
+ {
+ TRACE(("{parseAdditiveExpression(%s)\n",m_tokenStream));
+ ExprAst *lhs = parseMultiplicativeExpression();
+ if (lhs)
+ {
+ while (m_curToken.type==ExprToken::Operator &&
+ (m_curToken.op==Operator::Plus || m_curToken.op==Operator::Minus))
+ {
+ Operator::Type op = m_curToken.op;
+ getNextToken();
+ ExprAst *rhs = parseMultiplicativeExpression();
+ lhs = new ExprAstBinary(op,lhs,rhs);
+ }
+ }
+ TRACE(("}parseAdditiveExpression(%s)\n",m_tokenStream));
+ return lhs;
+ }
+
+ ExprAst *parseMultiplicativeExpression()
+ {
+ TRACE(("{parseMultiplicativeExpression(%s)\n",m_tokenStream));
+ ExprAst *lhs = parseUnaryExpression();
+ if (lhs)
+ {
+ while (m_curToken.type==ExprToken::Operator &&
+ (m_curToken.op==Operator::Multiply || m_curToken.op==Operator::Divide || m_curToken.op==Operator::Modulo))
+ {
+ Operator::Type op = m_curToken.op;
+ getNextToken();
+ ExprAst *rhs = parseUnaryExpression();
+ lhs = new ExprAstBinary(op,lhs,rhs);
+ }
+ }
+ TRACE(("}parseMultiplicativeExpression(%s)\n",m_tokenStream));
+ return lhs;
+ }
+
+ ExprAst *parseUnaryExpression()
+ {
+ TRACE(("{parseUnaryExpression(%s)\n",m_tokenStream));
+ ExprAst *result=0;
+ if (m_curToken.type==ExprToken::Operator)
+ {
+ if (m_curToken.op==Operator::Plus)
+ {
+ getNextToken();
+ result = parsePrimaryExpression();
+ }
+ else if (m_curToken.op==Operator::Minus)
+ {
+ getNextToken();
+ ExprAst *rhs = parsePrimaryExpression();
+ result = new ExprAstUnary(m_curToken.op,rhs);
+ }
+ else
+ {
+ result = parsePrimaryExpression();
+ }
+ }
+ else
+ {
+ result = parsePrimaryExpression();
+ }
+ TRACE(("}parseUnaryExpression(%s)\n",m_tokenStream));
+ return result;
+ }
+
ExprAst *parsePrimaryExpression()
{
TRACE(("{parsePrimary(%s)\n",m_tokenStream));
@@ -1250,16 +1382,29 @@ class ExpressionParser
case ExprToken::Literal:
result = parseLiteral();
break;
- default:
- if (m_curToken.type==ExprToken::Operator)
+ case ExprToken::Operator:
+ if (m_curToken.op==Operator::LeftParen)
{
- warn(m_parser->templateName(),m_line,"unexpected operator '%s' in expression",
- Operator::toString(m_curToken.op));
+ getNextToken(); // skip over opening bracket
+ result = parseExpression();
+ if (m_curToken.type!=ExprToken::Operator ||
+ m_curToken.op!=Operator::RightParen)
+ {
+ warn(m_parser->templateName(),m_line,"missing closing parenthesis");
+ }
+ else
+ {
+ getNextToken(); // skip over closing bracket
+ }
}
else
{
- warn(m_parser->templateName(),m_line,"unexpected token in expression");
+ warn(m_parser->templateName(),m_line,"unexpected operator '%s' in expression",
+ Operator::toString(m_curToken.op));
}
+ break;
+ default:
+ warn(m_parser->templateName(),m_line,"unexpected token in expression");
}
TRACE(("}parsePrimary(%s)\n",m_tokenStream));
return result;
@@ -1364,141 +1509,179 @@ class ExpressionParser
if (p==0 || *p=='\0') return FALSE;
while (*p==' ') p++; // skip over spaces
char c=*p;
- if (strncmp(p,"not ",4)==0)
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Not;
- p+=4;
- }
- else if (strncmp(p,"and ",4)==0)
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::And;
- p+=4;
- }
- else if (strncmp(p,"or ",3)==0)
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Or;
- p+=3;
- }
- else if (c=='=' && *(p+1)=='=')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Equal;
- p+=2;
- }
- else if (c=='!' && *(p+1)=='=')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::NotEqual;
- p+=2;
- }
- else if (c=='<' && *(p+1)=='=')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::LessEqual;
- p+=2;
- }
- else if (c=='>' && *(p+1)=='=')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::GreaterEqual;
- p+=2;
- }
- else if (c=='<')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Less;
- p++;
- }
- else if (c=='>')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Greater;
- p++;
- }
- else if (c=='|')
- {
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Filter;
- p++;
- }
- else if (c==':')
+ const char *q = p;
+ switch (c)
{
- m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Colon;
- p++;
+ case '=':
+ if (c=='=' && *(p+1)=='=') // equal
+ {
+ m_curToken.op = Operator::Equal;
+ p+=2;
+ }
+ break;
+ case '!':
+ if (c=='!' && *(p+1)=='=') // not equal
+ {
+ m_curToken.op = Operator::NotEqual;
+ p+=2;
+ }
+ break;
+ case '<':
+ if (c=='<' && *(p+1)=='=') // less or equal
+ {
+ m_curToken.op = Operator::LessEqual;
+ p+=2;
+ }
+ else // less
+ {
+ m_curToken.op = Operator::Less;
+ p++;
+ }
+ break;
+ case '>':
+ if (c=='>' && *(p+1)=='=') // greater or equal
+ {
+ m_curToken.op = Operator::GreaterEqual;
+ p+=2;
+ }
+ else // greater
+ {
+ m_curToken.op = Operator::Greater;
+ p++;
+ }
+ break;
+ case '(':
+ m_curToken.op = Operator::LeftParen;
+ p++;
+ break;
+ case ')':
+ m_curToken.op = Operator::RightParen;
+ p++;
+ break;
+ case '|':
+ m_curToken.op = Operator::Filter;
+ p++;
+ break;
+ case '+':
+ m_curToken.op = Operator::Plus;
+ p++;
+ break;
+ case '-':
+ m_curToken.op = Operator::Minus;
+ p++;
+ break;
+ case '*':
+ m_curToken.op = Operator::Multiply;
+ p++;
+ break;
+ case '/':
+ m_curToken.op = Operator::Divide;
+ p++;
+ break;
+ case '%':
+ m_curToken.op = Operator::Modulo;
+ p++;
+ break;
+ case ':':
+ m_curToken.op = Operator::Colon;
+ p++;
+ break;
+ case ',':
+ m_curToken.op = Operator::Comma;
+ p++;
+ break;
+ case 'n':
+ if (strncmp(p,"not ",4)==0)
+ {
+ m_curToken.op = Operator::Not;
+ p+=4;
+ }
+ break;
+ case 'a':
+ if (strncmp(p,"and ",4)==0)
+ {
+ m_curToken.op = Operator::And;
+ p+=4;
+ }
+ break;
+ case 'o':
+ if (strncmp(p,"or ",3)==0)
+ {
+ m_curToken.op = Operator::Or;
+ p+=3;
+ }
+ break;
+ default:
+ break;
}
- else if (c==',')
+ if (p!=q) // found an operator
{
m_curToken.type = ExprToken::Operator;
- m_curToken.op = Operator::Comma;
- p++;
}
- else if ((c=='-' && *(p+1)>='0' && *(p+1)<='9') || (c>='0' && c<='9'))
+ else // no token found yet
{
- m_curToken.type = ExprToken::Number;
- const char *np = p;
- if (c=='-') np++;
- m_curToken.num = 0;
- while (*np>='0' && *np<='9')
- {
- m_curToken.num*=10;
- m_curToken.num+=*np-'0';
- np++;
- }
- if (c=='-') m_curToken.num=-m_curToken.num;
- p=np;
- }
- else if (c=='_' || (c>='a' && c<='z') || (c>='A' && c<='Z'))
- {
- m_curToken.type = ExprToken::Identifier;
- s[0]=c;
- m_curToken.id = s;
- p++;
- while ((c=*p) &&
- (c=='_' || c=='.' ||
- (c>='a' && c<='z') ||
- (c>='A' && c<='Z') ||
- (c>='0' && c<='9'))
- )
- {
- s[0]=c;
- m_curToken.id+=s;
- p++;
- }
- if (m_curToken.id=="True") // treat true literal as numerical 1
- {
- m_curToken.type = ExprToken::Number;
- m_curToken.num = 1;
- }
- else if (m_curToken.id=="False") // treat false literal as numerical 0
+ if (c>='0' && c<='9') // number?
{
m_curToken.type = ExprToken::Number;
+ const char *np = p;
m_curToken.num = 0;
+ while (*np>='0' && *np<='9')
+ {
+ m_curToken.num*=10;
+ m_curToken.num+=*np-'0';
+ np++;
+ }
+ p=np;
}
- }
- else if (c=='"' || c=='\'')
- {
- m_curToken.type = ExprToken::Literal;
- m_curToken.id.resize(0);
- p++;
- char tokenChar = c;
- char cp=0;
- while ((c=*p) && (c!=tokenChar || (c==tokenChar && cp=='\\')))
+ else if (c=='_' || (c>='a' && c<='z') || (c>='A' && c<='Z')) // identifier?
{
+ m_curToken.type = ExprToken::Identifier;
s[0]=c;
- if (c!='\\' || cp=='\\') // don't add escapes
+ m_curToken.id = s;
+ p++;
+ while ((c=*p) &&
+ (c=='_' || c=='.' ||
+ (c>='a' && c<='z') ||
+ (c>='A' && c<='Z') ||
+ (c>='0' && c<='9'))
+ )
{
+ s[0]=c;
m_curToken.id+=s;
+ p++;
}
- cp=c;
+ if (m_curToken.id=="True") // treat true literal as numerical 1
+ {
+ m_curToken.type = ExprToken::Number;
+ m_curToken.num = 1;
+ }
+ else if (m_curToken.id=="False") // treat false literal as numerical 0
+ {
+ m_curToken.type = ExprToken::Number;
+ m_curToken.num = 0;
+ }
+ }
+ else if (c=='"' || c=='\'') // string literal
+ {
+ m_curToken.type = ExprToken::Literal;
+ m_curToken.id.resize(0);
p++;
+ char tokenChar = c;
+ char cp=0;
+ while ((c=*p) && (c!=tokenChar || (c==tokenChar && cp=='\\')))
+ {
+ s[0]=c;
+ if (c!='\\' || cp=='\\') // don't add escapes
+ {
+ m_curToken.id+=s;
+ }
+ cp=c;
+ p++;
+ }
+ if (*p==tokenChar) p++;
}
- if (*p==tokenChar) p++;
}
- else
+ if (p==q) // still no valid token found -> error
{
m_curToken.type = ExprToken::Unknown;
char s[2];
@@ -1758,7 +1941,11 @@ class TemplateNodeVariable : public TemplateNode
{
TRACE(("TemplateNodeVariable(%s)\n",var.data()));
ExpressionParser expParser(parser,line);
- m_var = expParser.parseVariable(var);
+ m_var = expParser.parse(var);
+ if (m_var==0)
+ {
+ parser->warn(m_templateName,line,"invalid expression '%s' for variable",var.data());
+ }
}
~TemplateNodeVariable()
{
@@ -1769,19 +1956,22 @@ class TemplateNodeVariable : public TemplateNode
{
TemplateContextImpl* ci = dynamic_cast<TemplateContextImpl*>(c);
ci->setLocation(m_templateName,m_line);
- TemplateVariant v = m_var->resolve(c);
- if (v.type()==TemplateVariant::Function)
- {
- v = v.call(QValueList<TemplateVariant>());
- }
- //printf("TemplateNodeVariable::render(%s) raw=%d\n",value.data(),v.raw());
- if (ci->escapeIntf() && !v.raw())
+ if (m_var)
{
- ts << ci->escapeIntf()->escape(v.toString());
- }
- else
- {
- ts << v.toString();
+ TemplateVariant v = m_var->resolve(c);
+ if (v.type()==TemplateVariant::Function)
+ {
+ v = v.call(QValueList<TemplateVariant>());
+ }
+ //printf("TemplateNodeVariable::render(%s) raw=%d\n",value.data(),v.raw());
+ if (ci->escapeIntf() && !v.raw())
+ {
+ ts << ci->escapeIntf()->escape(v.toString());
+ }
+ else
+ {
+ ts << v.toString();
+ }
}
}
@@ -1832,6 +2022,7 @@ class TemplateNodeIf : public TemplateNodeCreator<TemplateNodeIf>
TemplateNodeIf(TemplateParser *parser,TemplateNode *parent,int line,const QCString &data) :
TemplateNodeCreator<TemplateNodeIf>(parser,parent,line)
{
+ m_ifGuardedNodes.setAutoDelete(TRUE);
TRACE(("{TemplateNodeIf(%s)\n",data.data()));
if (data.isEmpty())
{
@@ -1839,15 +2030,37 @@ class TemplateNodeIf : public TemplateNodeCreator<TemplateNodeIf>
}
QStrList stopAt;
stopAt.append("endif");
+ stopAt.append("elif");
stopAt.append("else");
- parser->parse(this,line,stopAt,m_trueNodes);
- TemplateToken *tok = parser->takeNextToken();
+
+ // if 'nodes'
+ GuardedNodes *guardedNodes = new GuardedNodes;
ExpressionParser ex(parser,line);
- m_guardAst = ex.parse(data);
+ guardedNodes->line = line;
+ guardedNodes->guardAst = ex.parse(data);
+ parser->parse(this,line,stopAt,guardedNodes->trueNodes);
+ m_ifGuardedNodes.append(guardedNodes);
+ TemplateToken *tok = parser->takeNextToken();
+
+ // elif 'nodes'
+ while (tok && tok->data.left(5)=="elif ")
+ {
+ ExpressionParser ex(parser,line);
+ guardedNodes = new GuardedNodes;
+ guardedNodes->line = tok->line;
+ guardedNodes->guardAst = ex.parse(tok->data.mid(5));
+ parser->parse(this,tok->line,stopAt,guardedNodes->trueNodes);
+ m_ifGuardedNodes.append(guardedNodes);
+ // proceed to the next token
+ delete tok;
+ tok = parser->takeNextToken();
+ }
+ // else 'nodes'
if (tok && tok->data=="else")
{
- stopAt.removeLast();
+ stopAt.removeLast(); // remove "else"
+ stopAt.removeLast(); // remove "elif"
parser->parse(this,line,stopAt,m_falseNodes);
parser->removeNextToken(); // skip over endif
}
@@ -1856,7 +2069,6 @@ class TemplateNodeIf : public TemplateNodeCreator<TemplateNodeIf>
}
~TemplateNodeIf()
{
- delete m_guardAst;
}
void render(FTextStream &ts, TemplateContext *c)
@@ -1864,22 +2076,41 @@ class TemplateNodeIf : public TemplateNodeCreator<TemplateNodeIf>
TemplateContextImpl* ci = dynamic_cast<TemplateContextImpl*>(c);
ci->setLocation(m_templateName,m_line);
//printf("TemplateNodeIf::render #trueNodes=%d #falseNodes=%d\n",m_trueNodes.count(),m_falseNodes.count());
- if (m_guardAst)
+ bool processed=FALSE;
+ QListIterator<GuardedNodes> li(m_ifGuardedNodes);
+ GuardedNodes *nodes;
+ for (li.toFirst();(nodes=li.current()) && !processed;++li)
{
- TemplateVariant guardValue = m_guardAst->resolve(c);
- if (guardValue.toBool()) // guard is true, render corresponding nodes
+ if (nodes->guardAst)
{
- m_trueNodes.render(ts,c);
+ TemplateVariant guardValue = nodes->guardAst->resolve(c);
+ if (guardValue.toBool()) // render nodes for the first guard that evaluated to 'true'
+ {
+ nodes->trueNodes.render(ts,c);
+ processed=TRUE;
+ }
}
- else // guard is false, render corresponding nodes
+ else
{
- m_falseNodes.render(ts,c);
+ ci->warn(m_templateName,nodes->line,"invalid expression for if/elif");
}
}
+ if (!processed)
+ {
+ // all guards are false, render 'else' nodes
+ m_falseNodes.render(ts,c);
+ }
}
private:
- ExprAst *m_guardAst;
- TemplateNodeList m_trueNodes;
+ struct GuardedNodes
+ {
+ GuardedNodes() : guardAst(0) {}
+ ~GuardedNodes() { delete guardAst; }
+ int line;
+ ExprAst *guardAst;
+ TemplateNodeList trueNodes;
+ };
+ QList<GuardedNodes> m_ifGuardedNodes;
TemplateNodeList m_falseNodes;
};
@@ -1893,7 +2124,7 @@ class TemplateNodeRepeat : public TemplateNodeCreator<TemplateNodeRepeat>
{
TRACE(("{TemplateNodeRepeat(%s)\n",data.data()));
ExpressionParser expParser(parser,line);
- m_expr = expParser.parseVariable(data);
+ m_expr = expParser.parse(data);
QStrList stopAt;
stopAt.append("endrepeat");
parser->parse(this,line,stopAt,m_repeatNodes);
@@ -1938,6 +2169,176 @@ class TemplateNodeRepeat : public TemplateNodeCreator<TemplateNodeRepeat>
//----------------------------------------------------------
+/** @brief Class representing a 'range' tag in a template */
+class TemplateNodeRange : public TemplateNodeCreator<TemplateNodeRange>
+{
+ public:
+ TemplateNodeRange(TemplateParser *parser,TemplateNode *parent,int line,const QCString &data)
+ : TemplateNodeCreator<TemplateNodeRange>(parser,parent,line)
+ {
+ TRACE(("{TemplateNodeRange(%s)\n",data.data()));
+ QCString start,end;
+ int i1 = data.find(" from ");
+ int i2 = data.find(" to ");
+ int i3 = data.find(" downto ");
+ if (i1==-1)
+ {
+ if (data.right(5)==" from")
+ {
+ parser->warn(m_templateName,line,"range missing after 'from' keyword");
+ }
+ else if (data=="from")
+ {
+ parser->warn(m_templateName,line,"range needs an iterator variable and a range");
+ }
+ else
+ {
+ parser->warn(m_templateName,line,"range is missing 'from' keyword");
+ }
+ }
+ else if (i2==-1 && i3==-1)
+ {
+ if (data.right(3)==" to")
+ {
+ parser->warn(m_templateName,line,"range is missing end value after 'to' keyword");
+ }
+ else if (data.right(7)==" downto")
+ {
+ parser->warn(m_templateName,line,"range is missing end value after 'downto' keyword");
+ }
+ else
+ {
+ parser->warn(m_templateName,line,"range is missing 'to' or 'downto' keyword");
+ }
+ }
+ else
+ {
+ m_var = data.left(i1).stripWhiteSpace();
+ if (m_var.isEmpty())
+ {
+ parser->warn(m_templateName,line,"range needs an iterator variable");
+ }
+ start = data.mid(i1+6,i2-i1-6).stripWhiteSpace();
+ if (i2!=-1)
+ {
+ end = data.right(data.length()-i2-4).stripWhiteSpace();
+ m_down = FALSE;
+ }
+ else if (i3!=-1)
+ {
+ end = data.right(data.length()-i3-8).stripWhiteSpace();
+ m_down = TRUE;
+ }
+ }
+ ExpressionParser expParser(parser,line);
+ m_startExpr = expParser.parse(start);
+ m_endExpr = expParser.parse(end);
+
+ QStrList stopAt;
+ stopAt.append("endrange");
+ parser->parse(this,line,stopAt,m_loopNodes);
+ parser->removeNextToken(); // skip over endrange
+ TRACE(("}TemplateNodeRange(%s)\n",data.data()));
+ }
+
+ ~TemplateNodeRange()
+ {
+ delete m_startExpr;
+ delete m_endExpr;
+ }
+
+ void render(FTextStream &ts, TemplateContext *c)
+ {
+ TemplateContextImpl* ci = dynamic_cast<TemplateContextImpl*>(c);
+ ci->setLocation(m_templateName,m_line);
+ //printf("TemplateNodeRange::render #loopNodes=%d\n",
+ // m_loopNodes.count());
+ if (m_startExpr && m_endExpr)
+ {
+ TemplateVariant vs = m_startExpr->resolve(c);
+ TemplateVariant ve = m_endExpr->resolve(c);
+ if (vs.type()==TemplateVariant::Integer && ve.type()==TemplateVariant::Integer)
+ {
+ int s = vs.toInt();
+ int e = ve.toInt();
+ int l = m_down ? s-e+1 : e-s+1;
+ if (l>0)
+ {
+ c->push();
+ //int index = m_reversed ? list.count() : 0;
+ TemplateVariant v;
+ const TemplateVariant *parentLoop = c->getRef("forloop");
+ uint index = 0;
+ int i = m_down ? e : s;
+ bool done=false;
+ while (!done)
+ {
+ // set the forloop meta-data variable
+ TemplateStruct s;
+ s.set("counter0", (int)index);
+ s.set("counter", (int)(index+1));
+ s.set("revcounter", (int)(l-index));
+ s.set("revcounter0", (int)(l-index-1));
+ s.set("first",index==0);
+ s.set("last", (int)index==l-1);
+ s.set("parentloop",parentLoop ? *parentLoop : TemplateVariant());
+ c->set("forloop",&s);
+
+ // set the iterator variable
+ c->set(m_var,i);
+
+ // render all items for this iteration of the loop
+ m_loopNodes.render(ts,c);
+
+ index++;
+ if (m_down)
+ {
+ i--;
+ done = i<e;
+ }
+ else
+ {
+ i++;
+ done = i>e;
+ }
+ }
+ c->pop();
+ }
+ else
+ {
+ ci->warn(m_templateName,m_line,"range %d %s %d is empty!",
+ s,m_down?"downto":"to",e);
+ }
+ }
+ else if (vs.type()!=TemplateVariant::Integer)
+ {
+ ci->warn(m_templateName,m_line,"range requires a start value of integer type!");
+ }
+ else if (ve.type()!=TemplateVariant::Integer)
+ {
+ ci->warn(m_templateName,m_line,"range requires an end value of integer type!");
+ }
+ }
+ else if (!m_startExpr)
+ {
+ ci->warn(m_templateName,m_line,"range has empty start value");
+ }
+ else if (!m_endExpr)
+ {
+ ci->warn(m_templateName,m_line,"range has empty end value");
+ }
+ }
+
+ private:
+ bool m_down;
+ ExprAst *m_startExpr;
+ ExprAst *m_endExpr;
+ QCString m_var;
+ TemplateNodeList m_loopNodes;
+};
+
+//----------------------------------------------------------
+
/** @brief Class representing a 'for' tag in a template */
class TemplateNodeFor : public TemplateNodeCreator<TemplateNodeFor>
{
@@ -1985,7 +2386,7 @@ class TemplateNodeFor : public TemplateNodeCreator<TemplateNodeFor>
}
}
ExpressionParser expParser(parser,line);
- m_expr = expParser.parseVariable(exprStr);
+ m_expr = expParser.parse(exprStr);
QStrList stopAt;
stopAt.append("endfor");
@@ -2215,7 +2616,7 @@ class TemplateNodeExtend : public TemplateNodeCreator<TemplateNodeExtend>
{
parser->warn(m_templateName,line,"extend tag is missing template file argument");
}
- m_extendExpr = ep.parsePrimary(data);
+ m_extendExpr = ep.parse(data);
QStrList stopAt;
parser->parse(this,line,stopAt,m_nodes);
TRACE(("}TemplateNodeExtend(%s)\n",data.data()));
@@ -2298,7 +2699,7 @@ class TemplateNodeInclude : public TemplateNodeCreator<TemplateNodeInclude>
{
parser->warn(m_templateName,line,"include tag is missing template file argument");
}
- m_includeExpr = ep.parsePrimary(data);
+ m_includeExpr = ep.parse(data);
}
~TemplateNodeInclude()
{
@@ -2374,8 +2775,8 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
else
{
ExpressionParser ep(parser,line);
- m_fileExpr = ep.parsePrimary(data.left(i).stripWhiteSpace());
- m_templateExpr = ep.parsePrimary(data.mid(i+6).stripWhiteSpace());
+ m_fileExpr = ep.parse(data.left(i).stripWhiteSpace());
+ m_templateExpr = ep.parse(data.mid(i+6).stripWhiteSpace());
}
}
~TemplateNodeCreate()
@@ -2461,7 +2862,7 @@ class TemplateNodeTree : public TemplateNodeCreator<TemplateNodeTree>
{
parser->warn(m_templateName,line,"recursetree tag is missing data argument");
}
- m_treeExpr = ep.parsePrimary(data);
+ m_treeExpr = ep.parse(data);
QStrList stopAt;
stopAt.append("endrecursetree");
parser->parse(this,line,stopAt,m_treeNodes);
@@ -2569,7 +2970,7 @@ class TemplateNodeWith : public TemplateNodeCreator<TemplateNodeWith>
int j=arg.find('=');
if (j>0)
{
- ExprAst *expr = expParser.parsePrimary(arg.mid(j+1));
+ ExprAst *expr = expParser.parse(arg.mid(j+1));
if (expr)
{
m_args.append(new Mapping(arg.left(j),expr));
@@ -2627,7 +3028,7 @@ class TemplateNodeCycle : public TemplateNodeCreator<TemplateNodeCycle>
QValueListIterator<QCString> it = args.begin();
while (it!=args.end())
{
- ExprAst *expr = expParser.parsePrimary(*it);
+ ExprAst *expr = expParser.parse(*it);
if (expr)
{
m_args.append(expr);
@@ -2697,7 +3098,7 @@ class TemplateNodeSet : public TemplateNodeCreator<TemplateNodeSet>
int j=arg.find('=');
if (j>0)
{
- ExprAst *expr = expParser.parsePrimary(arg.mid(j+1));
+ ExprAst *expr = expParser.parse(arg.mid(j+1));
if (expr)
{
m_args.append(new Mapping(arg.left(j),expr));
@@ -2776,8 +3177,8 @@ class TemplateNodeMarkers : public TemplateNodeCreator<TemplateNodeMarkers>
{
ExpressionParser expParser(parser,line);
m_var = data.left(i);
- m_listExpr = expParser.parseVariable(data.mid(i+4,w-i-4));
- m_patternExpr = expParser.parseVariable(data.right(data.length()-w-6));
+ m_listExpr = expParser.parse(data.mid(i+4,w-i-4));
+ m_patternExpr = expParser.parse(data.right(data.length()-w-6));
}
QStrList stopAt;
stopAt.append("endmarkers");
@@ -2910,6 +3311,7 @@ static TemplateNodeFactory::AutoRegister<TemplateNodeTree> autoRefTree("rec
static TemplateNodeFactory::AutoRegister<TemplateNodeWith> autoRefWith("with");
static TemplateNodeFactory::AutoRegister<TemplateNodeBlock> autoRefBlock("block");
static TemplateNodeFactory::AutoRegister<TemplateNodeCycle> autoRefCycle("cycle");
+static TemplateNodeFactory::AutoRegister<TemplateNodeRange> autoRefRange("range");
static TemplateNodeFactory::AutoRegister<TemplateNodeExtend> autoRefExtend("extend");
static TemplateNodeFactory::AutoRegister<TemplateNodeCreate> autoRefCreate("create");
static TemplateNodeFactory::AutoRegister<TemplateNodeRepeat> autoRefRepeat("repeat");
@@ -3284,7 +3686,8 @@ void TemplateParser::parse(
command=="endblock" || command=="endwith" ||
command=="endrecursetree" || command=="endspaceless" ||
command=="endmarkers" || command=="endmsg" ||
- command=="endrepeat")
+ command=="endrepeat" || command=="elif" ||
+ command=="endrange")
{
warn(m_templateName,tok->line,"Found tag '%s' without matching start tag",command.data());
}
diff --git a/src/textdocvisitor.cpp b/src/textdocvisitor.cpp
index 9275846..6f3151f 100644
--- a/src/textdocvisitor.cpp
+++ b/src/textdocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -19,115 +19,21 @@
#include <qdir.h>
#include "textdocvisitor.h"
#include "message.h"
+#include "util.h"
+#include "htmlentity.h"
//-------------------------------------------------------------------------
void TextDocVisitor::visit(DocSymbol *s)
{
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->html(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "&copy;"; break;
- case DocSymbol::Tm: m_t << "&tm;"; break;
- case DocSymbol::Reg: m_t << "&reg;"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "&lsquo;"; break;
- case DocSymbol::Rsquo: m_t << "&rsquo;"; break;
- case DocSymbol::Ldquo: m_t << "&ldquo;"; break;
- case DocSymbol::Rdquo: m_t << "&rdquo;"; break;
- case DocSymbol::Ndash: m_t << "&ndash;"; break;
- case DocSymbol::Mdash: m_t << "&mdash;"; break;
- case DocSymbol::Uml: m_t << "&" << s->letter() << "uml;"; break;
- case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
- case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
- case DocSymbol::Circ: m_t << "&" << s->letter() << "circ;"; break;
- case DocSymbol::Slash: m_t << "&" << s->letter() << "slash;"; break;
- case DocSymbol::Tilde: m_t << "&" << s->letter() << "tilde;"; break;
- case DocSymbol::Szlig: m_t << "&szlig;"; break;
- case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break;
- case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break;
- case DocSymbol::Nbsp: m_t << "&nbsp;"; break;
- case DocSymbol::Aelig: m_t << "&aelig;"; break;
- case DocSymbol::AElig: m_t << "&AElig;"; break;
- case DocSymbol::GrkGamma: m_t << "&Gamma;"; break;
- case DocSymbol::GrkDelta: m_t << "&Delta;"; break;
- case DocSymbol::GrkTheta: m_t << "&Theta;"; break;
- case DocSymbol::GrkLambda: m_t << "&Lambda;"; break;
- case DocSymbol::GrkXi: m_t << "&Xi;"; break;
- case DocSymbol::GrkPi: m_t << "&Pi;"; break;
- case DocSymbol::GrkSigma: m_t << "&Sigma;"; break;
- case DocSymbol::GrkUpsilon: m_t << "&Upsilon;"; break;
- case DocSymbol::GrkPhi: m_t << "&Phi;"; break;
- case DocSymbol::GrkPsi: m_t << "&Psi;"; break;
- case DocSymbol::GrkOmega: m_t << "&Omega;"; break;
- case DocSymbol::Grkalpha: m_t << "&alpha;"; break;
- case DocSymbol::Grkbeta: m_t << "&beta;"; break;
- case DocSymbol::Grkgamma: m_t << "&gamma;"; break;
- case DocSymbol::Grkdelta: m_t << "&delta;"; break;
- case DocSymbol::Grkepsilon: m_t << "&epsilon;"; break;
- case DocSymbol::Grkzeta: m_t << "&zeta;"; break;
- case DocSymbol::Grketa: m_t << "&eta;"; break;
- case DocSymbol::Grktheta: m_t << "&theta;"; break;
- case DocSymbol::Grkiota: m_t << "&iota;"; break;
- case DocSymbol::Grkkappa: m_t << "&kappa;"; break;
- case DocSymbol::Grklambda: m_t << "&lambda;"; break;
- case DocSymbol::Grkmu: m_t << "&mu;"; break;
- case DocSymbol::Grknu: m_t << "&nu;"; break;
- case DocSymbol::Grkxi: m_t << "&xi;"; break;
- case DocSymbol::Grkpi: m_t << "&pi;"; break;
- case DocSymbol::Grkrho: m_t << "&rho;"; break;
- case DocSymbol::Grksigma: m_t << "&sigma;"; break;
- case DocSymbol::Grktau: m_t << "&tau;"; break;
- case DocSymbol::Grkupsilon: m_t << "&upsilon;"; break;
- case DocSymbol::Grkphi: m_t << "&phi;"; break;
- case DocSymbol::Grkchi: m_t << "&chi;"; break;
- case DocSymbol::Grkpsi: m_t << "&psi;"; break;
- case DocSymbol::Grkomega: m_t << "&omega;"; break;
- case DocSymbol::Grkvarsigma: m_t << "&sigmaf;"; break;
- case DocSymbol::Section: m_t << "&sect;"; break;
- case DocSymbol::Degree: m_t << "&deg;"; break;
- case DocSymbol::Prime: m_t << "&prime;"; break;
- case DocSymbol::DoublePrime: m_t << "&Prime;"; break;
- case DocSymbol::Infinity: m_t << "&infin;"; break;
- case DocSymbol::EmptySet: m_t << "&empty;"; break;
- case DocSymbol::PlusMinus: m_t << "&plusmn;"; break;
- case DocSymbol::Times: m_t << "&times;"; break;
- case DocSymbol::Minus: m_t << "&minus;"; break;
- case DocSymbol::CenterDot: m_t << "&sdot;"; break;
- case DocSymbol::Partial: m_t << "&part;"; break;
- case DocSymbol::Nabla: m_t << "&nabla;"; break;
- case DocSymbol::SquareRoot: m_t << "&radic;"; break;
- case DocSymbol::Perpendicular: m_t << "&perp;"; break;
- case DocSymbol::Sum: m_t << "&sum;"; break;
- case DocSymbol::Integral: m_t << "&int;"; break;
- case DocSymbol::Product: m_t << "&prod;"; break;
- case DocSymbol::Similar: m_t << "&sim;"; break;
- case DocSymbol::Approx: m_t << "&asymp;"; break;
- case DocSymbol::NotEqual: m_t << "&ne;"; break;
- case DocSymbol::Equivalent: m_t << "&equiv;"; break;
- case DocSymbol::Proportional: m_t << "&prop;"; break;
- case DocSymbol::LessEqual: m_t << "&le;"; break;
- case DocSymbol::GreaterEqual: m_t << "&ge;"; break;
- case DocSymbol::LeftArrow: m_t << "&larr;"; break;
- case DocSymbol::RightArrow: m_t << "&rarr;"; break;
- case DocSymbol::SetIn: m_t << "&isin;"; break;
- case DocSymbol::SetNotIn: m_t << "&notin;"; break;
- case DocSymbol::LeftCeil: m_t << "&lceil;"; break;
- case DocSymbol::RightCeil: m_t << "&rceil;"; break;
- case DocSymbol::LeftFloor: m_t << "&lfloor;"; break;
- case DocSymbol::RightFloor: m_t << "&rfloor;"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("text: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
diff --git a/src/textdocvisitor.h b/src/textdocvisitor.h
index 9045d21..b17065d 100644
--- a/src/textdocvisitor.h
+++ b/src/textdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/tooltip.cpp b/src/tooltip.cpp
index 041aa16..8085bff 100644
--- a/src/tooltip.cpp
+++ b/src/tooltip.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/tooltip.h b/src/tooltip.h
index b4a4af4..ea8948d 100644
--- a/src/tooltip.h
+++ b/src/tooltip.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator.h b/src/translator.h
index 49a8135..32eaf09 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_am.h b/src/translator_am.h
index fd8b1dd..9eaba0e 100644
--- a/src/translator_am.h
+++ b/src/translator_am.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_ar.h b/src/translator_ar.h
index 143170d..5d37b69 100644
--- a/src/translator_ar.h
+++ b/src/translator_ar.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_br.h b/src/translator_br.h
index f9dba84..b381495 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,5 +1,5 @@
/******************************************************************************
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_ca.h b/src/translator_ca.h
index 1291a8c..5c3e595 100644
--- a/src/translator_ca.h
+++ b/src/translator_ca.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_cn.h b/src/translator_cn.h
index f8e03c5..fc01ce0 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 2793519..b83eb92 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_de.h b/src/translator_de.h
index d13d99c..d936bf1 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_dk.h b/src/translator_dk.h
index 16ffae4..74b07f4 100644
--- a/src/translator_dk.h
+++ b/src/translator_dk.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_en.h b/src/translator_en.h
index 0535b6b..8de7f8e 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_eo.h b/src/translator_eo.h
index 3c5b9a5..e1513cb 100644
--- a/src/translator_eo.h
+++ b/src/translator_eo.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_es.h b/src/translator_es.h
index d6738e0..ba6e823 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_fa.h b/src/translator_fa.h
index bcc0572..7b6f9d7 100644
--- a/src/translator_fa.h
+++ b/src/translator_fa.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_fi.h b/src/translator_fi.h
index fa42259..eeeb9a5 100644
--- a/src/translator_fi.h
+++ b/src/translator_fi.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 28468e7..2c548c2 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_gr.h b/src/translator_gr.h
index 1523445..fa7a682 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_hr.h b/src/translator_hr.h
index 5c79f61..70dba21 100644
--- a/src/translator_hr.h
+++ b/src/translator_hr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_hu.h b/src/translator_hu.h
index 157247c..610af8e 100644
--- a/src/translator_hu.h
+++ b/src/translator_hu.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_id.h b/src/translator_id.h
index 7ecdbe7..5647bc0 100644
--- a/src/translator_id.h
+++ b/src/translator_id.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_it.h b/src/translator_it.h
index 912f389..59799a3 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_je.h b/src/translator_je.h
index 894452a..4dbcb4e 100644
--- a/src/translator_je.h
+++ b/src/translator_je.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_jp.h b/src/translator_jp.h
index febf353..ae3605a 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_ke.h b/src/translator_ke.h
index 357465d..56a70b3 100644
--- a/src/translator_ke.h
+++ b/src/translator_ke.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 348fa10..6919763 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_lt.h b/src/translator_lt.h
index 9edbe57..000dc6e 100644
--- a/src/translator_lt.h
+++ b/src/translator_lt.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_lv.h b/src/translator_lv.h
index 054310c..135cd11 100644
--- a/src/translator_lv.h
+++ b/src/translator_lv.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_mk.h b/src/translator_mk.h
index b753756..510561e 100644
--- a/src/translator_mk.h
+++ b/src/translator_mk.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_nl.h b/src/translator_nl.h
index 2525b4f..2ffacb6 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_no.h b/src/translator_no.h
index 3d20f08..2662e47 100644
--- a/src/translator_no.h
+++ b/src/translator_no.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_pl.h b/src/translator_pl.h
index d819f66..6f2e14c 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 8e91181..95a62b0 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -1,5 +1,5 @@
/******************************************************************************
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_ro.h b/src/translator_ro.h
index 9bbadeb..ea0988d 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_ru.h b/src/translator_ru.h
index 07aa63b..ce6335d 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_sc.h b/src/translator_sc.h
index af2d7df..84e8756 100644
--- a/src/translator_sc.h
+++ b/src/translator_sc.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_si.h b/src/translator_si.h
index 57ca5c4..33bc27a 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_sk.h b/src/translator_sk.h
index 8c51147..0fc826b 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_sr.h b/src/translator_sr.h
index 11ebac2..f58ac13 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_sv.h b/src/translator_sv.h
index 4ef2bc4..f4d0a35 100644
--- a/src/translator_sv.h
+++ b/src/translator_sv.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -21,6 +21,7 @@ Svensk översättning av:
Samuel Hägglund <sahag96@ite.mh.se>
Xet Erixon <xet@xeqt.com>
Mikael Hallin <mikaelhallin@yahoo.se> 2003-07-28
+Björn Palmqvist <bjorn@aidium.se> 2014-02-01
==================================================================================
Uppdateringar.
1999/04/29
@@ -69,7 +70,7 @@ Problem!
#ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H
-class TranslatorSwedish : public TranslatorAdapter_1_6_0
+class TranslatorSwedish : public Translator
{
public:
@@ -389,7 +390,7 @@ class TranslatorSwedish : public TranslatorAdapter_1_6_0
{ return "Dokumentation över typdefinitioner"; }
virtual QCString trEnumerationTypeDocumentation()
- { return "Dokumentation över egenuppräknande typer"; }
+ { return "Dokumentation över egenuppräknande typer"; ; }
virtual QCString trFunctionDocumentation()
{ return "Dokumentation över funktioner"; }
@@ -1085,7 +1086,7 @@ class TranslatorSwedish : public TranslatorAdapter_1_6_0
*/
virtual QCString trNamespace(bool first_capital, bool singular)
{
- QCString result((first_capital ? "Namnrymd" : "namnrynd"));
+ QCString result((first_capital ? "Namnrymd" : "namnrymd"));
if (!singular) result+="er";
return result;
}
@@ -1604,6 +1605,262 @@ class TranslatorSwedish : public TranslatorAdapter_1_6_0
{
return "Typbegränsningar";
}
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.6.0 (mainly for the new search engine)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! directory relation for \a name */
+ virtual QCString trDirRelation(const char *name)
+ {
+ return QCString(name)+" Relation";
+ }
+
+ /*! Loading message shown when loading search results */
+ virtual QCString trLoading()
+ {
+ return "Laddar...";
+ }
+
+ /*! Label used for search results in the global namespace */
+ virtual QCString trGlobalNamespace()
+ {
+ return "Globalnamnrymd";
+ }
+
+ /*! Message shown while searching */
+ virtual QCString trSearching()
+ {
+ return "Söker...";
+ }
+
+ /*! Text shown when no search results are found */
+ virtual QCString trNoMatches()
+ {
+ return "Inga träffar";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.6.3 (missing items for the directory pages)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! when clicking a directory dependency label, a page with a
+ * table is shown. The heading for the first column mentions the
+ * source file that has a relation to another file.
+ */
+ virtual QCString trFileIn(const char *name)
+ {
+ return (QCString)"Fil i "+name;
+ }
+
+ /*! when clicking a directory dependency label, a page with a
+ * table is shown. The heading for the second column mentions the
+ * destination file that is included.
+ */
+ virtual QCString trIncludesFileIn(const char *name)
+ {
+ return (QCString)"Inkluderar fil i "+name;
+ }
+
+ /** Compiles a date string.
+ * @param year Year in 4 digits
+ * @param month Month of the year: 1=January
+ * @param day Day of the Month: 1..31
+ * @param dayOfWeek Day of the week: 1=Monday..7=Sunday
+ * @param hour Hour of the day: 0..23
+ * @param minutes Minutes in the hour: 0..59
+ * @param seconds Seconds within the minute: 0..59
+ * @param includeTime Include time in the result string?
+ */
+ virtual QCString trDateTime(int year,int month,int day,int dayOfWeek,
+ int hour,int minutes,int seconds,
+ bool includeTime)
+ {
+ static const char *days[] = { "Mån","Tis","Ons","Tor","Fre","Lör","Sön" };
+ static const char *months[] = { "Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Oct","Nov","Dec" };
+ QCString sdate;
+ sdate.sprintf("%s %d %s %d",days[dayOfWeek-1],day,months[month-1],year);
+ if (includeTime)
+ {
+ QCString stime;
+ stime.sprintf(" %.2d:%.2d:%.2d",hour,minutes,seconds);
+ sdate+=stime;
+ }
+ return sdate;
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.7.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Header for the page with bibliographic citations */
+ virtual QCString trCiteReferences()
+ { return "Bibliografiska Referenser"; }
+
+ /*! Text for copyright paragraph */
+ virtual QCString trCopyright()
+ { return "Copyright"; }
+
+ /*! Header for the graph showing the directory dependencies */
+ virtual QCString trDirDepGraph(const char *name)
+ { return QCString("Katalogberoendegraf för ")+name+":"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Detail level selector shown for hierarchical indices */
+ virtual QCString trDetailLevel()
+ { return "detaljnivå"; }
+
+ /*! Section header for list of template parameters */
+ virtual QCString trTemplateParameters()
+ { return "Mall Parametrar"; }
+
+ /*! Used in dot graph when UML_LOOK is enabled and there are many fields */
+ virtual QCString trAndMore(const QCString &number)
+ { return "och "+number+" mera..."; }
+
+ /*! Used file list for a Java enum */
+ virtual QCString trEnumGeneratedFromFiles(bool single)
+ { QCString result = "Dokumentationen för denna enum var genererad från föjlande fil";
+ if (!single) result += "er";
+ result+=":";
+ return result;
+ }
+
+ /*! Header of a Java enum page (Java enums are represented as classes). */
+ virtual QCString trEnumReference(const char *name)
+ { return QCString(name)+" Enum Referens"; }
+
+ /*! Used for a section containing inherited members */
+ virtual QCString trInheritedFrom(const char *members,const char *what)
+ { return QCString(members)+" ärvd ifrån "+what; }
+
+ /*! Header of the sections with inherited members specific for the
+ * base class(es)
+ */
+ virtual QCString trAdditionalInheritedMembers()
+ { return "Ytterliga Ärvda Medlemmar"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.2
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a tooltip for the toggle button that appears in the
+ * navigation tree in the HTML output when GENERATE_TREEVIEW is
+ * enabled. This tooltip explains the meaning of the button.
+ */
+ virtual QCString trPanelSynchronisationTooltip(bool enable)
+ {
+ QCString opt = enable ? "aktivera" : "inaktivera";
+ return "klicka för att "+opt+" panel synkronisering";
+ }
+
+ /*! Used in a method of an Objective-C class that is declared in a
+ * a category. Note that the @1 marker is required and is replaced
+ * by a link.
+ */
+ virtual QCString trProvidedByCategory()
+ {
+ return "Tillhandahålls av kategori @1.";
+ }
+
+ /*! Used in a method of an Objective-C category that extends a class.
+ * Note that the @1 marker is required and is replaced by a link to
+ * the class method.
+ */
+ virtual QCString trExtendsClass()
+ {
+ return "Utökar klass @1.";
+ }
+
+ /*! Used as the header of a list of class methods in Objective-C.
+ * These are similar to static public member functions in C++.
+ */
+ virtual QCString trClassMethods()
+ {
+ return "Klassmetoder";
+ }
+
+ /*! Used as the header of a list of instance methods in Objective-C.
+ * These are similar to public member functions in C++.
+ */
+ virtual QCString trInstanceMethods()
+ {
+ return "Instansmetoder";
+ }
+
+ /*! Used as the header of the member functions of an Objective-C class.
+ */
+ virtual QCString trMethodDocumentation()
+ {
+ return "Metoddokumentation";
+ }
+
+ /*! Used as the title of the design overview picture created for the
+ * VHDL output.
+ */
+ virtual QCString trDesignOverview()
+ {
+ return "Designöversikt";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.4
+//////////////////////////////////////////////////////////////////////////
+
+ /** old style UNO IDL services: implemented interfaces */
+ virtual QCString trInterfaces()
+ { return "Exporterade Interface"; }
+
+ /** old style UNO IDL services: inherited services */
+ virtual QCString trServices()
+ { return "Inkuderade Tjänster"; }
+
+ /** UNO IDL constant groups */
+ virtual QCString trConstantGroups()
+ { return "Konstant Grupper"; }
+
+ /** UNO IDL constant groups */
+ virtual QCString trConstantGroupReference(const char *namespaceName)
+ {
+ QCString result=namespaceName;
+ result+=" Konstant Grupp Referens";
+ return result;
+ }
+ /** UNO IDL service page title */
+ virtual QCString trServiceReference(const char *sName)
+ {
+ QCString result=(QCString)sName;
+ result+=" Tjänstereferens";
+ return result;
+ }
+ /** UNO IDL singleton page title */
+ virtual QCString trSingletonReference(const char *sName)
+ {
+ QCString result=(QCString)sName;
+ result+=" Singleton Referens";
+ return result;
+ }
+ /** UNO IDL service page */
+ virtual QCString trServiceGeneratedFromFiles(bool single)
+ {
+ // single is true implies a single file
+ QCString result=(QCString)"Dokumentationen för denna tjänst "
+ "genererades från följande fil";
+ if (single) result+=":"; else result+="er:";
+ return result;
+ }
+ /** UNO IDL singleton page */
+ virtual QCString trSingletonGeneratedFromFiles(bool single)
+ {
+ // single is true implies a single file
+ QCString result=(QCString)"Dokumentationen för denna singleton"
+ "genererades från följande fil";
+ if (single) result+=":"; else result+="er:";
+ return result;
+ }
/*---------- For internal use: ----------------------------------------*/
protected:
diff --git a/src/translator_tr.h b/src/translator_tr.h
index 2dbfcd8..56b4a19 100644
--- a/src/translator_tr.h
+++ b/src/translator_tr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 86e0a02..581d7fe 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_ua.h b/src/translator_ua.h
index 9c89c40..b7ca86a 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_vi.h b/src/translator_vi.h
index 6657c6b..54c68b8 100644
--- a/src/translator_vi.h
+++ b/src/translator_vi.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/translator_za.h b/src/translator_za.h
index 184eaa9..f47052e 100644
--- a/src/translator_za.h
+++ b/src/translator_za.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/types.h b/src/types.h
index 0c269be..a05a72d 100644
--- a/src/types.h
+++ b/src/types.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/util.cpp b/src/util.cpp
index 91f6fda..cf2d6b9 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1,8 +1,7 @@
/*****************************************************************************
- *
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -61,6 +60,7 @@
#include "filename.h"
#include "membergroup.h"
#include "dirdef.h"
+#include "htmlentity.h"
#define ENABLE_TRACINGSUPPORT 0
@@ -5677,146 +5677,8 @@ QCString convertToJSString(const char *s)
QCString convertCharEntitiesToUTF8(const QCString &s)
{
- static QDict<char> entityMap(127);
- static bool init=TRUE;
QCString result;
- static QRegExp entityPat("&[a-zA-Z]+;");
-
- if (init)
- {
- entityMap.insert("copy", "\xC2\xA9");
- entityMap.insert("tm", "\xE2\x84\xA2");
- entityMap.insert("trade", "\xE2\x84\xA2");
- entityMap.insert("reg", "\xC2\xAE");
- entityMap.insert("lsquo", "\xE2\x80\x98");
- entityMap.insert("rsquo", "\xE2\x80\x99");
- entityMap.insert("ldquo", "\xE2\x80\x9C");
- entityMap.insert("rdquo", "\xE2\x80\x9D");
- entityMap.insert("ndash", "\xE2\x80\x93");
- entityMap.insert("mdash", "\xE2\x80\x94");
- entityMap.insert("Auml", "\xC3\x84");
- entityMap.insert("Euml", "\xC3\x8B");
- entityMap.insert("Iuml", "\xC3\x8F");
- entityMap.insert("Ouml", "\xC3\x96");
- entityMap.insert("Uuml", "\xC3\x9C");
- entityMap.insert("Yuml", "\xC5\xB8");
- entityMap.insert("auml", "\xC3\xA4");
- entityMap.insert("euml", "\xC3\xAB");
- entityMap.insert("iuml", "\xC3\xAF");
- entityMap.insert("ouml", "\xC3\xB6");
- entityMap.insert("uuml", "\xC3\xBC");
- entityMap.insert("yuml", "\xC3\xBF");
- entityMap.insert("Aacute", "\xC3\x81");
- entityMap.insert("Eacute", "\xC3\x89");
- entityMap.insert("Iacute", "\xC3\x8D");
- entityMap.insert("Oacute", "\xC3\x93");
- entityMap.insert("Uacute", "\xC3\x9A");
- entityMap.insert("aacute", "\xC3\xA1");
- entityMap.insert("eacute", "\xC3\xA9");
- entityMap.insert("iacute", "\xC3\xAD");
- entityMap.insert("oacute", "\xC3\xB3");
- entityMap.insert("uacute", "\xC3\xBA");
- entityMap.insert("Agrave", "\xC3\x80");
- entityMap.insert("Egrave", "\xC3\x88");
- entityMap.insert("Igrave", "\xC3\x8C");
- entityMap.insert("Ograve", "\xC3\x92");
- entityMap.insert("Ugrave", "\xC3\x99");
- entityMap.insert("agrave", "\xC3\xA0");
- entityMap.insert("egrave", "\xC3\xA8");
- entityMap.insert("igrave", "\xC3\xAC");
- entityMap.insert("ograve", "\xC3\xB2");
- entityMap.insert("ugrave", "\xC3\xB9");
- entityMap.insert("Acirc", "\xC3\x82");
- entityMap.insert("Ecirc", "\xC3\x8A");
- entityMap.insert("Icirc", "\xC3\x8E");
- entityMap.insert("Ocirc", "\xC3\x94");
- entityMap.insert("Ucirc", "\xC3\x9B");
- entityMap.insert("acirc", "\xC3\xA2");
- entityMap.insert("ecirc", "\xC3\xAA");
- entityMap.insert("icirc", "\xC3\xAE");
- entityMap.insert("ocirc", "\xC3\xB4");
- entityMap.insert("ucirc", "\xC3\xBB");
- entityMap.insert("Atilde", "\xC3\x83");
- entityMap.insert("Ntilde", "\xC3\x91");
- entityMap.insert("Otilde", "\xC3\x95");
- entityMap.insert("atilde", "\xC3\xA3");
- entityMap.insert("ntilde", "\xC3\xB1");
- entityMap.insert("otilde", "\xC3\xB5");
- entityMap.insert("szlig", "\xC3\x9F");
- entityMap.insert("Ccedil", "\xC3\x87");
- entityMap.insert("ccedil", "\xC3\xA7");
- entityMap.insert("Aring", "\xC3\x85");
- entityMap.insert("aring", "\xC3\xA5");
- entityMap.insert("nbsp", "\xC2\xA0");
- entityMap.insert("Gamma", "\xCE\x93");
- entityMap.insert("Delta", "\xCE\x94");
- entityMap.insert("Theta", "\xCE\x98");
- entityMap.insert("Lambda", "\xCE\x9B");
- entityMap.insert("Xi", "\xCE\x9E");
- entityMap.insert("Pi", "\xCE\xA0");
- entityMap.insert("Sigma", "\xCE\xA3");
- entityMap.insert("Upsilon", "\xCE\xA5");
- entityMap.insert("Phi", "\xCE\xA6");
- entityMap.insert("Psi", "\xCE\xA8");
- entityMap.insert("Omega", "\xCE\xA9");
- entityMap.insert("alpha", "\xCE\xB1");
- entityMap.insert("beta", "\xCE\xB2");
- entityMap.insert("gamma", "\xCE\xB3");
- entityMap.insert("delta", "\xCE\xB4");
- entityMap.insert("epsilon", "\xCE\xB5");
- entityMap.insert("zeta", "\xCE\xB6");
- entityMap.insert("eta", "\xCE\xB7");
- entityMap.insert("theta", "\xCE\xB8");
- entityMap.insert("iota", "\xCE\xB9");
- entityMap.insert("kappa", "\xCE\xBA");
- entityMap.insert("lambda", "\xCE\xBB");
- entityMap.insert("mu", "\xCE\xBC");
- entityMap.insert("nu", "\xCE\xBD");
- entityMap.insert("xi", "\xCE\xBE");
- entityMap.insert("pi", "\xCF\x80");
- entityMap.insert("rho", "\xCF\x81");
- entityMap.insert("sigma", "\xCF\x83");
- entityMap.insert("tau", "\xCF\x84");
- entityMap.insert("upsilon", "\xCF\x85");
- entityMap.insert("phi", "\xCF\x86");
- entityMap.insert("chi", "\xCF\x87");
- entityMap.insert("psi", "\xCF\x88");
- entityMap.insert("omega", "\xCF\x89");
- entityMap.insert("sigmaf", "\xCF\x82");
- entityMap.insert("sect", "\xC2\xA7");
- entityMap.insert("deg", "\xC2\xB0");
- entityMap.insert("prime", "\xE2\x80\xB2");
- entityMap.insert("Prime", "\xE2\x80\xB3");
- entityMap.insert("infin", "\xE2\x88\x9E");
- entityMap.insert("empty", "\xE2\x88\x85");
- entityMap.insert("plusmn", "\xC2\xB1");
- entityMap.insert("times", "\xC3\x97");
- entityMap.insert("minus", "\xE2\x88\x92");
- entityMap.insert("sdot", "\xE2\x8B\x85");
- entityMap.insert("part", "\xE2\x88\x82");
- entityMap.insert("nabla", "\xE2\x88\x87");
- entityMap.insert("radic", "\xE2\x88\x9A");
- entityMap.insert("perp", "\xE2\x8A\xA5");
- entityMap.insert("sum", "\xE2\x88\x91");
- entityMap.insert("int", "\xE2\x88\xAB");
- entityMap.insert("prod", "\xE2\x88\x8F");
- entityMap.insert("sim", "\xE2\x88\xBC");
- entityMap.insert("asymp", "\xE2\x89\x88");
- entityMap.insert("ne", "\xE2\x89\xA0");
- entityMap.insert("equiv", "\xE2\x89\xA1");
- entityMap.insert("prop", "\xE2\x88\x9D");
- entityMap.insert("le", "\xE2\x89\xA4");
- entityMap.insert("ge", "\xE2\x89\xA5");
- entityMap.insert("larr", "\xE2\x86\x90");
- entityMap.insert("rarr", "\xE2\x86\x92");
- entityMap.insert("isin", "\xE2\x88\x88");
- entityMap.insert("notin", "\xE2\x88\x89");
- entityMap.insert("lceil", "\xE2\x8C\x88");
- entityMap.insert("rceil", "\xE2\x8C\x89");
- entityMap.insert("lfloor", "\xE2\x8C\x8A");
- entityMap.insert("rfloor", "\xE2\x8C\x8B");
- init=FALSE;
- }
+ static QRegExp entityPat("&[a-zA-Z]+[0-9]*;");
if (s.length()==0) return result;
static GrowBuf growBuf;
@@ -5824,13 +5686,14 @@ QCString convertCharEntitiesToUTF8(const QCString &s)
int p,i=0,l;
while ((p=entityPat.match(s,i,&l))!=-1)
{
- if (p>i)
+ if (p>i)
{
growBuf.addStr(s.mid(i,p-i));
}
- QCString entity = s.mid(p+1,l-2);
- char *code = entityMap.find(entity);
- if (code)
+ QCString entity = s.mid(p,l);
+ DocSymbol::SymType symType = HtmlEntityMapper::instance()->name2sym(entity);
+ const char *code=0;
+ if (symType!=DocSymbol::Sym_Unknown && (code=HtmlEntityMapper::instance()->utf8(symType)))
{
growBuf.addStr(code);
}
@@ -8339,3 +8202,4 @@ void convertProtectionLevel(
//printf("convertProtectionLevel(type=%d prot=%d): %d,%d\n",
// inListType,inProt,*outListType1,*outListType2);
}
+
diff --git a/src/util.h b/src/util.h
index d41f8a2..c3ecad5 100644
--- a/src/util.h
+++ b/src/util.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -26,6 +26,7 @@
#include <ctype.h>
#include "types.h"
#include "sortdict.h"
+#include "docparser.h"
//--------------------------------------------------------------------
diff --git a/src/version.h b/src/version.h
index 9d523c1..b31fe4f 100644
--- a/src/version.h
+++ b/src/version.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 85164bf..d8586ab 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index 262b90f..040a398 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index 7c78373..45ceb06 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/vhdlparser.y b/src/vhdlparser.y
index 69f5968..247ac8a 100644
--- a/src/vhdlparser.y
+++ b/src/vhdlparser.y
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/vhdlscanner.h b/src/vhdlscanner.h
index 1d799d0..9b7c292 100644
--- a/src/vhdlscanner.h
+++ b/src/vhdlscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 8df1acf..b906fc1 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -30,6 +30,7 @@
#include "parserintf.h"
#include "filename.h"
#include "config.h"
+#include "htmlentity.h"
XmlDocVisitor::XmlDocVisitor(FTextStream &t,CodeOutputInterface &ci)
: DocVisitor(DocVisitor_XML), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
@@ -70,110 +71,14 @@ void XmlDocVisitor::visit(DocWhiteSpace *w)
void XmlDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->xml(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "<copy/>"; break;
- case DocSymbol::Tm: m_t << "<trademark/>"; break;
- case DocSymbol::Reg: m_t << "<registered/>"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "<lsquo/>"; break;
- case DocSymbol::Rsquo: m_t << "<rsquo/>"; break;
- case DocSymbol::Ldquo: m_t << "<ldquo/>"; break;
- case DocSymbol::Rdquo: m_t << "<rdquo/>"; break;
- case DocSymbol::Ndash: m_t << "<ndash/>"; break;
- case DocSymbol::Mdash: m_t << "<mdash/>"; break;
- case DocSymbol::Uml: m_t << "<umlaut char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Acute: m_t << "<acute char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Grave: m_t << "<grave char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Circ: m_t << "<circ char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Tilde: m_t << "<tilde char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Szlig: m_t << "<szlig/>"; break;
- case DocSymbol::Cedil: m_t << "<cedil char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Ring: m_t << "<ring char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Slash: m_t << "<slash char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Nbsp: m_t << "<nonbreakablespace/>"; break;
- case DocSymbol::Aelig: m_t << "<aelig/>"; break;
- case DocSymbol::AElig: m_t << "<AElig/>"; break;
- case DocSymbol::GrkGamma: m_t << "<Gamma/>"; break;
- case DocSymbol::GrkDelta: m_t << "<Delta/>"; break;
- case DocSymbol::GrkTheta: m_t << "<Theta/>"; break;
- case DocSymbol::GrkLambda: m_t << "<Lambda/>"; break;
- case DocSymbol::GrkXi: m_t << "<Xi/>"; break;
- case DocSymbol::GrkPi: m_t << "<Pi/>"; break;
- case DocSymbol::GrkSigma: m_t << "<Sigma/>"; break;
- case DocSymbol::GrkUpsilon: m_t << "<Upsilon/>"; break;
- case DocSymbol::GrkPhi: m_t << "<Phi/>"; break;
- case DocSymbol::GrkPsi: m_t << "<Psi/>"; break;
- case DocSymbol::GrkOmega: m_t << "<Omega/>"; break;
- case DocSymbol::Grkalpha: m_t << "<alpha/>"; break;
- case DocSymbol::Grkbeta: m_t << "<beta/>"; break;
- case DocSymbol::Grkgamma: m_t << "<gamma/>"; break;
- case DocSymbol::Grkdelta: m_t << "<delta/>"; break;
- case DocSymbol::Grkepsilon: m_t << "<epsilon/>"; break;
- case DocSymbol::Grkzeta: m_t << "<zeta/>"; break;
- case DocSymbol::Grketa: m_t << "<eta/>"; break;
- case DocSymbol::Grktheta: m_t << "<theta/>"; break;
- case DocSymbol::Grkiota: m_t << "<iota/>"; break;
- case DocSymbol::Grkkappa: m_t << "<kappa/>"; break;
- case DocSymbol::Grklambda: m_t << "<lambda/>"; break;
- case DocSymbol::Grkmu: m_t << "<mu/>"; break;
- case DocSymbol::Grknu: m_t << "<nu/>"; break;
- case DocSymbol::Grkxi: m_t << "<xi/>"; break;
- case DocSymbol::Grkpi: m_t << "<pi/>"; break;
- case DocSymbol::Grkrho: m_t << "<rho/>"; break;
- case DocSymbol::Grksigma: m_t << "<sigma/>"; break;
- case DocSymbol::Grktau: m_t << "<tau/>"; break;
- case DocSymbol::Grkupsilon: m_t << "<upsilon/>"; break;
- case DocSymbol::Grkphi: m_t << "<phi/>"; break;
- case DocSymbol::Grkchi: m_t << "<chi/>"; break;
- case DocSymbol::Grkpsi: m_t << "<psi/>"; break;
- case DocSymbol::Grkomega: m_t << "<omega/>"; break;
- case DocSymbol::Grkvarsigma: m_t << "<sigmaf/>"; break;
- case DocSymbol::Section: m_t << "<sect/>"; break;
- case DocSymbol::Degree: m_t << "<deg/>"; break;
- case DocSymbol::Prime: m_t << "<prime/>"; break;
- case DocSymbol::DoublePrime: m_t << "<Prime/>"; break;
- case DocSymbol::Infinity: m_t << "<infin/>"; break;
- case DocSymbol::EmptySet: m_t << "<empty/>"; break;
- case DocSymbol::PlusMinus: m_t << "<plusmn/>"; break;
- case DocSymbol::Times: m_t << "<times/>"; break;
- case DocSymbol::Minus: m_t << "<minus/>"; break;
- case DocSymbol::CenterDot: m_t << "<sdot/>"; break;
- case DocSymbol::Partial: m_t << "<part/>"; break;
- case DocSymbol::Nabla: m_t << "<nabla/>"; break;
- case DocSymbol::SquareRoot: m_t << "<radic/>"; break;
- case DocSymbol::Perpendicular: m_t << "<perp/>"; break;
- case DocSymbol::Sum: m_t << "<sum/>"; break;
- case DocSymbol::Integral: m_t << "<int/>"; break;
- case DocSymbol::Product: m_t << "<prod/>"; break;
- case DocSymbol::Similar: m_t << "<sim/>"; break;
- case DocSymbol::Approx: m_t << "<asymp/>"; break;
- case DocSymbol::NotEqual: m_t << "<ne/>"; break;
- case DocSymbol::Equivalent: m_t << "<equiv/>"; break;
- case DocSymbol::Proportional: m_t << "<prop/>"; break;
- case DocSymbol::LessEqual: m_t << "<le/>"; break;
- case DocSymbol::GreaterEqual: m_t << "<ge/>"; break;
- case DocSymbol::LeftArrow: m_t << "<larr/>"; break;
- case DocSymbol::RightArrow: m_t << "<rarr/>"; break;
- case DocSymbol::SetIn: m_t << "<isin/>"; break;
- case DocSymbol::SetNotIn: m_t << "<notin/>"; break;
- case DocSymbol::LeftCeil: m_t << "<lceil/>"; break;
- case DocSymbol::RightCeil: m_t << "<rceil/>"; break;
- case DocSymbol::LeftFloor: m_t << "<lfloor/>"; break;
- case DocSymbol::RightFloor: m_t << "<rfloor/>"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("XML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
diff --git a/src/xmldocvisitor.h b/src/xmldocvisitor.h
index 6dc189c..3e2236c 100644
--- a/src/xmldocvisitor.h
+++ b/src/xmldocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 570901f..c0bfd81 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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
@@ -45,6 +45,7 @@
#include "membergroup.h"
#include "dirdef.h"
#include "section.h"
+#include "htmlentity.h"
// no debug info
#define XML_DB(x) do {} while(0)
@@ -1897,7 +1898,32 @@ void generateXML()
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
- f.writeBlock(compound_xsd,qstrlen(compound_xsd));
+
+ // write compound.xsd, but replace special marker with the entities
+ const char *startLine = compound_xsd;
+ while (*startLine)
+ {
+ // find end of the line
+ const char *endLine = startLine+1;
+ while (*endLine && *(endLine-1)!='\n') endLine++; // skip to end of the line including \n
+ int len=endLine-startLine;
+ if (len>0)
+ {
+ QCString s(len+1);
+ qstrncpy(s.data(),startLine,len);
+ s[len]='\0';
+ if (s.find("<!-- Automatically insert here the HTML entities -->")!=-1)
+ {
+ FTextStream t(&f);
+ HtmlEntityMapper::instance()->writeXMLSchema(t);
+ }
+ else
+ {
+ f.writeBlock(startLine,len);
+ }
+ }
+ startLine=endLine;
+ }
f.close();
fileName=outputDirectory+"/index.xml";
diff --git a/src/xmlgen.h b/src/xmlgen.h
index b89b10f..9c9ae17 100644
--- a/src/xmlgen.h
+++ b/src/xmlgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 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