From fa8d021fa6fcb040fb702b6ffd2deee52a3b748a Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 30 Jul 2020 17:36:14 +0200 Subject: Convert a couple of APIs to use views Try to get rid of APIs that use raw 'const {char, QChar} *, length' pairs. Instead, use QByteArrayView or QStringView. As QStringConverter is a new class, simply change the API to what we'd like to have. Also adjust hidden API in QStringBuilder and friends. Change-Id: I897d47f63a7b965f5574a1e51da64147f9e981f6 Reviewed-by: Lars Knoll --- src/corelib/serialization/qcborstreamreader.cpp | 4 ++-- src/corelib/serialization/qcborvalue.cpp | 2 +- src/corelib/serialization/qcborvalue_p.h | 4 ++-- src/corelib/serialization/qtextstream.cpp | 6 +++--- src/corelib/serialization/qxmlstream.cpp | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src/corelib/serialization') diff --git a/src/corelib/serialization/qcborstreamreader.cpp b/src/corelib/serialization/qcborstreamreader.cpp index 22cb04a8ef..3adcdfdfbe 100644 --- a/src/corelib/serialization/qcborstreamreader.cpp +++ b/src/corelib/serialization/qcborstreamreader.cpp @@ -1061,7 +1061,7 @@ bool QCborStreamReader::next(int maxRecursion) d->handleError(CborErrorDataTooLarge); break; } - if (isString() && !QUtf8::isValidUtf8(r.data, r.data.size()).isValidUtf8) { + if (isString() && !QUtf8::isValidUtf8(r.data).isValidUtf8) { d->handleError(CborErrorInvalidUtf8TextString); break; } @@ -1350,7 +1350,7 @@ QCborStreamReader::StringResult QCborStreamReader::_readString_helper() err = CborErrorDataTooLarge; } else { QStringConverter::State cs(QStringConverter::Flag::Stateless); - result.data = QUtf8::convertToUnicode(r.data, r.data.size(), &cs); + result.data = QUtf8::convertToUnicode(r.data, &cs); if (cs.invalidChars != 0 || cs.remainingChars != 0) err = CborErrorInvalidUtf8TextString; } diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp index 16f9b1cf05..c7a2198644 100644 --- a/src/corelib/serialization/qcborvalue.cpp +++ b/src/corelib/serialization/qcborvalue.cpp @@ -1621,7 +1621,7 @@ void QCborContainerPrivate::decodeStringFromCbor(QCborStreamReader &reader) while (r.status == QCborStreamReader::Ok) { if (e.type == QCborValue::String && len) { // verify UTF-8 string validity - auto utf8result = QUtf8::isValidUtf8(dataPtr() + data.size() - len, len); + auto utf8result = QUtf8::isValidUtf8(QByteArrayView(dataPtr(), data.size()).last(len)); if (!utf8result.isValidUtf8) { r.status = QCborStreamReader::Error; setErrorInReader(reader, { QCborError::InvalidUtf8String }); diff --git a/src/corelib/serialization/qcborvalue_p.h b/src/corelib/serialization/qcborvalue_p.h index 3b1e45a2a8..d68d44e7be 100644 --- a/src/corelib/serialization/qcborvalue_p.h +++ b/src/corelib/serialization/qcborvalue_p.h @@ -364,12 +364,12 @@ public: static int compareUtf8(const QtCbor::ByteData *b, const QLatin1String &s) { - return QUtf8::compareUtf8(b->byte(), b->len, s); + return QUtf8::compareUtf8(QByteArrayView(b->byte(), b->len), s); } static int compareUtf8(const QtCbor::ByteData *b, QStringView s) { - return QUtf8::compareUtf8(b->byte(), b->len, s.data(), s.size()); + return QUtf8::compareUtf8(QByteArrayView(b->byte(), b->len), s); } template diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp index 042dcf6350..137d736b30 100644 --- a/src/corelib/serialization/qtextstream.cpp +++ b/src/corelib/serialization/qtextstream.cpp @@ -434,7 +434,7 @@ bool QTextStreamPrivate::fillReadBuffer(qint64 maxBytes) if (autoDetectUnicode) { autoDetectUnicode = false; - auto e = QStringConverter::encodingForData(buf, bytesRead); + auto e = QStringConverter::encodingForData(QByteArrayView(buf, bytesRead)); // QStringConverter::Locale implies unknown, so keep the current encoding if (e) { encoding = *e; @@ -452,7 +452,7 @@ bool QTextStreamPrivate::fillReadBuffer(qint64 maxBytes) #endif int oldReadBufferSize = readBuffer.size(); - readBuffer += toUtf16(buf, bytesRead); + readBuffer += toUtf16(QByteArrayView(buf, bytesRead)); // remove all '\r\n' in the string. if (readBuffer.size() > oldReadBufferSize && textModeEnabled) { @@ -2247,7 +2247,7 @@ QTextStream &QTextStream::operator>>(char *c) } QStringEncoder encoder(QStringConverter::Utf8); - char *e = encoder.appendToBuffer(c, ptr, length); + char *e = encoder.appendToBuffer(c, QStringView(ptr, length)); *e = '\0'; d->consumeLastToken(); return *this; diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp index f70286ee29..70f9c9f726 100644 --- a/src/corelib/serialization/qxmlstream.cpp +++ b/src/corelib/serialization/qxmlstream.cpp @@ -1505,14 +1505,14 @@ uint QXmlStreamReaderPrivate::getChar_helper() atEnd = true; return StreamEOF; } - auto encoding = QStringDecoder::encodingForData(rawReadBuffer.constData(), rawReadBuffer.size(), char16_t('<')); + auto encoding = QStringDecoder::encodingForData(rawReadBuffer, char16_t('<')); if (!encoding) // assume utf-8 encoding = QStringDecoder::Utf8; decoder = QStringDecoder(*encoding); } - readBuffer = decoder(rawReadBuffer.constData(), nbytesread); + readBuffer = decoder(QByteArrayView(rawReadBuffer).first(nbytesread)); if (lockEncoding && decoder.hasError()) { raiseWellFormedError(QXmlStream::tr("Encountered incorrectly encoded content.")); @@ -1794,7 +1794,7 @@ void QXmlStreamReaderPrivate::startDocument() if (!decoder.isValid()) { err = QXmlStream::tr("Encoding %1 is unsupported").arg(value); } else { - readBuffer = decoder(rawReadBuffer.data(), nbytesread); + readBuffer = decoder(QByteArrayView(rawReadBuffer).first(nbytesread)); } } } -- cgit v1.2.3