summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-11-10 11:36:18 +0100
committerLiang Qi <liang.qi@qt.io>2018-11-10 11:38:40 +0100
commit58437fb125f60c11ba8e97c914fa8db8c89c7373 (patch)
treef47ed59073984ec76034155bc04d3d987b192d2e /src/corelib/serialization
parent76bb804405f424708fffec502788995ea91206b8 (diff)
parentb20c15f2041205a1cab98fbaf9560a3e2e0d6367 (diff)
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts: src/corelib/serialization/qcborcommon.h src/corelib/tools/qlocale_data_p.h tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp Done-with: Edward Welbourne <edward.welbourne@qt.io> Change-Id: Ibed987f6d77a0294f78f67d78625237616082416
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r--src/corelib/serialization/qcborcommon.h10
-rw-r--r--src/corelib/serialization/qcborstream.cpp2
-rw-r--r--src/corelib/serialization/qcborvalue.h2
-rw-r--r--src/corelib/serialization/qtextstream.cpp36
-rw-r--r--src/corelib/serialization/qtextstream.h2
-rw-r--r--src/corelib/serialization/qtextstream_p.h6
-rw-r--r--src/corelib/serialization/qxmlstream.cpp42
-rw-r--r--src/corelib/serialization/qxmlstream.g4
-rw-r--r--src/corelib/serialization/qxmlstream.h2
-rw-r--r--src/corelib/serialization/qxmlstream_p.h4
10 files changed, 62 insertions, 48 deletions
diff --git a/src/corelib/serialization/qcborcommon.h b/src/corelib/serialization/qcborcommon.h
index 0147f85de8..3dfe50cd09 100644
--- a/src/corelib/serialization/qcborcommon.h
+++ b/src/corelib/serialization/qcborcommon.h
@@ -138,6 +138,16 @@ QDataStream &operator<<(QDataStream &ds, QCborSimpleType st);
QDataStream &operator>>(QDataStream &ds, QCborSimpleType &st);
#endif
+inline uint qHash(QCborSimpleType tag, uint seed = 0)
+{
+ return qHash(quint8(tag), seed);
+}
+
+inline uint qHash(QCborTag tag, uint seed = 0)
+{
+ return qHash(quint64(tag), seed);
+}
+
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QCborTag)
diff --git a/src/corelib/serialization/qcborstream.cpp b/src/corelib/serialization/qcborstream.cpp
index b7ba85281f..39f9e2e70a 100644
--- a/src/corelib/serialization/qcborstream.cpp
+++ b/src/corelib/serialization/qcborstream.cpp
@@ -1795,6 +1795,8 @@ public:
preread();
if (CborError err = cbor_parser_init_reader(nullptr, &parser, &currentElement, this))
handleError(err);
+ else
+ lastError = { QCborError::NoError };
}
char *bufferPtr()
diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h
index 1088558074..e6e73e1fb6 100644
--- a/src/corelib/serialization/qcborvalue.h
+++ b/src/corelib/serialization/qcborvalue.h
@@ -72,7 +72,7 @@ class QDataStream;
struct QCborParserError
{
qint64 offset = 0;
- QCborError error = {};
+ QCborError error = { QCborError::NoError };
QString errorString() const { return error.toString(); }
};
diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp
index 05a5a55926..fb7b677b2d 100644
--- a/src/corelib/serialization/qtextstream.cpp
+++ b/src/corelib/serialization/qtextstream.cpp
@@ -326,7 +326,7 @@ QT_BEGIN_NAMESPACE
*/
QTextStreamPrivate::QTextStreamPrivate(QTextStream *q_ptr)
:
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
readConverterSavedState(0),
#endif
readConverterSavedStateOffset(0),
@@ -347,12 +347,12 @@ QTextStreamPrivate::~QTextStreamPrivate()
#endif
delete device;
}
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
delete readConverterSavedState;
#endif
}
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
static void resetCodecConverterStateHelper(QTextCodec::ConverterState *state)
{
state->~ConverterState();
@@ -401,7 +401,7 @@ void QTextStreamPrivate::reset()
readBufferStartDevicePos = 0;
lastTokenSize = 0;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
codec = QTextCodec::codecForLocale();
resetCodecConverterStateHelper(&readConverterState);
resetCodecConverterStateHelper(&writeConverterState);
@@ -461,7 +461,7 @@ bool QTextStreamPrivate::fillReadBuffer(qint64 maxBytes)
if (bytesRead <= 0)
return false;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
// codec auto detection, explicitly defaults to locale encoding if the
// codec has been set to 0.
if (!codec || autoDetectUnicode) {
@@ -485,7 +485,7 @@ bool QTextStreamPrivate::fillReadBuffer(qint64 maxBytes)
#endif
int oldReadBufferSize = readBuffer.size();
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
// convert to unicode
readBuffer += Q_LIKELY(codec) ? codec->toUnicode(buf, bytesRead, &readConverterState)
: QString::fromLatin1(buf, bytesRead);
@@ -567,7 +567,7 @@ void QTextStreamPrivate::flushWriteBuffer()
}
#endif
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (!codec)
codec = QTextCodec::codecForLocale();
#if defined (QTEXTSTREAM_DEBUG)
@@ -786,7 +786,7 @@ inline void QTextStreamPrivate::consume(int size)
*/
inline void QTextStreamPrivate::saveConverterState(qint64 newPos)
{
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (readConverterState.d) {
// converter cannot be copied, so don't save anything
// don't update readBufferStartDevicePos either
@@ -807,7 +807,7 @@ inline void QTextStreamPrivate::saveConverterState(qint64 newPos)
*/
inline void QTextStreamPrivate::restoreToSavedConverterState()
{
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (readConverterSavedState) {
// we have a saved state
// that means the converter can be copied
@@ -1202,7 +1202,7 @@ bool QTextStream::seek(qint64 pos)
return false;
d->resetReadBuffer();
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
// Reset the codec converter states.
resetCodecConverterStateHelper(&d->readConverterState);
resetCodecConverterStateHelper(&d->writeConverterState);
@@ -1253,7 +1253,7 @@ qint64 QTextStream::pos() const
QTextStreamPrivate *thatd = const_cast<QTextStreamPrivate *>(d);
thatd->readBuffer.clear();
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
thatd->restoreToSavedConverterState();
if (d->readBufferStartDevicePos == 0)
thatd->autoDetectUnicode = true;
@@ -3036,7 +3036,7 @@ QTextStream &ws(QTextStream &stream)
Equivalent to QTextStream::setRealNumberPrecision(\a precision).
*/
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
/*!
\relates QTextStream
@@ -3111,15 +3111,15 @@ QTextCodec *QTextStream::codec() const
}
/*!
- If \a enabled is true, QTextStream will attempt to detect Unicode
- encoding by peeking into the stream data to see if it can find the
- UTF-16 or UTF-32 BOM (Byte Order Mark). If this mark is found, QTextStream
- will replace the current codec with the UTF codec.
+ If \a enabled is true, QTextStream will attempt to detect Unicode encoding
+ by peeking into the stream data to see if it can find the UTF-8, UTF-16, or
+ UTF-32 Byte Order Mark (BOM). If this mark is found, QTextStream will
+ replace the current codec with the UTF codec.
This function can be used together with setCodec(). It is common
to set the codec to UTF-8, and then enable UTF-16 detection.
- \sa autoDetectUnicode(), setCodec()
+ \sa autoDetectUnicode(), setCodec(), QTextCodec::codecForUtfText()
*/
void QTextStream::setAutoDetectUnicode(bool enabled)
{
@@ -3131,7 +3131,7 @@ void QTextStream::setAutoDetectUnicode(bool enabled)
Returns \c true if automatic Unicode detection is enabled, otherwise
returns \c false. Automatic Unicode detection is enabled by default.
- \sa setAutoDetectUnicode(), setCodec()
+ \sa setAutoDetectUnicode(), setCodec(), QTextCodec::codecForUtfText()
*/
bool QTextStream::autoDetectUnicode() const
{
diff --git a/src/corelib/serialization/qtextstream.h b/src/corelib/serialization/qtextstream.h
index ee90d01779..1d86a18b9c 100644
--- a/src/corelib/serialization/qtextstream.h
+++ b/src/corelib/serialization/qtextstream.h
@@ -98,7 +98,7 @@ public:
explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly);
virtual ~QTextStream();
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
void setCodec(QTextCodec *codec);
void setCodec(const char *codecName);
QTextCodec *codec() const;
diff --git a/src/corelib/serialization/qtextstream_p.h b/src/corelib/serialization/qtextstream_p.h
index a642beddc4..172824d27d 100644
--- a/src/corelib/serialization/qtextstream_p.h
+++ b/src/corelib/serialization/qtextstream_p.h
@@ -54,7 +54,7 @@
#include <QtCore/private/qglobal_p.h>
#include "qtextstream.h"
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
#include "qtextcodec.h"
#endif
@@ -118,7 +118,7 @@ public:
int stringOffset;
QIODevice::OpenMode stringOpenMode;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
// codec
QTextCodec *codec;
QTextCodec::ConverterState readConverterState;
@@ -141,7 +141,7 @@ public:
int lastTokenSize;
bool deleteDevice;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
bool autoDetectUnicode;
#endif
diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
index 5002848d83..827996ee2d 100644
--- a/src/corelib/serialization/qxmlstream.cpp
+++ b/src/corelib/serialization/qxmlstream.cpp
@@ -45,7 +45,9 @@
#include <qdebug.h>
#include <qfile.h>
#include <stdio.h>
+#if QT_CONFIG(textcodec)
#include <qtextcodec.h>
+#endif
#include <qstack.h>
#include <qbuffer.h>
#ifndef QT_BOOTSTRAPPED
@@ -420,7 +422,7 @@ QXmlStreamReader::QXmlStreamReader(const QString &data)
: d_ptr(new QXmlStreamReaderPrivate(this))
{
Q_D(QXmlStreamReader);
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
d->dataBuffer = data.toLatin1();
#else
d->dataBuffer = d->codec->fromUnicode(data);
@@ -515,7 +517,7 @@ void QXmlStreamReader::addData(const QString &data)
{
Q_D(QXmlStreamReader);
d->lockEncoding = true;
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
addData(data.toLatin1());
#else
addData(d->codec->fromUnicode(data));
@@ -792,7 +794,7 @@ QXmlStreamReaderPrivate::QXmlStreamReaderPrivate(QXmlStreamReader *q)
{
device = 0;
deleteDevice = false;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
decoder = 0;
#endif
stack_size = 64;
@@ -838,7 +840,7 @@ void QXmlStreamReaderPrivate::init()
lineNumber = lastLineStart = characterOffset = 0;
readBufferPos = 0;
nbytesread = 0;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
codec = QTextCodec::codecForMib(106); // utf8
delete decoder;
decoder = 0;
@@ -903,7 +905,7 @@ inline void QXmlStreamReaderPrivate::reallocateStack()
QXmlStreamReaderPrivate::~QXmlStreamReaderPrivate()
{
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
delete decoder;
#endif
free(sym_stack);
@@ -1482,7 +1484,7 @@ uint QXmlStreamReaderPrivate::getChar_helper()
characterOffset += readBufferPos;
readBufferPos = 0;
readBuffer.resize(0);
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (decoder)
#endif
nbytesread = 0;
@@ -1503,7 +1505,7 @@ uint QXmlStreamReaderPrivate::getChar_helper()
return StreamEOF;
}
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (!decoder) {
if (nbytesread < 4) { // the 4 is to cover 0xef 0xbb 0xbf plus
// one extra for the utf8 codec
@@ -1545,7 +1547,7 @@ uint QXmlStreamReaderPrivate::getChar_helper()
}
#else
readBuffer = QString::fromLatin1(rawReadBuffer.data(), nbytesread);
-#endif // QT_NO_TEXTCODEC
+#endif // textcodec
readBuffer.reserve(1); // keep capacity when calling resize() next time
@@ -1816,7 +1818,7 @@ void QXmlStreamReaderPrivate::startDocument()
if (!QXmlUtils::isEncName(value))
err = QXmlStream::tr("%1 is an invalid encoding name.").arg(value);
else {
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
readBuffer = QString::fromLatin1(rawReadBuffer.data(), nbytesread);
#else
QTextCodec *const newCodec = QTextCodec::codecForName(value.toLatin1());
@@ -1828,7 +1830,7 @@ void QXmlStreamReaderPrivate::startDocument()
decoder = codec->makeDecoder();
decoder->toUnicode(&readBuffer, rawReadBuffer.data(), nbytesread);
}
-#endif // QT_NO_TEXTCODEC
+#endif // textcodec
}
} else if (prefix.isEmpty() && key == QLatin1String("standalone")) {
hasStandalone = true;
@@ -2966,7 +2968,7 @@ public:
~QXmlStreamWriterPrivate() {
if (deleteDevice)
delete device;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
delete encoder;
#endif
}
@@ -2993,7 +2995,7 @@ public:
NamespaceDeclaration emptyNamespace;
int lastNamespaceDeclaration;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
QTextCodec *codec;
QTextEncoder *encoder;
#endif
@@ -3015,7 +3017,7 @@ QXmlStreamWriterPrivate::QXmlStreamWriterPrivate(QXmlStreamWriter *q)
device = 0;
stringDevice = 0;
deleteDevice = false;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
codec = QTextCodec::codecForMib(106); // utf8
encoder = codec->makeEncoder(QTextCodec::IgnoreHeader); // no byte order mark for utf8
#endif
@@ -3032,7 +3034,7 @@ QXmlStreamWriterPrivate::QXmlStreamWriterPrivate(QXmlStreamWriter *q)
void QXmlStreamWriterPrivate::checkIfASCIICompatibleCodec()
{
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
Q_ASSERT(encoder);
// test ASCII-compatibility using the letter 'a'
QChar letterA = QLatin1Char('a');
@@ -3052,7 +3054,7 @@ void QXmlStreamWriterPrivate::write(const QStringRef &s)
if (device) {
if (hasIoError)
return;
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
QByteArray bytes = s.toLatin1();
#else
QByteArray bytes = encoder->fromUnicode(s.constData(), s.size());
@@ -3075,7 +3077,7 @@ void QXmlStreamWriterPrivate::write(const QString &s)
if (device) {
if (hasIoError)
return;
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
QByteArray bytes = s.toLatin1();
#else
QByteArray bytes = encoder->fromUnicode(s);
@@ -3324,7 +3326,7 @@ QIODevice *QXmlStreamWriter::device() const
}
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
/*!
Sets the codec for this stream to \a codec. The codec is used for
encoding any data that is written. By default, QXmlStreamWriter
@@ -3382,7 +3384,7 @@ QTextCodec *QXmlStreamWriter::codec() const
Q_D(const QXmlStreamWriter);
return d->codec;
}
-#endif // QT_NO_TEXTCODEC
+#endif // textcodec
/*!
\property QXmlStreamWriter::autoFormatting
@@ -3847,7 +3849,7 @@ void QXmlStreamWriter::writeStartDocument(const QString &version)
d->write(version);
if (d->device) { // stringDevice does not get any encoding
d->write("\" encoding=\"");
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
d->write("iso-8859-1");
#else
const QByteArray name = d->codec->name();
@@ -3871,7 +3873,7 @@ void QXmlStreamWriter::writeStartDocument(const QString &version, bool standalon
d->write(version);
if (d->device) { // stringDevice does not get any encoding
d->write("\" encoding=\"");
-#ifdef QT_NO_TEXTCODEC
+#if !QT_CONFIG(textcodec)
d->write("iso-8859-1");
#else
const QByteArray name = d->codec->name();
diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g
index fd69a6e4af..10bfcd491c 100644
--- a/src/corelib/serialization/qxmlstream.g
+++ b/src/corelib/serialization/qxmlstream.g
@@ -291,7 +291,7 @@ public:
QIODevice *device;
bool deleteDevice;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
QTextCodec *codec;
QTextDecoder *decoder;
#endif
@@ -584,7 +584,7 @@ bool QXmlStreamReaderPrivate::parse()
lockEncoding = true;
documentVersion.clear();
documentEncoding.clear();
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (decoder && decoder->hasFailure()) {
raiseWellFormedError(QXmlStream::tr("Encountered incorrectly encoded content."));
readBuffer.clear();
diff --git a/src/corelib/serialization/qxmlstream.h b/src/corelib/serialization/qxmlstream.h
index 2350d12dd6..d30c6bc01f 100644
--- a/src/corelib/serialization/qxmlstream.h
+++ b/src/corelib/serialization/qxmlstream.h
@@ -478,7 +478,7 @@ public:
void setDevice(QIODevice *device);
QIODevice *device() const;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
void setCodec(QTextCodec *codec);
void setCodec(const char *codecName);
QTextCodec *codec() const;
diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
index f8b1ede943..61f501f81b 100644
--- a/src/corelib/serialization/qxmlstream_p.h
+++ b/src/corelib/serialization/qxmlstream_p.h
@@ -788,7 +788,7 @@ public:
QIODevice *device;
bool deleteDevice;
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
QTextCodec *codec;
QTextDecoder *decoder;
#endif
@@ -1081,7 +1081,7 @@ bool QXmlStreamReaderPrivate::parse()
lockEncoding = true;
documentVersion.clear();
documentEncoding.clear();
-#ifndef QT_NO_TEXTCODEC
+#if QT_CONFIG(textcodec)
if (decoder && decoder->hasFailure()) {
raiseWellFormedError(QXmlStream::tr("Encountered incorrectly encoded content."));
readBuffer.clear();