diff options
| author | Oleksii Zbykovskyi <Oleksii.Zbykovskyi@qt.io> | 2025-07-25 10:02:39 +0200 |
|---|---|---|
| committer | Oleksii Zbykovskyi <Oleksii.Zbykovskyi@qt.io> | 2025-07-25 20:36:21 +0200 |
| commit | 72dcdf9b66bf5f66e4bd392b27fc24510b2ee298 (patch) | |
| tree | fdd99daa17277e4df8ba3657c38e2cf7868eb222 /src/corelib/doc/snippets | |
| parent | a74a1ee297ad4540d9b28e2cdeebe02eafe3c3a7 (diff) | |
Fix of files under serialization prefix
Made each file compilable and added them to the build system.
Task-number: QTBUG-137566
Change-Id: I3127773b2ca90b52597ac491c49d35f2c295a05e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/corelib/doc/snippets')
5 files changed, 353 insertions, 281 deletions
diff --git a/src/corelib/doc/snippets/code/CMakeLists.txt b/src/corelib/doc/snippets/code/CMakeLists.txt index 31f676031b9..a90562d7425 100644 --- a/src/corelib/doc/snippets/code/CMakeLists.txt +++ b/src/corelib/doc/snippets/code/CMakeLists.txt @@ -49,6 +49,10 @@ add_library(corelib_snippets_code OBJECT src_corelib_mimetype_qmimedatabase.cpp src_corelib_plugin_qlibrary.cpp src_corelib_plugin_quuid.cpp + src_corelib_serialization_qcborstream.cpp + src_corelib_serialization_qcborvalue.cpp + src_corelib_serialization_qdatastream.cpp + src_corelib_serialization_qjsonobject.cpp ) target_link_libraries(corelib_snippets_code PRIVATE diff --git a/src/corelib/doc/snippets/code/src_corelib_serialization_qcborstream.cpp b/src/corelib/doc/snippets/code/src_corelib_serialization_qcborstream.cpp index e3483d9683e..a3ff8bed7c9 100644 --- a/src/corelib/doc/snippets/code/src_corelib_serialization_qcborstream.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_serialization_qcborstream.cpp @@ -1,317 +1,366 @@ // Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -using namespace Qt::StringLiterals; - -//! [0] - QCborValue(QCborTag(2), QByteArray("\x01\0\0\0\0\0\0\0\0", 9)); -//! [0] +#include <QFile> +#include <QCborStreamWriter> +#include <QCborStreamReader> +#include <QCborValue> -//! [1] using namespace Qt::StringLiterals; -// ... - writer.startMap(4); // 4 elements in the map - - writer.append("label"_L1); - writer.append("journald"_L1); - - writer.append("autoDetect"_L1); - writer.append(false); - - writer.append("condition"_L1); - writer.append("libs.journald"_L1); - - writer.append("output"_L1); - writer.startArray(1); - writer.append("privateFeature"_L1); - writer.endArray(); - writer.endMap(); -//! [1] - -//! [2] - QFile f("output", QIODevice::WriteOnly); - QCborStreamWriter writer(&f); - writer.startMap(0); - writer.endMap(); -//! [2] +void examples(QCborStreamWriter &writer) +{ + { + //! [0] + QCborValue(QCborTag(2), QByteArray("\x01\0\0\0\0\0\0\0\0", 9)); + //! [0] + } + + { + //! [1] + using namespace Qt::StringLiterals; + // ... + writer.startMap(4); // 4 elements in the map + + writer.append("label"_L1); + writer.append("journald"_L1); + + writer.append("autoDetect"_L1); + writer.append(false); + + writer.append("condition"_L1); + writer.append("libs.journald"_L1); + + writer.append("output"_L1); + writer.startArray(1); + writer.append("privateFeature"_L1); + writer.endArray(); + + writer.endMap(); + //! [1] + } + + { + //! [2] + QFile f("output"); + QCborStreamWriter writer(&f); + writer.startMap(0); + writer.endMap(); + //! [2] + } +} //! [3] - QByteArray encodedNumber(qint64 value) - { - QByteArray ba; - QCborStreamWriter writer(&ba); - writer.append(value); - return ba; - } +QByteArray encodedNumber(qint64 value) +{ + QByteArray ba; + QCborStreamWriter writer(&ba); + writer.append(value); + return ba; +} //! [3] -//! [4] - writer.append(0U); - writer.append(Q_UINT64_C(4294967296)); - writer.append(std::numeric_limits<quint64>::max()); -//! [4] - -//! [5] - writer.append(0); - writer.append(-1); - writer.append(Q_INT64_C(4294967296)); - writer.append(std::numeric_limits<qint64>::max()); -//! [5] - -//! [6] - writer.append(QCborNegativeInteger(1)); - writer.append(QCborNegativeInteger(Q_INT64_C(4294967296))); - writer.append(QCborNegativeInteger(-quint64(std::numeric_limits<qint64>::min()))); -//! [6] - +void writer_examples(QCborStreamWriter &writer) +{ + //! [4] + writer.append(0U); + writer.append(Q_UINT64_C(4294967296)); + writer.append(std::numeric_limits<quint64>::max()); + //! [4] + + //! [5] + writer.append(0); + writer.append(-1); + writer.append(Q_INT64_C(4294967296)); + writer.append(std::numeric_limits<qint64>::max()); + //! [5] + + //! [6] + writer.append(QCborNegativeInteger(1)); + writer.append(QCborNegativeInteger(Q_INT64_C(4294967296))); + writer.append(QCborNegativeInteger(-quint64(std::numeric_limits<qint64>::min()))); + //! [6] +} //! [7] - void writeFile(QCborStreamWriter &writer, const QString &fileName) - { - QFile f(fileName); - if (f.open(QIODevice::ReadOnly)) - writer.append(f.readAll()); - } +void writeFile(QCborStreamWriter &writer, const QString &fileName) +{ + QFile f(fileName); + if (f.open(QIODevice::ReadOnly)) + writer.append(f.readAll()); +} //! [7] -//! [8] -using namespace Qt::StringLiterals; -// ... - writer.append("Hello, World"_L1); -//! [8] +void helloWorld(QCborStreamWriter &writer) +{ + //! [8] + using namespace Qt::StringLiterals; + // ... + writer.append("Hello, World"_L1); + //! [8] +} //! [9] - void writeString(QCborStreamWriter &writer, const QString &str) - { - writer.append(str); - } +void writeString(QCborStreamWriter &writer, const QString &str) +{ + writer.append(str); +} //! [9] //! [10] - void writeRxPattern(QCborStreamWriter &writer, const QRegularExpression &rx) - { - writer.append(QCborTag(36)); - writer.append(rx.pattern()); - } +void writeRxPattern(QCborStreamWriter &writer, const QRegularExpression &rx) +{ + writer.append(QCborTag(36)); + writer.append(rx.pattern()); +} //! [10] //! [11] - void writeCurrentTime(QCborStreamWriter &writer) - { - writer.append(QCborKnownTags::UnixTime_t); - writer.append(time(nullptr)); - } +void writeCurrentTime(QCborStreamWriter &writer) +{ + writer.append(QCborKnownTags::UnixTime_t); + writer.append(qint64(time(nullptr))); +} //! [11] -//! [12] - writer.append(QCborSimpleType::Null); - writer.append(QCborSimpleType(32)); -//! [12] +void ammend_example(QCborStreamWriter &writer) +{ + //! [12] + writer.append(QCborSimpleType::Null); + writer.append(QCborSimpleType(32)); + //! [12] +} //! [13] - void writeFloat(QCborStreamWriter &writer, float f) - { - qfloat16 f16 = f; - if (qIsNaN(f) || f16 == f) - writer.append(f16); - else - writer.append(f); - } +void writeFloat(QCborStreamWriter &writer, float f) +{ + qfloat16 f16 = f; + if (qIsNaN(f) || f16 == f) + writer.append(f16); + else + writer.append(f); +} //! [13] //! [14] - void writeFloat(QCborStreamWriter &writer, double d) - { - float f = d; - if (qIsNaN(d) || d == f) - writer.append(f); - else - writer.append(d); - } +void writeFloat(QCborStreamWriter &writer, double d) +{ + float f = d; + if (qIsNaN(d) || d == f) + writer.append(f); + else + writer.append(d); +} //! [14] //! [15] - void writeDouble(QCborStreamWriter &writer, double d) - { - float f; - if (qIsNaN(d)) { - writer.append(qfloat16(qQNaN())); - } else if (qIsInf(d)) { - writer.append(d < 0 ? -qInf() : qInf()); - } else if ((f = d) == d) { - qfloat16 f16 = f; - if (f16 == f) - writer.append(f16); - else - writer.append(f); - } else { - writer.append(d); - } - } +void writeDouble(QCborStreamWriter &writer, double d) +{ + float f; + if (qIsNaN(d)) { + writer.append(qfloat16(qQNaN())); + } else if (qIsInf(d)) { + writer.append(d < 0 ? -qInf() : qInf()); + } else if ((f = d) == d) { + qfloat16 f16 = f; + if (f16 == f) + writer.append(f16); + else + writer.append(f); + } else { + writer.append(d); + } +} //! [15] -//! [16] - writer.append(b ? QCborSimpleType::True : QCborSimpleType::False); -//! [16] +void snippets_16_19(QCborStreamWriter &writer, bool b) +{ + //! [16] + writer.append(b ? QCborSimpleType::True : QCborSimpleType::False); + //! [16] -//! [17] - writer.append(QCborSimpleType::Null); -//! [17] + //! [17] + writer.append(QCborSimpleType::Null); + //! [17] -//! [18] - writer.append(QCborSimpleType::Null); -//! [18] + //! [18] + writer.append(QCborSimpleType::Null); + //! [18] -//! [19] - writer.append(QCborSimpleType::Undefined); -//! [19] + //! [19] + writer.append(QCborSimpleType::Undefined); + //! [19] +} //! [20] - void appendList(QCborStreamWriter &writer, const QList<QString> &values) - { - writer.startArray(); - for (const QString &s : values) - writer.append(s); - writer.endArray(); - } +void appendList(QCborStreamWriter &writer, const QList<QString> &values) +{ + writer.startArray(); + for (const QString &s : values) + writer.append(s); + writer.endArray(); +} //! [20] -//! [21] - void appendList(QCborStreamWriter &writer, const QStringList &list) - { - writer.startArray(list.size()); - for (const QString &s : list) - writer.append(s); - writer.endArray(); - } -//! [21] - -//! [22] - void appendMap(QCborStreamWriter &writer, const QList<std::pair<int, QString>> &values) - { - writer.startMap(); - for (const auto pair : values) { - writer.append(pair.first) - writer.append(pair.second); - } - writer.endMap(); - } -//! [22] +namespace repetitions +{ + //! [21] + void appendList(QCborStreamWriter &writer, const QStringList &list) + { + writer.startArray(list.size()); + for (const QString &s : list) + writer.append(s); + writer.endArray(); + } + //! [21] + + //! [22] + void appendMap(QCborStreamWriter &writer, const QList<std::pair<int, QString>> &values) + { + writer.startMap(); + for (const auto pair : values) { + writer.append(pair.first); + writer.append(pair.second); + } + writer.endMap(); + } + //! [22] +} //! [23] - void appendMap(QCborStreamWriter &writer, const QMap<int, QString> &map) - { - writer.startMap(map.size()); - for (auto it = map.cbegin(), end = map.cend(); it != end; ++it) { - writer.append(it.key()); - writer.append(it.value()); - } - writer.endMap(); - } +void appendMap(QCborStreamWriter &writer, const QMap<int, QString> &map) +{ + writer.startMap(map.size()); + for (auto it = map.cbegin(), end = map.cend(); it != end; ++it) { + writer.append(it.key()); + writer.append(it.value()); + } + writer.endMap(); +} //! [23] +void handleFixedWidth(QCborStreamReader &reader); + +void handleString(QCborStreamReader &reader); + //! [24] - void handleStream(QCborStreamReader &reader) - { - switch (reader.type()) - case QCborStreamReader::UnsignedInteger: - case QCborStreamReader::NegativeInteger: - case QCborStreamReader::SimpleType: - case QCborStreamReader::Float16: - case QCborStreamReader::Float: - case QCborStreamReader::Double: - handleFixedWidth(reader); - reader.next(); - break; - case QCborStreamReader::ByteArray: - case QCborStreamReader::String: - handleString(reader); - break; - case QCborStreamReader::Array: - case QCborStreamReader::Map: - reader.enterContainer(); - while (reader.lastError() == QCborError::NoError) - handleStream(reader); - if (reader.lastError() == QCborError::NoError) - reader.leaveContainer(); - } - } +void handleStream(QCborStreamReader &reader) +{ + switch (reader.type()) + { + case QCborStreamReader::UnsignedInteger: + case QCborStreamReader::NegativeInteger: + case QCborStreamReader::SimpleType: + case QCborStreamReader::Float16: + case QCborStreamReader::Float: + case QCborStreamReader::Double: + handleFixedWidth(reader); + reader.next(); + break; + case QCborStreamReader::ByteArray: + case QCborStreamReader::String: + handleString(reader); + break; + case QCborStreamReader::Array: + case QCborStreamReader::Map: + reader.enterContainer(); + while (reader.lastError() == QCborError::NoError) + handleStream(reader); + if (reader.lastError() == QCborError::NoError) + reader.leaveContainer(); + } + +} //! [24] +QString readOneElement(QCborStreamReader &reader); + //! [25] - QVariantList populateFromCbor(QCborStreamReader &reader) - { - QVariantList list; - if (reader.isLengthKnown()) - list.reserve(reader.length()); - - reader.enterContainer(); - while (reader.lastError() == QCborError::NoError && reader.hasNext()) - list.append(readOneElement(reader)); - if (reader.lastError() == QCborError::NoError) - reader.leaveContainer(); - } +QVariantList populateFromCbor(QCborStreamReader &reader) +{ + QVariantList list; + if (reader.isLengthKnown()) + list.reserve(reader.length()); + + reader.enterContainer(); + while (reader.lastError() == QCborError::NoError && reader.hasNext()) + list.append(readOneElement(reader)); + if (reader.lastError() == QCborError::NoError) + reader.leaveContainer(); + + return list; +} //! [25] -//! [26] - QVariantMap populateFromCbor(QCborStreamReader &reader) - { - QVariantMap map; - if (reader.isLengthKnown()) - map.reserve(reader.length()); - - reader.enterContainer(); - while (reader.lastError() == QCborError::NoError && reader.hasNext()) { - QString key = readElementAsString(reader); - map.insert(key, readOneElement(reader)); - } - if (reader.lastError() == QCborError::NoError) - reader.leaveContainer(); - } -//! [26] +namespace secondDefinition +{ + QString readElementAsString(QCborStreamReader &reader); + QVariantMap setMapLength(QVariantMap &map, qsizetype length); + + //! [26] + QVariantMap populateFromCbor(QCborStreamReader &reader) + { + QVariantMap map; + if (reader.isLengthKnown()) + map = setMapLength(map, reader.length()); + + reader.enterContainer(); + while (reader.lastError() == QCborError::NoError && reader.hasNext()) { + QString key = readElementAsString(reader); + map.insert(key, readOneElement(reader)); + } + if (reader.lastError() == QCborError::NoError) + reader.leaveContainer(); + + return map; + } + //! [26] +} //! [27] - QString decodeString(QCborStreamReader &reader) - { - QString result; - auto r = reader.readString(); - while (r.status == QCborStreamReader::Ok) { - result += r.data; - r = reader.readString(); - } - - if (r.status == QCborStreamReader::Error) { - // handle error condition - result.clear(); - } - return result; - } +QString decodeString(QCborStreamReader &reader) +{ + QString result; + auto r = reader.readString(); + while (r.status == QCborStreamReader::Ok) { + result += r.data; + r = reader.readString(); + } + + if (r.status == QCborStreamReader::Error) { + // handle error condition + result.clear(); + } + return result; +} //! [27] //! [28] - QBytearray decodeBytearray(QCborStreamReader &reader) - { - QBytearray result; - auto r = reader.readBytearray(); - while (r.status == QCborStreamReader::Ok) { - result += r.data; - r = reader.readByteArray(); - } - - if (r.status == QCborStreamReader::Error) { - // handle error condition - result.clear(); - } - return result; - } +QByteArray decodeBytearray(QCborStreamReader &reader) +{ + QByteArray result; + auto r = reader.readByteArray(); + while (r.status == QCborStreamReader::Ok) { + result += r.data; + r = reader.readByteArray(); + } + + if (r.status == QCborStreamReader::Error) { + // handle error condition + result.clear(); + } + return result; +} //! [28] -//! [29] - QCborStreamReader<qsizetype> result; +void do_while_example(QCborStreamReader &reader, QByteArray &buffer) +{ + //! [29] + QCborStreamReader::StringResult<qsizetype> result; do { qsizetype size = reader.currentStringChunkSize(); qsizetype oldsize = buffer.size(); buffer.resize(oldsize + size); result = reader.readStringChunk(buffer.data() + oldsize, size); - } while (result.status() == QCborStreamReader::Ok); -//! [29] + } while (result.status == QCborStreamReader::Ok); + //! [29] +} diff --git a/src/corelib/doc/snippets/code/src_corelib_serialization_qcborvalue.cpp b/src/corelib/doc/snippets/code/src_corelib_serialization_qcborvalue.cpp index 3abee048ab3..3b1914f1b4e 100644 --- a/src/corelib/doc/snippets/code/src_corelib_serialization_qcborvalue.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_serialization_qcborvalue.cpp @@ -1,33 +1,41 @@ // Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -//! [0] +#include <QCborValue> +#include <QCborStreamReader> +#include <QUuid> +#include <QCborMap> + +void wrapInFunction(QUuid uuid, QCborStreamReader &reader, const QString &key) +{ + //! [0] QCborValue(uuid) == QCborValue(QCborKnownTags::Uuid, uuid.toRfc4122()); -//! [0] + //! [0] -//! [1] + //! [1] QCborValue value(QCborSimpleType(12)); -//! [1] + //! [1] -//! [2] + //! [2] value.isSimpleType(QCborSimpleType(12)); -//! [2] + //! [2] -//! [3] + //! [3] QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags::Url, "https://example.com"); -//! [3] + //! [3] -//! [4] + //! [4] value.toMap().value(key); -//! [4] + //! [4] -//! [5] + //! [5] value.toMap().value(key); -//! [5] + //! [5] -//! [6] + //! [6] if (reader.isTag() && reader.toTag() == QCborKnownTags::Signature) reader.next(); QCborValue contents = QCborValue::fromCbor(reader); -//! [6] + //! [6] +} diff --git a/src/corelib/doc/snippets/code/src_corelib_serialization_qdatastream.cpp b/src/corelib/doc/snippets/code/src_corelib_serialization_qdatastream.cpp index dfdebe6a76b..c88d37d6427 100644 --- a/src/corelib/doc/snippets/code/src_corelib_serialization_qdatastream.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_serialization_qdatastream.cpp @@ -1,6 +1,12 @@ // Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +#include <QDataStream> +#include <QImage> + +class QXxx +{ }; + //! [0] QDataStream &operator<<(QDataStream &, const QXxx &); QDataStream &operator>>(QDataStream &, QXxx &); diff --git a/src/corelib/doc/snippets/code/src_corelib_serialization_qjsonobject.cpp b/src/corelib/doc/snippets/code/src_corelib_serialization_qjsonobject.cpp index a6a1cba7322..a43681c8e4c 100644 --- a/src/corelib/doc/snippets/code/src_corelib_serialization_qjsonobject.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_serialization_qjsonobject.cpp @@ -1,17 +1,22 @@ // Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -//! [1] -QJsonObject obj{ - { "something", "is" }, - { "in", "this" }, - { "object", 42 }, -}; +#include <QJsonObject> -for (auto [key, value] : obj.asKeyValueRange()) { - qDebug() << key << "->" << value; - if (key == "object") - value = "!"; // modify the object at this key +void example() +{ + //! [1] + QJsonObject obj{ + { "something", "is" }, + { "in", "this" }, + { "object", 42 }, + }; + + for (auto [key, value] : obj.asKeyValueRange()) { + qDebug() << key << "->" << value; + if (key == "object") + value = "!"; // modify the object at this key + } + qDebug() << obj["object"]; // QJsonValue(string, "!") + //! [1] } -qDebug() << obj["object"]; // QJsonValue(string, "!") -//! [1] |
