diff --git a/src/corelib/serialization/qcborarray.h b/src/corelib/serialization/qcborarray.h index 0be362480c..218fa8e133 100644 --- a/src/corelib/serialization/qcborarray.h +++ b/src/corelib/serialization/qcborarray.h @@ -264,6 +264,11 @@ private: Q_DECLARE_SHARED(QCborArray) +inline QCborValue::QCborValue(QCborArray &&a) + : n(-1), container(a.d.take()), t(Array) +{ +} + inline QCborArray QCborValueRef::toArray() const { return concrete().toArray(); diff --git a/src/corelib/serialization/qcbormap.h b/src/corelib/serialization/qcbormap.h index 89de3d6786..e61e8a60e1 100644 --- a/src/corelib/serialization/qcbormap.h +++ b/src/corelib/serialization/qcbormap.h @@ -322,6 +322,11 @@ private: Q_DECLARE_SHARED(QCborMap) +inline QCborValue::QCborValue(QCborMap &&m) + : n(-1), container(m.d.take()), t(Map) +{ +} + inline QCborMap QCborValueRef::toMap() const { return concrete().toMap(); diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h index d2adc0a88b..b7280dd35f 100644 --- a/src/corelib/serialization/qcborvalue.h +++ b/src/corelib/serialization/qcborvalue.h @@ -139,7 +139,9 @@ public: QT_ASCII_CAST_WARN QCborValue(const char *s) : QCborValue(QString::fromUtf8(s)) {} #endif QCborValue(const QCborArray &a); + QCborValue(QCborArray &&a); QCborValue(const QCborMap &m); + QCborValue(QCborMap &&m); QCborValue(QCborTag tag, const QCborValue &taggedValue = QCborValue()); QCborValue(QCborKnownTags t_, const QCborValue &tv = QCborValue()) : QCborValue(QCborTag(t_), tv) diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h index 3ef134a99d..6930cb96a5 100644 --- a/src/corelib/tools/qshareddata.h +++ b/src/corelib/tools/qshareddata.h @@ -159,6 +159,7 @@ public: inline T *operator->() const { return d; } inline T *data() const { return d; } inline const T *constData() const { return d; } + inline T *take() { T *x = d; d = nullptr; return x; } inline void detach() { if (d && d->ref.load() != 1) detach_helper(); }