From 729c0960b84183bcf9576f974cb5e3b3c3fdc6ef Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 12 Aug 2024 15:18:44 -0700 Subject: [PATCH] QFlags: befriend the QDataStream serialization operators We can't define them as hidden friends in qflags.h because QDataStream is only forward-declared at this point. But we can simplify their implementation in qdatastream.h. This is also done in preparation for the 64-bit QFlags. Change-Id: Ia8c5859422f5737a3539fffd9da284bc9a0f5240 Reviewed-by: Fabian Kosmale --- src/corelib/global/qflags.h | 2 ++ src/corelib/serialization/qdatastream.h | 9 ++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index e048e73a369..c3174085537 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -172,6 +172,8 @@ private: return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end))); } + template friend QDataStream &operator<<(QDataStream &, QFlags); + template friend QDataStream &operator>>(QDataStream &, QFlags &); Int i; }; diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 32b0f96ab89..2a5622f6030 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -516,16 +516,11 @@ inline QDataStream &QDataStream::operator<<(quint64 i) template inline QDataStream &operator<<(QDataStream &s, QFlags e) -{ return s << typename QFlags::Int(e); } +{ return s << e.i; } template inline QDataStream &operator>>(QDataStream &s, QFlags &e) -{ - typename QFlags::Int i; - s >> i; - e = QFlag(i); - return s; -} +{ return s >> e.i; } template typename std::enable_if_t::value, QDataStream &>