1 /******************************************************************************
6 * Copyright (C) 1997-2015 by Dimitri van Heesch.
8 * Permission to use, copy, modify, and distribute this software and its
9 * documentation under the terms of the GNU General Public License is hereby
10 * granted. No representations are made about the suitability of this software
11 * for any purpose. It is provided "as is" without express or implied warranty.
12 * See the GNU General Public License for more details.
14 * Documents produced by Doxygen are derivative works derived from the
15 * input used in their production; they are not affected by this license.
19 #include "cmdmapper.h"
21 /** Call representing a mapping from a command name to a command ID. */
30 { "a", CMD_EMPHASIS },
31 { "addindex", CMD_ADDINDEX },
32 { "anchor", CMD_ANCHOR },
34 { "attention", CMD_ATTENTION },
35 { "author", CMD_AUTHOR },
36 { "authors", CMD_AUTHORS },
40 { "code", CMD_STARTCODE },
41 { "copydoc", CMD_COPYDOC },
42 { "copybrief", CMD_COPYBRIEF },
43 { "copydetails", CMD_COPYDETAILS },
44 { "copyright", CMD_COPYRIGHT },
46 { "dontinclude", CMD_DONTINCLUDE },
47 { "dotfile", CMD_DOTFILE },
48 { "e", CMD_EMPHASIS },
49 { "em", CMD_EMPHASIS },
50 { "endcode", CMD_ENDCODE },
51 { "endhtmlonly", CMD_ENDHTMLONLY },
52 { "endlatexonly", CMD_ENDLATEXONLY },
53 { "endlink", CMD_ENDLINK },
54 { "endsecreflist", CMD_ENDSECREFLIST },
55 { "endverbatim", CMD_ENDVERBATIM },
56 { "endxmlonly", CMD_ENDXMLONLY },
57 { "exception", CMD_EXCEPTION },
58 { "form", CMD_FORMULA },
59 { "htmlinclude", CMD_HTMLINCLUDE },
60 { "htmlonly", CMD_HTMLONLY },
61 { "image", CMD_IMAGE },
62 { "include", CMD_INCLUDE },
63 { "internal", CMD_INTERNAL },
64 { "invariant", CMD_INVARIANT },
65 { "javalink", CMD_JAVALINK },
66 { "latexinclude", CMD_LATEXINCLUDE },
67 { "latexonly", CMD_LATEXONLY },
71 { "n", CMD_LINEBREAK },
75 { "param", CMD_PARAM },
79 { "refitem", CMD_SECREFITEM },
80 { "remark", CMD_REMARK },
81 { "remarks", CMD_REMARK },
82 { "result", CMD_RETURN },
83 { "return", CMD_RETURN },
84 { "returns", CMD_RETURN },
85 { "retval", CMD_RETVAL },
86 { "rtfonly", CMD_RTFONLY },
88 { "secreflist", CMD_SECREFLIST },
89 { "section", CMD_SECTION },
90 { "snippet", CMD_SNIPPET },
91 { "snippetdoc", CMD_SNIPPETDOC },
92 { "snippetlineno", CMD_SNIPWITHLINES },
93 { "subpage", CMD_SUBPAGE },
94 { "subsection", CMD_SUBSECTION },
95 { "subsubsection", CMD_SUBSUBSECTION },
96 { "paragraph", CMD_PARAGRAPH },
98 { "since", CMD_SINCE },
100 { "skipline", CMD_SKIPLINE },
101 { "xmlonly", CMD_XMLONLY },
102 { "xrefitem", CMD_XREFITEM },
103 { "throw", CMD_EXCEPTION },
104 { "until", CMD_UNTIL },
105 { "verbatim", CMD_VERBATIM },
106 { "verbinclude", CMD_VERBINCLUDE },
107 { "version", CMD_VERSION },
108 { "warning", CMD_WARNING },
109 { "throws", CMD_EXCEPTION },
110 { "tparam", CMD_TPARAM },
111 { "\\", CMD_BSLASH },
114 { ">", CMD_GREATER },
118 { "%", CMD_PERCENT },
123 { "::", CMD_DCOLON },
125 { "_internalref", CMD_INTERNALREF },
128 { "startuml", CMD_STARTUML },
129 { "enddot", CMD_ENDDOT },
130 { "endmsc", CMD_ENDMSC },
131 { "enduml", CMD_ENDUML },
132 { "manonly", CMD_MANONLY },
133 { "endmanonly", CMD_ENDMANONLY },
134 { "includelineno", CMD_INCWITHLINES },
135 { "includedoc", CMD_INCLUDEDOC },
136 { "inheritdoc", CMD_INHERITDOC },
137 { "mscfile", CMD_MSCFILE },
138 { "rtfonly", CMD_RTFONLY },
139 { "endrtfonly", CMD_ENDRTFONLY },
140 { "vhdlflow", CMD_VHDLFLOW },
141 { "docbookonly", CMD_DBONLY },
142 { "enddocbookonly",CMD_ENDDBONLY },
143 { "endinternal", CMD_ENDINTERNAL },
144 { "parblock", CMD_PARBLOCK },
145 { "endparblock", CMD_ENDPARBLOCK },
146 { "diafile", CMD_DIAFILE },
148 { "---", CMD_MDASH },
149 { "_setscope", CMD_SETSCOPE },
153 //----------------------------------------------------------------------------
155 CommandMap htmlTagMap[] =
157 { "strong", HTML_BOLD },
158 { "center", HTML_CENTER },
159 { "table", HTML_TABLE },
160 { "caption", HTML_CAPTION },
161 { "small", HTML_SMALL },
162 { "code", HTML_CODE },
163 { "dfn", HTML_CODE },
164 { "var", HTML_EMPHASIS },
175 { "tt", XML_C /*HTML_CODE*/ },
176 { "kbd", XML_C /*HTML_CODE*/ },
177 { "em", HTML_EMPHASIS },
183 { "i", HTML_EMPHASIS },
193 { "span", HTML_SPAN },
195 { "blockquote", HTML_BLOCKQUOTE },
198 // { "code", XML_CODE }, <= ambiguous <code> is also a HTML tag
199 { "description", XML_DESCRIPTION },
200 { "example", XML_EXAMPLE },
201 { "exception", XML_EXCEPTION },
202 { "include", XML_INCLUDE },
203 { "item", XML_ITEM },
204 { "list", XML_LIST }, // type="table|bullet|number"
205 { "listheader", XML_LISTHEADER },
206 { "para", XML_PARA },
207 { "param", XML_PARAM },
208 { "paramref", XML_PARAMREF },
209 { "typeparam", XML_TYPEPARAM },
210 { "typeparamref", XML_TYPEPARAMREF },
211 { "permission", XML_PERMISSION },
212 { "remarks", XML_REMARKS },
213 { "returns", XML_RETURNS },
215 { "seealso", XML_SEEALSO },
216 { "summary", XML_SUMMARY },
217 { "term", XML_TERM },
218 { "value", XML_VALUE },
219 { "inheritdoc", XML_INHERITDOC },
223 //----------------------------------------------------------------------------
225 Mapper *Mappers::cmdMapper = new Mapper(cmdMap,TRUE);
226 Mapper *Mappers::htmlTagMapper = new Mapper(htmlTagMap,FALSE);
228 int Mapper::map(const char *n)
231 if (!m_cs) name=name.lower();
233 return !name.isEmpty() && (result=m_map.find(name)) ? *result: 0;
236 QString Mapper::find(const int n)
238 QDictIterator<int> mapIterator(m_map);
239 for (int *curVal = mapIterator.toFirst();(curVal = mapIterator.current());++mapIterator)
241 if (*curVal == n || (*curVal == (n | SIMPLESECT_BIT))) return mapIterator.currentKey();
246 Mapper::Mapper(const CommandMap *cm,bool caseSensitive) : m_map(89), m_cs(caseSensitive)
248 m_map.setAutoDelete(TRUE);
249 const CommandMap *p = cm;
252 m_map.insert(p->cmdName,new int(p->cmdId));
257 void Mappers::freeMappers()
259 delete cmdMapper; cmdMapper = 0;
260 delete htmlTagMapper; htmlTagMapper = 0;