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 <marc.mutz@qt.io>
(cherry picked from commit fb81373313c4d1834437351aeb5df4a44303b93c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Øystein Heskestad 2024-02-20 15:44:09 +01:00 committed by Qt Cherry-pick Bot
parent 3d18b218dd
commit 8dd7aba7fd
2 changed files with 11 additions and 7 deletions

View File

@ -15,6 +15,9 @@
QT_BEGIN_NAMESPACE
constexpr quint32 QDataStream::NullCode;
constexpr quint32 QDataStream::ExtendedSize;
/*!
\class QDataStream
\inmodule QtCore

View File

@ -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;