Added support for custom converters (closes #687)

This commit is contained in:
Benoit Blanchon
2021-03-20 14:52:47 +01:00
parent 53d6f0d492
commit d7f5b56ca4
29 changed files with 554 additions and 470 deletions

View File

@@ -236,4 +236,42 @@ class ObjectRef : public ObjectRefBase<CollectionData>,
private:
MemoryPool* _pool;
};
template <>
struct Converter<ObjectConstRef> {
static bool toJson(VariantRef variant, VariantConstRef value) {
return variantCopyFrom(getData(variant), getData(value), getPool(variant));
}
static ObjectConstRef fromJson(VariantConstRef variant) {
return ObjectConstRef(variantAsObject(getData(variant)));
}
static bool checkJson(VariantConstRef variant) {
const VariantData* data = getData(variant);
return data && data->isObject();
}
};
template <>
struct Converter<ObjectRef> {
static bool toJson(VariantRef variant, VariantConstRef value) {
return variantCopyFrom(getData(variant), getData(value), getPool(variant));
}
static ObjectRef fromJson(VariantRef variant) {
VariantData* data = getData(variant);
MemoryPool* pool = getPool(variant);
return ObjectRef(pool, data != 0 ? data->asObject() : 0);
}
static bool checkJson(VariantConstRef) {
return false;
}
static bool checkJson(VariantRef variant) {
VariantData* data = getData(variant);
return data && data->isObject();
}
};
} // namespace ARDUINOJSON_NAMESPACE