Move JsonArray and JsonObject converters to ConverterImpl.hpp

This commit is contained in:
Benoit Blanchon
2023-07-10 18:29:44 +02:00
parent 5e3f84c718
commit fb4cb96c6c
5 changed files with 90 additions and 90 deletions

View File

@ -171,32 +171,6 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
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_BEGIN_PRIVATE_NAMESPACE

View File

@ -93,25 +93,6 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
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.
// Returns true if the two arrays are equal.
inline bool operator==(JsonArrayConst lhs, JsonArrayConst rhs) {

View File

@ -202,32 +202,6 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
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_BEGIN_PRIVATE_NAMESPACE

View File

@ -118,25 +118,6 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
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) {
if (!lhs && !rhs) // both are null
return true;

View File

@ -300,4 +300,94 @@ struct ConverterNeedsWriteableRef {
};
} // 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