summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r--src/corelib/serialization/qcborarray.h1
-rw-r--r--src/corelib/serialization/qcbormap.h1
-rw-r--r--src/corelib/serialization/qjsoncbor.cpp23
-rw-r--r--src/corelib/serialization/qjsonvalue.cpp18
-rw-r--r--src/corelib/serialization/qjsonvalue.h2
5 files changed, 45 insertions, 0 deletions
diff --git a/src/corelib/serialization/qcborarray.h b/src/corelib/serialization/qcborarray.h
index ba7f4dc80d..dd0628b3bb 100644
--- a/src/corelib/serialization/qcborarray.h
+++ b/src/corelib/serialization/qcborarray.h
@@ -267,6 +267,7 @@ public:
static QCborArray fromStringList(const QStringList &list);
static QCborArray fromVariantList(const QVariantList &list);
static QCborArray fromJsonArray(const QJsonArray &array);
+ static QCborArray fromJsonArray(QJsonArray &&array) noexcept;
QVariantList toVariantList() const;
QJsonArray toJsonArray() const;
diff --git a/src/corelib/serialization/qcbormap.h b/src/corelib/serialization/qcbormap.h
index 97d7d30133..f84552d992 100644
--- a/src/corelib/serialization/qcbormap.h
+++ b/src/corelib/serialization/qcbormap.h
@@ -318,6 +318,7 @@ public:
static QCborMap fromVariantMap(const QVariantMap &map);
static QCborMap fromVariantHash(const QVariantHash &hash);
static QCborMap fromJsonObject(const QJsonObject &o);
+ static QCborMap fromJsonObject(QJsonObject &&o) noexcept;
QVariantMap toVariantMap() const;
QVariantHash toVariantHash() const;
QJsonObject toJsonObject() const;
diff --git a/src/corelib/serialization/qjsoncbor.cpp b/src/corelib/serialization/qjsoncbor.cpp
index 53ee73d905..3d79388b1d 100644
--- a/src/corelib/serialization/qjsoncbor.cpp
+++ b/src/corelib/serialization/qjsoncbor.cpp
@@ -876,6 +876,18 @@ QCborArray QCborArray::fromJsonArray(const QJsonArray &array)
}
/*!
+ \overload
+ \since 6.3
+ */
+QCborArray QCborArray::fromJsonArray(QJsonArray &&array) noexcept
+{
+ QCborArray result;
+ result.d = std::exchange(array.a, {});
+ return result;
+
+}
+
+/*!
Converts the CBOR values to QVariant using QCborValue::toVariant() and
"stringifies" all the CBOR keys in this map, returning the QVariantMap that
results from that association list.
@@ -989,4 +1001,15 @@ QCborMap QCborMap::fromJsonObject(const QJsonObject &obj)
return result;
}
+/*!
+ \overload
+ \since 6.3
+ */
+QCborMap QCborMap::fromJsonObject(QJsonObject &&obj) noexcept
+{
+ QCborMap result;
+ result.d = std::exchange(obj.o, {});
+ return result;
+}
+
QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp
index 831a124f7b..325e1db62e 100644
--- a/src/corelib/serialization/qjsonvalue.cpp
+++ b/src/corelib/serialization/qjsonvalue.cpp
@@ -223,6 +223,15 @@ QJsonValue::QJsonValue(const QJsonArray &a)
}
/*!
+ \overload
+ \since 6.3
+ */
+QJsonValue::QJsonValue(QJsonArray &&a) noexcept
+ : value(QCborArray::fromJsonArray(std::move(a)))
+{
+}
+
+/*!
Creates a value of type Object, with value \a o.
*/
QJsonValue::QJsonValue(const QJsonObject &o)
@@ -230,6 +239,15 @@ QJsonValue::QJsonValue(const QJsonObject &o)
{
}
+/*!
+ \overload
+ \since 6.3
+ */
+QJsonValue::QJsonValue(QJsonObject &&o) noexcept
+ : value(QCborMap::fromJsonObject(std::move(o)))
+{
+}
+
/*!
Destroys the value.
diff --git a/src/corelib/serialization/qjsonvalue.h b/src/corelib/serialization/qjsonvalue.h
index 4b59dede01..fe7d0baf2f 100644
--- a/src/corelib/serialization/qjsonvalue.h
+++ b/src/corelib/serialization/qjsonvalue.h
@@ -81,7 +81,9 @@ public:
: QJsonValue(QString::fromUtf8(s)) {}
#endif
QJsonValue(const QJsonArray &a);
+ QJsonValue(QJsonArray &&a) noexcept;
QJsonValue(const QJsonObject &o);
+ QJsonValue(QJsonObject &&o) noexcept;
~QJsonValue();