forked from bblanchon/ArduinoJson
Move JsonArray
and JsonObject
converters to ConverterImpl.hpp
This commit is contained in:
@ -171,32 +171,6 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
detail::ResourceManager* resources_;
|
detail::ResourceManager* resources_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
|
||||||
struct Converter<JsonArray> : private detail::VariantAttorney {
|
|
||||||
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
|
||||||
detail::VariantData::copy(getData(dst), getData(src),
|
|
||||||
getResourceManager(dst));
|
|
||||||
}
|
|
||||||
|
|
||||||
static JsonArray fromJson(JsonVariant src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
auto resources = getResourceManager(src);
|
|
||||||
return JsonArray(data != 0 ? data->asArray() : 0, resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
static detail::InvalidConversion<JsonVariantConst, JsonArray> fromJson(
|
|
||||||
JsonVariantConst);
|
|
||||||
|
|
||||||
static bool checkJson(JsonVariantConst) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool checkJson(JsonVariant src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
return data && data->isArray();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
||||||
|
@ -93,25 +93,6 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
|
|||||||
const detail::ResourceManager* resources_;
|
const detail::ResourceManager* resources_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
|
||||||
struct Converter<JsonArrayConst> : private detail::VariantAttorney {
|
|
||||||
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
|
||||||
detail::VariantData::copy(getData(dst), getData(src),
|
|
||||||
getResourceManager(dst));
|
|
||||||
}
|
|
||||||
|
|
||||||
static JsonArrayConst fromJson(JsonVariantConst src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
auto array = data ? data->asArray() : nullptr;
|
|
||||||
return JsonArrayConst(array, getResourceManager(src));
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool checkJson(JsonVariantConst src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
return data && data->isArray();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Compares the content of two arrays.
|
// Compares the content of two arrays.
|
||||||
// Returns true if the two arrays are equal.
|
// Returns true if the two arrays are equal.
|
||||||
inline bool operator==(JsonArrayConst lhs, JsonArrayConst rhs) {
|
inline bool operator==(JsonArrayConst lhs, JsonArrayConst rhs) {
|
||||||
|
@ -202,32 +202,6 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
detail::ResourceManager* resources_;
|
detail::ResourceManager* resources_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
|
||||||
struct Converter<JsonObject> : private detail::VariantAttorney {
|
|
||||||
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
|
||||||
detail::VariantData::copy(getData(dst), getData(src),
|
|
||||||
getResourceManager(dst));
|
|
||||||
}
|
|
||||||
|
|
||||||
static JsonObject fromJson(JsonVariant src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
auto resources = getResourceManager(src);
|
|
||||||
return JsonObject(data != 0 ? data->asObject() : 0, resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
static detail::InvalidConversion<JsonVariantConst, JsonObject> fromJson(
|
|
||||||
JsonVariantConst);
|
|
||||||
|
|
||||||
static bool checkJson(JsonVariantConst) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool checkJson(JsonVariant src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
return data && data->isObject();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
||||||
|
@ -118,25 +118,6 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
const detail::ResourceManager* resources_;
|
const detail::ResourceManager* resources_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
|
||||||
struct Converter<JsonObjectConst> : private detail::VariantAttorney {
|
|
||||||
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
|
||||||
detail::VariantData::copy(getData(dst), getData(src),
|
|
||||||
getResourceManager(dst));
|
|
||||||
}
|
|
||||||
|
|
||||||
static JsonObjectConst fromJson(JsonVariantConst src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
auto object = data != 0 ? data->asObject() : nullptr;
|
|
||||||
return JsonObjectConst(object, getResourceManager(src));
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool checkJson(JsonVariantConst src) {
|
|
||||||
auto data = getData(src);
|
|
||||||
return data && data->isObject();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
inline bool operator==(JsonObjectConst lhs, JsonObjectConst rhs) {
|
inline bool operator==(JsonObjectConst lhs, JsonObjectConst rhs) {
|
||||||
if (!lhs && !rhs) // both are null
|
if (!lhs && !rhs) // both are null
|
||||||
return true;
|
return true;
|
||||||
|
@ -300,4 +300,94 @@ struct ConverterNeedsWriteableRef {
|
|||||||
};
|
};
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct Converter<JsonArrayConst> : private detail::VariantAttorney {
|
||||||
|
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
||||||
|
detail::VariantData::copy(getData(dst), getData(src),
|
||||||
|
getResourceManager(dst));
|
||||||
|
}
|
||||||
|
|
||||||
|
static JsonArrayConst fromJson(JsonVariantConst src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
auto array = data ? data->asArray() : nullptr;
|
||||||
|
return JsonArrayConst(array, getResourceManager(src));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool checkJson(JsonVariantConst src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
return data && data->isArray();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct Converter<JsonArray> : private detail::VariantAttorney {
|
||||||
|
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
||||||
|
detail::VariantData::copy(getData(dst), getData(src),
|
||||||
|
getResourceManager(dst));
|
||||||
|
}
|
||||||
|
|
||||||
|
static JsonArray fromJson(JsonVariant src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
auto resources = getResourceManager(src);
|
||||||
|
return JsonArray(data != 0 ? data->asArray() : 0, resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
static detail::InvalidConversion<JsonVariantConst, JsonArray> fromJson(
|
||||||
|
JsonVariantConst);
|
||||||
|
|
||||||
|
static bool checkJson(JsonVariantConst) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool checkJson(JsonVariant src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
return data && data->isArray();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct Converter<JsonObjectConst> : private detail::VariantAttorney {
|
||||||
|
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
||||||
|
detail::VariantData::copy(getData(dst), getData(src),
|
||||||
|
getResourceManager(dst));
|
||||||
|
}
|
||||||
|
|
||||||
|
static JsonObjectConst fromJson(JsonVariantConst src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
auto object = data != 0 ? data->asObject() : nullptr;
|
||||||
|
return JsonObjectConst(object, getResourceManager(src));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool checkJson(JsonVariantConst src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
return data && data->isObject();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct Converter<JsonObject> : private detail::VariantAttorney {
|
||||||
|
static void toJson(JsonVariantConst src, JsonVariant dst) {
|
||||||
|
detail::VariantData::copy(getData(dst), getData(src),
|
||||||
|
getResourceManager(dst));
|
||||||
|
}
|
||||||
|
|
||||||
|
static JsonObject fromJson(JsonVariant src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
auto resources = getResourceManager(src);
|
||||||
|
return JsonObject(data != 0 ? data->asObject() : 0, resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
static detail::InvalidConversion<JsonVariantConst, JsonObject> fromJson(
|
||||||
|
JsonVariantConst);
|
||||||
|
|
||||||
|
static bool checkJson(JsonVariantConst) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool checkJson(JsonVariant src) {
|
||||||
|
auto data = getData(src);
|
||||||
|
return data && data->isObject();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
||||||
|
Reference in New Issue
Block a user