summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2014-02-09 14:34:55 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2014-02-09 14:34:55 (GMT)
commit69665ef2ad0779f9255242929fb6028c8c3ec518 (patch)
treea1cc7e37e28f54705db077997d42f5ebef70bfa4 /src
parentc625dc7802e269587b678b5ca84b341401536133 (diff)
parent1bd64ac0e925ba2ff069ec64c026ea3c32f85600 (diff)
downloadDoxygen-69665ef2ad0779f9255242929fb6028c8c3ec518.zip
Doxygen-69665ef2ad0779f9255242929fb6028c8c3ec518.tar.gz
Doxygen-69665ef2ad0779f9255242929fb6028c8c3ec518.tar.bz2
Merge branch 'feature/html_entities' of https://github.com/albert-github/doxygen into albert-github-feature/html_entities
Diffstat (limited to 'src')
-rw-r--r--src/compound.xsd93
-rw-r--r--src/docbookvisitor.cpp109
-rw-r--r--src/docparser.cpp254
-rw-r--r--src/docparser.h92
-rw-r--r--src/htmldocvisitor.cpp112
-rw-r--r--src/latexdocvisitor.cpp148
-rw-r--r--src/latexgen.cpp2
-rw-r--r--src/mandocvisitor.cpp43
-rw-r--r--src/perlmodgen.cpp191
-rw-r--r--src/printdocvisitor.h106
-rw-r--r--src/rtfdocvisitor.cpp198
-rw-r--r--src/textdocvisitor.cpp111
-rw-r--r--src/util.cpp582
-rw-r--r--src/util.h15
-rw-r--r--src/xmldocvisitor.cpp110
-rw-r--r--src/xmlgen.cpp43
16 files changed, 771 insertions, 1438 deletions
diff --git a/src/compound.xsd b/src/compound.xsd
index c1eb0ab..a1c9784 100644
--- a/src/compound.xsd
+++ b/src/compound.xsd
@@ -390,94 +390,7 @@
<xsd:element name="anchor" type="docAnchorType" />
<xsd:element name="formula" type="docFormulaType" />
<xsd:element name="ref" type="docRefTextType" />
- <xsd:element name="copy" type="docEmptyType" />
- <xsd:element name="trademark" type="docEmptyType" />
- <xsd:element name="registered" type="docEmptyType" />
- <xsd:element name="lsquo" type="docEmptyType" />
- <xsd:element name="rsquo" type="docEmptyType" />
- <xsd:element name="ldquo" type="docEmptyType" />
- <xsd:element name="rdquo" type="docEmptyType" />
- <xsd:element name="ndash" type="docEmptyType" />
- <xsd:element name="mdash" type="docEmptyType" />
- <xsd:element name="umlaut" type="docCharType" />
- <xsd:element name="acute" type="docCharType" />
- <xsd:element name="grave" type="docCharType" />
- <xsd:element name="circ" type="docCharType" />
- <xsd:element name="slash" type="docCharType" />
- <xsd:element name="tilde" type="docCharType" />
- <xsd:element name="cedil" type="docCharType" />
- <xsd:element name="ring" type="docCharType" />
- <xsd:element name="szlig" type="docEmptyType" />
- <xsd:element name="nonbreakablespace" type="docEmptyType" />
- <xsd:element name="aelig" type="docEmptyType" />
- <xsd:element name="AElig" type="docEmptyType" />
- <xsd:element name="Gamma" type="docEmptyType" />
- <xsd:element name="Delta" type="docEmptyType" />
- <xsd:element name="Theta" type="docEmptyType" />
- <xsd:element name="Lambda" type="docEmptyType" />
- <xsd:element name="Xi" type="docEmptyType" />
- <xsd:element name="Pi" type="docEmptyType" />
- <xsd:element name="Sigma" type="docEmptyType" />
- <xsd:element name="Upsilon" type="docEmptyType" />
- <xsd:element name="Phi" type="docEmptyType" />
- <xsd:element name="Psi" type="docEmptyType" />
- <xsd:element name="Omega" type="docEmptyType" />
- <xsd:element name="alpha" type="docEmptyType" />
- <xsd:element name="beta" type="docEmptyType" />
- <xsd:element name="gamma" type="docEmptyType" />
- <xsd:element name="delta" type="docEmptyType" />
- <xsd:element name="epsilon" type="docEmptyType" />
- <xsd:element name="zeta" type="docEmptyType" />
- <xsd:element name="eta" type="docEmptyType" />
- <xsd:element name="theta" type="docEmptyType" />
- <xsd:element name="iota" type="docEmptyType" />
- <xsd:element name="kappa" type="docEmptyType" />
- <xsd:element name="lambda" type="docEmptyType" />
- <xsd:element name="mu" type="docEmptyType" />
- <xsd:element name="nu" type="docEmptyType" />
- <xsd:element name="xi" type="docEmptyType" />
- <xsd:element name="pi" type="docEmptyType" />
- <xsd:element name="rho" type="docEmptyType" />
- <xsd:element name="sigma" type="docEmptyType" />
- <xsd:element name="tau" type="docEmptyType" />
- <xsd:element name="upsilon" type="docEmptyType" />
- <xsd:element name="phi" type="docEmptyType" />
- <xsd:element name="chi" type="docEmptyType" />
- <xsd:element name="psi" type="docEmptyType" />
- <xsd:element name="omega" type="docEmptyType" />
- <xsd:element name="sigmaf" type="docEmptyType" />
- <xsd:element name="sect" type="docEmptyType" />
- <xsd:element name="deg" type="docEmptyType" />
- <xsd:element name="prime" type="docEmptyType" />
- <xsd:element name="Prime" type="docEmptyType" />
- <xsd:element name="infin" type="docEmptyType" />
- <xsd:element name="empty" type="docEmptyType" />
- <xsd:element name="plusmn" type="docEmptyType" />
- <xsd:element name="times" type="docEmptyType" />
- <xsd:element name="minus" type="docEmptyType" />
- <xsd:element name="sdot" type="docEmptyType" />
- <xsd:element name="part" type="docEmptyType" />
- <xsd:element name="nabla" type="docEmptyType" />
- <xsd:element name="radic" type="docEmptyType" />
- <xsd:element name="perp" type="docEmptyType" />
- <xsd:element name="sum" type="docEmptyType" />
- <xsd:element name="int" type="docEmptyType" />
- <xsd:element name="prod" type="docEmptyType" />
- <xsd:element name="sim" type="docEmptyType" />
- <xsd:element name="asymp" type="docEmptyType" />
- <xsd:element name="ne" type="docEmptyType" />
- <xsd:element name="equiv" type="docEmptyType" />
- <xsd:element name="prop" type="docEmptyType" />
- <xsd:element name="le" type="docEmptyType" />
- <xsd:element name="ge" type="docEmptyType" />
- <xsd:element name="larr" type="docEmptyType" />
- <xsd:element name="rarr" type="docEmptyType" />
- <xsd:element name="isin" type="docEmptyType" />
- <xsd:element name="notin" type="docEmptyType" />
- <xsd:element name="lceil" type="docEmptyType" />
- <xsd:element name="rceil" type="docEmptyType" />
- <xsd:element name="lfloor" type="docEmptyType" />
- <xsd:element name="rfloor" type="docEmptyType" />
+ <!-- Automatically insert here the HTML entities -->
</xsd:choice>
</xsd:group>
@@ -717,10 +630,6 @@
</xsd:sequence>
</xsd:complexType>
- <xsd:complexType name="docCharType">
- <xsd:attribute name="char" type="DoxCharRange"/>
- </xsd:complexType>
-
<xsd:complexType name="docEmptyType"/>
<!-- Simple types -->
diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp
index aaea045..cb79015 100644
--- a/src/docbookvisitor.cpp
+++ b/src/docbookvisitor.cpp
@@ -73,109 +73,14 @@ void DocbookDocVisitor::visit(DocWhiteSpace *w)
void DocbookDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = get_symbol_docbook(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Copy: m_t << "&#x00A9;"; break;
- case DocSymbol::Tm: m_t << "&#8482;"; break;
- case DocSymbol::Reg: m_t << "&#174;"; break;
- case DocSymbol::Apos: m_t << "&apos;"; break;
- case DocSymbol::Quot: m_t << "&quot;"; break;
- case DocSymbol::Lsquo: m_t << "&#8216;"; break;
- case DocSymbol::Rsquo: m_t << "&#8217;"; break;
- case DocSymbol::Ldquo: m_t << "&#8220;"; break;
- case DocSymbol::Rdquo: m_t << "&#8221;"; break;
- case DocSymbol::Ndash: m_t << "&#8211;"; break;
- case DocSymbol::Mdash: m_t << "&#8212;"; break;
- case DocSymbol::Uml: m_t << "&#168;"; break;
- case DocSymbol::Acute: m_t << "&#180;"; break;
- case DocSymbol::Grave: m_t << "&#192;"; break;
- case DocSymbol::Circ: m_t << "&#710;"; break;
- case DocSymbol::Tilde: m_t << "&#732;"; break;
- case DocSymbol::Szlig: m_t << "&#223;"; break;
- case DocSymbol::Cedil: m_t << "&#184;"; break;
- case DocSymbol::Ring: m_t << "&#197;"; break;
- case DocSymbol::Slash: m_t << "&#216;"; break;
- case DocSymbol::Nbsp: m_t << "&#160;"; break;
- case DocSymbol::Aelig: m_t << "&#230;"; break;
- case DocSymbol::AElig: m_t << "&#198;"; break;
- case DocSymbol::GrkGamma: m_t << "&#915;"; break;
- case DocSymbol::GrkDelta: m_t << "&#916;"; break;
- case DocSymbol::GrkTheta: m_t << "&#920;"; break;
- case DocSymbol::GrkLambda: m_t << "&#923;"; break;
- case DocSymbol::GrkXi: m_t << "&#926;"; break;
- case DocSymbol::GrkPi: m_t << "&#928;"; break;
- case DocSymbol::GrkSigma: m_t << "&#931;"; break;
- case DocSymbol::GrkUpsilon: m_t << "&#933;"; break;
- case DocSymbol::GrkPhi: m_t << "&#934;"; break;
- case DocSymbol::GrkPsi: m_t << "&#936;"; break;
- case DocSymbol::GrkOmega: m_t << "&#937;"; break;
- case DocSymbol::Grkalpha: m_t << "&#945;"; break;
- case DocSymbol::Grkbeta: m_t << "&#946;"; break;
- case DocSymbol::Grkgamma: m_t << "&#947;"; break;
- case DocSymbol::Grkdelta: m_t << "&#948;"; break;
- case DocSymbol::Grkepsilon: m_t << "&#949;"; break;
- case DocSymbol::Grkzeta: m_t << "&#950;"; break;
- case DocSymbol::Grketa: m_t << "&#951;"; break;
- case DocSymbol::Grktheta: m_t << "&#952;"; break;
- case DocSymbol::Grkiota: m_t << "&#953;"; break;
- case DocSymbol::Grkkappa: m_t << "&#954;"; break;
- case DocSymbol::Grklambda: m_t << "&#955;"; break;
- case DocSymbol::Grkmu: m_t << "&#956;"; break;
- case DocSymbol::Grknu: m_t << "&#957;"; break;
- case DocSymbol::Grkxi: m_t << "&#958;"; break;
- case DocSymbol::Grkpi: m_t << "&#960;"; break;
- case DocSymbol::Grkrho: m_t << "&#961;"; break;
- case DocSymbol::Grksigma: m_t << "&#963;"; break;
- case DocSymbol::Grktau: m_t << "&#964;"; break;
- case DocSymbol::Grkupsilon: m_t << "&#965;"; break;
- case DocSymbol::Grkphi: m_t << "&#966;"; break;
- case DocSymbol::Grkchi: m_t << "&#967;"; break;
- case DocSymbol::Grkpsi: m_t << "&#968;"; break;
- case DocSymbol::Grkomega: m_t << "&#969;"; break;
- case DocSymbol::Grkvarsigma: m_t << "&#962;"; break;
- case DocSymbol::Section: m_t << "<simplesect/>"; break;
- case DocSymbol::Degree: m_t << "&#176;"; break;
- case DocSymbol::Prime: m_t << "&#8242;"; break;
- case DocSymbol::DoublePrime: m_t << "&#8243;"; break;
- case DocSymbol::Infinity: m_t << "&#8734;"; break;
- case DocSymbol::EmptySet: m_t << "&#8709;"; break;
- case DocSymbol::PlusMinus: m_t << "&#177;"; break;
- case DocSymbol::Times: m_t << "&#215;"; break;
- case DocSymbol::Minus: m_t << "&#8722;"; break;
- case DocSymbol::CenterDot: m_t << "&#8901;"; break;
- case DocSymbol::Partial: m_t << "&#8706;"; break;
- case DocSymbol::Nabla: m_t << "&#8711;"; break;
- case DocSymbol::SquareRoot: m_t << "&#8730;"; break;
- case DocSymbol::Perpendicular: m_t << "&#8869;"; break;
- case DocSymbol::Sum: m_t << "&#8721;"; break;
- case DocSymbol::Integral: m_t << "&#8747;"; break;
- case DocSymbol::Product: m_t << "&#8719;"; break;
- case DocSymbol::Similar: m_t << "&#8764;"; break;
- case DocSymbol::Approx: m_t << "&#8776;"; break;
- case DocSymbol::NotEqual: m_t << "&#8800;"; break;
- case DocSymbol::Equivalent: m_t << "&#8801;"; break;
- case DocSymbol::Proportional: m_t << "&#8733;"; break;
- case DocSymbol::LessEqual: m_t << "&#8804;"; break;
- case DocSymbol::GreaterEqual: m_t << "&#8805;"; break;
- case DocSymbol::LeftArrow: m_t << "&#8592;"; break;
- case DocSymbol::RightArrow: m_t << "&#8594;"; break;
- case DocSymbol::SetIn: m_t << "&#8712;"; break;
- case DocSymbol::SetNotIn: m_t << "&#8713;"; break;
- case DocSymbol::LeftCeil: m_t << "&#8968;"; break;
- case DocSymbol::RightCeil: m_t << "&#8969;"; break;
- case DocSymbol::LeftFloor: m_t << "&#8970;"; break;
- case DocSymbol::RightFloor: m_t << "&#8971;"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("DocBook: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
}
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 7e34ad0..0a132a8 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -1244,34 +1244,34 @@ reparsetoken:
switch (Mappers::cmdMapper->map(tokenName))
{
case CMD_BSLASH:
- children.append(new DocSymbol(parent,DocSymbol::BSlash));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_BSlash));
break;
case CMD_AT:
- children.append(new DocSymbol(parent,DocSymbol::At));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_At));
break;
case CMD_LESS:
- children.append(new DocSymbol(parent,DocSymbol::Less));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Less));
break;
case CMD_GREATER:
- children.append(new DocSymbol(parent,DocSymbol::Greater));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Greater));
break;
case CMD_AMP:
- children.append(new DocSymbol(parent,DocSymbol::Amp));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Amp));
break;
case CMD_DOLLAR:
- children.append(new DocSymbol(parent,DocSymbol::Dollar));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Dollar));
break;
case CMD_HASH:
- children.append(new DocSymbol(parent,DocSymbol::Hash));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Hash));
break;
case CMD_DCOLON:
- children.append(new DocSymbol(parent,DocSymbol::DoubleColon));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_DoubleColon));
break;
case CMD_PERCENT:
- children.append(new DocSymbol(parent,DocSymbol::Percent));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Percent));
break;
case CMD_QUOTE:
- children.append(new DocSymbol(parent,DocSymbol::Quot));
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Quot));
break;
case CMD_EMPHASIS:
{
@@ -1488,11 +1488,10 @@ reparsetoken:
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(tokenName,&letter);
- if (s!=DocSymbol::Unknown)
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(tokenName);
+ if (s!=DocSymbol::Sym_Unknown)
{
- children.append(new DocSymbol(parent,s,letter));
+ children.append(new DocSymbol(parent,s));
}
else
{
@@ -1571,138 +1570,10 @@ static void handleImg(DocNode *parent,QList<DocNode> &children,const HtmlAttribL
//---------------------------------------------------------------------------
-DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName,char *letter)
-{
- int l=symName.length();
- DBG(("decodeSymbol(%s) l=%d\n",qPrint(symName),l));
- // TODO: replace this with a hash
- if (symName=="&copy;") return DocSymbol::Copy;
- else if (symName=="&trade;") return DocSymbol::Tm;
- else if (symName=="&tm;") return DocSymbol::Tm; // alias for &trade;
- else if (symName=="&reg;") return DocSymbol::Reg;
- else if (symName=="&lt;") return DocSymbol::Less;
- else if (symName=="&gt;") return DocSymbol::Greater;
- else if (symName=="&amp;") return DocSymbol::Amp;
- else if (symName=="&apos;") return DocSymbol::Apos;
- else if (symName=="&quot;") return DocSymbol::Quot;
- else if (symName=="&lsquo;") return DocSymbol::Lsquo;
- else if (symName=="&rsquo;") return DocSymbol::Rsquo;
- else if (symName=="&ldquo;") return DocSymbol::Ldquo;
- else if (symName=="&rdquo;") return DocSymbol::Rdquo;
- else if (symName=="&ndash;") return DocSymbol::Ndash;
- else if (symName=="&mdash;") return DocSymbol::Mdash;
- else if (symName=="&szlig;") return DocSymbol::Szlig;
- else if (symName=="&nbsp;") return DocSymbol::Nbsp;
- else if (symName=="&AElig;") return DocSymbol::AElig;
- else if (symName=="&aelig;") return DocSymbol::Aelig;
- else if (symName=="&Gamma;") return DocSymbol::GrkGamma;
- else if (symName=="&Delta;") return DocSymbol::GrkDelta;
- else if (symName=="&Theta;") return DocSymbol::GrkTheta;
- else if (symName=="&Lambda;") return DocSymbol::GrkLambda;
- else if (symName=="&Xi;") return DocSymbol::GrkXi;
- else if (symName=="&Pi;") return DocSymbol::GrkPi;
- else if (symName=="&Sigma;") return DocSymbol::GrkSigma;
- else if (symName=="&Upsilon;") return DocSymbol::GrkUpsilon;
- else if (symName=="&Phi;") return DocSymbol::GrkPhi;
- else if (symName=="&Psi;") return DocSymbol::GrkPsi;
- else if (symName=="&Omega;") return DocSymbol::GrkOmega;
- else if (symName=="&alpha;") return DocSymbol::Grkalpha;
- else if (symName=="&beta;") return DocSymbol::Grkbeta;
- else if (symName=="&gamma;") return DocSymbol::Grkgamma;
- else if (symName=="&delta;") return DocSymbol::Grkdelta;
- else if (symName=="&epsilon;") return DocSymbol::Grkepsilon;
- else if (symName=="&zeta;") return DocSymbol::Grkzeta;
- else if (symName=="&eta;") return DocSymbol::Grketa;
- else if (symName=="&theta;") return DocSymbol::Grktheta;
- else if (symName=="&iota;") return DocSymbol::Grkiota;
- else if (symName=="&kappa;") return DocSymbol::Grkkappa;
- else if (symName=="&lambda;") return DocSymbol::Grklambda;
- else if (symName=="&mu;") return DocSymbol::Grkmu;
- else if (symName=="&nu;") return DocSymbol::Grknu;
- else if (symName=="&xi;") return DocSymbol::Grkxi;
- else if (symName=="&pi;") return DocSymbol::Grkpi;
- else if (symName=="&rho;") return DocSymbol::Grkrho;
- else if (symName=="&sigma;") return DocSymbol::Grksigma;
- else if (symName=="&tau;") return DocSymbol::Grktau;
- else if (symName=="&upsilon;") return DocSymbol::Grkupsilon;
- else if (symName=="&phi;") return DocSymbol::Grkphi;
- else if (symName=="&chi;") return DocSymbol::Grkchi;
- else if (symName=="&psi;") return DocSymbol::Grkpsi;
- else if (symName=="&omega;") return DocSymbol::Grkomega;
- else if (symName=="&sigmaf;") return DocSymbol::Grkvarsigma;
- else if (symName=="&sect;") return DocSymbol::Section;
- else if (symName=="&deg;") return DocSymbol::Degree;
- else if (symName=="&prime;") return DocSymbol::Prime;
- else if (symName=="&Prime;") return DocSymbol::DoublePrime;
- else if (symName=="&infin;") return DocSymbol::Infinity;
- else if (symName=="&empty;") return DocSymbol::EmptySet;
- else if (symName=="&plusmn;") return DocSymbol::PlusMinus;
- else if (symName=="&times;") return DocSymbol::Times;
- else if (symName=="&minus;") return DocSymbol::Minus;
- else if (symName=="&sdot;") return DocSymbol::CenterDot;
- else if (symName=="&part;") return DocSymbol::Partial;
- else if (symName=="&nabla;") return DocSymbol::Nabla;
- else if (symName=="&radic;") return DocSymbol::SquareRoot;
- else if (symName=="&perp;") return DocSymbol::Perpendicular;
- else if (symName=="&sum;") return DocSymbol::Sum;
- else if (symName=="&int;") return DocSymbol::Integral;
- else if (symName=="&prod;") return DocSymbol::Product;
- else if (symName=="&sim;") return DocSymbol::Similar;
- else if (symName=="&asymp;") return DocSymbol::Approx;
- else if (symName=="&ne;") return DocSymbol::NotEqual;
- else if (symName=="&equiv;") return DocSymbol::Equivalent;
- else if (symName=="&prop;") return DocSymbol::Proportional;
- else if (symName=="&le;") return DocSymbol::LessEqual;
- else if (symName=="&ge;") return DocSymbol::GreaterEqual;
- else if (symName=="&larr;") return DocSymbol::LeftArrow;
- else if (symName=="&rarr;") return DocSymbol::RightArrow;
- else if (symName=="&isin;") return DocSymbol::SetIn;
- else if (symName=="&notin;") return DocSymbol::SetNotIn;
- else if (symName=="&lceil;") return DocSymbol::LeftCeil;
- else if (symName=="&rceil;") return DocSymbol::RightCeil;
- else if (symName=="&lfloor;") return DocSymbol::LeftFloor;
- else if (symName=="&rfloor;") return DocSymbol::RightFloor;
- else if (l==6 && symName.right(4)=="uml;")
- {
- *letter=symName.at(1);
- return DocSymbol::Uml;
- }
- else if (l==8 && symName.right(6)=="acute;")
- {
- *letter=symName.at(1);
- return DocSymbol::Acute;
- }
- else if (l==8 && symName.right(6)=="grave;")
- {
- *letter=symName.at(1);
- return DocSymbol::Grave;
- }
- else if (l==7 && symName.right(5)=="circ;")
- {
- *letter=symName.at(1);
- return DocSymbol::Circ;
- }
- else if (l==8 && symName.right(6)=="tilde;")
- {
- *letter=symName.at(1);
- return DocSymbol::Tilde;
- }
- else if (l==8 && symName.right(6)=="cedil;")
- {
- *letter=symName.at(1);
- return DocSymbol::Cedil;
- }
- else if (l==7 && symName.right(5)=="ring;")
- {
- *letter=symName.at(1);
- return DocSymbol::Ring;
- }
- else if (l==8 && symName.right(6)=="slash;")
- {
- *letter=symName.at(1);
- return DocSymbol::Slash;
- }
- return DocSymbol::Unknown;
+DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName)
+{
+ DBG(("decodeSymbol(%s)\n",qPrint(symName)));
+ return code_symbol(symName);
}
//---------------------------------------------------------------------------
@@ -3369,26 +3240,25 @@ int DocIndexEntry::parse()
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name,&letter);
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name);
switch (s)
{
- case DocSymbol::BSlash: m_entry+='\\'; break;
- case DocSymbol::At: m_entry+='@'; break;
- case DocSymbol::Less: m_entry+='<'; break;
- case DocSymbol::Greater: m_entry+='>'; break;
- case DocSymbol::Amp: m_entry+='&'; break;
- case DocSymbol::Dollar: m_entry+='$'; break;
- case DocSymbol::Hash: m_entry+='#'; break;
- case DocSymbol::Percent: m_entry+='%'; break;
- case DocSymbol::Apos: m_entry+='\''; break;
- case DocSymbol::Quot: m_entry+='"'; break;
- case DocSymbol::Lsquo: m_entry+='`'; break;
- case DocSymbol::Rsquo: m_entry+='\''; break;
- case DocSymbol::Ldquo: m_entry+="``"; break;
- case DocSymbol::Rdquo: m_entry+="''"; break;
- case DocSymbol::Ndash: m_entry+="--"; break;
- case DocSymbol::Mdash: m_entry+="---"; break;
+ case DocSymbol::Sym_BSlash: m_entry+='\\'; break;
+ case DocSymbol::Sym_At: m_entry+='@'; break;
+ case DocSymbol::Sym_Less: m_entry+='<'; break;
+ case DocSymbol::Sym_Greater: m_entry+='>'; break;
+ case DocSymbol::Sym_Amp: m_entry+='&'; break;
+ case DocSymbol::Sym_Dollar: m_entry+='$'; break;
+ case DocSymbol::Sym_Hash: m_entry+='#'; break;
+ case DocSymbol::Sym_Percent: m_entry+='%'; break;
+ case DocSymbol::Sym_apos: m_entry+='\''; break;
+ case DocSymbol::Sym_Quot: m_entry+='"'; break;
+ case DocSymbol::Sym_lsquo: m_entry+='`'; break;
+ case DocSymbol::Sym_rsquo: m_entry+='\''; break;
+ case DocSymbol::Sym_ldquo: m_entry+="``"; break;
+ case DocSymbol::Sym_rdquo: m_entry+="''"; break;
+ case DocSymbol::Sym_ndash: m_entry+="--"; break;
+ case DocSymbol::Sym_mdash: m_entry+="---"; break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected symbol found as argument of \\addindex");
break;
@@ -5470,37 +5340,37 @@ int DocPara::handleCommand(const QCString &cmdName)
if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break;
case CMD_BSLASH:
- m_children.append(new DocSymbol(this,DocSymbol::BSlash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_BSlash));
break;
case CMD_AT:
- m_children.append(new DocSymbol(this,DocSymbol::At));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_At));
break;
case CMD_LESS:
- m_children.append(new DocSymbol(this,DocSymbol::Less));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Less));
break;
case CMD_GREATER:
- m_children.append(new DocSymbol(this,DocSymbol::Greater));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Greater));
break;
case CMD_AMP:
- m_children.append(new DocSymbol(this,DocSymbol::Amp));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Amp));
break;
case CMD_DOLLAR:
- m_children.append(new DocSymbol(this,DocSymbol::Dollar));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Dollar));
break;
case CMD_HASH:
- m_children.append(new DocSymbol(this,DocSymbol::Hash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Hash));
break;
case CMD_PIPE:
- m_children.append(new DocSymbol(this,DocSymbol::Pipe));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Pipe));
break;
case CMD_DCOLON:
- m_children.append(new DocSymbol(this,DocSymbol::DoubleColon));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_DoubleColon));
break;
case CMD_PERCENT:
- m_children.append(new DocSymbol(this,DocSymbol::Percent));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Percent));
break;
case CMD_QUOTE:
- m_children.append(new DocSymbol(this,DocSymbol::Quot));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Quot));
break;
case CMD_SA:
g_inSeeBlock=TRUE;
@@ -6691,11 +6561,10 @@ reparsetoken:
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name,&letter);
- if (s!=DocSymbol::Unknown)
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name);
+ if (s!=DocSymbol::Sym_Unknown)
{
- m_children.append(new DocSymbol(this,s,letter));
+ m_children.append(new DocSymbol(this,s));
}
else
{
@@ -6910,11 +6779,10 @@ void DocText::parse()
break;
case TK_SYMBOL:
{
- char letter='\0';
- DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name,&letter);
- if (s!=DocSymbol::Unknown)
+ DocSymbol::SymType s = DocSymbol::decodeSymbol(g_token->name);
+ if (s!=DocSymbol::Sym_Unknown)
{
- m_children.append(new DocSymbol(this,s,letter));
+ m_children.append(new DocSymbol(this,s));
}
else
{
@@ -6927,34 +6795,34 @@ void DocText::parse()
switch (Mappers::cmdMapper->map(g_token->name))
{
case CMD_BSLASH:
- m_children.append(new DocSymbol(this,DocSymbol::BSlash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_BSlash));
break;
case CMD_AT:
- m_children.append(new DocSymbol(this,DocSymbol::At));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_At));
break;
case CMD_LESS:
- m_children.append(new DocSymbol(this,DocSymbol::Less));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Less));
break;
case CMD_GREATER:
- m_children.append(new DocSymbol(this,DocSymbol::Greater));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Greater));
break;
case CMD_AMP:
- m_children.append(new DocSymbol(this,DocSymbol::Amp));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Amp));
break;
case CMD_DOLLAR:
- m_children.append(new DocSymbol(this,DocSymbol::Dollar));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Dollar));
break;
case CMD_HASH:
- m_children.append(new DocSymbol(this,DocSymbol::Hash));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Hash));
break;
case CMD_DCOLON:
- m_children.append(new DocSymbol(this,DocSymbol::DoubleColon));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_DoubleColon));
break;
case CMD_PERCENT:
- m_children.append(new DocSymbol(this,DocSymbol::Percent));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Percent));
break;
case CMD_QUOTE:
- m_children.append(new DocSymbol(this,DocSymbol::Quot));
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Quot));
break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected command `%s' found",
diff --git a/src/docparser.h b/src/docparser.h
index 050c871..8d89102 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -336,34 +336,84 @@ class DocStyleChange : public DocNode
class DocSymbol : public DocNode
{
public:
- enum SymType { Unknown=0, BSlash, At, Less, Greater, Amp, Dollar, Hash,
- DoubleColon, Percent, Copy, Tm, Reg, Apos, Quot, Uml, Acute,
- Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Slash,
- Lsquo, Rsquo, Ldquo, Rdquo, Ndash, Mdash, Aelig, AElig,
- GrkGamma, GrkDelta, GrkTheta, GrkLambda, GrkXi, GrkPi,
- GrkSigma, GrkUpsilon, GrkPhi, GrkPsi, GrkOmega, Grkalpha,
- Grkbeta, Grkgamma, Grkdelta, Grkepsilon, Grkzeta, Grketa,
- Grktheta, Grkiota, Grkkappa, Grklambda, Grkmu, Grknu, Grkxi,
- Grkpi, Grkrho, Grksigma, Grktau, Grkupsilon, Grkphi, Grkchi,
- Grkpsi, Grkomega, Grkvarsigma, Section, Degree, Prime,
- DoublePrime, Infinity, EmptySet, PlusMinus, Times, Minus,
- CenterDot, Partial, Nabla, SquareRoot, Perpendicular, Sum,
- Integral, Product, Similar, Approx, NotEqual, Equivalent,
- Proportional, LessEqual, GreaterEqual, LeftArrow, RightArrow,
- SetIn, SetNotIn, LeftCeil, RightCeil, LeftFloor, RightFloor,
- Pipe
+ enum SymType { Sym_Unknown = -1,
+ Sym_nbsp, Sym_iexcl, Sym_cent, Sym_pound, Sym_curren,
+ Sym_yen, Sym_brvbar, Sym_sect, Sym_uml, Sym_copy,
+ Sym_ordf, Sym_laquo, Sym_not, Sym_shy, Sym_reg,
+ Sym_macr, Sym_deg, Sym_plusmn, Sym_sup2, Sym_sup3,
+ Sym_acute, Sym_micro, Sym_para, Sym_middot, Sym_cedil,
+ Sym_sup1, Sym_ordm, Sym_raquo, Sym_frac14, Sym_frac12,
+ Sym_frac34, Sym_iquest, Sym_Agrave, Sym_Aacute, Sym_Acirc,
+ Sym_Atilde, Sym_Auml, Sym_Aring, Sym_AElig, Sym_Ccedil,
+ Sym_Egrave, Sym_Eacute, Sym_Ecirc, Sym_Euml, Sym_Igrave,
+ Sym_Iacute, Sym_Icirc, Sym_Iuml, Sym_ETH, Sym_Ntilde,
+ Sym_Ograve, Sym_Oacute, Sym_Ocirc, Sym_Otilde, Sym_Ouml,
+ Sym_times, Sym_Oslash, Sym_Ugrave, Sym_Uacute, Sym_Ucirc,
+ Sym_Uuml, Sym_Yacute, Sym_THORN, Sym_szlig, Sym_agrave,
+ Sym_aacute, Sym_acirc, Sym_atilde, Sym_auml, Sym_aring,
+ Sym_aelig, Sym_ccedil, Sym_egrave, Sym_eacute, Sym_ecirc,
+ Sym_euml, Sym_igrave, Sym_iacute, Sym_icirc, Sym_iuml,
+ Sym_eth, Sym_ntilde, Sym_ograve, Sym_oacute, Sym_ocirc,
+ Sym_otilde, Sym_ouml, Sym_divide, Sym_oslash, Sym_ugrave,
+ Sym_uacute, Sym_ucirc, Sym_uuml, Sym_yacute, Sym_thorn,
+ Sym_yuml, Sym_fnof, Sym_Alpha, Sym_Beta, Sym_Gamma,
+ Sym_Delta, Sym_Epsilon, Sym_Zeta, Sym_Eta, Sym_Theta,
+ Sym_Iota, Sym_Kappa, Sym_Lambda, Sym_Mu, Sym_Nu,
+ Sym_Xi, Sym_Omicron, Sym_Pi, Sym_Rho, Sym_Sigma,
+ Sym_Tau, Sym_Upsilon, Sym_Phi, Sym_Chi, Sym_Psi,
+ Sym_Omega, Sym_alpha, Sym_beta, Sym_gamma, Sym_delta,
+ Sym_epsilon, Sym_zeta, Sym_eta, Sym_theta, Sym_iota,
+ Sym_kappa, Sym_lambda, Sym_mu, Sym_nu, Sym_xi,
+ Sym_omicron, Sym_pi, Sym_rho, Sym_sigmaf, Sym_sigma,
+ Sym_tau, Sym_upsilon, Sym_phi, Sym_chi, Sym_psi,
+ Sym_omega, Sym_thetasym, Sym_upsih, Sym_piv, Sym_bull,
+ Sym_hellip, Sym_prime, Sym_Prime, Sym_oline, Sym_frasl,
+ Sym_weierp, Sym_image, Sym_real, Sym_trade, Sym_alefsym,
+ Sym_larr, Sym_uarr, Sym_rarr, Sym_darr, Sym_harr,
+ Sym_crarr, Sym_lArr, Sym_uArr, Sym_rArr, Sym_dArr,
+ Sym_hArr, Sym_forall, Sym_part, Sym_exist, Sym_empty,
+ Sym_nabla, Sym_isin, Sym_notin, Sym_ni, Sym_prod,
+ Sym_sum, Sym_minus, Sym_lowast, Sym_radic, Sym_prop,
+ Sym_infin, Sym_ang, Sym_and, Sym_or, Sym_cap,
+ Sym_cup, Sym_int, Sym_there4, Sym_sim, Sym_cong,
+ Sym_asymp, Sym_ne, Sym_equiv, Sym_le, Sym_ge,
+ Sym_sub, Sym_sup, Sym_nsub, Sym_sube, Sym_supe,
+ Sym_oplus, Sym_otimes, Sym_perp, Sym_sdot, Sym_lceil,
+ Sym_rceil, Sym_lfloor, Sym_rfloor, Sym_lang, Sym_rang,
+ Sym_loz, Sym_spades, Sym_clubs, Sym_hearts, Sym_diams,
+ Sym_quot, Sym_amp, Sym_lt, Sym_gt, Sym_OElig,
+ Sym_oelig, Sym_Scaron, Sym_scaron, Sym_Yuml, Sym_circ,
+ Sym_tilde, Sym_ensp, Sym_emsp, Sym_thinsp, Sym_zwnj,
+ Sym_zwj, Sym_lrm, Sym_rlm, Sym_ndash, Sym_mdash,
+ Sym_lsquo, Sym_rsquo, Sym_sbquo, Sym_ldquo, Sym_rdquo,
+ Sym_bdquo, Sym_dagger, Sym_Dagger, Sym_permil, Sym_lsaquo,
+ Sym_rsaquo, Sym_euro,
+
+ /* doxygen extensions */
+ Sym_tm, Sym_apos,
+
+ /* doxygen commands mapped */
+ Sym_BSlash, Sym_At, Sym_Less, Sym_Greater, Sym_Amp,
+ Sym_Dollar, Sym_Hash, Sym_DoubleColon, Sym_Percent, Sym_Pipe,
+ Sym_Quot
};
- DocSymbol(DocNode *parent,SymType s,char letter='\0') :
- m_symbol(s), m_letter(letter) { m_parent = parent; }
+ enum PerlType { Perl_unknown = 0, Perl_string, Perl_char, Perl_symbol, Perl_umlaut,
+ Perl_acute, Perl_grave, Perl_circ, Perl_slash, Perl_tilde,
+ Perl_cedilla, Perl_ring
+ };
+ typedef struct PerlSymb {
+ const char *symb;
+ const PerlType type;
+ }PerlSymb;
+ DocSymbol(DocNode *parent,SymType s) :
+ m_symbol(s) { m_parent = parent; }
SymType symbol() const { return m_symbol; }
- char letter() const { return m_letter; }
Kind kind() const { return Kind_Symbol; }
void accept(DocVisitor *v) { v->visit(this); }
- static SymType decodeSymbol(const QCString &symName,char *letter);
+ static SymType decodeSymbol(const QCString &symName);
private:
SymType m_symbol;
- char m_letter;
};
/** Node representing some amount of white space */
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 536259a..d59acaf 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -182,110 +182,14 @@ void HtmlDocVisitor::visit(DocWhiteSpace *w)
void HtmlDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
- {
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "&copy;"; break;
- case DocSymbol::Tm: m_t << "&trade;"; break;
- case DocSymbol::Reg: m_t << "&reg;"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "&lsquo;"; break;
- case DocSymbol::Rsquo: m_t << "&rsquo;"; break;
- case DocSymbol::Ldquo: m_t << "&ldquo;"; break;
- case DocSymbol::Rdquo: m_t << "&rdquo;"; break;
- case DocSymbol::Ndash: m_t << "&ndash;"; break;
- case DocSymbol::Mdash: m_t << "&mdash;"; break;
- case DocSymbol::Uml: m_t << "&" << s->letter() << "uml;"; break;
- case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
- case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
- case DocSymbol::Circ: m_t << "&" << s->letter() << "circ;"; break;
- case DocSymbol::Slash: m_t << "&" << s->letter() << "slash;"; break;
- case DocSymbol::Tilde: m_t << "&" << s->letter() << "tilde;"; break;
- case DocSymbol::Szlig: m_t << "&szlig;"; break;
- case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break;
- case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break;
- case DocSymbol::Nbsp: m_t << "&#160;"; break;
- case DocSymbol::AElig: m_t << "&AElig;"; break;
- case DocSymbol::Aelig: m_t << "&aelig;"; break;
- case DocSymbol::GrkGamma: m_t << "&Gamma;"; break;
- case DocSymbol::GrkDelta: m_t << "&Delta;"; break;
- case DocSymbol::GrkTheta: m_t << "&Theta;"; break;
- case DocSymbol::GrkLambda: m_t << "&Lambda;"; break;
- case DocSymbol::GrkXi: m_t << "&Xi;"; break;
- case DocSymbol::GrkPi: m_t << "&Pi;"; break;
- case DocSymbol::GrkSigma: m_t << "&Sigma;"; break;
- case DocSymbol::GrkUpsilon: m_t << "&Upsilon;"; break;
- case DocSymbol::GrkPhi: m_t << "&Phi;"; break;
- case DocSymbol::GrkPsi: m_t << "&Psi;"; break;
- case DocSymbol::GrkOmega: m_t << "&Omega;"; break;
- case DocSymbol::Grkalpha: m_t << "&alpha;"; break;
- case DocSymbol::Grkbeta: m_t << "&beta;"; break;
- case DocSymbol::Grkgamma: m_t << "&gamma;"; break;
- case DocSymbol::Grkdelta: m_t << "&delta;"; break;
- case DocSymbol::Grkepsilon: m_t << "&epsilon;"; break;
- case DocSymbol::Grkzeta: m_t << "&zeta;"; break;
- case DocSymbol::Grketa: m_t << "&eta;"; break;
- case DocSymbol::Grktheta: m_t << "&theta;"; break;
- case DocSymbol::Grkiota: m_t << "&iota;"; break;
- case DocSymbol::Grkkappa: m_t << "&kappa;"; break;
- case DocSymbol::Grklambda: m_t << "&lambda;"; break;
- case DocSymbol::Grkmu: m_t << "&mu;"; break;
- case DocSymbol::Grknu: m_t << "&nu;"; break;
- case DocSymbol::Grkxi: m_t << "&xi;"; break;
- case DocSymbol::Grkpi: m_t << "&pi;"; break;
- case DocSymbol::Grkrho: m_t << "&rho;"; break;
- case DocSymbol::Grksigma: m_t << "&sigma;"; break;
- case DocSymbol::Grktau: m_t << "&tau;"; break;
- case DocSymbol::Grkupsilon: m_t << "&upsilon;"; break;
- case DocSymbol::Grkphi: m_t << "&phi;"; break;
- case DocSymbol::Grkchi: m_t << "&chi;"; break;
- case DocSymbol::Grkpsi: m_t << "&psi;"; break;
- case DocSymbol::Grkomega: m_t << "&omega;"; break;
- case DocSymbol::Grkvarsigma: m_t << "&sigmaf;"; break;
- case DocSymbol::Section: m_t << "&sect;"; break;
- case DocSymbol::Degree: m_t << "&deg;"; break;
- case DocSymbol::Prime: m_t << "&prime;"; break;
- case DocSymbol::DoublePrime: m_t << "&Prime;"; break;
- case DocSymbol::Infinity: m_t << "&infin;"; break;
- case DocSymbol::EmptySet: m_t << "&empty;"; break;
- case DocSymbol::PlusMinus: m_t << "&plusmn;"; break;
- case DocSymbol::Times: m_t << "&times;"; break;
- case DocSymbol::Minus: m_t << "&minus;"; break;
- case DocSymbol::CenterDot: m_t << "&sdot;"; break;
- case DocSymbol::Partial: m_t << "&part;"; break;
- case DocSymbol::Nabla: m_t << "&nabla;"; break;
- case DocSymbol::SquareRoot: m_t << "&radic;"; break;
- case DocSymbol::Perpendicular: m_t << "&perp;"; break;
- case DocSymbol::Sum: m_t << "&sum;"; break;
- case DocSymbol::Integral: m_t << "&int;"; break;
- case DocSymbol::Product: m_t << "&prod;"; break;
- case DocSymbol::Similar: m_t << "&sim;"; break;
- case DocSymbol::Approx: m_t << "&asymp;"; break;
- case DocSymbol::NotEqual: m_t << "&ne;"; break;
- case DocSymbol::Equivalent: m_t << "&equiv;"; break;
- case DocSymbol::Proportional: m_t << "&prop;"; break;
- case DocSymbol::LessEqual: m_t << "&le;"; break;
- case DocSymbol::GreaterEqual: m_t << "&ge;"; break;
- case DocSymbol::LeftArrow: m_t << "&larr;"; break;
- case DocSymbol::RightArrow: m_t << "&rarr;"; break;
- case DocSymbol::SetIn: m_t << "&isin;"; break;
- case DocSymbol::SetNotIn: m_t << "&notin;"; break;
- case DocSymbol::LeftCeil: m_t << "&lceil;"; break;
- case DocSymbol::RightCeil: m_t << "&rceil;"; break;
- case DocSymbol::LeftFloor: m_t << "&lfloor;"; break;
- case DocSymbol::RightFloor: m_t << "&rfloor;"; break;
- default:
- err("unknown symbol found\n");
+ const char *res = get_symbol_html(s->symbol());
+ if (res)
+ {
+ m_t << res;
+ }
+ else
+ {
+ err("HTML: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
}
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index bc8e5a5..7daa1d0 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -135,135 +135,25 @@ void LatexDocVisitor::visit(DocWhiteSpace *w)
void LatexDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
- {
- case DocSymbol::BSlash: m_t << "\\textbackslash{}"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: if (m_insidePre) m_t << "<"; else m_t << "$<$";
- break;
- case DocSymbol::Greater: if (m_insidePre) m_t << ">"; else m_t << "$>$"; break;
- case DocSymbol::Amp: m_t << "\\&"; break;
- case DocSymbol::Dollar: m_t << "\\$"; break;
- case DocSymbol::Hash: m_t << "\\#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "\\%"; break;
- case DocSymbol::Pipe: m_t << "$|$"; break;
- case DocSymbol::Copy: m_t << "\\copyright{}"; break;
- case DocSymbol::Tm: m_t << "\\texttrademark{}"; break;
- case DocSymbol::Reg: m_t << "\\textregistered{}"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "`"; break;
- case DocSymbol::Rsquo: m_t << "'"; break;
- case DocSymbol::Ldquo: m_t << "``"; break;
- case DocSymbol::Rdquo: m_t << "''"; break;
- case DocSymbol::Ndash: m_t << "--"; break;
- case DocSymbol::Mdash: m_t << "---"; break;
- case DocSymbol::Uml:
- if (s->letter()=='i')
- m_t << "\\\"{\\i}";
- else
- m_t << "\\\"{" << s->letter() << "}";
- break;
- case DocSymbol::Acute:
- if (s->letter()=='i')
- m_t << "\\'{\\i}";
- else
- m_t << "\\'{" << s->letter() << "}";
- break;
- case DocSymbol::Grave:
- if (s->letter()=='i')
- m_t << "\\`{\\i}";
- else
- m_t << "\\`{" << s->letter() << "}";
- break;
- case DocSymbol::Circ:
- if (s->letter()=='i')
- m_t << "\\^{\\i}";
- else
- m_t << "\\^{" << s->letter() << "}";
- break;
- case DocSymbol::Slash: if (tolower(s->letter())=='o')
- m_t << "{\\" << s->letter() << "}";
- else
- m_t << s->letter();
- break;
- case DocSymbol::Tilde: m_t << "\\~{" << s->letter() << "}"; break;
- case DocSymbol::Szlig: m_t << "{\\ss}"; break;
- case DocSymbol::Cedil: m_t << "\\c{" << s->letter() << "}"; break;
- case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break;
- case DocSymbol::Nbsp: m_t << "~"; break;
- case DocSymbol::AElig: m_t << "{\\AE}"; break;
- case DocSymbol::Aelig: m_t << "{\\ae}"; break;
- case DocSymbol::GrkGamma: m_t << "{$\\Gamma$}"; break;
- case DocSymbol::GrkDelta: m_t << "{$\\Delta$}"; break;
- case DocSymbol::GrkTheta: m_t << "{$\\Theta$}"; break;
- case DocSymbol::GrkLambda: m_t << "{$\\Lambda$}"; break;
- case DocSymbol::GrkXi: m_t << "{$\\Xi$}"; break;
- case DocSymbol::GrkPi: m_t << "{$\\Pi$}"; break;
- case DocSymbol::GrkSigma: m_t << "{$\\Sigma$}"; break;
- case DocSymbol::GrkUpsilon: m_t << "{$\\Upsilon$}"; break;
- case DocSymbol::GrkPhi: m_t << "{$\\Phi$}"; break;
- case DocSymbol::GrkPsi: m_t << "{$\\Psi$}"; break;
- case DocSymbol::GrkOmega: m_t << "{$\\Omega$}"; break;
- case DocSymbol::Grkalpha: m_t << "{$\\alpha$}"; break;
- case DocSymbol::Grkbeta: m_t << "{$\\beta$}"; break;
- case DocSymbol::Grkgamma: m_t << "{$\\gamma$}"; break;
- case DocSymbol::Grkdelta: m_t << "{$\\delta$}"; break;
- case DocSymbol::Grkepsilon: m_t << "{$\\varepsilon$}"; break;
- case DocSymbol::Grkzeta: m_t << "{$\\zeta$}"; break;
- case DocSymbol::Grketa: m_t << "{$\\eta$}"; break;
- case DocSymbol::Grktheta: m_t << "{$\\theta$}"; break;
- case DocSymbol::Grkiota: m_t << "{$\\iota$}"; break;
- case DocSymbol::Grkkappa: m_t << "{$\\kappa$}"; break;
- case DocSymbol::Grklambda: m_t << "{$\\lambda$}"; break;
- case DocSymbol::Grkmu: m_t << "{$\\mu$}"; break;
- case DocSymbol::Grknu: m_t << "{$\\nu$}"; break;
- case DocSymbol::Grkxi: m_t << "{$\\xi$}"; break;
- case DocSymbol::Grkpi: m_t << "{$\\pi$}"; break;
- case DocSymbol::Grkrho: m_t << "{$\\rho$}"; break;
- case DocSymbol::Grksigma: m_t << "{$\\sigma$}"; break;
- case DocSymbol::Grktau: m_t << "{$\\tau$}"; break;
- case DocSymbol::Grkupsilon: m_t << "{$\\upsilon$}"; break;
- case DocSymbol::Grkphi: m_t << "{$\\varphi$}"; break;
- case DocSymbol::Grkchi: m_t << "{$\\chi$}"; break;
- case DocSymbol::Grkpsi: m_t << "{$\\psi$}"; break;
- case DocSymbol::Grkomega: m_t << "{$\\omega$}"; break;
- case DocSymbol::Grkvarsigma: m_t << "{$\\varsigma$}"; break;
- case DocSymbol::Section: m_t << "{$\\S$}"; break;
- case DocSymbol::Degree: m_t << "\\textdegree"; break;
- case DocSymbol::Prime: m_t << "'"; break;
- case DocSymbol::DoublePrime: m_t << "''"; break;
- case DocSymbol::Infinity: m_t << "{$\\infty$}"; break;
- case DocSymbol::EmptySet: m_t << "{$\\emptyset$}"; break;
- case DocSymbol::PlusMinus: m_t << "{$\\pm$}"; break;
- case DocSymbol::Times: m_t << "{$\\times$}"; break;
- case DocSymbol::Minus: m_t << "-"; break;
- case DocSymbol::CenterDot: m_t << "{$\\cdot$}"; break;
- case DocSymbol::Partial: m_t << "{$\\partial$}"; break;
- case DocSymbol::Nabla: m_t << "{$\\nabla$}"; break;
- case DocSymbol::SquareRoot: m_t << "{$\\surd$}"; break;
- case DocSymbol::Perpendicular: m_t << "{$\\perp$}"; break;
- case DocSymbol::Sum: m_t << "{$\\sum$}"; break;
- case DocSymbol::Integral: m_t << "{$\\int$}"; break;
- case DocSymbol::Product: m_t << "{$\\prod$}"; break;
- case DocSymbol::Similar: m_t << "{$\\sim$}"; break;
- case DocSymbol::Approx: m_t << "{$\\approx$}"; break;
- case DocSymbol::NotEqual: m_t << "{$\\ne$}"; break;
- case DocSymbol::Equivalent: m_t << "{$\\equiv$}"; break;
- case DocSymbol::Proportional: m_t << "{$\\propto$}"; break;
- case DocSymbol::LessEqual: m_t << "{$\\le$}"; break;
- case DocSymbol::GreaterEqual: m_t << "{$\\ge$}"; break;
- case DocSymbol::LeftArrow: m_t << "{$\\leftarrow$}"; break;
- case DocSymbol::RightArrow: m_t << "{$\\rightarrow$}"; break;
- case DocSymbol::SetIn: m_t << "{$\\in$}"; break;
- case DocSymbol::SetNotIn: m_t << "{$\\notin$}"; break;
- case DocSymbol::LeftCeil: m_t << "{$\\lceil$}"; break;
- case DocSymbol::RightCeil: m_t << "{$\\rceil$}"; break;
- case DocSymbol::LeftFloor: m_t << "{$\\lfloor$}"; break;
- case DocSymbol::RightFloor: m_t << "{$\\rfloor$}"; break;
- default:
- err("unknown symbol found\n");
+ const char *res = get_symbol_latex(s->symbol());
+ if (res)
+ {
+ if (((s->symbol() == DocSymbol::Sym_lt) || (s->symbol() == DocSymbol::Sym_Less))&& (!m_insidePre))
+ {
+ m_t << "$<$";
+ }
+ else if (((s->symbol() == DocSymbol::Sym_gt) || (s->symbol() == DocSymbol::Sym_Greater)) && (!m_insidePre))
+ {
+ m_t << "$>$";
+ }
+ else
+ {
+ m_t << res;
+ }
+ }
+ else
+ {
+ err("LaTeX: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
}
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 04750f5..9cdfc21 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -293,7 +293,9 @@ static void writeDefaultHeaderPart1(FTextStream &t)
"\\usepackage{makeidx}\n"
"\\usepackage{multicol}\n"
"\\usepackage{multirow}\n"
+ "\\PassOptionsToPackage{warn}{textcomp}\n"
"\\usepackage{textcomp}\n"
+ "\\usepackage[nointegrals]{wasysym}\n"
"\\usepackage[table]{xcolor}\n"
"\n";
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 729f3d4..7669a0a 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -75,42 +75,15 @@ void ManDocVisitor::visit(DocWhiteSpace *w)
void ManDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = get_symbol_man(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "<"; break;
- case DocSymbol::Greater: m_t << ">"; break;
- case DocSymbol::Amp: m_t << "&"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "(C)"; break;
- case DocSymbol::Tm: m_t << "(TM)"; break;
- case DocSymbol::Reg: m_t << "(R)"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "`"; break;
- case DocSymbol::Rsquo: m_t << "'"; break;
- case DocSymbol::Ldquo: m_t << "``"; break;
- case DocSymbol::Rdquo: m_t << "''"; break;
- case DocSymbol::Ndash: m_t << "--"; break;
- case DocSymbol::Mdash: m_t << "---"; break;
- case DocSymbol::Uml: m_t << s->letter() << "\\*(4"; break;
- case DocSymbol::Acute: m_t << s->letter() << "\\*(`"; break;
- case DocSymbol::Grave: m_t << s->letter() << "\\*:"; break;
- case DocSymbol::Circ: m_t << s->letter() << "\\*^"; break;
- case DocSymbol::Slash: m_t << s->letter(); break; /* todo: implement this */
- case DocSymbol::Tilde: m_t << s->letter() << "\\*~"; break;
- case DocSymbol::Szlig: m_t << "s\\*:"; break;
- case DocSymbol::Cedil: m_t << s->letter() << "\\*,"; break;
- case DocSymbol::Ring: m_t << s->letter() << "\\*o"; break;
- case DocSymbol::Nbsp: m_t << " "; break;
- default:
- // unsupport symbol for man page :-(
- break;
+ m_t << res;
+ }
+ else
+ {
+ // no error or warning to be supplied
+ // err("man: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
m_firstCol=FALSE;
}
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index 237cb8f..573400d 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -41,6 +41,7 @@
#include "namespacedef.h"
#include "membergroup.h"
#include "section.h"
+#include "util.h"
#define PERLOUTPUT_MAX_INDENTATION 40
@@ -540,140 +541,66 @@ void PerlModDocVisitor::visit(DocWhiteSpace *)
void PerlModDocVisitor::visit(DocSymbol *sy)
{
- char c = 0;
- const char *s = 0;
- const char *accent = 0;
- const char *symbol = 0;
- switch(sy->symbol())
+ const DocSymbol::PerlSymb *res = get_symbol_perl(sy->symbol());
+ const char *accent;
+ if (res-> symb)
{
- case DocSymbol::At: c = '@'; break;
- case DocSymbol::Less: c = '<'; break;
- case DocSymbol::Greater: c = '>'; break;
- case DocSymbol::Amp: c = '&'; break;
- case DocSymbol::Dollar: c = '$'; break;
- case DocSymbol::Hash: c = '#'; break;
- case DocSymbol::DoubleColon: s = "::"; break;
- case DocSymbol::Percent: c = '%'; break;
- case DocSymbol::Pipe: c = '|'; break;
- case DocSymbol::Quot: c = '"'; break;
- case DocSymbol::Lsquo: s = "\\\'"; break;
- case DocSymbol::Rsquo: s = "\\\'"; break;
- case DocSymbol::Ldquo: c = '"'; break;
- case DocSymbol::Rdquo: c = '"'; break;
- case DocSymbol::Ndash: c = '-'; break;
- case DocSymbol::Mdash: s = "--"; break;
- case DocSymbol::Nbsp: c = ' '; break;
- case DocSymbol::Uml: accent = "umlaut"; break;
- case DocSymbol::Acute: accent = "acute"; break;
- case DocSymbol::Grave: accent = "grave"; break;
- case DocSymbol::Circ: accent = "circ"; break;
- case DocSymbol::Slash: accent = "slash"; break;
- case DocSymbol::Tilde: accent = "tilde"; break;
- case DocSymbol::Cedil: accent = "cedilla"; break;
- case DocSymbol::Ring: accent = "ring"; break;
- case DocSymbol::BSlash: s = "\\\\"; break;
- case DocSymbol::Copy: symbol = "copyright"; break;
- case DocSymbol::Tm: symbol = "trademark"; break;
- case DocSymbol::Reg: symbol = "registered"; break;
- case DocSymbol::Szlig: symbol = "szlig"; break;
- case DocSymbol::Apos: s = "\\\'"; break;
- case DocSymbol::Aelig: symbol = "aelig"; break;
- case DocSymbol::AElig: symbol = "AElig"; break;
- case DocSymbol::GrkGamma: symbol = "Gamma"; break;
- case DocSymbol::GrkDelta: symbol = "Delta"; break;
- case DocSymbol::GrkTheta: symbol = "Theta"; break;
- case DocSymbol::GrkLambda: symbol = "Lambda"; break;
- case DocSymbol::GrkXi: symbol = "Xi"; break;
- case DocSymbol::GrkPi: symbol = "Pi"; break;
- case DocSymbol::GrkSigma: symbol = "Sigma"; break;
- case DocSymbol::GrkUpsilon: symbol = "Upsilon"; break;
- case DocSymbol::GrkPhi: symbol = "Phi"; break;
- case DocSymbol::GrkPsi: symbol = "Psi"; break;
- case DocSymbol::GrkOmega: symbol = "Omega"; break;
- case DocSymbol::Grkalpha: symbol = "alpha"; break;
- case DocSymbol::Grkbeta: symbol = "beta"; break;
- case DocSymbol::Grkgamma: symbol = "gamma"; break;
- case DocSymbol::Grkdelta: symbol = "delta"; break;
- case DocSymbol::Grkepsilon: symbol = "epsilon"; break;
- case DocSymbol::Grkzeta: symbol = "zeta"; break;
- case DocSymbol::Grketa: symbol = "eta"; break;
- case DocSymbol::Grktheta: symbol = "theta"; break;
- case DocSymbol::Grkiota: symbol = "iota"; break;
- case DocSymbol::Grkkappa: symbol = "kappa"; break;
- case DocSymbol::Grklambda: symbol = "lambda"; break;
- case DocSymbol::Grkmu: symbol = "mu"; break;
- case DocSymbol::Grknu: symbol = "nu"; break;
- case DocSymbol::Grkxi: symbol = "xi"; break;
- case DocSymbol::Grkpi: symbol = "pi"; break;
- case DocSymbol::Grkrho: symbol = "rho"; break;
- case DocSymbol::Grksigma: symbol = "sigma"; break;
- case DocSymbol::Grktau: symbol = "tau"; break;
- case DocSymbol::Grkupsilon: symbol = "upsilon"; break;
- case DocSymbol::Grkphi: symbol = "phi"; break;
- case DocSymbol::Grkchi: symbol = "chi"; break;
- case DocSymbol::Grkpsi: symbol = "psi"; break;
- case DocSymbol::Grkomega: symbol = "omega"; break;
- case DocSymbol::Grkvarsigma: symbol = "sigma"; break;
- case DocSymbol::Section: symbol = "sect"; break;
- case DocSymbol::Degree: symbol = "deg"; break;
- case DocSymbol::Prime: s = "\\\'"; break;
- case DocSymbol::DoublePrime: c = '"'; break;
- case DocSymbol::Infinity: symbol = "inf"; break;
- case DocSymbol::EmptySet: symbol = "empty"; break;
- case DocSymbol::PlusMinus: s = "+/-"; break;
- case DocSymbol::Times: c = '*'; break;
- case DocSymbol::Minus: c = '-'; break;
- case DocSymbol::CenterDot: c = '.'; break;
- case DocSymbol::Partial: symbol = "partial"; break;
- case DocSymbol::Nabla: symbol = "nabla"; break;
- case DocSymbol::SquareRoot: symbol = "sqrt"; break;
- case DocSymbol::Perpendicular: symbol = "perp"; break;
- case DocSymbol::Sum: symbol = "sum"; break;
- case DocSymbol::Integral: symbol = "int"; break;
- case DocSymbol::Product: symbol = "prod"; break;
- case DocSymbol::Similar: c = '~'; break;
- case DocSymbol::Approx: symbol = "approx"; break;
- case DocSymbol::NotEqual: s = "!="; break;
- case DocSymbol::Equivalent: symbol = "equiv"; break;
- case DocSymbol::Proportional: symbol = "propto"; break;
- case DocSymbol::LessEqual: s = "<="; break;
- case DocSymbol::GreaterEqual: s = ">="; break;
- case DocSymbol::LeftArrow: s = "<-"; break;
- case DocSymbol::RightArrow: s = "->"; break;
- case DocSymbol::SetIn: symbol = "in"; break;
- case DocSymbol::SetNotIn: symbol = "notin"; break;
- case DocSymbol::LeftCeil: symbol = "lceil"; break;
- case DocSymbol::RightCeil: symbol = "rceil"; break;
- case DocSymbol::LeftFloor: symbol = "lfloor"; break;
- case DocSymbol::RightFloor: symbol = "rfloor"; break;
- case DocSymbol::Unknown: err("unknown symbol found\n");
- break;
- }
- if (c != 0)
- {
- enterText();
- m_output.add(c);
- }
- else if (s != 0)
- {
- enterText();
- m_output.add(s);
- }
- else if (symbol != 0)
- {
- leaveText();
- openItem("symbol");
- m_output.addFieldQuotedString("symbol", symbol);
- closeItem();
- }
- else if (accent != 0)
+ switch (res->type)
+ {
+ case DocSymbol::Perl_string:
+ enterText();
+ m_output.add(res->symb);
+ break;
+ case DocSymbol::Perl_char:
+ enterText();
+ m_output.add(res->symb[0]);
+ break;
+ case DocSymbol::Perl_symbol:
+ leaveText();
+ openItem("symbol");
+ m_output.addFieldQuotedString("symbol", res->symb);
+ closeItem();
+ break;
+ default:
+ switch(res->type)
+ {
+ case DocSymbol::Perl_umlaut:
+ accent = "umlaut";
+ break;
+ case DocSymbol::Perl_acute:
+ accent = "acute";
+ break;
+ case DocSymbol::Perl_grave:
+ accent = "grave";
+ break;
+ case DocSymbol::Perl_circ:
+ accent = "circ";
+ break;
+ case DocSymbol::Perl_slash:
+ accent = "slash";
+ break;
+ case DocSymbol::Perl_tilde:
+ accent = "tilde";
+ break;
+ case DocSymbol::Perl_cedilla:
+ accent = "cedilla";
+ break;
+ case DocSymbol::Perl_ring:
+ accent = "ring";
+ break;
+ }
+ leaveText();
+ openItem("accent");
+ m_output
+ .addFieldQuotedString("accent", accent)
+ .addFieldQuotedChar("letter", res->symb[0]);
+ closeItem();
+ break;
+ }
+ }
+ else
{
- leaveText();
- openItem("accent");
- m_output
- .addFieldQuotedString("accent", accent)
- .addFieldQuotedChar("letter", sy->letter());
- closeItem();
+ err("perl: non supported HTML-entity found: &%s;\n",get_symbol_item(sy->symbol()));
}
}
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 37929fc..4610d43 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -56,106 +56,14 @@ class PrintDocVisitor : public DocVisitor
void visit(DocSymbol *s)
{
indent_leaf();
- switch(s->symbol())
+ const char *res = get_symbol_print(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: printf("\\"); break;
- case DocSymbol::At: printf("@"); break;
- case DocSymbol::Less: printf("<"); break;
- case DocSymbol::Greater: printf(">"); break;
- case DocSymbol::Amp: printf("&"); break;
- case DocSymbol::Dollar: printf("$"); break;
- case DocSymbol::Hash: printf("#"); break;
- case DocSymbol::Percent: printf("%%"); break;
- case DocSymbol::Pipe: printf("|"); break;
- case DocSymbol::Copy: printf("&copy;"); break;
- case DocSymbol::Apos: printf("'"); break;
- case DocSymbol::Quot: printf("\""); break;
- case DocSymbol::Lsquo: printf("&lsquo;"); break;
- case DocSymbol::Rsquo: printf("&rsquo;"); break;
- case DocSymbol::Ldquo: printf("&ldquo;"); break;
- case DocSymbol::Rdquo: printf("&rdquo;"); break;
- case DocSymbol::Ndash: printf("&ndash;"); break;
- case DocSymbol::Mdash: printf("&mdash;"); break;
- case DocSymbol::Uml: printf("&%cuml;",s->letter()); break;
- case DocSymbol::Acute: printf("&%cacute;",s->letter()); break;
- case DocSymbol::Grave: printf("&%cgrave;",s->letter()); break;
- case DocSymbol::Circ: printf("&%ccirc;",s->letter()); break;
- case DocSymbol::Tilde: printf("&%ctilde;",s->letter()); break;
- case DocSymbol::Szlig: printf("&szlig;"); break;
- case DocSymbol::Cedil: printf("&%ccedul;",s->letter()); break;
- case DocSymbol::Ring: printf("&%cring;",s->letter()); break;
- case DocSymbol::Nbsp: printf("&nbsp;"); break;
- case DocSymbol::Aelig: printf("&aelig;"); break;
- case DocSymbol::AElig: printf("&AElig;"); break;
- case DocSymbol::GrkGamma: printf("&Gamma;"); break;
- case DocSymbol::GrkDelta: printf("&Delta;"); break;
- case DocSymbol::GrkTheta: printf("&Theta;"); break;
- case DocSymbol::GrkLambda: printf("&Lambda;"); break;
- case DocSymbol::GrkXi: printf("&Xi;"); break;
- case DocSymbol::GrkPi: printf("&Pi;"); break;
- case DocSymbol::GrkSigma: printf("&Sigma;"); break;
- case DocSymbol::GrkUpsilon: printf("&Upsilon;"); break;
- case DocSymbol::GrkPhi: printf("&Phi;"); break;
- case DocSymbol::GrkPsi: printf("&Psi;"); break;
- case DocSymbol::GrkOmega: printf("&Omega;"); break;
- case DocSymbol::Grkalpha: printf("&alpha;"); break;
- case DocSymbol::Grkbeta: printf("&beta;"); break;
- case DocSymbol::Grkgamma: printf("&gamma;"); break;
- case DocSymbol::Grkdelta: printf("&delta;"); break;
- case DocSymbol::Grkepsilon: printf("&epsilon;"); break;
- case DocSymbol::Grkzeta: printf("&zeta;"); break;
- case DocSymbol::Grketa: printf("&eta;"); break;
- case DocSymbol::Grktheta: printf("&theta;"); break;
- case DocSymbol::Grkiota: printf("&iota;"); break;
- case DocSymbol::Grkkappa: printf("&kappa;"); break;
- case DocSymbol::Grklambda: printf("&lambda;"); break;
- case DocSymbol::Grkmu: printf("&mu;"); break;
- case DocSymbol::Grknu: printf("&nu;"); break;
- case DocSymbol::Grkxi: printf("&xi;"); break;
- case DocSymbol::Grkpi: printf("&pi;"); break;
- case DocSymbol::Grkrho: printf("&rho;"); break;
- case DocSymbol::Grksigma: printf("&sigma;"); break;
- case DocSymbol::Grktau: printf("&tau;"); break;
- case DocSymbol::Grkupsilon: printf("&upsilon;"); break;
- case DocSymbol::Grkphi: printf("&phi;"); break;
- case DocSymbol::Grkchi: printf("&chi;"); break;
- case DocSymbol::Grkpsi: printf("&psi;"); break;
- case DocSymbol::Grkomega: printf("&omega;"); break;
- case DocSymbol::Grkvarsigma: printf("&sigmaf;"); break;
- case DocSymbol::Section: printf("&sect;"); break;
- case DocSymbol::Degree: printf("&deg;"); break;
- case DocSymbol::Prime: printf("&prime;"); break;
- case DocSymbol::DoublePrime: printf("&Prime;"); break;
- case DocSymbol::Infinity: printf("&infin;"); break;
- case DocSymbol::EmptySet: printf("&empty;"); break;
- case DocSymbol::PlusMinus: printf("&plusmn;"); break;
- case DocSymbol::Times: printf("&times;"); break;
- case DocSymbol::Minus: printf("&minus;"); break;
- case DocSymbol::CenterDot: printf("&sdot;"); break;
- case DocSymbol::Partial: printf("&part;"); break;
- case DocSymbol::Nabla: printf("&nabla;"); break;
- case DocSymbol::SquareRoot: printf("&radic;"); break;
- case DocSymbol::Perpendicular: printf("&perp;"); break;
- case DocSymbol::Sum: printf("&sum;"); break;
- case DocSymbol::Integral: printf("&int;"); break;
- case DocSymbol::Product: printf("&prod;"); break;
- case DocSymbol::Similar: printf("&sim;"); break;
- case DocSymbol::Approx: printf("&asymp;"); break;
- case DocSymbol::NotEqual: printf("&ne;"); break;
- case DocSymbol::Equivalent: printf("&equiv;"); break;
- case DocSymbol::Proportional: printf("&prop;"); break;
- case DocSymbol::LessEqual: printf("&le;"); break;
- case DocSymbol::GreaterEqual: printf("&ge;"); break;
- case DocSymbol::LeftArrow: printf("&larr;"); break;
- case DocSymbol::RightArrow: printf("&rarr;"); break;
- case DocSymbol::SetIn: printf("&isin;"); break;
- case DocSymbol::SetNotIn: printf("&notin;"); break;
- case DocSymbol::LeftCeil: printf("&lceil;"); break;
- case DocSymbol::RightCeil: printf("&rceil;"); break;
- case DocSymbol::LeftFloor: printf("&lfloor;"); break;
- case DocSymbol::RightFloor: printf("&rfloor;"); break;
- default:
- printf("unknown symbol found\n");
+ printf("%s",res);
+ }
+ else
+ {
+ printf("print: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
}
void visit(DocURL *u)
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index 7c2fef8..5aaa16a 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -121,198 +121,14 @@ void RTFDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visit(DocSymbol)}\n");
- switch(s->symbol())
+ const char *res = get_symbol_rtf(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "<"; break;
- case DocSymbol::Greater: m_t << ">"; break;
- case DocSymbol::Amp: m_t << "&"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "(C)"; break;
- case DocSymbol::Tm: m_t << "(TM)"; break;
- case DocSymbol::Reg: m_t << "(R)"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "`"; break;
- case DocSymbol::Rsquo: m_t << "'"; break;
- case DocSymbol::Ldquo: m_t << "\""; break;
- case DocSymbol::Rdquo: m_t << "\""; break;
- case DocSymbol::Ndash: m_t << "-"; break;
- case DocSymbol::Mdash: m_t << "--"; break;
- case DocSymbol::Uml: switch(s->letter())
- {
- case 'A' : m_t << '\304'; break;
- case 'E' : m_t << '\313'; break;
- case 'I' : m_t << '\317'; break;
- case 'O' : m_t << '\326'; break;
- case 'U' : m_t << '\334'; break;
- case 'Y' : m_t << 'Y'; break;
- case 'a' : m_t << '\344'; break;
- case 'e' : m_t << '\353'; break;
- case 'i' : m_t << '\357'; break;
- case 'o' : m_t << '\366'; break;
- case 'u' : m_t << '\374'; break;
- case 'y' : m_t << '\377'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Acute: switch(s->letter())
- {
- case 'A' : m_t << '\301'; break;
- case 'E' : m_t << '\311'; break;
- case 'I' : m_t << '\315'; break;
- case 'O' : m_t << '\323'; break;
- case 'U' : m_t << '\332'; break;
- case 'Y' : m_t << '\335'; break;
- case 'a' : m_t << '\341'; break;
- case 'e' : m_t << '\351'; break;
- case 'i' : m_t << '\355'; break;
- case 'o' : m_t << '\363'; break;
- case 'u' : m_t << '\372'; break;
- case 'y' : m_t << '\375'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Grave: switch(s->letter())
- {
- case 'A' : m_t << '\300'; break;
- case 'E' : m_t << '\310'; break;
- case 'I' : m_t << '\314'; break;
- case 'O' : m_t << '\322'; break;
- case 'U' : m_t << '\331'; break;
- case 'a' : m_t << '\340'; break;
- case 'e' : m_t << '\350'; break;
- case 'i' : m_t << '\354'; break;
- case 'o' : m_t << '\362'; break;
- case 'u' : m_t << '\371'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Circ: switch(s->letter())
- {
- case 'A' : m_t << '\302'; break;
- case 'E' : m_t << '\312'; break;
- case 'I' : m_t << '\316'; break;
- case 'O' : m_t << '\324'; break;
- case 'U' : m_t << '\333'; break;
- case 'a' : m_t << '\342'; break;
- case 'e' : m_t << '\352'; break;
- case 'i' : m_t << '\356'; break;
- case 'o' : m_t << '\364'; break;
- case 'u' : m_t << '\373'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Tilde: switch(s->letter())
- {
- case 'A' : m_t << '\303'; break;
- case 'N' : m_t << '\321'; break;
- case 'O' : m_t << '\325'; break;
- case 'a' : m_t << '\343'; break;
- case 'n' : m_t << '\361'; break;
- case 'o' : m_t << '\365'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Cedil: switch(s->letter())
- {
- case 'C' : m_t << '\307'; break;
- case 'c' : m_t << '\347'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Slash: switch(s->letter())
- {
- case 'O' : m_t << '\330'; break;
- case 'o' : m_t << '\370'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Ring: switch(s->letter())
- {
- case 'A' : m_t << '\305'; break;
- case 'a' : m_t << '\345'; break;
- default: m_t << '?'; break;
- }
- break;
- case DocSymbol::Szlig: m_t << "\337"; break;
- case DocSymbol::Nbsp: m_t << "\\~ "; break;
- case DocSymbol::Aelig: m_t << "\346"; break;
- case DocSymbol::AElig: m_t << "\306"; break;
- case DocSymbol::GrkGamma: m_t << "Gamma "; break;
- case DocSymbol::GrkDelta: m_t << "Delta "; break;
- case DocSymbol::GrkTheta: m_t << "Theta "; break;
- case DocSymbol::GrkLambda: m_t << "Lambda "; break;
- case DocSymbol::GrkXi: m_t << "Xi "; break;
- case DocSymbol::GrkPi: m_t << "Pi "; break;
- case DocSymbol::GrkSigma: m_t << "Sigma "; break;
- case DocSymbol::GrkUpsilon: m_t << "Upsilon "; break;
- case DocSymbol::GrkPhi: m_t << "Phi "; break;
- case DocSymbol::GrkPsi: m_t << "Psi "; break;
- case DocSymbol::GrkOmega: m_t << "Omega "; break;
- case DocSymbol::Grkalpha: m_t << "alpha "; break;
- case DocSymbol::Grkbeta: m_t << "beta "; break;
- case DocSymbol::Grkgamma: m_t << "gamma "; break;
- case DocSymbol::Grkdelta: m_t << "delta "; break;
- case DocSymbol::Grkepsilon: m_t << "epsilon "; break;
- case DocSymbol::Grkzeta: m_t << "zeta "; break;
- case DocSymbol::Grketa: m_t << "eta "; break;
- case DocSymbol::Grktheta: m_t << "theta "; break;
- case DocSymbol::Grkiota: m_t << "iota "; break;
- case DocSymbol::Grkkappa: m_t << "kappa "; break;
- case DocSymbol::Grklambda: m_t << "lambda "; break;
- case DocSymbol::Grkmu: m_t << "mu "; break;
- case DocSymbol::Grknu: m_t << "nu "; break;
- case DocSymbol::Grkxi: m_t << "xi "; break;
- case DocSymbol::Grkpi: m_t << "pi "; break;
- case DocSymbol::Grkrho: m_t << "rho "; break;
- case DocSymbol::Grksigma: m_t << "sigma "; break;
- case DocSymbol::Grktau: m_t << "tau "; break;
- case DocSymbol::Grkupsilon: m_t << "upsilon "; break;
- case DocSymbol::Grkphi: m_t << "phi "; break;
- case DocSymbol::Grkchi: m_t << "chi "; break;
- case DocSymbol::Grkpsi: m_t << "psi "; break;
- case DocSymbol::Grkomega: m_t << "omega "; break;
- case DocSymbol::Grkvarsigma: m_t << "sigma "; break;
- case DocSymbol::Section: m_t << "\247"; break;
- case DocSymbol::Degree: m_t << "\260"; break;
- case DocSymbol::Prime: m_t << "'"; break;
- case DocSymbol::DoublePrime: m_t << "\""; break;
- case DocSymbol::Infinity: m_t << "inf "; break;
- case DocSymbol::EmptySet: m_t << "empty "; break;
- case DocSymbol::PlusMinus: m_t << "\261"; break;
- case DocSymbol::Times: m_t << "\327"; break;
- case DocSymbol::Minus: m_t << "-"; break;
- case DocSymbol::CenterDot: m_t << "."; break;
- case DocSymbol::Partial: m_t << "partial "; break;
- case DocSymbol::Nabla: m_t << "nabla "; break;
- case DocSymbol::SquareRoot: m_t << "sqrt "; break;
- case DocSymbol::Perpendicular: m_t << "perp "; break;
- case DocSymbol::Sum: m_t << "sum "; break;
- case DocSymbol::Integral: m_t << "int "; break;
- case DocSymbol::Product: m_t << "prod "; break;
- case DocSymbol::Similar: m_t << "~"; break;
- case DocSymbol::Approx: m_t << "approx "; break;
- case DocSymbol::NotEqual: m_t << "!="; break;
- case DocSymbol::Equivalent: m_t << "equiv "; break;
- case DocSymbol::Proportional: m_t << "propto "; break;
- case DocSymbol::LessEqual: m_t << "<="; break;
- case DocSymbol::GreaterEqual: m_t << ">="; break;
- case DocSymbol::LeftArrow: m_t << "<-"; break;
- case DocSymbol::RightArrow: m_t << "->"; break;
- case DocSymbol::SetIn: m_t << "in "; break;
- case DocSymbol::SetNotIn: m_t << "notin "; break;
- case DocSymbol::LeftCeil: m_t << "lceil "; break;
- case DocSymbol::RightCeil: m_t << "rceil "; break;
- case DocSymbol::LeftFloor: m_t << "lfloor "; break;
- case DocSymbol::RightFloor: m_t << "rfloor "; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("RTF: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
m_lastIsPara=FALSE;
}
diff --git a/src/textdocvisitor.cpp b/src/textdocvisitor.cpp
index 9275846..1761d12 100644
--- a/src/textdocvisitor.cpp
+++ b/src/textdocvisitor.cpp
@@ -19,115 +19,20 @@
#include <qdir.h>
#include "textdocvisitor.h"
#include "message.h"
+#include "util.h"
//-------------------------------------------------------------------------
void TextDocVisitor::visit(DocSymbol *s)
{
- switch(s->symbol())
+ const char *res = get_symbol_text(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "&copy;"; break;
- case DocSymbol::Tm: m_t << "&tm;"; break;
- case DocSymbol::Reg: m_t << "&reg;"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "&lsquo;"; break;
- case DocSymbol::Rsquo: m_t << "&rsquo;"; break;
- case DocSymbol::Ldquo: m_t << "&ldquo;"; break;
- case DocSymbol::Rdquo: m_t << "&rdquo;"; break;
- case DocSymbol::Ndash: m_t << "&ndash;"; break;
- case DocSymbol::Mdash: m_t << "&mdash;"; break;
- case DocSymbol::Uml: m_t << "&" << s->letter() << "uml;"; break;
- case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
- case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
- case DocSymbol::Circ: m_t << "&" << s->letter() << "circ;"; break;
- case DocSymbol::Slash: m_t << "&" << s->letter() << "slash;"; break;
- case DocSymbol::Tilde: m_t << "&" << s->letter() << "tilde;"; break;
- case DocSymbol::Szlig: m_t << "&szlig;"; break;
- case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break;
- case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break;
- case DocSymbol::Nbsp: m_t << "&nbsp;"; break;
- case DocSymbol::Aelig: m_t << "&aelig;"; break;
- case DocSymbol::AElig: m_t << "&AElig;"; break;
- case DocSymbol::GrkGamma: m_t << "&Gamma;"; break;
- case DocSymbol::GrkDelta: m_t << "&Delta;"; break;
- case DocSymbol::GrkTheta: m_t << "&Theta;"; break;
- case DocSymbol::GrkLambda: m_t << "&Lambda;"; break;
- case DocSymbol::GrkXi: m_t << "&Xi;"; break;
- case DocSymbol::GrkPi: m_t << "&Pi;"; break;
- case DocSymbol::GrkSigma: m_t << "&Sigma;"; break;
- case DocSymbol::GrkUpsilon: m_t << "&Upsilon;"; break;
- case DocSymbol::GrkPhi: m_t << "&Phi;"; break;
- case DocSymbol::GrkPsi: m_t << "&Psi;"; break;
- case DocSymbol::GrkOmega: m_t << "&Omega;"; break;
- case DocSymbol::Grkalpha: m_t << "&alpha;"; break;
- case DocSymbol::Grkbeta: m_t << "&beta;"; break;
- case DocSymbol::Grkgamma: m_t << "&gamma;"; break;
- case DocSymbol::Grkdelta: m_t << "&delta;"; break;
- case DocSymbol::Grkepsilon: m_t << "&epsilon;"; break;
- case DocSymbol::Grkzeta: m_t << "&zeta;"; break;
- case DocSymbol::Grketa: m_t << "&eta;"; break;
- case DocSymbol::Grktheta: m_t << "&theta;"; break;
- case DocSymbol::Grkiota: m_t << "&iota;"; break;
- case DocSymbol::Grkkappa: m_t << "&kappa;"; break;
- case DocSymbol::Grklambda: m_t << "&lambda;"; break;
- case DocSymbol::Grkmu: m_t << "&mu;"; break;
- case DocSymbol::Grknu: m_t << "&nu;"; break;
- case DocSymbol::Grkxi: m_t << "&xi;"; break;
- case DocSymbol::Grkpi: m_t << "&pi;"; break;
- case DocSymbol::Grkrho: m_t << "&rho;"; break;
- case DocSymbol::Grksigma: m_t << "&sigma;"; break;
- case DocSymbol::Grktau: m_t << "&tau;"; break;
- case DocSymbol::Grkupsilon: m_t << "&upsilon;"; break;
- case DocSymbol::Grkphi: m_t << "&phi;"; break;
- case DocSymbol::Grkchi: m_t << "&chi;"; break;
- case DocSymbol::Grkpsi: m_t << "&psi;"; break;
- case DocSymbol::Grkomega: m_t << "&omega;"; break;
- case DocSymbol::Grkvarsigma: m_t << "&sigmaf;"; break;
- case DocSymbol::Section: m_t << "&sect;"; break;
- case DocSymbol::Degree: m_t << "&deg;"; break;
- case DocSymbol::Prime: m_t << "&prime;"; break;
- case DocSymbol::DoublePrime: m_t << "&Prime;"; break;
- case DocSymbol::Infinity: m_t << "&infin;"; break;
- case DocSymbol::EmptySet: m_t << "&empty;"; break;
- case DocSymbol::PlusMinus: m_t << "&plusmn;"; break;
- case DocSymbol::Times: m_t << "&times;"; break;
- case DocSymbol::Minus: m_t << "&minus;"; break;
- case DocSymbol::CenterDot: m_t << "&sdot;"; break;
- case DocSymbol::Partial: m_t << "&part;"; break;
- case DocSymbol::Nabla: m_t << "&nabla;"; break;
- case DocSymbol::SquareRoot: m_t << "&radic;"; break;
- case DocSymbol::Perpendicular: m_t << "&perp;"; break;
- case DocSymbol::Sum: m_t << "&sum;"; break;
- case DocSymbol::Integral: m_t << "&int;"; break;
- case DocSymbol::Product: m_t << "&prod;"; break;
- case DocSymbol::Similar: m_t << "&sim;"; break;
- case DocSymbol::Approx: m_t << "&asymp;"; break;
- case DocSymbol::NotEqual: m_t << "&ne;"; break;
- case DocSymbol::Equivalent: m_t << "&equiv;"; break;
- case DocSymbol::Proportional: m_t << "&prop;"; break;
- case DocSymbol::LessEqual: m_t << "&le;"; break;
- case DocSymbol::GreaterEqual: m_t << "&ge;"; break;
- case DocSymbol::LeftArrow: m_t << "&larr;"; break;
- case DocSymbol::RightArrow: m_t << "&rarr;"; break;
- case DocSymbol::SetIn: m_t << "&isin;"; break;
- case DocSymbol::SetNotIn: m_t << "&notin;"; break;
- case DocSymbol::LeftCeil: m_t << "&lceil;"; break;
- case DocSymbol::RightCeil: m_t << "&rceil;"; break;
- case DocSymbol::LeftFloor: m_t << "&lfloor;"; break;
- case DocSymbol::RightFloor: m_t << "&rfloor;"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("text: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
}
diff --git a/src/util.cpp b/src/util.cpp
index 91f6fda..66e2cfd 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1,5 +1,4 @@
/*****************************************************************************
- *
*
*
* Copyright (C) 1997-2013 by Dimitri van Heesch.
@@ -5680,141 +5679,16 @@ QCString convertCharEntitiesToUTF8(const QCString &s)
static QDict<char> entityMap(127);
static bool init=TRUE;
QCString result;
- static QRegExp entityPat("&[a-zA-Z]+;");
+ static QRegExp entityPat("&[a-zA-Z]+[0-9]*;");
if (init)
{
- entityMap.insert("copy", "\xC2\xA9");
- entityMap.insert("tm", "\xE2\x84\xA2");
- entityMap.insert("trade", "\xE2\x84\xA2");
- entityMap.insert("reg", "\xC2\xAE");
- entityMap.insert("lsquo", "\xE2\x80\x98");
- entityMap.insert("rsquo", "\xE2\x80\x99");
- entityMap.insert("ldquo", "\xE2\x80\x9C");
- entityMap.insert("rdquo", "\xE2\x80\x9D");
- entityMap.insert("ndash", "\xE2\x80\x93");
- entityMap.insert("mdash", "\xE2\x80\x94");
- entityMap.insert("Auml", "\xC3\x84");
- entityMap.insert("Euml", "\xC3\x8B");
- entityMap.insert("Iuml", "\xC3\x8F");
- entityMap.insert("Ouml", "\xC3\x96");
- entityMap.insert("Uuml", "\xC3\x9C");
- entityMap.insert("Yuml", "\xC5\xB8");
- entityMap.insert("auml", "\xC3\xA4");
- entityMap.insert("euml", "\xC3\xAB");
- entityMap.insert("iuml", "\xC3\xAF");
- entityMap.insert("ouml", "\xC3\xB6");
- entityMap.insert("uuml", "\xC3\xBC");
- entityMap.insert("yuml", "\xC3\xBF");
- entityMap.insert("Aacute", "\xC3\x81");
- entityMap.insert("Eacute", "\xC3\x89");
- entityMap.insert("Iacute", "\xC3\x8D");
- entityMap.insert("Oacute", "\xC3\x93");
- entityMap.insert("Uacute", "\xC3\x9A");
- entityMap.insert("aacute", "\xC3\xA1");
- entityMap.insert("eacute", "\xC3\xA9");
- entityMap.insert("iacute", "\xC3\xAD");
- entityMap.insert("oacute", "\xC3\xB3");
- entityMap.insert("uacute", "\xC3\xBA");
- entityMap.insert("Agrave", "\xC3\x80");
- entityMap.insert("Egrave", "\xC3\x88");
- entityMap.insert("Igrave", "\xC3\x8C");
- entityMap.insert("Ograve", "\xC3\x92");
- entityMap.insert("Ugrave", "\xC3\x99");
- entityMap.insert("agrave", "\xC3\xA0");
- entityMap.insert("egrave", "\xC3\xA8");
- entityMap.insert("igrave", "\xC3\xAC");
- entityMap.insert("ograve", "\xC3\xB2");
- entityMap.insert("ugrave", "\xC3\xB9");
- entityMap.insert("Acirc", "\xC3\x82");
- entityMap.insert("Ecirc", "\xC3\x8A");
- entityMap.insert("Icirc", "\xC3\x8E");
- entityMap.insert("Ocirc", "\xC3\x94");
- entityMap.insert("Ucirc", "\xC3\x9B");
- entityMap.insert("acirc", "\xC3\xA2");
- entityMap.insert("ecirc", "\xC3\xAA");
- entityMap.insert("icirc", "\xC3\xAE");
- entityMap.insert("ocirc", "\xC3\xB4");
- entityMap.insert("ucirc", "\xC3\xBB");
- entityMap.insert("Atilde", "\xC3\x83");
- entityMap.insert("Ntilde", "\xC3\x91");
- entityMap.insert("Otilde", "\xC3\x95");
- entityMap.insert("atilde", "\xC3\xA3");
- entityMap.insert("ntilde", "\xC3\xB1");
- entityMap.insert("otilde", "\xC3\xB5");
- entityMap.insert("szlig", "\xC3\x9F");
- entityMap.insert("Ccedil", "\xC3\x87");
- entityMap.insert("ccedil", "\xC3\xA7");
- entityMap.insert("Aring", "\xC3\x85");
- entityMap.insert("aring", "\xC3\xA5");
- entityMap.insert("nbsp", "\xC2\xA0");
- entityMap.insert("Gamma", "\xCE\x93");
- entityMap.insert("Delta", "\xCE\x94");
- entityMap.insert("Theta", "\xCE\x98");
- entityMap.insert("Lambda", "\xCE\x9B");
- entityMap.insert("Xi", "\xCE\x9E");
- entityMap.insert("Pi", "\xCE\xA0");
- entityMap.insert("Sigma", "\xCE\xA3");
- entityMap.insert("Upsilon", "\xCE\xA5");
- entityMap.insert("Phi", "\xCE\xA6");
- entityMap.insert("Psi", "\xCE\xA8");
- entityMap.insert("Omega", "\xCE\xA9");
- entityMap.insert("alpha", "\xCE\xB1");
- entityMap.insert("beta", "\xCE\xB2");
- entityMap.insert("gamma", "\xCE\xB3");
- entityMap.insert("delta", "\xCE\xB4");
- entityMap.insert("epsilon", "\xCE\xB5");
- entityMap.insert("zeta", "\xCE\xB6");
- entityMap.insert("eta", "\xCE\xB7");
- entityMap.insert("theta", "\xCE\xB8");
- entityMap.insert("iota", "\xCE\xB9");
- entityMap.insert("kappa", "\xCE\xBA");
- entityMap.insert("lambda", "\xCE\xBB");
- entityMap.insert("mu", "\xCE\xBC");
- entityMap.insert("nu", "\xCE\xBD");
- entityMap.insert("xi", "\xCE\xBE");
- entityMap.insert("pi", "\xCF\x80");
- entityMap.insert("rho", "\xCF\x81");
- entityMap.insert("sigma", "\xCF\x83");
- entityMap.insert("tau", "\xCF\x84");
- entityMap.insert("upsilon", "\xCF\x85");
- entityMap.insert("phi", "\xCF\x86");
- entityMap.insert("chi", "\xCF\x87");
- entityMap.insert("psi", "\xCF\x88");
- entityMap.insert("omega", "\xCF\x89");
- entityMap.insert("sigmaf", "\xCF\x82");
- entityMap.insert("sect", "\xC2\xA7");
- entityMap.insert("deg", "\xC2\xB0");
- entityMap.insert("prime", "\xE2\x80\xB2");
- entityMap.insert("Prime", "\xE2\x80\xB3");
- entityMap.insert("infin", "\xE2\x88\x9E");
- entityMap.insert("empty", "\xE2\x88\x85");
- entityMap.insert("plusmn", "\xC2\xB1");
- entityMap.insert("times", "\xC3\x97");
- entityMap.insert("minus", "\xE2\x88\x92");
- entityMap.insert("sdot", "\xE2\x8B\x85");
- entityMap.insert("part", "\xE2\x88\x82");
- entityMap.insert("nabla", "\xE2\x88\x87");
- entityMap.insert("radic", "\xE2\x88\x9A");
- entityMap.insert("perp", "\xE2\x8A\xA5");
- entityMap.insert("sum", "\xE2\x88\x91");
- entityMap.insert("int", "\xE2\x88\xAB");
- entityMap.insert("prod", "\xE2\x88\x8F");
- entityMap.insert("sim", "\xE2\x88\xBC");
- entityMap.insert("asymp", "\xE2\x89\x88");
- entityMap.insert("ne", "\xE2\x89\xA0");
- entityMap.insert("equiv", "\xE2\x89\xA1");
- entityMap.insert("prop", "\xE2\x88\x9D");
- entityMap.insert("le", "\xE2\x89\xA4");
- entityMap.insert("ge", "\xE2\x89\xA5");
- entityMap.insert("larr", "\xE2\x86\x90");
- entityMap.insert("rarr", "\xE2\x86\x92");
- entityMap.insert("isin", "\xE2\x88\x88");
- entityMap.insert("notin", "\xE2\x88\x89");
- entityMap.insert("lceil", "\xE2\x8C\x88");
- entityMap.insert("rceil", "\xE2\x8C\x89");
- entityMap.insert("lfloor", "\xE2\x8C\x8A");
- entityMap.insert("rfloor", "\xE2\x8C\x8B");
+ 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;
}
@@ -8339,3 +8213,445 @@ void convertProtectionLevel(
//printf("convertProtectionLevel(type=%d prot=%d): %d,%d\n",
// 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", "&#160;", "&nbsp;", "&nbsp;", "<nonbreakablespace/>", "&#160;", "~", " ", "\\~", {" ",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_iexcl, "iexcl", "\xc2\xa1", "&iexcl;", "&iexcl;", "&iexcl;", "<iexcl/>", "&#161;", "!`", NULL, "\\'A1", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_cent, "cent", "\xc2\xa2", "&cent;", "&cent;", "&cent;", "<cent/>", "&#162;", "\\textcent{}", NULL, "\\'A2", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_pound, "pound", "\xc2\xa3", "&pound;", "&pound;", "&pound;", "<pound/>", "&#163;", "{$\\pounds$}", NULL, "\\'A3", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_curren, "curren", "\xc2\xa4", "&curren;", "&curren;", "&curren;", "<curren/>", "&#164;", "\\textcurrency{}", NULL, "\\'A4", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_yen, "yen", "\xc2\xa5", "&yen;", "&yen;", "&yen;", "<yen/>", "&#165;", "{$\\yen$}", NULL, "\\'A5", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_brvbar, "brvbar", "\xc2\xa6", "&brvbar;", "&brvbar;", "&brvbar;", "<brvbar/>", "&#166;", "\\textbrokenbar{}", NULL, "\\'A6", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_sect, "sect", "\xc2\xa7", "&sect;", "&sect;", "&sect;", "<sect/>", "<simplesect/>", "{$\\S$}", NULL, "\\'A7", {"sect",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_uml, "uml", "\xc2\xa8", "&uml;", "&uml;", "&uml;", "<umlaut/>", "&#168;", "\\textasciidieresis{}", " \\*(4", "\\'A8", {" ",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_copy, "copy", "\xc2\xa9", "&copy;", "&copy;", "&copy;", "<copy/>", "&#169;", "\\copyright{}", "(C)", "\\'A9", {"copyright",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_ordf, "ordf", "\xc2\xaa", "&ordf;", "&ordf;", "&ordf;", "<ordf/>", "&#170;", "\\textordfeminine{}", NULL, "\\'AA", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_laquo, "laquo", "\xc2\xab", "&laquo;", "&laquo;", "&laquo;", "<laquo/>", "&#171;", "\\guillemotleft{}", NULL, "\\'AB", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_not, "not", "\xc2\xac", "&not;", "&not;", "&not;", "<not/>", "&#172;", "\\textlnot", NULL, "\\'AC", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_shy, "shy", "\xc2\xad", "&shy;", "&shy;", "&shy;", "<shy/>", "&#173;", "{$\\-$}", NULL, "\\-", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_reg, "reg", "\xc2\xae", "&reg;", "&reg;", "&reg;", "<registered/>", "&#174;", "\\textregistered{}", "(R)", "\\'AE", {"registered",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_macr, "macr", "\xc2\xaf", "&macr;", "&macr;", "&macr;", "<macr/>", "&#175;", "\\={}", NULL, "\\'AF ", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_deg, "deg", "\xc2\xb0", "&deg;", "&deg;", "&deg;", "<deg/>", "&#176;", "\\textdegree", NULL, "\\'B0", {"deg",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_plusmn, "plusmn", "\xc2\xb1", "&plusmn;", "&plusmn;", "&plusmn;", "<plusmn/>", "&#177;", "{$\\pm$}", NULL, "\\'B1", {"+/-",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_sup2, "sup2", "\xc2\xb2", "&sup2;", "&sup2;", "&sup2;", "<sup2/>", "&#178;", "\\texttwosuperior{}", NULL, "\\'B2", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_sup3, "sup3", "\xc2\xb3", "&sup3;", "&sup3;", "&sup3;", "<sup3/>", "&#179;", "\\textthreesuperior{}", NULL, "\\'B3", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_acute, "acute", "\xc2\xb4", "&acute;", "&acute;", "&acute;", "<acute/>", "&#180;", "\\'{}", NULL, "\\'B4", {" ",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_micro, "micro", "\xc2\xb5", "&micro;", "&micro;", "&micro;", "<micro/>", "&#181;", "{$\\mu$}", NULL, "\\'B5", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_para, "para", "\xc2\xb6", "&para;", "&para;", "&para;", "<para/>", "&#182;", "{$\\P$}", NULL, "\\'B6", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_middot, "middot", "\xc2\xb7", "&middot;", "&middot;", "&middot;", "<middot/>", "&#183;", "\\textperiodcentered{}", NULL, "\\'B7", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_cedil, "cedil", "\xc2\xb8", "&cedil;", "&cedil;", "&cedil;", "<cedil/>", "&#184;", "\\c{}", " \\*,", "\\'B8", {" ",DocSymbol::Perl_cedilla}},
+ {DocSymbol::Sym_sup1, "sup1", "\xc2\xb9", "&sup1;", "&sup1;", "&sup1;", "<sup1/>", "&#185;", "\\textonesuperior{}", NULL, "\\'B9", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_ordm, "ordm", "\xc2\xba", "&ordm;", "&ordm;", "&ordm;", "<ordm/>", "&#186;", "\\textordmasculine{}", NULL, "\\'BA", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_raquo, "raquo", "\xc2\xbb", "&raquo;", "&raquo;", "&raquo;", "<raquo/>", "&#187;", "\\guillemotright{}", NULL, "\\'BB", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_frac14, "frac14", "\xc2\xbc", "&frac14;", "&frac14;", "&frac14;", "<frac14/>", "&#188;", "{$\\frac14$}", "1/4", "\\'BC", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_frac12, "frac12", "\xc2\xbd", "&frac12;", "&frac12;", "&frac12;", "<frac12/>", "&#189;", "{$\\frac12$}", "1/2", "\\'BD", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_frac34, "frac34", "\xc2\xbe", "&frac34;", "&frac34;", "&frac34;", "<frac34/>", "&#190;", "{$\\frac34$}", "3/4", "\\'BE", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_iquest, "iquest", "\xc2\xbf", "&iquest;", "&iquest;", "&iquest;", "<iquest/>", "&#191;", "?`", NULL, "\\'BF", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_Agrave, "Agrave", "\xc3\x80", "&Agrave;", "&Agrave;", "&Agrave;", "<Agrave/>", "&#192;", "\\`{A}", "A\\*:", "\\'C0", {"A",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_Aacute, "Aacute", "\xc3\x81", "&Aacute;", "&Aacute;", "&Aacute;", "<Aacute/>", "&#193;", "\\'{A}", "A\\*(`", "\\'C1", {"A",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_Acirc, "Acirc", "\xc3\x82", "&Acirc;", "&Acirc;", "&Acirc;", "<Acirc/>", "&#194;", "\\^{A}", "A\\*^", "\\'C2", {"A",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_Atilde, "Atilde", "\xc3\x83", "&Atilde;", "&Atilde;", "&Atilde;", "<Atilde/>", "&#195;", "\\~{A}", "A\\*~", "\\'C3", {"A",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_Auml, "Auml", "\xc3\x84", "&Auml;", "&Auml;", "&Auml;", "<Aumlaut/>", "&#196;", "\\\"{A}", "A\\*(4", "\\'C4", {"A",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_Aring, "Aring", "\xc3\x85", "&Aring;", "&Aring;", "&Aring;", "<Aring/>", "&#197;", "\\AA", "A\\*o", "\\'C5", {"A",DocSymbol::Perl_ring}},
+ {DocSymbol::Sym_AElig, "AElig", "\xc3\x86", "&AElig;", "&AElig;", "&AElig;", "<AElig/>", "&#198;", "{\\AE}", NULL, "\\'C6", {"AElig",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Ccedil, "Ccedil", "\xc3\x87", "&Ccedil;", "&Ccedil;", "&Ccedil;", "<Ccedil/>", "&#199;", "\\c{C}", "C\\*,", "\\'C7", {"C",DocSymbol::Perl_cedilla}},
+ {DocSymbol::Sym_Egrave, "Egrave", "\xc3\x88", "&Egrave;", "&Egrave;", "&Egrave;", "<Egrave/>", "&#200;", "\\`{E}", "E\\*:", "\\'C8", {"E",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_Eacute, "Eacute", "\xc3\x89", "&Eacute;", "&Eacute;", "&Eacute;", "<Eacute/>", "&#201;", "\\'{E}", "E\\*(`", "\\'C9", {"E",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_Ecirc, "Ecirc", "\xc3\x8a", "&Ecirc;", "&Ecirc;", "&Ecirc;", "<Ecirc/>", "&#202;", "\\^{E}", "E\\*^", "\\'CA", {"E",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_Euml, "Euml", "\xc3\x8b", "&Euml;", "&Euml;", "&Euml;", "<Eumlaut/>", "&#203;", "\\\"{E}", "E\\*(4", "\\'CB", {"E",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_Igrave, "Igrave", "\xc3\x8c", "&Igrave;", "&Igrave;", "&Igrave;", "<Igrave/>", "&#204;", "\\`{I}", "I\\*:", "\\'CC", {"I",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_Iacute, "Iacute", "\xc3\x8d", "&Iacute;", "&Iacute;", "&Iacute;", "<Iacute/>", "&#205;", "\\'{I}", "I\\*(`", "\\'CD", {"I",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_Icirc, "Icirc", "\xc3\x8e", "&Icirc;", "&Icirc;", "&Icirc;", "<Icirc/>", "&#206;", "\\^{I}", "I\\*^", "\\'CE", {"I",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_Iuml, "Iuml", "\xc3\x8f", "&Iuml;", "&Iuml;", "&Iuml;", "<Iumlaut/>", "&#207;", "\\\"{I}", "I\\*(4", "\\'CF", {"I",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_ETH, "ETH", "\xc3\x90", "&ETH;", "&ETH;", "&ETH;", "<ETH/>", "&#208;", "\\DH", NULL, "\\'D0", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_Ntilde, "Ntilde", "\xc3\x91", "&Ntilde;", "&Ntilde;", "&Ntilde;", "<Ntilde/>", "&#209;", "\\~{N}", "N\\*~", "\\'D1", {"N",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_Ograve, "Ograve", "\xc3\x92", "&Ograve;", "&Ograve;", "&Ograve;", "<Ograve/>", "&#210;", "\\`{O}", "O\\*:", "\\'D2", {"O",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_Oacute, "Oacute", "\xc3\x93", "&Oacute;", "&Oacute;", "&Oacute;", "<Oacute/>", "&#211;", "\\'{O}", "O\\*(`", "\\'D3", {"O",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_Ocirc, "Ocirc", "\xc3\x94", "&Ocirc;", "&Ocirc;", "&Ocirc;", "<Ocirc/>", "&#212;", "\\^{O}", "O\\*^", "\\'D4", {"O",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_Otilde, "Otilde", "\xc3\x95", "&Otilde;", "&Otilde;", "&Otilde;", "<Otilde/>", "&#213;", "\\~{O}", "O\\*~", "\\'D5", {"O",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_Ouml, "Ouml", "\xc3\x96", "&Ouml;", "&Ouml;", "&Ouml;", "<Oumlaut/>", "&#214;", "\\\"{O}", "O\\*(4", "\\'D6", {"O",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_times, "times", "\xc3\x97", "&times;", "&times;", "&times;", "<imes/>", "&#215;", "{$\\times$}", NULL, "\\'D7", {"*",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Oslash, "Oslash", "\xc3\x98", "&Oslash;", "&Oslash;", "&Oslash;", "<Oslash/>", "&#216;", "{\\O}", "O\x08/", "\\'D8", {"O",DocSymbol::Perl_slash}},
+ {DocSymbol::Sym_Ugrave, "Ugrave", "\xc3\x99", "&Ugrave;", "&Ugrave;", "&Ugrave;", "<Ugrave/>", "&#217;", "\\`{U}", "U\\*:", "\\'D9", {"U",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_Uacute, "Uacute", "\xc3\x9a", "&Uacute;", "&Uacute;", "&Uacute;", "<Uacute/>", "&#218;", "\\'{U}", "U\\*(`", "\\'DA", {"U",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_Ucirc, "Ucirc", "\xc3\x9b", "&Ucirc;", "&Ucirc;", "&Ucirc;", "<Ucirc/>", "&#219;", "\\^{U}", "U\\*^", "\\'DB", {"U",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_Uuml, "Uuml", "\xc3\x9c", "&Uuml;", "&Uuml;", "&Uuml;", "<Uumlaut/>", "&#220;", "\\\"{U}", "U\\*(4", "\\'DC", {"U",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_Yacute, "Yacute", "\xc3\x9d", "&Yacute;", "&Yacute;", "&Yacute;", "<Yacute/>", "&#221;", "\\'{Y}", "Y\\*(`", "\\'DD", {"Y",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_THORN, "THORN", "\xc3\x9e", "&THORN;", "&THORN;", "&THORN;", "<THORN/>", "&#222;", "\\TH", NULL, "\\'DE", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_szlig, "szlig", "\xc3\x9f", "&szlig;", "&szlig;", "&szlig;", "<szlig/>", "&#223;", "{\\ss}", "s\\*:", "\\'DF", {"szlig",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_agrave, "agrave", "\xc3\xa0", "&agrave;", "&agrave;", "&agrave;", "<agrave/>", "&#224;", "\\`{a}", "a\\*:", "\\'E0", {"a",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_aacute, "aacute", "\xc3\xa1", "&aacute;", "&aacute;", "&aacute;", "<aacute/>", "&#225;", "\\'{a}", "a\\*(`", "\\'E1", {"a",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_acirc, "acirc", "\xc3\xa2", "&acirc;", "&acirc;", "&acirc;", "<acirc/>", "&#226;", "\\^{a}", "a\\*^", "\\'E2", {"a",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_atilde, "atilde", "\xc3\xa3", "&atilde;", "&atilde;", "&atilde;", "<atilde/>", "&#227;", "\\~{a}", "a\\*~", "\\'E3", {"a",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_auml, "auml", "\xc3\xa4", "&auml;", "&auml;", "&auml;", "<aumlaut/>", "&#228;", "\\\"{a}", "a\\*(4", "\\'E4", {"a",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_aring, "aring", "\xc3\xa5", "&aring;", "&aring;", "&aring;", "<aring/>", "&#229;", "\\aa", "a\\*o", "\\'E5", {"a",DocSymbol::Perl_ring}},
+ {DocSymbol::Sym_aelig, "aelig", "\xc3\xa6", "&aelig;", "&aelig;", "&aelig;", "<aelig/>", "&#230;", "{\\ae}", NULL, "\\'E6", {"aelig",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_ccedil, "ccedil", "\xc3\xa7", "&ccedil;", "&ccedil;", "&ccedil;", "<ccedil/>", "&#231;", "\\c{c}", "c\\*,", "\\'E7", {"c",DocSymbol::Perl_cedilla}},
+ {DocSymbol::Sym_egrave, "egrave", "\xc3\xa8", "&egrave;", "&egrave;", "&egrave;", "<egrave/>", "&#232;", "\\`{e}", "e\\*:", "\\'E8", {"e",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_eacute, "eacute", "\xc3\xa9", "&eacute;", "&eacute;", "&eacute;", "<eacute/>", "&#233;", "\\'{e}", "e\\*(`", "\\'E9", {"e",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_ecirc, "ecirc", "\xc3\xaa", "&ecirc;", "&ecirc;", "&ecirc;", "<ecirc/>", "&#234;", "\\^{e}", "e\\*^", "\\'EA", {"e",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_euml, "euml", "\xc3\xab", "&euml;", "&euml;", "&euml;", "<eumlaut/>", "&#235;", "\\\"{e}", "e\\*(4", "\\'EB", {"e",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_igrave, "igrave", "\xc3\xac", "&igrave;", "&igrave;", "&igrave;", "<igrave/>", "&#236;", "\\`{\\i}", "i\\*:", "\\'EC", {"i",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_iacute, "iacute", "\xc3\xad", "&iacute;", "&iacute;", "&iacute;", "<iacute/>", "&#237;", "\\'{\\i}", "i\\*(`", "\\'ED", {"i",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_icirc, "icirc", "\xc3\xae", "&icirc;", "&icirc;", "&icirc;", "<icirc/>", "&#238;", "\\^{\\i}", "i\\*^", "\\'EE", {"i",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_iuml, "iuml", "\xc3\xaf", "&iuml;", "&iuml;", "&iuml;", "<iumlaut/>", "&#239;", "\\\"{\\i}", "i\\*(4", "\\'EF", {"i",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_eth, "eth", "\xc3\xb0", "&eth;", "&eth;", "&eth;", "<eth/>", "&#240;", "\\dh", NULL, "\\'F0", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_ntilde, "ntilde", "\xc3\xb1", "&ntilde;", "&ntilde;", "&ntilde;", "<ntilde/>", "&#241;", "\\~{n}", "n\\*~", "\\'F1", {"n",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_ograve, "ograve", "\xc3\xb2", "&ograve;", "&ograve;", "&ograve;", "<ograve/>", "&#242;", "\\`{o}", "o\\*:", "\\'F2", {"o",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_oacute, "oacute", "\xc3\xb3", "&oacute;", "&oacute;", "&oacute;", "<oacute/>", "&#243;", "\\'{o}", "o\\*(`", "\\'F3", {"o",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_ocirc, "ocirc", "\xc3\xb4", "&ocirc;", "&ocirc;", "&ocirc;", "<ocirc/>", "&#244;", "\\^{o}", "o\\*^", "\\'F4", {"o",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_otilde, "otilde", "\xc3\xb5", "&otilde;", "&otilde;", "&otilde;", "<otilde/>", "&#245;", "\\~{o}", "o\\*~", "\\'F5", {"o",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_ouml, "ouml", "\xc3\xb6", "&ouml;", "&ouml;", "&ouml;", "<oumlaut/>", "&#246;", "\\\"{o}", "o\\*(4", "\\'F6", {"o",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_divide, "divide", "\xc3\xb7", "&divide;", "&divide;", "&divide;", "<divide/>", "&#247;", "{$\\div$}", NULL, "\\'F7", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_oslash, "oslash", "\xc3\xb8", "&oslash;", "&oslash;", "&oslash;", "<oslash/>", "&#248;", "{\\o}", "o\x08/", "\\'F8", {"o",DocSymbol::Perl_slash}},
+ {DocSymbol::Sym_ugrave, "ugrave", "\xc3\xb9", "&ugrave;", "&ugrave;", "&ugrave;", "<ugrave/>", "&#249;", "\\`{u}", "u\\*:", "\\'F9", {"u",DocSymbol::Perl_grave}},
+ {DocSymbol::Sym_uacute, "uacute", "\xc3\xba", "&uacute;", "&uacute;", "&uacute;", "<uacute/>", "&#250;", "\\'{u}", "u\\*(`", "\\'FA", {"u",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_ucirc, "ucirc", "\xc3\xbb", "&ucirc;", "&ucirc;", "&ucirc;", "<ucirc/>", "&#251;", "\\^{u}", "u\\*^", "\\'FB", {"u",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_uuml, "uuml", "\xc3\xbc", "&uuml;", "&uuml;", "&uuml;", "<uumlaut/>", "&#252;", "\\\"{u}", "u\\*(4", "\\'FC", {"u",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_yacute, "yacute", "\xc3\xbd", "&yacute;", "&yacute;", "&yacute;", "<yacute/>", "&#253;", "\\'{y}", "y\\*(`", "\\'FD", {"y",DocSymbol::Perl_acute}},
+ {DocSymbol::Sym_thorn, "thorn", "\xc3\xbe", "&thorn;", "&thorn;", "&thorn;", "<thorn/>", "&#254;", "\\th", NULL, "\\'FE", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_yuml, "yuml", "\xc3\xbf", "&yuml;", "&yuml;", "&yuml;", "<yumlaut/>", "&#255;", "\\\"{y}", "y\\*(4", "\\'FF", {"y",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_fnof, "fnof", "\xc6\x92", "&fnof;", "&fnof;", "&fnof;", "<fnof/>", "&#402;", "\\textflorin", NULL, "\\'83", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_Alpha, "Alpha", "\xce\x91", "&Alpha;", "&Alpha;", "&Alpha;", "<Alpha/>", "&#913;", "A", NULL, "\\u0913?", {"A",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Beta, "Beta", "\xce\x92", "&Beta;", "&Beta;", "&Beta;", "<Beta/>", "&#914;", "B", NULL, "\\u0914?", {"B",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Gamma, "Gamma", "\xce\x93", "&Gamma;", "&Gamma;", "&Gamma;", "<Gamma/>", "&#915;", "{$\\Gamma$}", NULL, "\\u0915?", {"Gamma",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Delta, "Delta", "\xce\x94", "&Delta;", "&Delta;", "&Delta;", "<Delta/>", "&#916;", "{$\\Delta$}", NULL, "\\u0916?", {"Delta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Epsilon, "Epsilon", "\xce\x95", "&Epsilon;", "&Epsilon;", "&Epsilon;", "<Epsilon/>", "&#917;", "E", NULL, "\\u0917?", {"E",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Zeta, "Zeta", "\xce\x96", "&Zeta;", "&Zeta;", "&Zeta;", "<Zeta/>", "&#918;", "Z", NULL, "\\u0918?", {"Z",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Eta, "Eta", "\xce\x97", "&Eta;", "&Eta;", "&Eta;", "<Eta/>", "&#919;", "H", NULL, "\\u0919?", {"H",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Theta, "Theta", "\xce\x98", "&Theta;", "&Theta;", "&Theta;", "<Theta/>", "&#920;", "{$\\Theta$}", NULL, "\\u0920?", {"Theta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Iota, "Iota", "\xce\x99", "&Iota;", "&Iota;", "&Iota;", "<Iota/>", "&#921;", "I", NULL, "\\u0921?", {"I",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Kappa, "Kappa", "\xce\x9a", "&Kappa;", "&Kappa;", "&Kappa;", "<Kappa/>", "&#922;", "K", NULL, "\\u0922?", {"K",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Lambda, "Lambda", "\xce\x9b", "&Lambda;", "&Lambda;", "&Lambda;", "<Lambda/>", "&#923;", "{$\\Lambda$}", NULL, "\\u0923?", {"Lambda",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Mu, "Mu", "\xce\x9c", "&Mu;", "&Mu;", "&Mu;", "<Mu/>", "&#924;", "M", NULL, "\\u0924?", {"M",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Nu, "Nu", "\xce\x9d", "&Nu;", "&Nu;", "&Nu;", "<Nu/>", "&#925;", "N", NULL, "\\u0925?", {"N",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Xi, "Xi", "\xce\x9e", "&Xi;", "&Xi;", "&Xi;", "<Xi/>", "&#926;", "{$\\Xi$}", NULL, "\\u0926?", {"Xi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Omicron, "Omicron", "\xce\x9f", "&Omicron;", "&Omicron;", "&Omicron;", "<Omicron/>", "&#927;", "O", NULL, "\\u0927?", {"O",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Pi, "Pi", "\xce\xa0", "&Pi;", "&Pi;", "&Pi;", "<Pi/>", "&#928;", "{$\\Pi$}", NULL, "\\u0928?", {"Pi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Rho, "Rho", "\xce\xa1", "&Rho;", "&Rho;", "&Rho;", "<Rho/>", "&#929;", "P", NULL, "\\u0929?", {"P",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Sigma, "Sigma", "\xce\xa3", "&Sigma;", "&Sigma;", "&Sigma;", "<Sigma/>", "&#931;", "{$\\Sigma$}", NULL, "\\u0931?", {"Sigma",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Tau, "Tau", "\xce\xa4", "&Tau;", "&Tau;", "&Tau;", "<Tau/>", "&#932;", "T", NULL, "\\u0932?", {"T",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Upsilon, "Upsilon", "\xce\xa5", "&Upsilon;", "&Upsilon;", "&Upsilon;", "<Upsilon/>", "&#933;", "{$\\Upsilon$}", NULL, "\\u0933?", {"Upsilon",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Phi, "Phi", "\xce\xa6", "&Phi;", "&Phi;", "&Phi;", "<Phi/>", "&#934;", "{$\\Phi$}", NULL, "\\u0934?", {"Phi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Chi, "Chi", "\xce\xa7", "&Chi;", "&Chi;", "&Chi;", "<Chi/>", "&#935;", "X", NULL, "\\u0935?", {"X",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Psi, "Psi", "\xce\xa8", "&Psi;", "&Psi;", "&Psi;", "<Psi/>", "&#936;", "{$\\Psi$}", NULL, "\\u0936?", {"Psi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_Omega, "Omega", "\xce\xa9", "&Omega;", "&Omega;", "&Omega;", "<Omega/>", "&#937;", "{$\\Omega$}", NULL, "\\u0937?", {"Omega",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_alpha, "alpha", "\xce\xb1", "&alpha;", "&alpha;", "&alpha;", "<alpha/>", "&#945;", "{$\\alpha$}", NULL, "\\u0945?", {"alpha",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_beta, "beta", "\xce\xb2", "&beta;", "&beta;", "&beta;", "<beta/>", "&#946;", "{$\\beta$}", NULL, "\\u0946?", {"beta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_gamma, "gamma", "\xce\xb3", "&gamma;", "&gamma;", "&gamma;", "<gamma/>", "&#947;", "{$\\gamma$}", NULL, "\\u0947?", {"gamma",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_delta, "delta", "\xce\xb4", "&delta;", "&delta;", "&delta;", "<delta/>", "&#948;", "{$\\delta$}", NULL, "\\u0948?", {"delta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_epsilon, "epsilon", "\xce\xb5", "&epsilon;", "&epsilon;", "&epsilon;", "<epsilon/>", "&#949;", "{$\\varepsilon$}", NULL, "\\u0949?", {"epsilon",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_zeta, "zeta", "\xce\xb6", "&zeta;", "&zeta;", "&zeta;", "<zeta/>", "&#950;", "{$\\zeta$}", NULL, "\\u0950?", {"zeta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_eta, "eta", "\xce\xb7", "&eta;", "&eta;", "&eta;", "<eta/>", "&#951;", "{$\\eta$}", NULL, "\\u0951?", {"eta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_theta, "theta", "\xce\xb8", "&theta;", "&theta;", "&theta;", "<theta/>", "&#952;", "{$\\theta$}", NULL, "\\u0952?", {"theta",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_iota, "iota", "\xce\xb9", "&iota;", "&iota;", "&iota;", "<iota/>", "&#953;", "{$\\iota$}", NULL, "\\u0953?", {"iota",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_kappa, "kappa", "\xce\xba", "&kappa;", "&kappa;", "&kappa;", "<kappa/>", "&#954;", "{$\\kappa$}", NULL, "\\u0954?", {"kappa",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_lambda, "lambda", "\xce\xbb", "&lambda;", "&lambda;", "&lambda;", "<lambda/>", "&#955;", "{$\\lambda$}", NULL, "\\u0955?", {"lambda",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_mu, "mu", "\xce\xbc", "&mu;", "&mu;", "&mu;", "<mu/>", "&#956;", "{$\\mu$}", NULL, "\\u0956?", {"mu",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_nu, "nu", "\xce\xbd", "&nu;", "&nu;", "&nu;", "<nu/>", "&#957;", "{$\\nu$}", NULL, "\\u0957?", {"nu",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_xi, "xi", "\xce\xbe", "&xi;", "&xi;", "&xi;", "<xi/>", "&#958;", "{$\\xi$}", NULL, "\\u0958?", {"xi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_omicron, "omicron", "\xce\xbf", "&omicron;", "&omicron;", "&omicron;", "<omicron/>", "&#959;", "{$\\omicron$}", NULL, "\\u0959?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_pi, "pi", "\xcf\x80", "&pi;", "&pi;", "&pi;", "<pi/>", "&#960;", "{$\\pi$}", NULL, "\\u0960?", {"pi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_rho, "rho", "\xcf\x81", "&rho;", "&rho;", "&rho;", "<rho/>", "&#961;", "{$\\rho$}", NULL, "\\u0961?", {"rho",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_sigmaf, "sigmaf", "\xcf\x82", "&sigmaf;", "&sigmaf;", "&sigmaf;", "<sigmaf/>", "&#962;", "{$\\varsigma$}", NULL, "\\u0962?", {"sigma",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_sigma, "sigma", "\xcf\x83", "&sigma;", "&sigma;", "&sigma;", "<sigma/>", "&#963;", "{$\\sigma$}", NULL, "\\u0963?", {"sigma",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_tau, "tau", "\xcf\x84", "&tau;", "&tau;", "&tau;", "<tau/>", "&#964;", "{$\\tau$}", NULL, "\\u0964?", {"tau",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_upsilon, "upsilon", "\xcf\x85", "&upsilon;", "&upsilon;", "&upsilon;", "<upsilon/>", "&#965;", "{$\\upsilon$}", NULL, "\\u0965?", {"upsilon",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_phi, "phi", "\xcf\x86", "&phi;", "&phi;", "&phi;", "<phi/>", "&#966;", "{$\\varphi$}", NULL, "\\u0966?", {"phi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_chi, "chi", "\xcf\x87", "&chi;", "&chi;", "&chi;", "<chi/>", "&#967;", "{$\\chi$}", NULL, "\\u0967?", {"chi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_psi, "psi", "\xcf\x88", "&psi;", "&psi;", "&psi;", "<psi/>", "&#968;", "{$\\psi$}", NULL, "\\u0968?", {"psi",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_omega, "omega", "\xcf\x89", "&omega;", "&omega;", "&omega;", "<omega/>", "&#969;", "{$\\omega$}", NULL, "\\u0969?", {"omega",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_thetasym, "thetasym", "\xcf\x91", "&thetasym;", "&thetasym;", "&thetasym;", "<thetasym/>", "&#977;", "{$\\vartheta$}", NULL, "\\u977?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_upsih, "upsih", "\xcf\x92", "&upsih;", "&upsih;", "&upsih;", "<upsih/>", "&#978;", "{$\\Upsilon$}", NULL, "\\u978?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_piv, "piv", "\xcf\x96", "&piv;", "&piv;", "&piv;", "<piv/>", "&#982;", "{$\\varpi$}", NULL, "\\u982?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_bull, "bull", "\xe2\x80\xa2", "&bull;", "&bull;", "&bull;", "<bull/>", "&#8226;", "\\textbullet{}", NULL, "\\'95", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_hellip, "hellip", "\xe2\x80\xa6", "&hellip;", "&hellip;", "&hellip;", "<hellip/>", "&#8230;", "{$\\cdots$}", NULL, "\\'85", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_prime, "prime", "\xe2\x80\xb2", "&prime;", "&prime;", "&prime;", "<prime/>", "&#8242;", "'", NULL, "\\u8242?", {"\\\'",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_Prime, "Prime", "\xe2\x80\xb3", "&Prime;", "&Prime;", "&Prime;", "<Prime/>", "&#8243;", "''", NULL, "\\u8243?", {"\"",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_oline, "oline", "\xe2\x80\xbe", "&oline;", "&oline;", "&oline;", "<oline/>", "&#8254;", "{$\\overline{\\,}$}", NULL, "\\u8254?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_frasl, "frasl", "\xe2\x81\x84", "&frasl;", "&frasl;", "&frasl;", "<frasl/>", "&#8260;", "/", NULL, "\\u8260?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_weierp, "weierp", "\xe2\x84\x98", "&weierp;", "&weierp;", "&weierp;", "<weierp/>", "&#8472;", "{$\\wp$}", NULL, "\\u8472?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_image, "image", "\xe2\x84\x91", "&image;", "&image;", "&image;", "<image/>", "&#8465;", "{$\\Im$}", NULL, "\\u8465?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_real, "real", "\xe2\x84\x9c", "&real;", "&real;", "&real;", "<real/>", "&#8476;", "{$\\Re$}", NULL, "\\u8476?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_trade, "trade", "\xe2\x84\xa2", "&trade;", "(TM)", "&tm;", "<trademark/>", "&#8482;", "\\texttrademark{}", "(TM)", "\\'99", {"trademark",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_alefsym, "alefsym", "\xe2\x85\xb5", "&alefsym;", "&alefsym;", "&alefsym;", "<alefsym/>", "&#8501;", "{$\\aleph$}", NULL, "\\u8501?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_larr, "larr", "\xe2\x86\x90", "&larr;", "&larr;", "&larr;", "<larr/>", "&#8592;", "{$\\leftarrow$}", NULL, "\\u8592?", {"<-",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_uarr, "uarr", "\xe2\x86\x91", "&uarr;", "&uarr;", "&uarr;", "<uarr/>", "&#8593;", "{$\\uparrow$}", NULL, "\\u8593?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_rarr, "rarr", "\xe2\x86\x92", "&rarr;", "&rarr;", "&rarr;", "<rarr/>", "&#8594;", "{$\\rightarrow$}", NULL, "\\u8594?", {"->",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_darr, "darr", "\xe2\x86\x93", "&darr;", "&darr;", "&darr;", "<darr/>", "&#8595;", "{$\\downarrow$}", NULL, "\\u8595?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_harr, "harr", "\xe2\x86\x94", "&harr;", "&harr;", "&harr;", "<harr/>", "&#8596;", "{$\\leftrightarrow$}", NULL, "\\u8596?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_crarr, "crarr", "\xe2\x86\xb5", "&crarr;", "&crarr;", "&crarr;", "<crarr/>", "&#8629;", "{$\\lrcorner$}" /* best I could find */, NULL, "\\u8629?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_lArr, "lArr", "\xe2\x87\x90", "&lArr;", "&lArr;", "&lArr;", "<lArr/>", "&#8656;", "{$\\Leftarrow$}", NULL, "\\u8656?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_uArr, "uArr", "\xe2\x87\x91", "&uArr;", "&uArr;", "&uArr;", "<uArr/>", "&#8657;", "{$\\Uparrow$}", NULL, "\\u8657?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_rArr, "rArr", "\xe2\x87\x92", "&rArr;", "&rArr;", "&rArr;", "<rArr/>", "&#8658;", "{$\\Rightarrow$}", NULL, "\\u8658?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_dArr, "dArr", "\xe2\x87\x93", "&dArr;", "&dArr;", "&dArr;", "<dArr/>", "&#8659;", "{$\\Downarrow$}", NULL, "\\u8659?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_hArr, "hArr", "\xe2\x87\x94", "&hArr;", "&hArr;", "&hArr;", "<hArr/>", "&#8660;", "{$\\Leftrightarrow$}", NULL, "\\u8660?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_forall, "forall", "\xe2\x88\x80", "&forall;", "&forall;", "&forall;", "<forall/>", "&#8704;", "{$\\forall$}", NULL, "\\u8704?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_part, "part", "\xe2\x88\x82", "&part;", "&part;", "&part;", "<part/>", "&#8706;", "{$\\partial$}", NULL, "\\u8706?", {"partial",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_exist, "exist", "\xe2\x88\x83", "&exist;", "&exist;", "&exist;", "<exist/>", "&#8707;", "{$\\exists$}", NULL, "\\u8707?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_empty, "empty", "\xe2\x88\x85", "&empty;", "&empty;", "&empty;", "<empty/>", "&#8709;", "{$\\emptyset$}", NULL, "\\u8709?", {"empty",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_nabla, "nabla", "\xe2\x88\x87", "&nabla;", "&nabla;", "&nabla;", "<nabla/>", "&#8711;", "{$\\nabla$}", NULL, "\\u8711?", {"nabla",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_isin, "isin", "\xe2\x88\x88", "&isin;", "&isin;", "&isin;", "<isin/>", "&#8712;", "{$\\in$}", NULL, "\\u8712?", {"in",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_notin, "notin", "\xe2\x88\x89", "&notin;", "&notin;", "&notin;", "<notin/>", "&#8713;", "{$\\notin$}", NULL, "\\u8713?", {"notin",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_ni, "ni", "\xe2\x88\x8b", "&ni;", "&ni;", "&ni;", "<ni/>", "&#8715;", "{$\\ni$}", NULL, "\\u8715?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_prod, "prod", "\xe2\x88\x8f", "&prod;", "&prod;", "&prod;", "<prod/>", "&#8719;", "{$\\prod$}", NULL, "\\u8719?", {"prod",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_sum, "sum", "\xe2\x88\x91", "&sum;", "&sum;", "&sum;", "<sum/>", "&#8721;", "{$\\sum$}", NULL, "\\u8721?", {"sum",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_minus, "minus", "\xe2\x88\x92", "&minus;", "&minus;", "&minus;", "<minus/>", "&#8722;", "-", NULL, "\\u8722?", {"-",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_lowast, "lowast", "\xe2\x88\x97", "&lowast;", "&lowast;", "&lowast;", "<lowast/>", "&#8727;", "{$\\ast$}", NULL, "\\u8727?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_radic, "radic", "\xe2\x88\x9a", "&radic;", "&radic;", "&radic;", "<radic/>", "&#8730;", "{$\\surd$}", NULL, "\\u8730?", {"sqrt",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_prop, "prop", "\xe2\x88\x9d", "&prop;", "&prop;", "&prop;", "<prop/>", "&#8733;", "{$\\propto$}", NULL, "\\u8733?", {"propto",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_infin, "infin", "\xe2\x88\x9e", "&infin;", "&infin;", "&infin;", "<infin/>", "&#8734;", "{$\\infty$}", NULL, "\\u8734?", {"inf",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_ang, "ang", "\xe2\x88\xa0", "&ang;", "&ang;", "&ang;", "<ang/>", "&#8736;", "{$\\angle$}", NULL, "\\u8736?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_and, "and", "\xe2\x88\xa7", "&and;", "&and;", "&and;", "<and/>", "&#8743;", "{$\\wedge$}", NULL, "\\u8743?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_or, "or", "\xe2\x88\xa8", "&or;", "&or;", "&or;", "<or/>", "&#8744;", "{$\\vee$}", NULL, "\\u8744?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_cap, "cap", "\xe2\x88\xa9", "&cap;", "&cap;", "&cap;", "<cap/>", "&#8745;", "{$\\cap$}", NULL, "\\u8745?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_cup, "cup", "\xe2\x88\xaa", "&cup;", "&cup;", "&cup;", "<cup/>", "&#8746;", "{$\\cup$}", NULL, "\\u8746?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_int, "int", "\xe2\x88\xab", "&int;", "&int;", "&int;", "<int/>", "&#8747;", "{$\\int$}", NULL, "\\u8747?", {"int",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_there4, "there4", "\xe2\x88\xb4", "&there4;", "&there4;", "&there4;", "<there4/>", "&#8756;", "{$\\therefore$}", NULL, "\\u8756?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_sim, "sim", "\xe2\x88\xbc", "&sim;", "&sim;", "&sim;", "<sim/>", "&#8764;", "{$\\sim$}", NULL, "\\u8764?", {"~",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_cong, "cong", "\xe2\x89\x85", "&cong;", "&cong;", "&cong;", "<cong/>", "&#8773;", "{$\\cong$}", NULL, "\\u8773?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_asymp, "asymp", "\xe2\x89\x88", "&asymp;", "&asymp;", "&asymp;", "<asymp/>", "&#8776;", "{$\\approx$}", NULL, "\\u8776?", {"approx",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_ne, "ne", "\xe2\x89\xa0", "&ne;", "&ne;", "&ne;", "<ne/>", "&#8800;", "{$\\ne$}", NULL, "\\u8800?", {"!=",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_equiv, "equiv", "\xe2\x89\xa1", "&equiv;", "&equiv;", "&equiv;", "<equiv/>", "&#8801;", "{$\\equiv$}", NULL, "\\u8801?", {"equiv",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_le, "le", "\xe2\x89\xa4", "&le;", "&le;", "&le;", "<le/>", "&#8804;", "{$\\le$}", NULL, "\\u8804?", {"<=",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_ge, "ge", "\xe2\x89\xa5", "&ge;", "&ge;", "&ge;", "<ge/>", "&#8805;", "{$\\ge$}", NULL, "\\u8805?", {">=",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_sub, "sub", "\xe2\x8a\x82", "&sub;", "&sub;", "&sub;", "<sub/>", "&#8834;", "{$\\subset$}", NULL, "\\u8834?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_sup, "sup", "\xe2\x8a\x83", "&sup;", "&sup;", "&sup;", "<sup/>", "&#8835;", "{$\\supset$}", NULL, "\\u8835?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_nsub, "nsub", "\xe2\x8a\x84", "&nsub;", "&nsub;", "&nsub;", "<nsub/>", "&#8836;", "{$\\not\\subset$}", NULL, "\\u8836?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_sube, "sube", "\xe2\x8a\x86", "&sube;", "&sube;", "&sube;", "<sube/>", "&#8838;", "{$\\subseteq$}", NULL, "\\u8838?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_supe, "supe", "\xe2\x8a\x87", "&supe;", "&supe;", "&supe;", "<supe/>", "&#8839;", "{$\\supseteq$}", NULL, "\\u8839?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_oplus, "oplus", "\xe2\x8a\x95", "&oplus;", "&oplus;", "&oplus;", "<oplus/>", "&#8853;", "{$\\oplus$}", NULL, "\\u8853?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_otimes, "otimes", "\xe2\x8a\x97", "&otimes;", "&otimes;", "&otimes;", "<otimes/>", "&#8855;", "{$\\otimes$}", NULL, "\\u8855?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_perp, "perp", "\xe2\x8a\xa5", "&perp;", "&perp;", "&perp;", "<perp/>", "&#8869;", "{$\\perp$}", NULL, "\\u8869?", {"perp",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_sdot, "sdot", "\xe2\x8b\x85", "&sdot;", "&sdot;", "&sdot;", "<sdot/>", "&#8901;", "{$\\cdot$}", NULL, "\\u8901?", {".",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_lceil, "lceil", "\xe2\x8c\x88", "&lceil;", "&lceil;", "&lceil;", "<lceil/>", "&#8968;", "{$\\lceil$}", NULL, "\\u8968?", {"lceil",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_rceil, "rceil", "\xe2\x8c\x89", "&rceil;", "&rceil;", "&rceil;", "<rceil/>", "&#8969;", "{$\\rceil$}", NULL, "\\u8969?", {"rceil",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_lfloor, "lfloor", "\xe2\x8c\x8a", "&lfloor;", "&lfloor;", "&lfloor;", "<lfloor/>", "&#8970;", "{$\\lfloor$}", NULL, "\\u8970?", {"lfloor",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_rfloor, "rfloor", "\xe2\x8c\x8b", "&rfloor;", "&rfloor;", "&rfloor;", "<rfloor/>", "&#8971;", "{$\\rfloor$}", NULL, "\\u8971?", {"rfloor",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_lang, "lang", "\xe2\x8c\xa9", "&lang;", "&lang;", "&lang;", "<lang/>", "&#9001;", "{$\\langle$}", NULL, "\\u9001?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_rang, "rang", "\xe2\x8c\xaa", "&rang;", "&rang;", "&rang;", "<rang/>", "&#9002;", "{$\\rangle$}", NULL, "\\u9002?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_loz, "loz", "\xe2\x97\x8a", "&loz;", "&loz;", "&loz;", "<loz/>", "&#9674;", "{$\\lozenge$}", NULL, "\\u9674?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_spades, "spades", "\xe2\x99\xa0", "&spades;", "&spades;", "&spades;", "<spades/>", "&#9824;", "{$\\spadesuit$}", NULL, "\\u9824?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_clubs, "clubs", "\xe2\x99\xa3", "&clubs;", "&clubs;", "&clubs;", "<clubs/>", "&#9827;", "{$\\clubsuit$}", NULL, "\\u9827?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_hearts, "hearts", "\xe2\x99\xa5", "&hearts;", "&hearts;", "&hearts;", "<hearts/>", "&#9829;", "{$\\heartsuit$}", NULL, "\\u9829?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_diams, "diams", "\xe2\x99\xa6", "&diams;", "&diams;", "&diams;", "<diams/>", "&#9830;", "{$\\diamondsuit$}", NULL, "\\u9830?", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_quot, "quot", "\"", "\"", "\"", "\"", "\"", "&quot;", "\"", "\"", "\"", {"\"",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_amp, "amp", "&", "&amp;", "&", "&amp;", "&amp;", "&amp;", "\\&", "&", "&", {"&",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_lt, "lt", "<", "&lt;", "<", "&lt;", "&lt;", "&lt;", "<", "<", "<", {"<",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_gt, "gt", ">", "&gt;", ">", "&gt;", "&gt;", "&gt;", ">", ">", ">", {">",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_OElig, "OElig", "\xc5\x92", "&OElig;", "&OElig;", "&OElig;", "<OElig/>", "&#338;", "\\OE", NULL, "\\'8C", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_oelig, "oelig", "\xc5\x93", "&oelig;", "&oelig;", "&oelig;", "<oelig/>", "&#339;", "\\oe", NULL, "\\'9C", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_Scaron, "Scaron", "\xc5\xa0", "&Scaron;", "&Scaron;", "&Scaron;", "<Scaron/>", "&#352;", "\\v{S}", NULL, "\\'8A", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_scaron, "scaron", "\xc5\xa1", "&scaron;", "&scaron;", "&scaron;", "<scaron/>", "&#353;", "\\v{s}", NULL, "\\'9A", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_Yuml, "Yuml", "\xc5\xb8", "&Yuml;", "&Yuml;", "&Yuml;", "<Yumlaut/>", "&#376;", "\\\"{Y}", "Y\\*(4", "\\'9F", {"Y",DocSymbol::Perl_umlaut}},
+ {DocSymbol::Sym_circ, "circ", "\xcb\x86", "&circ;", "&circ;", "&circ;", "<circ/>", "&#710;", "{$\\circ$}", NULL, "\\'88", {" ",DocSymbol::Perl_circ}},
+ {DocSymbol::Sym_tilde, "tilde", "\xcb\x9c", "&tilde;", "&tilde;", "&tilde;", "<tilde/>", "&#732;", "\\~{}", "~", "\\'98", {" ",DocSymbol::Perl_tilde}},
+ {DocSymbol::Sym_ensp, "ensp", "\xe2\x80\x82", "&ensp;", "&ensp;", "&ensp;", "<ensp/>", "&#8194;", "\\enskip{}", NULL, "{\\enspace}", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_emsp, "emsp", "\xe2\x80\x83", "&emsp;", "&emsp;", "&emsp;", "<emsp/>", "&#8195;", "\\quad{}", NULL, "{\\emspace}", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_thinsp, "thinsp", "\xe2\x80\x89", "&thinsp;", "&thinsp;", "&thinsp;", "<thinsp/>", "&#8201;", "\\,", NULL, "{\\qmspace}", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_zwnj, "zwnj", "\xe2\x80\x8c", "&zwnj;", "&zwnj;", "&zwnj;", "<zwnj/>", "&#8204;", "{}", NULL, "\\zwnj", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_zwj, "zwj", "\xe2\x80\x8d", "&zwj;", "&zwj;", "&zwj;", "<zwj/>", "&#8205;", "", NULL, "\\zwj", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_lrm, "lrm", "\xe2\x80\x8e", "&lrm;", "&lrm;", "&lrm;", "<lrm/>", "&#8206;", "", NULL, "\\ltrmark", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_rlm, "rlm", "\xe2\x80\x8f", "&rlm;", "&rlm;", "&rlm;", "<rlm/>", "&#8207;", "", NULL, "\\rtlmark", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_ndash, "ndash", "\xe2\x80\x93", "&ndash;", "&ndash;", "&ndash;", "<ndash/>", "&#8211;", "--", "--", "\\'96", {"-",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_mdash, "mdash", "\xe2\x80\x94", "&mdash;", "&mdash;", "&mdash;", "<mdash/>", "&#8212;", "---", "---", "\\'97", {"--",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_lsquo, "lsquo", "\xe2\x80\x98", "&lsquo;", "&lsquo;", "&lsquo;", "<lsquo/>", "&#8216;", "`", "`", "\\'91", {"\\\'",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_rsquo, "rsquo", "\xe2\x80\x99", "&rsquo;", "&rsquo;", "&rsquo;", "<rsquo/>", "&#8217;", "'", "'", "\\'92", {"\\\'",DocSymbol::Perl_string}},
+ {DocSymbol::Sym_sbquo, "sbquo", "\xe2\x80\x9a", "&sbquo;", "&sbquo;", "&sbquo;", "<sbquo/>", "&#8218;", "\\quotesinglbase{}", NULL, "\\'82", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_ldquo, "ldquo", "\xe2\x80\x9c", "&ldquo;", "&ldquo;", "&ldquo;", "<ldquo/>", "&#8220;", "``", "``", "\\'93", {"\"",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_rdquo, "rdquo", "\xe2\x80\x9d", "&rdquo;", "&rdquo;", "&rdquo;", "<rdquo/>", "&#8221;", "''", "''", "\\'94", {"\"",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_bdquo, "bdquo", "\xe2\x80\x9e", "&bdquo;", "&bdquo;", "&bdquo;", "<bdquo/>", "&#8222;", "\\quotedblbase{}", NULL, "\\'84", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_dagger, "dagger", "\xe2\x80\xa0", "&dagger;", "&dagger;", "&dagger;", "<dagger/>", "&#8224;", "{$\\dagger$}", NULL, "\\'86", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_Dagger, "Dagger", "\xe2\x80\xa1", "&Dagger;", "&Dagger;", "&Dagger;", "<Dagger/>", "&#8225;", "{$\\ddagger$}", NULL, "\\'87", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_permil, "permil", "\xe2\x80\xb0", "&permil;", "&permil;", "&permil;", "<permil/>", "&#8240;", "{$\\permil{}$}", NULL, "\\'89", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_lsaquo, "lsaquo", "\xe2\x80\xb9", "&lsaquo;", "&lsaquo;", "&lsaquo;", "<lsaquo/>", "&#8249;", "\\guilsinglleft{}", NULL, "\\'8B", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_rsaquo, "rsaquo", "\xe2\x80\xba", "&rsaquo;", "&rsaquo;", "&rsaquo;", "<rsaquo/>", "&#8250;", "\\guilsinglright{}", NULL, "\\'9B", {NULL,DocSymbol::Perl_unknown}},
+ {DocSymbol::Sym_euro, "euro", "\xe2\x82\xac", "&euro;", "&euro;", "&euro;", "<euro/>", "&#8364;", "\\texteuro{}", NULL, "\\'80", {NULL,DocSymbol::Perl_unknown}},
+
+ // doxygen extension to the HTML4 table of HTML entities
+ {DocSymbol::Sym_tm, "tm", "\xe2\x84\xa2", "&trade;", "(TM)", "&tm;", "<trademark/>", "&#8482;", "\\texttrademark{}", "(TM)", "\\'99", {"trademark",DocSymbol::Perl_symbol}},
+ {DocSymbol::Sym_apos, "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", "<", "&lt;", "<", "&lt;", "&lt;", "&lt;", "<", "<", "<", {"<",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Greater, "Greater", ">", "&gt;", ">", "&gt;", "&gt;", "&gt;", ">", ">", ">", {">",DocSymbol::Perl_char}},
+ {DocSymbol::Sym_Amp, "Amp", "&", "&amp;", "&", "&amp;", "&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", "\"", "\"", "\"", "\"", "\"", "&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);
+ }
+}
diff --git a/src/util.h b/src/util.h
index d41f8a2..c45d725 100644
--- a/src/util.h
+++ b/src/util.h
@@ -26,6 +26,7 @@
#include <ctype.h>
#include "types.h"
#include "sortdict.h"
+#include "docparser.h"
//--------------------------------------------------------------------
@@ -454,5 +455,19 @@ 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 8df1acf..4dc6f4a 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -70,110 +70,14 @@ void XmlDocVisitor::visit(DocWhiteSpace *w)
void XmlDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = get_symbol_xml(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "<copy/>"; break;
- case DocSymbol::Tm: m_t << "<trademark/>"; break;
- case DocSymbol::Reg: m_t << "<registered/>"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "<lsquo/>"; break;
- case DocSymbol::Rsquo: m_t << "<rsquo/>"; break;
- case DocSymbol::Ldquo: m_t << "<ldquo/>"; break;
- case DocSymbol::Rdquo: m_t << "<rdquo/>"; break;
- case DocSymbol::Ndash: m_t << "<ndash/>"; break;
- case DocSymbol::Mdash: m_t << "<mdash/>"; break;
- case DocSymbol::Uml: m_t << "<umlaut char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Acute: m_t << "<acute char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Grave: m_t << "<grave char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Circ: m_t << "<circ char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Tilde: m_t << "<tilde char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Szlig: m_t << "<szlig/>"; break;
- case DocSymbol::Cedil: m_t << "<cedil char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Ring: m_t << "<ring char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Slash: m_t << "<slash char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Nbsp: m_t << "<nonbreakablespace/>"; break;
- case DocSymbol::Aelig: m_t << "<aelig/>"; break;
- case DocSymbol::AElig: m_t << "<AElig/>"; break;
- case DocSymbol::GrkGamma: m_t << "<Gamma/>"; break;
- case DocSymbol::GrkDelta: m_t << "<Delta/>"; break;
- case DocSymbol::GrkTheta: m_t << "<Theta/>"; break;
- case DocSymbol::GrkLambda: m_t << "<Lambda/>"; break;
- case DocSymbol::GrkXi: m_t << "<Xi/>"; break;
- case DocSymbol::GrkPi: m_t << "<Pi/>"; break;
- case DocSymbol::GrkSigma: m_t << "<Sigma/>"; break;
- case DocSymbol::GrkUpsilon: m_t << "<Upsilon/>"; break;
- case DocSymbol::GrkPhi: m_t << "<Phi/>"; break;
- case DocSymbol::GrkPsi: m_t << "<Psi/>"; break;
- case DocSymbol::GrkOmega: m_t << "<Omega/>"; break;
- case DocSymbol::Grkalpha: m_t << "<alpha/>"; break;
- case DocSymbol::Grkbeta: m_t << "<beta/>"; break;
- case DocSymbol::Grkgamma: m_t << "<gamma/>"; break;
- case DocSymbol::Grkdelta: m_t << "<delta/>"; break;
- case DocSymbol::Grkepsilon: m_t << "<epsilon/>"; break;
- case DocSymbol::Grkzeta: m_t << "<zeta/>"; break;
- case DocSymbol::Grketa: m_t << "<eta/>"; break;
- case DocSymbol::Grktheta: m_t << "<theta/>"; break;
- case DocSymbol::Grkiota: m_t << "<iota/>"; break;
- case DocSymbol::Grkkappa: m_t << "<kappa/>"; break;
- case DocSymbol::Grklambda: m_t << "<lambda/>"; break;
- case DocSymbol::Grkmu: m_t << "<mu/>"; break;
- case DocSymbol::Grknu: m_t << "<nu/>"; break;
- case DocSymbol::Grkxi: m_t << "<xi/>"; break;
- case DocSymbol::Grkpi: m_t << "<pi/>"; break;
- case DocSymbol::Grkrho: m_t << "<rho/>"; break;
- case DocSymbol::Grksigma: m_t << "<sigma/>"; break;
- case DocSymbol::Grktau: m_t << "<tau/>"; break;
- case DocSymbol::Grkupsilon: m_t << "<upsilon/>"; break;
- case DocSymbol::Grkphi: m_t << "<phi/>"; break;
- case DocSymbol::Grkchi: m_t << "<chi/>"; break;
- case DocSymbol::Grkpsi: m_t << "<psi/>"; break;
- case DocSymbol::Grkomega: m_t << "<omega/>"; break;
- case DocSymbol::Grkvarsigma: m_t << "<sigmaf/>"; break;
- case DocSymbol::Section: m_t << "<sect/>"; break;
- case DocSymbol::Degree: m_t << "<deg/>"; break;
- case DocSymbol::Prime: m_t << "<prime/>"; break;
- case DocSymbol::DoublePrime: m_t << "<Prime/>"; break;
- case DocSymbol::Infinity: m_t << "<infin/>"; break;
- case DocSymbol::EmptySet: m_t << "<empty/>"; break;
- case DocSymbol::PlusMinus: m_t << "<plusmn/>"; break;
- case DocSymbol::Times: m_t << "<times/>"; break;
- case DocSymbol::Minus: m_t << "<minus/>"; break;
- case DocSymbol::CenterDot: m_t << "<sdot/>"; break;
- case DocSymbol::Partial: m_t << "<part/>"; break;
- case DocSymbol::Nabla: m_t << "<nabla/>"; break;
- case DocSymbol::SquareRoot: m_t << "<radic/>"; break;
- case DocSymbol::Perpendicular: m_t << "<perp/>"; break;
- case DocSymbol::Sum: m_t << "<sum/>"; break;
- case DocSymbol::Integral: m_t << "<int/>"; break;
- case DocSymbol::Product: m_t << "<prod/>"; break;
- case DocSymbol::Similar: m_t << "<sim/>"; break;
- case DocSymbol::Approx: m_t << "<asymp/>"; break;
- case DocSymbol::NotEqual: m_t << "<ne/>"; break;
- case DocSymbol::Equivalent: m_t << "<equiv/>"; break;
- case DocSymbol::Proportional: m_t << "<prop/>"; break;
- case DocSymbol::LessEqual: m_t << "<le/>"; break;
- case DocSymbol::GreaterEqual: m_t << "<ge/>"; break;
- case DocSymbol::LeftArrow: m_t << "<larr/>"; break;
- case DocSymbol::RightArrow: m_t << "<rarr/>"; break;
- case DocSymbol::SetIn: m_t << "<isin/>"; break;
- case DocSymbol::SetNotIn: m_t << "<notin/>"; break;
- case DocSymbol::LeftCeil: m_t << "<lceil/>"; break;
- case DocSymbol::RightCeil: m_t << "<rceil/>"; break;
- case DocSymbol::LeftFloor: m_t << "<lfloor/>"; break;
- case DocSymbol::RightFloor: m_t << "<rfloor/>"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("XML: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
}
}
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 570901f..084c2d7 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1897,7 +1897,48 @@ void generateXML()
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
- f.writeBlock(compound_xsd,qstrlen(compound_xsd));
+ /*
+ * 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))
+ {
+ 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));
+ }
+ }
+ 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));
+ }
f.close();
fileName=outputDirectory+"/index.xml";