diff --git a/src/core/qmjsonarray.cpp b/src/core/qmjsonarray.cpp index 020971a..acfc08c 100644 --- a/src/core/qmjsonarray.cpp +++ b/src/core/qmjsonarray.cpp @@ -50,7 +50,7 @@ void QMJsonArray::reserve(int32_t alloc) void QMJsonArray::clear(void) { - for (const auto &value : mList) + foreach (const auto &value, mList) { if (value->isObject() == true) { @@ -153,7 +153,7 @@ void QMJsonArray::unite(const QMPointer &array, QMJsonArrayUnitePol if (array.isNull() == true) return; - for (const auto &value : array->values()) + foreach (const auto &value, array->values()) { switch (policy) { @@ -451,7 +451,7 @@ QDebug operator<<(QDebug dbg, const QMJsonArray &array) dbg.nospace() << "QMJsonArray["; - for (const auto &value : array.values()) + foreach (const auto &value, array.values()) { if (started == true) dbg << ","; diff --git a/src/core/qmjsonobject.cpp b/src/core/qmjsonobject.cpp index c22ed92..0ba79d9 100644 --- a/src/core/qmjsonobject.cpp +++ b/src/core/qmjsonobject.cpp @@ -447,7 +447,7 @@ QDebug operator<<(QDebug dbg, const QMJsonObject &object) dbg.nospace() << "QMJsonObject{"; - for (const auto &key : object.keys()) + foreach (const auto &key, object.keys()) { if (started == true) dbg << ","; diff --git a/src/core/qmjsontype_qmjsonarray.cpp b/src/core/qmjsontype_qmjsonarray.cpp index a3ce93b..60e4fc3 100644 --- a/src/core/qmjsontype_qmjsonarray.cpp +++ b/src/core/qmjsontype_qmjsonarray.cpp @@ -76,7 +76,7 @@ QString QM_JSON_EXPORT QMJsonType >::toJson(int32_t tab, { json += '['; - for (const auto &value : array->values()) + foreach (const auto &value, array->values()) { json += value->toJson((QMJsonFormat)tab, sort); json += ','; @@ -90,7 +90,7 @@ QString QM_JSON_EXPORT QMJsonType >::toJson(int32_t tab, tab += 4; auto space = QString(tab, ' '); - for (const auto &value : array->values()) + foreach (const auto &value, array->values()) { json += "\n"; json += space; diff --git a/src/core/qmjsontype_qmjsonobject.cpp b/src/core/qmjsontype_qmjsonobject.cpp index ed40189..235d659 100644 --- a/src/core/qmjsontype_qmjsonobject.cpp +++ b/src/core/qmjsontype_qmjsonobject.cpp @@ -133,7 +133,7 @@ QString QM_JSON_EXPORT QMJsonType >::toJson(int32_t tab, QStringList keys = object->keys(); keys.sort(convertQMJsonSort(sort)); - for (const auto &key : keys) + foreach (const auto &key, keys) { const auto &value = object->value(key); @@ -184,7 +184,7 @@ QString QM_JSON_EXPORT QMJsonType >::toJson(int32_t tab, QStringList keys = object->keys(); keys.sort(convertQMJsonSort(sort)); - for (const auto &key : keys) + foreach (const auto &key, keys) { const auto &value = object->value(key); diff --git a/src/core/qmjsontype_qstring.cpp b/src/core/qmjsontype_qstring.cpp index a26f03d..5597c78 100644 --- a/src/core/qmjsontype_qstring.cpp +++ b/src/core/qmjsontype_qstring.cpp @@ -40,47 +40,46 @@ QMPointer QM_JSON_EXPORT QMJsonType::fromJson(const QStrin { QMJsonValue::verifyIndex(json, index); - switch (json.at(index).toLatin1()) + auto c = json.at(index); + if (c == '\\') { - case '\\': + index++; + QMJsonValue::verifyIndex(json, index); + + const int32_t CHARS_IN_UNICODE_ESCAPE = 4; + const int32_t HEX_BASE = 16; + auto cc = json.at(index); + if (cc == '"') + result += '"'; + else if (cc == '\\') + result += '\\'; + else if (cc == '/') + result += '/'; + else if (cc == 'b') + result += '\b'; + else if (cc == 'f') + result += '\f'; + else if (cc == 'n') + result += '\n'; + else if (cc == 'r') + result += '\r'; + else if (cc == 't') + result += '\t'; + else if (cc == 'u') { - index++; - QMJsonValue::verifyIndex(json, index); - - const int32_t CHARS_IN_UNICODE_ESCAPE = 4; - const int32_t HEX_BASE = 16; - switch (json.at(index).toLatin1()) - { - case '"': result += '"'; break; - case '\\': result += '\\'; break; - case '/': result += '/'; break; - case 'b': result += '\b'; break; - case 'f': result += '\f'; break; - case 'n': result += '\n'; break; - case 'r': result += '\r'; break; - case 't': result += '\t'; break; - case 'u': - QMJsonValue::verifyIndex(json, index + CHARS_IN_UNICODE_ESCAPE); - result += json.mid(index + 1, CHARS_IN_UNICODE_ESCAPE).toUShort(Q_NULLPTR, HEX_BASE); - index += CHARS_IN_UNICODE_ESCAPE; - break; - - default: - break; - }; - - index++; - break; + QMJsonValue::verifyIndex(json, index + CHARS_IN_UNICODE_ESCAPE); + result += json.mid(index + 1, CHARS_IN_UNICODE_ESCAPE).toUShort(Q_NULLPTR, HEX_BASE); + index += CHARS_IN_UNICODE_ESCAPE; } - case '"': - index++; - return QMPointer(new QMJsonValue(result)); - - default: - result += json.at(index++); - break; - }; + index++; + } else if (c == '"') + { + index++; + return QMPointer(new QMJsonValue(result)); + } + else + result += json.at(index++); } return QMPointer(); @@ -98,45 +97,28 @@ QString QM_JSON_EXPORT QMJsonType::toJson(int32_t tab, QMJsonSort sort) result += '"'; for (int i = 0; i < str.length(); i++) { - auto c = str.at(i).toLatin1(); - - switch (c) - { - case '\\': - result += "\\\\"; - break; - case '"': - result += "\\\""; - break; - - case '/': - result += "\\/"; - break; - - case '\b': - result += "\\b"; - break; - - case '\f': - result += "\\f"; - break; - - case '\n': - result += "\\n"; - break; - - case '\r': - result += "\\r"; - break; - - case '\t': - result += "\\t"; - break; - - default: - result += c; - break; - } + auto c = str.at(i); + + if (c =='\\') + result += "\\\\"; + else if (c =='"') + result += "\\\""; +#ifdef QMJSON_ESCAPE_SLASH + else if (c =='/') + result += "\\/"; +#endif + else if (c =='\b') + result += "\\b"; + else if (c =='\f') + result += "\\f"; + else if (c =='\n') + result += "\\n"; + else if (c =='\r') + result += "\\r"; + else if (c =='\t') + result += "\\t"; + else + result += c; } result += '"'; diff --git a/src/core/qmjsonvalue.cpp b/src/core/qmjsonvalue.cpp index 27b9793..7fe281a 100644 --- a/src/core/qmjsonvalue.cpp +++ b/src/core/qmjsonvalue.cpp @@ -700,7 +700,7 @@ QVariant QMJsonValue::toVariant(void) { auto list = QVariantList(); - for (const auto &value : this->toArray()->values()) + foreach (const auto &value, this->toArray()->values()) list.append(value->toVariant()); return QVariant::fromValue(list); @@ -711,7 +711,7 @@ QVariant QMJsonValue::toVariant(void) auto hash = QVariantHash(); const auto &object = this->toObject(); - for (const auto &key : object->keys()) + foreach (const auto &key, object->keys()) hash[key] = object->value(key)->toVariant(); return QVariant::fromValue(hash); @@ -746,7 +746,7 @@ QMPointer QMJsonValue::fromVariant(const QVariant &value) { auto array = QMPointer(new QMJsonArray); - for (const auto &variant : value.value()) + foreach (const auto &variant, value.value()) array->append(QMJsonValue::fromVariant(variant)); return QMPointer(new QMJsonValue(array)); @@ -1070,6 +1070,7 @@ QMPointer QMJsonValue::fromJson(const QString &json, int32_t &index case ']': case '}': QMJsonValue::throwError(json, index, "Unexpected closing bracket. Are there too many commas?"); + break; default: return QMJsonType::fromJson(json, index);