diff options
Diffstat (limited to 'src/corelib/serialization/qxmlstream.h')
-rw-r--r-- | src/corelib/serialization/qxmlstream.h | 167 |
1 files changed, 127 insertions, 40 deletions
diff --git a/src/corelib/serialization/qxmlstream.h b/src/corelib/serialization/qxmlstream.h index 366d357b37..8a12c6d611 100644 --- a/src/corelib/serialization/qxmlstream.h +++ b/src/corelib/serialization/qxmlstream.h @@ -6,8 +6,9 @@ #include <QtCore/qiodevice.h> -#ifndef QT_NO_XMLSTREAM +#if QT_CONFIG(xmlstream) +#include <QtCore/qcompare.h> #include <QtCore/qlist.h> #include <QtCore/qscopedpointer.h> #include <QtCore/qstring.h> @@ -58,13 +59,23 @@ public: } inline QStringView value() const { return m_value; } inline bool isDefault() const { return m_isDefault; } - inline bool operator==(const QXmlStreamAttribute &other) const { - return (value() == other.value() - && (namespaceUri().isNull() ? (qualifiedName() == other.qualifiedName()) - : (namespaceUri() == other.namespaceUri() && name() == other.name()))); - } +#if QT_CORE_REMOVED_SINCE(6, 8) + inline bool operator==(const QXmlStreamAttribute &other) const + { return comparesEqual(*this, other); } inline bool operator!=(const QXmlStreamAttribute &other) const - { return !operator==(other); } + { return !operator==(other); } +#endif + +private: + friend bool comparesEqual(const QXmlStreamAttribute &lhs, + const QXmlStreamAttribute &rhs) noexcept + { + return (lhs.value() == rhs.value() + && (lhs.namespaceUri().isNull() ? (lhs.qualifiedName() == rhs.qualifiedName()) + : (lhs.namespaceUri() == rhs.namespaceUri() + && lhs.name() == rhs.name()))); + } + Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamAttribute) }; Q_DECLARE_TYPEINFO(QXmlStreamAttribute, Q_RELOCATABLE_TYPE); @@ -75,25 +86,25 @@ class QXmlStreamAttributes : public QList<QXmlStreamAttribute> { public: inline QXmlStreamAttributes() {} +#if QT_CORE_REMOVED_SINCE(6, 6) Q_CORE_EXPORT QStringView value(const QString &namespaceUri, const QString &name) const; Q_CORE_EXPORT QStringView value(const QString &namespaceUri, QLatin1StringView name) const; Q_CORE_EXPORT QStringView value(QLatin1StringView namespaceUri, QLatin1StringView name) const; Q_CORE_EXPORT QStringView value(const QString &qualifiedName) const; Q_CORE_EXPORT QStringView value(QLatin1StringView qualifiedName) const; +#endif + Q_CORE_EXPORT QStringView value(QAnyStringView namespaceUri, QAnyStringView name) const noexcept; + Q_CORE_EXPORT QStringView value(QAnyStringView qualifiedName) const noexcept; + Q_CORE_EXPORT void append(const QString &namespaceUri, const QString &name, const QString &value); Q_CORE_EXPORT void append(const QString &qualifiedName, const QString &value); - inline bool hasAttribute(const QString &qualifiedName) const - { - return !value(qualifiedName).isNull(); - } - - inline bool hasAttribute(QLatin1StringView qualifiedName) const + bool hasAttribute(QAnyStringView qualifiedName) const { return !value(qualifiedName).isNull(); } - inline bool hasAttribute(const QString &namespaceUri, const QString &name) const + bool hasAttribute(QAnyStringView namespaceUri, QAnyStringView name) const { return !value(namespaceUri, name).isNull(); } @@ -111,11 +122,19 @@ public: inline QStringView prefix() const { return m_prefix; } inline QStringView namespaceUri() const { return m_namespaceUri; } - inline bool operator==(const QXmlStreamNamespaceDeclaration &other) const { - return (prefix() == other.prefix() && namespaceUri() == other.namespaceUri()); - } +#if QT_CORE_REMOVED_SINCE(6, 8) + inline bool operator==(const QXmlStreamNamespaceDeclaration &other) const + { return comparesEqual(*this, other); } inline bool operator!=(const QXmlStreamNamespaceDeclaration &other) const - { return !operator==(other); } + { return !operator==(other); } +#endif +private: + friend bool comparesEqual(const QXmlStreamNamespaceDeclaration &lhs, + const QXmlStreamNamespaceDeclaration &rhs) noexcept + { + return (lhs.prefix() == rhs.prefix() && lhs.namespaceUri() == rhs.namespaceUri()); + } + Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamNamespaceDeclaration) }; Q_DECLARE_TYPEINFO(QXmlStreamNamespaceDeclaration, Q_RELOCATABLE_TYPE); @@ -131,12 +150,20 @@ public: inline QStringView name() const { return m_name; } inline QStringView systemId() const { return m_systemId; } inline QStringView publicId() const { return m_publicId; } - inline bool operator==(const QXmlStreamNotationDeclaration &other) const { - return (name() == other.name() && systemId() == other.systemId() - && publicId() == other.publicId()); - } +#if QT_CORE_REMOVED_SINCE(6, 8) + inline bool operator==(const QXmlStreamNotationDeclaration &other) const + { return comparesEqual(*this, other); } inline bool operator!=(const QXmlStreamNotationDeclaration &other) const - { return !operator==(other); } + { return !operator==(other); } +#endif +private: + friend bool comparesEqual(const QXmlStreamNotationDeclaration &lhs, + const QXmlStreamNotationDeclaration &rhs) noexcept + { + return (lhs.name() == rhs.name() && lhs.systemId() == rhs.systemId() + && lhs.publicId() == rhs.publicId()); + } + Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamNotationDeclaration) }; Q_DECLARE_TYPEINFO(QXmlStreamNotationDeclaration, Q_RELOCATABLE_TYPE); @@ -154,15 +181,24 @@ public: inline QStringView systemId() const { return m_systemId; } inline QStringView publicId() const { return m_publicId; } inline QStringView value() const { return m_value; } - inline bool operator==(const QXmlStreamEntityDeclaration &other) const { - return (name() == other.name() - && notationName() == other.notationName() - && systemId() == other.systemId() - && publicId() == other.publicId() - && value() == other.value()); - } +#if QT_CORE_REMOVED_SINCE(6, 8) + inline bool operator==(const QXmlStreamEntityDeclaration &other) const + { return comparesEqual(*this, other); } inline bool operator!=(const QXmlStreamEntityDeclaration &other) const - { return !operator==(other); } + { return !operator==(other); } +#endif + +private: + friend bool comparesEqual(const QXmlStreamEntityDeclaration &lhs, + const QXmlStreamEntityDeclaration &rhs) noexcept + { + return (lhs.name() == rhs.name() + && lhs.notationName() == rhs.notationName() + && lhs.systemId() == rhs.systemId() + && lhs.publicId() == rhs.publicId() + && lhs.value() == rhs.value()); + } + Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamEntityDeclaration) }; Q_DECLARE_TYPEINFO(QXmlStreamEntityDeclaration, Q_RELOCATABLE_TYPE); @@ -170,14 +206,17 @@ typedef QList<QXmlStreamEntityDeclaration> QXmlStreamEntityDeclarations; class Q_CORE_EXPORT QXmlStreamEntityResolver { + Q_DISABLE_COPY_MOVE(QXmlStreamEntityResolver) public: + QXmlStreamEntityResolver() = default; virtual ~QXmlStreamEntityResolver(); virtual QString resolveEntity(const QString& publicId, const QString& systemId); virtual QString resolveUndeclaredEntity(const QString &name); }; -#ifndef QT_NO_XMLSTREAMREADER -class Q_CORE_EXPORT QXmlStreamReader { +#if QT_CONFIG(xmlstreamreader) +class Q_CORE_EXPORT QXmlStreamReader +{ QDOC_PROPERTY(bool namespaceProcessing READ namespaceProcessing WRITE setNamespaceProcessing) public: enum TokenType { @@ -197,16 +236,27 @@ public: QXmlStreamReader(); explicit QXmlStreamReader(QIODevice *device); +#if QT_CORE_REMOVED_SINCE(6, 5) explicit QXmlStreamReader(const QByteArray &data); explicit QXmlStreamReader(const QString &data); explicit QXmlStreamReader(const char * data); +#endif // QT_CORE_REMOVED_SINCE(6, 5) + Q_WEAK_OVERLOAD + explicit QXmlStreamReader(const QByteArray &data) + : QXmlStreamReader(data, PrivateConstructorTag{}) { } + explicit QXmlStreamReader(QAnyStringView data); ~QXmlStreamReader(); void setDevice(QIODevice *device); QIODevice *device() const; +#if QT_CORE_REMOVED_SINCE(6, 5) void addData(const QByteArray &data); void addData(const QString &data); void addData(const char *data); +#endif // QT_CORE_REMOVED_SINCE(6, 5) + Q_WEAK_OVERLOAD + void addData(const QByteArray &data) { addDataImpl(data); } + void addData(QAnyStringView data); void clear(); @@ -235,6 +285,7 @@ public: inline bool isProcessingInstruction() const { return tokenType() == ProcessingInstruction; } bool isStandaloneDocument() const; + bool hasStandaloneDeclaration() const; QStringView documentVersion() const; QStringView documentEncoding() const; @@ -293,14 +344,18 @@ public: QXmlStreamEntityResolver *entityResolver() const; private: + struct PrivateConstructorTag { }; + QXmlStreamReader(const QByteArray &data, PrivateConstructorTag); + void addDataImpl(const QByteArray &data); + Q_DISABLE_COPY(QXmlStreamReader) Q_DECLARE_PRIVATE(QXmlStreamReader) QScopedPointer<QXmlStreamReaderPrivate> d_ptr; }; -#endif // QT_NO_XMLSTREAMREADER +#endif // feature xmlstreamreader -#ifndef QT_NO_XMLSTREAMWRITER +#if QT_CONFIG(xmlstreamwriter) class QXmlStreamWriterPrivate; @@ -324,11 +379,17 @@ public: void setAutoFormattingIndent(int spacesOrTabs); int autoFormattingIndent() const; +#if QT_CORE_REMOVED_SINCE(6,5) void writeAttribute(const QString &qualifiedName, const QString &value); void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value); +#endif + void writeAttribute(QAnyStringView qualifiedName, QAnyStringView value); + void writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value); + void writeAttribute(const QXmlStreamAttribute& attribute); void writeAttributes(const QXmlStreamAttributes& attributes); +#if QT_CORE_REMOVED_SINCE(6,5) void writeCDATA(const QString &text); void writeCharacters(const QString &text); void writeComment(const QString &text); @@ -340,22 +401,47 @@ public: void writeTextElement(const QString &qualifiedName, const QString &text); void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text); +#endif + void writeCDATA(QAnyStringView text); + void writeCharacters(QAnyStringView text); + void writeComment(QAnyStringView text); + + void writeDTD(QAnyStringView dtd); + + void writeEmptyElement(QAnyStringView qualifiedName); + void writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name); + + void writeTextElement(QAnyStringView qualifiedName, QAnyStringView text); + void writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text); + void writeEndDocument(); void writeEndElement(); +#if QT_CORE_REMOVED_SINCE(6,5) void writeEntityReference(const QString &name); - void writeNamespace(const QString &namespaceUri, const QString &prefix = QString()); + void writeNamespace(const QString &namespaceUri, const QString &prefix); void writeDefaultNamespace(const QString &namespaceUri); - void writeProcessingInstruction(const QString &target, const QString &data = QString()); + void writeProcessingInstruction(const QString &target, const QString &data); +#endif + void writeEntityReference(QAnyStringView name); + void writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {}); + void writeDefaultNamespace(QAnyStringView namespaceUri); + void writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {}); void writeStartDocument(); +#if QT_CORE_REMOVED_SINCE(6,5) void writeStartDocument(const QString &version); void writeStartDocument(const QString &version, bool standalone); void writeStartElement(const QString &qualifiedName); void writeStartElement(const QString &namespaceUri, const QString &name); +#endif + void writeStartDocument(QAnyStringView version); + void writeStartDocument(QAnyStringView version, bool standalone); + void writeStartElement(QAnyStringView qualifiedName); + void writeStartElement(QAnyStringView namespaceUri, QAnyStringView name); -#ifndef QT_NO_XMLSTREAMREADER +#if QT_CONFIG(xmlstreamreader) void writeCurrentToken(const QXmlStreamReader &reader); #endif @@ -366,9 +452,10 @@ private: Q_DECLARE_PRIVATE(QXmlStreamWriter) QScopedPointer<QXmlStreamWriterPrivate> d_ptr; }; -#endif // QT_NO_XMLSTREAMWRITER +#endif // feature xmlstreamwriter QT_END_NAMESPACE -#endif // QT_NO_XMLSTREAM +#endif // feature xmlstream + #endif // QXMLSTREAM_H |