forked from bblanchon/ArduinoJson
Fixed is<T>()
This commit is contained in:
@ -194,6 +194,36 @@ inline bool JsonVariant::is<double>() const {
|
|||||||
return _type >= Internals::JSON_DOUBLE_0_DECIMALS;
|
return _type >= Internals::JSON_DOUBLE_0_DECIMALS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
inline bool JsonVariant::is<bool>() const {
|
||||||
|
return _type == Internals::JSON_BOOLEAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
inline bool JsonVariant::is<const char *>() const {
|
||||||
|
return _type == Internals::JSON_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
inline bool JsonVariant::is<JsonArray &>() const {
|
||||||
|
return _type == Internals::JSON_ARRAY;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
inline bool JsonVariant::is<const JsonArray &>() const {
|
||||||
|
return _type == Internals::JSON_ARRAY;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
inline bool JsonVariant::is<JsonObject &>() const {
|
||||||
|
return _type == Internals::JSON_OBJECT;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
inline bool JsonVariant::is<const JsonObject &>() const {
|
||||||
|
return _type == Internals::JSON_OBJECT;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline bool operator==(const JsonVariant &left, T right) {
|
inline bool operator==(const JsonVariant &left, T right) {
|
||||||
return left.as<T>() == right;
|
return left.as<T>() == right;
|
||||||
|
@ -91,34 +91,18 @@ JsonVariant &JsonVariant::operator[](const char *key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void JsonVariant::writeTo(JsonWriter &writer) const {
|
void JsonVariant::writeTo(JsonWriter &writer) const {
|
||||||
switch (_type) {
|
if (is<const JsonArray &>())
|
||||||
case JSON_ARRAY:
|
as<const JsonArray &>().writeTo(writer);
|
||||||
_content.asArray->writeTo(writer);
|
else if (is<const JsonObject &>())
|
||||||
break;
|
as<const JsonObject &>().writeTo(writer);
|
||||||
|
else if (is<const char *>())
|
||||||
case JSON_OBJECT:
|
writer.writeString(as<const char *>());
|
||||||
_content.asObject->writeTo(writer);
|
else if (is<long>())
|
||||||
break;
|
writer.writeLong(as<long>());
|
||||||
|
else if (is<bool>())
|
||||||
case JSON_STRING:
|
writer.writeBoolean(as<bool>());
|
||||||
writer.writeString(_content.asString);
|
else if (is<double>()) {
|
||||||
break;
|
uint8_t decimals = static_cast<uint8_t>(_type - JSON_DOUBLE_0_DECIMALS);
|
||||||
|
writer.writeDouble(as<double>(), decimals);
|
||||||
case JSON_LONG:
|
|
||||||
writer.writeLong(_content.asLong);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JSON_BOOLEAN:
|
|
||||||
writer.writeBoolean(_content.asBoolean);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JSON_INVALID:
|
|
||||||
case JSON_UNDEFINED:
|
|
||||||
break;
|
|
||||||
|
|
||||||
default: // >= JSON_DOUBLE_0_DECIMALS
|
|
||||||
uint8_t decimals = static_cast<uint8_t>(_type - JSON_DOUBLE_0_DECIMALS);
|
|
||||||
writer.writeDouble(_content.asDouble, decimals);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user