Skip to content

Commit 59a081d

Browse files
QCborStreamWriter: add append(QUtf8StringView)
And test appendTextString() through it, which was apparently not directly tested until now (only through appending Latin1 and UTF-16 strings). [ChangeLog][QtCore][QCborStreamWriter] Added a QUtf8StringView overload of append(). Change-Id: I4d306ab1561a4fd6e9a8fffd65f352bdb78b96b9 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
1 parent c17a934 commit 59a081d

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

src/corelib/serialization/qcborstreamwriter.cpp

+13-1
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,18 @@ void QCborStreamWriter::append(QCborNegativeInteger n)
419419
QCborStreamReader::readByteArray()
420420
*/
421421

422+
/*!
423+
\fn void QCborStreamWriter::append(QUtf8StringView str)
424+
\since 6.10
425+
\overload
426+
427+
Appends the UTF-8 string viewed by \a str to the stream, creating a CBOR
428+
Text String value. QCborStreamWriter will attempt to write the entire string
429+
in one chunk.
430+
431+
\sa appendTextString(), QCborStreamReader::isString(), QCborStreamReader::readString()
432+
*/
433+
422434
/*!
423435
\overload
424436
@@ -435,7 +447,7 @@ void QCborStreamWriter::append(QCborNegativeInteger n)
435447
determine whether the contents are US-ASCII or not. If the string is found
436448
to contain characters outside of US-ASCII, it will allocate memory and
437449
convert to UTF-8. If this check is unnecessary, use appendTextString()
438-
instead.
450+
instead or the overload taking a \l QUtf8StringView.
439451
440452
\sa QCborStreamReader::isString(), QCborStreamReader::readString()
441453
*/

src/corelib/serialization/qcborstreamwriter.h

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class Q_CORE_EXPORT QCborStreamWriter
4949
void append(QByteArrayView ba) { appendByteString(ba.data(), ba.size()); }
5050
void append(QLatin1StringView str);
5151
void append(QStringView str);
52+
void append(QUtf8StringView str) { appendTextString(str.data(), str.size()); }
5253
void append(QCborTag tag);
5354
void append(QCborKnownTags tag) { append(QCborTag(tag)); }
5455
void append(QCborSimpleType st);

tests/auto/corelib/serialization/qcborstreamwriter/tst_qcborstreamwriter.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ void tst_QCborStreamWriter::nonAsciiStrings()
189189

190190
// will be wrong if !isLatin1
191191
QByteArray latin1 = input.toLatin1();
192+
QByteArray utf8 = input.toUtf8();
192193

193194
if (useDevice) {
194195
{
@@ -199,6 +200,14 @@ void tst_QCborStreamWriter::nonAsciiStrings()
199200
QCOMPARE(buffer.data(), output);
200201
}
201202

203+
{
204+
QBuffer buffer;
205+
buffer.open(QIODevice::WriteOnly);
206+
QCborStreamWriter writer(&buffer);
207+
writer.append(QUtf8StringView(utf8));
208+
QCOMPARE(buffer.data(), output);
209+
}
210+
202211
if (isLatin1) {
203212
QBuffer buffer;
204213
buffer.open(QIODevice::WriteOnly);
@@ -214,6 +223,13 @@ void tst_QCborStreamWriter::nonAsciiStrings()
214223
QCOMPARE(buffer, output);
215224
}
216225

226+
{
227+
QByteArray buffer;
228+
QCborStreamWriter writer(&buffer);
229+
writer.append(QUtf8StringView(utf8));
230+
QCOMPARE(buffer, output);
231+
}
232+
217233
if (isLatin1) {
218234
QByteArray buffer;
219235
QCborStreamWriter writer(&buffer);

0 commit comments

Comments
 (0)