summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@qt.io>2018-09-10 08:47:32 +0200
committerJędrzej Nowacki <jedrzej.nowacki@qt.io>2018-10-03 14:49:27 +0000
commit31f3facac32913074fe91b8f77e72be7c2f55a65 (patch)
tree1528f1f903485657ea4f5514988f344fed2dc888
parente74cb37159b593b6c180949d56c99f4ea63986db (diff)
Implement QDataStream operator for QCborSimpleValue
That allows us to remove custom handling in QMetaType. Change-Id: Ic09fb96e1a05c6897803811d70aebbc6ea6e4f2e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--examples/corelib/serialization/convert/cborconverter.cpp13
-rw-r--r--src/corelib/kernel/qmetatype.cpp14
-rw-r--r--src/corelib/serialization/qcborcommon.h5
-rw-r--r--src/corelib/serialization/qcborstream.cpp16
4 files changed, 21 insertions, 27 deletions
diff --git a/examples/corelib/serialization/convert/cborconverter.cpp b/examples/corelib/serialization/convert/cborconverter.cpp
index 41724c935e..f906c81062 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 3f47f03f42..1ba5f3979c 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<QCustomTypeInfo> * const ct = customTypes();
@@ -1542,14 +1536,6 @@ public:
*const_cast<unsigned long*>(data) = l;
return true;
}
- bool delegate(const QCborSimpleType *data)
- {
- // TODO just define a normal QDataStream operator
- quint8 l;
- stream >> l;
- *const_cast<QCborSimpleType*>(data) = QCborSimpleType(l);
- return true;
- }
bool delegate(const QMetaTypeSwitcher::NotBuiltinType *data)
{
const QVector<QCustomTypeInfo> * const ct = customTypes();
diff --git a/src/corelib/serialization/qcborcommon.h b/src/corelib/serialization/qcborcommon.h
index 9661cd70bb..0147f85de8 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 aed286a11f..38b809158a 100644
--- a/src/corelib/serialization/qcborstream.cpp
+++ b/src/corelib/serialization/qcborstream.cpp
@@ -44,6 +44,7 @@
#include <qbuffer.h>
#include <qdebug.h>
#include <qstack.h>
+#include <qdatastream.h>
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)
{