diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2014-02-10 19:34:18 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2014-02-10 19:53:35 (GMT) |
commit | dfa20277697fe904a0846b60a01cc388fc13c933 (patch) | |
tree | 011aa3c33d114404d7508756117e993b90e01799 | |
parent | 69665ef2ad0779f9255242929fb6028c8c3ec518 (diff) | |
download | Doxygen-dfa20277697fe904a0846b60a01cc388fc13c933.zip Doxygen-dfa20277697fe904a0846b60a01cc388fc13c933.tar.gz Doxygen-dfa20277697fe904a0846b60a01cc388fc13c933.tar.bz2 |
Restructered html entity handling
-rw-r--r-- | src/docbookvisitor.cpp | 5 | ||||
-rw-r--r-- | src/docparser.cpp | 3 | ||||
-rw-r--r-- | src/dot.cpp | 2 | ||||
-rw-r--r-- | src/htmldocvisitor.cpp | 5 | ||||
-rw-r--r-- | src/htmlentity.cpp | 477 | ||||
-rw-r--r-- | src/htmlentity.h | 47 | ||||
-rw-r--r-- | src/latexdocvisitor.cpp | 5 | ||||
-rw-r--r-- | src/libdoxygen.pro.in | 2 | ||||
-rw-r--r-- | src/mandocvisitor.cpp | 3 | ||||
-rw-r--r-- | src/perlmodgen.cpp | 22 | ||||
-rw-r--r-- | src/printdocvisitor.h | 14 | ||||
-rw-r--r-- | src/rtfdocvisitor.cpp | 5 | ||||
-rw-r--r-- | src/textdocvisitor.cpp | 5 | ||||
-rw-r--r-- | src/util.cpp | 464 | ||||
-rw-r--r-- | src/util.h | 14 | ||||
-rw-r--r-- | src/xmldocvisitor.cpp | 5 | ||||
-rw-r--r-- | src/xmlgen.cpp | 61 |
17 files changed, 603 insertions, 536 deletions
diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp index cb79015..ebb985a 100644 --- a/src/docbookvisitor.cpp +++ b/src/docbookvisitor.cpp @@ -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,14 +74,14 @@ void DocbookDocVisitor::visit(DocWhiteSpace *w) void DocbookDocVisitor::visit(DocSymbol *s) { if (m_hide) return; - const char *res = get_symbol_docbook(s->symbol()); + const char *res = HtmlEntityMapper::instance()->docbook(s->symbol()); if (res) { m_t << res; } else { - err("DocBook: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + err("DocBook: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } } diff --git a/src/docparser.cpp b/src/docparser.cpp index 0a132a8..df868c5 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -53,6 +53,7 @@ #include "config.h" #include "growbuf.h" #include "markdown.h" +#include "htmlentity.h" // debug off #define DBG(x) do {} while(0) @@ -1573,7 +1574,7 @@ static void handleImg(DocNode *parent,QList<DocNode> &children,const HtmlAttribL DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName) { DBG(("decodeSymbol(%s)\n",qPrint(symName))); - return code_symbol(symName); + return HtmlEntityMapper::instance()->name2sym(symName); } //--------------------------------------------------------------------------- diff --git a/src/dot.cpp b/src/dot.cpp index 56ddc83..eb2f2f5 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -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/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index d59acaf..65c8bc8 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -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,14 +183,14 @@ void HtmlDocVisitor::visit(DocWhiteSpace *w) void HtmlDocVisitor::visit(DocSymbol *s) { if (m_hide) return; - const char *res = get_symbol_html(s->symbol()); + const char *res = HtmlEntityMapper::instance()->html(s->symbol()); if (res) { m_t << res; } else { - err("HTML: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + err("HTML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } } diff --git a/src/htmlentity.cpp b/src/htmlentity.cpp new file mode 100644 index 0000000..aaf2551 --- /dev/null +++ b/src/htmlentity.cpp @@ -0,0 +1,477 @@ +/****************************************************************************** + * + * 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. + * + */ + +#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", " ", "<nonbreakablespace/>", " ", "~", " ", "\\~", { " ", DocSymbol::Perl_char }}, + { SYM(iexcl), "\xc2\xa1", "¡", "<iexcl/>", "¡", "!`", NULL, "\\'A1", { NULL, DocSymbol::Perl_unknown }}, + { SYM(cent), "\xc2\xa2", "¢", "<cent/>", "¢", "\\textcent{}", NULL, "\\'A2", { NULL, DocSymbol::Perl_unknown }}, + { SYM(pound), "\xc2\xa3", "£", "<pound/>", "£", "{$\\pounds$}", NULL, "\\'A3", { NULL, DocSymbol::Perl_unknown }}, + { SYM(curren), "\xc2\xa4", "¤", "<curren/>", "¤", "\\textcurrency{}", NULL, "\\'A4", { NULL, DocSymbol::Perl_unknown }}, + { SYM(yen), "\xc2\xa5", "¥", "<yen/>", "¥", "{$\\yen$}", NULL, "\\'A5", { NULL, DocSymbol::Perl_unknown }}, + { SYM(brvbar), "\xc2\xa6", "¦", "<brvbar/>", "¦", "\\textbrokenbar{}", NULL, "\\'A6", { NULL, DocSymbol::Perl_unknown }}, + { SYM(sect), "\xc2\xa7", "§", "<sect/>", "<simplesect/>", "{$\\S$}", NULL, "\\'A7", { "sect", DocSymbol::Perl_symbol }}, + { SYM(uml), "\xc2\xa8", "¨", "<umlaut/>", "¨", "\\textasciidieresis{}", " \\*(4", "\\'A8", { " ", DocSymbol::Perl_umlaut }}, + { SYM(copy), "\xc2\xa9", "©", "<copy/>", "©", "\\copyright{}", "(C)", "\\'A9", { "copyright", DocSymbol::Perl_symbol }}, + { SYM(ordf), "\xc2\xaa", "ª", "<ordf/>", "ª", "\\textordfeminine{}", NULL, "\\'AA", { NULL, DocSymbol::Perl_unknown }}, + { SYM(laquo), "\xc2\xab", "«", "<laquo/>", "«", "\\guillemotleft{}", NULL, "\\'AB", { NULL, DocSymbol::Perl_unknown }}, + { SYM(not), "\xc2\xac", "¬", "<not/>", "¬", "\\textlnot", NULL, "\\'AC", { NULL, DocSymbol::Perl_unknown }}, + { SYM(shy), "\xc2\xad", "­", "<shy/>", "­", "{$\\-$}", NULL, "\\-", { NULL, DocSymbol::Perl_unknown }}, + { SYM(reg), "\xc2\xae", "®", "<registered/>", "®", "\\textregistered{}", "(R)", "\\'AE", { "registered", DocSymbol::Perl_symbol }}, + { SYM(macr), "\xc2\xaf", "¯", "<macr/>", "¯", "\\={}", NULL, "\\'AF", { NULL, DocSymbol::Perl_unknown }}, + { SYM(deg), "\xc2\xb0", "°", "<deg/>", "°", "\\textdegree", NULL, "\\'B0", { "deg", DocSymbol::Perl_symbol }}, + { SYM(plusmn), "\xc2\xb1", "±", "<plusmn/>", "±", "{$\\pm$}", NULL, "\\'B1", { "+/-", DocSymbol::Perl_string }}, + { SYM(sup2), "\xc2\xb2", "²", "<sup2/>", "²", "\\texttwosuperior{}", NULL, "\\'B2", { NULL, DocSymbol::Perl_unknown }}, + { SYM(sup3), "\xc2\xb3", "³", "<sup3/>", "³", "\\textthreesuperior{}", NULL, "\\'B3", { NULL, DocSymbol::Perl_unknown }}, + { SYM(acute), "\xc2\xb4", "´", "<acute/>", "´", "\\'{}", NULL, "\\'B4", { " ", DocSymbol::Perl_acute }}, + { SYM(micro), "\xc2\xb5", "µ", "<micro/>", "µ", "{$\\mu$}", NULL, "\\'B5", { NULL, DocSymbol::Perl_unknown }}, + { SYM(para), "\xc2\xb6", "¶", "<para/>", "¶", "{$\\P$}", NULL, "\\'B6", { NULL, DocSymbol::Perl_unknown }}, + { SYM(middot), "\xc2\xb7", "·", "<middot/>", "·", "\\textperiodcentered{}", NULL, "\\'B7", { NULL, DocSymbol::Perl_unknown }}, + { SYM(cedil), "\xc2\xb8", "¸", "<cedil/>", "¸", "\\c{}", " \\*,", "\\'B8", { " ", DocSymbol::Perl_cedilla }}, + { SYM(sup1), "\xc2\xb9", "¹", "<sup1/>", "¹", "\\textonesuperior{}", NULL, "\\'B9", { NULL, DocSymbol::Perl_unknown }}, + { SYM(ordm), "\xc2\xba", "º", "<ordm/>", "º", "\\textordmasculine{}", NULL, "\\'BA", { NULL, DocSymbol::Perl_unknown }}, + { SYM(raquo), "\xc2\xbb", "»", "<raquo/>", "»", "\\guillemotright{}", NULL, "\\'BB", { NULL, DocSymbol::Perl_unknown }}, + { SYM(frac14), "\xc2\xbc", "¼", "<frac14/>", "¼", "{$\\frac14$}", "1/4", "\\'BC", { NULL, DocSymbol::Perl_unknown }}, + { SYM(frac12), "\xc2\xbd", "½", "<frac12/>", "½", "{$\\frac12$}", "1/2", "\\'BD", { NULL, DocSymbol::Perl_unknown }}, + { SYM(frac34), "\xc2\xbe", "¾", "<frac34/>", "¾", "{$\\frac34$}", "3/4", "\\'BE", { NULL, DocSymbol::Perl_unknown }}, + { SYM(iquest), "\xc2\xbf", "¿", "<iquest/>", "¿", "?`", NULL, "\\'BF", { NULL, DocSymbol::Perl_unknown }}, + { SYM(Agrave), "\xc3\x80", "À", "<Agrave/>", "À", "\\`{A}", "A\\*:", "\\'C0", { "A", DocSymbol::Perl_grave }}, + { SYM(Aacute), "\xc3\x81", "Á", "<Aacute/>", "Á", "\\'{A}", "A\\*(`", "\\'C1", { "A", DocSymbol::Perl_acute }}, + { SYM(Acirc), "\xc3\x82", "Â", "<Acirc/>", "Â", "\\^{A}", "A\\*^", "\\'C2", { "A", DocSymbol::Perl_circ }}, + { SYM(Atilde), "\xc3\x83", "Ã", "<Atilde/>", "Ã", "\\~{A}", "A\\*~", "\\'C3", { "A", DocSymbol::Perl_tilde }}, + { SYM(Auml), "\xc3\x84", "Ä", "<Aumlaut/>", "Ä", "\\\"{A}", "A\\*(4", "\\'C4", { "A", DocSymbol::Perl_umlaut }}, + { SYM(Aring), "\xc3\x85", "Å", "<Aring/>", "Å", "\\AA", "A\\*o", "\\'C5", { "A", DocSymbol::Perl_ring }}, + { SYM(AElig), "\xc3\x86", "Æ", "<AElig/>", "Æ", "{\\AE}", NULL, "\\'C6", { "AElig", DocSymbol::Perl_symbol }}, + { SYM(Ccedil), "\xc3\x87", "Ç", "<Ccedil/>", "Ç", "\\c{C}", "C\\*,", "\\'C7", { "C", DocSymbol::Perl_cedilla }}, + { SYM(Egrave), "\xc3\x88", "È", "<Egrave/>", "È", "\\`{E}", "E\\*:", "\\'C8", { "E", DocSymbol::Perl_grave }}, + { SYM(Eacute), "\xc3\x89", "É", "<Eacute/>", "É", "\\'{E}", "E\\*(`", "\\'C9", { "E", DocSymbol::Perl_acute }}, + { SYM(Ecirc), "\xc3\x8a", "Ê", "<Ecirc/>", "Ê", "\\^{E}", "E\\*^", "\\'CA", { "E", DocSymbol::Perl_circ }}, + { SYM(Euml), "\xc3\x8b", "Ë", "<Eumlaut/>", "Ë", "\\\"{E}", "E\\*(4", "\\'CB", { "E", DocSymbol::Perl_umlaut }}, + { SYM(Igrave), "\xc3\x8c", "Ì", "<Igrave/>", "Ì", "\\`{I}", "I\\*:", "\\'CC", { "I", DocSymbol::Perl_grave }}, + { SYM(Iacute), "\xc3\x8d", "Í", "<Iacute/>", "Í", "\\'{I}", "I\\*(`", "\\'CD", { "I", DocSymbol::Perl_acute }}, + { SYM(Icirc), "\xc3\x8e", "Î", "<Icirc/>", "Î", "\\^{I}", "I\\*^", "\\'CE", { "I", DocSymbol::Perl_circ }}, + { SYM(Iuml), "\xc3\x8f", "Ï", "<Iumlaut/>", "Ï", "\\\"{I}", "I\\*(4", "\\'CF", { "I", DocSymbol::Perl_umlaut }}, + { SYM(ETH), "\xc3\x90", "Ð", "<ETH/>", "Ð", "\\DH", NULL, "\\'D0", { NULL, DocSymbol::Perl_unknown }}, + { SYM(Ntilde), "\xc3\x91", "Ñ", "<Ntilde/>", "Ñ", "\\~{N}", "N\\*~", "\\'D1", { "N", DocSymbol::Perl_tilde }}, + { SYM(Ograve), "\xc3\x92", "Ò", "<Ograve/>", "Ò", "\\`{O}", "O\\*:", "\\'D2", { "O", DocSymbol::Perl_grave }}, + { SYM(Oacute), "\xc3\x93", "Ó", "<Oacute/>", "Ó", "\\'{O}", "O\\*(`", "\\'D3", { "O", DocSymbol::Perl_acute }}, + { SYM(Ocirc), "\xc3\x94", "Ô", "<Ocirc/>", "Ô", "\\^{O}", "O\\*^", "\\'D4", { "O", DocSymbol::Perl_circ }}, + { SYM(Otilde), "\xc3\x95", "Õ", "<Otilde/>", "Õ", "\\~{O}", "O\\*~", "\\'D5", { "O", DocSymbol::Perl_tilde }}, + { SYM(Ouml), "\xc3\x96", "Ö", "<Oumlaut/>", "Ö", "\\\"{O}", "O\\*(4", "\\'D6", { "O", DocSymbol::Perl_umlaut }}, + { SYM(times), "\xc3\x97", "×", "<times/>", "×", "{$\\times$}", NULL, "\\'D7", { "*", DocSymbol::Perl_char }}, + { SYM(Oslash), "\xc3\x98", "Ø", "<Oslash/>", "Ø", "{\\O}", "O\x08/", "\\'D8", { "O", DocSymbol::Perl_slash }}, + { SYM(Ugrave), "\xc3\x99", "Ù", "<Ugrave/>", "Ù", "\\`{U}", "U\\*:", "\\'D9", { "U", DocSymbol::Perl_grave }}, + { SYM(Uacute), "\xc3\x9a", "Ú", "<Uacute/>", "Ú", "\\'{U}", "U\\*(`", "\\'DA", { "U", DocSymbol::Perl_acute }}, + { SYM(Ucirc), "\xc3\x9b", "Û", "<Ucirc/>", "Û", "\\^{U}", "U\\*^", "\\'DB", { "U", DocSymbol::Perl_circ }}, + { SYM(Uuml), "\xc3\x9c", "Ü", "<Uumlaut/>", "Ü", "\\\"{U}", "U\\*(4", "\\'DC", { "U", DocSymbol::Perl_umlaut }}, + { SYM(Yacute), "\xc3\x9d", "Ý", "<Yacute/>", "Ý", "\\'{Y}", "Y\\*(`", "\\'DD", { "Y", DocSymbol::Perl_acute }}, + { SYM(THORN), "\xc3\x9e", "Þ", "<THORN/>", "Þ", "\\TH", NULL, "\\'DE", { NULL, DocSymbol::Perl_unknown }}, + { SYM(szlig), "\xc3\x9f", "ß", "<szlig/>", "ß", "{\\ss}", "s\\*:", "\\'DF", { "szlig", DocSymbol::Perl_symbol }}, + { SYM(agrave), "\xc3\xa0", "à", "<agrave/>", "à", "\\`{a}", "a\\*:", "\\'E0", { "a", DocSymbol::Perl_grave }}, + { SYM(aacute), "\xc3\xa1", "á", "<aacute/>", "á", "\\'{a}", "a\\*(`", "\\'E1", { "a", DocSymbol::Perl_acute }}, + { SYM(acirc), "\xc3\xa2", "â", "<acirc/>", "â", "\\^{a}", "a\\*^", "\\'E2", { "a", DocSymbol::Perl_circ }}, + { SYM(atilde), "\xc3\xa3", "ã", "<atilde/>", "ã", "\\~{a}", "a\\*~", "\\'E3", { "a", DocSymbol::Perl_tilde }}, + { SYM(auml), "\xc3\xa4", "ä", "<aumlaut/>", "ä", "\\\"{a}", "a\\*(4", "\\'E4", { "a", DocSymbol::Perl_umlaut }}, + { SYM(aring), "\xc3\xa5", "å", "<aring/>", "å", "\\aa", "a\\*o", "\\'E5", { "a", DocSymbol::Perl_ring }}, + { SYM(aelig), "\xc3\xa6", "æ", "<aelig/>", "æ", "{\\ae}", NULL, "\\'E6", { "aelig", DocSymbol::Perl_symbol }}, + { SYM(ccedil), "\xc3\xa7", "ç", "<ccedil/>", "ç", "\\c{c}", "c\\*,", "\\'E7", { "c", DocSymbol::Perl_cedilla }}, + { SYM(egrave), "\xc3\xa8", "è", "<egrave/>", "è", "\\`{e}", "e\\*:", "\\'E8", { "e", DocSymbol::Perl_grave }}, + { SYM(eacute), "\xc3\xa9", "é", "<eacute/>", "é", "\\'{e}", "e\\*(`", "\\'E9", { "e", DocSymbol::Perl_acute }}, + { SYM(ecirc), "\xc3\xaa", "ê", "<ecirc/>", "ê", "\\^{e}", "e\\*^", "\\'EA", { "e", DocSymbol::Perl_circ }}, + { SYM(euml), "\xc3\xab", "ë", "<eumlaut/>", "ë", "\\\"{e}", "e\\*(4", "\\'EB", { "e", DocSymbol::Perl_umlaut }}, + { SYM(igrave), "\xc3\xac", "ì", "<igrave/>", "ì", "\\`{\\i}", "i\\*:", "\\'EC", { "i", DocSymbol::Perl_grave }}, + { SYM(iacute), "\xc3\xad", "í", "<iacute/>", "í", "\\'{\\i}", "i\\*(`", "\\'ED", { "i", DocSymbol::Perl_acute }}, + { SYM(icirc), "\xc3\xae", "î", "<icirc/>", "î", "\\^{\\i}", "i\\*^", "\\'EE", { "i", DocSymbol::Perl_circ }}, + { SYM(iuml), "\xc3\xaf", "ï", "<iumlaut/>", "ï", "\\\"{\\i}", "i\\*(4", "\\'EF", { "i", DocSymbol::Perl_umlaut }}, + { SYM(eth), "\xc3\xb0", "ð", "<eth/>", "ð", "\\dh", NULL, "\\'F0", { NULL, DocSymbol::Perl_unknown }}, + { SYM(ntilde), "\xc3\xb1", "ñ", "<ntilde/>", "ñ", "\\~{n}", "n\\*~", "\\'F1", { "n", DocSymbol::Perl_tilde }}, + { SYM(ograve), "\xc3\xb2", "ò", "<ograve/>", "ò", "\\`{o}", "o\\*:", "\\'F2", { "o", DocSymbol::Perl_grave }}, + { SYM(oacute), "\xc3\xb3", "ó", "<oacute/>", "ó", "\\'{o}", "o\\*(`", "\\'F3", { "o", DocSymbol::Perl_acute }}, + { SYM(ocirc), "\xc3\xb4", "ô", "<ocirc/>", "ô", "\\^{o}", "o\\*^", "\\'F4", { "o", DocSymbol::Perl_circ }}, + { SYM(otilde), "\xc3\xb5", "õ", "<otilde/>", "õ", "\\~{o}", "o\\*~", "\\'F5", { "o", DocSymbol::Perl_tilde }}, + { SYM(ouml), "\xc3\xb6", "ö", "<oumlaut/>", "ö", "\\\"{o}", "o\\*(4", "\\'F6", { "o", DocSymbol::Perl_umlaut }}, + { SYM(divide), "\xc3\xb7", "÷", "<divide/>", "÷", "{$\\div$}", NULL, "\\'F7", { NULL, DocSymbol::Perl_unknown }}, + { SYM(oslash), "\xc3\xb8", "ø", "<oslash/>", "ø", "{\\o}", "o\x08/", "\\'F8", { "o", DocSymbol::Perl_slash }}, + { SYM(ugrave), "\xc3\xb9", "ù", "<ugrave/>", "ù", "\\`{u}", "u\\*:", "\\'F9", { "u", DocSymbol::Perl_grave }}, + { SYM(uacute), "\xc3\xba", "ú", "<uacute/>", "ú", "\\'{u}", "u\\*(`", "\\'FA", { "u", DocSymbol::Perl_acute }}, + { SYM(ucirc), "\xc3\xbb", "û", "<ucirc/>", "û", "\\^{u}", "u\\*^", "\\'FB", { "u", DocSymbol::Perl_circ }}, + { SYM(uuml), "\xc3\xbc", "ü", "<uumlaut/>", "ü", "\\\"{u}", "u\\*(4", "\\'FC", { "u", DocSymbol::Perl_umlaut }}, + { SYM(yacute), "\xc3\xbd", "ý", "<yacute/>", "ý", "\\'{y}", "y\\*(`", "\\'FD", { "y", DocSymbol::Perl_acute }}, + { SYM(thorn), "\xc3\xbe", "þ", "<thorn/>", "þ", "\\th", NULL, "\\'FE", { NULL, DocSymbol::Perl_unknown }}, + { SYM(yuml), "\xc3\xbf", "ÿ", "<yumlaut/>", "ÿ", "\\\"{y}", "y\\*(4", "\\'FF", { "y", DocSymbol::Perl_umlaut }}, + { SYM(fnof), "\xc6\x92", "ƒ", "<fnof/>", "ƒ", "\\textflorin", NULL, "\\'83", { NULL, DocSymbol::Perl_unknown }}, + { SYM(Alpha), "\xce\x91", "Α", "<Alpha/>", "Α", "A", NULL, "\\u0913?", { "A", DocSymbol::Perl_char }}, + { SYM(Beta), "\xce\x92", "Β", "<Beta/>", "Β", "B", NULL, "\\u0914?", { "B", DocSymbol::Perl_char }}, + { SYM(Gamma), "\xce\x93", "Γ", "<Gamma/>", "Γ", "{$\\Gamma$}", NULL, "\\u0915?", { "Gamma", DocSymbol::Perl_symbol }}, + { SYM(Delta), "\xce\x94", "Δ", "<Delta/>", "Δ", "{$\\Delta$}", NULL, "\\u0916?", { "Delta", DocSymbol::Perl_symbol }}, + { SYM(Epsilon), "\xce\x95", "Ε", "<Epsilon/>", "Ε", "E", NULL, "\\u0917?", { "E", DocSymbol::Perl_char }}, + { SYM(Zeta), "\xce\x96", "Ζ", "<Zeta/>", "Ζ", "Z", NULL, "\\u0918?", { "Z", DocSymbol::Perl_char }}, + { SYM(Eta), "\xce\x97", "Η", "<Eta/>", "Η", "H", NULL, "\\u0919?", { "H", DocSymbol::Perl_char }}, + { SYM(Theta), "\xce\x98", "Θ", "<Theta/>", "Θ", "{$\\Theta$}", NULL, "\\u0920?", { "Theta", DocSymbol::Perl_symbol }}, + { SYM(Iota), "\xce\x99", "Ι", "<Iota/>", "Ι", "I", NULL, "\\u0921?", { "I", DocSymbol::Perl_char }}, + { SYM(Kappa), "\xce\x9a", "Κ", "<Kappa/>", "Κ", "K", NULL, "\\u0922?", { "K", DocSymbol::Perl_char }}, + { SYM(Lambda), "\xce\x9b", "Λ", "<Lambda/>", "Λ", "{$\\Lambda$}", NULL, "\\u0923?", { "Lambda", DocSymbol::Perl_symbol }}, + { SYM(Mu), "\xce\x9c", "Μ", "<Mu/>", "Μ", "M", NULL, "\\u0924?", { "M", DocSymbol::Perl_char }}, + { SYM(Nu), "\xce\x9d", "Ν", "<Nu/>", "Ν", "N", NULL, "\\u0925?", { "N", DocSymbol::Perl_char }}, + { SYM(Xi), "\xce\x9e", "Ξ", "<Xi/>", "Ξ", "{$\\Xi$}", NULL, "\\u0926?", { "Xi", DocSymbol::Perl_symbol }}, + { SYM(Omicron), "\xce\x9f", "Ο", "<Omicron/>", "Ο", "O", NULL, "\\u0927?", { "O", DocSymbol::Perl_char }}, + { SYM(Pi), "\xce\xa0", "Π", "<Pi/>", "Π", "{$\\Pi$}", NULL, "\\u0928?", { "Pi", DocSymbol::Perl_symbol }}, + { SYM(Rho), "\xce\xa1", "Ρ", "<Rho/>", "Ρ", "P", NULL, "\\u0929?", { "P", DocSymbol::Perl_char }}, + { SYM(Sigma), "\xce\xa3", "Σ", "<Sigma/>", "Σ", "{$\\Sigma$}", NULL, "\\u0931?", { "Sigma", DocSymbol::Perl_symbol }}, + { SYM(Tau), "\xce\xa4", "Τ", "<Tau/>", "Τ", "T", NULL, "\\u0932?", { "T", DocSymbol::Perl_char }}, + { SYM(Upsilon), "\xce\xa5", "Υ", "<Upsilon/>", "Υ", "{$\\Upsilon$}", NULL, "\\u0933?", { "Upsilon", DocSymbol::Perl_symbol }}, + { SYM(Phi), "\xce\xa6", "Φ", "<Phi/>", "Φ", "{$\\Phi$}", NULL, "\\u0934?", { "Phi", DocSymbol::Perl_symbol }}, + { SYM(Chi), "\xce\xa7", "Χ", "<Chi/>", "Χ", "X", NULL, "\\u0935?", { "X", DocSymbol::Perl_char }}, + { SYM(Psi), "\xce\xa8", "Ψ", "<Psi/>", "Ψ", "{$\\Psi$}", NULL, "\\u0936?", { "Psi", DocSymbol::Perl_symbol }}, + { SYM(Omega), "\xce\xa9", "Ω", "<Omega/>", "Ω", "{$\\Omega$}", NULL, "\\u0937?", { "Omega", DocSymbol::Perl_symbol }}, + { SYM(alpha), "\xce\xb1", "α", "<alpha/>", "α", "{$\\alpha$}", NULL, "\\u0945?", { "alpha", DocSymbol::Perl_symbol }}, + { SYM(beta), "\xce\xb2", "β", "<beta/>", "β", "{$\\beta$}", NULL, "\\u0946?", { "beta", DocSymbol::Perl_symbol }}, + { SYM(gamma), "\xce\xb3", "γ", "<gamma/>", "γ", "{$\\gamma$}", NULL, "\\u0947?", { "gamma", DocSymbol::Perl_symbol }}, + { SYM(delta), "\xce\xb4", "δ", "<delta/>", "δ", "{$\\delta$}", NULL, "\\u0948?", { "delta", DocSymbol::Perl_symbol }}, + { SYM(epsilon), "\xce\xb5", "ε", "<epsilon/>", "ε", "{$\\varepsilon$}", NULL, "\\u0949?", { "epsilon", DocSymbol::Perl_symbol }}, + { SYM(zeta), "\xce\xb6", "ζ", "<zeta/>", "ζ", "{$\\zeta$}", NULL, "\\u0950?", { "zeta", DocSymbol::Perl_symbol }}, + { SYM(eta), "\xce\xb7", "η", "<eta/>", "η", "{$\\eta$}", NULL, "\\u0951?", { "eta", DocSymbol::Perl_symbol }}, + { SYM(theta), "\xce\xb8", "θ", "<theta/>", "θ", "{$\\theta$}", NULL, "\\u0952?", { "theta", DocSymbol::Perl_symbol }}, + { SYM(iota), "\xce\xb9", "ι", "<iota/>", "ι", "{$\\iota$}", NULL, "\\u0953?", { "iota", DocSymbol::Perl_symbol }}, + { SYM(kappa), "\xce\xba", "κ", "<kappa/>", "κ", "{$\\kappa$}", NULL, "\\u0954?", { "kappa", DocSymbol::Perl_symbol }}, + { SYM(lambda), "\xce\xbb", "λ", "<lambda/>", "λ", "{$\\lambda$}", NULL, "\\u0955?", { "lambda", DocSymbol::Perl_symbol }}, + { SYM(mu), "\xce\xbc", "μ", "<mu/>", "μ", "{$\\mu$}", NULL, "\\u0956?", { "mu", DocSymbol::Perl_symbol }}, + { SYM(nu), "\xce\xbd", "ν", "<nu/>", "ν", "{$\\nu$}", NULL, "\\u0957?", { "nu", DocSymbol::Perl_symbol }}, + { SYM(xi), "\xce\xbe", "ξ", "<xi/>", "ξ", "{$\\xi$}", NULL, "\\u0958?", { "xi", DocSymbol::Perl_symbol }}, + { SYM(omicron), "\xce\xbf", "ο", "<omicron/>", "ο", "{$\\omicron$}", NULL, "\\u0959?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(pi), "\xcf\x80", "π", "<pi/>", "π", "{$\\pi$}", NULL, "\\u0960?", { "pi", DocSymbol::Perl_symbol }}, + { SYM(rho), "\xcf\x81", "ρ", "<rho/>", "ρ", "{$\\rho$}", NULL, "\\u0961?", { "rho", DocSymbol::Perl_symbol }}, + { SYM(sigmaf), "\xcf\x82", "ς", "<sigmaf/>", "ς", "{$\\varsigma$}", NULL, "\\u0962?", { "sigma", DocSymbol::Perl_symbol }}, + { SYM(sigma), "\xcf\x83", "σ", "<sigma/>", "σ", "{$\\sigma$}", NULL, "\\u0963?", { "sigma", DocSymbol::Perl_symbol }}, + { SYM(tau), "\xcf\x84", "τ", "<tau/>", "τ", "{$\\tau$}", NULL, "\\u0964?", { "tau", DocSymbol::Perl_symbol }}, + { SYM(upsilon), "\xcf\x85", "υ", "<upsilon/>", "υ", "{$\\upsilon$}", NULL, "\\u0965?", { "upsilon", DocSymbol::Perl_symbol }}, + { SYM(phi), "\xcf\x86", "φ", "<phi/>", "φ", "{$\\varphi$}", NULL, "\\u0966?", { "phi", DocSymbol::Perl_symbol }}, + { SYM(chi), "\xcf\x87", "χ", "<chi/>", "χ", "{$\\chi$}", NULL, "\\u0967?", { "chi", DocSymbol::Perl_symbol }}, + { SYM(psi), "\xcf\x88", "ψ", "<psi/>", "ψ", "{$\\psi$}", NULL, "\\u0968?", { "psi", DocSymbol::Perl_symbol }}, + { SYM(omega), "\xcf\x89", "ω", "<omega/>", "ω", "{$\\omega$}", NULL, "\\u0969?", { "omega", DocSymbol::Perl_symbol }}, + { SYM(thetasym), "\xcf\x91", "ϑ", "<thetasym/>", "ϑ", "{$\\vartheta$}", NULL, "\\u977?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(upsih), "\xcf\x92", "ϒ", "<upsih/>", "ϒ", "{$\\Upsilon$}", NULL, "\\u978?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(piv), "\xcf\x96", "ϖ", "<piv/>", "ϖ", "{$\\varpi$}", NULL, "\\u982?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(bull), "\xe2\x80\xa2", "•", "<bull/>", "•", "\\textbullet{}", NULL, "\\'95", { NULL, DocSymbol::Perl_unknown }}, + { SYM(hellip), "\xe2\x80\xa6", "…", "<hellip/>", "…", "{$\\cdots$}", NULL, "\\'85", { NULL, DocSymbol::Perl_unknown }}, + { SYM(prime), "\xe2\x80\xb2", "′", "<prime/>", "′", "'", NULL, "\\u8242?", { "\\\'", DocSymbol::Perl_string }}, + { SYM(Prime), "\xe2\x80\xb3", "″", "<Prime/>", "″", "''", NULL, "\\u8243?", { "\"", DocSymbol::Perl_char }}, + { SYM(oline), "\xe2\x80\xbe", "‾", "<oline/>", "‾", "{$\\overline{\\,}$}", NULL, "\\u8254?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(frasl), "\xe2\x81\x84", "⁄", "<frasl/>", "⁄", "/", NULL, "\\u8260?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(weierp), "\xe2\x84\x98", "℘", "<weierp/>", "℘", "{$\\wp$}", NULL, "\\u8472?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(image), "\xe2\x84\x91", "ℑ", "<image/>", "ℑ", "{$\\Im$}", NULL, "\\u8465?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(real), "\xe2\x84\x9c", "ℜ", "<real/>", "ℜ", "{$\\Re$}", NULL, "\\u8476?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(trade), "\xe2\x84\xa2", "™", "<trademark/>", "™", "\\texttrademark{}", "(TM)", "\\'99", { "trademark", DocSymbol::Perl_symbol }}, + { SYM(alefsym), "\xe2\x85\xb5", "ℵ", "<alefsym/>", "ℵ", "{$\\aleph$}", NULL, "\\u8501?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(larr), "\xe2\x86\x90", "←", "<larr/>", "←", "{$\\leftarrow$}", NULL, "\\u8592?", { "<-", DocSymbol::Perl_string }}, + { SYM(uarr), "\xe2\x86\x91", "↑", "<uarr/>", "↑", "{$\\uparrow$}", NULL, "\\u8593?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(rarr), "\xe2\x86\x92", "→", "<rarr/>", "→", "{$\\rightarrow$}", NULL, "\\u8594?", { "->", DocSymbol::Perl_string }}, + { SYM(darr), "\xe2\x86\x93", "↓", "<darr/>", "↓", "{$\\downarrow$}", NULL, "\\u8595?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(harr), "\xe2\x86\x94", "↔", "<harr/>", "↔", "{$\\leftrightarrow$}", NULL, "\\u8596?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(crarr), "\xe2\x86\xb5", "↵", "<crarr/>", "↵", "{$\\hookleftarrow$}", NULL, "\\u8629?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(lArr), "\xe2\x87\x90", "⇐", "<lArr/>", "⇐", "{$\\Leftarrow$}", NULL, "\\u8656?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(uArr), "\xe2\x87\x91", "⇑", "<uArr/>", "⇑", "{$\\Uparrow$}", NULL, "\\u8657?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(rArr), "\xe2\x87\x92", "⇒", "<rArr/>", "⇒", "{$\\Rightarrow$}", NULL, "\\u8658?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(dArr), "\xe2\x87\x93", "⇓", "<dArr/>", "⇓", "{$\\Downarrow$}", NULL, "\\u8659?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(hArr), "\xe2\x87\x94", "⇔", "<hArr/>", "⇔", "{$\\Leftrightarrow$}", NULL, "\\u8660?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(forall), "\xe2\x88\x80", "∀", "<forall/>", "∀", "{$\\forall$}", NULL, "\\u8704?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(part), "\xe2\x88\x82", "∂", "<part/>", "∂", "{$\\partial$}", NULL, "\\u8706?", { "partial", DocSymbol::Perl_symbol }}, + { SYM(exist), "\xe2\x88\x83", "∃", "<exist/>", "∃", "{$\\exists$}", NULL, "\\u8707?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(empty), "\xe2\x88\x85", "∅", "<empty/>", "∅", "{$\\emptyset$}", NULL, "\\u8709?", { "empty", DocSymbol::Perl_symbol }}, + { SYM(nabla), "\xe2\x88\x87", "∇", "<nabla/>", "∇", "{$\\nabla$}", NULL, "\\u8711?", { "nabla", DocSymbol::Perl_symbol }}, + { SYM(isin), "\xe2\x88\x88", "∈", "<isin/>", "∈", "{$\\in$}", NULL, "\\u8712?", { "in", DocSymbol::Perl_symbol }}, + { SYM(notin), "\xe2\x88\x89", "∉", "<notin/>", "∉", "{$\\notin$}", NULL, "\\u8713?", { "notin", DocSymbol::Perl_symbol }}, + { SYM(ni), "\xe2\x88\x8b", "∋", "<ni/>", "∋", "{$\\ni$}", NULL, "\\u8715?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(prod), "\xe2\x88\x8f", "∏", "<prod/>", "∏", "{$\\prod$}", NULL, "\\u8719?", { "prod", DocSymbol::Perl_symbol }}, + { SYM(sum), "\xe2\x88\x91", "∑", "<sum/>", "∑", "{$\\sum$}", NULL, "\\u8721?", { "sum", DocSymbol::Perl_symbol }}, + { SYM(minus), "\xe2\x88\x92", "−", "<minus/>", "−", "-", NULL, "\\u8722?", { "-", DocSymbol::Perl_char }}, + { SYM(lowast), "\xe2\x88\x97", "∗", "<lowast/>", "∗", "{$\\ast$}", NULL, "\\u8727?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(radic), "\xe2\x88\x9a", "√", "<radic/>", "√", "{$\\surd$}", NULL, "\\u8730?", { "sqrt", DocSymbol::Perl_symbol }}, + { SYM(prop), "\xe2\x88\x9d", "∝", "<prop/>", "∝", "{$\\propto$}", NULL, "\\u8733?", { "propto", DocSymbol::Perl_symbol }}, + { SYM(infin), "\xe2\x88\x9e", "∞", "<infin/>", "∞", "{$\\infty$}", NULL, "\\u8734?", { "inf", DocSymbol::Perl_symbol }}, + { SYM(ang), "\xe2\x88\xa0", "∠", "<ang/>", "∠", "{$\\angle$}", NULL, "\\u8736?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(and), "\xe2\x88\xa7", "∧", "<and/>", "∧", "{$\\wedge$}", NULL, "\\u8743?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(or), "\xe2\x88\xa8", "∨", "<or/>", "∨", "{$\\vee$}", NULL, "\\u8744?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(cap), "\xe2\x88\xa9", "∩", "<cap/>", "∩", "{$\\cap$}", NULL, "\\u8745?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(cup), "\xe2\x88\xaa", "∪", "<cup/>", "∪", "{$\\cup$}", NULL, "\\u8746?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(int), "\xe2\x88\xab", "∫", "<int/>", "∫", "{$\\int$}", NULL, "\\u8747?", { "int", DocSymbol::Perl_symbol }}, + { SYM(there4), "\xe2\x88\xb4", "∴", "<there4/>", "∴", "{$\\therefore$}", NULL, "\\u8756?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(sim), "\xe2\x88\xbc", "∼", "<sim/>", "∼", "{$\\sim$}", NULL, "\\u8764?", { "~", DocSymbol::Perl_char }}, + { SYM(cong), "\xe2\x89\x85", "≅", "<cong/>", "≅", "{$\\cong$}", NULL, "\\u8773?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(asymp), "\xe2\x89\x88", "≈", "<asymp/>", "≈", "{$\\approx$}", NULL, "\\u8776?", { "approx", DocSymbol::Perl_symbol }}, + { SYM(ne), "\xe2\x89\xa0", "≠", "<ne/>", "≠", "{$\\ne$}", NULL, "\\u8800?", { "!=", DocSymbol::Perl_string }}, + { SYM(equiv), "\xe2\x89\xa1", "≡", "<equiv/>", "≡", "{$\\equiv$}", NULL, "\\u8801?", { "equiv", DocSymbol::Perl_symbol }}, + { SYM(le), "\xe2\x89\xa4", "≤", "<le/>", "≤", "{$\\le$}", NULL, "\\u8804?", { "<=", DocSymbol::Perl_string }}, + { SYM(ge), "\xe2\x89\xa5", "≥", "<ge/>", "≥", "{$\\ge$}", NULL, "\\u8805?", { ">=", DocSymbol::Perl_string }}, + { SYM(sub), "\xe2\x8a\x82", "⊂", "<sub/>", "⊂", "{$\\subset$}", NULL, "\\u8834?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(sup), "\xe2\x8a\x83", "⊃", "<sup/>", "⊃", "{$\\supset$}", NULL, "\\u8835?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(nsub), "\xe2\x8a\x84", "⊄", "<nsub/>", "⊄", "{$\\not\\subset$}", NULL, "\\u8836?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(sube), "\xe2\x8a\x86", "⊆", "<sube/>", "⊆", "{$\\subseteq$}", NULL, "\\u8838?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(supe), "\xe2\x8a\x87", "⊇", "<supe/>", "⊇", "{$\\supseteq$}", NULL, "\\u8839?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(oplus), "\xe2\x8a\x95", "⊕", "<oplus/>", "⊕", "{$\\oplus$}", NULL, "\\u8853?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(otimes), "\xe2\x8a\x97", "⊗", "<otimes/>", "⊗", "{$\\otimes$}", NULL, "\\u8855?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(perp), "\xe2\x8a\xa5", "⊥", "<perp/>", "⊥", "{$\\perp$}", NULL, "\\u8869?", { "perp", DocSymbol::Perl_symbol }}, + { SYM(sdot), "\xe2\x8b\x85", "⋅", "<sdot/>", "⋅", "{$\\cdot$}", NULL, "\\u8901?", { ".", DocSymbol::Perl_char }}, + { SYM(lceil), "\xe2\x8c\x88", "⌈", "<lceil/>", "⌈", "{$\\lceil$}", NULL, "\\u8968?", { "lceil", DocSymbol::Perl_symbol }}, + { SYM(rceil), "\xe2\x8c\x89", "⌉", "<rceil/>", "⌉", "{$\\rceil$}", NULL, "\\u8969?", { "rceil", DocSymbol::Perl_symbol }}, + { SYM(lfloor), "\xe2\x8c\x8a", "⌊", "<lfloor/>", "⌊", "{$\\lfloor$}", NULL, "\\u8970?", { "lfloor", DocSymbol::Perl_symbol }}, + { SYM(rfloor), "\xe2\x8c\x8b", "⌋", "<rfloor/>", "⌋", "{$\\rfloor$}", NULL, "\\u8971?", { "rfloor", DocSymbol::Perl_symbol }}, + { SYM(lang), "\xe2\x8c\xa9", "⟨", "<lang/>", "〈", "{$\\langle$}", NULL, "\\u9001?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(rang), "\xe2\x8c\xaa", "⟩", "<rang/>", "〉", "{$\\rangle$}", NULL, "\\u9002?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(loz), "\xe2\x97\x8a", "◊", "<loz/>", "◊", "{$\\lozenge$}", NULL, "\\u9674?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(spades), "\xe2\x99\xa0", "♠", "<spades/>", "♠", "{$\\spadesuit$}", NULL, "\\u9824?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(clubs), "\xe2\x99\xa3", "♣", "<clubs/>", "♣", "{$\\clubsuit$}", NULL, "\\u9827?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(hearts), "\xe2\x99\xa5", "♥", "<hearts/>", "♥", "{$\\heartsuit$}", NULL, "\\u9829?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(diams), "\xe2\x99\xa6", "♦", "<diams/>", "♦", "{$\\diamondsuit$}", NULL, "\\u9830?", { NULL, DocSymbol::Perl_unknown }}, + { SYM(quot), "\"", """, "\"", """, "\"", "\"", "\"", { "\"", DocSymbol::Perl_char }}, + { SYM(amp), "&", "&", "&", "&", "\\&", "&", "&", { "&", DocSymbol::Perl_char }}, + { SYM(lt), "<", "<", "<", "<", "<", "<", "<", { "<", DocSymbol::Perl_char }}, + { SYM(gt), ">", ">", ">", ">", ">", ">", ">", { ">", DocSymbol::Perl_char }}, + { SYM(OElig), "\xc5\x92", "Œ", "<OElig/>", "Œ", "\\OE", NULL, "\\'8C", { NULL, DocSymbol::Perl_unknown }}, + { SYM(oelig), "\xc5\x93", "œ", "<oelig/>", "œ", "\\oe", NULL, "\\'9C", { NULL, DocSymbol::Perl_unknown }}, + { SYM(Scaron), "\xc5\xa0", "Š", "<Scaron/>", "Š", "\\v{S}", NULL, "\\'8A", { NULL, DocSymbol::Perl_unknown }}, + { SYM(scaron), "\xc5\xa1", "š", "<scaron/>", "š", "\\v{s}", NULL, "\\'9A", { NULL, DocSymbol::Perl_unknown }}, + { SYM(Yuml), "\xc5\xb8", "Ÿ", "<Yumlaut/>", "Ÿ", "\\\"{Y}", "Y\\*(4", "\\'9F", { "Y", DocSymbol::Perl_umlaut }}, + { SYM(circ), "\xcb\x86", "ˆ", "<circ/>", "ˆ", "{$\\circ$}", NULL, "\\'88", { " ", DocSymbol::Perl_circ }}, + { SYM(tilde), "\xcb\x9c", "˜", "<tilde/>", "˜", "\\~{}", "~", "\\'98", { " ", DocSymbol::Perl_tilde }}, + { SYM(ensp), "\xe2\x80\x82", " ", "<ensp/>", " ", "\\enskip{}", NULL, "{\\enspace}", { NULL, DocSymbol::Perl_unknown }}, + { SYM(emsp), "\xe2\x80\x83", " ", "<emsp/>", " ", "\\quad{}", NULL, "{\\emspace}", { NULL, DocSymbol::Perl_unknown }}, + { SYM(thinsp), "\xe2\x80\x89", " ", "<thinsp/>", " ", "\\,", NULL, "{\\qmspace}", { NULL, DocSymbol::Perl_unknown }}, + { SYM(zwnj), "\xe2\x80\x8c", "‌", "<zwnj/>", "‌", "{}", NULL, "\\zwnj", { NULL, DocSymbol::Perl_unknown }}, + { SYM(zwj), "\xe2\x80\x8d", "‍", "<zwj/>", "‍", "", NULL, "\\zwj", { NULL, DocSymbol::Perl_unknown }}, + { SYM(lrm), "\xe2\x80\x8e", "‎", "<lrm/>", "‎", "", NULL, "\\ltrmark", { NULL, DocSymbol::Perl_unknown }}, + { SYM(rlm), "\xe2\x80\x8f", "‏", "<rlm/>", "‏", "", NULL, "\\rtlmark", { NULL, DocSymbol::Perl_unknown }}, + { SYM(ndash), "\xe2\x80\x93", "–", "<ndash/>", "–", "--", "--", "\\'96", { "-", DocSymbol::Perl_char }}, + { SYM(mdash), "\xe2\x80\x94", "—", "<mdash/>", "—", "---", "---", "\\'97", { "--", DocSymbol::Perl_string }}, + { SYM(lsquo), "\xe2\x80\x98", "‘", "<lsquo/>", "‘", "`", "`", "\\'91", { "\\\'", DocSymbol::Perl_string }}, + { SYM(rsquo), "\xe2\x80\x99", "’", "<rsquo/>", "’", "'", "'", "\\'92", { "\\\'", DocSymbol::Perl_string }}, + { SYM(sbquo), "\xe2\x80\x9a", "‚", "<sbquo/>", "‚", "\\quotesinglbase{}", NULL, "\\'82", { NULL, DocSymbol::Perl_unknown }}, + { SYM(ldquo), "\xe2\x80\x9c", "“", "<ldquo/>", "“", "``", "``", "\\'93", { "\"", DocSymbol::Perl_char }}, + { SYM(rdquo), "\xe2\x80\x9d", "”", "<rdquo/>", "”", "''", "''", "\\'94", { "\"", DocSymbol::Perl_char }}, + { SYM(bdquo), "\xe2\x80\x9e", "„", "<bdquo/>", "„", "\\quotedblbase{}", NULL, "\\'84", { NULL, DocSymbol::Perl_unknown }}, + { SYM(dagger), "\xe2\x80\xa0", "†", "<dagger/>", "†", "{$\\dagger$}", NULL, "\\'86", { NULL, DocSymbol::Perl_unknown }}, + { SYM(Dagger), "\xe2\x80\xa1", "‡", "<Dagger/>", "‡", "{$\\ddagger$}", NULL, "\\'87", { NULL, DocSymbol::Perl_unknown }}, + { SYM(permil), "\xe2\x80\xb0", "‰", "<permil/>", "‰", "{$\\permil{}$}", NULL, "\\'89", { NULL, DocSymbol::Perl_unknown }}, + { SYM(lsaquo), "\xe2\x80\xb9", "‹", "<lsaquo/>", "‹", "\\guilsinglleft{}", NULL, "\\'8B", { NULL, DocSymbol::Perl_unknown }}, + { SYM(rsaquo), "\xe2\x80\xba", "›", "<rsaquo/>", "›", "\\guilsinglright{}", NULL, "\\'9B", { NULL, DocSymbol::Perl_unknown }}, + { SYM(euro), "\xe2\x82\xac", "€", "<euro/>", "€", "\\texteuro{}", NULL, "\\'80", { NULL, DocSymbol::Perl_unknown }}, + + // doxygen extension to the HTML4 table of HTML entities + { SYM(tm), "\xe2\x84\xa2", "™", "<trademark/>", "™", "\\texttrademark{}", "(TM)", "\\'99", { "trademark", DocSymbol::Perl_symbol }}, + { SYM(apos), "'", "'", "'", "'", "'", "'", "'", { "\\\'", DocSymbol::Perl_string }}, + + // doxygen commands represented as HTML entities + { SYM(BSlash), "\\", "\\", "\\", "\\", "\\textbackslash{}", "\\\\", "\\\\", { "\\\\", DocSymbol::Perl_string }}, + { SYM(At), "@", "@", "@", "@", "@", "@", "@", { "@", DocSymbol::Perl_char }}, + { SYM(Less), "<", "<", "<", "<", "<", "<", "<", { "<", DocSymbol::Perl_char }}, + { SYM(Greater), ">", ">", ">", ">", ">", ">", ">", { ">", DocSymbol::Perl_char }}, + { SYM(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), "\"", "\"", "\"", """, "\"", "\"", "\"", { "\"", 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 + * @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) const +{ + return g_htmlEntities[symb].UTF8; +} + +/*! @brief Access routine to the html code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the html of the HTML entity, + * in case the html code is unknown \c NULL is returned. + */ +const char *HtmlEntityMapper::html(DocSymbol::SymType symb) const +{ + 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..3aeb076 --- /dev/null +++ b/src/htmlentity.h @@ -0,0 +1,47 @@ +/****************************************************************************** + * + * 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. + * + */ +#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) const; + const char *html(DocSymbol::SymType symb) 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/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 7daa1d0..8599936 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -31,6 +31,7 @@ #include "cite.h" #include "filedef.h" #include "config.h" +#include "htmlentity.h" static QCString escapeLabelName(const char *s) { @@ -135,7 +136,7 @@ void LatexDocVisitor::visit(DocWhiteSpace *w) void LatexDocVisitor::visit(DocSymbol *s) { if (m_hide) return; - const char *res = get_symbol_latex(s->symbol()); + const char *res = HtmlEntityMapper::instance()->latex(s->symbol()); if (res) { if (((s->symbol() == DocSymbol::Sym_lt) || (s->symbol() == DocSymbol::Sym_Less))&& (!m_insidePre)) @@ -153,7 +154,7 @@ void LatexDocVisitor::visit(DocSymbol *s) } else { - err("LaTeX: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + err("LaTeX: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } } diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in index b441b96..8741f83 100644 --- a/src/libdoxygen.pro.in +++ b/src/libdoxygen.pro.in @@ -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/mandocvisitor.cpp b/src/mandocvisitor.cpp index 7669a0a..0773371 100644 --- a/src/mandocvisitor.cpp +++ b/src/mandocvisitor.cpp @@ -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,7 +76,7 @@ void ManDocVisitor::visit(DocWhiteSpace *w) void ManDocVisitor::visit(DocSymbol *s) { if (m_hide) return; - const char *res = get_symbol_man(s->symbol()); + const char *res = HtmlEntityMapper::instance()->man(s->symbol()); if (res) { m_t << res; diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp index 573400d..46c9146 100644 --- a/src/perlmodgen.cpp +++ b/src/perlmodgen.cpp @@ -42,6 +42,7 @@ #include "membergroup.h" #include "section.h" #include "util.h" +#include "htmlentity.h" #define PERLOUTPUT_MAX_INDENTATION 40 @@ -541,8 +542,8 @@ void PerlModDocVisitor::visit(DocWhiteSpace *) void PerlModDocVisitor::visit(DocSymbol *sy) { - const DocSymbol::PerlSymb *res = get_symbol_perl(sy->symbol()); - const char *accent; + const DocSymbol::PerlSymb *res = HtmlEntityMapper::instance()->perl(sy->symbol()); + const char *accent=0; if (res-> symb) { switch (res->type) @@ -588,19 +589,24 @@ void PerlModDocVisitor::visit(DocSymbol *sy) case DocSymbol::Perl_ring: accent = "ring"; break; + default: + break; } leaveText(); - openItem("accent"); - m_output - .addFieldQuotedString("accent", accent) - .addFieldQuotedChar("letter", res->symb[0]); - closeItem(); + if (accent) + { + openItem("accent"); + m_output + .addFieldQuotedString("accent", accent) + .addFieldQuotedChar("letter", res->symb[0]); + closeItem(); + } break; } } else { - err("perl: non supported HTML-entity found: &%s;\n",get_symbol_item(sy->symbol())); + err("perl: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(sy->symbol())); } } diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h index 4610d43..36f86c4 100644 --- a/src/printdocvisitor.h +++ b/src/printdocvisitor.h @@ -21,6 +21,7 @@ #include <qglobal.h> #include "docvisitor.h" +#include "htmlentity.h" /*! Concrete visitor implementation for pretty printing */ class PrintDocVisitor : public DocVisitor @@ -56,14 +57,21 @@ class PrintDocVisitor : public DocVisitor void visit(DocSymbol *s) { indent_leaf(); - const char *res = get_symbol_print(s->symbol()); + const char *res = HtmlEntityMapper::instance()->utf8(s->symbol()); if (res) { - printf("%s",res); + if (qstrcmp(res,"%")==0) + { + printf("%%"); + } + else + { + printf("%s",res); + } } else { - printf("print: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + printf("print: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } } void visit(DocURL *u) diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp index 5aaa16a..a2d7eef 100644 --- a/src/rtfdocvisitor.cpp +++ b/src/rtfdocvisitor.cpp @@ -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,14 +122,14 @@ void RTFDocVisitor::visit(DocSymbol *s) { if (m_hide) return; DBG_RTF("{\\comment RTFDocVisitor::visit(DocSymbol)}\n"); - const char *res = get_symbol_rtf(s->symbol()); + const char *res = HtmlEntityMapper::instance()->rtf(s->symbol()); if (res) { m_t << res; } else { - err("RTF: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + err("RTF: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } m_lastIsPara=FALSE; } diff --git a/src/textdocvisitor.cpp b/src/textdocvisitor.cpp index 1761d12..8749a15 100644 --- a/src/textdocvisitor.cpp +++ b/src/textdocvisitor.cpp @@ -20,19 +20,20 @@ #include "textdocvisitor.h" #include "message.h" #include "util.h" +#include "htmlentity.h" //------------------------------------------------------------------------- void TextDocVisitor::visit(DocSymbol *s) { - const char *res = get_symbol_text(s->symbol()); + const char *res = HtmlEntityMapper::instance()->html(s->symbol()); if (res) { m_t << res; } else { - err("text: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + err("text: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } } diff --git a/src/util.cpp b/src/util.cpp index 66e2cfd..7307b99 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -60,6 +60,7 @@ #include "filename.h" #include "membergroup.h" #include "dirdef.h" +#include "htmlentity.h" #define ENABLE_TRACINGSUPPORT 0 @@ -5676,35 +5677,23 @@ 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]+[0-9]*;"); - if (init) - { - validate_html_entities(); - int num_standard_symbols = get_num_standard_symbols(); - for (int i = 0; i < num_standard_symbols; i++) - { - entityMap.insert(get_symbol_item((DocSymbol::SymType)i), get_symbol_UTF8((DocSymbol::SymType)i)); - } - init=FALSE; - } - if (s.length()==0) return result; static GrowBuf growBuf; growBuf.clear(); 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); } @@ -8214,444 +8203,3 @@ void convertProtectionLevel( // inListType,inProt,*outListType1,*outListType2); } -//! Number of doxygen commands mapped as if it were HTML entities -static const int number_html_mapped_cmds = 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 html_ent -{ - DocSymbol::SymType symb; - const char *item; - const char *UTF8; - const char *html; - const char *print; - const char *text; - const char *xml; - const char *docbook; - const char *latex; - const char *man; - const char *rtf; - DocSymbol::PerlSymb perl; -} html_entities[] = -{ - // HTML4 entities - {DocSymbol::Sym_nbsp, "nbsp", "\xc2\xa0", " ", " ", " ", "<nonbreakablespace/>", " ", "~", " ", "\\~", {" ",DocSymbol::Perl_char}}, - {DocSymbol::Sym_iexcl, "iexcl", "\xc2\xa1", "¡", "¡", "¡", "<iexcl/>", "¡", "!`", NULL, "\\'A1", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_cent, "cent", "\xc2\xa2", "¢", "¢", "¢", "<cent/>", "¢", "\\textcent{}", NULL, "\\'A2", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_pound, "pound", "\xc2\xa3", "£", "£", "£", "<pound/>", "£", "{$\\pounds$}", NULL, "\\'A3", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_curren, "curren", "\xc2\xa4", "¤", "¤", "¤", "<curren/>", "¤", "\\textcurrency{}", NULL, "\\'A4", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_yen, "yen", "\xc2\xa5", "¥", "¥", "¥", "<yen/>", "¥", "{$\\yen$}", NULL, "\\'A5", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_brvbar, "brvbar", "\xc2\xa6", "¦", "¦", "¦", "<brvbar/>", "¦", "\\textbrokenbar{}", NULL, "\\'A6", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_sect, "sect", "\xc2\xa7", "§", "§", "§", "<sect/>", "<simplesect/>", "{$\\S$}", NULL, "\\'A7", {"sect",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_uml, "uml", "\xc2\xa8", "¨", "¨", "¨", "<umlaut/>", "¨", "\\textasciidieresis{}", " \\*(4", "\\'A8", {" ",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_copy, "copy", "\xc2\xa9", "©", "©", "©", "<copy/>", "©", "\\copyright{}", "(C)", "\\'A9", {"copyright",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_ordf, "ordf", "\xc2\xaa", "ª", "ª", "ª", "<ordf/>", "ª", "\\textordfeminine{}", NULL, "\\'AA", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_laquo, "laquo", "\xc2\xab", "«", "«", "«", "<laquo/>", "«", "\\guillemotleft{}", NULL, "\\'AB", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_not, "not", "\xc2\xac", "¬", "¬", "¬", "<not/>", "¬", "\\textlnot", NULL, "\\'AC", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_shy, "shy", "\xc2\xad", "­", "­", "­", "<shy/>", "­", "{$\\-$}", NULL, "\\-", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_reg, "reg", "\xc2\xae", "®", "®", "®", "<registered/>", "®", "\\textregistered{}", "(R)", "\\'AE", {"registered",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_macr, "macr", "\xc2\xaf", "¯", "¯", "¯", "<macr/>", "¯", "\\={}", NULL, "\\'AF ", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_deg, "deg", "\xc2\xb0", "°", "°", "°", "<deg/>", "°", "\\textdegree", NULL, "\\'B0", {"deg",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_plusmn, "plusmn", "\xc2\xb1", "±", "±", "±", "<plusmn/>", "±", "{$\\pm$}", NULL, "\\'B1", {"+/-",DocSymbol::Perl_string}}, - {DocSymbol::Sym_sup2, "sup2", "\xc2\xb2", "²", "²", "²", "<sup2/>", "²", "\\texttwosuperior{}", NULL, "\\'B2", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_sup3, "sup3", "\xc2\xb3", "³", "³", "³", "<sup3/>", "³", "\\textthreesuperior{}", NULL, "\\'B3", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_acute, "acute", "\xc2\xb4", "´", "´", "´", "<acute/>", "´", "\\'{}", NULL, "\\'B4", {" ",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_micro, "micro", "\xc2\xb5", "µ", "µ", "µ", "<micro/>", "µ", "{$\\mu$}", NULL, "\\'B5", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_para, "para", "\xc2\xb6", "¶", "¶", "¶", "<para/>", "¶", "{$\\P$}", NULL, "\\'B6", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_middot, "middot", "\xc2\xb7", "·", "·", "·", "<middot/>", "·", "\\textperiodcentered{}", NULL, "\\'B7", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_cedil, "cedil", "\xc2\xb8", "¸", "¸", "¸", "<cedil/>", "¸", "\\c{}", " \\*,", "\\'B8", {" ",DocSymbol::Perl_cedilla}}, - {DocSymbol::Sym_sup1, "sup1", "\xc2\xb9", "¹", "¹", "¹", "<sup1/>", "¹", "\\textonesuperior{}", NULL, "\\'B9", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_ordm, "ordm", "\xc2\xba", "º", "º", "º", "<ordm/>", "º", "\\textordmasculine{}", NULL, "\\'BA", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_raquo, "raquo", "\xc2\xbb", "»", "»", "»", "<raquo/>", "»", "\\guillemotright{}", NULL, "\\'BB", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_frac14, "frac14", "\xc2\xbc", "¼", "¼", "¼", "<frac14/>", "¼", "{$\\frac14$}", "1/4", "\\'BC", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_frac12, "frac12", "\xc2\xbd", "½", "½", "½", "<frac12/>", "½", "{$\\frac12$}", "1/2", "\\'BD", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_frac34, "frac34", "\xc2\xbe", "¾", "¾", "¾", "<frac34/>", "¾", "{$\\frac34$}", "3/4", "\\'BE", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_iquest, "iquest", "\xc2\xbf", "¿", "¿", "¿", "<iquest/>", "¿", "?`", NULL, "\\'BF", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_Agrave, "Agrave", "\xc3\x80", "À", "À", "À", "<Agrave/>", "À", "\\`{A}", "A\\*:", "\\'C0", {"A",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_Aacute, "Aacute", "\xc3\x81", "Á", "Á", "Á", "<Aacute/>", "Á", "\\'{A}", "A\\*(`", "\\'C1", {"A",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_Acirc, "Acirc", "\xc3\x82", "Â", "Â", "Â", "<Acirc/>", "Â", "\\^{A}", "A\\*^", "\\'C2", {"A",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_Atilde, "Atilde", "\xc3\x83", "Ã", "Ã", "Ã", "<Atilde/>", "Ã", "\\~{A}", "A\\*~", "\\'C3", {"A",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_Auml, "Auml", "\xc3\x84", "Ä", "Ä", "Ä", "<Aumlaut/>", "Ä", "\\\"{A}", "A\\*(4", "\\'C4", {"A",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_Aring, "Aring", "\xc3\x85", "Å", "Å", "Å", "<Aring/>", "Å", "\\AA", "A\\*o", "\\'C5", {"A",DocSymbol::Perl_ring}}, - {DocSymbol::Sym_AElig, "AElig", "\xc3\x86", "Æ", "Æ", "Æ", "<AElig/>", "Æ", "{\\AE}", NULL, "\\'C6", {"AElig",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Ccedil, "Ccedil", "\xc3\x87", "Ç", "Ç", "Ç", "<Ccedil/>", "Ç", "\\c{C}", "C\\*,", "\\'C7", {"C",DocSymbol::Perl_cedilla}}, - {DocSymbol::Sym_Egrave, "Egrave", "\xc3\x88", "È", "È", "È", "<Egrave/>", "È", "\\`{E}", "E\\*:", "\\'C8", {"E",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_Eacute, "Eacute", "\xc3\x89", "É", "É", "É", "<Eacute/>", "É", "\\'{E}", "E\\*(`", "\\'C9", {"E",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_Ecirc, "Ecirc", "\xc3\x8a", "Ê", "Ê", "Ê", "<Ecirc/>", "Ê", "\\^{E}", "E\\*^", "\\'CA", {"E",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_Euml, "Euml", "\xc3\x8b", "Ë", "Ë", "Ë", "<Eumlaut/>", "Ë", "\\\"{E}", "E\\*(4", "\\'CB", {"E",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_Igrave, "Igrave", "\xc3\x8c", "Ì", "Ì", "Ì", "<Igrave/>", "Ì", "\\`{I}", "I\\*:", "\\'CC", {"I",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_Iacute, "Iacute", "\xc3\x8d", "Í", "Í", "Í", "<Iacute/>", "Í", "\\'{I}", "I\\*(`", "\\'CD", {"I",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_Icirc, "Icirc", "\xc3\x8e", "Î", "Î", "Î", "<Icirc/>", "Î", "\\^{I}", "I\\*^", "\\'CE", {"I",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_Iuml, "Iuml", "\xc3\x8f", "Ï", "Ï", "Ï", "<Iumlaut/>", "Ï", "\\\"{I}", "I\\*(4", "\\'CF", {"I",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_ETH, "ETH", "\xc3\x90", "Ð", "Ð", "Ð", "<ETH/>", "Ð", "\\DH", NULL, "\\'D0", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_Ntilde, "Ntilde", "\xc3\x91", "Ñ", "Ñ", "Ñ", "<Ntilde/>", "Ñ", "\\~{N}", "N\\*~", "\\'D1", {"N",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_Ograve, "Ograve", "\xc3\x92", "Ò", "Ò", "Ò", "<Ograve/>", "Ò", "\\`{O}", "O\\*:", "\\'D2", {"O",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_Oacute, "Oacute", "\xc3\x93", "Ó", "Ó", "Ó", "<Oacute/>", "Ó", "\\'{O}", "O\\*(`", "\\'D3", {"O",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_Ocirc, "Ocirc", "\xc3\x94", "Ô", "Ô", "Ô", "<Ocirc/>", "Ô", "\\^{O}", "O\\*^", "\\'D4", {"O",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_Otilde, "Otilde", "\xc3\x95", "Õ", "Õ", "Õ", "<Otilde/>", "Õ", "\\~{O}", "O\\*~", "\\'D5", {"O",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_Ouml, "Ouml", "\xc3\x96", "Ö", "Ö", "Ö", "<Oumlaut/>", "Ö", "\\\"{O}", "O\\*(4", "\\'D6", {"O",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_times, "times", "\xc3\x97", "×", "×", "×", "<imes/>", "×", "{$\\times$}", NULL, "\\'D7", {"*",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Oslash, "Oslash", "\xc3\x98", "Ø", "Ø", "Ø", "<Oslash/>", "Ø", "{\\O}", "O\x08/", "\\'D8", {"O",DocSymbol::Perl_slash}}, - {DocSymbol::Sym_Ugrave, "Ugrave", "\xc3\x99", "Ù", "Ù", "Ù", "<Ugrave/>", "Ù", "\\`{U}", "U\\*:", "\\'D9", {"U",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_Uacute, "Uacute", "\xc3\x9a", "Ú", "Ú", "Ú", "<Uacute/>", "Ú", "\\'{U}", "U\\*(`", "\\'DA", {"U",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_Ucirc, "Ucirc", "\xc3\x9b", "Û", "Û", "Û", "<Ucirc/>", "Û", "\\^{U}", "U\\*^", "\\'DB", {"U",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_Uuml, "Uuml", "\xc3\x9c", "Ü", "Ü", "Ü", "<Uumlaut/>", "Ü", "\\\"{U}", "U\\*(4", "\\'DC", {"U",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_Yacute, "Yacute", "\xc3\x9d", "Ý", "Ý", "Ý", "<Yacute/>", "Ý", "\\'{Y}", "Y\\*(`", "\\'DD", {"Y",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_THORN, "THORN", "\xc3\x9e", "Þ", "Þ", "Þ", "<THORN/>", "Þ", "\\TH", NULL, "\\'DE", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_szlig, "szlig", "\xc3\x9f", "ß", "ß", "ß", "<szlig/>", "ß", "{\\ss}", "s\\*:", "\\'DF", {"szlig",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_agrave, "agrave", "\xc3\xa0", "à", "à", "à", "<agrave/>", "à", "\\`{a}", "a\\*:", "\\'E0", {"a",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_aacute, "aacute", "\xc3\xa1", "á", "á", "á", "<aacute/>", "á", "\\'{a}", "a\\*(`", "\\'E1", {"a",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_acirc, "acirc", "\xc3\xa2", "â", "â", "â", "<acirc/>", "â", "\\^{a}", "a\\*^", "\\'E2", {"a",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_atilde, "atilde", "\xc3\xa3", "ã", "ã", "ã", "<atilde/>", "ã", "\\~{a}", "a\\*~", "\\'E3", {"a",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_auml, "auml", "\xc3\xa4", "ä", "ä", "ä", "<aumlaut/>", "ä", "\\\"{a}", "a\\*(4", "\\'E4", {"a",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_aring, "aring", "\xc3\xa5", "å", "å", "å", "<aring/>", "å", "\\aa", "a\\*o", "\\'E5", {"a",DocSymbol::Perl_ring}}, - {DocSymbol::Sym_aelig, "aelig", "\xc3\xa6", "æ", "æ", "æ", "<aelig/>", "æ", "{\\ae}", NULL, "\\'E6", {"aelig",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_ccedil, "ccedil", "\xc3\xa7", "ç", "ç", "ç", "<ccedil/>", "ç", "\\c{c}", "c\\*,", "\\'E7", {"c",DocSymbol::Perl_cedilla}}, - {DocSymbol::Sym_egrave, "egrave", "\xc3\xa8", "è", "è", "è", "<egrave/>", "è", "\\`{e}", "e\\*:", "\\'E8", {"e",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_eacute, "eacute", "\xc3\xa9", "é", "é", "é", "<eacute/>", "é", "\\'{e}", "e\\*(`", "\\'E9", {"e",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_ecirc, "ecirc", "\xc3\xaa", "ê", "ê", "ê", "<ecirc/>", "ê", "\\^{e}", "e\\*^", "\\'EA", {"e",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_euml, "euml", "\xc3\xab", "ë", "ë", "ë", "<eumlaut/>", "ë", "\\\"{e}", "e\\*(4", "\\'EB", {"e",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_igrave, "igrave", "\xc3\xac", "ì", "ì", "ì", "<igrave/>", "ì", "\\`{\\i}", "i\\*:", "\\'EC", {"i",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_iacute, "iacute", "\xc3\xad", "í", "í", "í", "<iacute/>", "í", "\\'{\\i}", "i\\*(`", "\\'ED", {"i",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_icirc, "icirc", "\xc3\xae", "î", "î", "î", "<icirc/>", "î", "\\^{\\i}", "i\\*^", "\\'EE", {"i",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_iuml, "iuml", "\xc3\xaf", "ï", "ï", "ï", "<iumlaut/>", "ï", "\\\"{\\i}", "i\\*(4", "\\'EF", {"i",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_eth, "eth", "\xc3\xb0", "ð", "ð", "ð", "<eth/>", "ð", "\\dh", NULL, "\\'F0", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_ntilde, "ntilde", "\xc3\xb1", "ñ", "ñ", "ñ", "<ntilde/>", "ñ", "\\~{n}", "n\\*~", "\\'F1", {"n",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_ograve, "ograve", "\xc3\xb2", "ò", "ò", "ò", "<ograve/>", "ò", "\\`{o}", "o\\*:", "\\'F2", {"o",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_oacute, "oacute", "\xc3\xb3", "ó", "ó", "ó", "<oacute/>", "ó", "\\'{o}", "o\\*(`", "\\'F3", {"o",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_ocirc, "ocirc", "\xc3\xb4", "ô", "ô", "ô", "<ocirc/>", "ô", "\\^{o}", "o\\*^", "\\'F4", {"o",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_otilde, "otilde", "\xc3\xb5", "õ", "õ", "õ", "<otilde/>", "õ", "\\~{o}", "o\\*~", "\\'F5", {"o",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_ouml, "ouml", "\xc3\xb6", "ö", "ö", "ö", "<oumlaut/>", "ö", "\\\"{o}", "o\\*(4", "\\'F6", {"o",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_divide, "divide", "\xc3\xb7", "÷", "÷", "÷", "<divide/>", "÷", "{$\\div$}", NULL, "\\'F7", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_oslash, "oslash", "\xc3\xb8", "ø", "ø", "ø", "<oslash/>", "ø", "{\\o}", "o\x08/", "\\'F8", {"o",DocSymbol::Perl_slash}}, - {DocSymbol::Sym_ugrave, "ugrave", "\xc3\xb9", "ù", "ù", "ù", "<ugrave/>", "ù", "\\`{u}", "u\\*:", "\\'F9", {"u",DocSymbol::Perl_grave}}, - {DocSymbol::Sym_uacute, "uacute", "\xc3\xba", "ú", "ú", "ú", "<uacute/>", "ú", "\\'{u}", "u\\*(`", "\\'FA", {"u",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_ucirc, "ucirc", "\xc3\xbb", "û", "û", "û", "<ucirc/>", "û", "\\^{u}", "u\\*^", "\\'FB", {"u",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_uuml, "uuml", "\xc3\xbc", "ü", "ü", "ü", "<uumlaut/>", "ü", "\\\"{u}", "u\\*(4", "\\'FC", {"u",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_yacute, "yacute", "\xc3\xbd", "ý", "ý", "ý", "<yacute/>", "ý", "\\'{y}", "y\\*(`", "\\'FD", {"y",DocSymbol::Perl_acute}}, - {DocSymbol::Sym_thorn, "thorn", "\xc3\xbe", "þ", "þ", "þ", "<thorn/>", "þ", "\\th", NULL, "\\'FE", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_yuml, "yuml", "\xc3\xbf", "ÿ", "ÿ", "ÿ", "<yumlaut/>", "ÿ", "\\\"{y}", "y\\*(4", "\\'FF", {"y",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_fnof, "fnof", "\xc6\x92", "ƒ", "ƒ", "ƒ", "<fnof/>", "ƒ", "\\textflorin", NULL, "\\'83", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_Alpha, "Alpha", "\xce\x91", "Α", "Α", "Α", "<Alpha/>", "Α", "A", NULL, "\\u0913?", {"A",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Beta, "Beta", "\xce\x92", "Β", "Β", "Β", "<Beta/>", "Β", "B", NULL, "\\u0914?", {"B",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Gamma, "Gamma", "\xce\x93", "Γ", "Γ", "Γ", "<Gamma/>", "Γ", "{$\\Gamma$}", NULL, "\\u0915?", {"Gamma",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Delta, "Delta", "\xce\x94", "Δ", "Δ", "Δ", "<Delta/>", "Δ", "{$\\Delta$}", NULL, "\\u0916?", {"Delta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Epsilon, "Epsilon", "\xce\x95", "Ε", "Ε", "Ε", "<Epsilon/>", "Ε", "E", NULL, "\\u0917?", {"E",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Zeta, "Zeta", "\xce\x96", "Ζ", "Ζ", "Ζ", "<Zeta/>", "Ζ", "Z", NULL, "\\u0918?", {"Z",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Eta, "Eta", "\xce\x97", "Η", "Η", "Η", "<Eta/>", "Η", "H", NULL, "\\u0919?", {"H",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Theta, "Theta", "\xce\x98", "Θ", "Θ", "Θ", "<Theta/>", "Θ", "{$\\Theta$}", NULL, "\\u0920?", {"Theta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Iota, "Iota", "\xce\x99", "Ι", "Ι", "Ι", "<Iota/>", "Ι", "I", NULL, "\\u0921?", {"I",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Kappa, "Kappa", "\xce\x9a", "Κ", "Κ", "Κ", "<Kappa/>", "Κ", "K", NULL, "\\u0922?", {"K",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Lambda, "Lambda", "\xce\x9b", "Λ", "Λ", "Λ", "<Lambda/>", "Λ", "{$\\Lambda$}", NULL, "\\u0923?", {"Lambda",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Mu, "Mu", "\xce\x9c", "Μ", "Μ", "Μ", "<Mu/>", "Μ", "M", NULL, "\\u0924?", {"M",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Nu, "Nu", "\xce\x9d", "Ν", "Ν", "Ν", "<Nu/>", "Ν", "N", NULL, "\\u0925?", {"N",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Xi, "Xi", "\xce\x9e", "Ξ", "Ξ", "Ξ", "<Xi/>", "Ξ", "{$\\Xi$}", NULL, "\\u0926?", {"Xi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Omicron, "Omicron", "\xce\x9f", "Ο", "Ο", "Ο", "<Omicron/>", "Ο", "O", NULL, "\\u0927?", {"O",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Pi, "Pi", "\xce\xa0", "Π", "Π", "Π", "<Pi/>", "Π", "{$\\Pi$}", NULL, "\\u0928?", {"Pi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Rho, "Rho", "\xce\xa1", "Ρ", "Ρ", "Ρ", "<Rho/>", "Ρ", "P", NULL, "\\u0929?", {"P",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Sigma, "Sigma", "\xce\xa3", "Σ", "Σ", "Σ", "<Sigma/>", "Σ", "{$\\Sigma$}", NULL, "\\u0931?", {"Sigma",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Tau, "Tau", "\xce\xa4", "Τ", "Τ", "Τ", "<Tau/>", "Τ", "T", NULL, "\\u0932?", {"T",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Upsilon, "Upsilon", "\xce\xa5", "Υ", "Υ", "Υ", "<Upsilon/>", "Υ", "{$\\Upsilon$}", NULL, "\\u0933?", {"Upsilon",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Phi, "Phi", "\xce\xa6", "Φ", "Φ", "Φ", "<Phi/>", "Φ", "{$\\Phi$}", NULL, "\\u0934?", {"Phi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Chi, "Chi", "\xce\xa7", "Χ", "Χ", "Χ", "<Chi/>", "Χ", "X", NULL, "\\u0935?", {"X",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Psi, "Psi", "\xce\xa8", "Ψ", "Ψ", "Ψ", "<Psi/>", "Ψ", "{$\\Psi$}", NULL, "\\u0936?", {"Psi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_Omega, "Omega", "\xce\xa9", "Ω", "Ω", "Ω", "<Omega/>", "Ω", "{$\\Omega$}", NULL, "\\u0937?", {"Omega",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_alpha, "alpha", "\xce\xb1", "α", "α", "α", "<alpha/>", "α", "{$\\alpha$}", NULL, "\\u0945?", {"alpha",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_beta, "beta", "\xce\xb2", "β", "β", "β", "<beta/>", "β", "{$\\beta$}", NULL, "\\u0946?", {"beta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_gamma, "gamma", "\xce\xb3", "γ", "γ", "γ", "<gamma/>", "γ", "{$\\gamma$}", NULL, "\\u0947?", {"gamma",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_delta, "delta", "\xce\xb4", "δ", "δ", "δ", "<delta/>", "δ", "{$\\delta$}", NULL, "\\u0948?", {"delta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_epsilon, "epsilon", "\xce\xb5", "ε", "ε", "ε", "<epsilon/>", "ε", "{$\\varepsilon$}", NULL, "\\u0949?", {"epsilon",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_zeta, "zeta", "\xce\xb6", "ζ", "ζ", "ζ", "<zeta/>", "ζ", "{$\\zeta$}", NULL, "\\u0950?", {"zeta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_eta, "eta", "\xce\xb7", "η", "η", "η", "<eta/>", "η", "{$\\eta$}", NULL, "\\u0951?", {"eta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_theta, "theta", "\xce\xb8", "θ", "θ", "θ", "<theta/>", "θ", "{$\\theta$}", NULL, "\\u0952?", {"theta",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_iota, "iota", "\xce\xb9", "ι", "ι", "ι", "<iota/>", "ι", "{$\\iota$}", NULL, "\\u0953?", {"iota",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_kappa, "kappa", "\xce\xba", "κ", "κ", "κ", "<kappa/>", "κ", "{$\\kappa$}", NULL, "\\u0954?", {"kappa",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_lambda, "lambda", "\xce\xbb", "λ", "λ", "λ", "<lambda/>", "λ", "{$\\lambda$}", NULL, "\\u0955?", {"lambda",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_mu, "mu", "\xce\xbc", "μ", "μ", "μ", "<mu/>", "μ", "{$\\mu$}", NULL, "\\u0956?", {"mu",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_nu, "nu", "\xce\xbd", "ν", "ν", "ν", "<nu/>", "ν", "{$\\nu$}", NULL, "\\u0957?", {"nu",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_xi, "xi", "\xce\xbe", "ξ", "ξ", "ξ", "<xi/>", "ξ", "{$\\xi$}", NULL, "\\u0958?", {"xi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_omicron, "omicron", "\xce\xbf", "ο", "ο", "ο", "<omicron/>", "ο", "{$\\omicron$}", NULL, "\\u0959?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_pi, "pi", "\xcf\x80", "π", "π", "π", "<pi/>", "π", "{$\\pi$}", NULL, "\\u0960?", {"pi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_rho, "rho", "\xcf\x81", "ρ", "ρ", "ρ", "<rho/>", "ρ", "{$\\rho$}", NULL, "\\u0961?", {"rho",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_sigmaf, "sigmaf", "\xcf\x82", "ς", "ς", "ς", "<sigmaf/>", "ς", "{$\\varsigma$}", NULL, "\\u0962?", {"sigma",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_sigma, "sigma", "\xcf\x83", "σ", "σ", "σ", "<sigma/>", "σ", "{$\\sigma$}", NULL, "\\u0963?", {"sigma",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_tau, "tau", "\xcf\x84", "τ", "τ", "τ", "<tau/>", "τ", "{$\\tau$}", NULL, "\\u0964?", {"tau",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_upsilon, "upsilon", "\xcf\x85", "υ", "υ", "υ", "<upsilon/>", "υ", "{$\\upsilon$}", NULL, "\\u0965?", {"upsilon",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_phi, "phi", "\xcf\x86", "φ", "φ", "φ", "<phi/>", "φ", "{$\\varphi$}", NULL, "\\u0966?", {"phi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_chi, "chi", "\xcf\x87", "χ", "χ", "χ", "<chi/>", "χ", "{$\\chi$}", NULL, "\\u0967?", {"chi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_psi, "psi", "\xcf\x88", "ψ", "ψ", "ψ", "<psi/>", "ψ", "{$\\psi$}", NULL, "\\u0968?", {"psi",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_omega, "omega", "\xcf\x89", "ω", "ω", "ω", "<omega/>", "ω", "{$\\omega$}", NULL, "\\u0969?", {"omega",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_thetasym, "thetasym", "\xcf\x91", "ϑ", "ϑ", "ϑ", "<thetasym/>", "ϑ", "{$\\vartheta$}", NULL, "\\u977?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_upsih, "upsih", "\xcf\x92", "ϒ", "ϒ", "ϒ", "<upsih/>", "ϒ", "{$\\Upsilon$}", NULL, "\\u978?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_piv, "piv", "\xcf\x96", "ϖ", "ϖ", "ϖ", "<piv/>", "ϖ", "{$\\varpi$}", NULL, "\\u982?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_bull, "bull", "\xe2\x80\xa2", "•", "•", "•", "<bull/>", "•", "\\textbullet{}", NULL, "\\'95", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_hellip, "hellip", "\xe2\x80\xa6", "…", "…", "…", "<hellip/>", "…", "{$\\cdots$}", NULL, "\\'85", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_prime, "prime", "\xe2\x80\xb2", "′", "′", "′", "<prime/>", "′", "'", NULL, "\\u8242?", {"\\\'",DocSymbol::Perl_string}}, - {DocSymbol::Sym_Prime, "Prime", "\xe2\x80\xb3", "″", "″", "″", "<Prime/>", "″", "''", NULL, "\\u8243?", {"\"",DocSymbol::Perl_char}}, - {DocSymbol::Sym_oline, "oline", "\xe2\x80\xbe", "‾", "‾", "‾", "<oline/>", "‾", "{$\\overline{\\,}$}", NULL, "\\u8254?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_frasl, "frasl", "\xe2\x81\x84", "⁄", "⁄", "⁄", "<frasl/>", "⁄", "/", NULL, "\\u8260?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_weierp, "weierp", "\xe2\x84\x98", "℘", "℘", "℘", "<weierp/>", "℘", "{$\\wp$}", NULL, "\\u8472?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_image, "image", "\xe2\x84\x91", "ℑ", "ℑ", "ℑ", "<image/>", "ℑ", "{$\\Im$}", NULL, "\\u8465?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_real, "real", "\xe2\x84\x9c", "ℜ", "ℜ", "ℜ", "<real/>", "ℜ", "{$\\Re$}", NULL, "\\u8476?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_trade, "trade", "\xe2\x84\xa2", "™", "(TM)", "&tm;", "<trademark/>", "™", "\\texttrademark{}", "(TM)", "\\'99", {"trademark",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_alefsym, "alefsym", "\xe2\x85\xb5", "ℵ", "ℵ", "ℵ", "<alefsym/>", "ℵ", "{$\\aleph$}", NULL, "\\u8501?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_larr, "larr", "\xe2\x86\x90", "←", "←", "←", "<larr/>", "←", "{$\\leftarrow$}", NULL, "\\u8592?", {"<-",DocSymbol::Perl_string}}, - {DocSymbol::Sym_uarr, "uarr", "\xe2\x86\x91", "↑", "↑", "↑", "<uarr/>", "↑", "{$\\uparrow$}", NULL, "\\u8593?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_rarr, "rarr", "\xe2\x86\x92", "→", "→", "→", "<rarr/>", "→", "{$\\rightarrow$}", NULL, "\\u8594?", {"->",DocSymbol::Perl_string}}, - {DocSymbol::Sym_darr, "darr", "\xe2\x86\x93", "↓", "↓", "↓", "<darr/>", "↓", "{$\\downarrow$}", NULL, "\\u8595?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_harr, "harr", "\xe2\x86\x94", "↔", "↔", "↔", "<harr/>", "↔", "{$\\leftrightarrow$}", NULL, "\\u8596?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_crarr, "crarr", "\xe2\x86\xb5", "↵", "↵", "↵", "<crarr/>", "↵", "{$\\lrcorner$}" /* best I could find */, NULL, "\\u8629?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_lArr, "lArr", "\xe2\x87\x90", "⇐", "⇐", "⇐", "<lArr/>", "⇐", "{$\\Leftarrow$}", NULL, "\\u8656?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_uArr, "uArr", "\xe2\x87\x91", "⇑", "⇑", "⇑", "<uArr/>", "⇑", "{$\\Uparrow$}", NULL, "\\u8657?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_rArr, "rArr", "\xe2\x87\x92", "⇒", "⇒", "⇒", "<rArr/>", "⇒", "{$\\Rightarrow$}", NULL, "\\u8658?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_dArr, "dArr", "\xe2\x87\x93", "⇓", "⇓", "⇓", "<dArr/>", "⇓", "{$\\Downarrow$}", NULL, "\\u8659?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_hArr, "hArr", "\xe2\x87\x94", "⇔", "⇔", "⇔", "<hArr/>", "⇔", "{$\\Leftrightarrow$}", NULL, "\\u8660?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_forall, "forall", "\xe2\x88\x80", "∀", "∀", "∀", "<forall/>", "∀", "{$\\forall$}", NULL, "\\u8704?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_part, "part", "\xe2\x88\x82", "∂", "∂", "∂", "<part/>", "∂", "{$\\partial$}", NULL, "\\u8706?", {"partial",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_exist, "exist", "\xe2\x88\x83", "∃", "∃", "∃", "<exist/>", "∃", "{$\\exists$}", NULL, "\\u8707?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_empty, "empty", "\xe2\x88\x85", "∅", "∅", "∅", "<empty/>", "∅", "{$\\emptyset$}", NULL, "\\u8709?", {"empty",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_nabla, "nabla", "\xe2\x88\x87", "∇", "∇", "∇", "<nabla/>", "∇", "{$\\nabla$}", NULL, "\\u8711?", {"nabla",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_isin, "isin", "\xe2\x88\x88", "∈", "∈", "∈", "<isin/>", "∈", "{$\\in$}", NULL, "\\u8712?", {"in",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_notin, "notin", "\xe2\x88\x89", "∉", "∉", "∉", "<notin/>", "∉", "{$\\notin$}", NULL, "\\u8713?", {"notin",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_ni, "ni", "\xe2\x88\x8b", "∋", "∋", "∋", "<ni/>", "∋", "{$\\ni$}", NULL, "\\u8715?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_prod, "prod", "\xe2\x88\x8f", "∏", "∏", "∏", "<prod/>", "∏", "{$\\prod$}", NULL, "\\u8719?", {"prod",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_sum, "sum", "\xe2\x88\x91", "∑", "∑", "∑", "<sum/>", "∑", "{$\\sum$}", NULL, "\\u8721?", {"sum",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_minus, "minus", "\xe2\x88\x92", "−", "−", "−", "<minus/>", "−", "-", NULL, "\\u8722?", {"-",DocSymbol::Perl_char}}, - {DocSymbol::Sym_lowast, "lowast", "\xe2\x88\x97", "∗", "∗", "∗", "<lowast/>", "∗", "{$\\ast$}", NULL, "\\u8727?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_radic, "radic", "\xe2\x88\x9a", "√", "√", "√", "<radic/>", "√", "{$\\surd$}", NULL, "\\u8730?", {"sqrt",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_prop, "prop", "\xe2\x88\x9d", "∝", "∝", "∝", "<prop/>", "∝", "{$\\propto$}", NULL, "\\u8733?", {"propto",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_infin, "infin", "\xe2\x88\x9e", "∞", "∞", "∞", "<infin/>", "∞", "{$\\infty$}", NULL, "\\u8734?", {"inf",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_ang, "ang", "\xe2\x88\xa0", "∠", "∠", "∠", "<ang/>", "∠", "{$\\angle$}", NULL, "\\u8736?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_and, "and", "\xe2\x88\xa7", "∧", "∧", "∧", "<and/>", "∧", "{$\\wedge$}", NULL, "\\u8743?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_or, "or", "\xe2\x88\xa8", "∨", "∨", "∨", "<or/>", "∨", "{$\\vee$}", NULL, "\\u8744?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_cap, "cap", "\xe2\x88\xa9", "∩", "∩", "∩", "<cap/>", "∩", "{$\\cap$}", NULL, "\\u8745?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_cup, "cup", "\xe2\x88\xaa", "∪", "∪", "∪", "<cup/>", "∪", "{$\\cup$}", NULL, "\\u8746?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_int, "int", "\xe2\x88\xab", "∫", "∫", "∫", "<int/>", "∫", "{$\\int$}", NULL, "\\u8747?", {"int",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_there4, "there4", "\xe2\x88\xb4", "∴", "∴", "∴", "<there4/>", "∴", "{$\\therefore$}", NULL, "\\u8756?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_sim, "sim", "\xe2\x88\xbc", "∼", "∼", "∼", "<sim/>", "∼", "{$\\sim$}", NULL, "\\u8764?", {"~",DocSymbol::Perl_char}}, - {DocSymbol::Sym_cong, "cong", "\xe2\x89\x85", "≅", "≅", "≅", "<cong/>", "≅", "{$\\cong$}", NULL, "\\u8773?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_asymp, "asymp", "\xe2\x89\x88", "≈", "≈", "≈", "<asymp/>", "≈", "{$\\approx$}", NULL, "\\u8776?", {"approx",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_ne, "ne", "\xe2\x89\xa0", "≠", "≠", "≠", "<ne/>", "≠", "{$\\ne$}", NULL, "\\u8800?", {"!=",DocSymbol::Perl_string}}, - {DocSymbol::Sym_equiv, "equiv", "\xe2\x89\xa1", "≡", "≡", "≡", "<equiv/>", "≡", "{$\\equiv$}", NULL, "\\u8801?", {"equiv",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_le, "le", "\xe2\x89\xa4", "≤", "≤", "≤", "<le/>", "≤", "{$\\le$}", NULL, "\\u8804?", {"<=",DocSymbol::Perl_string}}, - {DocSymbol::Sym_ge, "ge", "\xe2\x89\xa5", "≥", "≥", "≥", "<ge/>", "≥", "{$\\ge$}", NULL, "\\u8805?", {">=",DocSymbol::Perl_string}}, - {DocSymbol::Sym_sub, "sub", "\xe2\x8a\x82", "⊂", "⊂", "⊂", "<sub/>", "⊂", "{$\\subset$}", NULL, "\\u8834?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_sup, "sup", "\xe2\x8a\x83", "⊃", "⊃", "⊃", "<sup/>", "⊃", "{$\\supset$}", NULL, "\\u8835?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_nsub, "nsub", "\xe2\x8a\x84", "⊄", "⊄", "⊄", "<nsub/>", "⊄", "{$\\not\\subset$}", NULL, "\\u8836?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_sube, "sube", "\xe2\x8a\x86", "⊆", "⊆", "⊆", "<sube/>", "⊆", "{$\\subseteq$}", NULL, "\\u8838?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_supe, "supe", "\xe2\x8a\x87", "⊇", "⊇", "⊇", "<supe/>", "⊇", "{$\\supseteq$}", NULL, "\\u8839?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_oplus, "oplus", "\xe2\x8a\x95", "⊕", "⊕", "⊕", "<oplus/>", "⊕", "{$\\oplus$}", NULL, "\\u8853?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_otimes, "otimes", "\xe2\x8a\x97", "⊗", "⊗", "⊗", "<otimes/>", "⊗", "{$\\otimes$}", NULL, "\\u8855?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_perp, "perp", "\xe2\x8a\xa5", "⊥", "⊥", "⊥", "<perp/>", "⊥", "{$\\perp$}", NULL, "\\u8869?", {"perp",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_sdot, "sdot", "\xe2\x8b\x85", "⋅", "⋅", "⋅", "<sdot/>", "⋅", "{$\\cdot$}", NULL, "\\u8901?", {".",DocSymbol::Perl_char}}, - {DocSymbol::Sym_lceil, "lceil", "\xe2\x8c\x88", "⌈", "⌈", "⌈", "<lceil/>", "⌈", "{$\\lceil$}", NULL, "\\u8968?", {"lceil",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_rceil, "rceil", "\xe2\x8c\x89", "⌉", "⌉", "⌉", "<rceil/>", "⌉", "{$\\rceil$}", NULL, "\\u8969?", {"rceil",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_lfloor, "lfloor", "\xe2\x8c\x8a", "⌊", "⌊", "⌊", "<lfloor/>", "⌊", "{$\\lfloor$}", NULL, "\\u8970?", {"lfloor",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_rfloor, "rfloor", "\xe2\x8c\x8b", "⌋", "⌋", "⌋", "<rfloor/>", "⌋", "{$\\rfloor$}", NULL, "\\u8971?", {"rfloor",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_lang, "lang", "\xe2\x8c\xa9", "⟨", "⟨", "⟨", "<lang/>", "〈", "{$\\langle$}", NULL, "\\u9001?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_rang, "rang", "\xe2\x8c\xaa", "⟩", "⟩", "⟩", "<rang/>", "〉", "{$\\rangle$}", NULL, "\\u9002?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_loz, "loz", "\xe2\x97\x8a", "◊", "◊", "◊", "<loz/>", "◊", "{$\\lozenge$}", NULL, "\\u9674?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_spades, "spades", "\xe2\x99\xa0", "♠", "♠", "♠", "<spades/>", "♠", "{$\\spadesuit$}", NULL, "\\u9824?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_clubs, "clubs", "\xe2\x99\xa3", "♣", "♣", "♣", "<clubs/>", "♣", "{$\\clubsuit$}", NULL, "\\u9827?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_hearts, "hearts", "\xe2\x99\xa5", "♥", "♥", "♥", "<hearts/>", "♥", "{$\\heartsuit$}", NULL, "\\u9829?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_diams, "diams", "\xe2\x99\xa6", "♦", "♦", "♦", "<diams/>", "♦", "{$\\diamondsuit$}", NULL, "\\u9830?", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_quot, "quot", "\"", "\"", "\"", "\"", "\"", """, "\"", "\"", "\"", {"\"",DocSymbol::Perl_char}}, - {DocSymbol::Sym_amp, "amp", "&", "&", "&", "&", "&", "&", "\\&", "&", "&", {"&",DocSymbol::Perl_char}}, - {DocSymbol::Sym_lt, "lt", "<", "<", "<", "<", "<", "<", "<", "<", "<", {"<",DocSymbol::Perl_char}}, - {DocSymbol::Sym_gt, "gt", ">", ">", ">", ">", ">", ">", ">", ">", ">", {">",DocSymbol::Perl_char}}, - {DocSymbol::Sym_OElig, "OElig", "\xc5\x92", "Œ", "Œ", "Œ", "<OElig/>", "Œ", "\\OE", NULL, "\\'8C", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_oelig, "oelig", "\xc5\x93", "œ", "œ", "œ", "<oelig/>", "œ", "\\oe", NULL, "\\'9C", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_Scaron, "Scaron", "\xc5\xa0", "Š", "Š", "Š", "<Scaron/>", "Š", "\\v{S}", NULL, "\\'8A", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_scaron, "scaron", "\xc5\xa1", "š", "š", "š", "<scaron/>", "š", "\\v{s}", NULL, "\\'9A", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_Yuml, "Yuml", "\xc5\xb8", "Ÿ", "Ÿ", "Ÿ", "<Yumlaut/>", "Ÿ", "\\\"{Y}", "Y\\*(4", "\\'9F", {"Y",DocSymbol::Perl_umlaut}}, - {DocSymbol::Sym_circ, "circ", "\xcb\x86", "ˆ", "ˆ", "ˆ", "<circ/>", "ˆ", "{$\\circ$}", NULL, "\\'88", {" ",DocSymbol::Perl_circ}}, - {DocSymbol::Sym_tilde, "tilde", "\xcb\x9c", "˜", "˜", "˜", "<tilde/>", "˜", "\\~{}", "~", "\\'98", {" ",DocSymbol::Perl_tilde}}, - {DocSymbol::Sym_ensp, "ensp", "\xe2\x80\x82", " ", " ", " ", "<ensp/>", " ", "\\enskip{}", NULL, "{\\enspace}", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_emsp, "emsp", "\xe2\x80\x83", " ", " ", " ", "<emsp/>", " ", "\\quad{}", NULL, "{\\emspace}", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_thinsp, "thinsp", "\xe2\x80\x89", " ", " ", " ", "<thinsp/>", " ", "\\,", NULL, "{\\qmspace}", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_zwnj, "zwnj", "\xe2\x80\x8c", "‌", "‌", "‌", "<zwnj/>", "‌", "{}", NULL, "\\zwnj", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_zwj, "zwj", "\xe2\x80\x8d", "‍", "‍", "‍", "<zwj/>", "‍", "", NULL, "\\zwj", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_lrm, "lrm", "\xe2\x80\x8e", "‎", "‎", "‎", "<lrm/>", "‎", "", NULL, "\\ltrmark", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_rlm, "rlm", "\xe2\x80\x8f", "‏", "‏", "‏", "<rlm/>", "‏", "", NULL, "\\rtlmark", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_ndash, "ndash", "\xe2\x80\x93", "–", "–", "–", "<ndash/>", "–", "--", "--", "\\'96", {"-",DocSymbol::Perl_char}}, - {DocSymbol::Sym_mdash, "mdash", "\xe2\x80\x94", "—", "—", "—", "<mdash/>", "—", "---", "---", "\\'97", {"--",DocSymbol::Perl_string}}, - {DocSymbol::Sym_lsquo, "lsquo", "\xe2\x80\x98", "‘", "‘", "‘", "<lsquo/>", "‘", "`", "`", "\\'91", {"\\\'",DocSymbol::Perl_string}}, - {DocSymbol::Sym_rsquo, "rsquo", "\xe2\x80\x99", "’", "’", "’", "<rsquo/>", "’", "'", "'", "\\'92", {"\\\'",DocSymbol::Perl_string}}, - {DocSymbol::Sym_sbquo, "sbquo", "\xe2\x80\x9a", "‚", "‚", "‚", "<sbquo/>", "‚", "\\quotesinglbase{}", NULL, "\\'82", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_ldquo, "ldquo", "\xe2\x80\x9c", "“", "“", "“", "<ldquo/>", "“", "``", "``", "\\'93", {"\"",DocSymbol::Perl_char}}, - {DocSymbol::Sym_rdquo, "rdquo", "\xe2\x80\x9d", "”", "”", "”", "<rdquo/>", "”", "''", "''", "\\'94", {"\"",DocSymbol::Perl_char}}, - {DocSymbol::Sym_bdquo, "bdquo", "\xe2\x80\x9e", "„", "„", "„", "<bdquo/>", "„", "\\quotedblbase{}", NULL, "\\'84", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_dagger, "dagger", "\xe2\x80\xa0", "†", "†", "†", "<dagger/>", "†", "{$\\dagger$}", NULL, "\\'86", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_Dagger, "Dagger", "\xe2\x80\xa1", "‡", "‡", "‡", "<Dagger/>", "‡", "{$\\ddagger$}", NULL, "\\'87", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_permil, "permil", "\xe2\x80\xb0", "‰", "‰", "‰", "<permil/>", "‰", "{$\\permil{}$}", NULL, "\\'89", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_lsaquo, "lsaquo", "\xe2\x80\xb9", "‹", "‹", "‹", "<lsaquo/>", "‹", "\\guilsinglleft{}", NULL, "\\'8B", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_rsaquo, "rsaquo", "\xe2\x80\xba", "›", "›", "›", "<rsaquo/>", "›", "\\guilsinglright{}", NULL, "\\'9B", {NULL,DocSymbol::Perl_unknown}}, - {DocSymbol::Sym_euro, "euro", "\xe2\x82\xac", "€", "€", "€", "<euro/>", "€", "\\texteuro{}", NULL, "\\'80", {NULL,DocSymbol::Perl_unknown}}, - - // doxygen extension to the HTML4 table of HTML entities - {DocSymbol::Sym_tm, "tm", "\xe2\x84\xa2", "™", "(TM)", "&tm;", "<trademark/>", "™", "\\texttrademark{}", "(TM)", "\\'99", {"trademark",DocSymbol::Perl_symbol}}, - {DocSymbol::Sym_apos, "apos", "'", "'", "'", "'", "'", "'", "'", "'", "'", {"\\\'",DocSymbol::Perl_string}}, - - // doxygen commands represented as HTML entities - {DocSymbol::Sym_BSlash, "BSlash", "\\", "\\", "\\", "\\", "\\", "\\", "\\textbackslash{}", "\\\\", "\\\\", {"\\\\",DocSymbol::Perl_string}}, - {DocSymbol::Sym_At, "At", "@", "@", "@", "@", "@", "@", "@", "@", "@", {"@",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Less, "Less", "<", "<", "<", "<", "<", "<", "<", "<", "<", {"<",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Greater, "Greater", ">", ">", ">", ">", ">", ">", ">", ">", ">", {">",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Amp, "Amp", "&", "&", "&", "&", "&", "&", "\\&", "&", "&", {"&",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Dollar, "Dollar", "$", "$", "$", "$", "$", "$", "\\$", "$", "$", {"$",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Hash, "Hash", "#;", "#", "#", "#", "#", "#", "\\#", "#", "#", {"#",DocSymbol::Perl_char}}, - {DocSymbol::Sym_DoubleColon, "DoubleColon", "::", "::", "::", "::", "::", "::", "::", "::", "::", {"::",DocSymbol::Perl_string}}, - {DocSymbol::Sym_Percent, "Percent", "%", "%", "%%", "%", "%", "%", "\\%", "%", "%", {"%",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Pipe, "Pipe", "|", "|", "|", "|", "|", "|", "$|$", "|", "|", {"|",DocSymbol::Perl_char}}, - {DocSymbol::Sym_Quot, "Quot", "\"", "\"", "\"", "\"", "\"", """, "\"", "\"", "\"", {"\"",DocSymbol::Perl_char}}, -}; - -/*! @brief Access routine to the name of the HTML entity - * - * @param symb Code of the requested HTML entity - * @return the name of the HTML entity (excluding the & and ;), - * in case the name is unknown \c NULL is returned. - */ -const char *get_symbol_item(DocSymbol::SymType symb) -{ - return html_entities[symb].item; -} -/*! @brief Access routine to the UTF8 code of the HTML entity - * - * @param symb Code of the requested HTML entity - * @return the UTF8 code of the HTML entity, - * in case the UTF code is unknown \c NULL is returned. - */ -const char *get_symbol_UTF8(DocSymbol::SymType symb) -{ - return html_entities[symb].UTF8; -} -/*! @brief Access routine to the html code of the HTML entity - * - * @param symb Code of the requested HTML entity - * @return the html of the HTML entity, - * in case the html code is unknown \c NULL is returned. - */ -const char *get_symbol_html(DocSymbol::SymType symb) -{ - return html_entities[symb].html; -} -/*! @brief Access routine to the printable code of the HTML entity - * - * @param symb Code of the requested HTML entity - * @return the printable code of the HTML entity, - * in case the printable code is unknown \c NULL is returned. - */ -const char *get_symbol_print(DocSymbol::SymType symb) -{ - return html_entities[symb].print; -} -/*! @brief Access routine to the text representation of the HTML entity - * - * @param symb Code of the requested HTML entity - * @return the text representation the HTML entity, - * in case the text representation is unknown \c NULL is returned. - */ -const char *get_symbol_text(DocSymbol::SymType symb) -{ - return html_entities[symb].text; -} -/*! @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 *get_symbol_xml(DocSymbol::SymType symb) -{ - return html_entities[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 *get_symbol_docbook(DocSymbol::SymType symb) -{ - return html_entities[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 *get_symbol_latex(DocSymbol::SymType symb) -{ - return html_entities[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 *get_symbol_man(DocSymbol::SymType symb) -{ - return html_entities[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 *get_symbol_rtf(DocSymbol::SymType symb) -{ - return html_entities[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 *get_symbol_perl(DocSymbol::SymType symb) -{ - return &html_entities[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 code_symbol(const QCString &symName) -{ - for (int i = 0; i < sizeof(html_entities)/ sizeof(*html_entities); i++) - { - if (QCString("&")+ html_entities[i].item+";" == symName) return(html_entities[i].symb); - } - return DocSymbol::Sym_Unknown; -} - -/*! @brief Gives number of standard HTML4 entities plus the doxygen extensions - * @return the number of standard HTML4 entities plus the doxygen extensions - */ -int get_num_standard_symbols(void) -{ - return sizeof(html_entities)/ sizeof(*html_entities) - number_html_mapped_cmds; -} - -/*! @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 validate_html_entities(void) -{ - for (int i = 0; i < sizeof(html_entities)/ sizeof(*html_entities); i++) - { - if (i != html_entities[i].symb) - warn_uncond("Internal inconsistency, htmlentries code %d (item=%s)\n",i,html_entities[i].item); - } -} @@ -455,19 +455,5 @@ void convertProtectionLevel( int *outListType2 ); -DocSymbol::SymType code_symbol(const QCString &symName); -const char *get_symbol_item(DocSymbol::SymType symb); -const char *get_symbol_UTF8(DocSymbol::SymType symb); -const char *get_symbol_html(DocSymbol::SymType symb); -const char *get_symbol_print(DocSymbol::SymType symb); -const char *get_symbol_text(DocSymbol::SymType symb); -const char *get_symbol_xml(DocSymbol::SymType symb); -const char *get_symbol_docbook(DocSymbol::SymType symb); -const char *get_symbol_latex(DocSymbol::SymType symb); -const char *get_symbol_man(DocSymbol::SymType symb); -const char *get_symbol_rtf(DocSymbol::SymType symb); -const DocSymbol::PerlSymb *get_symbol_perl(DocSymbol::SymType symb); -int get_num_standard_symbols(void); -void validate_html_entities(void); #endif diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp index 4dc6f4a..31c1c9a 100644 --- a/src/xmldocvisitor.cpp +++ b/src/xmldocvisitor.cpp @@ -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,14 +71,14 @@ void XmlDocVisitor::visit(DocWhiteSpace *w) void XmlDocVisitor::visit(DocSymbol *s) { if (m_hide) return; - const char *res = get_symbol_xml(s->symbol()); + const char *res = HtmlEntityMapper::instance()->xml(s->symbol()); if (res) { m_t << res; } else { - err("XML: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); + err("XML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); } } diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 084c2d7..bb0925e 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -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,47 +1898,31 @@ void generateXML() err("Cannot open file %s for writing!\n",fileName.data()); return; } - /* - * If the compound_xsd contyains the special string - * write part till special string - * for each html entity - * write xsd entry with xml element name without enclosing < and /> - * write part after special string - * otherwise - * write original compound_xsd - */ - QCString cmp_org(compound_xsd); - QCString ins("<!-- Automatically insert here the HTML entities -->"); - if (cmp_org.contains(QRegExp(ins))) - { - QCString xsd_txt; - QCString xsd_tmp; - QCString cmp_tmp1; - QCString cmp_tmp2; - QRegExp beg("^<"); - QRegExp end("/>$"); - cmp_tmp1 = cmp_org; - cmp_tmp1 = cmp_tmp1.replace(QRegExp(" *"+ins+".*"),""); - f.writeBlock(cmp_tmp1,qstrlen(cmp_tmp1)); - int num_std = get_num_standard_symbols(); - for (int i = 0; i < num_std; i++) - { - xsd_tmp = QCString(get_symbol_xml((DocSymbol::SymType)i)); - if (xsd_tmp.contains(beg)) + + // 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-1) && *(endLine-1)!='\n') endLine++; // skip to end of the line + int len=endLine-startLine; + if (len>0) + { + QCString s(len+1); + strlcpy(s.data(),startLine,len); + s[len]='\0'; + if (s.find("<!-- Automatically insert here the HTML entities -->")!=-1) { - xsd_txt = " <xsd:element name=\""; - xsd_txt += xsd_tmp.replace(beg,"").replace(end,""); - xsd_txt += "\" type=\"docEmptyType\" />\n"; - f.writeBlock(xsd_txt,qstrlen(xsd_txt)); + FTextStream t(&f); + HtmlEntityMapper::instance()->writeXMLSchema(t); + } + else + { + f.writeBlock(startLine,len); } } - cmp_tmp2 = cmp_org; - cmp_tmp2 = cmp_tmp2.replace(QRegExp(".*"+ins),""); - f.writeBlock(cmp_tmp2,qstrlen(cmp_tmp2)); - } - else - { - f.writeBlock(compound_xsd,qstrlen(compound_xsd)); + startLine=endLine; } f.close(); |