From 31f3facac32913074fe91b8f77e72be7c2f55a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Mon, 10 Sep 2018 08:47:32 +0200 Subject: [PATCH] Implement QDataStream operator for QCborSimpleValue That allows us to remove custom handling in QMetaType. Change-Id: Ic09fb96e1a05c6897803811d70aebbc6ea6e4f2e Reviewed-by: Thiago Macieira --- .../serialization/convert/cborconverter.cpp | 13 ------------- src/corelib/kernel/qmetatype.cpp | 14 -------------- src/corelib/serialization/qcborcommon.h | 5 +++++ src/corelib/serialization/qcborstream.cpp | 16 ++++++++++++++++ 4 files changed, 21 insertions(+), 27 deletions(-) diff --git a/examples/corelib/serialization/convert/cborconverter.cpp b/examples/corelib/serialization/convert/cborconverter.cpp index 41724c935e7..f906c81062b 100644 --- a/examples/corelib/serialization/convert/cborconverter.cpp +++ b/examples/corelib/serialization/convert/cborconverter.cpp @@ -84,19 +84,6 @@ static const char diagnosticHelp[] = QT_BEGIN_NAMESPACE -QDataStream &operator<<(QDataStream &ds, QCborSimpleType st) -{ - return ds << quint8(st); -} - -QDataStream &operator>>(QDataStream &ds, QCborSimpleType &st) -{ - quint8 v; - ds >> v; - st = QCborSimpleType(v); - return ds; -} - QDataStream &operator<<(QDataStream &ds, QCborTag tag) { return ds << quint64(tag); diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 3f47f03f42a..1ba5f3979ca 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -1485,12 +1485,6 @@ public: stream << qulonglong(*data); return true; } - bool delegate(const QCborSimpleType *data) - { - // TODO just define a normal QDataStream operator - stream << quint8(*data); - return true; - } bool delegate(const QMetaTypeSwitcher::NotBuiltinType *data) { const QVector * const ct = customTypes(); @@ -1542,14 +1536,6 @@ public: *const_cast(data) = l; return true; } - bool delegate(const QCborSimpleType *data) - { - // TODO just define a normal QDataStream operator - quint8 l; - stream >> l; - *const_cast(data) = QCborSimpleType(l); - return true; - } bool delegate(const QMetaTypeSwitcher::NotBuiltinType *data) { const QVector * const ct = customTypes(); diff --git a/src/corelib/serialization/qcborcommon.h b/src/corelib/serialization/qcborcommon.h index 9661cd70bba..0147f85de89 100644 --- a/src/corelib/serialization/qcborcommon.h +++ b/src/corelib/serialization/qcborcommon.h @@ -133,6 +133,11 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, QCborKnownTags tg); Q_CORE_EXPORT QDebug operator<<(QDebug, QCborTag tg); #endif +#if !defined(QT_NO_DEBUG_STREAM) +QDataStream &operator<<(QDataStream &ds, QCborSimpleType st); +QDataStream &operator>>(QDataStream &ds, QCborSimpleType &st); +#endif + QT_END_NAMESPACE Q_DECLARE_METATYPE(QCborTag) diff --git a/src/corelib/serialization/qcborstream.cpp b/src/corelib/serialization/qcborstream.cpp index aed286a11f0..38b809158aa 100644 --- a/src/corelib/serialization/qcborstream.cpp +++ b/src/corelib/serialization/qcborstream.cpp @@ -44,6 +44,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -170,6 +171,21 @@ Q_CORE_EXPORT const char *qt_cbor_simpletype_id(QCborSimpleType st) return nullptr; } +#if !defined(QT_NO_DATASTREAM) +QDataStream &operator<<(QDataStream &ds, QCborSimpleType st) +{ + return ds << quint8(st); +} + +QDataStream &operator>>(QDataStream &ds, QCborSimpleType &st) +{ + quint8 v; + ds >> v; + st = QCborSimpleType(v); + return ds; +} +#endif + #if !defined(QT_NO_DEBUG_STREAM) QDebug operator<<(QDebug dbg, QCborSimpleType st) {