diff options
Diffstat (limited to 'src/corelib/serialization/qxmlstream_p.h')
-rw-r--r-- | src/corelib/serialization/qxmlstream_p.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h index b1fee62e04..a29ee656e9 100644 --- a/src/corelib/serialization/qxmlstream_p.h +++ b/src/corelib/serialization/qxmlstream_p.h @@ -21,6 +21,7 @@ #include <memory> +#include <optional> #ifndef QXMLSTREAM_P_H #define QXMLSTREAM_P_H @@ -38,7 +39,7 @@ public: constexpr XmlStringRef() = default; constexpr inline XmlStringRef(const QString *string, qsizetype pos, qsizetype length) - : m_string(string), m_pos(pos), m_size(length) + : m_string(string), m_pos(pos), m_size((Q_ASSERT(length >= 0), length)) { } XmlStringRef(const QString *string) @@ -296,6 +297,17 @@ public: QStringDecoder decoder; bool atEnd; + enum class XmlContext + { + Prolog, + Body, + }; + + XmlContext currentContext = XmlContext::Prolog; + bool foundDTD = false; + bool isValidToken(QXmlStreamReader::TokenType type); + void checkToken(); + /*! \sa setType() */ @@ -383,6 +395,7 @@ public: uint hasExternalDtdSubset : 1; uint lockEncoding : 1; uint namespaceProcessing : 1; + uint hasStandalone : 1; // TODO: expose in public API int resumeReduction; void resume(int rule); @@ -497,7 +510,7 @@ public: qsizetype fastScanLiteralContent(); qsizetype fastScanSpace(); qsizetype fastScanContentCharList(); - qsizetype fastScanName(qint16 *prefix = nullptr); + std::optional<qsizetype> fastScanName(Value *val = nullptr); inline qsizetype fastScanNMTOKEN(); @@ -506,6 +519,7 @@ public: void raiseError(QXmlStreamReader::Error error, const QString& message = QString()); void raiseWellFormedError(const QString &message); + void raiseNamePrefixTooLongError(); QXmlStreamEntityResolver *entityResolver; |