From a5f12c1ff97b5b5457deed4af97be40fa940a839 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 22 Jan 2025 11:14:51 -0800 Subject: [PATCH] Revert "QFlags: befriend the QDataStream serialization operators" This reverts commits 729c0960b84183bcf9576f974cb5e3b3c3fdc6ef and 348b680ae56e92f061424a10c4baa726cf7f15d2. Friendship is not required. The removal of the forward-declaration in qflags.h implied adding it where it had been required but not present. Change-Id: Ie17963f95bb5fa98fd75fffd7e6e5289b58f1960 Reviewed-by: Ivan Solovev Reviewed-by: Edward Welbourne (cherry picked from commit c7a069870ae80f47b32479dc1f8f7161a3238201) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/global/qflags.h | 5 ----- src/corelib/serialization/qdatastream.h | 9 +++++++-- src/corelib/text/qchar.h | 2 +- src/corelib/tools/qline.h | 1 + src/corelib/tools/qmargins.h | 1 + src/corelib/tools/qpoint.h | 1 + 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index 0ec7f4383f5..05225b98d23 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -12,7 +12,6 @@ QT_BEGIN_NAMESPACE -class QDataStream; template class QFlags; class QFlag @@ -206,10 +205,6 @@ private: return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end))); } -#ifndef QT_NO_DATASTREAM - template friend QDataStream &operator<<(QDataStream &, QFlags); - template friend QDataStream &operator>>(QDataStream &, QFlags &); -#endif using Base::i; }; diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 264454e9b6a..d03070b9195 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -517,11 +517,16 @@ inline QDataStream &QDataStream::operator<<(quint64 i) template inline QDataStream &operator<<(QDataStream &s, QFlags e) -{ return s << e.i; } +{ return s << e.toInt(); } template inline QDataStream &operator>>(QDataStream &s, QFlags &e) -{ return s >> e.i; } +{ + typename QFlags::Int i; + s >> i; + e = QFlags::fromInt(i); + return s; +} template typename std::enable_if_t::value, QDataStream &> diff --git a/src/corelib/text/qchar.h b/src/corelib/text/qchar.h index fb6f3136a59..c090da824ef 100644 --- a/src/corelib/text/qchar.h +++ b/src/corelib/text/qchar.h @@ -11,7 +11,7 @@ QT_BEGIN_NAMESPACE - +class QDataStream; class QString; struct QLatin1Char diff --git a/src/corelib/tools/qline.h b/src/corelib/tools/qline.h index 03dac30e162..b8523788cf2 100644 --- a/src/corelib/tools/qline.h +++ b/src/corelib/tools/qline.h @@ -8,6 +8,7 @@ QT_BEGIN_NAMESPACE +class QDataStream; class QLineF; /******************************************************************************* diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 3b29860d663..8782b147afc 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -14,6 +14,7 @@ QT_BEGIN_NAMESPACE QT_ENABLE_P0846_SEMANTICS_FOR(get) +class QDataStream; class QMarginsF; /***************************************************************************** diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index 50b4c864be8..d9a0fa53235 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -19,6 +19,7 @@ QT_BEGIN_NAMESPACE QT_ENABLE_P0846_SEMANTICS_FOR(get) +class QDataStream; class QPointF; class QPoint