diff --git a/lib/ArduinoJson/ArduinoJson.h b/lib/ArduinoJson/ArduinoJson.h
index 7e3afa58a..15c218f48 100644
--- a/lib/ArduinoJson/ArduinoJson.h
+++ b/lib/ArduinoJson/ArduinoJson.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#include "src/ArduinoJson.h"
diff --git a/lib/ArduinoJson/CHANGELOG.md b/lib/ArduinoJson/CHANGELOG.md
index dd4945bce..bee743479 100644
--- a/lib/ArduinoJson/CHANGELOG.md
+++ b/lib/ArduinoJson/CHANGELOG.md
@@ -1,6 +1,13 @@
ArduinoJson: change log
=======================
+v6.21.0 (2023-03-14)
+-------
+
+* Drop support for C++98/C++03. Minimum required is C++11.
+* Remove `ARDUINOJSON_NAMESPACE`; use `ArduinoJson` instead.
+* Make string support generic (issue #1807)
+
v6.20.1 (2023-02-08)
-------
diff --git a/lib/ArduinoJson/LICENSE.txt b/lib/ArduinoJson/LICENSE.txt
index e59620d1d..15f1b9fbb 100644
--- a/lib/ArduinoJson/LICENSE.txt
+++ b/lib/ArduinoJson/LICENSE.txt
@@ -1,7 +1,7 @@
The MIT License (MIT)
---------------------
-Copyright © 2014-2022, Benoit BLANCHON
+Copyright © 2014-2023, Benoit BLANCHON
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
diff --git a/lib/ArduinoJson/README.md b/lib/ArduinoJson/README.md
deleted file mode 100644
index b0f539dd3..000000000
--- a/lib/ArduinoJson/README.md
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-
-
----
-
-[](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A6.x)
-[](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x)
-[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
-[](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x)
-[](https://www.ardu-badge.com/ArduinoJson/6.20.1)
-[](https://registry.platformio.org/packages/libraries/bblanchon/ArduinoJson?version=6.20.1)
-[](https://components.espressif.com/components/bblanchon/arduinojson)
-[](https://github.com/bblanchon/ArduinoJson/stargazers)
-[](https://github.com/sponsors/bblanchon)
-
-ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
-
-## Features
-
-* [JSON deserialization](https://arduinojson.org/v6/api/json/deserializejson/)
- * [Optionally decodes UTF-16 escape sequences to UTF-8](https://arduinojson.org/v6/api/config/decode_unicode/)
- * [Optionally stores links to the input buffer (zero-copy)](https://arduinojson.org/v6/api/json/deserializejson/)
- * [Optionally supports comments in the input](https://arduinojson.org/v6/api/config/enable_comments/)
- * [Optionally filters the input to keep only desired values](https://arduinojson.org/v6/api/json/deserializejson/#filtering)
- * Supports single quotes as a string delimiter
- * Compatible with [NDJSON](http://ndjson.org/) and [JSON Lines](https://jsonlines.org/)
-* [JSON serialization](https://arduinojson.org/v6/api/json/serializejson/)
- * [Can write to a buffer or a stream](https://arduinojson.org/v6/api/json/serializejson/)
- * [Optionally indents the document (prettified JSON)](https://arduinojson.org/v6/api/json/serializejsonpretty/)
-* [MessagePack serialization](https://arduinojson.org/v6/api/msgpack/serializemsgpack/)
-* [MessagePack deserialization](https://arduinojson.org/v6/api/msgpack/deserializemsgpack/)
-* Efficient
- * [Twice smaller than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
- * [Almost 10% faster than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
- * [Consumes roughly 10% less RAM than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
- * [Fixed memory allocation, no heap fragmentation](https://arduinojson.org/v6/api/jsondocument/)
- * [Optionally works without heap memory (zero malloc)](https://arduinojson.org/v6/api/staticjsondocument/)
- * [Deduplicates strings](https://arduinojson.org/news/2020/08/01/version-6-16-0/)
-* Versatile
- * Supports [custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v6/how-to/use-external-ram-on-esp32/)
- * Supports [`String`](https://arduinojson.org/v6/api/config/enable_arduino_string/), [`std::string`](https://arduinojson.org/v6/api/config/enable_std_string/), and [`std::string_view`](https://arduinojson.org/v6/api/config/enable_string_view/)
- * Supports [`Stream`](https://arduinojson.org/v6/api/config/enable_arduino_stream/) and [`std::istream`/`std::ostream`](https://arduinojson.org/v6/api/config/enable_std_stream/)
- * Supports [Flash strings](https://arduinojson.org/v6/api/config/enable_progmem/)
- * Supports [custom readers](https://arduinojson.org/v6/api/json/deserializejson/#custom-reader) and [custom writers](https://arduinojson.org/v6/api/json/serializejson/#custom-writer)
- * Supports [custom converters](https://arduinojson.org/news/2021/05/04/version-6-18-0/)
-* Portable
- * Usable on any C++ project (not limited to Arduino)
- * Compatible with C++98, C++11, C++14 and C++17
- * Zero warnings with `-Wall -Wextra -pedantic` and `/W4`
- * [Header-only library](https://en.wikipedia.org/wiki/Header-only)
- * Works with virtually any board
- * Arduino boards: [Uno](https://amzn.to/38aL2ik), [Due](https://amzn.to/36YkWi2), [Micro](https://amzn.to/35WkdwG), [Nano](https://amzn.to/2QTvwRX), [Mega](https://amzn.to/36XWhuf), [Yun](https://amzn.to/30odURc), [Leonardo](https://amzn.to/36XWjlR)...
- * Espressif chips: [ESP8266](https://amzn.to/36YluV8), [ESP32](https://amzn.to/2G4pRCB)
- * Lolin (WeMos) boards: [D1 mini](https://amzn.to/2QUpz7q), [D1 Mini Pro](https://amzn.to/36UsGSs)...
- * Teensy boards: [4.0](https://amzn.to/30ljXGq), [3.2](https://amzn.to/2FT0EuC), [2.0](https://amzn.to/2QXUMXj)
- * Particle boards: [Argon](https://amzn.to/2FQHa9X), [Boron](https://amzn.to/36WgLUd), [Electron](https://amzn.to/30vEc4k), [Photon](https://amzn.to/387F9Cd)...
- * Texas Instruments boards: [MSP430](https://amzn.to/30nJWgg)...
- * Soft cores: [Nios II](https://en.wikipedia.org/wiki/Nios_II)...
- * Tested on all major development environments
- * [Arduino IDE](https://www.arduino.cc/en/Main/Software)
- * [Atmel Studio](http://www.atmel.com/microsite/atmel-studio/)
- * [Atollic TrueSTUDIO](https://atollic.com/truestudio/)
- * [Energia](http://energia.nu/)
- * [IAR Embedded Workbench](https://www.iar.com/iar-embedded-workbench/)
- * [Keil uVision](http://www.keil.com/)
- * [MPLAB X IDE](http://www.microchip.com/mplab/mplab-x-ide)
- * [Particle](https://www.particle.io/)
- * [PlatformIO](http://platformio.org/)
- * [Sloeber plugin for Eclipse](https://eclipse.baeyens.it/)
- * [Visual Micro](http://www.visualmicro.com/)
- * [Visual Studio](https://www.visualstudio.com/)
- * [Even works with online compilers like wandbox.org](https://wandbox.org/permlink/RlZSKy17DjJ6HcdN)
- * [CMake friendly](https://arduinojson.org/v6/how-to/use-arduinojson-with-cmake/)
-* Well designed
- * [Elegant API](http://arduinojson.org/v6/example/)
- * [Thread-safe](https://en.wikipedia.org/wiki/Thread_safety)
- * Self-contained (no external dependency)
- * `const` friendly
- * [`for` friendly](https://arduinojson.org/v6/api/jsonobject/begin_end/)
- * [TMP friendly](https://en.wikipedia.org/wiki/Template_metaprogramming)
- * Handles [integer overflows](https://arduinojson.org/v6/api/jsonvariant/as/#integer-overflows)
-* Well tested
- * [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x)
- * Continuously tested on
- * [Visual Studio 2010, 2012, 2013, 2015, 2017, 2019, 2022](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x)
- * [GCC 4.4, 4.6, 4.7, 4.8, 4.9, 5, 6, 7, 8, 9, 10, 11](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
- * [Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 6.0, 7, 8, 9, 10](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
- * [Continuously fuzzed with Google OSS Fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
- * Passes all default checks of [clang-tidy](https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/clang-tidy/)
-* Well documented
- * [Tutorials](https://arduinojson.org/v6/doc/deserialization/)
- * [Examples](https://arduinojson.org/v6/example/)
- * [How-tos](https://arduinojson.org/v6/example/)
- * [FAQ](https://arduinojson.org/v6/faq/)
- * [Troubleshooter](https://arduinojson.org/v6/troubleshooter/)
- * [Book](https://arduinojson.org/book/)
- * [Changelog](CHANGELOG.md)
-* Vibrant user community
- * Most popular of all Arduino libraries on [GitHub](https://github.com/search?o=desc&q=arduino+library&s=stars&type=Repositories)
- * [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson)
- * [Responsive support](https://github.com/bblanchon/ArduinoJson/issues?q=is%3Aissue+is%3Aclosed)
-
-## Quickstart
-
-### Deserialization
-
-Here is a program that parses a JSON document with ArduinoJson.
-
-```c++
-char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
-
-DynamicJsonDocument doc(1024);
-deserializeJson(doc, json);
-
-const char* sensor = doc["sensor"];
-long time = doc["time"];
-double latitude = doc["data"][0];
-double longitude = doc["data"][1];
-```
-
-See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/deserialization/)
-
-### Serialization
-
-Here is a program that generates a JSON document with ArduinoJson:
-
-```c++
-DynamicJsonDocument doc(1024);
-
-doc["sensor"] = "gps";
-doc["time"] = 1351824120;
-doc["data"][0] = 48.756080;
-doc["data"][1] = 2.302038;
-
-serializeJson(doc, Serial);
-// This prints:
-// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
-```
-
-See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/serialization/)
-
-## Sponsors
-
-ArduinoJson is thankful to its sponsors. Please give them a visit; they deserve it!
-
-
-
-
-
-
-
-
-
-
-
-
-If you run a commercial project that embeds ArduinoJson, think about [sponsoring the library's development](https://github.com/sponsors/bblanchon): it ensures the code that your products rely on stays actively maintained. It can also give your project some exposure to the makers' community.
-
-If you are an individual user and want to support the development (or give a sign of appreciation), consider purchasing the book [Mastering ArduinoJson](https://arduinojson.org/book/) ❤, or simply [cast a star](https://github.com/bblanchon/ArduinoJson/stargazers) ⭐.
diff --git a/lib/ArduinoJson/src/ArduinoJson.h b/lib/ArduinoJson/src/ArduinoJson.h
index f79212dbc..c9ac0ca64 100644
--- a/lib/ArduinoJson/src/ArduinoJson.h
+++ b/lib/ArduinoJson/src/ArduinoJson.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson.hpp b/lib/ArduinoJson/src/ArduinoJson.hpp
index 3a490f33e..0c8832a1b 100644
--- a/lib/ArduinoJson/src/ArduinoJson.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson.hpp
@@ -1,9 +1,13 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
+#if __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_VER < 1910)
+# error ArduinoJson requires C++11 or newer. Configure your compiler for C++11 or downgrade ArduinoJson to 6.20.
+#endif
+
#include "ArduinoJson/Configuration.hpp"
// Include Arduino.h before stdlib.h to avoid conflict with atexit()
@@ -45,36 +49,3 @@
#include "ArduinoJson/MsgPack/MsgPackSerializer.hpp"
#include "ArduinoJson/compatibility.hpp"
-
-namespace ArduinoJson {
-using ARDUINOJSON_NAMESPACE::BasicJsonDocument;
-using ARDUINOJSON_NAMESPACE::copyArray;
-using ARDUINOJSON_NAMESPACE::DeserializationError;
-using ARDUINOJSON_NAMESPACE::deserializeJson;
-using ARDUINOJSON_NAMESPACE::deserializeMsgPack;
-using ARDUINOJSON_NAMESPACE::DynamicJsonDocument;
-using ARDUINOJSON_NAMESPACE::JsonArray;
-using ARDUINOJSON_NAMESPACE::JsonArrayConst;
-using ARDUINOJSON_NAMESPACE::JsonDocument;
-using ARDUINOJSON_NAMESPACE::JsonFloat;
-using ARDUINOJSON_NAMESPACE::JsonInteger;
-using ARDUINOJSON_NAMESPACE::JsonObject;
-using ARDUINOJSON_NAMESPACE::JsonObjectConst;
-using ARDUINOJSON_NAMESPACE::JsonPair;
-using ARDUINOJSON_NAMESPACE::JsonPairConst;
-using ARDUINOJSON_NAMESPACE::JsonString;
-using ARDUINOJSON_NAMESPACE::JsonUInt;
-using ARDUINOJSON_NAMESPACE::JsonVariant;
-using ARDUINOJSON_NAMESPACE::JsonVariantConst;
-using ARDUINOJSON_NAMESPACE::measureJson;
-using ARDUINOJSON_NAMESPACE::serialized;
-using ARDUINOJSON_NAMESPACE::serializeJson;
-using ARDUINOJSON_NAMESPACE::serializeJsonPretty;
-using ARDUINOJSON_NAMESPACE::serializeMsgPack;
-using ARDUINOJSON_NAMESPACE::StaticJsonDocument;
-
-namespace DeserializationOption {
-using ARDUINOJSON_NAMESPACE::Filter;
-using ARDUINOJSON_NAMESPACE::NestingLimit;
-} // namespace DeserializationOption
-} // namespace ArduinoJson
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
index b3e00a2c0..1a9e9ce27 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
@@ -1,18 +1,18 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
// A proxy class to get or set an element of an array.
// https://arduinojson.org/v6/api/jsonarray/subscript/
template
-class ElementProxy : public VariantRefBase >,
- public VariantOperators > {
+class ElementProxy : public VariantRefBase>,
+ public VariantOperators> {
friend class VariantAttorney;
public:
@@ -57,4 +57,4 @@ class ElementProxy : public VariantRefBase >,
size_t _index;
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
index a26b1f1f1..00df67ceb 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -7,14 +7,14 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
class JsonObject;
// A reference to an array in a JsonDocument
// https://arduinojson.org/v6/api/jsonarray/
-class JsonArray : public VariantOperators {
- friend class VariantAttorney;
+class JsonArray : public detail::VariantOperators {
+ friend class detail::VariantAttorney;
public:
typedef JsonArrayIterator iterator;
@@ -23,14 +23,14 @@ class JsonArray : public VariantOperators {
FORCE_INLINE JsonArray() : _data(0), _pool(0) {}
// INTERNAL USE ONLY
- FORCE_INLINE JsonArray(MemoryPool* pool, CollectionData* data)
+ FORCE_INLINE JsonArray(detail::MemoryPool* pool, detail::CollectionData* data)
: _data(data), _pool(pool) {}
// Returns a JsonVariant pointing to the array.
// https://arduinojson.org/v6/api/jsonvariant/
operator JsonVariant() {
void* data = _data; // prevent warning cast-align
- return JsonVariant(_pool, reinterpret_cast(data));
+ return JsonVariant(_pool, reinterpret_cast(data));
}
// Returns a read-only reference to the array.
@@ -118,8 +118,8 @@ class JsonArray : public VariantOperators {
// Gets or sets the element at the specified index.
// https://arduinojson.org/v6/api/jsonarray/subscript/
- FORCE_INLINE ElementProxy operator[](size_t index) const {
- return ElementProxy(*this, index);
+ FORCE_INLINE detail::ElementProxy operator[](size_t index) const {
+ return {*this, index};
}
// Creates an object and appends it to the array.
@@ -167,35 +167,35 @@ class JsonArray : public VariantOperators {
}
private:
- MemoryPool* getPool() const {
+ detail::MemoryPool* getPool() const {
return _pool;
}
- VariantData* getData() const {
+ detail::VariantData* getData() const {
return collectionToVariant(_data);
}
- VariantData* getOrCreateData() const {
+ detail::VariantData* getOrCreateData() const {
return collectionToVariant(_data);
}
- CollectionData* _data;
- MemoryPool* _pool;
+ detail::CollectionData* _data;
+ detail::MemoryPool* _pool;
};
template <>
-struct Converter : private VariantAttorney {
+struct Converter : private detail::VariantAttorney {
static void toJson(JsonVariantConst src, JsonVariant dst) {
variantCopyFrom(getData(dst), getData(src), getPool(dst));
}
static JsonArray fromJson(JsonVariant src) {
- VariantData* data = getData(src);
- MemoryPool* pool = getPool(src);
+ auto data = getData(src);
+ auto pool = getPool(src);
return JsonArray(pool, data != 0 ? data->asArray() : 0);
}
- static InvalidConversion fromJson(
+ static detail::InvalidConversion fromJson(
JsonVariantConst);
static bool checkJson(JsonVariantConst) {
@@ -203,8 +203,9 @@ struct Converter : private VariantAttorney {
}
static bool checkJson(JsonVariant src) {
- VariantData* data = getData(src);
+ auto data = getData(src);
return data && data->isArray();
}
};
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
index 17e65a4bb..6c60e9813 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -8,15 +8,15 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
class JsonObject;
// A read-only reference to an array in a JsonDocument
// https://arduinojson.org/v6/api/jsonarrayconst/
-class JsonArrayConst : public VariantOperators {
+class JsonArrayConst : public detail::VariantOperators {
friend class JsonArray;
- friend class VariantAttorney;
+ friend class detail::VariantAttorney;
public:
typedef JsonArrayConstIterator iterator;
@@ -39,7 +39,8 @@ class JsonArrayConst : public VariantOperators {
FORCE_INLINE JsonArrayConst() : _data(0) {}
// INTERNAL USE ONLY
- FORCE_INLINE JsonArrayConst(const CollectionData* data) : _data(data) {}
+ FORCE_INLINE JsonArrayConst(const detail::CollectionData* data)
+ : _data(data) {}
// Compares the content of two arrays.
// Returns true if the two arrays are equal.
@@ -107,28 +108,28 @@ class JsonArrayConst : public VariantOperators {
}
private:
- const VariantData* getData() const {
+ const detail::VariantData* getData() const {
return collectionToVariant(_data);
}
- const CollectionData* _data;
+ const detail::CollectionData* _data;
};
template <>
-struct Converter : private VariantAttorney {
+struct Converter : private detail::VariantAttorney {
static void toJson(JsonVariantConst src, JsonVariant dst) {
variantCopyFrom(getData(dst), getData(src), getPool(dst));
}
static JsonArrayConst fromJson(JsonVariantConst src) {
- const VariantData* data = getData(src);
+ auto data = getData(src);
return data ? data->asArray() : 0;
}
static bool checkJson(JsonVariantConst src) {
- const VariantData* data = getData(src);
+ auto data = getData(src);
return data && data->isArray();
}
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp
index 45a520f49..dc0487af8 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -7,12 +7,16 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
inline JsonObject JsonArray::createNestedObject() const {
return add().to();
}
+ARDUINOJSON_END_PUBLIC_NAMESPACE
+
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
+
template
inline JsonArray VariantRefBase::createNestedArray() const {
return add().template to();
@@ -29,4 +33,4 @@ inline ElementProxy VariantRefBase::operator[](
return ElementProxy(derived(), index);
}
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
index 382d11775..3e1b7526c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -7,11 +7,12 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
class VariantPtr {
public:
- VariantPtr(MemoryPool* pool, VariantData* data) : _variant(pool, data) {}
+ VariantPtr(detail::MemoryPool* pool, detail::VariantData* data)
+ : _variant(pool, data) {}
JsonVariant* operator->() {
return &_variant;
@@ -30,7 +31,8 @@ class JsonArrayIterator {
public:
JsonArrayIterator() : _slot(0) {}
- explicit JsonArrayIterator(MemoryPool* pool, VariantSlot* slot)
+ explicit JsonArrayIterator(detail::MemoryPool* pool,
+ detail::VariantSlot* slot)
: _pool(pool), _slot(slot) {}
JsonVariant operator*() const {
@@ -59,13 +61,13 @@ class JsonArrayIterator {
}
private:
- MemoryPool* _pool;
- VariantSlot* _slot;
+ detail::MemoryPool* _pool;
+ detail::VariantSlot* _slot;
};
class VariantConstPtr {
public:
- VariantConstPtr(const VariantData* data) : _variant(data) {}
+ VariantConstPtr(const detail::VariantData* data) : _variant(data) {}
JsonVariantConst* operator->() {
return &_variant;
@@ -84,7 +86,8 @@ class JsonArrayConstIterator {
public:
JsonArrayConstIterator() : _slot(0) {}
- explicit JsonArrayConstIterator(const VariantSlot* slot) : _slot(slot) {}
+ explicit JsonArrayConstIterator(const detail::VariantSlot* slot)
+ : _slot(slot) {}
JsonVariantConst operator*() const {
return JsonVariantConst(_slot->data());
@@ -112,6 +115,7 @@ class JsonArrayConstIterator {
}
private:
- const VariantSlot* _slot;
+ const detail::VariantSlot* _slot;
};
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
index 1bff6830c..398e11d45 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -7,21 +7,21 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
// Copies a value to a JsonVariant.
// This is a degenerated form of copyArray() to stop the recursion.
template
-inline typename enable_if::value, bool>::type copyArray(
- const T& src, JsonVariant dst) {
+inline typename detail::enable_if::value, bool>::type
+copyArray(const T& src, JsonVariant dst) {
return dst.set(src);
}
// Copies values from an array to a JsonArray or a JsonVariant.
// https://arduinojson.org/v6/api/misc/copyarray/
template
-inline typename enable_if::value,
- bool>::type
+inline typename detail::enable_if<
+ !detail::is_base_of::value, bool>::type
copyArray(T (&src)[N], const TDestination& dst) {
return copyArray(src, N, dst);
}
@@ -29,8 +29,8 @@ copyArray(T (&src)[N], const TDestination& dst) {
// Copies values from an array to a JsonArray or a JsonVariant.
// https://arduinojson.org/v6/api/misc/copyarray/
template
-inline typename enable_if::value,
- bool>::type
+inline typename detail::enable_if<
+ !detail::is_base_of::value, bool>::type
copyArray(const T* src, size_t len, const TDestination& dst) {
bool ok = true;
for (size_t i = 0; i < len; i++) {
@@ -63,8 +63,8 @@ inline bool copyArray(const T* src, size_t len, JsonDocument& dst) {
// Copies a value from a JsonVariant.
// This is a degenerated form of copyArray() to stop the recursion.
template
-inline typename enable_if::value, size_t>::type copyArray(
- JsonVariantConst src, T& dst) {
+inline typename detail::enable_if::value, size_t>::type
+copyArray(JsonVariantConst src, T& dst) {
dst = src.as();
return 1;
}
@@ -103,11 +103,12 @@ inline size_t copyArray(JsonVariantConst src, char (&dst)[N]) {
// Copies values from a JsonDocument to an array.
// https://arduinojson.org/v6/api/misc/copyarray/
template
-inline typename enable_if::value &&
- is_base_of::value,
- size_t>::type
+inline typename detail::enable_if<
+ detail::is_array::value &&
+ detail::is_base_of::value,
+ size_t>::type
copyArray(const TSource& src, T& dst) {
return copyArray(src.template as(), dst);
}
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
index 560e7e336..aa807b5de 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -9,7 +9,7 @@
#include // size_t
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
class MemoryPool;
class VariantData;
@@ -91,4 +91,5 @@ inline VariantData* collectionToVariant(CollectionData* collection) {
void* data = collection; // prevent warning cast-align
return reinterpret_cast(data);
}
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
index f933f527e..c99b524be 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -9,7 +9,7 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
inline VariantSlot* CollectionData::addSlot(MemoryPool* pool) {
VariantSlot* slot = pool->allocVariant();
@@ -194,4 +194,4 @@ inline void CollectionData::movePointers(ptrdiff_t stringDistance,
slot->movePointers(stringDistance, variantDistance);
}
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
index ed5687a39..b33a8339e 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
@@ -1,31 +1,9 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
-#if __cplusplus >= 201103L
-# define ARDUINOJSON_HAS_LONG_LONG 1
-# define ARDUINOJSON_HAS_RVALUE_REFERENCES 1
-#else
-# define ARDUINOJSON_HAS_LONG_LONG 0
-# define ARDUINOJSON_HAS_RVALUE_REFERENCES 0
-#endif
-
-#ifndef ARDUINOJSON_HAS_NULLPTR
-# if __cplusplus >= 201103L
-# define ARDUINOJSON_HAS_NULLPTR 1
-# else
-# define ARDUINOJSON_HAS_NULLPTR 0
-# endif
-#endif
-
-#if defined(_MSC_VER) && !ARDUINOJSON_HAS_LONG_LONG
-# define ARDUINOJSON_HAS_INT64 1
-#else
-# define ARDUINOJSON_HAS_INT64 0
-#endif
-
// Support std::istream and std::ostream
#ifndef ARDUINOJSON_ENABLE_STD_STREAM
# ifdef __has_include
@@ -83,8 +61,7 @@
// Store integral values with long (0) or long long (1)
#ifndef ARDUINOJSON_USE_LONG_LONG
-# if ARDUINOJSON_HAS_LONG_LONG && defined(__SIZEOF_POINTER__) && \
- __SIZEOF_POINTER__ >= 4 || \
+# if defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ >= 4 || \
defined(_MSC_VER)
# define ARDUINOJSON_USE_LONG_LONG 1
# endif
@@ -230,7 +207,7 @@
# endif
#endif
-#if ARDUINOJSON_HAS_NULLPTR && defined(nullptr)
+#if defined(nullptr)
# error nullptr is defined as a macro. Remove the faulty #define or #undef nullptr
// See https://github.com/bblanchon/ArduinoJson/issues/1355
#endif
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
index 16c52ffd2..2e97a024f 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
@@ -1,10 +1,9 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
-#include
#include
#include
#include
@@ -13,9 +12,9 @@
# include
#endif
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-class DeserializationError : public SafeBoolIdom {
+class DeserializationError {
public:
enum Code {
Ok,
@@ -53,9 +52,9 @@ class DeserializationError : public SafeBoolIdom {
return lhs != rhs._code;
}
- // Behaves like a bool
- operator bool_type() const {
- return _code != Ok ? safe_true() : safe_false();
+ // Returns true if there is an error
+ explicit operator bool() const {
+ return _code != Ok;
}
// Returns internal enum, useful for switch statement
@@ -80,10 +79,10 @@ class DeserializationError : public SafeBoolIdom {
ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s3, "InvalidInput");
ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s4, "NoMemory");
ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s5, "TooDeep");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(
- const char*, messages, ARDUINOJSON_EXPAND6({s0, s1, s2, s3, s4, s5}));
+ ARDUINOJSON_DEFINE_PROGMEM_ARRAY(const char*, messages,
+ {s0, s1, s2, s3, s4, s5});
return reinterpret_cast(
- pgm_read(messages + _code));
+ detail::pgm_read(messages + _code));
}
#endif
@@ -104,4 +103,4 @@ inline std::ostream& operator<<(std::ostream& s, DeserializationError::Code c) {
}
#endif
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
new file mode 100644
index 000000000..8400cc0b2
--- /dev/null
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
@@ -0,0 +1,35 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2023, Benoit BLANCHON
+// MIT License
+
+#pragma once
+
+#include
+#include
+
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
+
+template
+struct DeserializationOptions {
+ TFilter filter;
+ DeserializationOption::NestingLimit nestingLimit;
+};
+
+template
+inline DeserializationOptions makeDeserializationOptions(
+ TFilter filter, DeserializationOption::NestingLimit nestingLimit = {}) {
+ return {filter, nestingLimit};
+}
+
+template
+inline DeserializationOptions makeDeserializationOptions(
+ DeserializationOption::NestingLimit nestingLimit, TFilter filter) {
+ return {filter, nestingLimit};
+}
+
+inline DeserializationOptions makeDeserializationOptions(
+ DeserializationOption::NestingLimit nestingLimit = {}) {
+ return {{}, nestingLimit};
+}
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
index 501acf3e4..8857cedfe 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
@@ -1,13 +1,14 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
+namespace DeserializationOption {
class Filter {
public:
explicit Filter(JsonVariantConst v) : _variant(v) {}
@@ -39,7 +40,9 @@ class Filter {
private:
JsonVariantConst _variant;
};
+} // namespace DeserializationOption
+namespace detail {
struct AllowAllFilter {
bool allow() const {
return true;
@@ -62,5 +65,6 @@ struct AllowAllFilter {
return AllowAllFilter();
}
};
+} // namespace detail
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
index af5724d0a..6d2f67545 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -7,8 +7,9 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
+namespace DeserializationOption {
class NestingLimit {
public:
NestingLimit() : _value(ARDUINOJSON_DEFAULT_NESTING_LIMIT) {}
@@ -26,4 +27,6 @@ class NestingLimit {
private:
uint8_t _value;
};
-} // namespace ARDUINOJSON_NAMESPACE
+} // namespace DeserializationOption
+
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
index 4e1958c75..e52af6d5c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
@@ -1,14 +1,15 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
+#include
#include // for size_t
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
// The default reader is a simple wrapper for Readers that are not copiable
template
@@ -33,7 +34,8 @@ struct BoundedReader {
// no default implementation because we need to pass the size to the
// constructor
};
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
#include
#include
@@ -54,3 +56,18 @@ struct BoundedReader {
#if ARDUINOJSON_ENABLE_STD_STREAM
# include
#endif
+
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
+
+template
+Reader::type> makeReader(TInput&& input) {
+ return Reader::type>{
+ detail::forward(input)};
+}
+
+template
+BoundedReader makeReader(TChar* input, size_t inputSize) {
+ return BoundedReader{input, inputSize};
+}
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
index 179e37681..ac4f212d5 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
@@ -1,12 +1,12 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
struct Reader
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
struct Reader::value>::type>
+ typename enable_if::value>::type>
: BoundedReader {
explicit Reader(const ::String& s)
: BoundedReader(s.c_str(), s.length()) {}
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
index c48248c1d..da6880ded 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
@@ -1,12 +1,12 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template <>
struct Reader {
@@ -52,4 +52,5 @@ struct BoundedReader {
return length;
}
};
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
index 96494df01..718907988 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
@@ -1,10 +1,10 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
class IteratorReader {
@@ -41,4 +41,5 @@ struct Reader::type>
: IteratorReader(source.begin(),
source.end()) {}
};
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
index 120ce8a80..78d019953 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
@@ -1,12 +1,12 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
struct IsCharOrVoid {
@@ -48,4 +48,4 @@ struct BoundedReader(ptr) + len) {}
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
index c92f7931b..ecace4266 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
@@ -1,12 +1,12 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
struct Reader
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
struct Reader::value>::type>
@@ -16,4 +16,4 @@ struct Reader::value>::type>
: Reader(x.template as()) {}
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
index 062b10921..1d0868048 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
@@ -1,16 +1,16 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-#include
-#include
+#include
#include
+#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template class TDeserializer, typename TReader,
typename TWriter>
@@ -21,55 +21,33 @@ TDeserializer makeDeserializer(MemoryPool* pool,
return TDeserializer(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 class TDeserializer, typename TString,
- typename TFilter>
-typename enable_if::value, DeserializationError>::type
-deserialize(JsonDocument& doc, const TString& input, NestingLimit nestingLimit,
- TFilter filter) {
- Reader reader(input);
- VariantData* data = VariantAttorney::getData(doc);
- MemoryPool* pool = VariantAttorney::getPool(doc);
- doc.clear();
- return makeDeserializer(pool, reader,
- makeStringStorage(input, pool))
- .parse(*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 class TDeserializer, typename TChar,
- typename TFilter>
-DeserializationError deserialize(JsonDocument& doc, TChar* input,
- size_t inputSize, NestingLimit nestingLimit,
- TFilter filter) {
- BoundedReader reader(input, inputSize);
- VariantData* data = VariantAttorney::getData(doc);
- MemoryPool* pool = VariantAttorney::getPool(doc);
- doc.clear();
- return makeDeserializer(pool, reader,
- makeStringStorage(input, pool))
- .parse(*data, filter, nestingLimit);
-}
-//
-// deserialize(JsonDocument&, std::istream&, NestingLimit, Filter);
-// deserialize(JsonDocument&, Stream&, NestingLimit, Filter);
template class TDeserializer, typename TStream,
- typename TFilter>
-DeserializationError deserialize(JsonDocument& doc, TStream& input,
- NestingLimit nestingLimit, TFilter filter) {
- Reader reader(input);
- VariantData* data = VariantAttorney::getData(doc);
- MemoryPool* pool = VariantAttorney::getPool(doc);
+ typename... Args>
+DeserializationError deserialize(JsonDocument& doc, TStream&& input,
+ Args... args) {
+ auto reader = makeReader(detail::forward(input));
+ auto data = VariantAttorney::getData(doc);
+ auto pool = VariantAttorney::getPool(doc);
+ auto options = makeDeserializationOptions(args...);
doc.clear();
return makeDeserializer(pool, reader,
makeStringStorage(input, pool))
- .parse(*data, filter, nestingLimit);
+ .parse(*data, options.filter, options.nestingLimit);
}
-} // namespace ARDUINOJSON_NAMESPACE
+template class TDeserializer, typename TChar,
+ typename Size, typename... Args,
+ typename = typename enable_if::value>::type>
+DeserializationError deserialize(JsonDocument& doc, TChar* input,
+ Size inputSize, Args... args) {
+ auto reader = makeReader(input, size_t(inputSize));
+ auto data = VariantAttorney::getData(doc);
+ auto pool = VariantAttorney::getPool(doc);
+ auto options = makeDeserializationOptions(args...);
+ doc.clear();
+ return makeDeserializer(pool, reader,
+ makeStringStorage(input, pool))
+ .parse(*data, options.filter, options.nestingLimit);
+}
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp
index 7a32f6f2f..4e36273cd 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp
@@ -1,12 +1,12 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
// Helper to implement the "base-from-member" idiom
// (we need to store the allocator before constructing JsonDocument)
@@ -52,11 +52,9 @@ class BasicJsonDocument : AllocatorOwner, public JsonDocument {
}
// Move-constructor
-#if ARDUINOJSON_HAS_RVALUE_REFERENCES
BasicJsonDocument(BasicJsonDocument&& src) : AllocatorOwner(src) {
moveAssignFrom(src);
}
-#endif
BasicJsonDocument(const JsonDocument& src) {
copyAssignFrom(src);
@@ -64,13 +62,14 @@ class BasicJsonDocument : AllocatorOwner, public JsonDocument {
// Construct from variant, array, or object
template
- BasicJsonDocument(
- const T& src,
- typename enable_if<
- is_same::value ||
- is_same::value || is_same::value ||
- is_same::value || is_same::value ||
- is_same::value>::type* = 0)
+ BasicJsonDocument(const T& src,
+ typename detail::enable_if<
+ detail::is_same::value ||
+ detail::is_same::value ||
+ detail::is_same::value ||
+ detail::is_same::value ||
+ detail::is_same::value ||
+ detail::is_same::value>::type* = 0)
: JsonDocument(allocPool(src.memoryUsage())) {
set(src);
}
@@ -90,12 +89,10 @@ class BasicJsonDocument : AllocatorOwner, public JsonDocument {
return *this;
}
-#if ARDUINOJSON_HAS_RVALUE_REFERENCES
BasicJsonDocument& operator=(BasicJsonDocument&& src) {
moveAssignFrom(src);
return *this;
}
-#endif
template
BasicJsonDocument& operator=(const T& src) {
@@ -138,17 +135,17 @@ class BasicJsonDocument : AllocatorOwner, public JsonDocument {
using AllocatorOwner::allocator;
private:
- MemoryPool allocPool(size_t requiredSize) {
- size_t capa = addPadding(requiredSize);
- return MemoryPool(reinterpret_cast(this->allocate(capa)), capa);
+ detail::MemoryPool allocPool(size_t requiredSize) {
+ size_t capa = detail::addPadding(requiredSize);
+ return {reinterpret_cast(this->allocate(capa)), capa};
}
void reallocPool(size_t requiredSize) {
- size_t capa = addPadding(requiredSize);
+ size_t capa = detail::addPadding(requiredSize);
if (capa == _pool.capacity())
return;
freePool();
- replacePool(allocPool(addPadding(requiredSize)));
+ replacePool(allocPool(detail::addPadding(requiredSize)));
}
void freePool() {
@@ -165,8 +162,8 @@ class BasicJsonDocument : AllocatorOwner, public JsonDocument {
_data = src._data;
_pool = src._pool;
src._data.setNull();
- src._pool = MemoryPool(0, 0);
+ src._pool = {0, 0};
}
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp
index dd889a818..3c2dc3a61 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -8,7 +8,7 @@
#include // malloc, free
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
// The allocator of DynamicJsonDocument.
struct DefaultAllocator {
@@ -29,4 +29,4 @@ struct DefaultAllocator {
// https://arduinojson.org/v6/api/dynamicjsondocument/
typedef BasicJsonDocument DynamicJsonDocument;
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
index 286283f84..301fa7ba0 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -12,14 +12,17 @@
#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
// A JSON document.
// https://arduinojson.org/v6/api/jsondocument/
-class JsonDocument : public VariantOperators {
- friend class VariantAttorney;
+class JsonDocument : public detail::VariantOperators {
+ friend class detail::VariantAttorney;
public:
+ JsonDocument(const JsonDocument&) = delete;
+ JsonDocument& operator=(const JsonDocument&) = delete;
+
// Casts the root to the specified type.
// https://arduinojson.org/v6/api/jsondocument/as/
template
@@ -100,15 +103,16 @@ class JsonDocument : public VariantOperators {
// Replaces the root with the specified value.
// https://arduinojson.org/v6/api/jsondocument/set/
template
- typename enable_if::value, bool>::type set(
- const T& src) {
+ typename detail::enable_if::value,
+ bool>::type
+ set(const T& src) {
return to().set(src);
}
// Clears the document and converts it to the specified type.
// https://arduinojson.org/v6/api/jsondocument/to/
template
- typename VariantTo::type to() {
+ typename detail::VariantTo::type to() {
clear();
return getVariant().template to();
}
@@ -157,56 +161,58 @@ class JsonDocument : public VariantOperators {
// https://arduinojson.org/v6/api/jsondocument/containskey/
template
bool containsKey(TChar* key) const {
- return _data.getMember(adaptString(key)) != 0;
+ return _data.getMember(detail::adaptString(key)) != 0;
}
// Returns true if the root object contains the specified key.
// https://arduinojson.org/v6/api/jsondocument/containskey/
template
bool containsKey(const TString& key) const {
- return _data.getMember(adaptString(key)) != 0;
+ return _data.getMember(detail::adaptString(key)) != 0;
}
// Gets or sets a root object's member.
// https://arduinojson.org/v6/api/jsondocument/subscript/
template
- FORCE_INLINE typename enable_if::value,
- MemberProxy >::type
+ FORCE_INLINE typename detail::enable_if<
+ detail::IsString::value,
+ detail::MemberProxy>::type
operator[](const TString& key) {
- return MemberProxy(*this, key);
+ return {*this, key};
}
// Gets or sets a root object's member.
// https://arduinojson.org/v6/api/jsondocument/subscript/
template
- FORCE_INLINE typename enable_if::value,
- MemberProxy >::type
+ FORCE_INLINE typename detail::enable_if<
+ detail::IsString::value,
+ detail::MemberProxy>::type
operator[](TChar* key) {
- return MemberProxy(*this, key);
+ return {*this, key};
}
// Gets a root object's member.
// https://arduinojson.org/v6/api/jsondocument/subscript/
template
- FORCE_INLINE
- typename enable_if::value, JsonVariantConst>::type
- operator[](const TString& key) const {
- return JsonVariantConst(_data.getMember(adaptString(key)));
+ FORCE_INLINE typename detail::enable_if::value,
+ JsonVariantConst>::type
+ operator[](const TString& key) const {
+ return JsonVariantConst(_data.getMember(detail::adaptString(key)));
}
// Gets a root object's member.
// https://arduinojson.org/v6/api/jsondocument/subscript/
template
- FORCE_INLINE
- typename enable_if::value, JsonVariantConst>::type
- operator[](TChar* key) const {
- return JsonVariantConst(_data.getMember(adaptString(key)));
+ FORCE_INLINE typename detail::enable_if::value,
+ JsonVariantConst>::type
+ operator[](TChar* key) const {
+ return JsonVariantConst(_data.getMember(detail::adaptString(key)));
}
// Gets or sets a root array's element.
// https://arduinojson.org/v6/api/jsondocument/subscript/
- FORCE_INLINE ElementProxy operator[](size_t index) {
- return ElementProxy(*this, index);
+ FORCE_INLINE detail::ElementProxy operator[](size_t index) {
+ return {*this, index};
}
// Gets a root array's member.
@@ -247,18 +253,19 @@ class JsonDocument : public VariantOperators {
// ⚠️ Doesn't release the memory associated with the removed element.
// https://arduinojson.org/v6/api/jsondocument/remove/
template
- FORCE_INLINE typename enable_if::value>::type remove(
- TChar* key) {
- _data.remove(adaptString(key));
+ FORCE_INLINE typename detail::enable_if::value>::type
+ remove(TChar* key) {
+ _data.remove(detail::adaptString(key));
}
// Removes a member of the root object.
// ⚠️ Doesn't release the memory associated with the removed element.
// https://arduinojson.org/v6/api/jsondocument/remove/
template
- FORCE_INLINE typename enable_if::value>::type remove(
- const TString& key) {
- _data.remove(adaptString(key));
+ FORCE_INLINE
+ typename detail::enable_if::value>::type
+ remove(const TString& key) {
+ _data.remove(detail::adaptString(key));
}
FORCE_INLINE operator JsonVariant() {
@@ -274,7 +281,7 @@ class JsonDocument : public VariantOperators {
_data.init();
}
- JsonDocument(MemoryPool pool) : _pool(pool) {
+ JsonDocument(detail::MemoryPool pool) : _pool(pool) {
_data.init();
}
@@ -284,7 +291,7 @@ class JsonDocument : public VariantOperators {
~JsonDocument() {}
- void replacePool(MemoryPool pool) {
+ void replacePool(detail::MemoryPool pool) {
_pool = pool;
}
@@ -296,27 +303,23 @@ class JsonDocument : public VariantOperators {
return JsonVariantConst(&_data);
}
- MemoryPool _pool;
- VariantData _data;
-
- private:
- JsonDocument(const JsonDocument&);
- JsonDocument& operator=(const JsonDocument&);
+ detail::MemoryPool _pool;
+ detail::VariantData _data;
protected:
- MemoryPool* getPool() {
+ detail::MemoryPool* getPool() {
return &_pool;
}
- VariantData* getData() {
+ detail::VariantData* getData() {
return &_data;
}
- const VariantData* getData() const {
+ const detail::VariantData* getData() const {
return &_data;
}
- VariantData* getOrCreateData() {
+ detail::VariantData* getOrCreateData() {
return &_data;
}
};
@@ -325,4 +328,4 @@ inline void convertToJson(const JsonDocument& src, JsonVariant dst) {
dst.set(src.as());
}
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp
index d88dc5747..c95f3a7be 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp
@@ -1,18 +1,18 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
// A JsonDocument with a memory pool on the stack.
template
class StaticJsonDocument : public JsonDocument {
static const size_t _capacity =
- AddPadding::value>::value;
+ detail::AddPadding::value>::value;
public:
StaticJsonDocument() : JsonDocument(_buffer, _capacity) {}
@@ -25,7 +25,8 @@ class StaticJsonDocument : public JsonDocument {
template
StaticJsonDocument(
const T& src,
- typename enable_if::value>::type* = 0)
+ typename detail::enable_if<
+ detail::is_convertible::value>::type* = 0)
: JsonDocument(_buffer, _capacity) {
set(src);
}
@@ -57,4 +58,4 @@ class StaticJsonDocument : public JsonDocument {
char _buffer[_capacity];
};
-} // namespace ARDUINOJSON_NAMESPACE
+ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
index 7d28a8281..d2740cc42 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
@@ -1,12 +1,12 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
class EscapeSequence {
public:
@@ -36,4 +36,5 @@ class EscapeSequence {
return &"//\"\"\\\\b\bf\fn\nr\rt\t"[excludeSolidus ? 2 : 0];
}
};
-} // namespace ARDUINOJSON_NAMESPACE
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
index 894e6d344..0696f0ec8 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
+// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
@@ -13,9 +13,10 @@
#include
#include
#include
+#include
#include
-namespace ARDUINOJSON_NAMESPACE {
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
class JsonDeserializer {
@@ -29,7 +30,7 @@ class JsonDeserializer {
template
DeserializationError parse(VariantData& variant, TFilter filter,
- NestingLimit nestingLimit) {
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
err = parseVariant(variant, filter, nestingLimit);
@@ -59,8 +60,9 @@ class JsonDeserializer {
}
template
- DeserializationError::Code parseVariant(VariantData& variant, TFilter filter,
- NestingLimit nestingLimit) {
+ DeserializationError::Code parseVariant(
+ VariantData& variant, TFilter filter,
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
err = skipSpacesAndComments();
@@ -110,7 +112,8 @@ class JsonDeserializer {
}
}
- DeserializationError::Code skipVariant(NestingLimit nestingLimit) {
+ DeserializationError::Code skipVariant(
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
err = skipSpacesAndComments();
@@ -143,8 +146,9 @@ class JsonDeserializer {
}
template
- DeserializationError::Code parseArray(CollectionData& array, TFilter filter,
- NestingLimit nestingLimit) {
+ DeserializationError::Code parseArray(
+ CollectionData& array, TFilter filter,
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
if (nestingLimit.reached())
@@ -196,7 +200,8 @@ class JsonDeserializer {
}
}
- DeserializationError::Code skipArray(NestingLimit nestingLimit) {
+ DeserializationError::Code skipArray(
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
if (nestingLimit.reached())
@@ -227,8 +232,9 @@ class JsonDeserializer {
}
template
- DeserializationError::Code parseObject(CollectionData& object, TFilter filter,
- NestingLimit nestingLimit) {
+ DeserializationError::Code parseObject(
+ CollectionData& object, TFilter filter,
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
if (nestingLimit.reached())
@@ -312,7 +318,8 @@ class JsonDeserializer {
}
}
- DeserializationError::Code skipObject(NestingLimit nestingLimit) {
+ DeserializationError::Code skipObject(
+ DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
if (nestingLimit.reached())
@@ -661,115 +668,26 @@ class JsonDeserializer {
// code
};
-// Parses a JSON input and puts the result in a JsonDocument.
+ARDUINOJSON_END_PRIVATE_NAMESPACE
+
+ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
+
+// Parses a JSON input, filters, and puts the result in a JsonDocument.
// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(
- JsonDocument& doc, const TString& input,
- NestingLimit nestingLimit = NestingLimit()) {
- return deserialize(doc, input, nestingLimit,
- AllowAllFilter());
+template
+DeserializationError deserializeJson(JsonDocument& doc, Args&&... args) {
+ using namespace detail;
+ return deserialize(doc, detail::forward(args)...);
}
// Parses a JSON input, filters, and puts the result in a JsonDocument.
// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(
- JsonDocument& doc, const TString& input, Filter filter,
- NestingLimit nestingLimit = NestingLimit()) {
- return deserialize(doc, input, nestingLimit, filter);
-}
-
-// Parses a JSON input, filters, and puts the result in a JsonDocument.
-// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(JsonDocument& doc, const TString& input,
- NestingLimit nestingLimit, Filter filter) {
- return deserialize(doc, input, nestingLimit, filter);
-}
-
-// Parses a JSON input and puts the result in a JsonDocument.
-// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(
- JsonDocument& doc, TStream& input,
- NestingLimit nestingLimit = NestingLimit()) {
- return deserialize(doc, input, nestingLimit,
- AllowAllFilter());
-}
-
-// Parses a JSON input, filters, and puts the result in a JsonDocument.
-// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(
- JsonDocument& doc, TStream& input, Filter filter,
- NestingLimit nestingLimit = NestingLimit()) {
- return deserialize(doc, input, nestingLimit, filter);
-}
-
-// Parses a JSON input, filters, and puts the result in a JsonDocument.
-// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(JsonDocument& doc, TStream& input,
- NestingLimit nestingLimit, Filter filter) {
- return deserialize(doc, input, nestingLimit, filter);
-}
-
-// Parses a JSON input and puts the result in a JsonDocument.
-// https://arduinojson.org/v6/api/json/deserializejson/
-template
-DeserializationError deserializeJson(
- JsonDocument& doc, TChar* input,
- NestingLimit nestingLimit = NestingLimit()) {
- return deserialize(doc, input, nestingLimit,
- AllowAllFilter());
-}
-
-// Parses a JSON input, filters, and puts the result in a JsonDocument.
-// https://arduinojson.org/v6/api/json/deserializejson/
-template