diff options
-rw-r--r-- | doc/doxygen_manual.tex | 2 | ||||
-rw-r--r-- | doc/htmlcmds.doc | 362 | ||||
-rw-r--r-- | src/compound.xsd | 93 | ||||
-rw-r--r-- | src/docbookvisitor.cpp | 109 | ||||
-rw-r--r-- | src/docparser.cpp | 254 | ||||
-rw-r--r-- | src/docparser.h | 92 | ||||
-rw-r--r-- | src/htmldocvisitor.cpp | 112 | ||||
-rw-r--r-- | src/latexdocvisitor.cpp | 148 | ||||
-rw-r--r-- | src/latexgen.cpp | 2 | ||||
-rw-r--r-- | src/mandocvisitor.cpp | 43 | ||||
-rw-r--r-- | src/perlmodgen.cpp | 191 | ||||
-rw-r--r-- | src/printdocvisitor.h | 106 | ||||
-rw-r--r-- | src/rtfdocvisitor.cpp | 198 | ||||
-rw-r--r-- | src/textdocvisitor.cpp | 111 | ||||
-rw-r--r-- | src/util.cpp | 582 | ||||
-rw-r--r-- | src/util.h | 15 | ||||
-rw-r--r-- | src/xmldocvisitor.cpp | 110 | ||||
-rw-r--r-- | src/xmlgen.cpp | 43 |
18 files changed, 1036 insertions, 1537 deletions
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex index 58615ed..8c4af34 100644 --- a/doc/doxygen_manual.tex +++ b/doc/doxygen_manual.tex @@ -24,7 +24,9 @@ \usepackage{color} \usepackage{ifthen} \usepackage[table]{xcolor} +\PassOptionsToPackage{warn}{textcomp} \usepackage{textcomp} +\usepackage[nointegrals]{wasysym} \usepackage{alltt} \usepackage{ifpdf} \ifpdf diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc index 7038e99..96abe0a 100644 --- a/doc/htmlcmds.doc +++ b/doc/htmlcmds.doc @@ -109,106 +109,270 @@ of a HTML tag are passed on to the HTML output only <li><tt>\</VAR\></tt> Ends a <tt>\<VAR\></tt> section. </ul> -The special HTML character entities that are recognized by Doxygen: - +The special HTML4 character entities.<br> +The list of entities with their descriptions has been taken from <a href="http://www.w3.org/TR/html4/sgml/entities.html">Character entity references in HTML 4</a>. +( Portions © International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies.) +<ul> +<li><tt>\ </tt>` ` no-break space = non-breaking space: +<li><tt>\¡</tt>` ` inverted exclamation mark: ¡ +<li><tt>\¢</tt>` ` cent sign: ¢ +<li><tt>\£</tt>` ` pound sign: £ +<li><tt>\¤</tt>` ` currency sign: ¤ +<li><tt>\¥</tt>` ` yen sign = yuan sign: ¥ +<li><tt>\¦</tt>` ` broken bar = broken vertical bar: ¦ +<li><tt>\§</tt>` ` section sign: § +<li><tt>\¨</tt>` ` diaeresis = spacing diaeresis: ¨ +<li><tt>\©</tt>` ` copyright sign: © +<li><tt>\ª</tt>` ` feminine ordinal indicator: ª +<li><tt>\«</tt>` ` left-pointing double angle quotation mark = left pointing guillemet: « +<li><tt>\¬</tt>` ` not sign: ¬ +<li><tt>\­</tt>` ` soft hyphen = discretionary hyphen: ­ +<li><tt>\®</tt>` ` registered sign = registered trade mark sign: ® +<li><tt>\¯</tt>` ` macron = spacing macron = overline = APL overbar: ¯ +<li><tt>\°</tt>` ` degree sign: ° +<li><tt>\±</tt>` ` plus-minus sign = plus-or-minus sign: ± +<li><tt>\²</tt>` ` superscript two = superscript digit two = squared: ² +<li><tt>\³</tt>` ` superscript three = superscript digit three = cubed: ³ +<li><tt>\´</tt>` ` acute accent = spacing acute: ´ +<li><tt>\µ</tt>` ` micro sign: µ +<li><tt>\¶</tt>` ` pilcrow sign = paragraph sign: ¶ +<li><tt>\·</tt>` ` middle dot = Georgian comma = Greek middle dot: · +<li><tt>\¸</tt>` ` cedilla = spacing cedilla: ¸ +<li><tt>\¹</tt>` ` superscript one = superscript digit one: ¹ +<li><tt>\º</tt>` ` masculine ordinal indicator: º +<li><tt>\»</tt>` ` right-pointing double angle quotation mark = right pointing guillemet: » +<li><tt>\¼</tt>` ` vulgar fraction one quarter = fraction one quarter: ¼ +<li><tt>\½</tt>` ` vulgar fraction one half = fraction one half: ½ +<li><tt>\¾</tt>` ` vulgar fraction three quarters = fraction three quarters: ¾ +<li><tt>\¿</tt>` ` inverted question mark = turned question mark: ¿ +<li><tt>\À</tt>` ` latin capital letter A with grave = latin capital letter A grave: À +<li><tt>\Á</tt>` ` latin capital letter A with acute: Á +<li><tt>\Â</tt>` ` latin capital letter A with circumflex:  +<li><tt>\Ã</tt>` ` latin capital letter A with tilde: à +<li><tt>\Ä</tt>` ` latin capital letter A with diaeresis: Ä +<li><tt>\Å</tt>` ` latin capital letter A with ring above = latin capital letter A ring: Å +<li><tt>\Æ</tt>` ` latin capital letter AE = latin capital ligature AE: Æ +<li><tt>\Ç</tt>` ` latin capital letter C with cedilla: Ç +<li><tt>\È</tt>` ` latin capital letter E with grave: È +<li><tt>\É</tt>` ` latin capital letter E with acute: É +<li><tt>\Ê</tt>` ` latin capital letter E with circumflex: Ê +<li><tt>\Ë</tt>` ` latin capital letter E with diaeresis: Ë +<li><tt>\Ì</tt>` ` latin capital letter I with grave: Ì +<li><tt>\Í</tt>` ` latin capital letter I with acute: Í +<li><tt>\Î</tt>` ` latin capital letter I with circumflex: Î +<li><tt>\Ï</tt>` ` latin capital letter I with diaeresis: Ï +<li><tt>\Ð</tt>` ` latin capital letter ETH: Ð +<li><tt>\Ñ</tt>` ` latin capital letter N with tilde: Ñ +<li><tt>\Ò</tt>` ` latin capital letter O with grave: Ò +<li><tt>\Ó</tt>` ` latin capital letter O with acute: Ó +<li><tt>\Ô</tt>` ` latin capital letter O with circumflex: Ô +<li><tt>\Õ</tt>` ` latin capital letter O with tilde: Õ +<li><tt>\Ö</tt>` ` latin capital letter O with diaeresis: Ö +<li><tt>\×</tt>` ` multiplication sign: × +<li><tt>\Ø</tt>` ` latin capital letter O with stroke = latin capital letter O slash: Ø +<li><tt>\Ù</tt>` ` latin capital letter U with grave: Ù +<li><tt>\Ú</tt>` ` latin capital letter U with acute: Ú +<li><tt>\Û</tt>` ` latin capital letter U with circumflex: Û +<li><tt>\Ü</tt>` ` latin capital letter U with diaeresis: Ü +<li><tt>\Ý</tt>` ` latin capital letter Y with acute: Ý +<li><tt>\Þ</tt>` ` latin capital letter THORN: Þ +<li><tt>\ß</tt>` ` latin small letter sharp s = ess-zed: ß +<li><tt>\à</tt>` ` latin small letter a with grave = latin small letter a grave: à +<li><tt>\á</tt>` ` latin small letter a with acute: á +<li><tt>\â</tt>` ` latin small letter a with circumflex: â +<li><tt>\ã</tt>` ` latin small letter a with tilde: ã +<li><tt>\ä</tt>` ` latin small letter a with diaeresis: ä +<li><tt>\å</tt>` ` latin small letter a with ring above = latin small letter a ring: å +<li><tt>\æ</tt>` ` latin small letter ae = latin small ligature ae: æ +<li><tt>\ç</tt>` ` latin small letter c with cedilla: ç +<li><tt>\è</tt>` ` latin small letter e with grave: è +<li><tt>\é</tt>` ` latin small letter e with acute: é +<li><tt>\ê</tt>` ` latin small letter e with circumflex: ê +<li><tt>\ë</tt>` ` latin small letter e with diaeresis: ë +<li><tt>\ì</tt>` ` latin small letter i with grave: ì +<li><tt>\í</tt>` ` latin small letter i with acute: í +<li><tt>\î</tt>` ` latin small letter i with circumflex: î +<li><tt>\ï</tt>` ` latin small letter i with diaeresis: ï +<li><tt>\ð</tt>` ` latin small letter eth: ð +<li><tt>\ñ</tt>` ` latin small letter n with tilde: ñ +<li><tt>\ò</tt>` ` latin small letter o with grave: ò +<li><tt>\ó</tt>` ` latin small letter o with acute: ó +<li><tt>\ô</tt>` ` latin small letter o with circumflex: ô +<li><tt>\õ</tt>` ` latin small letter o with tilde: õ +<li><tt>\ö</tt>` ` latin small letter o with diaeresis: ö +<li><tt>\÷</tt>` ` division sign: ÷ +<li><tt>\ø</tt>` ` latin small letter o with stroke, = latin small letter o slash: ø +<li><tt>\ù</tt>` ` latin small letter u with grave: ù +<li><tt>\ú</tt>` ` latin small letter u with acute: ú +<li><tt>\û</tt>` ` latin small letter u with circumflex: û +<li><tt>\ü</tt>` ` latin small letter u with diaeresis: ü +<li><tt>\ý</tt>` ` latin small letter y with acute: ý +<li><tt>\þ</tt>` ` latin small letter thorn: þ +<li><tt>\ÿ</tt>` ` latin small letter y with diaeresis: ÿ +<li><tt>\ƒ</tt>` ` latin small f with hook = function = florin: ƒ +<li><tt>\Α</tt>` ` greek capital letter alpha: Α +<li><tt>\Β</tt>` ` greek capital letter beta: Β +<li><tt>\Γ</tt>` ` greek capital letter gamma: Γ +<li><tt>\Δ</tt>` ` greek capital letter delta: Δ +<li><tt>\Ε</tt>` ` greek capital letter epsilon: Ε +<li><tt>\Ζ</tt>` ` greek capital letter zeta: Ζ +<li><tt>\Η</tt>` ` greek capital letter eta: Η +<li><tt>\Θ</tt>` ` greek capital letter theta: Θ +<li><tt>\Ι</tt>` ` greek capital letter iota: Ι +<li><tt>\Κ</tt>` ` greek capital letter kappa: Κ +<li><tt>\Λ</tt>` ` greek capital letter lambda: Λ +<li><tt>\Μ</tt>` ` greek capital letter mu: Μ +<li><tt>\Ν</tt>` ` greek capital letter nu: Ν +<li><tt>\Ξ</tt>` ` greek capital letter xi: Ξ +<li><tt>\Ο</tt>` ` greek capital letter omicron: Ο +<li><tt>\Π</tt>` ` greek capital letter pi: Π +<li><tt>\Ρ</tt>` ` greek capital letter rho: Ρ +<li><tt>\Σ</tt>` ` greek capital letter sigma: Σ +<li><tt>\Τ</tt>` ` greek capital letter tau: Τ +<li><tt>\Υ</tt>` ` greek capital letter upsilon: Υ +<li><tt>\Φ</tt>` ` greek capital letter phi: Φ +<li><tt>\Χ</tt>` ` greek capital letter chi: Χ +<li><tt>\Ψ</tt>` ` greek capital letter psi: Ψ +<li><tt>\Ω</tt>` ` greek capital letter omega: Ω +<li><tt>\α</tt>` ` greek small letter alpha: α +<li><tt>\β</tt>` ` greek small letter beta: β +<li><tt>\γ</tt>` ` greek small letter gamma: γ +<li><tt>\δ</tt>` ` greek small letter delta: δ +<li><tt>\ε</tt>` ` greek small letter epsilon: ε +<li><tt>\ζ</tt>` ` greek small letter zeta: ζ +<li><tt>\η</tt>` ` greek small letter eta: η +<li><tt>\θ</tt>` ` greek small letter theta: θ +<li><tt>\ι</tt>` ` greek small letter iota: ι +<li><tt>\κ</tt>` ` greek small letter kappa: κ +<li><tt>\λ</tt>` ` greek small letter lambda: λ +<li><tt>\μ</tt>` ` greek small letter mu: μ +<li><tt>\ν</tt>` ` greek small letter nu: ν +<li><tt>\ξ</tt>` ` greek small letter xi: ξ +<li><tt>\ο</tt>` ` greek small letter omicron: ο +<li><tt>\π</tt>` ` greek small letter pi: π +<li><tt>\ρ</tt>` ` greek small letter rho: ρ +<li><tt>\ς</tt>` ` greek small letter final sigma: ς +<li><tt>\σ</tt>` ` greek small letter sigma: σ +<li><tt>\τ</tt>` ` greek small letter tau: τ +<li><tt>\υ</tt>` ` greek small letter upsilon: υ +<li><tt>\φ</tt>` ` greek small letter phi: φ +<li><tt>\χ</tt>` ` greek small letter chi: χ +<li><tt>\ψ</tt>` ` greek small letter psi: ψ +<li><tt>\ω</tt>` ` greek small letter omega: ω +<li><tt>\ϑ</tt> greek small letter theta symbol: ϑ +<li><tt>\ϒ</tt>` ` greek upsilon with hook symbol: ϒ +<li><tt>\ϖ</tt>` ` greek pi symbol: ϖ +<li><tt>\•</tt>` ` bullet = black small circle: • +<li><tt>\…</tt>` ` horizontal ellipsis = three dot leader: … +<li><tt>\′</tt>` ` prime = minutes = feet: ′ +<li><tt>\″</tt>` ` double prime = seconds = inches: ″ +<li><tt>\‾</tt>` ` overline = spacing overscore: ‾ +<li><tt>\⁄</tt>` ` fraction slash: ⁄ +<li><tt>\℘</tt>` ` script capital P = power set = Weierstrass p: ℘ +<li><tt>\ℑ</tt>` ` blackletter capital I = imaginary part: ℑ +<li><tt>\ℜ</tt>` ` blackletter capital R = real part symbol: ℜ +<li><tt>\™</tt>` ` trade mark sign: ™ +<li><tt>\ℵ</tt>` ` alef symbol = first transfinite cardinal: ℵ +<li><tt>\←</tt>` ` leftwards arrow: ← +<li><tt>\↑</tt>` ` upwards arrow: ↑ +<li><tt>\→</tt>` ` rightwards arrow: → +<li><tt>\↓</tt>` ` downwards arrow: ↓ +<li><tt>\↔</tt>` ` left right arrow: ↔ +<li><tt>\↵</tt>` ` downwards arrow with corner leftwards = carriage return: ↵ +<li><tt>\⇐</tt>` ` leftwards double arrow: ⇐ +<li><tt>\⇑</tt>` ` upwards double arrow: ⇑ +<li><tt>\⇒</tt>` ` rightwards double arrow: ⇒ +<li><tt>\⇓</tt>` ` downwards double arrow: ⇓ +<li><tt>\⇔</tt>` ` left right double arrow: ⇔ +<li><tt>\∀</tt>` ` for all: ∀ +<li><tt>\∂</tt>` ` partial differential: ∂ +<li><tt>\∃</tt>` ` there exists: ∃ +<li><tt>\∅</tt>` ` empty set = null set = diameter: ∅ +<li><tt>\∇</tt>` ` nabla = backward difference: ∇ +<li><tt>\∈</tt>` ` element of: ∈ +<li><tt>\∉</tt>` ` not an element of: ∉ +<li><tt>\∋</tt>` ` contains as member: ∋ +<li><tt>\∏</tt>` ` n-ary product = product sign: ∏ +<li><tt>\∑</tt>` ` n-ary sumation: ∑ +<li><tt>\−</tt>` ` minus sign: − +<li><tt>\∗</tt>` ` asterisk operator: ∗ +<li><tt>\√</tt>` ` square root = radical sign: √ +<li><tt>\∝</tt>` ` proportional to: ∝ +<li><tt>\∞</tt>` ` infinity: ∞ +<li><tt>\∠</tt>` ` angle: ∠ +<li><tt>\∧</tt>` ` logical and = wedge: ∧ +<li><tt>\∨</tt>` ` logical or = vee: ∨ +<li><tt>\∩</tt>` ` intersection = cap: ∩ +<li><tt>\∪</tt>` ` union = cup: ∪ +<li><tt>\∫</tt>` ` integral: ∫ +<li><tt>\∴</tt>` ` therefore: ∴ +<li><tt>\∼</tt>` ` tilde operator = varies with = similar to: ∼ +<li><tt>\≅</tt>` ` approximately equal to: ≅ +<li><tt>\≈</tt>` ` almost equal to = asymptotic to: ≈ +<li><tt>\≠</tt>` ` not equal to: ≠ +<li><tt>\≡</tt>` ` identical to: ≡ +<li><tt>\≤</tt>` ` less-than or equal to: ≤ +<li><tt>\≥</tt>` ` greater-than or equal to: ≥ +<li><tt>\⊂</tt>` ` subset of: ⊂ +<li><tt>\⊃</tt>` ` superset of: ⊃ +<li><tt>\⊄</tt>` ` not a subset of: ⊄ +<li><tt>\⊆</tt>` ` subset of or equal to: ⊆ +<li><tt>\⊇</tt>` ` superset of or equal to: ⊇ +<li><tt>\⊕</tt>` ` circled plus = direct sum: ⊕ +<li><tt>\⊗</tt>` ` circled times = vector product: ⊗ +<li><tt>\⊥</tt>` ` up tack = orthogonal to = perpendicular: ⊥ +<li><tt>\⋅</tt>` ` dot operator: ⋅ +<li><tt>\⌈</tt>` ` left ceiling = apl upstile: ⌈ +<li><tt>\⌉</tt>` ` right ceiling: ⌉ +<li><tt>\⌊</tt>` ` left floor = apl downstile: ⌊ +<li><tt>\⌋</tt>` ` right floor: ⌋ +<li><tt>\⟨</tt>` ` left-pointing angle bracket = bra: ⟨ +<li><tt>\⟩</tt>` ` right-pointing angle bracket = ket: ⟩ +<li><tt>\◊</tt>` ` lozenge: ◊ +<li><tt>\♠</tt>` ` black spade suit: ♠ +<li><tt>\♣</tt>` ` black club suit = shamrock: ♣ +<li><tt>\♥</tt>` ` black heart suit = valentine: ♥ +<li><tt>\♦</tt>` ` black diamond suit: ♦ +<li><tt>\"</tt>` ` quotation mark = APL quote: " +<li><tt>\&</tt>` ` ampersand: & +<li><tt>\<</tt>` ` less-than sign: < +<li><tt>\></tt>` ` greater-than sign: > +<li><tt>\Œ</tt>` ` latin capital ligature OE: Œ +<li><tt>\œ</tt>` ` latin small ligature oe: œ +<li><tt>\Š</tt>` ` latin capital letter S with caron: Š +<li><tt>\š</tt>` ` latin small letter s with caron: š +<li><tt>\Ÿ</tt>` ` latin capital letter Y with diaeresis: Ÿ +<li><tt>\ˆ</tt>` ` modifier letter circumflex accent: ˆ +<li><tt>\˜</tt>` ` small tilde: ˜ +<li><tt>\ </tt>` ` en space:   +<li><tt>\ </tt>` ` em space:   +<li><tt>\ </tt>` ` thin space:   +<li><tt>\‌</tt>` ` zero width non-joiner: ‌ +<li><tt>\‍</tt>` ` zero width joiner: ‍ +<li><tt>\‎</tt>` ` left-to-right mark: ‎ +<li><tt>\‏</tt>` ` right-to-left mark: ‏ +<li><tt>\–</tt>` ` en dash: – +<li><tt>\—</tt>` ` em dash: — +<li><tt>\‘</tt>` ` left single quotation mark: ‘ +<li><tt>\’</tt>` ` right single quotation mark: ’ +<li><tt>\‚</tt>` ` single low-9 quotation mark: ‚ +<li><tt>\“</tt>` ` left double quotation mark: “ +<li><tt>\”</tt>` ` right double quotation mark: ” +<li><tt>\„</tt>` ` double low-9 quotation mark: „ +<li><tt>\†</tt>` ` dagger: † +<li><tt>\‡</tt>` ` double dagger: ‡ +<li><tt>\‰</tt>` ` per mille sign: ‰ +<li><tt>\‹</tt>` ` single left-pointing angle quotation mark: ‹ +<li><tt>\›</tt>` ` single right-pointing angle quotation mark: › +<li><tt>\€</tt>` ` euro sign: € +</ul> +Doxygen extensions: <ul> -<li><tt>\©</tt> the copyright symbol -<li><tt>\™</tt> the trade mark symbol -<li><tt>\®</tt> the registered trade mark symbol -<li><tt>\<</tt> less-than symbol -<li><tt>\></tt> greater-than symbol -<li><tt>\&</tt> ampersand -<li><tt>\'</tt> single quotation mark (straight) -<li><tt>\"</tt> double quotation mark (straight) -<li><tt>\‘</tt> left single quotation mark -<li><tt>\’</tt> right single quotation mark -<li><tt>\“</tt> left double quotation mark -<li><tt>\”</tt> right double quotation mark -<li><tt>\–</tt> n-dash (for numeric ranges, e.g. 2–8) -<li><tt>\—</tt> m-dash (for parenthetical punctuation — like this) -<li><tt>\&?uml;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y}, - writes a character with a diaeresis accent (like ä). -<li><tt>\&?acute;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y}, - writes a character with an acute accent (like á). -<li><tt>\&?grave;</tt> where ? is one of {A,E,I,O,U,a,e,i,o,u,y}, - writes a character with a grave accent (like à). -<li><tt>\&?circ;</tt> where ? is one of {A,E,I,O,U,a,e,i,o,u,y}, - writes a character with a circumflex accent (like â). -<li><tt>\&?tilde;</tt> where ? is one of {A,N,O,a,n,o}, - writes a character with a tilde accent (like ã). -<li><tt>\ß</tt> write a sharp s (i.e. ß) to the output. -<li><tt>\&?cedil;</tt> where ? is one of {c,C}, - writes a c-cedille (like ç). -<li><tt>\&?ring;</tt> where ? is one of {a,A}, - writes an <tt>a</tt> with a ring (like å). -<li><tt>\ </tt> a non breakable space. -<li><tt>\Γ</tt> Greek letter Gamma Γ. -<li><tt>\Δ</tt> Greek letter Delta Δ. -<li><tt>\Θ</tt> Greek letter Theta Θ. -<li><tt>\Λ</tt> Greek letter Lambda Λ. -<li><tt>\Ξ</tt> Greek letter Xi Ξ. -<li><tt>\Π</tt> Greek letter Pi Π. -<li><tt>\Σ</tt> Greek letter Sigma Σ. -<li><tt>\Υ</tt> Greek letter Upsilon Υ. -<li><tt>\Φ</tt> Greek letter Phi Φ. -<li><tt>\Ψ</tt> Greek letter Psi Ψ. -<li><tt>\Ω</tt> Greek letter Omega Ω. -<li><tt>\α</tt> Greek letter alpha α. -<li><tt>\β</tt> Greek letter beta β. -<li><tt>\γ</tt> Greek letter gamma γ. -<li><tt>\δ</tt> Greek letter delta δ. -<li><tt>\ε</tt> Greek letter epsilon ε. -<li><tt>\ζ</tt> Greek letter zeta ζ. -<li><tt>\η</tt> Greek letter eta η. -<li><tt>\θ</tt> Greek letter theta θ. -<li><tt>\ι</tt> Greek letter iota ι. -<li><tt>\κ</tt> Greek letter kappa κ. -<li><tt>\λ</tt> Greek letter lambda λ. -<li><tt>\μ</tt> Greek letter mu μ. -<li><tt>\ν</tt> Greek letter nu ν. -<li><tt>\ξ</tt> Greek letter xi ξ. -<li><tt>\π</tt> Greek letter pi π. -<li><tt>\ρ</tt> Greek letter rho ρ. -<li><tt>\σ</tt> Greek letter sigma σ. -<li><tt>\τ</tt> Greek letter tau τ. -<li><tt>\υ</tt> Greek letter upsilon υ. -<li><tt>\φ</tt> Greek letter phi φ. -<li><tt>\χ</tt> Greek letter chi χ. -<li><tt>\ψ</tt> Greek letter psi ψ. -<li><tt>\ω</tt> Greek letter omega ω. -<li><tt>\ς</tt> Greek final sigma ς. -<li><tt>\§</tt> section sign §. -<li><tt>\°</tt> degree °. -<li><tt>\′</tt> prime ′. -<li><tt>\″</tt> double prime ″. -<li><tt>\∞</tt> infinity ∞. -<li><tt>\∅</tt> empty set ∅. -<li><tt>\±</tt> plus or minus ±. -<li><tt>\×</tt> multiplication sign ×. -<li><tt>\−</tt> minus sign −. -<li><tt>\⋅</tt> centered dot ⋅. -<li><tt>\∂</tt> partial derivative ∂. -<li><tt>\∇</tt> nabla symbol ∇. -<li><tt>\√</tt> square root √. -<li><tt>\⊥</tt> perpendicular symbol ⊥. -<li><tt>\∑</tt> sum ∑. -<li><tt>\∫</tt> integral ∫. -<li><tt>\∏</tt> product ∏. -<li><tt>\∼</tt> similar to ∼. -<li><tt>\≈</tt> approximately equal to ≈. -<li><tt>\≠</tt> not equal to ≠. -<li><tt>\≡</tt> equivalent to ≡. -<li><tt>\∝</tt> proportional to ∝. -<li><tt>\≤</tt> less than or equal to ≤. -<li><tt>\≥</tt> greater than or equal to ≥. -<li><tt>\←</tt> left arrow ←. -<li><tt>\→</tt> right arrow →. -<li><tt>\∈</tt> in the set ∈. -<li><tt>\∉</tt> not in the set ∉. -<li><tt>\⌈</tt> left ceiling sign ⌈. -<li><tt>\⌉</tt> right ceiling sign ⌉. -<li><tt>\⌊</tt> left floor sign ⌊. -<li><tt>\⌋</tt> right floor sign ⌋. +<li><tt>\&tm;</tt>` ` trade mark sign: &tm; +<li><tt>\'</tt>` ` apostrophe: ' </ul> Finally, to put invisible comments inside comment blocks, HTML style 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 << "<"; 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::Copy: m_t << "©"; break; - case DocSymbol::Tm: m_t << "™"; break; - case DocSymbol::Reg: m_t << "®"; 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 << "¨"; break; - case DocSymbol::Acute: m_t << "´"; break; - case DocSymbol::Grave: m_t << "À"; break; - case DocSymbol::Circ: m_t << "ˆ"; break; - case DocSymbol::Tilde: m_t << "˜"; break; - case DocSymbol::Szlig: m_t << "ß"; break; - case DocSymbol::Cedil: m_t << "¸"; break; - case DocSymbol::Ring: m_t << "Å"; break; - case DocSymbol::Slash: m_t << "Ø"; break; - case DocSymbol::Nbsp: m_t << " "; break; - case DocSymbol::Aelig: m_t << "æ"; break; - case DocSymbol::AElig: m_t << "Æ"; break; - case DocSymbol::GrkGamma: m_t << "Γ"; break; - case DocSymbol::GrkDelta: m_t << "Δ"; break; - case DocSymbol::GrkTheta: m_t << "Θ"; break; - case DocSymbol::GrkLambda: m_t << "Λ"; break; - case DocSymbol::GrkXi: m_t << "Ξ"; break; - case DocSymbol::GrkPi: m_t << "Π"; break; - case DocSymbol::GrkSigma: m_t << "Σ"; break; - case DocSymbol::GrkUpsilon: m_t << "Υ"; break; - case DocSymbol::GrkPhi: m_t << "Φ"; break; - case DocSymbol::GrkPsi: m_t << "Ψ"; break; - case DocSymbol::GrkOmega: m_t << "Ω"; break; - case DocSymbol::Grkalpha: m_t << "α"; break; - case DocSymbol::Grkbeta: m_t << "β"; break; - case DocSymbol::Grkgamma: m_t << "γ"; break; - case DocSymbol::Grkdelta: m_t << "δ"; break; - case DocSymbol::Grkepsilon: m_t << "ε"; break; - case DocSymbol::Grkzeta: m_t << "ζ"; break; - case DocSymbol::Grketa: m_t << "η"; break; - case DocSymbol::Grktheta: m_t << "θ"; break; - case DocSymbol::Grkiota: m_t << "ι"; break; - case DocSymbol::Grkkappa: m_t << "κ"; break; - case DocSymbol::Grklambda: m_t << "λ"; break; - case DocSymbol::Grkmu: m_t << "μ"; break; - case DocSymbol::Grknu: m_t << "ν"; break; - case DocSymbol::Grkxi: m_t << "ξ"; break; - case DocSymbol::Grkpi: m_t << "π"; break; - case DocSymbol::Grkrho: m_t << "ρ"; break; - case DocSymbol::Grksigma: m_t << "σ"; break; - case DocSymbol::Grktau: m_t << "τ"; break; - case DocSymbol::Grkupsilon: m_t << "υ"; break; - case DocSymbol::Grkphi: m_t << "φ"; break; - case DocSymbol::Grkchi: m_t << "χ"; break; - case DocSymbol::Grkpsi: m_t << "ψ"; break; - case DocSymbol::Grkomega: m_t << "ω"; break; - case DocSymbol::Grkvarsigma: m_t << "ς"; break; - case DocSymbol::Section: m_t << "<simplesect/>"; break; - case DocSymbol::Degree: m_t << "°"; break; - case DocSymbol::Prime: m_t << "′"; break; - case DocSymbol::DoublePrime: m_t << "″"; break; - case DocSymbol::Infinity: m_t << "∞"; break; - case DocSymbol::EmptySet: m_t << "∅"; break; - case DocSymbol::PlusMinus: m_t << "±"; break; - case DocSymbol::Times: m_t << "×"; break; - case DocSymbol::Minus: m_t << "−"; break; - case DocSymbol::CenterDot: m_t << "⋅"; break; - case DocSymbol::Partial: m_t << "∂"; break; - case DocSymbol::Nabla: m_t << "∇"; break; - case DocSymbol::SquareRoot: m_t << "√"; break; - case DocSymbol::Perpendicular: m_t << "⊥"; break; - case DocSymbol::Sum: m_t << "∑"; break; - case DocSymbol::Integral: m_t << "∫"; break; - case DocSymbol::Product: m_t << "∏"; break; - case DocSymbol::Similar: m_t << "∼"; break; - case DocSymbol::Approx: m_t << "≈"; break; - case DocSymbol::NotEqual: m_t << "≠"; break; - case DocSymbol::Equivalent: m_t << "≡"; break; - case DocSymbol::Proportional: m_t << "∝"; 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 << "∈"; break; - case DocSymbol::SetNotIn: m_t << "∉"; break; - case DocSymbol::LeftCeil: m_t << "⌈"; break; - case DocSymbol::RightCeil: m_t << "⌉"; break; - case DocSymbol::LeftFloor: m_t << "⌊"; break; - case DocSymbol::RightFloor: m_t << "⌋"; 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=="©") return DocSymbol::Copy; - else if (symName=="™") return DocSymbol::Tm; - else if (symName=="&tm;") return DocSymbol::Tm; // alias for ™ - else if (symName=="®") return DocSymbol::Reg; - else if (symName=="<") return DocSymbol::Less; - else if (symName==">") return DocSymbol::Greater; - else if (symName=="&") return DocSymbol::Amp; - else if (symName=="'") return DocSymbol::Apos; - else if (symName==""") return DocSymbol::Quot; - else if (symName=="‘") return DocSymbol::Lsquo; - else if (symName=="’") return DocSymbol::Rsquo; - else if (symName=="“") return DocSymbol::Ldquo; - else if (symName=="”") return DocSymbol::Rdquo; - else if (symName=="–") return DocSymbol::Ndash; - else if (symName=="—") return DocSymbol::Mdash; - else if (symName=="ß") return DocSymbol::Szlig; - else if (symName==" ") return DocSymbol::Nbsp; - else if (symName=="Æ") return DocSymbol::AElig; - else if (symName=="æ") return DocSymbol::Aelig; - else if (symName=="Γ") return DocSymbol::GrkGamma; - else if (symName=="Δ") return DocSymbol::GrkDelta; - else if (symName=="Θ") return DocSymbol::GrkTheta; - else if (symName=="Λ") return DocSymbol::GrkLambda; - else if (symName=="Ξ") return DocSymbol::GrkXi; - else if (symName=="Π") return DocSymbol::GrkPi; - else if (symName=="Σ") return DocSymbol::GrkSigma; - else if (symName=="Υ") return DocSymbol::GrkUpsilon; - else if (symName=="Φ") return DocSymbol::GrkPhi; - else if (symName=="Ψ") return DocSymbol::GrkPsi; - else if (symName=="Ω") return DocSymbol::GrkOmega; - else if (symName=="α") return DocSymbol::Grkalpha; - else if (symName=="β") return DocSymbol::Grkbeta; - else if (symName=="γ") return DocSymbol::Grkgamma; - else if (symName=="δ") return DocSymbol::Grkdelta; - else if (symName=="ε") return DocSymbol::Grkepsilon; - else if (symName=="ζ") return DocSymbol::Grkzeta; - else if (symName=="η") return DocSymbol::Grketa; - else if (symName=="θ") return DocSymbol::Grktheta; - else if (symName=="ι") return DocSymbol::Grkiota; - else if (symName=="κ") return DocSymbol::Grkkappa; - else if (symName=="λ") return DocSymbol::Grklambda; - else if (symName=="μ") return DocSymbol::Grkmu; - else if (symName=="ν") return DocSymbol::Grknu; - else if (symName=="ξ") return DocSymbol::Grkxi; - else if (symName=="π") return DocSymbol::Grkpi; - else if (symName=="ρ") return DocSymbol::Grkrho; - else if (symName=="σ") return DocSymbol::Grksigma; - else if (symName=="τ") return DocSymbol::Grktau; - else if (symName=="υ") return DocSymbol::Grkupsilon; - else if (symName=="φ") return DocSymbol::Grkphi; - else if (symName=="χ") return DocSymbol::Grkchi; - else if (symName=="ψ") return DocSymbol::Grkpsi; - else if (symName=="ω") return DocSymbol::Grkomega; - else if (symName=="ς") return DocSymbol::Grkvarsigma; - else if (symName=="§") return DocSymbol::Section; - else if (symName=="°") return DocSymbol::Degree; - else if (symName=="′") return DocSymbol::Prime; - else if (symName=="″") return DocSymbol::DoublePrime; - else if (symName=="∞") return DocSymbol::Infinity; - else if (symName=="∅") return DocSymbol::EmptySet; - else if (symName=="±") return DocSymbol::PlusMinus; - else if (symName=="×") return DocSymbol::Times; - else if (symName=="−") return DocSymbol::Minus; - else if (symName=="⋅") return DocSymbol::CenterDot; - else if (symName=="∂") return DocSymbol::Partial; - else if (symName=="∇") return DocSymbol::Nabla; - else if (symName=="√") return DocSymbol::SquareRoot; - else if (symName=="⊥") return DocSymbol::Perpendicular; - else if (symName=="∑") return DocSymbol::Sum; - else if (symName=="∫") return DocSymbol::Integral; - else if (symName=="∏") return DocSymbol::Product; - else if (symName=="∼") return DocSymbol::Similar; - else if (symName=="≈") return DocSymbol::Approx; - else if (symName=="≠") return DocSymbol::NotEqual; - else if (symName=="≡") return DocSymbol::Equivalent; - else if (symName=="∝") return DocSymbol::Proportional; - else if (symName=="≤") return DocSymbol::LessEqual; - else if (symName=="≥") return DocSymbol::GreaterEqual; - else if (symName=="←") return DocSymbol::LeftArrow; - else if (symName=="→") return DocSymbol::RightArrow; - else if (symName=="∈") return DocSymbol::SetIn; - else if (symName=="∉") return DocSymbol::SetNotIn; - else if (symName=="⌈") return DocSymbol::LeftCeil; - else if (symName=="⌉") return DocSymbol::RightCeil; - else if (symName=="⌊") return DocSymbol::LeftFloor; - else if (symName=="⌋") 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 << "<"; 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 << "©"; break; - case DocSymbol::Tm: m_t << "™"; break; - case DocSymbol::Reg: m_t << "®"; 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() << "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 << "ß"; break; - case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break; - case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break; - case DocSymbol::Nbsp: m_t << " "; break; - case DocSymbol::AElig: m_t << "Æ"; break; - case DocSymbol::Aelig: m_t << "æ"; break; - case DocSymbol::GrkGamma: m_t << "Γ"; break; - case DocSymbol::GrkDelta: m_t << "Δ"; break; - case DocSymbol::GrkTheta: m_t << "Θ"; break; - case DocSymbol::GrkLambda: m_t << "Λ"; break; - case DocSymbol::GrkXi: m_t << "Ξ"; break; - case DocSymbol::GrkPi: m_t << "Π"; break; - case DocSymbol::GrkSigma: m_t << "Σ"; break; - case DocSymbol::GrkUpsilon: m_t << "Υ"; break; - case DocSymbol::GrkPhi: m_t << "Φ"; break; - case DocSymbol::GrkPsi: m_t << "Ψ"; break; - case DocSymbol::GrkOmega: m_t << "Ω"; break; - case DocSymbol::Grkalpha: m_t << "α"; break; - case DocSymbol::Grkbeta: m_t << "β"; break; - case DocSymbol::Grkgamma: m_t << "γ"; break; - case DocSymbol::Grkdelta: m_t << "δ"; break; - case DocSymbol::Grkepsilon: m_t << "ε"; break; - case DocSymbol::Grkzeta: m_t << "ζ"; break; - case DocSymbol::Grketa: m_t << "η"; break; - case DocSymbol::Grktheta: m_t << "θ"; break; - case DocSymbol::Grkiota: m_t << "ι"; break; - case DocSymbol::Grkkappa: m_t << "κ"; break; - case DocSymbol::Grklambda: m_t << "λ"; break; - case DocSymbol::Grkmu: m_t << "μ"; break; - case DocSymbol::Grknu: m_t << "ν"; break; - case DocSymbol::Grkxi: m_t << "ξ"; break; - case DocSymbol::Grkpi: m_t << "π"; break; - case DocSymbol::Grkrho: m_t << "ρ"; break; - case DocSymbol::Grksigma: m_t << "σ"; break; - case DocSymbol::Grktau: m_t << "τ"; break; - case DocSymbol::Grkupsilon: m_t << "υ"; break; - case DocSymbol::Grkphi: m_t << "φ"; break; - case DocSymbol::Grkchi: m_t << "χ"; break; - case DocSymbol::Grkpsi: m_t << "ψ"; break; - case DocSymbol::Grkomega: m_t << "ω"; break; - case DocSymbol::Grkvarsigma: m_t << "ς"; break; - case DocSymbol::Section: m_t << "§"; break; - case DocSymbol::Degree: m_t << "°"; break; - case DocSymbol::Prime: m_t << "′"; break; - case DocSymbol::DoublePrime: m_t << "″"; break; - case DocSymbol::Infinity: m_t << "∞"; break; - case DocSymbol::EmptySet: m_t << "∅"; break; - case DocSymbol::PlusMinus: m_t << "±"; break; - case DocSymbol::Times: m_t << "×"; break; - case DocSymbol::Minus: m_t << "−"; break; - case DocSymbol::CenterDot: m_t << "⋅"; break; - case DocSymbol::Partial: m_t << "∂"; break; - case DocSymbol::Nabla: m_t << "∇"; break; - case DocSymbol::SquareRoot: m_t << "√"; break; - case DocSymbol::Perpendicular: m_t << "⊥"; break; - case DocSymbol::Sum: m_t << "∑"; break; - case DocSymbol::Integral: m_t << "∫"; break; - case DocSymbol::Product: m_t << "∏"; break; - case DocSymbol::Similar: m_t << "∼"; break; - case DocSymbol::Approx: m_t << "≈"; break; - case DocSymbol::NotEqual: m_t << "≠"; break; - case DocSymbol::Equivalent: m_t << "≡"; break; - case DocSymbol::Proportional: m_t << "∝"; 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 << "∈"; break; - case DocSymbol::SetNotIn: m_t << "∉"; break; - case DocSymbol::LeftCeil: m_t << "⌈"; break; - case DocSymbol::RightCeil: m_t << "⌉"; break; - case DocSymbol::LeftFloor: m_t << "⌊"; break; - case DocSymbol::RightFloor: m_t << "⌋"; 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("©"); break; - case DocSymbol::Apos: printf("'"); break; - case DocSymbol::Quot: printf("\""); break; - case DocSymbol::Lsquo: printf("‘"); break; - case DocSymbol::Rsquo: printf("’"); break; - case DocSymbol::Ldquo: printf("“"); break; - case DocSymbol::Rdquo: printf("”"); break; - case DocSymbol::Ndash: printf("–"); break; - case DocSymbol::Mdash: printf("—"); 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("ß"); break; - case DocSymbol::Cedil: printf("&%ccedul;",s->letter()); break; - case DocSymbol::Ring: printf("&%cring;",s->letter()); break; - case DocSymbol::Nbsp: printf(" "); break; - case DocSymbol::Aelig: printf("æ"); break; - case DocSymbol::AElig: printf("Æ"); break; - case DocSymbol::GrkGamma: printf("Γ"); break; - case DocSymbol::GrkDelta: printf("Δ"); break; - case DocSymbol::GrkTheta: printf("Θ"); break; - case DocSymbol::GrkLambda: printf("Λ"); break; - case DocSymbol::GrkXi: printf("Ξ"); break; - case DocSymbol::GrkPi: printf("Π"); break; - case DocSymbol::GrkSigma: printf("Σ"); break; - case DocSymbol::GrkUpsilon: printf("Υ"); break; - case DocSymbol::GrkPhi: printf("Φ"); break; - case DocSymbol::GrkPsi: printf("Ψ"); break; - case DocSymbol::GrkOmega: printf("Ω"); break; - case DocSymbol::Grkalpha: printf("α"); break; - case DocSymbol::Grkbeta: printf("β"); break; - case DocSymbol::Grkgamma: printf("γ"); break; - case DocSymbol::Grkdelta: printf("δ"); break; - case DocSymbol::Grkepsilon: printf("ε"); break; - case DocSymbol::Grkzeta: printf("ζ"); break; - case DocSymbol::Grketa: printf("η"); break; - case DocSymbol::Grktheta: printf("θ"); break; - case DocSymbol::Grkiota: printf("ι"); break; - case DocSymbol::Grkkappa: printf("κ"); break; - case DocSymbol::Grklambda: printf("λ"); break; - case DocSymbol::Grkmu: printf("μ"); break; - case DocSymbol::Grknu: printf("ν"); break; - case DocSymbol::Grkxi: printf("ξ"); break; - case DocSymbol::Grkpi: printf("π"); break; - case DocSymbol::Grkrho: printf("ρ"); break; - case DocSymbol::Grksigma: printf("σ"); break; - case DocSymbol::Grktau: printf("τ"); break; - case DocSymbol::Grkupsilon: printf("υ"); break; - case DocSymbol::Grkphi: printf("φ"); break; - case DocSymbol::Grkchi: printf("χ"); break; - case DocSymbol::Grkpsi: printf("ψ"); break; - case DocSymbol::Grkomega: printf("ω"); break; - case DocSymbol::Grkvarsigma: printf("ς"); break; - case DocSymbol::Section: printf("§"); break; - case DocSymbol::Degree: printf("°"); break; - case DocSymbol::Prime: printf("′"); break; - case DocSymbol::DoublePrime: printf("″"); break; - case DocSymbol::Infinity: printf("∞"); break; - case DocSymbol::EmptySet: printf("∅"); break; - case DocSymbol::PlusMinus: printf("±"); break; - case DocSymbol::Times: printf("×"); break; - case DocSymbol::Minus: printf("−"); break; - case DocSymbol::CenterDot: printf("⋅"); break; - case DocSymbol::Partial: printf("∂"); break; - case DocSymbol::Nabla: printf("∇"); break; - case DocSymbol::SquareRoot: printf("√"); break; - case DocSymbol::Perpendicular: printf("⊥"); break; - case DocSymbol::Sum: printf("∑"); break; - case DocSymbol::Integral: printf("∫"); break; - case DocSymbol::Product: printf("∏"); break; - case DocSymbol::Similar: printf("∼"); break; - case DocSymbol::Approx: printf("≈"); break; - case DocSymbol::NotEqual: printf("≠"); break; - case DocSymbol::Equivalent: printf("≡"); break; - case DocSymbol::Proportional: printf("∝"); break; - case DocSymbol::LessEqual: printf("≤"); break; - case DocSymbol::GreaterEqual: printf("≥"); break; - case DocSymbol::LeftArrow: printf("←"); break; - case DocSymbol::RightArrow: printf("→"); break; - case DocSymbol::SetIn: printf("∈"); break; - case DocSymbol::SetNotIn: printf("∉"); break; - case DocSymbol::LeftCeil: printf("⌈"); break; - case DocSymbol::RightCeil: printf("⌉"); break; - case DocSymbol::LeftFloor: printf("⌊"); break; - case DocSymbol::RightFloor: printf("⌋"); 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 << "<"; 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 << "©"; break; - case DocSymbol::Tm: m_t << "&tm;"; break; - case DocSymbol::Reg: m_t << "®"; 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() << "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 << "ß"; break; - case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break; - case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break; - case DocSymbol::Nbsp: m_t << " "; break; - case DocSymbol::Aelig: m_t << "æ"; break; - case DocSymbol::AElig: m_t << "Æ"; break; - case DocSymbol::GrkGamma: m_t << "Γ"; break; - case DocSymbol::GrkDelta: m_t << "Δ"; break; - case DocSymbol::GrkTheta: m_t << "Θ"; break; - case DocSymbol::GrkLambda: m_t << "Λ"; break; - case DocSymbol::GrkXi: m_t << "Ξ"; break; - case DocSymbol::GrkPi: m_t << "Π"; break; - case DocSymbol::GrkSigma: m_t << "Σ"; break; - case DocSymbol::GrkUpsilon: m_t << "Υ"; break; - case DocSymbol::GrkPhi: m_t << "Φ"; break; - case DocSymbol::GrkPsi: m_t << "Ψ"; break; - case DocSymbol::GrkOmega: m_t << "Ω"; break; - case DocSymbol::Grkalpha: m_t << "α"; break; - case DocSymbol::Grkbeta: m_t << "β"; break; - case DocSymbol::Grkgamma: m_t << "γ"; break; - case DocSymbol::Grkdelta: m_t << "δ"; break; - case DocSymbol::Grkepsilon: m_t << "ε"; break; - case DocSymbol::Grkzeta: m_t << "ζ"; break; - case DocSymbol::Grketa: m_t << "η"; break; - case DocSymbol::Grktheta: m_t << "θ"; break; - case DocSymbol::Grkiota: m_t << "ι"; break; - case DocSymbol::Grkkappa: m_t << "κ"; break; - case DocSymbol::Grklambda: m_t << "λ"; break; - case DocSymbol::Grkmu: m_t << "μ"; break; - case DocSymbol::Grknu: m_t << "ν"; break; - case DocSymbol::Grkxi: m_t << "ξ"; break; - case DocSymbol::Grkpi: m_t << "π"; break; - case DocSymbol::Grkrho: m_t << "ρ"; break; - case DocSymbol::Grksigma: m_t << "σ"; break; - case DocSymbol::Grktau: m_t << "τ"; break; - case DocSymbol::Grkupsilon: m_t << "υ"; break; - case DocSymbol::Grkphi: m_t << "φ"; break; - case DocSymbol::Grkchi: m_t << "χ"; break; - case DocSymbol::Grkpsi: m_t << "ψ"; break; - case DocSymbol::Grkomega: m_t << "ω"; break; - case DocSymbol::Grkvarsigma: m_t << "ς"; break; - case DocSymbol::Section: m_t << "§"; break; - case DocSymbol::Degree: m_t << "°"; break; - case DocSymbol::Prime: m_t << "′"; break; - case DocSymbol::DoublePrime: m_t << "″"; break; - case DocSymbol::Infinity: m_t << "∞"; break; - case DocSymbol::EmptySet: m_t << "∅"; break; - case DocSymbol::PlusMinus: m_t << "±"; break; - case DocSymbol::Times: m_t << "×"; break; - case DocSymbol::Minus: m_t << "−"; break; - case DocSymbol::CenterDot: m_t << "⋅"; break; - case DocSymbol::Partial: m_t << "∂"; break; - case DocSymbol::Nabla: m_t << "∇"; break; - case DocSymbol::SquareRoot: m_t << "√"; break; - case DocSymbol::Perpendicular: m_t << "⊥"; break; - case DocSymbol::Sum: m_t << "∑"; break; - case DocSymbol::Integral: m_t << "∫"; break; - case DocSymbol::Product: m_t << "∏"; break; - case DocSymbol::Similar: m_t << "∼"; break; - case DocSymbol::Approx: m_t << "≈"; break; - case DocSymbol::NotEqual: m_t << "≠"; break; - case DocSymbol::Equivalent: m_t << "≡"; break; - case DocSymbol::Proportional: m_t << "∝"; 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 << "∈"; break; - case DocSymbol::SetNotIn: m_t << "∉"; break; - case DocSymbol::LeftCeil: m_t << "⌈"; break; - case DocSymbol::RightCeil: m_t << "⌉"; break; - case DocSymbol::LeftFloor: m_t << "⌊"; break; - case DocSymbol::RightFloor: m_t << "⌋"; 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", " ", " ", " ", "<nonbreakablespace/>", " ", "~", " ", "\\~", {" ",DocSymbol::Perl_char}}, + {DocSymbol::Sym_iexcl, "iexcl", "\xc2\xa1", "¡", "¡", "¡", "<iexcl/>", "¡", "!`", NULL, "\\'A1", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_cent, "cent", "\xc2\xa2", "¢", "¢", "¢", "<cent/>", "¢", "\\textcent{}", NULL, "\\'A2", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_pound, "pound", "\xc2\xa3", "£", "£", "£", "<pound/>", "£", "{$\\pounds$}", NULL, "\\'A3", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_curren, "curren", "\xc2\xa4", "¤", "¤", "¤", "<curren/>", "¤", "\\textcurrency{}", NULL, "\\'A4", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_yen, "yen", "\xc2\xa5", "¥", "¥", "¥", "<yen/>", "¥", "{$\\yen$}", NULL, "\\'A5", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_brvbar, "brvbar", "\xc2\xa6", "¦", "¦", "¦", "<brvbar/>", "¦", "\\textbrokenbar{}", NULL, "\\'A6", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_sect, "sect", "\xc2\xa7", "§", "§", "§", "<sect/>", "<simplesect/>", "{$\\S$}", NULL, "\\'A7", {"sect",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_uml, "uml", "\xc2\xa8", "¨", "¨", "¨", "<umlaut/>", "¨", "\\textasciidieresis{}", " \\*(4", "\\'A8", {" ",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_copy, "copy", "\xc2\xa9", "©", "©", "©", "<copy/>", "©", "\\copyright{}", "(C)", "\\'A9", {"copyright",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_ordf, "ordf", "\xc2\xaa", "ª", "ª", "ª", "<ordf/>", "ª", "\\textordfeminine{}", NULL, "\\'AA", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_laquo, "laquo", "\xc2\xab", "«", "«", "«", "<laquo/>", "«", "\\guillemotleft{}", NULL, "\\'AB", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_not, "not", "\xc2\xac", "¬", "¬", "¬", "<not/>", "¬", "\\textlnot", NULL, "\\'AC", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_shy, "shy", "\xc2\xad", "­", "­", "­", "<shy/>", "­", "{$\\-$}", NULL, "\\-", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_reg, "reg", "\xc2\xae", "®", "®", "®", "<registered/>", "®", "\\textregistered{}", "(R)", "\\'AE", {"registered",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_macr, "macr", "\xc2\xaf", "¯", "¯", "¯", "<macr/>", "¯", "\\={}", NULL, "\\'AF ", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_deg, "deg", "\xc2\xb0", "°", "°", "°", "<deg/>", "°", "\\textdegree", NULL, "\\'B0", {"deg",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_plusmn, "plusmn", "\xc2\xb1", "±", "±", "±", "<plusmn/>", "±", "{$\\pm$}", NULL, "\\'B1", {"+/-",DocSymbol::Perl_string}}, + {DocSymbol::Sym_sup2, "sup2", "\xc2\xb2", "²", "²", "²", "<sup2/>", "²", "\\texttwosuperior{}", NULL, "\\'B2", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_sup3, "sup3", "\xc2\xb3", "³", "³", "³", "<sup3/>", "³", "\\textthreesuperior{}", NULL, "\\'B3", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_acute, "acute", "\xc2\xb4", "´", "´", "´", "<acute/>", "´", "\\'{}", NULL, "\\'B4", {" ",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_micro, "micro", "\xc2\xb5", "µ", "µ", "µ", "<micro/>", "µ", "{$\\mu$}", NULL, "\\'B5", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_para, "para", "\xc2\xb6", "¶", "¶", "¶", "<para/>", "¶", "{$\\P$}", NULL, "\\'B6", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_middot, "middot", "\xc2\xb7", "·", "·", "·", "<middot/>", "·", "\\textperiodcentered{}", NULL, "\\'B7", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_cedil, "cedil", "\xc2\xb8", "¸", "¸", "¸", "<cedil/>", "¸", "\\c{}", " \\*,", "\\'B8", {" ",DocSymbol::Perl_cedilla}}, + {DocSymbol::Sym_sup1, "sup1", "\xc2\xb9", "¹", "¹", "¹", "<sup1/>", "¹", "\\textonesuperior{}", NULL, "\\'B9", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_ordm, "ordm", "\xc2\xba", "º", "º", "º", "<ordm/>", "º", "\\textordmasculine{}", NULL, "\\'BA", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_raquo, "raquo", "\xc2\xbb", "»", "»", "»", "<raquo/>", "»", "\\guillemotright{}", NULL, "\\'BB", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_frac14, "frac14", "\xc2\xbc", "¼", "¼", "¼", "<frac14/>", "¼", "{$\\frac14$}", "1/4", "\\'BC", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_frac12, "frac12", "\xc2\xbd", "½", "½", "½", "<frac12/>", "½", "{$\\frac12$}", "1/2", "\\'BD", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_frac34, "frac34", "\xc2\xbe", "¾", "¾", "¾", "<frac34/>", "¾", "{$\\frac34$}", "3/4", "\\'BE", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_iquest, "iquest", "\xc2\xbf", "¿", "¿", "¿", "<iquest/>", "¿", "?`", NULL, "\\'BF", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_Agrave, "Agrave", "\xc3\x80", "À", "À", "À", "<Agrave/>", "À", "\\`{A}", "A\\*:", "\\'C0", {"A",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_Aacute, "Aacute", "\xc3\x81", "Á", "Á", "Á", "<Aacute/>", "Á", "\\'{A}", "A\\*(`", "\\'C1", {"A",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_Acirc, "Acirc", "\xc3\x82", "Â", "Â", "Â", "<Acirc/>", "Â", "\\^{A}", "A\\*^", "\\'C2", {"A",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_Atilde, "Atilde", "\xc3\x83", "Ã", "Ã", "Ã", "<Atilde/>", "Ã", "\\~{A}", "A\\*~", "\\'C3", {"A",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_Auml, "Auml", "\xc3\x84", "Ä", "Ä", "Ä", "<Aumlaut/>", "Ä", "\\\"{A}", "A\\*(4", "\\'C4", {"A",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_Aring, "Aring", "\xc3\x85", "Å", "Å", "Å", "<Aring/>", "Å", "\\AA", "A\\*o", "\\'C5", {"A",DocSymbol::Perl_ring}}, + {DocSymbol::Sym_AElig, "AElig", "\xc3\x86", "Æ", "Æ", "Æ", "<AElig/>", "Æ", "{\\AE}", NULL, "\\'C6", {"AElig",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Ccedil, "Ccedil", "\xc3\x87", "Ç", "Ç", "Ç", "<Ccedil/>", "Ç", "\\c{C}", "C\\*,", "\\'C7", {"C",DocSymbol::Perl_cedilla}}, + {DocSymbol::Sym_Egrave, "Egrave", "\xc3\x88", "È", "È", "È", "<Egrave/>", "È", "\\`{E}", "E\\*:", "\\'C8", {"E",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_Eacute, "Eacute", "\xc3\x89", "É", "É", "É", "<Eacute/>", "É", "\\'{E}", "E\\*(`", "\\'C9", {"E",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_Ecirc, "Ecirc", "\xc3\x8a", "Ê", "Ê", "Ê", "<Ecirc/>", "Ê", "\\^{E}", "E\\*^", "\\'CA", {"E",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_Euml, "Euml", "\xc3\x8b", "Ë", "Ë", "Ë", "<Eumlaut/>", "Ë", "\\\"{E}", "E\\*(4", "\\'CB", {"E",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_Igrave, "Igrave", "\xc3\x8c", "Ì", "Ì", "Ì", "<Igrave/>", "Ì", "\\`{I}", "I\\*:", "\\'CC", {"I",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_Iacute, "Iacute", "\xc3\x8d", "Í", "Í", "Í", "<Iacute/>", "Í", "\\'{I}", "I\\*(`", "\\'CD", {"I",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_Icirc, "Icirc", "\xc3\x8e", "Î", "Î", "Î", "<Icirc/>", "Î", "\\^{I}", "I\\*^", "\\'CE", {"I",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_Iuml, "Iuml", "\xc3\x8f", "Ï", "Ï", "Ï", "<Iumlaut/>", "Ï", "\\\"{I}", "I\\*(4", "\\'CF", {"I",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_ETH, "ETH", "\xc3\x90", "Ð", "Ð", "Ð", "<ETH/>", "Ð", "\\DH", NULL, "\\'D0", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_Ntilde, "Ntilde", "\xc3\x91", "Ñ", "Ñ", "Ñ", "<Ntilde/>", "Ñ", "\\~{N}", "N\\*~", "\\'D1", {"N",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_Ograve, "Ograve", "\xc3\x92", "Ò", "Ò", "Ò", "<Ograve/>", "Ò", "\\`{O}", "O\\*:", "\\'D2", {"O",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_Oacute, "Oacute", "\xc3\x93", "Ó", "Ó", "Ó", "<Oacute/>", "Ó", "\\'{O}", "O\\*(`", "\\'D3", {"O",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_Ocirc, "Ocirc", "\xc3\x94", "Ô", "Ô", "Ô", "<Ocirc/>", "Ô", "\\^{O}", "O\\*^", "\\'D4", {"O",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_Otilde, "Otilde", "\xc3\x95", "Õ", "Õ", "Õ", "<Otilde/>", "Õ", "\\~{O}", "O\\*~", "\\'D5", {"O",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_Ouml, "Ouml", "\xc3\x96", "Ö", "Ö", "Ö", "<Oumlaut/>", "Ö", "\\\"{O}", "O\\*(4", "\\'D6", {"O",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_times, "times", "\xc3\x97", "×", "×", "×", "<imes/>", "×", "{$\\times$}", NULL, "\\'D7", {"*",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Oslash, "Oslash", "\xc3\x98", "Ø", "Ø", "Ø", "<Oslash/>", "Ø", "{\\O}", "O\x08/", "\\'D8", {"O",DocSymbol::Perl_slash}}, + {DocSymbol::Sym_Ugrave, "Ugrave", "\xc3\x99", "Ù", "Ù", "Ù", "<Ugrave/>", "Ù", "\\`{U}", "U\\*:", "\\'D9", {"U",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_Uacute, "Uacute", "\xc3\x9a", "Ú", "Ú", "Ú", "<Uacute/>", "Ú", "\\'{U}", "U\\*(`", "\\'DA", {"U",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_Ucirc, "Ucirc", "\xc3\x9b", "Û", "Û", "Û", "<Ucirc/>", "Û", "\\^{U}", "U\\*^", "\\'DB", {"U",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_Uuml, "Uuml", "\xc3\x9c", "Ü", "Ü", "Ü", "<Uumlaut/>", "Ü", "\\\"{U}", "U\\*(4", "\\'DC", {"U",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_Yacute, "Yacute", "\xc3\x9d", "Ý", "Ý", "Ý", "<Yacute/>", "Ý", "\\'{Y}", "Y\\*(`", "\\'DD", {"Y",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_THORN, "THORN", "\xc3\x9e", "Þ", "Þ", "Þ", "<THORN/>", "Þ", "\\TH", NULL, "\\'DE", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_szlig, "szlig", "\xc3\x9f", "ß", "ß", "ß", "<szlig/>", "ß", "{\\ss}", "s\\*:", "\\'DF", {"szlig",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_agrave, "agrave", "\xc3\xa0", "à", "à", "à", "<agrave/>", "à", "\\`{a}", "a\\*:", "\\'E0", {"a",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_aacute, "aacute", "\xc3\xa1", "á", "á", "á", "<aacute/>", "á", "\\'{a}", "a\\*(`", "\\'E1", {"a",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_acirc, "acirc", "\xc3\xa2", "â", "â", "â", "<acirc/>", "â", "\\^{a}", "a\\*^", "\\'E2", {"a",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_atilde, "atilde", "\xc3\xa3", "ã", "ã", "ã", "<atilde/>", "ã", "\\~{a}", "a\\*~", "\\'E3", {"a",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_auml, "auml", "\xc3\xa4", "ä", "ä", "ä", "<aumlaut/>", "ä", "\\\"{a}", "a\\*(4", "\\'E4", {"a",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_aring, "aring", "\xc3\xa5", "å", "å", "å", "<aring/>", "å", "\\aa", "a\\*o", "\\'E5", {"a",DocSymbol::Perl_ring}}, + {DocSymbol::Sym_aelig, "aelig", "\xc3\xa6", "æ", "æ", "æ", "<aelig/>", "æ", "{\\ae}", NULL, "\\'E6", {"aelig",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_ccedil, "ccedil", "\xc3\xa7", "ç", "ç", "ç", "<ccedil/>", "ç", "\\c{c}", "c\\*,", "\\'E7", {"c",DocSymbol::Perl_cedilla}}, + {DocSymbol::Sym_egrave, "egrave", "\xc3\xa8", "è", "è", "è", "<egrave/>", "è", "\\`{e}", "e\\*:", "\\'E8", {"e",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_eacute, "eacute", "\xc3\xa9", "é", "é", "é", "<eacute/>", "é", "\\'{e}", "e\\*(`", "\\'E9", {"e",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_ecirc, "ecirc", "\xc3\xaa", "ê", "ê", "ê", "<ecirc/>", "ê", "\\^{e}", "e\\*^", "\\'EA", {"e",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_euml, "euml", "\xc3\xab", "ë", "ë", "ë", "<eumlaut/>", "ë", "\\\"{e}", "e\\*(4", "\\'EB", {"e",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_igrave, "igrave", "\xc3\xac", "ì", "ì", "ì", "<igrave/>", "ì", "\\`{\\i}", "i\\*:", "\\'EC", {"i",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_iacute, "iacute", "\xc3\xad", "í", "í", "í", "<iacute/>", "í", "\\'{\\i}", "i\\*(`", "\\'ED", {"i",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_icirc, "icirc", "\xc3\xae", "î", "î", "î", "<icirc/>", "î", "\\^{\\i}", "i\\*^", "\\'EE", {"i",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_iuml, "iuml", "\xc3\xaf", "ï", "ï", "ï", "<iumlaut/>", "ï", "\\\"{\\i}", "i\\*(4", "\\'EF", {"i",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_eth, "eth", "\xc3\xb0", "ð", "ð", "ð", "<eth/>", "ð", "\\dh", NULL, "\\'F0", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_ntilde, "ntilde", "\xc3\xb1", "ñ", "ñ", "ñ", "<ntilde/>", "ñ", "\\~{n}", "n\\*~", "\\'F1", {"n",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_ograve, "ograve", "\xc3\xb2", "ò", "ò", "ò", "<ograve/>", "ò", "\\`{o}", "o\\*:", "\\'F2", {"o",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_oacute, "oacute", "\xc3\xb3", "ó", "ó", "ó", "<oacute/>", "ó", "\\'{o}", "o\\*(`", "\\'F3", {"o",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_ocirc, "ocirc", "\xc3\xb4", "ô", "ô", "ô", "<ocirc/>", "ô", "\\^{o}", "o\\*^", "\\'F4", {"o",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_otilde, "otilde", "\xc3\xb5", "õ", "õ", "õ", "<otilde/>", "õ", "\\~{o}", "o\\*~", "\\'F5", {"o",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_ouml, "ouml", "\xc3\xb6", "ö", "ö", "ö", "<oumlaut/>", "ö", "\\\"{o}", "o\\*(4", "\\'F6", {"o",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_divide, "divide", "\xc3\xb7", "÷", "÷", "÷", "<divide/>", "÷", "{$\\div$}", NULL, "\\'F7", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_oslash, "oslash", "\xc3\xb8", "ø", "ø", "ø", "<oslash/>", "ø", "{\\o}", "o\x08/", "\\'F8", {"o",DocSymbol::Perl_slash}}, + {DocSymbol::Sym_ugrave, "ugrave", "\xc3\xb9", "ù", "ù", "ù", "<ugrave/>", "ù", "\\`{u}", "u\\*:", "\\'F9", {"u",DocSymbol::Perl_grave}}, + {DocSymbol::Sym_uacute, "uacute", "\xc3\xba", "ú", "ú", "ú", "<uacute/>", "ú", "\\'{u}", "u\\*(`", "\\'FA", {"u",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_ucirc, "ucirc", "\xc3\xbb", "û", "û", "û", "<ucirc/>", "û", "\\^{u}", "u\\*^", "\\'FB", {"u",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_uuml, "uuml", "\xc3\xbc", "ü", "ü", "ü", "<uumlaut/>", "ü", "\\\"{u}", "u\\*(4", "\\'FC", {"u",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_yacute, "yacute", "\xc3\xbd", "ý", "ý", "ý", "<yacute/>", "ý", "\\'{y}", "y\\*(`", "\\'FD", {"y",DocSymbol::Perl_acute}}, + {DocSymbol::Sym_thorn, "thorn", "\xc3\xbe", "þ", "þ", "þ", "<thorn/>", "þ", "\\th", NULL, "\\'FE", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_yuml, "yuml", "\xc3\xbf", "ÿ", "ÿ", "ÿ", "<yumlaut/>", "ÿ", "\\\"{y}", "y\\*(4", "\\'FF", {"y",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_fnof, "fnof", "\xc6\x92", "ƒ", "ƒ", "ƒ", "<fnof/>", "ƒ", "\\textflorin", NULL, "\\'83", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_Alpha, "Alpha", "\xce\x91", "Α", "Α", "Α", "<Alpha/>", "Α", "A", NULL, "\\u0913?", {"A",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Beta, "Beta", "\xce\x92", "Β", "Β", "Β", "<Beta/>", "Β", "B", NULL, "\\u0914?", {"B",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Gamma, "Gamma", "\xce\x93", "Γ", "Γ", "Γ", "<Gamma/>", "Γ", "{$\\Gamma$}", NULL, "\\u0915?", {"Gamma",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Delta, "Delta", "\xce\x94", "Δ", "Δ", "Δ", "<Delta/>", "Δ", "{$\\Delta$}", NULL, "\\u0916?", {"Delta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Epsilon, "Epsilon", "\xce\x95", "Ε", "Ε", "Ε", "<Epsilon/>", "Ε", "E", NULL, "\\u0917?", {"E",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Zeta, "Zeta", "\xce\x96", "Ζ", "Ζ", "Ζ", "<Zeta/>", "Ζ", "Z", NULL, "\\u0918?", {"Z",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Eta, "Eta", "\xce\x97", "Η", "Η", "Η", "<Eta/>", "Η", "H", NULL, "\\u0919?", {"H",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Theta, "Theta", "\xce\x98", "Θ", "Θ", "Θ", "<Theta/>", "Θ", "{$\\Theta$}", NULL, "\\u0920?", {"Theta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Iota, "Iota", "\xce\x99", "Ι", "Ι", "Ι", "<Iota/>", "Ι", "I", NULL, "\\u0921?", {"I",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Kappa, "Kappa", "\xce\x9a", "Κ", "Κ", "Κ", "<Kappa/>", "Κ", "K", NULL, "\\u0922?", {"K",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Lambda, "Lambda", "\xce\x9b", "Λ", "Λ", "Λ", "<Lambda/>", "Λ", "{$\\Lambda$}", NULL, "\\u0923?", {"Lambda",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Mu, "Mu", "\xce\x9c", "Μ", "Μ", "Μ", "<Mu/>", "Μ", "M", NULL, "\\u0924?", {"M",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Nu, "Nu", "\xce\x9d", "Ν", "Ν", "Ν", "<Nu/>", "Ν", "N", NULL, "\\u0925?", {"N",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Xi, "Xi", "\xce\x9e", "Ξ", "Ξ", "Ξ", "<Xi/>", "Ξ", "{$\\Xi$}", NULL, "\\u0926?", {"Xi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Omicron, "Omicron", "\xce\x9f", "Ο", "Ο", "Ο", "<Omicron/>", "Ο", "O", NULL, "\\u0927?", {"O",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Pi, "Pi", "\xce\xa0", "Π", "Π", "Π", "<Pi/>", "Π", "{$\\Pi$}", NULL, "\\u0928?", {"Pi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Rho, "Rho", "\xce\xa1", "Ρ", "Ρ", "Ρ", "<Rho/>", "Ρ", "P", NULL, "\\u0929?", {"P",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Sigma, "Sigma", "\xce\xa3", "Σ", "Σ", "Σ", "<Sigma/>", "Σ", "{$\\Sigma$}", NULL, "\\u0931?", {"Sigma",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Tau, "Tau", "\xce\xa4", "Τ", "Τ", "Τ", "<Tau/>", "Τ", "T", NULL, "\\u0932?", {"T",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Upsilon, "Upsilon", "\xce\xa5", "Υ", "Υ", "Υ", "<Upsilon/>", "Υ", "{$\\Upsilon$}", NULL, "\\u0933?", {"Upsilon",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Phi, "Phi", "\xce\xa6", "Φ", "Φ", "Φ", "<Phi/>", "Φ", "{$\\Phi$}", NULL, "\\u0934?", {"Phi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Chi, "Chi", "\xce\xa7", "Χ", "Χ", "Χ", "<Chi/>", "Χ", "X", NULL, "\\u0935?", {"X",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Psi, "Psi", "\xce\xa8", "Ψ", "Ψ", "Ψ", "<Psi/>", "Ψ", "{$\\Psi$}", NULL, "\\u0936?", {"Psi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_Omega, "Omega", "\xce\xa9", "Ω", "Ω", "Ω", "<Omega/>", "Ω", "{$\\Omega$}", NULL, "\\u0937?", {"Omega",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_alpha, "alpha", "\xce\xb1", "α", "α", "α", "<alpha/>", "α", "{$\\alpha$}", NULL, "\\u0945?", {"alpha",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_beta, "beta", "\xce\xb2", "β", "β", "β", "<beta/>", "β", "{$\\beta$}", NULL, "\\u0946?", {"beta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_gamma, "gamma", "\xce\xb3", "γ", "γ", "γ", "<gamma/>", "γ", "{$\\gamma$}", NULL, "\\u0947?", {"gamma",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_delta, "delta", "\xce\xb4", "δ", "δ", "δ", "<delta/>", "δ", "{$\\delta$}", NULL, "\\u0948?", {"delta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_epsilon, "epsilon", "\xce\xb5", "ε", "ε", "ε", "<epsilon/>", "ε", "{$\\varepsilon$}", NULL, "\\u0949?", {"epsilon",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_zeta, "zeta", "\xce\xb6", "ζ", "ζ", "ζ", "<zeta/>", "ζ", "{$\\zeta$}", NULL, "\\u0950?", {"zeta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_eta, "eta", "\xce\xb7", "η", "η", "η", "<eta/>", "η", "{$\\eta$}", NULL, "\\u0951?", {"eta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_theta, "theta", "\xce\xb8", "θ", "θ", "θ", "<theta/>", "θ", "{$\\theta$}", NULL, "\\u0952?", {"theta",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_iota, "iota", "\xce\xb9", "ι", "ι", "ι", "<iota/>", "ι", "{$\\iota$}", NULL, "\\u0953?", {"iota",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_kappa, "kappa", "\xce\xba", "κ", "κ", "κ", "<kappa/>", "κ", "{$\\kappa$}", NULL, "\\u0954?", {"kappa",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_lambda, "lambda", "\xce\xbb", "λ", "λ", "λ", "<lambda/>", "λ", "{$\\lambda$}", NULL, "\\u0955?", {"lambda",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_mu, "mu", "\xce\xbc", "μ", "μ", "μ", "<mu/>", "μ", "{$\\mu$}", NULL, "\\u0956?", {"mu",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_nu, "nu", "\xce\xbd", "ν", "ν", "ν", "<nu/>", "ν", "{$\\nu$}", NULL, "\\u0957?", {"nu",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_xi, "xi", "\xce\xbe", "ξ", "ξ", "ξ", "<xi/>", "ξ", "{$\\xi$}", NULL, "\\u0958?", {"xi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_omicron, "omicron", "\xce\xbf", "ο", "ο", "ο", "<omicron/>", "ο", "{$\\omicron$}", NULL, "\\u0959?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_pi, "pi", "\xcf\x80", "π", "π", "π", "<pi/>", "π", "{$\\pi$}", NULL, "\\u0960?", {"pi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_rho, "rho", "\xcf\x81", "ρ", "ρ", "ρ", "<rho/>", "ρ", "{$\\rho$}", NULL, "\\u0961?", {"rho",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_sigmaf, "sigmaf", "\xcf\x82", "ς", "ς", "ς", "<sigmaf/>", "ς", "{$\\varsigma$}", NULL, "\\u0962?", {"sigma",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_sigma, "sigma", "\xcf\x83", "σ", "σ", "σ", "<sigma/>", "σ", "{$\\sigma$}", NULL, "\\u0963?", {"sigma",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_tau, "tau", "\xcf\x84", "τ", "τ", "τ", "<tau/>", "τ", "{$\\tau$}", NULL, "\\u0964?", {"tau",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_upsilon, "upsilon", "\xcf\x85", "υ", "υ", "υ", "<upsilon/>", "υ", "{$\\upsilon$}", NULL, "\\u0965?", {"upsilon",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_phi, "phi", "\xcf\x86", "φ", "φ", "φ", "<phi/>", "φ", "{$\\varphi$}", NULL, "\\u0966?", {"phi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_chi, "chi", "\xcf\x87", "χ", "χ", "χ", "<chi/>", "χ", "{$\\chi$}", NULL, "\\u0967?", {"chi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_psi, "psi", "\xcf\x88", "ψ", "ψ", "ψ", "<psi/>", "ψ", "{$\\psi$}", NULL, "\\u0968?", {"psi",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_omega, "omega", "\xcf\x89", "ω", "ω", "ω", "<omega/>", "ω", "{$\\omega$}", NULL, "\\u0969?", {"omega",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_thetasym, "thetasym", "\xcf\x91", "ϑ", "ϑ", "ϑ", "<thetasym/>", "ϑ", "{$\\vartheta$}", NULL, "\\u977?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_upsih, "upsih", "\xcf\x92", "ϒ", "ϒ", "ϒ", "<upsih/>", "ϒ", "{$\\Upsilon$}", NULL, "\\u978?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_piv, "piv", "\xcf\x96", "ϖ", "ϖ", "ϖ", "<piv/>", "ϖ", "{$\\varpi$}", NULL, "\\u982?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_bull, "bull", "\xe2\x80\xa2", "•", "•", "•", "<bull/>", "•", "\\textbullet{}", NULL, "\\'95", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_hellip, "hellip", "\xe2\x80\xa6", "…", "…", "…", "<hellip/>", "…", "{$\\cdots$}", NULL, "\\'85", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_prime, "prime", "\xe2\x80\xb2", "′", "′", "′", "<prime/>", "′", "'", NULL, "\\u8242?", {"\\\'",DocSymbol::Perl_string}}, + {DocSymbol::Sym_Prime, "Prime", "\xe2\x80\xb3", "″", "″", "″", "<Prime/>", "″", "''", NULL, "\\u8243?", {"\"",DocSymbol::Perl_char}}, + {DocSymbol::Sym_oline, "oline", "\xe2\x80\xbe", "‾", "‾", "‾", "<oline/>", "‾", "{$\\overline{\\,}$}", NULL, "\\u8254?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_frasl, "frasl", "\xe2\x81\x84", "⁄", "⁄", "⁄", "<frasl/>", "⁄", "/", NULL, "\\u8260?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_weierp, "weierp", "\xe2\x84\x98", "℘", "℘", "℘", "<weierp/>", "℘", "{$\\wp$}", NULL, "\\u8472?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_image, "image", "\xe2\x84\x91", "ℑ", "ℑ", "ℑ", "<image/>", "ℑ", "{$\\Im$}", NULL, "\\u8465?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_real, "real", "\xe2\x84\x9c", "ℜ", "ℜ", "ℜ", "<real/>", "ℜ", "{$\\Re$}", NULL, "\\u8476?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_trade, "trade", "\xe2\x84\xa2", "™", "(TM)", "&tm;", "<trademark/>", "™", "\\texttrademark{}", "(TM)", "\\'99", {"trademark",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_alefsym, "alefsym", "\xe2\x85\xb5", "ℵ", "ℵ", "ℵ", "<alefsym/>", "ℵ", "{$\\aleph$}", NULL, "\\u8501?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_larr, "larr", "\xe2\x86\x90", "←", "←", "←", "<larr/>", "←", "{$\\leftarrow$}", NULL, "\\u8592?", {"<-",DocSymbol::Perl_string}}, + {DocSymbol::Sym_uarr, "uarr", "\xe2\x86\x91", "↑", "↑", "↑", "<uarr/>", "↑", "{$\\uparrow$}", NULL, "\\u8593?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_rarr, "rarr", "\xe2\x86\x92", "→", "→", "→", "<rarr/>", "→", "{$\\rightarrow$}", NULL, "\\u8594?", {"->",DocSymbol::Perl_string}}, + {DocSymbol::Sym_darr, "darr", "\xe2\x86\x93", "↓", "↓", "↓", "<darr/>", "↓", "{$\\downarrow$}", NULL, "\\u8595?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_harr, "harr", "\xe2\x86\x94", "↔", "↔", "↔", "<harr/>", "↔", "{$\\leftrightarrow$}", NULL, "\\u8596?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_crarr, "crarr", "\xe2\x86\xb5", "↵", "↵", "↵", "<crarr/>", "↵", "{$\\lrcorner$}" /* best I could find */, NULL, "\\u8629?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_lArr, "lArr", "\xe2\x87\x90", "⇐", "⇐", "⇐", "<lArr/>", "⇐", "{$\\Leftarrow$}", NULL, "\\u8656?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_uArr, "uArr", "\xe2\x87\x91", "⇑", "⇑", "⇑", "<uArr/>", "⇑", "{$\\Uparrow$}", NULL, "\\u8657?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_rArr, "rArr", "\xe2\x87\x92", "⇒", "⇒", "⇒", "<rArr/>", "⇒", "{$\\Rightarrow$}", NULL, "\\u8658?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_dArr, "dArr", "\xe2\x87\x93", "⇓", "⇓", "⇓", "<dArr/>", "⇓", "{$\\Downarrow$}", NULL, "\\u8659?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_hArr, "hArr", "\xe2\x87\x94", "⇔", "⇔", "⇔", "<hArr/>", "⇔", "{$\\Leftrightarrow$}", NULL, "\\u8660?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_forall, "forall", "\xe2\x88\x80", "∀", "∀", "∀", "<forall/>", "∀", "{$\\forall$}", NULL, "\\u8704?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_part, "part", "\xe2\x88\x82", "∂", "∂", "∂", "<part/>", "∂", "{$\\partial$}", NULL, "\\u8706?", {"partial",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_exist, "exist", "\xe2\x88\x83", "∃", "∃", "∃", "<exist/>", "∃", "{$\\exists$}", NULL, "\\u8707?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_empty, "empty", "\xe2\x88\x85", "∅", "∅", "∅", "<empty/>", "∅", "{$\\emptyset$}", NULL, "\\u8709?", {"empty",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_nabla, "nabla", "\xe2\x88\x87", "∇", "∇", "∇", "<nabla/>", "∇", "{$\\nabla$}", NULL, "\\u8711?", {"nabla",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_isin, "isin", "\xe2\x88\x88", "∈", "∈", "∈", "<isin/>", "∈", "{$\\in$}", NULL, "\\u8712?", {"in",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_notin, "notin", "\xe2\x88\x89", "∉", "∉", "∉", "<notin/>", "∉", "{$\\notin$}", NULL, "\\u8713?", {"notin",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_ni, "ni", "\xe2\x88\x8b", "∋", "∋", "∋", "<ni/>", "∋", "{$\\ni$}", NULL, "\\u8715?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_prod, "prod", "\xe2\x88\x8f", "∏", "∏", "∏", "<prod/>", "∏", "{$\\prod$}", NULL, "\\u8719?", {"prod",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_sum, "sum", "\xe2\x88\x91", "∑", "∑", "∑", "<sum/>", "∑", "{$\\sum$}", NULL, "\\u8721?", {"sum",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_minus, "minus", "\xe2\x88\x92", "−", "−", "−", "<minus/>", "−", "-", NULL, "\\u8722?", {"-",DocSymbol::Perl_char}}, + {DocSymbol::Sym_lowast, "lowast", "\xe2\x88\x97", "∗", "∗", "∗", "<lowast/>", "∗", "{$\\ast$}", NULL, "\\u8727?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_radic, "radic", "\xe2\x88\x9a", "√", "√", "√", "<radic/>", "√", "{$\\surd$}", NULL, "\\u8730?", {"sqrt",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_prop, "prop", "\xe2\x88\x9d", "∝", "∝", "∝", "<prop/>", "∝", "{$\\propto$}", NULL, "\\u8733?", {"propto",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_infin, "infin", "\xe2\x88\x9e", "∞", "∞", "∞", "<infin/>", "∞", "{$\\infty$}", NULL, "\\u8734?", {"inf",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_ang, "ang", "\xe2\x88\xa0", "∠", "∠", "∠", "<ang/>", "∠", "{$\\angle$}", NULL, "\\u8736?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_and, "and", "\xe2\x88\xa7", "∧", "∧", "∧", "<and/>", "∧", "{$\\wedge$}", NULL, "\\u8743?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_or, "or", "\xe2\x88\xa8", "∨", "∨", "∨", "<or/>", "∨", "{$\\vee$}", NULL, "\\u8744?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_cap, "cap", "\xe2\x88\xa9", "∩", "∩", "∩", "<cap/>", "∩", "{$\\cap$}", NULL, "\\u8745?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_cup, "cup", "\xe2\x88\xaa", "∪", "∪", "∪", "<cup/>", "∪", "{$\\cup$}", NULL, "\\u8746?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_int, "int", "\xe2\x88\xab", "∫", "∫", "∫", "<int/>", "∫", "{$\\int$}", NULL, "\\u8747?", {"int",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_there4, "there4", "\xe2\x88\xb4", "∴", "∴", "∴", "<there4/>", "∴", "{$\\therefore$}", NULL, "\\u8756?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_sim, "sim", "\xe2\x88\xbc", "∼", "∼", "∼", "<sim/>", "∼", "{$\\sim$}", NULL, "\\u8764?", {"~",DocSymbol::Perl_char}}, + {DocSymbol::Sym_cong, "cong", "\xe2\x89\x85", "≅", "≅", "≅", "<cong/>", "≅", "{$\\cong$}", NULL, "\\u8773?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_asymp, "asymp", "\xe2\x89\x88", "≈", "≈", "≈", "<asymp/>", "≈", "{$\\approx$}", NULL, "\\u8776?", {"approx",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_ne, "ne", "\xe2\x89\xa0", "≠", "≠", "≠", "<ne/>", "≠", "{$\\ne$}", NULL, "\\u8800?", {"!=",DocSymbol::Perl_string}}, + {DocSymbol::Sym_equiv, "equiv", "\xe2\x89\xa1", "≡", "≡", "≡", "<equiv/>", "≡", "{$\\equiv$}", NULL, "\\u8801?", {"equiv",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_le, "le", "\xe2\x89\xa4", "≤", "≤", "≤", "<le/>", "≤", "{$\\le$}", NULL, "\\u8804?", {"<=",DocSymbol::Perl_string}}, + {DocSymbol::Sym_ge, "ge", "\xe2\x89\xa5", "≥", "≥", "≥", "<ge/>", "≥", "{$\\ge$}", NULL, "\\u8805?", {">=",DocSymbol::Perl_string}}, + {DocSymbol::Sym_sub, "sub", "\xe2\x8a\x82", "⊂", "⊂", "⊂", "<sub/>", "⊂", "{$\\subset$}", NULL, "\\u8834?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_sup, "sup", "\xe2\x8a\x83", "⊃", "⊃", "⊃", "<sup/>", "⊃", "{$\\supset$}", NULL, "\\u8835?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_nsub, "nsub", "\xe2\x8a\x84", "⊄", "⊄", "⊄", "<nsub/>", "⊄", "{$\\not\\subset$}", NULL, "\\u8836?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_sube, "sube", "\xe2\x8a\x86", "⊆", "⊆", "⊆", "<sube/>", "⊆", "{$\\subseteq$}", NULL, "\\u8838?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_supe, "supe", "\xe2\x8a\x87", "⊇", "⊇", "⊇", "<supe/>", "⊇", "{$\\supseteq$}", NULL, "\\u8839?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_oplus, "oplus", "\xe2\x8a\x95", "⊕", "⊕", "⊕", "<oplus/>", "⊕", "{$\\oplus$}", NULL, "\\u8853?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_otimes, "otimes", "\xe2\x8a\x97", "⊗", "⊗", "⊗", "<otimes/>", "⊗", "{$\\otimes$}", NULL, "\\u8855?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_perp, "perp", "\xe2\x8a\xa5", "⊥", "⊥", "⊥", "<perp/>", "⊥", "{$\\perp$}", NULL, "\\u8869?", {"perp",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_sdot, "sdot", "\xe2\x8b\x85", "⋅", "⋅", "⋅", "<sdot/>", "⋅", "{$\\cdot$}", NULL, "\\u8901?", {".",DocSymbol::Perl_char}}, + {DocSymbol::Sym_lceil, "lceil", "\xe2\x8c\x88", "⌈", "⌈", "⌈", "<lceil/>", "⌈", "{$\\lceil$}", NULL, "\\u8968?", {"lceil",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_rceil, "rceil", "\xe2\x8c\x89", "⌉", "⌉", "⌉", "<rceil/>", "⌉", "{$\\rceil$}", NULL, "\\u8969?", {"rceil",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_lfloor, "lfloor", "\xe2\x8c\x8a", "⌊", "⌊", "⌊", "<lfloor/>", "⌊", "{$\\lfloor$}", NULL, "\\u8970?", {"lfloor",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_rfloor, "rfloor", "\xe2\x8c\x8b", "⌋", "⌋", "⌋", "<rfloor/>", "⌋", "{$\\rfloor$}", NULL, "\\u8971?", {"rfloor",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_lang, "lang", "\xe2\x8c\xa9", "⟨", "⟨", "⟨", "<lang/>", "〈", "{$\\langle$}", NULL, "\\u9001?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_rang, "rang", "\xe2\x8c\xaa", "⟩", "⟩", "⟩", "<rang/>", "〉", "{$\\rangle$}", NULL, "\\u9002?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_loz, "loz", "\xe2\x97\x8a", "◊", "◊", "◊", "<loz/>", "◊", "{$\\lozenge$}", NULL, "\\u9674?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_spades, "spades", "\xe2\x99\xa0", "♠", "♠", "♠", "<spades/>", "♠", "{$\\spadesuit$}", NULL, "\\u9824?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_clubs, "clubs", "\xe2\x99\xa3", "♣", "♣", "♣", "<clubs/>", "♣", "{$\\clubsuit$}", NULL, "\\u9827?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_hearts, "hearts", "\xe2\x99\xa5", "♥", "♥", "♥", "<hearts/>", "♥", "{$\\heartsuit$}", NULL, "\\u9829?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_diams, "diams", "\xe2\x99\xa6", "♦", "♦", "♦", "<diams/>", "♦", "{$\\diamondsuit$}", NULL, "\\u9830?", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_quot, "quot", "\"", "\"", "\"", "\"", "\"", """, "\"", "\"", "\"", {"\"",DocSymbol::Perl_char}}, + {DocSymbol::Sym_amp, "amp", "&", "&", "&", "&", "&", "&", "\\&", "&", "&", {"&",DocSymbol::Perl_char}}, + {DocSymbol::Sym_lt, "lt", "<", "<", "<", "<", "<", "<", "<", "<", "<", {"<",DocSymbol::Perl_char}}, + {DocSymbol::Sym_gt, "gt", ">", ">", ">", ">", ">", ">", ">", ">", ">", {">",DocSymbol::Perl_char}}, + {DocSymbol::Sym_OElig, "OElig", "\xc5\x92", "Œ", "Œ", "Œ", "<OElig/>", "Œ", "\\OE", NULL, "\\'8C", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_oelig, "oelig", "\xc5\x93", "œ", "œ", "œ", "<oelig/>", "œ", "\\oe", NULL, "\\'9C", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_Scaron, "Scaron", "\xc5\xa0", "Š", "Š", "Š", "<Scaron/>", "Š", "\\v{S}", NULL, "\\'8A", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_scaron, "scaron", "\xc5\xa1", "š", "š", "š", "<scaron/>", "š", "\\v{s}", NULL, "\\'9A", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_Yuml, "Yuml", "\xc5\xb8", "Ÿ", "Ÿ", "Ÿ", "<Yumlaut/>", "Ÿ", "\\\"{Y}", "Y\\*(4", "\\'9F", {"Y",DocSymbol::Perl_umlaut}}, + {DocSymbol::Sym_circ, "circ", "\xcb\x86", "ˆ", "ˆ", "ˆ", "<circ/>", "ˆ", "{$\\circ$}", NULL, "\\'88", {" ",DocSymbol::Perl_circ}}, + {DocSymbol::Sym_tilde, "tilde", "\xcb\x9c", "˜", "˜", "˜", "<tilde/>", "˜", "\\~{}", "~", "\\'98", {" ",DocSymbol::Perl_tilde}}, + {DocSymbol::Sym_ensp, "ensp", "\xe2\x80\x82", " ", " ", " ", "<ensp/>", " ", "\\enskip{}", NULL, "{\\enspace}", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_emsp, "emsp", "\xe2\x80\x83", " ", " ", " ", "<emsp/>", " ", "\\quad{}", NULL, "{\\emspace}", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_thinsp, "thinsp", "\xe2\x80\x89", " ", " ", " ", "<thinsp/>", " ", "\\,", NULL, "{\\qmspace}", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_zwnj, "zwnj", "\xe2\x80\x8c", "‌", "‌", "‌", "<zwnj/>", "‌", "{}", NULL, "\\zwnj", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_zwj, "zwj", "\xe2\x80\x8d", "‍", "‍", "‍", "<zwj/>", "‍", "", NULL, "\\zwj", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_lrm, "lrm", "\xe2\x80\x8e", "‎", "‎", "‎", "<lrm/>", "‎", "", NULL, "\\ltrmark", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_rlm, "rlm", "\xe2\x80\x8f", "‏", "‏", "‏", "<rlm/>", "‏", "", NULL, "\\rtlmark", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_ndash, "ndash", "\xe2\x80\x93", "–", "–", "–", "<ndash/>", "–", "--", "--", "\\'96", {"-",DocSymbol::Perl_char}}, + {DocSymbol::Sym_mdash, "mdash", "\xe2\x80\x94", "—", "—", "—", "<mdash/>", "—", "---", "---", "\\'97", {"--",DocSymbol::Perl_string}}, + {DocSymbol::Sym_lsquo, "lsquo", "\xe2\x80\x98", "‘", "‘", "‘", "<lsquo/>", "‘", "`", "`", "\\'91", {"\\\'",DocSymbol::Perl_string}}, + {DocSymbol::Sym_rsquo, "rsquo", "\xe2\x80\x99", "’", "’", "’", "<rsquo/>", "’", "'", "'", "\\'92", {"\\\'",DocSymbol::Perl_string}}, + {DocSymbol::Sym_sbquo, "sbquo", "\xe2\x80\x9a", "‚", "‚", "‚", "<sbquo/>", "‚", "\\quotesinglbase{}", NULL, "\\'82", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_ldquo, "ldquo", "\xe2\x80\x9c", "“", "“", "“", "<ldquo/>", "“", "``", "``", "\\'93", {"\"",DocSymbol::Perl_char}}, + {DocSymbol::Sym_rdquo, "rdquo", "\xe2\x80\x9d", "”", "”", "”", "<rdquo/>", "”", "''", "''", "\\'94", {"\"",DocSymbol::Perl_char}}, + {DocSymbol::Sym_bdquo, "bdquo", "\xe2\x80\x9e", "„", "„", "„", "<bdquo/>", "„", "\\quotedblbase{}", NULL, "\\'84", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_dagger, "dagger", "\xe2\x80\xa0", "†", "†", "†", "<dagger/>", "†", "{$\\dagger$}", NULL, "\\'86", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_Dagger, "Dagger", "\xe2\x80\xa1", "‡", "‡", "‡", "<Dagger/>", "‡", "{$\\ddagger$}", NULL, "\\'87", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_permil, "permil", "\xe2\x80\xb0", "‰", "‰", "‰", "<permil/>", "‰", "{$\\permil{}$}", NULL, "\\'89", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_lsaquo, "lsaquo", "\xe2\x80\xb9", "‹", "‹", "‹", "<lsaquo/>", "‹", "\\guilsinglleft{}", NULL, "\\'8B", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_rsaquo, "rsaquo", "\xe2\x80\xba", "›", "›", "›", "<rsaquo/>", "›", "\\guilsinglright{}", NULL, "\\'9B", {NULL,DocSymbol::Perl_unknown}}, + {DocSymbol::Sym_euro, "euro", "\xe2\x82\xac", "€", "€", "€", "<euro/>", "€", "\\texteuro{}", NULL, "\\'80", {NULL,DocSymbol::Perl_unknown}}, + + // doxygen extension to the HTML4 table of HTML entities + {DocSymbol::Sym_tm, "tm", "\xe2\x84\xa2", "™", "(TM)", "&tm;", "<trademark/>", "™", "\\texttrademark{}", "(TM)", "\\'99", {"trademark",DocSymbol::Perl_symbol}}, + {DocSymbol::Sym_apos, "apos", "'", "'", "'", "'", "'", "'", "'", "'", "'", {"\\\'",DocSymbol::Perl_string}}, + + // doxygen commands represented as HTML entities + {DocSymbol::Sym_BSlash, "BSlash", "\\", "\\", "\\", "\\", "\\", "\\", "\\textbackslash{}", "\\\\", "\\\\", {"\\\\",DocSymbol::Perl_string}}, + {DocSymbol::Sym_At, "At", "@", "@", "@", "@", "@", "@", "@", "@", "@", {"@",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Less, "Less", "<", "<", "<", "<", "<", "<", "<", "<", "<", {"<",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Greater, "Greater", ">", ">", ">", ">", ">", ">", ">", ">", ">", {">",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Amp, "Amp", "&", "&", "&", "&", "&", "&", "\\&", "&", "&", {"&",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Dollar, "Dollar", "$", "$", "$", "$", "$", "$", "\\$", "$", "$", {"$",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Hash, "Hash", "#;", "#", "#", "#", "#", "#", "\\#", "#", "#", {"#",DocSymbol::Perl_char}}, + {DocSymbol::Sym_DoubleColon, "DoubleColon", "::", "::", "::", "::", "::", "::", "::", "::", "::", {"::",DocSymbol::Perl_string}}, + {DocSymbol::Sym_Percent, "Percent", "%", "%", "%%", "%", "%", "%", "\\%", "%", "%", {"%",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Pipe, "Pipe", "|", "|", "|", "|", "|", "|", "$|$", "|", "|", {"|",DocSymbol::Perl_char}}, + {DocSymbol::Sym_Quot, "Quot", "\"", "\"", "\"", "\"", "\"", """, "\"", "\"", "\"", {"\"",DocSymbol::Perl_char}}, +}; + +/*! @brief Access routine to the name of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the name of the HTML entity (excluding the & and ;), + * in case the name is unknown \c NULL is returned. + */ +const char *get_symbol_item(DocSymbol::SymType symb) +{ + return html_entities[symb].item; +} +/*! @brief Access routine to the UTF8 code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the UTF8 code of the HTML entity, + * in case the UTF code is unknown \c NULL is returned. + */ +const char *get_symbol_UTF8(DocSymbol::SymType symb) +{ + return html_entities[symb].UTF8; +} +/*! @brief Access routine to the html code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the html of the HTML entity, + * in case the html code is unknown \c NULL is returned. + */ +const char *get_symbol_html(DocSymbol::SymType symb) +{ + return html_entities[symb].html; +} +/*! @brief Access routine to the printable code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the printable code of the HTML entity, + * in case the printable code is unknown \c NULL is returned. + */ +const char *get_symbol_print(DocSymbol::SymType symb) +{ + return html_entities[symb].print; +} +/*! @brief Access routine to the text representation of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the text representation the HTML entity, + * in case the text representation is unknown \c NULL is returned. + */ +const char *get_symbol_text(DocSymbol::SymType symb) +{ + return html_entities[symb].text; +} +/*! @brief Access routine to the XML code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the XML code of the HTML entity, + * in case the XML code is unknown \c NULL is returned. + */ +const char *get_symbol_xml(DocSymbol::SymType symb) +{ + return html_entities[symb].xml; +} +/*! @brief Access routine to the docbook code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the docbook code of the HTML entity, + * in case the docbook code is unknown \c NULL is returned. + */ +const char *get_symbol_docbook(DocSymbol::SymType symb) +{ + return html_entities[symb].docbook; +} +/*! @brief Access routine to the LaTeX code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the LaTeX code of the HTML entity, + * in case the LaTeX code is unknown \c NULL is returned. + */ +const char *get_symbol_latex(DocSymbol::SymType symb) +{ + return html_entities[symb].latex; +} +/*! @brief Access routine to the man code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the man of the HTML entity, + * in case the man code is unknown \c NULL is returned. + */ +const char *get_symbol_man(DocSymbol::SymType symb) +{ + return html_entities[symb].man; +} +/*! @brief Access routine to the RTF code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the RTF of the HTML entity, + * in case the RTF code is unknown \c NULL is returned. + */ +const char *get_symbol_rtf(DocSymbol::SymType symb) +{ + return html_entities[symb].rtf; +} +/*! @brief Access routine to the perl struct with the perl code of the HTML entity + * + * @param symb Code of the requested HTML entity + * @return the pointer to perl struct with the perl code of the HTML entity, + * in case the perl code does not exists the NULL pointer is entered in the + * \c symb field and in the `DocSymbol::Perl_unknown` in the \c type field. + */ +const DocSymbol::PerlSymb *get_symbol_perl(DocSymbol::SymType symb) +{ + return &html_entities[symb].perl; +} + +/*! + * @brief Give code of the requested HTML entity name + * @param symName HTML entity name without \c & and \c; + * @return the code for the requested HTML entity name, + * in case the requested HTML item does not exist `DocSymbol::Sym_unknown` is returned. + */ +DocSymbol::SymType code_symbol(const QCString &symName) +{ + for (int i = 0; i < sizeof(html_entities)/ sizeof(*html_entities); i++) + { + if (QCString("&")+ html_entities[i].item+";" == symName) return(html_entities[i].symb); + } + return DocSymbol::Sym_Unknown; +} + +/*! @brief Gives number of standard HTML4 entities plus the doxygen extensions + * @return the number of standard HTML4 entities plus the doxygen extensions + */ +int get_num_standard_symbols(void) +{ + return sizeof(html_entities)/ sizeof(*html_entities) - number_html_mapped_cmds; +} + +/*! @brief Routine to check if the entries of the html_entities are numbered correctly + * @details in case of a mismatch a warning message is given. + */ +void validate_html_entities(void) +{ + for (int i = 0; i < sizeof(html_entities)/ sizeof(*html_entities); i++) + { + if (i != html_entities[i].symb) + warn_uncond("Internal inconsistency, htmlentries code %d (item=%s)\n",i,html_entities[i].item); + } +} @@ -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 << "<"; 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 << "<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"; |