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 <fabian.kosmale@qt.io>
This commit is contained in:
parent
0c707c6ebe
commit
729c0960b8
@ -172,6 +172,8 @@ private:
|
||||
return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end)));
|
||||
}
|
||||
|
||||
template <typename E> friend QDataStream &operator<<(QDataStream &, QFlags<E>);
|
||||
template <typename E> friend QDataStream &operator>>(QDataStream &, QFlags<E> &);
|
||||
Int i;
|
||||
};
|
||||
|
||||
|
@ -516,16 +516,11 @@ inline QDataStream &QDataStream::operator<<(quint64 i)
|
||||
|
||||
template <typename Enum>
|
||||
inline QDataStream &operator<<(QDataStream &s, QFlags<Enum> e)
|
||||
{ return s << typename QFlags<Enum>::Int(e); }
|
||||
{ return s << e.i; }
|
||||
|
||||
template <typename Enum>
|
||||
inline QDataStream &operator>>(QDataStream &s, QFlags<Enum> &e)
|
||||
{
|
||||
typename QFlags<Enum>::Int i;
|
||||
s >> i;
|
||||
e = QFlag(i);
|
||||
return s;
|
||||
}
|
||||
{ return s >> e.i; }
|
||||
|
||||
template <typename T>
|
||||
typename std::enable_if_t<std::is_enum<T>::value, QDataStream &>
|
||||
|
Loading…
x
Reference in New Issue
Block a user