diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2021-05-12 09:12:09 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2021-05-12 09:12:09 +0200 |
commit | 39895a677e5d370824e702cfe90ebc67737b8482 (patch) | |
tree | ff5b4cc9e373d33a795d50d9333e05549bd9f2b8 /include/lib/ArduinoJson/Deserialization/deserialize.hpp | |
parent | 42e7fdf01c3a5701bb51e93ad6c650c3dbbc5450 (diff) |
import ArduinoJson 6.18.0
Diffstat (limited to 'include/lib/ArduinoJson/Deserialization/deserialize.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Deserialization/deserialize.hpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Deserialization/deserialize.hpp b/include/lib/ArduinoJson/Deserialization/deserialize.hpp new file mode 100644 index 0000000..2329542 --- /dev/null +++ b/include/lib/ArduinoJson/Deserialization/deserialize.hpp @@ -0,0 +1,71 @@ +// ArduinoJson - https://arduinojson.org +// Copyright Benoit Blanchon 2014-2021 +// MIT License + +#pragma once + +#include <ArduinoJson/Deserialization/DeserializationError.hpp> +#include <ArduinoJson/Deserialization/Filter.hpp> +#include <ArduinoJson/Deserialization/NestingLimit.hpp> +#include <ArduinoJson/Deserialization/Reader.hpp> +#include <ArduinoJson/StringStorage/StringStorage.hpp> + +namespace ARDUINOJSON_NAMESPACE { + +template <template <typename, typename> class TDeserializer, typename TReader, + typename TWriter> +TDeserializer<TReader, TWriter> makeDeserializer(MemoryPool &pool, + TReader reader, + TWriter writer) { + return TDeserializer<TReader, TWriter>(pool, reader, writer); +} + +// deserialize(JsonDocument&, const std::string&, NestingLimit, Filter); +// deserialize(JsonDocument&, const String&, NestingLimit, Filter); +// deserialize(JsonDocument&, char*, NestingLimit, Filter); +// deserialize(JsonDocument&, const char*, NestingLimit, Filter); +// deserialize(JsonDocument&, const __FlashStringHelper*, NestingLimit, Filter); +template <template <typename, typename> class TDeserializer, typename TString, + typename TFilter> +typename enable_if<!is_array<TString>::value, DeserializationError>::type +deserialize(JsonDocument &doc, const TString &input, NestingLimit nestingLimit, + TFilter filter) { + Reader<TString> reader(input); + doc.clear(); + return makeDeserializer<TDeserializer>( + doc.memoryPool(), reader, + makeStringStorage(input, doc.memoryPool())) + .parse(doc.data(), filter, nestingLimit); +} +// +// deserialize(JsonDocument&, char*, size_t, NestingLimit, Filter); +// deserialize(JsonDocument&, const char*, size_t, NestingLimit, Filter); +// deserialize(JsonDocument&, const __FlashStringHelper*, size_t, NL, Filter); +template <template <typename, typename> class TDeserializer, typename TChar, + typename TFilter> +DeserializationError deserialize(JsonDocument &doc, TChar *input, + size_t inputSize, NestingLimit nestingLimit, + TFilter filter) { + BoundedReader<TChar *> reader(input, inputSize); + doc.clear(); + return makeDeserializer<TDeserializer>( + doc.memoryPool(), reader, + makeStringStorage(input, doc.memoryPool())) + .parse(doc.data(), filter, nestingLimit); +} +// +// deserialize(JsonDocument&, std::istream&, NestingLimit, Filter); +// deserialize(JsonDocument&, Stream&, NestingLimit, Filter); +template <template <typename, typename> class TDeserializer, typename TStream, + typename TFilter> +DeserializationError deserialize(JsonDocument &doc, TStream &input, + NestingLimit nestingLimit, TFilter filter) { + Reader<TStream> reader(input); + doc.clear(); + return makeDeserializer<TDeserializer>( + doc.memoryPool(), reader, + makeStringStorage(input, doc.memoryPool())) + .parse(doc.data(), filter, nestingLimit); +} + +} // namespace ARDUINOJSON_NAMESPACE |