diff options
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r-- | src/corelib/serialization/qcborarray.h | 1 | ||||
-rw-r--r-- | src/corelib/serialization/qcbormap.h | 1 | ||||
-rw-r--r-- | src/corelib/serialization/qjsoncbor.cpp | 23 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonvalue.cpp | 18 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonvalue.h | 2 |
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(); |