forked from bblanchon/ArduinoJson
Added JsonVariant::is<JsonArrayConst/JsonObjectConst>() (issue #1412)
This commit is contained in:
@ -8,6 +8,7 @@ HEAD
|
|||||||
* `deserializeJson()` leaves `\uXXXX` unchanged instead of returning `NotSupported`
|
* `deserializeJson()` leaves `\uXXXX` unchanged instead of returning `NotSupported`
|
||||||
* `deserializeMsgPack()` inserts `null` instead of returning `NotSupported`
|
* `deserializeMsgPack()` inserts `null` instead of returning `NotSupported`
|
||||||
* Removed `DeserializationError::NotSupported`
|
* Removed `DeserializationError::NotSupported`
|
||||||
|
* Added `JsonVariant::is<JsonArrayConst/JsonObjectConst>()` (issue #1412)
|
||||||
|
|
||||||
> ### BREAKING CHANGES
|
> ### BREAKING CHANGES
|
||||||
>
|
>
|
||||||
|
@ -97,7 +97,9 @@ TEST_CASE("JsonVariant::is<T>()") {
|
|||||||
variant.to<JsonArray>();
|
variant.to<JsonArray>();
|
||||||
|
|
||||||
CHECK(variant.is<JsonArray>() == true);
|
CHECK(variant.is<JsonArray>() == true);
|
||||||
|
CHECK(variant.is<JsonArrayConst>() == true);
|
||||||
CHECK(variant.is<JsonObject>() == false);
|
CHECK(variant.is<JsonObject>() == false);
|
||||||
|
CHECK(variant.is<JsonObjectConst>() == false);
|
||||||
CHECK(variant.is<int>() == false);
|
CHECK(variant.is<int>() == false);
|
||||||
CHECK(variant.is<float>() == false);
|
CHECK(variant.is<float>() == false);
|
||||||
CHECK(variant.is<bool>() == false);
|
CHECK(variant.is<bool>() == false);
|
||||||
@ -109,7 +111,9 @@ TEST_CASE("JsonVariant::is<T>()") {
|
|||||||
variant.to<JsonObject>();
|
variant.to<JsonObject>();
|
||||||
|
|
||||||
CHECK(variant.is<JsonObject>() == true);
|
CHECK(variant.is<JsonObject>() == true);
|
||||||
|
CHECK(variant.is<JsonObjectConst>() == true);
|
||||||
CHECK(variant.is<JsonArray>() == false);
|
CHECK(variant.is<JsonArray>() == false);
|
||||||
|
CHECK(variant.is<JsonArrayConst>() == false);
|
||||||
CHECK(variant.is<int>() == false);
|
CHECK(variant.is<int>() == false);
|
||||||
CHECK(variant.is<float>() == false);
|
CHECK(variant.is<float>() == false);
|
||||||
CHECK(variant.is<bool>() == false);
|
CHECK(variant.is<bool>() == false);
|
||||||
@ -209,7 +213,9 @@ TEST_CASE("JsonVariantConst::is<T>()") {
|
|||||||
variant.to<JsonArray>();
|
variant.to<JsonArray>();
|
||||||
|
|
||||||
CHECK(cvariant.is<JsonArray>() == true);
|
CHECK(cvariant.is<JsonArray>() == true);
|
||||||
|
CHECK(cvariant.is<JsonArrayConst>() == true);
|
||||||
CHECK(cvariant.is<JsonObject>() == false);
|
CHECK(cvariant.is<JsonObject>() == false);
|
||||||
|
CHECK(cvariant.is<JsonObjectConst>() == false);
|
||||||
CHECK(cvariant.is<int>() == false);
|
CHECK(cvariant.is<int>() == false);
|
||||||
CHECK(cvariant.is<float>() == false);
|
CHECK(cvariant.is<float>() == false);
|
||||||
CHECK(cvariant.is<bool>() == false);
|
CHECK(cvariant.is<bool>() == false);
|
||||||
@ -221,7 +227,9 @@ TEST_CASE("JsonVariantConst::is<T>()") {
|
|||||||
variant.to<JsonObject>();
|
variant.to<JsonObject>();
|
||||||
|
|
||||||
CHECK(cvariant.is<JsonObject>() == true);
|
CHECK(cvariant.is<JsonObject>() == true);
|
||||||
|
CHECK(cvariant.is<JsonObjectConst>() == true);
|
||||||
CHECK(cvariant.is<JsonArray>() == false);
|
CHECK(cvariant.is<JsonArray>() == false);
|
||||||
|
CHECK(cvariant.is<JsonArrayConst>() == false);
|
||||||
CHECK(cvariant.is<int>() == false);
|
CHECK(cvariant.is<int>() == false);
|
||||||
CHECK(cvariant.is<float>() == false);
|
CHECK(cvariant.is<float>() == false);
|
||||||
CHECK(cvariant.is<bool>() == false);
|
CHECK(cvariant.is<bool>() == false);
|
||||||
|
@ -85,6 +85,15 @@ class VariantRefBase : public VariantTag {
|
|||||||
return variantIsArray(_data);
|
return variantIsArray(_data);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
// bool is<ArrayConstRef> const;
|
||||||
|
// bool is<const ArrayConstRef> const;
|
||||||
|
template <typename T>
|
||||||
|
FORCE_INLINE typename enable_if<
|
||||||
|
is_same<typename remove_const<T>::type, ArrayConstRef>::value, bool>::type
|
||||||
|
is() const {
|
||||||
|
return variantIsArray(_data);
|
||||||
|
}
|
||||||
|
//
|
||||||
// bool is<ObjectRef> const;
|
// bool is<ObjectRef> const;
|
||||||
// bool is<const ObjectRef> const;
|
// bool is<const ObjectRef> const;
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -93,6 +102,16 @@ class VariantRefBase : public VariantTag {
|
|||||||
is() const {
|
is() const {
|
||||||
return variantIsObject(_data);
|
return variantIsObject(_data);
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
// bool is<ObjectConstRef> const;
|
||||||
|
// bool is<const ObjectConstRef> const;
|
||||||
|
template <typename T>
|
||||||
|
FORCE_INLINE typename enable_if<
|
||||||
|
is_same<typename remove_const<T>::type, ObjectConstRef>::value,
|
||||||
|
bool>::type
|
||||||
|
is() const {
|
||||||
|
return variantIsObject(_data);
|
||||||
|
}
|
||||||
#if ARDUINOJSON_HAS_NULLPTR
|
#if ARDUINOJSON_HAS_NULLPTR
|
||||||
//
|
//
|
||||||
// bool is<nullptr_t> const;
|
// bool is<nullptr_t> const;
|
||||||
|
Reference in New Issue
Block a user