From 7314c53d31662ba2e13154f757ecc463d79bc5a8 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Sep 2016 14:12:21 -0700 Subject: Add QDataStream streaming operator for QFlags We're already using it, for example in qpaintengine_pic.cpp:502: d->s << p << ti.text() << fnt << ti.renderFlags() << [...] ^ [ChangeLog][QtCore][QFlags] Added operator<< and operator>> for streaming QFlags into and out of QDataStreams. Change-Id: I33dc971f005a4848bb8ffffd1478e79d6102d1bc Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/global/qflags.h | 4 ++++ src/corelib/io/qdatastream.h | 8 ++++++++ 2 files changed, 12 insertions(+) (limited to 'src/corelib') diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index 93dbedc930..feeb488acd 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -48,6 +48,8 @@ QT_BEGIN_NAMESPACE +class QDataStream; + class QFlag { int i; @@ -95,6 +97,8 @@ class QFlags struct Private; typedef int (Private::*Zero); + template friend QDataStream &operator>>(QDataStream &, QFlags &); + template friend QDataStream &operator<<(QDataStream &, QFlags); public: #if defined(Q_CC_MSVC) || defined(Q_QDOC) // see above for MSVC diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h index ecd55f71ae..db1bbfbd63 100644 --- a/src/corelib/io/qdatastream.h +++ b/src/corelib/io/qdatastream.h @@ -359,6 +359,14 @@ inline QDataStream &QDataStream::operator<<(quint32 i) inline QDataStream &QDataStream::operator<<(quint64 i) { return *this << qint64(i); } +template +inline QDataStream &operator<<(QDataStream &s, QFlags e) +{ return s << e.i; } + +template +inline QDataStream &operator>>(QDataStream &s, QFlags &e) +{ return s >> e.i; } + template inline QDataStream &operator>>(QDataStream &s, QList &l) { -- cgit v1.2.3