diff options
Diffstat (limited to 'src/corelib/json')
-rw-r--r-- | src/corelib/json/qjson_p.h | 20 | ||||
-rw-r--r-- | src/corelib/json/qjsondocument.cpp | 4 | ||||
-rw-r--r-- | src/corelib/json/qjsonparser_p.h | 1 | ||||
-rw-r--r-- | src/corelib/json/qjsonwriter_p.h | 2 |
4 files changed, 24 insertions, 3 deletions
diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h index b0a634cb4a..1cffdbc250 100644 --- a/src/corelib/json/qjson_p.h +++ b/src/corelib/json/qjson_p.h @@ -151,6 +151,14 @@ public: val = qToLittleEndian(qFromLittleEndian(val) + i); return *this; } + q_littleendian &operator |=(T i) { + val = qToLittleEndian(qFromLittleEndian(val) | i); + return *this; + } + q_littleendian &operator &=(T i) { + val = qToLittleEndian(qFromLittleEndian(val) & i); + return *this; + } }; } // namespace QJsonPrivate @@ -205,6 +213,14 @@ public: *this = (uint(*this) - i); return *this; } + qle_bitfield &operator |=(uint i) { + *this = (uint(*this) | i); + return *this; + } + qle_bitfield &operator &=(uint i) { + *this = (uint(*this) & i); + return *this; + } }; template<int pos, int width> @@ -396,7 +412,7 @@ public: const ushort *uc = (const ushort *)str.unicode(); int i = 0; #ifdef __SSE2__ - for ( ; i + 16 < len; i += 16) { + for ( ; i + 16 <= len; i += 16) { __m128i chunk1 = _mm_loadu_si128((__m128i*)&uc[i]); // load __m128i chunk2 = _mm_loadu_si128((__m128i*)&uc[i + 8]); // load // pack the two vector to 16 x 8bits elements @@ -405,7 +421,7 @@ public: } # ifdef Q_PROCESSOR_X86_64 // we can do one more round, of 8 characters - if (i + 8 < len) { + if (i + 8 <= len) { __m128i chunk = _mm_loadu_si128((__m128i*)&uc[i]); // load // pack with itself, we'll discard the high part anyway chunk = _mm_packus_epi16(chunk, chunk); diff --git a/src/corelib/json/qjsondocument.cpp b/src/corelib/json/qjsondocument.cpp index 6eca54bdf0..86fd63ead4 100644 --- a/src/corelib/json/qjsondocument.cpp +++ b/src/corelib/json/qjsondocument.cpp @@ -260,7 +260,7 @@ QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidati Creates a QJsonDocument from the QVariant \a variant. If the \a variant contains any other type than a QVariantMap, - QVariantList or QStringList, the returned document + QVariantHash, QVariantList or QStringList, the returned document document is invalid. \sa toVariant() @@ -270,6 +270,8 @@ QJsonDocument QJsonDocument::fromVariant(const QVariant &variant) QJsonDocument doc; if (variant.type() == QVariant::Map) { doc.setObject(QJsonObject::fromVariantMap(variant.toMap())); + } else if (variant.type() == QVariant::Hash) { + doc.setObject(QJsonObject::fromVariantHash(variant.toHash())); } else if (variant.type() == QVariant::List) { doc.setArray(QJsonArray::fromVariantList(variant.toList())); } else if (variant.type() == QVariant::StringList) { diff --git a/src/corelib/json/qjsonparser_p.h b/src/corelib/json/qjsonparser_p.h index ceb366b0f8..e3b95109c6 100644 --- a/src/corelib/json/qjsonparser_p.h +++ b/src/corelib/json/qjsonparser_p.h @@ -51,6 +51,7 @@ // We mean it. // +#include <QtCore/private/qglobal_p.h> #include <qjsondocument.h> #include <qvarlengtharray.h> diff --git a/src/corelib/json/qjsonwriter_p.h b/src/corelib/json/qjsonwriter_p.h index b9cdbb6976..76a8460449 100644 --- a/src/corelib/json/qjsonwriter_p.h +++ b/src/corelib/json/qjsonwriter_p.h @@ -50,6 +50,8 @@ // // We mean it. // + +#include <QtCore/private/qglobal_p.h> #include <qjsonvalue.h> QT_BEGIN_NAMESPACE |