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>
This commit is contained in:
Thiago Macieira 2025-02-13 08:22:26 -08:00
parent c17a934197
commit 59a081dc7e
3 changed files with 30 additions and 1 deletions

View File

@ -419,6 +419,18 @@ void QCborStreamWriter::append(QCborNegativeInteger n)
QCborStreamReader::readByteArray()
*/
/*!
\fn void QCborStreamWriter::append(QUtf8StringView str)
\since 6.10
\overload
Appends the UTF-8 string viewed by \a str to the stream, creating a CBOR
Text String value. QCborStreamWriter will attempt to write the entire string
in one chunk.
\sa appendTextString(), QCborStreamReader::isString(), QCborStreamReader::readString()
*/
/*!
\overload
@ -435,7 +447,7 @@ void QCborStreamWriter::append(QCborNegativeInteger n)
determine whether the contents are US-ASCII or not. If the string is found
to contain characters outside of US-ASCII, it will allocate memory and
convert to UTF-8. If this check is unnecessary, use appendTextString()
instead.
instead or the overload taking a \l QUtf8StringView.
\sa QCborStreamReader::isString(), QCborStreamReader::readString()
*/

View File

@ -49,6 +49,7 @@ public:
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);

View File

@ -189,6 +189,7 @@ void tst_QCborStreamWriter::nonAsciiStrings()
// will be wrong if !isLatin1
QByteArray latin1 = input.toLatin1();
QByteArray utf8 = input.toUtf8();
if (useDevice) {
{
@ -199,6 +200,14 @@ void tst_QCborStreamWriter::nonAsciiStrings()
QCOMPARE(buffer.data(), output);
}
{
QBuffer buffer;
buffer.open(QIODevice::WriteOnly);
QCborStreamWriter writer(&buffer);
writer.append(QUtf8StringView(utf8));
QCOMPARE(buffer.data(), output);
}
if (isLatin1) {
QBuffer buffer;
buffer.open(QIODevice::WriteOnly);
@ -214,6 +223,13 @@ void tst_QCborStreamWriter::nonAsciiStrings()
QCOMPARE(buffer, output);
}
{
QByteArray buffer;
QCborStreamWriter writer(&buffer);
writer.append(QUtf8StringView(utf8));
QCOMPARE(buffer, output);
}
if (isLatin1) {
QByteArray buffer;
QCborStreamWriter writer(&buffer);