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

@@ -164,4 +164,42 @@ class ArrayRef : public ArrayRefBase<CollectionData>,
private:
MemoryPool* _pool;
};
template <>
struct Converter<ArrayConstRef> {
static bool toJson(VariantRef variant, VariantConstRef value) {
return variantCopyFrom(getData(variant), getData(value), getPool(variant));
}
static ArrayConstRef fromJson(VariantConstRef variant) {
return ArrayConstRef(variantAsArray(getData(variant)));
}
static bool checkJson(VariantConstRef variant) {
const VariantData* data = getData(variant);
return data && data->isArray();
}
};
template <>
struct Converter<ArrayRef> {
static bool toJson(VariantRef variant, VariantConstRef value) {
return variantCopyFrom(getData(variant), getData(value), getPool(variant));
}
static ArrayRef fromJson(VariantRef variant) {
VariantData* data = getData(variant);
MemoryPool* pool = getPool(variant);
return ArrayRef(pool, data != 0 ? data->asArray() : 0);
}
static bool checkJson(VariantConstRef) {
return false;
}
static bool checkJson(VariantRef variant) {
VariantData* data = getData(variant);
return data && data->isArray();
}
};
} // namespace ARDUINOJSON_NAMESPACE