diff options
author | Karsten Heimrich <karsten.heimrich@qt.io> | 2020-08-12 11:58:54 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@qt.io> | 2020-08-19 19:48:03 +0200 |
commit | a8028a02df32355f4df4c036dbb82e9f8e8d527f (patch) | |
tree | ca5ae77f5de57a7828a526d85e702e053b63e727 /src/corelib | |
parent | a2cec17407b83aed23b01065f4e10d32008552e1 (diff) |
Port the QXmlStream API from QStringRef to QStringView
This gives some source incompatibilities, most of them can be
handled by using auto instead of QStringRef explicitly.
[ChangeLog][Important API changes] QXmlStream now uses QStringView
insteead of QStringRef in it's API. Using auto forvariables returning
a QStringRef in Qt 5 should lead to code that can be used against both
Qt versions.
Fixes: QTBUG-84317
Change-Id: I6df3a9507276f5d16d044a6bdbe0e4810cf99440
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/mimetypes/qmimeprovider.cpp | 4 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetypeparser.cpp | 16 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetypeparser_p.h | 2 | ||||
-rw-r--r-- | src/corelib/serialization/qxmlstream.cpp | 94 | ||||
-rw-r--r-- | src/corelib/serialization/qxmlstream.h | 69 |
5 files changed, 91 insertions, 94 deletions
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index 47b5e42167..6766a1bbec 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -517,14 +517,14 @@ void QMimeBinaryProvider::loadMimeTypePrivate(QMimeTypePrivate &data) if (xml.name() != QLatin1String("mime-type")) { continue; } - const QStringRef name = xml.attributes().value(QLatin1String("type")); + const auto name = xml.attributes().value(QLatin1String("type")); if (name.isEmpty()) continue; if (name.compare(data.name, Qt::CaseInsensitive)) qWarning() << "Got name" << name << "in file" << file << "expected" << data.name; while (xml.readNextStartElement()) { - const QStringRef tag = xml.name(); + const auto tag = xml.name(); if (tag == QLatin1String("comment")) { QString lang = xml.attributes().value(QLatin1String("xml:lang")).toString(); const QString text = xml.readElementText(); diff --git a/src/corelib/mimetypes/qmimetypeparser.cpp b/src/corelib/mimetypes/qmimetypeparser.cpp index dc1c444c56..aa5427b16a 100644 --- a/src/corelib/mimetypes/qmimetypeparser.cpp +++ b/src/corelib/mimetypes/qmimetypeparser.cpp @@ -107,7 +107,7 @@ static const char matchMaskAttributeC[] = "mask"; Overwrite to process the sequence of parsed data */ -QMimeTypeParserBase::ParseState QMimeTypeParserBase::nextState(ParseState currentState, const QStringRef &startElement) +QMimeTypeParserBase::ParseState QMimeTypeParserBase::nextState(ParseState currentState, QStringView startElement) { switch (currentState) { case ParseBeginning: @@ -174,7 +174,7 @@ struct CreateMagicMatchRuleResult { QString errorMessage; // must be first QMimeMagicRule rule; - CreateMagicMatchRuleResult(const QStringRef &type, const QStringRef &value, const QStringRef &offsets, const QStringRef &mask) + CreateMagicMatchRuleResult(QStringView type, QStringView value, QStringView offsets, QStringView mask) : errorMessage(), rule(type.toString(), value.toUtf8(), offsets.toString(), mask.toLatin1(), &errorMessage) { @@ -183,10 +183,10 @@ struct CreateMagicMatchRuleResult { static CreateMagicMatchRuleResult createMagicMatchRule(const QXmlStreamAttributes &atts) { - const QStringRef type = atts.value(QLatin1String(matchTypeAttributeC)); - const QStringRef value = atts.value(QLatin1String(matchValueAttributeC)); - const QStringRef offsets = atts.value(QLatin1String(matchOffsetAttributeC)); - const QStringRef mask = atts.value(QLatin1String(matchMaskAttributeC)); + const auto type = atts.value(QLatin1String(matchTypeAttributeC)); + const auto value = atts.value(QLatin1String(matchValueAttributeC)); + const auto offsets = atts.value(QLatin1String(matchOffsetAttributeC)); + const auto mask = atts.value(QLatin1String(matchMaskAttributeC)); return CreateMagicMatchRuleResult(type, value, offsets, mask); } #endif @@ -265,7 +265,7 @@ bool QMimeTypeParserBase::parse(QIODevice *dev, const QString &fileName, QString break; case ParseMagic: { priority = 50; - const QStringRef priorityS = atts.value(QLatin1String(priorityAttributeC)); + const auto priorityS = atts.value(QLatin1String(priorityAttributeC)); if (!priorityS.isEmpty()) { if (!parseNumber(priorityS, &priority, errorMessage)) return false; @@ -301,7 +301,7 @@ bool QMimeTypeParserBase::parse(QIODevice *dev, const QString &fileName, QString // continue switch QXmlStreamReader::Token... case QXmlStreamReader::EndElement: // Finished element { - const QStringRef elementName = reader.name(); + const auto elementName = reader.name(); if (elementName == QLatin1String(mimeTypeTagC)) { if (!process(QMimeType(data), errorMessage)) return false; diff --git a/src/corelib/mimetypes/qmimetypeparser_p.h b/src/corelib/mimetypes/qmimetypeparser_p.h index dbd3415d77..6f1869e399 100644 --- a/src/corelib/mimetypes/qmimetypeparser_p.h +++ b/src/corelib/mimetypes/qmimetypeparser_p.h @@ -98,7 +98,7 @@ private: ParseError }; - static ParseState nextState(ParseState currentState, const QStringRef &startElement); + static ParseState nextState(ParseState currentState, QStringView startElement); }; diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp index ba6e3059df..9963fa60ec 100644 --- a/src/corelib/serialization/qxmlstream.cpp +++ b/src/corelib/serialization/qxmlstream.cpp @@ -384,13 +384,9 @@ QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const token at the time it is reported. In addition, QXmlStreamReader avoids the many small string allocations that it normally takes to map an XML document to a convenient and Qt-ish API. It does this by - reporting all string data as QStringRef rather than real QString - objects. QStringRef is a thin wrapper around QString substrings that - provides a subset of the QString API without the memory allocation - and reference-counting overhead. Calling - \l{QStringRef::toString()}{toString()} on any of those objects - returns an equivalent real QString object. - + reporting all string data as QStringView rather than real QString + objects. Calling \l{QStringView::toString()}{toString()} on any of + those objects returns an equivalent real QString object. */ @@ -1928,7 +1924,7 @@ qint64 QXmlStreamReader::characterOffset() const /*! Returns the text of \l Characters, \l Comment, \l DTD, or EntityReference. */ -QStringRef QXmlStreamReader::text() const +QStringView QXmlStreamReader::text() const { Q_D(const QXmlStreamReader); return d->text; @@ -1971,12 +1967,12 @@ QXmlStreamEntityDeclarations QXmlStreamReader::entityDeclarations() const name. Otherwise an empty string is returned. */ -QStringRef QXmlStreamReader::dtdName() const +QStringView QXmlStreamReader::dtdName() const { Q_D(const QXmlStreamReader); if (d->type == QXmlStreamReader::DTD) return d->dtdName; - return QStringRef(); + return QStringView(); } /*! @@ -1986,12 +1982,12 @@ QStringRef QXmlStreamReader::dtdName() const public identifier. Otherwise an empty string is returned. */ -QStringRef QXmlStreamReader::dtdPublicId() const +QStringView QXmlStreamReader::dtdPublicId() const { Q_D(const QXmlStreamReader); if (d->type == QXmlStreamReader::DTD) return d->dtdPublicId; - return QStringRef(); + return QStringView(); } /*! @@ -2001,12 +1997,12 @@ QStringRef QXmlStreamReader::dtdPublicId() const system identifier. Otherwise an empty string is returned. */ -QStringRef QXmlStreamReader::dtdSystemId() const +QStringView QXmlStreamReader::dtdSystemId() const { Q_D(const QXmlStreamReader); if (d->type == QXmlStreamReader::DTD) return d->dtdSystemId; - return QStringRef(); + return QStringView(); } /*! @@ -2187,7 +2183,7 @@ QXmlStreamReader::Error QXmlStreamReader::error() const /*! Returns the target of a ProcessingInstruction. */ -QStringRef QXmlStreamReader::processingInstructionTarget() const +QStringView QXmlStreamReader::processingInstructionTarget() const { Q_D(const QXmlStreamReader); return d->processingInstructionTarget; @@ -2196,7 +2192,7 @@ QStringRef QXmlStreamReader::processingInstructionTarget() const /*! Returns the data of a ProcessingInstruction. */ -QStringRef QXmlStreamReader::processingInstructionData() const +QStringView QXmlStreamReader::processingInstructionData() const { Q_D(const QXmlStreamReader); return d->processingInstructionData; @@ -2209,7 +2205,7 @@ QStringRef QXmlStreamReader::processingInstructionData() const \sa namespaceUri(), qualifiedName() */ -QStringRef QXmlStreamReader::name() const +QStringView QXmlStreamReader::name() const { Q_D(const QXmlStreamReader); return d->name; @@ -2220,7 +2216,7 @@ QStringRef QXmlStreamReader::name() const \sa name(), qualifiedName() */ -QStringRef QXmlStreamReader::namespaceUri() const +QStringView QXmlStreamReader::namespaceUri() const { Q_D(const QXmlStreamReader); return d->namespaceUri; @@ -2238,7 +2234,7 @@ QStringRef QXmlStreamReader::namespaceUri() const \sa name(), prefix(), namespaceUri() */ -QStringRef QXmlStreamReader::qualifiedName() const +QStringView QXmlStreamReader::qualifiedName() const { Q_D(const QXmlStreamReader); return d->qualifiedName; @@ -2253,7 +2249,7 @@ QStringRef QXmlStreamReader::qualifiedName() const \sa name(), qualifiedName() */ -QStringRef QXmlStreamReader::prefix() const +QStringView QXmlStreamReader::prefix() const { Q_D(const QXmlStreamReader); return d->prefix; @@ -2317,15 +2313,15 @@ QXmlStreamAttribute::QXmlStreamAttribute(const QString &qualifiedName, const QSt m_value = QXmlStreamStringRef(QStringRef(&value)); } -/*! \fn QStringRef QXmlStreamAttribute::namespaceUri() const +/*! \fn QStringView QXmlStreamAttribute::namespaceUri() const Returns the attribute's resolved namespaceUri, or an empty string reference if the attribute does not have a defined namespace. */ -/*! \fn QStringRef QXmlStreamAttribute::name() const +/*! \fn QStringView QXmlStreamAttribute::name() const Returns the attribute's local name. */ -/*! \fn QStringRef QXmlStreamAttribute::qualifiedName() const +/*! \fn QStringView QXmlStreamAttribute::qualifiedName() const Returns the attribute's qualified name. A qualified name is the raw name of an attribute in the XML @@ -2337,7 +2333,7 @@ QXmlStreamAttribute::QXmlStreamAttribute(const QString &qualifiedName, const QSt the attribute's local name(). */ /*! - \fn QStringRef QXmlStreamAttribute::prefix() const + \fn QStringView QXmlStreamAttribute::prefix() const \since 4.4 Returns the attribute's namespace prefix. @@ -2345,7 +2341,7 @@ QXmlStreamAttribute::QXmlStreamAttribute(const QString &qualifiedName, const QSt */ -/*! \fn QStringRef QXmlStreamAttribute::value() const +/*! \fn QStringView QXmlStreamAttribute::value() const Returns the attribute's value. */ @@ -2421,15 +2417,15 @@ QXmlStreamNotationDeclaration::QXmlStreamNotationDeclaration() { } -/*! \fn QStringRef QXmlStreamNotationDeclaration::name() const +/*! \fn QStringView QXmlStreamNotationDeclaration::name() const Returns the notation name. */ -/*! \fn QStringRef QXmlStreamNotationDeclaration::systemId() const +/*! \fn QStringView QXmlStreamNotationDeclaration::systemId() const Returns the system identifier. */ -/*! \fn QStringRef QXmlStreamNotationDeclaration::publicId() const +/*! \fn QStringView QXmlStreamNotationDeclaration::publicId() const Returns the public identifier. */ @@ -2492,11 +2488,11 @@ QXmlStreamNamespaceDeclaration::QXmlStreamNamespaceDeclaration(const QString &pr m_namespaceUri = namespaceUri; } -/*! \fn QStringRef QXmlStreamNamespaceDeclaration::prefix() const +/*! \fn QStringView QXmlStreamNamespaceDeclaration::prefix() const Returns the prefix. */ -/*! \fn QStringRef QXmlStreamNamespaceDeclaration::namespaceUri() const +/*! \fn QStringView QXmlStreamNamespaceDeclaration::namespaceUri() const Returns the namespaceUri. */ @@ -2545,23 +2541,23 @@ QXmlStreamEntityDeclaration::QXmlStreamEntityDeclaration() This function is very fast and never fails. */ -/*! \fn QStringRef QXmlStreamEntityDeclaration::name() const +/*! \fn QStringView QXmlStreamEntityDeclaration::name() const Returns the entity name. */ -/*! \fn QStringRef QXmlStreamEntityDeclaration::notationName() const +/*! \fn QStringView QXmlStreamEntityDeclaration::notationName() const Returns the notation name. */ -/*! \fn QStringRef QXmlStreamEntityDeclaration::systemId() const +/*! \fn QStringView QXmlStreamEntityDeclaration::systemId() const Returns the system identifier. */ -/*! \fn QStringRef QXmlStreamEntityDeclaration::publicId() const +/*! \fn QStringView QXmlStreamEntityDeclaration::publicId() const Returns the public identifier. */ -/*! \fn QStringRef QXmlStreamEntityDeclaration::value() const +/*! \fn QStringView QXmlStreamEntityDeclaration::value() const Returns the entity's value. */ @@ -2581,13 +2577,13 @@ Returns the entity's value. described with \a namespaceUri, or an empty string reference if the attribute is not defined. The \a namespaceUri can be empty. */ -QStringRef QXmlStreamAttributes::value(const QString &namespaceUri, const QString &name) const +QStringView QXmlStreamAttributes::value(const QString &namespaceUri, const QString &name) const { for (const QXmlStreamAttribute &attribute : *this) { if (attribute.name() == name && attribute.namespaceUri() == namespaceUri) return attribute.value(); } - return QStringRef(); + return QStringView(); } /*!\overload @@ -2595,13 +2591,13 @@ QStringRef QXmlStreamAttributes::value(const QString &namespaceUri, const QStrin described with \a namespaceUri, or an empty string reference if the attribute is not defined. The \a namespaceUri can be empty. */ -QStringRef QXmlStreamAttributes::value(const QString &namespaceUri, QLatin1String name) const +QStringView QXmlStreamAttributes::value(const QString &namespaceUri, QLatin1String name) const { for (const QXmlStreamAttribute &attribute : *this) { if (attribute.name() == name && attribute.namespaceUri() == namespaceUri) return attribute.value(); } - return QStringRef(); + return QStringView(); } /*!\overload @@ -2609,13 +2605,13 @@ QStringRef QXmlStreamAttributes::value(const QString &namespaceUri, QLatin1Strin described with \a namespaceUri, or an empty string reference if the attribute is not defined. The \a namespaceUri can be empty. */ -QStringRef QXmlStreamAttributes::value(QLatin1String namespaceUri, QLatin1String name) const +QStringView QXmlStreamAttributes::value(QLatin1String namespaceUri, QLatin1String name) const { for (const QXmlStreamAttribute &attribute : *this) { if (attribute.name() == name && attribute.namespaceUri() == namespaceUri) return attribute.value(); } - return QStringRef(); + return QStringView(); } /*!\overload @@ -2630,13 +2626,13 @@ QStringRef QXmlStreamAttributes::value(QLatin1String namespaceUri, QLatin1String use qualified names, but a resolved namespaceUri and the attribute's local name. */ -QStringRef QXmlStreamAttributes::value(const QString &qualifiedName) const +QStringView QXmlStreamAttributes::value(const QString &qualifiedName) const { for (const QXmlStreamAttribute &attribute : *this) { if (attribute.qualifiedName() == qualifiedName) return attribute.value(); } - return QStringRef(); + return QStringView(); } /*!\overload @@ -2651,13 +2647,13 @@ QStringRef QXmlStreamAttributes::value(const QString &qualifiedName) const use qualified names, but a resolved namespaceUri and the attribute's local name. */ -QStringRef QXmlStreamAttributes::value(QLatin1String qualifiedName) const +QStringView QXmlStreamAttributes::value(QLatin1String qualifiedName) const { for (const QXmlStreamAttribute &attribute : *this) { if (attribute.qualifiedName() == qualifiedName) return attribute.value(); } - return QStringRef(); + return QStringView(); } /*!Appends a new attribute with \a name in the namespace @@ -2754,12 +2750,12 @@ bool QXmlStreamReader::isStandaloneDocument() const version string as specified in the XML declaration. Otherwise an empty string is returned. */ -QStringRef QXmlStreamReader::documentVersion() const +QStringView QXmlStreamReader::documentVersion() const { Q_D(const QXmlStreamReader); if (d->type == QXmlStreamReader::StartDocument) return d->documentVersion; - return QStringRef(); + return QStringView(); } /*! @@ -2769,12 +2765,12 @@ QStringRef QXmlStreamReader::documentVersion() const encoding string as specified in the XML declaration. Otherwise an empty string is returned. */ -QStringRef QXmlStreamReader::documentEncoding() const +QStringView QXmlStreamReader::documentEncoding() const { Q_D(const QXmlStreamReader); if (d->type == QXmlStreamReader::StartDocument) return d->documentEncoding; - return QStringRef(); + return QStringView(); } #endif // QT_NO_XMLSTREAMREADER diff --git a/src/corelib/serialization/qxmlstream.h b/src/corelib/serialization/qxmlstream.h index 31c605c981..ba495b64f0 100644 --- a/src/corelib/serialization/qxmlstream.h +++ b/src/corelib/serialization/qxmlstream.h @@ -70,9 +70,11 @@ public: inline void clear() { m_string.clear(); m_position = m_size = 0; } inline operator QStringRef() const { return QStringRef(&m_string, m_position, m_size); } + inline operator QStringView() const { return QStringView(m_string.constData() + m_position, m_size); } inline const QString *string() const { return &m_string; } inline int position() const { return m_position; } inline int size() const { return m_size; } + inline QString toString() const { return QString(m_string.constData() + m_position, m_size); } }; Q_DECLARE_SHARED(QXmlStreamStringRef) @@ -89,15 +91,14 @@ public: QXmlStreamAttribute(const QString &qualifiedName, const QString &value); QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value); - inline QStringRef namespaceUri() const { return m_namespaceUri; } - inline QStringRef name() const { return m_name; } - inline QStringRef qualifiedName() const { return m_qualifiedName; } - inline QStringRef prefix() const { - return QStringRef(m_qualifiedName.string(), - m_qualifiedName.position(), + inline QStringView namespaceUri() const { return m_namespaceUri; } + inline QStringView name() const { return m_name; } + inline QStringView qualifiedName() const { return m_qualifiedName; } + inline QStringView prefix() const { + return QStringView(m_qualifiedName.string()->constData() + m_qualifiedName.position(), qMax(0, m_qualifiedName.size() - m_name.size() - 1)); } - inline QStringRef value() const { return m_value; } + 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() @@ -116,11 +117,11 @@ class QXmlStreamAttributes : public QList<QXmlStreamAttribute> { public: inline QXmlStreamAttributes() {} - Q_CORE_EXPORT QStringRef value(const QString &namespaceUri, const QString &name) const; - Q_CORE_EXPORT QStringRef value(const QString &namespaceUri, QLatin1String name) const; - Q_CORE_EXPORT QStringRef value(QLatin1String namespaceUri, QLatin1String name) const; - Q_CORE_EXPORT QStringRef value(const QString &qualifiedName) const; - Q_CORE_EXPORT QStringRef value(QLatin1String qualifiedName) const; + Q_CORE_EXPORT QStringView value(const QString &namespaceUri, const QString &name) const; + Q_CORE_EXPORT QStringView value(const QString &namespaceUri, QLatin1String name) const; + Q_CORE_EXPORT QStringView value(QLatin1String namespaceUri, QLatin1String name) const; + Q_CORE_EXPORT QStringView value(const QString &qualifiedName) const; + Q_CORE_EXPORT QStringView value(QLatin1String qualifiedName) const; 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); @@ -150,8 +151,8 @@ public: QXmlStreamNamespaceDeclaration(); QXmlStreamNamespaceDeclaration(const QString &prefix, const QString &namespaceUri); - inline QStringRef prefix() const { return m_prefix; } - inline QStringRef namespaceUri() const { return m_namespaceUri; } + 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()); } @@ -169,9 +170,9 @@ class Q_CORE_EXPORT QXmlStreamNotationDeclaration { public: QXmlStreamNotationDeclaration(); - inline QStringRef name() const { return m_name; } - inline QStringRef systemId() const { return m_systemId; } - inline QStringRef publicId() const { return m_publicId; } + 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()); @@ -190,11 +191,11 @@ class Q_CORE_EXPORT QXmlStreamEntityDeclaration { public: QXmlStreamEntityDeclaration(); - inline QStringRef name() const { return m_name; } - inline QStringRef notationName() const { return m_notationName; } - inline QStringRef systemId() const { return m_systemId; } - inline QStringRef publicId() const { return m_publicId; } - inline QStringRef value() const { return m_value; } + inline QStringView name() const { return m_name; } + inline QStringView notationName() const { return m_notationName; } + 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() @@ -276,8 +277,8 @@ public: inline bool isProcessingInstruction() const { return tokenType() == ProcessingInstruction; } bool isStandaloneDocument() const; - QStringRef documentVersion() const; - QStringRef documentEncoding() const; + QStringView documentVersion() const; + QStringView documentEncoding() const; qint64 lineNumber() const; qint64 columnNumber() const; @@ -292,24 +293,24 @@ public: }; QString readElementText(ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement); - QStringRef name() const; - QStringRef namespaceUri() const; - QStringRef qualifiedName() const; - QStringRef prefix() const; + QStringView name() const; + QStringView namespaceUri() const; + QStringView qualifiedName() const; + QStringView prefix() const; - QStringRef processingInstructionTarget() const; - QStringRef processingInstructionData() const; + QStringView processingInstructionTarget() const; + QStringView processingInstructionData() const; - QStringRef text() const; + QStringView text() const; QXmlStreamNamespaceDeclarations namespaceDeclarations() const; void addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaraction); void addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclaractions); QXmlStreamNotationDeclarations notationDeclarations() const; QXmlStreamEntityDeclarations entityDeclarations() const; - QStringRef dtdName() const; - QStringRef dtdPublicId() const; - QStringRef dtdSystemId() const; + QStringView dtdName() const; + QStringView dtdPublicId() const; + QStringView dtdSystemId() const; int entityExpansionLimit() const; void setEntityExpansionLimit(int limit); |