diff options
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r-- | src/corelib/serialization/qcborarray.cpp | 20 | ||||
-rw-r--r-- | src/corelib/serialization/qcborarray.h | 6 | ||||
-rw-r--r-- | src/corelib/serialization/qcborcommon.h | 5 | ||||
-rw-r--r-- | src/corelib/serialization/qcbormap.cpp | 19 | ||||
-rw-r--r-- | src/corelib/serialization/qcbormap.h | 7 | ||||
-rw-r--r-- | src/corelib/serialization/qcborstream.cpp | 16 | ||||
-rw-r--r-- | src/corelib/serialization/qcborvalue.cpp | 22 | ||||
-rw-r--r-- | src/corelib/serialization/qcborvalue.h | 6 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonarray.cpp | 17 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonarray.h | 5 | ||||
-rw-r--r-- | src/corelib/serialization/qjsondocument.cpp | 20 | ||||
-rw-r--r-- | src/corelib/serialization/qjsondocument.h | 5 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonobject.cpp | 17 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonobject.h | 5 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonvalue.cpp | 75 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonvalue.h | 6 |
16 files changed, 250 insertions, 1 deletions
diff --git a/src/corelib/serialization/qcborarray.cpp b/src/corelib/serialization/qcborarray.cpp index c56536cdb1..28ae40f3df 100644 --- a/src/corelib/serialization/qcborarray.cpp +++ b/src/corelib/serialization/qcborarray.cpp @@ -39,6 +39,7 @@ #include "qcborarray.h" #include "qcborvalue_p.h" +#include "qdatastream.h" QT_BEGIN_NAMESPACE @@ -1218,4 +1219,23 @@ QDebug operator<<(QDebug dbg, const QCborArray &a) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QCborArray &value) +{ + stream << value.toCborValue().toCbor(); + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QCborArray &value) +{ + QByteArray buffer; + stream >> buffer; + QCborParserError parseError{}; + value = QCborValue::fromCbor(buffer, &parseError).toArray(); + if (parseError.error) + stream.setStatus(QDataStream::ReadCorruptData); + return stream; +} +#endif + QT_END_NAMESPACE diff --git a/src/corelib/serialization/qcborarray.h b/src/corelib/serialization/qcborarray.h index ed0f4912ba..d96342cfa6 100644 --- a/src/corelib/serialization/qcborarray.h +++ b/src/corelib/serialization/qcborarray.h @@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE class QJsonArray; +class QDataStream; class QCborContainerPrivate; class Q_CORE_EXPORT QCborArray @@ -298,6 +299,11 @@ Q_CORE_EXPORT uint qHash(const QCborArray &array, uint seed = 0); Q_CORE_EXPORT QDebug operator<<(QDebug, const QCborArray &a); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QCborArray &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QCborArray &); +#endif + QT_END_NAMESPACE #endif // QCBORARRAY_H 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/qcbormap.cpp b/src/corelib/serialization/qcbormap.cpp index 33f9249993..4b28ca4a2e 100644 --- a/src/corelib/serialization/qcbormap.cpp +++ b/src/corelib/serialization/qcbormap.cpp @@ -1763,4 +1763,23 @@ QDebug operator<<(QDebug dbg, const QCborMap &m) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QCborMap &value) +{ + stream << value.toCborValue().toCbor(); + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QCborMap &value) +{ + QByteArray buffer; + stream >> buffer; + QCborParserError parseError{}; + value = QCborValue::fromCbor(buffer, &parseError).toMap(); + if (parseError.error) + stream.setStatus(QDataStream::ReadCorruptData); + return stream; +} +#endif + QT_END_NAMESPACE diff --git a/src/corelib/serialization/qcbormap.h b/src/corelib/serialization/qcbormap.h index 3eb2107691..0eb163a0a8 100644 --- a/src/corelib/serialization/qcbormap.h +++ b/src/corelib/serialization/qcbormap.h @@ -52,6 +52,7 @@ typedef QMap<QString, QVariant> QVariantMap; template <class Key, class T> class QHash; typedef QHash<QString, QVariant> QVariantHash; class QJsonObject; +class QDataStream; class QCborContainerPrivate; class Q_CORE_EXPORT QCborMap @@ -352,6 +353,12 @@ Q_CORE_EXPORT uint qHash(const QCborMap &map, uint seed = 0); Q_CORE_EXPORT QDebug operator<<(QDebug, const QCborMap &m); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QCborMap &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QCborMap &); +#endif + + QT_END_NAMESPACE #endif // QCBORMAP_H 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) { diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp index 81ea1ed3b2..935f761585 100644 --- a/src/corelib/serialization/qcborvalue.cpp +++ b/src/corelib/serialization/qcborvalue.cpp @@ -39,7 +39,7 @@ #include "qcborvalue.h" #include "qcborvalue_p.h" - +#include "qdatastream.h" #include "qcborarray.h" #include "qcbormap.h" #include "qcborstream.h" @@ -2486,6 +2486,26 @@ QDebug operator<<(QDebug dbg, const QCborValue &v) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QCborValue &value) +{ + stream << QCborValue(value).toCbor(); + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QCborValue &value) +{ + QByteArray buffer; + stream >> buffer; + QCborParserError parseError{}; + value = QCborValue::fromCbor(buffer, &parseError); + if (parseError.error) + stream.setStatus(QDataStream::ReadCorruptData); + return stream; +} +#endif + + QT_END_NAMESPACE #include "qcborarray.cpp" diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h index 6d9ed0810a..0aacbbe66e 100644 --- a/src/corelib/serialization/qcborvalue.h +++ b/src/corelib/serialization/qcborvalue.h @@ -67,6 +67,7 @@ class QCborArray; class QCborMap; class QCborStreamReader; class QCborStreamWriter; +class QDataStream; struct QCborParserError { @@ -457,6 +458,11 @@ Q_CORE_EXPORT uint qHash(const QCborValue &value, uint seed = 0); Q_CORE_EXPORT QDebug operator<<(QDebug, const QCborValue &v); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QCborValue &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QCborValue &); +#endif + QT_END_NAMESPACE #if defined(QT_X11_DEFINES_FOUND) diff --git a/src/corelib/serialization/qjsonarray.cpp b/src/corelib/serialization/qjsonarray.cpp index 1187bb03a3..5ba83c41b9 100644 --- a/src/corelib/serialization/qjsonarray.cpp +++ b/src/corelib/serialization/qjsonarray.cpp @@ -1259,5 +1259,22 @@ QDebug operator<<(QDebug dbg, const QJsonArray &a) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QJsonArray &array) +{ + QJsonDocument doc{array}; + stream << doc.toJson(QJsonDocument::Compact); + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QJsonArray &array) +{ + QJsonDocument doc; + stream >> doc; + array = doc.array(); + return stream; +} +#endif + QT_END_NAMESPACE diff --git a/src/corelib/serialization/qjsonarray.h b/src/corelib/serialization/qjsonarray.h index 5dff4a0aa9..0a17951fb7 100644 --- a/src/corelib/serialization/qjsonarray.h +++ b/src/corelib/serialization/qjsonarray.h @@ -271,6 +271,11 @@ Q_CORE_EXPORT uint qHash(const QJsonArray &array, uint seed = 0); Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonArray &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QJsonArray &); +#endif + QT_END_NAMESPACE #endif // QJSONARRAY_H diff --git a/src/corelib/serialization/qjsondocument.cpp b/src/corelib/serialization/qjsondocument.cpp index 5018f7c267..aaa0f6acaa 100644 --- a/src/corelib/serialization/qjsondocument.cpp +++ b/src/corelib/serialization/qjsondocument.cpp @@ -47,6 +47,7 @@ #include "qjsonwriter_p.h" #include "qjsonparser_p.h" #include "qjson_p.h" +#include "qdatastream.h" QT_BEGIN_NAMESPACE @@ -669,4 +670,23 @@ QDebug operator<<(QDebug dbg, const QJsonDocument &o) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QJsonDocument &doc) +{ + stream << doc.toJson(QJsonDocument::Compact); + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QJsonDocument &doc) +{ + QByteArray buffer; + stream >> buffer; + QJsonParseError parseError{}; + doc = QJsonDocument::fromJson(buffer, &parseError); + if (parseError.error && !buffer.isEmpty()) + stream.setStatus(QDataStream::ReadCorruptData); + return stream; +} +#endif + QT_END_NAMESPACE diff --git a/src/corelib/serialization/qjsondocument.h b/src/corelib/serialization/qjsondocument.h index b784890c54..a749439b7d 100644 --- a/src/corelib/serialization/qjsondocument.h +++ b/src/corelib/serialization/qjsondocument.h @@ -172,6 +172,11 @@ Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonDocument) Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonDocument &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QJsonDocument &); +#endif + QT_END_NAMESPACE #endif // QJSONDOCUMENT_H diff --git a/src/corelib/serialization/qjsonobject.cpp b/src/corelib/serialization/qjsonobject.cpp index 950bec535b..a9f25a119c 100644 --- a/src/corelib/serialization/qjsonobject.cpp +++ b/src/corelib/serialization/qjsonobject.cpp @@ -1320,4 +1320,21 @@ QDebug operator<<(QDebug dbg, const QJsonObject &o) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QJsonObject &object) +{ + QJsonDocument doc{object}; + stream << doc.toJson(QJsonDocument::Compact); + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QJsonObject &object) +{ + QJsonDocument doc; + stream >> doc; + object = doc.object(); + return stream; +} +#endif + QT_END_NAMESPACE diff --git a/src/corelib/serialization/qjsonobject.h b/src/corelib/serialization/qjsonobject.h index be42d3747a..80fe6b2f3f 100644 --- a/src/corelib/serialization/qjsonobject.h +++ b/src/corelib/serialization/qjsonobject.h @@ -268,6 +268,11 @@ Q_CORE_EXPORT uint qHash(const QJsonObject &object, uint seed = 0); Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonObject &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QJsonObject &); +#endif + QT_END_NAMESPACE #endif // QJSONOBJECT_H diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp index 2c04da4885..1fc610d7c7 100644 --- a/src/corelib/serialization/qjsonvalue.cpp +++ b/src/corelib/serialization/qjsonvalue.cpp @@ -45,6 +45,7 @@ #include <qvariant.h> #include <qstringlist.h> #include <qdebug.h> +#include "qdatastream.h" #ifndef QT_BOOTSTRAPPED # include <qcborarray.h> @@ -933,4 +934,78 @@ QDebug operator<<(QDebug dbg, const QJsonValue &o) } #endif +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &stream, const QJsonValue &v) +{ + quint8 type = v.t; + stream << type; + switch (type) { + case QJsonValue::Undefined: + case QJsonValue::Null: + break; + case QJsonValue::Bool: + stream << v.toBool(); + break; + case QJsonValue::Double: + stream << v.toDouble(); + break; + case QJsonValue::String: + stream << v.toString(); + break; + case QJsonValue::Array: + stream << v.toArray(); + break; + case QJsonValue::Object: + stream << v.toObject(); + break; + } + return stream; +} + +QDataStream &operator>>(QDataStream &stream, QJsonValue &v) +{ + quint8 type; + stream >> type; + switch (type) { + case QJsonValue::Undefined: + case QJsonValue::Null: + v = QJsonValue{QJsonValue::Type(type)}; + break; + case QJsonValue::Bool: { + bool b; + stream >> b; + v = QJsonValue(b); + break; + } case QJsonValue::Double: { + double d; + stream >> d; + v = QJsonValue{d}; + break; + } case QJsonValue::String: { + QString s; + stream >> s; + v = QJsonValue{s}; + break; + } + case QJsonValue::Array: { + QJsonArray a; + stream >> a; + v = QJsonValue{a}; + break; + } + case QJsonValue::Object: { + QJsonObject o; + stream >> o; + v = QJsonValue{o}; + break; + } + default: { + stream.setStatus(QDataStream::ReadCorruptData); + v = QJsonValue{QJsonValue::Undefined}; + } + } + return stream; +} +#endif + QT_END_NAMESPACE diff --git a/src/corelib/serialization/qjsonvalue.h b/src/corelib/serialization/qjsonvalue.h index d8e121524d..16d2c0c14c 100644 --- a/src/corelib/serialization/qjsonvalue.h +++ b/src/corelib/serialization/qjsonvalue.h @@ -152,6 +152,7 @@ private: friend class QJsonObject; friend class QCborValue; friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &); + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonValue &); QJsonValue(QJsonPrivate::Data *d, QJsonPrivate::Base *b, const QJsonPrivate::Value& v); void stringDataFromQStringHelper(const QString &string); @@ -253,6 +254,11 @@ Q_CORE_EXPORT uint qHash(const QJsonValue &value, uint seed = 0); Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &); #endif +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonValue &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QJsonValue &); +#endif + QT_END_NAMESPACE #endif // QJSONVALUE_H |