Doxygen
Toggle main menu visibility
Loading...
Searching...
No Matches
doctokenizer.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* $Id: $
4
*
5
*
6
* Copyright (C) 1997-2015 by Dimitri van Heesch.
7
*
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.
13
*
14
* Documents produced by Doxygen are derivative works derived from the
15
* input used in their production; they are not affected by this license.
16
*
17
*/
18
19
#ifndef DOCTOKENIZER_H
20
#define DOCTOKENIZER_H
21
22
#include <stdio.h>
23
#include <memory>
24
25
#include "
htmlattrib.h
"
26
#include "
qcstring.h
"
27
#include "
construct.h
"
28
29
#define TOKEN_SPECIFICATIONS \
30
TKSPEC(TK_EOF, -1) \
31
TKSPEC(TK_NONE, 0) \
32
TKSPEC(TK_WORD, 1) \
33
TKSPEC(TK_LNKWORD, 2) \
34
TKSPEC(TK_WHITESPACE, 3) \
35
TKSPEC(TK_LISTITEM, 4) \
36
TKSPEC(TK_ENDLIST, 5) \
37
TKSPEC(TK_COMMAND_AT, 6)
/*! Command starting with `@` */
\
38
TKSPEC(TK_HTMLTAG, 7) \
39
TKSPEC(TK_SYMBOL, 8) \
40
TKSPEC(TK_NEWPARA, 9) \
41
TKSPEC(TK_RCSTAG, 10) \
42
TKSPEC(TK_URL, 11) \
43
TKSPEC(TK_COMMAND_BS, 12)
/*! Command starting with `\` */
44
45
#define RETVAL_SPECIFICATIONS \
46
TKSPEC(RetVal_OK, 0x10000) \
47
TKSPEC(RetVal_SimpleSec, 0x10001) \
48
TKSPEC(RetVal_ListItem, 0x10002) \
49
TKSPEC(RetVal_Section, 0x10003) \
50
TKSPEC(RetVal_Subsection, 0x10004) \
51
TKSPEC(RetVal_Subsubsection, 0x10005) \
52
TKSPEC(RetVal_Paragraph, 0x10006) \
53
TKSPEC(RetVal_SubParagraph, 0x10007) \
54
TKSPEC(RetVal_EndList, 0x10008) \
55
TKSPEC(RetVal_EndPre, 0x10009) \
56
TKSPEC(RetVal_DescData, 0x1000A) \
57
TKSPEC(RetVal_DescTitle, 0x1000B) \
58
TKSPEC(RetVal_EndDesc, 0x1000C) \
59
TKSPEC(RetVal_TableRow, 0x1000D) \
60
TKSPEC(RetVal_TableCell, 0x1000E) \
61
TKSPEC(RetVal_TableHCell, 0x1000F) \
62
TKSPEC(RetVal_EndTable, 0x10010) \
63
TKSPEC(RetVal_EndTableCell, 0x10011) \
64
TKSPEC(RetVal_EndTableRow, 0x10012) \
65
TKSPEC(RetVal_Internal, 0x10013) \
66
TKSPEC(RetVal_SwitchLang, 0x10014) \
67
TKSPEC(RetVal_CloseXml, 0x10015) \
68
TKSPEC(RetVal_EndBlockQuote, 0x10016) \
69
TKSPEC(RetVal_CopyDoc, 0x10017) \
70
TKSPEC(RetVal_EndInternal, 0x10018) \
71
TKSPEC(RetVal_EndParBlock, 0x10019) \
72
TKSPEC(RetVal_EndHtmlDetails, 0x1001A) \
73
TKSPEC(RetVal_SubSubParagraph, 0x1001B)
74
75
enum class
TokenRetval
76
{
77
#define TKSPEC(x,y) x = y,
78
TOKEN_SPECIFICATIONS
79
RETVAL_SPECIFICATIONS
80
#undef TKSPEC
81
};
82
83
class
Token
84
{
85
public
:
86
explicit
Token
(
TokenRetval
tv) :
m_value
(tv) {}
87
TokenRetval
value
()
const
{
return
m_value
; }
88
#define TKSPEC(x,y) static Token make_##x() { return Token(TokenRetval::x); }
89
TOKEN_SPECIFICATIONS
90
RETVAL_SPECIFICATIONS
91
#undef TKSPEC
92
93
const
char
*
to_string
()
const
94
{
95
const
char
*result =
"ERROR"
;
96
switch
(
m_value
)
97
{
98
#define TKSPEC(x,y) case TokenRetval::x: result = #x; break;
99
TOKEN_SPECIFICATIONS
100
RETVAL_SPECIFICATIONS
101
#undef TKSPEC
102
}
103
return
result;
104
}
105
106
char
command_to_char
()
const
107
{
108
return
m_value
==TokenRetval::TK_COMMAND_AT ?
'@'
:
'\\'
;
109
}
110
111
static
Token
char_to_command
(
char
c)
112
{
113
return
c==
'@'
? make_TK_COMMAND_AT() : make_TK_COMMAND_BS();
114
}
115
116
template
<
typename
... ARGS>
117
bool
is_any_of
(ARGS... args)
const
118
{
119
return
((
m_value
== args) || ...);
120
}
121
122
bool
is
(
TokenRetval
rv)
const
123
{
124
return
m_value
==rv;
125
}
126
127
friend
inline
bool
operator==
(
const
Token
&t1,
const
Token
&t2) {
return
t1.
m_value
==t2.
m_value
; }
128
friend
inline
bool
operator!=
(
const
Token
&t1,
const
Token
&t2) {
return
!(
operator==
(t1,t2)); }
129
130
private
:
131
TokenRetval
m_value
;
132
};
133
134
/** @brief Data associated with a token used by the comment block parser. */
135
struct
TokenInfo
136
{
137
// command token
138
QCString
name
;
139
140
// command text (RCS tag)
141
QCString
text
;
142
143
// comment blocks
144
145
// list token info
146
bool
isEnumList
=
false
;
147
bool
isCheckedList
=
false
;
148
int
indent
= 0;
149
150
// sections
151
QCString
sectionId
;
152
153
// simple section
154
QCString
simpleSectName
;
155
QCString
simpleSectText
;
156
157
// verbatim fragment
158
QCString
verb
;
159
160
// xrefitem
161
int
id
= -1;
162
163
// html tag
164
HtmlAttribList
attribs
;
165
bool
endTag
=
false
;
166
bool
emptyTag
=
false
;
167
QCString
attribsStr
;
168
169
// whitespace
170
QCString
chars
;
171
172
// url
173
bool
isEMailAddr
=
false
;
174
175
// param attributes
176
enum
ParamDir
{
In
=1,
Out
=2,
InOut
=3,
Unspecified
=0 };
177
ParamDir
paramDir
=
Unspecified
;
178
};
179
180
class
Definition
;
181
182
class
DocTokenizer
183
{
184
public
:
185
DocTokenizer
();
186
~DocTokenizer
();
187
NON_COPYABLE
(
DocTokenizer
)
188
189
TokenInfo
*
token
();
190
[[maybe_unused]]
TokenInfo
*
resetToken
();
191
192
void
setFileName
(
const
QCString
&fileName);
193
QCString
getFileName
()
const
;
194
void
setLineNr
(
int
lineno);
195
int
getLineNr
()
const
;
196
void
pushState
();
197
void
popState
();
198
199
// operations on the scanner
200
void
findSections
(
const
QCString
&input,
const
Definition
*d,
201
const
QCString
&fileName);
202
void
init
(
const
char
*input,
const
QCString
&fileName,
203
bool
markdownSupport,
bool
insideHtmlLink);
204
void
cleanup
();
205
void
pushContext
();
206
bool
popContext
();
207
Token
lex
();
208
void
unputString
(
const
QCString
&tag);
209
void
setStatePara
();
210
void
setStateTitle
();
211
void
setStateTitleAttrValue
();
212
void
setStateCode
();
213
void
setStateICode
();
214
void
setStateXmlCode
();
215
void
setStateHtmlOnly
();
216
void
setStateManOnly
();
217
void
setStateLatexOnly
();
218
void
setStateXmlOnly
();
219
void
setStateDbOnly
();
220
void
setStateRtfOnly
();
221
void
setStateVerbatim
();
222
void
setStateIVerbatim
();
223
void
setStateILiteral
();
224
void
setStateILiteralOpt
();
225
void
setStateDot
();
226
void
setStateMsc
();
227
void
setStateParam
();
228
void
setStateXRefItem
();
229
void
setStateFile
();
230
void
setStateIFile
();
231
void
setStatePattern
();
232
void
setStateLink
();
233
void
setStateCite
();
234
void
setStateDoxyConfig
();
235
void
setStateRef
();
236
void
setStateInternalRef
();
237
void
setStateText
();
238
void
setStateSkipTitle
();
239
void
setStateAnchor
();
240
void
setInsidePre
(
bool
b);
241
void
pushBackHtmlTag
(
const
QCString
&tag);
242
void
setStateSnippet
();
243
void
startAutoList
();
244
void
endAutoList
();
245
void
setStatePlantUML
();
246
void
setStateSetScope
();
247
void
setStatePlantUMLOpt
();
248
void
setStateOptions
();
249
void
setStateBlock
();
250
void
setStateEmoji
();
251
void
setStateILine
();
252
void
setStateQuotedString
();
253
void
setStateShowDate
();
254
void
setStatePrefix
();
255
256
private
:
257
struct
Private
;
258
std::unique_ptr<Private>
p
;
259
};
260
261
#endif
Definition
The common base class of all entity definitions found in the sources.
Definition
definition.h:77
DocTokenizer::token
TokenInfo * token()
Definition
doctokenizer.l:1828
DocTokenizer::setStateTitleAttrValue
void setStateTitleAttrValue()
Definition
doctokenizer.l:1858
DocTokenizer::cleanup
void cleanup()
Definition
doctokenizer.l:2166
DocTokenizer::setStateILiteralOpt
void setStateILiteralOpt()
Definition
doctokenizer.l:1949
DocTokenizer::setStateILiteral
void setStateILiteral()
Definition
doctokenizer.l:1941
DocTokenizer::setStateCite
void setStateCite()
Definition
doctokenizer.l:2049
DocTokenizer::setStateSnippet
void setStateSnippet()
Definition
doctokenizer.l:2106
DocTokenizer::setStatePrefix
void setStatePrefix()
Definition
doctokenizer.l:2099
DocTokenizer::setStateEmoji
void setStateEmoji()
Definition
doctokenizer.l:2137
DocTokenizer::setStateDot
void setStateDot()
Definition
doctokenizer.l:1973
DocTokenizer::init
void init(const char *input, const QCString &fileName, bool markdownSupport, bool insideHtmlLink)
Definition
doctokenizer.l:1814
DocTokenizer::lex
Token lex()
Definition
doctokenizer.l:1784
DocTokenizer::setLineNr
void setLineNr(int lineno)
Definition
doctokenizer.l:2222
DocTokenizer::pushState
void pushState()
Definition
doctokenizer.l:2236
DocTokenizer::setStateCode
void setStateCode()
Definition
doctokenizer.l:1865
DocTokenizer::setStatePattern
void setStatePattern()
Definition
doctokenizer.l:2034
DocTokenizer::setStateMsc
void setStateMsc()
Definition
doctokenizer.l:1981
DocTokenizer::startAutoList
void startAutoList()
Definition
doctokenizer.l:2194
DocTokenizer::endAutoList
void endAutoList()
Definition
doctokenizer.l:2201
DocTokenizer::setStateIFile
void setStateIFile()
Definition
doctokenizer.l:2027
DocTokenizer::setStateRef
void setStateRef()
Definition
doctokenizer.l:2063
DocTokenizer::getFileName
QCString getFileName() const
Definition
doctokenizer.l:2215
DocTokenizer::setFileName
void setFileName(const QCString &fileName)
Definition
doctokenizer.l:2208
DocTokenizer::setStateSkipTitle
void setStateSkipTitle()
Definition
doctokenizer.l:2085
DocTokenizer::setStateParam
void setStateParam()
Definition
doctokenizer.l:2006
DocTokenizer::setStateBlock
void setStateBlock()
Definition
doctokenizer.l:2129
DocTokenizer::setStatePlantUMLOpt
void setStatePlantUMLOpt()
Definition
doctokenizer.l:1989
DocTokenizer::setStateAnchor
void setStateAnchor()
Definition
doctokenizer.l:2092
DocTokenizer::DocTokenizer
DocTokenizer()
Definition
doctokenizer.l:1769
DocTokenizer::findSections
void findSections(const QCString &input, const Definition *d, const QCString &fileName)
Definition
doctokenizer.l:1796
DocTokenizer::setStateRtfOnly
void setStateRtfOnly()
Definition
doctokenizer.l:1909
DocTokenizer::~DocTokenizer
~DocTokenizer()
Definition
doctokenizer.l:1778
DocTokenizer::setStateVerbatim
void setStateVerbatim()
Definition
doctokenizer.l:1957
DocTokenizer::setStateLink
void setStateLink()
Definition
doctokenizer.l:2042
DocTokenizer::setStateTitle
void setStateTitle()
Definition
doctokenizer.l:1851
DocTokenizer::setStateFile
void setStateFile()
Definition
doctokenizer.l:2020
DocTokenizer::setStateLatexOnly
void setStateLatexOnly()
Definition
doctokenizer.l:1933
DocTokenizer::setStateManOnly
void setStateManOnly()
Definition
doctokenizer.l:1901
DocTokenizer::setStateShowDate
void setStateShowDate()
Definition
doctokenizer.l:2159
DocTokenizer::setInsidePre
void setInsidePre(bool b)
Definition
doctokenizer.l:2173
DocTokenizer::setStateXRefItem
void setStateXRefItem()
Definition
doctokenizer.l:2013
DocTokenizer::getLineNr
int getLineNr() const
Definition
doctokenizer.l:2229
DocTokenizer::setStateText
void setStateText()
Definition
doctokenizer.l:2078
DocTokenizer::pushContext
void pushContext()
Definition
doctokenizer.l:1733
DocTokenizer::setStateXmlCode
void setStateXmlCode()
Definition
doctokenizer.l:1883
DocTokenizer::unputString
void unputString(const QCString &tag)
Definition
doctokenizer.l:1789
DocTokenizer::setStateDbOnly
void setStateDbOnly()
Definition
doctokenizer.l:1925
DocTokenizer::setStateHtmlOnly
void setStateHtmlOnly()
Definition
doctokenizer.l:1892
DocTokenizer::setStateInternalRef
void setStateInternalRef()
Definition
doctokenizer.l:2071
DocTokenizer::setStateILine
void setStateILine()
Definition
doctokenizer.l:2145
DocTokenizer::setStateICode
void setStateICode()
Definition
doctokenizer.l:1874
DocTokenizer::setStateOptions
void setStateOptions()
Definition
doctokenizer.l:2121
DocTokenizer::popState
void popState()
Definition
doctokenizer.l:2243
DocTokenizer::setStateDoxyConfig
void setStateDoxyConfig()
Definition
doctokenizer.l:2056
DocTokenizer::setStateQuotedString
void setStateQuotedString()
Definition
doctokenizer.l:2152
DocTokenizer::popContext
bool popContext()
Definition
doctokenizer.l:1748
DocTokenizer::setStatePara
void setStatePara()
Definition
doctokenizer.l:1843
DocTokenizer::setStatePlantUML
void setStatePlantUML()
Definition
doctokenizer.l:1998
DocTokenizer::resetToken
TokenInfo * resetToken()
Definition
doctokenizer.l:1835
DocTokenizer::setStateIVerbatim
void setStateIVerbatim()
Definition
doctokenizer.l:1965
DocTokenizer::setStateXmlOnly
void setStateXmlOnly()
Definition
doctokenizer.l:1917
DocTokenizer::p
std::unique_ptr< Private > p
Definition
doctokenizer.h:258
DocTokenizer::setStateSetScope
void setStateSetScope()
Definition
doctokenizer.l:2114
DocTokenizer::pushBackHtmlTag
void pushBackHtmlTag(const QCString &tag)
Definition
doctokenizer.l:2180
HtmlAttribList
Class representing a list of HTML attributes.
Definition
htmlattrib.h:33
QCString
This is an alternative implementation of QCString.
Definition
qcstring.h:101
Token
Definition
doctokenizer.h:84
Token::operator==
friend bool operator==(const Token &t1, const Token &t2)
Definition
doctokenizer.h:127
Token::is
bool is(TokenRetval rv) const
Definition
doctokenizer.h:122
Token::m_value
TokenRetval m_value
Definition
doctokenizer.h:131
Token::char_to_command
static Token char_to_command(char c)
Definition
doctokenizer.h:111
Token::to_string
TOKEN_SPECIFICATIONS RETVAL_SPECIFICATIONS const char * to_string() const
Definition
doctokenizer.h:93
Token::value
TokenRetval value() const
Definition
doctokenizer.h:87
Token::is_any_of
bool is_any_of(ARGS... args) const
Definition
doctokenizer.h:117
Token::operator!=
friend bool operator!=(const Token &t1, const Token &t2)
Definition
doctokenizer.h:128
Token::Token
Token(TokenRetval tv)
Definition
doctokenizer.h:86
Token::command_to_char
char command_to_char() const
Definition
doctokenizer.h:106
construct.h
NON_COPYABLE
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
Definition
construct.h:37
TokenRetval
TokenRetval
Definition
doctokenizer.h:76
TOKEN_SPECIFICATIONS
#define TOKEN_SPECIFICATIONS
Definition
doctokenizer.h:29
RETVAL_SPECIFICATIONS
#define RETVAL_SPECIFICATIONS
Definition
doctokenizer.h:45
htmlattrib.h
qcstring.h
DocTokenizer::Private
Definition
doctokenizer.l:1727
TokenInfo
Data associated with a token used by the comment block parser.
Definition
doctokenizer.h:136
TokenInfo::paramDir
ParamDir paramDir
Definition
doctokenizer.h:177
TokenInfo::verb
QCString verb
Definition
doctokenizer.h:158
TokenInfo::isEnumList
bool isEnumList
Definition
doctokenizer.h:146
TokenInfo::text
QCString text
Definition
doctokenizer.h:141
TokenInfo::sectionId
QCString sectionId
Definition
doctokenizer.h:151
TokenInfo::chars
QCString chars
Definition
doctokenizer.h:170
TokenInfo::attribs
HtmlAttribList attribs
Definition
doctokenizer.h:164
TokenInfo::endTag
bool endTag
Definition
doctokenizer.h:165
TokenInfo::isCheckedList
bool isCheckedList
Definition
doctokenizer.h:147
TokenInfo::indent
int indent
Definition
doctokenizer.h:148
TokenInfo::simpleSectText
QCString simpleSectText
Definition
doctokenizer.h:155
TokenInfo::ParamDir
ParamDir
Definition
doctokenizer.h:176
TokenInfo::Out
@ Out
Definition
doctokenizer.h:176
TokenInfo::In
@ In
Definition
doctokenizer.h:176
TokenInfo::Unspecified
@ Unspecified
Definition
doctokenizer.h:176
TokenInfo::InOut
@ InOut
Definition
doctokenizer.h:176
TokenInfo::name
QCString name
Definition
doctokenizer.h:138
TokenInfo::attribsStr
QCString attribsStr
Definition
doctokenizer.h:167
TokenInfo::isEMailAddr
bool isEMailAddr
Definition
doctokenizer.h:173
TokenInfo::simpleSectName
QCString simpleSectName
Definition
doctokenizer.h:154
TokenInfo::emptyTag
bool emptyTag
Definition
doctokenizer.h:166
src
doctokenizer.h
Generated by
1.17.0