5#include <QCborStreamWriter>
6#include <QCborStreamReader>
9using namespace Qt::StringLiterals;
15 QCborValue(QCborTag(2), QByteArray(
"\x01\0\0\0\0\0\0\0\0", 9));
21 using namespace Qt::StringLiterals;
25 writer.append(
"label"_L1);
26 writer.append(
"journald"_L1);
28 writer.append(
"autoDetect"_L1);
31 writer.append(
"condition"_L1);
32 writer.append(
"libs.journald"_L1);
34 writer.append(
"output"_L1);
36 writer.append(
"privateFeature"_L1);
46 QCborStreamWriter writer(&f);
57 QCborStreamWriter writer(&ba);
67 writer.append(Q_UINT64_C(4294967296));
68 writer.append(std::numeric_limits<quint64>::max());
74 writer.append(Q_INT64_C(4294967296));
75 writer.append(std::numeric_limits<qint64>::max());
79 writer.append(QCborNegativeInteger(1));
80 writer.append(QCborNegativeInteger(Q_INT64_C(4294967296)));
81 writer.append(QCborNegativeInteger(-quint64(std::numeric_limits<qint64>::min())));
85void writeFile(QCborStreamWriter &writer,
const QString &fileName)
88 if (f.open(QIODevice::ReadOnly))
89 writer.append(f.readAll());
96 using namespace Qt::StringLiterals;
98 writer.append(
"Hello, World"_L1);
112 writer.append(QCborTag(36));
113 writer.append(rx.pattern());
120 writer.append(QCborKnownTags::UnixTime_t);
121 writer.append(qint64(time(
nullptr)));
128 writer.append(QCborSimpleType::Null);
129 writer.append(QCborSimpleType(32));
136 qfloat16 f16 = qfloat16(f);
137 if (qIsNaN(f) || f16 == f)
148 if (qIsNaN(d) || d == f)
160 writer.append(qfloat16(qQNaN()));
161 }
else if (qIsInf(d)) {
162 writer.append(d < 0 ? -qInf() : qInf());
163 }
else if ((f = d) == d) {
164 qfloat16 f16 = qfloat16(f);
178 writer.append(b ? QCborSimpleType::True : QCborSimpleType::False);
182 writer.append(QCborSimpleType::Null);
186 writer.append(QCborSimpleType::Null);
190 writer.append(QCborSimpleType::Undefined);
195void appendList(QCborStreamWriter &writer,
const QList<QString> &values)
198 for (
const QString &s : values)
207 void appendList(QCborStreamWriter &writer,
const QStringList &list)
209 writer.startArray(list.size());
210 for (
const QString &s : list)
220 for (
const auto pair : values) {
221 writer.append(pair.first);
222 writer.append(pair.second);
230void appendMap(QCborStreamWriter &writer,
const QMap<
int, QString> &map)
232 writer.startMap(map.size());
233 for (
auto it = map.cbegin(), end = map.cend(); it != end; ++it) {
234 writer.append(it.key());
235 writer.append(it.value());
248 switch (reader.type())
250 case QCborStreamReader::UnsignedInteger:
251 case QCborStreamReader::NegativeInteger:
252 case QCborStreamReader::SimpleType:
253 case QCborStreamReader::Float16:
254 case QCborStreamReader::Float:
255 case QCborStreamReader::Double:
256 handleFixedWidth(reader);
259 case QCborStreamReader::ByteArray:
260 case QCborStreamReader::String:
261 handleString(reader);
263 case QCborStreamReader::Array:
264 case QCborStreamReader::Map:
265 reader.enterContainer();
266 while (reader.lastError() == QCborError::NoError)
267 handleStream(reader);
268 if (reader.lastError() == QCborError::NoError)
269 reader.leaveContainer();
281 if (reader.isLengthKnown())
282 list.reserve(reader.length());
284 reader.enterContainer();
285 while (reader.lastError() == QCborError::NoError && reader.hasNext())
286 list.append(readOneElement(reader));
287 if (reader.lastError() == QCborError::NoError)
288 reader.leaveContainer();
303 if (reader.isLengthKnown())
304 map = setMapLength(map, reader.length());
306 reader.enterContainer();
307 while (reader.lastError() == QCborError::NoError && reader.hasNext()) {
308 QString key = readElementAsString(reader);
309 map.insert(key, readOneElement(reader));
311 if (reader.lastError() == QCborError::NoError)
312 reader.leaveContainer();
323 auto r = reader.readString();
324 while (r.status == QCborStreamReader::Ok) {
326 r = reader.readString();
329 if (r.status == QCborStreamReader::Error) {
341 auto r = reader.readByteArray();
342 while (r.status == QCborStreamReader::Ok) {
344 r = reader.readByteArray();
347 if (r.status == QCborStreamReader::Error) {
358 QCborStreamReader::StringResult<qsizetype> result;
360 qsizetype size = reader.currentStringChunkSize();
361 qsizetype oldsize = buffer.size();
362 buffer.resize(oldsize + size);
363 result = reader.readStringChunk(buffer.data() + oldsize, size);
364 }
while (result.status == QCborStreamReader::Ok);
void appendMap(QCborStreamWriter &writer, const QList< std::pair< int, QString > > &values)
[21]
void appendList(QCborStreamWriter &writer, const QStringList &list)
[21]
QVariantMap populateFromCbor(QCborStreamReader &reader)
[26]
QString readElementAsString(QCborStreamReader &reader)
QVariantMap setMapLength(QVariantMap &map, qsizetype length)
void writer_examples(QCborStreamWriter &writer)
[3]
void writeCurrentTime(QCborStreamWriter &writer)
[10]
void writeFloat(QCborStreamWriter &writer, float f)
[13]
void writeDouble(QCborStreamWriter &writer, double d)
[14]
void snippets_16_19(QCborStreamWriter &writer, bool b)
[15]
QVariantList populateFromCbor(QCborStreamReader &reader)
[25]
void writeFloat(QCborStreamWriter &writer, double d)
[13]
void do_while_example(QCborStreamReader &reader, QByteArray &buffer)
[28]
void helloWorld(QCborStreamWriter &writer)
[7]
void examples(QCborStreamWriter &writer)
void appendMap(QCborStreamWriter &writer, const QMap< int, QString > &map)
[23]
QString readOneElement(QCborStreamReader &reader)
[24]
void writeString(QCborStreamWriter &writer, const QString &str)
[9]
void writeFile(QCborStreamWriter &writer, const QString &fileName)
[7]
QByteArray encodedNumber(qint64 value)
[3]
void handleString(QCborStreamReader &reader)
void writeRxPattern(QCborStreamWriter &writer, const QRegularExpression &rx)
[9]
void ammend_example(QCborStreamWriter &writer)
[11]
void handleFixedWidth(QCborStreamReader &reader)
[23]
QString decodeString(QCborStreamReader &reader)
[27]
void appendList(QCborStreamWriter &writer, const QList< QString > &values)
[20]
QByteArray decodeBytearray(QCborStreamReader &reader)
[27]
void handleStream(QCborStreamReader &reader)
[24]