blob: f9dba8e49cbeccccc3d776519eb867e8716d24e8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
// Copyright (C) 2018 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
// Qt-Security score:critical reason:data-parser
#ifndef QCBORSTREAMWRITER_H
#define QCBORSTREAMWRITER_H
#include <QtCore/qbytearray.h>
#include <QtCore/qcborcommon.h>
#include <QtCore/qscopedpointer.h>
#include <QtCore/qstring.h>
#include <QtCore/qstringview.h>
#ifndef QT_BOOTSTRAPPED
#include <QtCore/qfloat16.h>
#endif
#include <memory>
QT_REQUIRE_CONFIG(cborstreamwriter);
/* X11 headers use these values too, but as defines */
#if defined(False) && defined(True)
# undef True
# undef False
#endif
QT_BEGIN_NAMESPACE
class QIODevice;
class QCborStreamWriterPrivate;
class Q_CORE_EXPORT QCborStreamWriter
{
public:
explicit QCborStreamWriter(QIODevice *device);
explicit QCborStreamWriter(QByteArray *data);
~QCborStreamWriter();
Q_DISABLE_COPY(QCborStreamWriter)
void setDevice(QIODevice *device);
QIODevice *device() const;
void append(quint64 u);
void append(qint64 i);
void append(QCborNegativeInteger n);
#if !QT_CORE_REMOVED_SINCE(6, 10) // wasn't a template until 6.10
Q_WEAK_OVERLOAD
#endif
void append(const QByteArray &ba) { appendByteString(ba.constData(), ba.size()); }
void append(QByteArrayView ba) { appendByteString(ba.data(), ba.size()); }
void append(QLatin1StringView str);
void append(QStringView str);
void append(QUtf8StringView str) { appendTextString(str.data(), str.size()); }
void append(QCborTag tag);
void append(QCborKnownTags tag) { append(QCborTag(tag)); }
void append(QCborSimpleType st);
void append(std::nullptr_t) { append(QCborSimpleType::Null); }
#ifndef QT_BOOTSTRAPPED
void append(qfloat16 f);
#endif
void append(float f);
void append(double d);
void appendByteString(const char *data, qsizetype len);
void appendTextString(const char *utf8, qsizetype len);
// convenience
void append(bool b) { append(b ? QCborSimpleType::True : QCborSimpleType::False); }
void appendNull() { append(QCborSimpleType::Null); }
void appendUndefined() { append(QCborSimpleType::Undefined); }
#ifndef Q_QDOC
// overloads to make normal code not complain
void append(int i) { append(qint64(i)); }
void append(uint u) { append(quint64(u)); }
#endif
#ifndef QT_NO_CAST_FROM_ASCII
void append(const char *str, qsizetype size = -1)
{ appendTextString(str, (str && size == -1) ? int(strlen(str)) : size); }
#endif
void startArray();
void startArray(quint64 count);
bool endArray();
void startMap();
void startMap(quint64 count);
bool endMap();
// no API for encoding chunked strings
private:
std::unique_ptr<QCborStreamWriterPrivate> d;
};
QT_END_NAMESPACE
#endif // QCBORSTREAMWRITER_H
|