Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qxmlstream.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:critical reason:data-parser
4
5#ifndef QXMLSTREAM_H
6#define QXMLSTREAM_H
7
8#include <QtCore/qiodevice.h>
9
10#if QT_CONFIG(xmlstream)
11
12#include <QtCore/qcompare.h>
13#include <QtCore/qlist.h>
14#include <QtCore/qscopedpointer.h>
15#include <QtCore/qstring.h>
16
17#include <memory>
18
20
21namespace QtPrivate {
22
23class QXmlString {
25public:
27 QXmlString(const QString &s) : m_string(s.data_ptr()) {}
28 QXmlString & operator=(const QString &s) { m_string = s.data_ptr(); return *this; }
29 QXmlString & operator=(QString &&s) { m_string.swap(s.data_ptr()); return *this; }
30 inline constexpr QXmlString() {}
31
32 void swap(QXmlString &other) noexcept
33 {
35 }
36
37 operator QStringView() const noexcept { return QStringView(m_string.data(), m_string.size); }
38 qsizetype size() const noexcept { return m_string.size; }
39 bool isNull() const noexcept { return m_string.isNull(); }
40
41private:
42 friend bool comparesEqual(const QXmlString &lhs, const QXmlString &rhs) noexcept
43 {
44 return QStringView(lhs) == QStringView(rhs);
45 }
47};
48
49}
51
52
57 uint m_isDefault : 1;
58 friend class QXmlStreamReaderPrivate;
59 friend class QXmlStreamAttributes;
60public:
64
65 inline QStringView namespaceUri() const { return m_namespaceUri; }
66 inline QStringView name() const { return m_name; }
67 inline QStringView qualifiedName() const { return m_qualifiedName; }
68 inline QStringView prefix() const {
70 }
71 inline QStringView value() const { return m_value; }
72 inline bool isDefault() const { return m_isDefault; }
73#if QT_CORE_REMOVED_SINCE(6, 8)
74 inline bool operator==(const QXmlStreamAttribute &other) const
75 { return comparesEqual(*this, other); }
76 inline bool operator!=(const QXmlStreamAttribute &other) const
77 { return !operator==(other); }
78#endif
79
80private:
81 friend bool comparesEqual(const QXmlStreamAttribute &lhs,
82 const QXmlStreamAttribute &rhs) noexcept
83 {
84 if (lhs.m_value != rhs.m_value)
85 return false;
89 && lhs.m_name == rhs.m_name;
90 }
92};
93
95
96// We export each out-of-line method individually to prevent MSVC from
97// exporting the whole QList class.
99{
100public:
101 inline QXmlStreamAttributes() {}
102#if QT_CORE_REMOVED_SINCE(6, 6)
108#endif
111
112 Q_CORE_EXPORT void append(const QString &namespaceUri, const QString &name, const QString &value);
114
116 {
117 return !value(qualifiedName).isNull();
118 }
119
121 {
122 return !value(namespaceUri, name).isNull();
123 }
124
126};
127
130
131 friend class QXmlStreamReaderPrivate;
132public:
135
136 inline QStringView prefix() const { return m_prefix; }
137 inline QStringView namespaceUri() const { return m_namespaceUri; }
138#if QT_CORE_REMOVED_SINCE(6, 8)
139 inline bool operator==(const QXmlStreamNamespaceDeclaration &other) const
140 { return comparesEqual(*this, other); }
141 inline bool operator!=(const QXmlStreamNamespaceDeclaration &other) const
142 { return !operator==(other); }
143#endif
144private:
146 const QXmlStreamNamespaceDeclaration &rhs) noexcept
147 {
148 return lhs.m_prefix == rhs.m_prefix
150 }
152};
153
156
159
160 friend class QXmlStreamReaderPrivate;
161public:
163
164 inline QStringView name() const { return m_name; }
165 inline QStringView systemId() const { return m_systemId; }
166 inline QStringView publicId() const { return m_publicId; }
167#if QT_CORE_REMOVED_SINCE(6, 8)
168 inline bool operator==(const QXmlStreamNotationDeclaration &other) const
169 { return comparesEqual(*this, other); }
170 inline bool operator!=(const QXmlStreamNotationDeclaration &other) const
171 { return !operator==(other); }
172#endif
173private:
175 const QXmlStreamNotationDeclaration &rhs) noexcept
176 {
179 }
181};
182
185
188
189 friend class QXmlStreamReaderPrivate;
190public:
192
193 inline QStringView name() const { return m_name; }
194 inline QStringView notationName() const { return m_notationName; }
195 inline QStringView systemId() const { return m_systemId; }
196 inline QStringView publicId() const { return m_publicId; }
197 inline QStringView value() const { return m_value; }
198#if QT_CORE_REMOVED_SINCE(6, 8)
199 inline bool operator==(const QXmlStreamEntityDeclaration &other) const
200 { return comparesEqual(*this, other); }
201 inline bool operator!=(const QXmlStreamEntityDeclaration &other) const
202 { return !operator==(other); }
203#endif
204
205private:
207 const QXmlStreamEntityDeclaration &rhs) noexcept
208 {
209 return lhs.m_name == rhs.m_name
213 && lhs.m_value == rhs.m_value;
214 }
216};
217
220
222{
224public:
225 QXmlStreamEntityResolver() = default;
226 virtual ~QXmlStreamEntityResolver();
227 virtual QString resolveEntity(const QString& publicId, const QString& systemId);
229};
230
231#if QT_CONFIG(xmlstreamreader)
233{
235public:
236 enum TokenType {
237 NoToken = 0,
238 Invalid,
244 Comment,
245 DTD,
248 };
249
250
253#if QT_CORE_REMOVED_SINCE(6, 5)
254 explicit QXmlStreamReader(const QByteArray &data);
255 explicit QXmlStreamReader(const QString &data);
256 explicit QXmlStreamReader(const char * data);
257#endif // QT_CORE_REMOVED_SINCE(6, 5)
259 explicit QXmlStreamReader(const QByteArray &data)
263
265 QIODevice *device() const;
266#if QT_CORE_REMOVED_SINCE(6, 5)
267 void addData(const QByteArray &data);
268 void addData(const QString &data);
269 void addData(const char *data);
270#endif // QT_CORE_REMOVED_SINCE(6, 5)
272 void addData(const QByteArray &data) { addDataImpl(data); }
274 void clear();
275
276
277 bool atEnd() const;
279
281 void skipCurrentElement();
283
284 TokenType tokenType() const;
285 QString tokenString() const;
286
287 void setNamespaceProcessing(bool);
288 bool namespaceProcessing() const;
289
290 inline bool isStartDocument() const { return tokenType() == StartDocument; }
291 inline bool isEndDocument() const { return tokenType() == EndDocument; }
292 inline bool isStartElement() const { return tokenType() == StartElement; }
293 inline bool isEndElement() const { return tokenType() == EndElement; }
294 inline bool isCharacters() const { return tokenType() == Characters; }
295 bool isWhitespace() const;
296 bool isCDATA() const;
297 inline bool isComment() const { return tokenType() == Comment; }
298 inline bool isDTD() const { return tokenType() == DTD; }
299 inline bool isEntityReference() const { return tokenType() == EntityReference; }
300 inline bool isProcessingInstruction() const { return tokenType() == ProcessingInstruction; }
301
302 bool isStandaloneDocument() const;
303 bool hasStandaloneDeclaration() const;
306
307 qint64 lineNumber() const;
308 qint64 columnNumber() const;
309 qint64 characterOffset() const;
310
312
317 };
319
320 QStringView name() const;
323 QStringView prefix() const;
324
327
328 QStringView text() const;
329
335 QStringView dtdName() const;
336 QStringView dtdPublicId() const;
337 QStringView dtdSystemId() const;
338
339 int entityExpansionLimit() const;
341
342 enum Error {
343 NoError,
348 };
349 void raiseError(const QString& message = QString());
350 QString errorString() const;
351 Error error() const;
352
353 inline bool hasError() const
354 {
355 return error() != NoError;
356 }
357
360
361private:
362 struct PrivateConstructorTag { };
364 void addDataImpl(const QByteArray &data);
365
369
370};
371#endif // feature xmlstreamreader
372
373#if QT_CONFIG(xmlstreamwriter)
374
376
378{
382public:
388
390 QIODevice *device() const;
391
392 void setAutoFormatting(bool);
393 bool autoFormatting() const;
394
396 int autoFormattingIndent() const;
397
398 void setStopWritingOnError(bool stop);
399 bool stopWritingOnError() const;
400
401#if QT_CORE_REMOVED_SINCE(6,5)
402 void writeAttribute(const QString &qualifiedName, const QString &value);
403 void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value);
404#endif
407
410
411#if QT_CORE_REMOVED_SINCE(6,5)
412 void writeCDATA(const QString &text);
413 void writeCharacters(const QString &text);
414 void writeComment(const QString &text);
415
416 void writeDTD(const QString &dtd);
417
420
422 void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text);
423#endif
427
429
432
435
436
437 void writeEndDocument();
438 void writeEndElement();
439
440#if QT_CORE_REMOVED_SINCE(6,5)
441 void writeEntityReference(const QString &name);
442 void writeNamespace(const QString &namespaceUri, const QString &prefix);
445#endif
450
451 void writeStartDocument();
452#if QT_CORE_REMOVED_SINCE(6,5)
454 void writeStartDocument(const QString &version, bool standalone);
457#endif
462
463#if QT_CONFIG(xmlstreamreader)
465#endif
466
467 enum class Error {
468 None,
469 IO,
470 Encoding,
472 Custom,
473 };
474
476 QString errorString() const;
477 Error error() const;
478 bool hasError() const;
479
480private:
484};
485#endif // feature xmlstreamwriter
486
488
489#endif // feature xmlstream
490
491#endif // QXMLSTREAM_H
void acceptUI(DomUI *node) override
void acceptCustomWidgets(DomCustomWidgets *node) override
void acceptCustomWidget(DomCustomWidget *node) override
void acceptUI(DomUI *node) override
void acceptWidget(DomWidget *node) override
QStringList connections() const
Option & option()
Definition driver.h:39
bool printDependencies(const QString &fileName)
Definition driver.cpp:218
The QCommandLineOption class defines a possible command-line option. \inmodule QtCore.
The QCommandLineParser class provides a means for handling the command line options.
\inmodule QtCore
Definition qfile.h:96
Definition qlist.h:80
Definition uic.h:30
bool printDependencies()
Definition uic.cpp:36
bool isButton(const QString &className) const
Definition uic.cpp:292
~Uic()
QString pixmapFunction() const
Definition uic.h:47
QTextStream & output()
Definition uic.h:41
bool write(QIODevice *in)
Definition uic.cpp:191
const DatabaseInfo * databaseInfo() const
Definition uic.h:53
const CustomWidgetsInfo * customWidgetsInfo() const
Definition uic.h:56
bool write(DomUI *ui)
Definition uic.cpp:220
bool isMenu(const QString &className) const
Definition uic.cpp:314
void setPixmapFunction(const QString &f)
Definition uic.h:50
bool isContainer(const QString &className) const
Definition uic.cpp:302
const Option & option() const
Definition uic.h:44
Driver * driver() const
Definition uic.h:38
Language
Definition language.h:12
void setLanguage(Language)
Definition language.cpp:20
static QString pythonRoot(const QString &pythonPath, const QString &uiFileIn)
Definition main.cpp:25
static const char pythonPathVar[]
Definition main.cpp:22
int runUic(int argc, char *argv[])
Definition main.cpp:52
int main(int argc, char *argv[])
[ctor_close]
unsigned int headerProtection
Definition option.h:20
unsigned int rcPrefix
Definition option.h:32
unsigned int forceMemberFnPtrConnectionSyntax
Definition option.h:29
unsigned int forceStringConnectionSyntax
Definition option.h:30
unsigned int dependencies
Definition option.h:25
PythonResourceImport
Definition option.h:14
PythonResourceImport pythonResourceImport
Definition option.h:45
virtual void acceptAction(DomAction *action)
virtual void acceptLayoutDefault(DomLayoutDefault *layoutDefault)
virtual void acceptDate(DomDate *date)
virtual void acceptActionGroup(DomActionGroup *actionGroup)
virtual void acceptLayoutFunction(DomLayoutFunction *layoutFunction)
virtual void acceptButtonGroup(const DomButtonGroup *buttonGroup)
QList< DomWidget * > DomWidgets
Definition treewalker.h:82
virtual void acceptConnection(DomConnection *connection)
virtual void acceptRect(DomRect *rect)
virtual void acceptProperty(DomProperty *property)
virtual void acceptLayoutItem(DomLayoutItem *layoutItem)
virtual void acceptIncludes(DomIncludes *includes)
virtual void acceptFont(DomFont *font)
virtual void acceptDateTime(DomDateTime *dateTime)
virtual void acceptInclude(DomInclude *incl)
virtual void acceptSpacer(DomSpacer *spacer)
virtual void acceptCustomWidgets(DomCustomWidgets *customWidgets)
virtual void acceptCustomWidget(DomCustomWidget *customWidget)
virtual void acceptColor(DomColor *color)
virtual void acceptColorGroup(DomColorGroup *colorGroup)
virtual void acceptTabStops(DomTabStops *tabStops)
virtual void acceptConnectionHint(DomConnectionHint *connectionHint)
virtual void acceptPalette(DomPalette *palette)
virtual ~TreeWalker()=default
virtual void acceptSize(DomSize *size)
virtual void acceptActionRef(DomActionRef *actionRef)
virtual void acceptPoint(DomPoint *point)
virtual void acceptTime(DomTime *time)
virtual void acceptSizePolicy(DomSizePolicy *sizePolicy)
virtual void acceptWidget(DomWidget *widget)
virtual void acceptConnectionHints(DomConnectionHints *connectionHints)
virtual void acceptUI(DomUI *ui)
Definition treewalker.cpp:9
virtual void acceptButtonGroups(const DomButtonGroups *buttonGroups)
virtual void acceptConnections(DomConnections *connections)
virtual void acceptLayout(DomLayout *layout)