|
1 /**************************************************************************** |
|
2 ** |
|
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
4 ** All rights reserved. |
|
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
|
6 ** |
|
7 ** This file is part of the tools applications of the Qt Toolkit. |
|
8 ** |
|
9 ** $QT_BEGIN_LICENSE:LGPL$ |
|
10 ** No Commercial Usage |
|
11 ** This file contains pre-release code and may not be distributed. |
|
12 ** You may use this file in accordance with the terms and conditions |
|
13 ** contained in the Technology Preview License Agreement accompanying |
|
14 ** this package. |
|
15 ** |
|
16 ** GNU Lesser General Public License Usage |
|
17 ** Alternatively, this file may be used under the terms of the GNU Lesser |
|
18 ** General Public License version 2.1 as published by the Free Software |
|
19 ** Foundation and appearing in the file LICENSE.LGPL included in the |
|
20 ** packaging of this file. Please review the following information to |
|
21 ** ensure the GNU Lesser General Public License version 2.1 requirements |
|
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
|
23 ** |
|
24 ** In addition, as a special exception, Nokia gives you certain additional |
|
25 ** rights. These rights are described in the Nokia Qt LGPL Exception |
|
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
|
27 ** |
|
28 ** If you have questions regarding the use of this file, please contact |
|
29 ** Nokia at qt-info@nokia.com. |
|
30 ** |
|
31 ** |
|
32 ** |
|
33 ** |
|
34 ** |
|
35 ** |
|
36 ** |
|
37 ** |
|
38 ** $QT_END_LICENSE$ |
|
39 ** |
|
40 ****************************************************************************/ |
|
41 |
|
42 /* |
|
43 atom.h |
|
44 */ |
|
45 |
|
46 #ifndef ATOM_H |
|
47 #define ATOM_H |
|
48 |
|
49 #include <qstring.h> |
|
50 |
|
51 #define QDOC_QML |
|
52 |
|
53 QT_BEGIN_NAMESPACE |
|
54 |
|
55 class Atom |
|
56 { |
|
57 public: |
|
58 enum Type { |
|
59 AbstractLeft, |
|
60 AbstractRight, |
|
61 AnnotatedList, |
|
62 AutoLink, |
|
63 BaseName, |
|
64 BriefLeft, |
|
65 BriefRight, |
|
66 C, |
|
67 CaptionLeft, |
|
68 CaptionRight, |
|
69 Code, |
|
70 CodeBad, |
|
71 CodeNew, |
|
72 CodeOld, |
|
73 CodeQuoteArgument, |
|
74 CodeQuoteCommand, |
|
75 #ifdef QDOC_QML |
|
76 EndQmlText, |
|
77 #endif |
|
78 FootnoteLeft, |
|
79 FootnoteRight, |
|
80 FormatElse, |
|
81 FormatEndif, |
|
82 FormatIf, |
|
83 FormattingLeft, |
|
84 FormattingRight, |
|
85 GeneratedList, |
|
86 Image, |
|
87 ImageText, |
|
88 InlineImage, |
|
89 LegaleseLeft, |
|
90 LegaleseRight, |
|
91 LineBreak, |
|
92 Link, |
|
93 LinkNode, |
|
94 ListLeft, |
|
95 ListItemNumber, |
|
96 ListTagLeft, |
|
97 ListTagRight, |
|
98 ListItemLeft, |
|
99 ListItemRight, |
|
100 ListRight, |
|
101 Nop, |
|
102 ParaLeft, |
|
103 ParaRight, |
|
104 #ifdef QDOC_QML |
|
105 Qml, |
|
106 QmlText, |
|
107 #endif |
|
108 QuotationLeft, |
|
109 QuotationRight, |
|
110 RawString, |
|
111 SectionLeft, |
|
112 SectionRight, |
|
113 SectionHeadingLeft, |
|
114 SectionHeadingRight, |
|
115 SidebarLeft, |
|
116 SidebarRight, |
|
117 SinceList, |
|
118 SnippetCommand, |
|
119 SnippetIdentifier, |
|
120 SnippetLocation, |
|
121 String, |
|
122 TableLeft, |
|
123 TableRight, |
|
124 TableHeaderLeft, |
|
125 TableHeaderRight, |
|
126 TableRowLeft, |
|
127 TableRowRight, |
|
128 TableItemLeft, |
|
129 TableItemRight, |
|
130 TableOfContents, |
|
131 Target, |
|
132 UnhandledFormat, |
|
133 UnknownCommand, |
|
134 Last = UnknownCommand |
|
135 }; |
|
136 |
|
137 Atom(Type type, const QString &string = "") |
|
138 : nxt(0), typ(type), str(string) { } |
|
139 Atom(Atom *prev, Type type, const QString &string = "") |
|
140 : nxt(prev->nxt), typ(type), str(string) { prev->nxt = this; } |
|
141 |
|
142 void appendChar(QChar ch) { str += ch; } |
|
143 void appendString(const QString& string) { str += string; } |
|
144 void chopString() { str.chop(1); } |
|
145 void setString(const QString &string) { str = string; } |
|
146 Atom *next() { return nxt; } |
|
147 void setNext(Atom *newNext) { nxt = newNext; } |
|
148 |
|
149 const Atom *next() const { return nxt; } |
|
150 const Atom *next(Type t) const; |
|
151 const Atom *next(Type t, const QString& s) const; |
|
152 Type type() const { return typ; } |
|
153 QString typeString() const; |
|
154 const QString& string() const { return str; } |
|
155 void dump() const; |
|
156 |
|
157 static QString BOLD_; |
|
158 static QString INDEX_; |
|
159 static QString ITALIC_; |
|
160 static QString LINK_; |
|
161 static QString PARAMETER_; |
|
162 static QString SUBSCRIPT_; |
|
163 static QString SUPERSCRIPT_; |
|
164 static QString TELETYPE_; |
|
165 static QString UNDERLINE_; |
|
166 |
|
167 static QString BULLET_; |
|
168 static QString TAG_; |
|
169 static QString VALUE_; |
|
170 static QString LOWERALPHA_; |
|
171 static QString LOWERROMAN_; |
|
172 static QString NUMERIC_; |
|
173 static QString UPPERALPHA_; |
|
174 static QString UPPERROMAN_; |
|
175 |
|
176 private: |
|
177 Atom *nxt; |
|
178 Type typ; |
|
179 QString str; |
|
180 }; |
|
181 |
|
182 #define ATOM_FORMATTING_BOLD "bold" |
|
183 #define ATOM_FORMATTING_INDEX "index" |
|
184 #define ATOM_FORMATTING_ITALIC "italic" |
|
185 #define ATOM_FORMATTING_LINK "link" |
|
186 #define ATOM_FORMATTING_PARAMETER "parameter" |
|
187 #define ATOM_FORMATTING_SUBSCRIPT "subscript" |
|
188 #define ATOM_FORMATTING_SUPERSCRIPT "superscript" |
|
189 #define ATOM_FORMATTING_TELETYPE "teletype" |
|
190 #define ATOM_FORMATTING_UNDERLINE "underline" |
|
191 |
|
192 #define ATOM_LIST_BULLET "bullet" |
|
193 #define ATOM_LIST_TAG "tag" |
|
194 #define ATOM_LIST_VALUE "value" |
|
195 #define ATOM_LIST_LOWERALPHA "loweralpha" |
|
196 #define ATOM_LIST_LOWERROMAN "lowerroman" |
|
197 #define ATOM_LIST_NUMERIC "numeric" |
|
198 #define ATOM_LIST_UPPERALPHA "upperalpha" |
|
199 #define ATOM_LIST_UPPERROMAN "upperroman" |
|
200 |
|
201 QT_END_NAMESPACE |
|
202 |
|
203 #endif |