From 8dd7aba7fd2e6edeee33e97879f7e891028bad7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Heskestad?= Date: Tue, 20 Feb 2024 15:44:09 +0100 Subject: [PATCH] QDataStream: Turn QDataStreamSizes enum into static contexpr quint32 The special sizes NullCode and ExtendedSize does not need to be part of an enum. Turning them into constants removes the need for some casts. Task-number: QTBUG-119952 Change-Id: Ie7835c52f4642ab907b91f0eceac2ea7650e81da Reviewed-by: Marc Mutz (cherry picked from commit fb81373313c4d1834437351aeb5df4a44303b93c) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/serialization/qdatastream.cpp | 3 +++ src/corelib/serialization/qdatastream.h | 15 ++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp index 23af4149048..7deb5d861fd 100644 --- a/src/corelib/serialization/qdatastream.cpp +++ b/src/corelib/serialization/qdatastream.cpp @@ -15,6 +15,9 @@ QT_BEGIN_NAMESPACE +constexpr quint32 QDataStream::NullCode; +constexpr quint32 QDataStream::ExtendedSize; + /*! \class QDataStream \inmodule QtCore diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 2c9864b87ef..e77c230c20c 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -215,7 +215,8 @@ private: qint64 readBlock(char *data, qint64 len); static inline qint64 readQSizeType(QDataStream &s); static inline bool writeQSizeType(QDataStream &s, qint64 value); - enum class QDataStreamSizes : quint32 { NullCode = 0xffffffffu, ExtendedSize = 0xfffffffeu }; + static constexpr quint32 NullCode = 0xffffffffu; + static constexpr quint32 ExtendedSize = 0xfffffffeu; friend class QtPrivate::StreamStateSaver; Q_CORE_EXPORT friend QDataStream &operator<<(QDataStream &out, const QString &str); @@ -421,9 +422,9 @@ qint64 QDataStream::readQSizeType(QDataStream &s) { quint32 first; s >> first; - if (first == quint32(QDataStreamSizes::NullCode)) + if (first == NullCode) return -1; - if (first < quint32(QDataStreamSizes::ExtendedSize) || s.version() < QDataStream::Qt_6_7) + if (first < ExtendedSize || s.version() < QDataStream::Qt_6_7) return qint64(first); qint64 extendedLen; s >> extendedLen; @@ -432,12 +433,12 @@ qint64 QDataStream::readQSizeType(QDataStream &s) bool QDataStream::writeQSizeType(QDataStream &s, qint64 value) { - if (value < qint64(QDataStreamSizes::ExtendedSize)) { + if (value < qint64(ExtendedSize)) { s << quint32(value); } else if (s.version() >= QDataStream::Qt_6_7) { - s << quint32(QDataStreamSizes::ExtendedSize) << value; - } else if (value == qint64(QDataStreamSizes::ExtendedSize)) { - s << quint32(QDataStreamSizes::ExtendedSize); + s << ExtendedSize << value; + } else if (value == qint64(ExtendedSize)) { + s << ExtendedSize; } else { s.setStatus(QDataStream::SizeLimitExceeded); // value is too big for old format return false;