summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-07-30 17:36:14 +0200
committerMÃ¥rten Nordheim <marten.nordheim@qt.io>2020-10-06 11:16:36 +0200
commitfa8d021fa6fcb040fb702b6ffd2deee52a3b748a (patch)
tree15c6a311dcf9e6c64a162ba62d2d9a83846ba159 /src/corelib/serialization
parent40874625f996899ca1e976f0240da697e784c2c6 (diff)
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 <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r--src/corelib/serialization/qcborstreamreader.cpp4
-rw-r--r--src/corelib/serialization/qcborvalue.cpp2
-rw-r--r--src/corelib/serialization/qcborvalue_p.h4
-rw-r--r--src/corelib/serialization/qtextstream.cpp6
-rw-r--r--src/corelib/serialization/qxmlstream.cpp6
5 files changed, 11 insertions, 11 deletions
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<QString> 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<typename String>
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));
}
}
}