From 9211d29e1709112bccc3075735818a669102c093 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 6 May 2021 10:10:37 +0200 Subject: [PATCH] upgrade to 6.18 --- lib/ArduinoJson/ArduinoJson.h | 2 +- lib/ArduinoJson/CHANGELOG.md | 43 ++- lib/ArduinoJson/README.md | 9 +- lib/ArduinoJson/src/ArduinoJson.h | 2 +- lib/ArduinoJson/src/ArduinoJson.hpp | 4 +- .../src/ArduinoJson/Array/ArrayFunctions.hpp | 2 +- .../src/ArduinoJson/Array/ArrayImpl.hpp | 2 +- .../src/ArduinoJson/Array/ArrayIterator.hpp | 2 +- .../src/ArduinoJson/Array/ArrayRef.hpp | 40 ++- .../src/ArduinoJson/Array/ArrayShortcuts.hpp | 4 +- .../src/ArduinoJson/Array/ElementProxy.hpp | 16 +- .../src/ArduinoJson/Array/Utilities.hpp | 5 +- .../ArduinoJson/Collection/CollectionData.hpp | 2 +- .../ArduinoJson/Collection/CollectionImpl.hpp | 4 +- .../src/ArduinoJson/Configuration.hpp | 2 +- .../Deserialization/DeserializationError.hpp | 2 +- .../ArduinoJson/Deserialization/Filter.hpp | 2 +- .../Deserialization/NestingLimit.hpp | 2 +- .../ArduinoJson/Deserialization/Reader.hpp | 2 +- .../Readers/ArduinoStreamReader.hpp | 2 +- .../Readers/ArduinoStringReader.hpp | 2 +- .../Deserialization/Readers/FlashReader.hpp | 2 +- .../Readers/IteratorReader.hpp | 2 +- .../Deserialization/Readers/RamReader.hpp | 2 +- .../Readers/StdStreamReader.hpp | 2 +- .../Deserialization/Readers/VariantReader.hpp | 2 +- .../Deserialization/deserialize.hpp | 2 +- .../Document/BasicJsonDocument.hpp | 2 +- .../Document/DynamicJsonDocument.hpp | 2 +- .../src/ArduinoJson/Document/JsonDocument.hpp | 12 +- .../Document/StaticJsonDocument.hpp | 2 +- .../src/ArduinoJson/Json/EscapeSequence.hpp | 2 +- .../src/ArduinoJson/Json/JsonDeserializer.hpp | 2 +- .../src/ArduinoJson/Json/JsonSerializer.hpp | 12 +- .../src/ArduinoJson/Json/Latch.hpp | 2 +- .../ArduinoJson/Json/PrettyJsonSerializer.hpp | 4 +- .../src/ArduinoJson/Json/TextFormatter.hpp | 34 ++- .../src/ArduinoJson/Json/Utf16.hpp | 2 +- lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp | 2 +- .../src/ArduinoJson/Memory/Alignment.hpp | 2 +- .../src/ArduinoJson/Memory/MemoryPool.hpp | 2 +- .../src/ArduinoJson/Misc/SerializedValue.hpp | 2 +- .../src/ArduinoJson/Misc/Visitable.hpp | 2 +- .../MsgPack/MsgPackDeserializer.hpp | 54 ++-- .../ArduinoJson/MsgPack/MsgPackSerializer.hpp | 35 ++- .../src/ArduinoJson/MsgPack/endianess.hpp | 2 +- .../src/ArduinoJson/MsgPack/ieee754.hpp | 2 +- lib/ArduinoJson/src/ArduinoJson/Namespace.hpp | 2 +- .../src/ArduinoJson/Numbers/Float.hpp | 2 +- .../src/ArduinoJson/Numbers/FloatParts.hpp | 2 +- .../src/ArduinoJson/Numbers/FloatTraits.hpp | 2 +- .../src/ArduinoJson/Numbers/Integer.hpp | 2 +- .../ArduinoJson/Numbers/arithmeticCompare.hpp | 2 +- .../src/ArduinoJson/Numbers/convertNumber.hpp | 102 +++---- .../src/ArduinoJson/Numbers/parseNumber.hpp | 22 +- .../src/ArduinoJson/Object/MemberProxy.hpp | 34 ++- .../ArduinoJson/Object/ObjectFunctions.hpp | 2 +- .../src/ArduinoJson/Object/ObjectImpl.hpp | 2 +- .../src/ArduinoJson/Object/ObjectIterator.hpp | 2 +- .../src/ArduinoJson/Object/ObjectRef.hpp | 40 ++- .../ArduinoJson/Object/ObjectShortcuts.hpp | 2 +- .../src/ArduinoJson/Object/Pair.hpp | 2 +- .../src/ArduinoJson/Polyfills/alias_cast.hpp | 2 +- .../src/ArduinoJson/Polyfills/assert.hpp | 2 +- .../src/ArduinoJson/Polyfills/attributes.hpp | 19 +- .../src/ArduinoJson/Polyfills/ctype.hpp | 2 +- .../src/ArduinoJson/Polyfills/integer.hpp | 2 +- .../src/ArduinoJson/Polyfills/limits.hpp | 2 +- .../src/ArduinoJson/Polyfills/math.hpp | 2 +- .../src/ArduinoJson/Polyfills/mpl/max.hpp | 2 +- .../src/ArduinoJson/Polyfills/pgmspace.hpp | 2 +- .../Polyfills/pgmspace_generic.hpp | 2 +- .../ArduinoJson/Polyfills/preprocessor.hpp | 2 +- .../src/ArduinoJson/Polyfills/safe_strcmp.hpp | 2 +- .../ArduinoJson/Polyfills/static_array.hpp | 2 +- .../src/ArduinoJson/Polyfills/type_traits.hpp | 2 +- .../Polyfills/type_traits/conditional.hpp | 2 +- .../Polyfills/type_traits/declval.hpp | 2 +- .../Polyfills/type_traits/enable_if.hpp | 2 +- .../type_traits/integral_constant.hpp | 2 +- .../Polyfills/type_traits/is_array.hpp | 2 +- .../Polyfills/type_traits/is_base_of.hpp | 2 +- .../Polyfills/type_traits/is_class.hpp | 2 +- .../Polyfills/type_traits/is_const.hpp | 2 +- .../Polyfills/type_traits/is_convertible.hpp | 2 +- .../Polyfills/type_traits/is_enum.hpp | 2 +- .../type_traits/is_floating_point.hpp | 2 +- .../Polyfills/type_traits/is_integral.hpp | 2 +- .../Polyfills/type_traits/is_pointer.hpp | 2 +- .../Polyfills/type_traits/is_same.hpp | 2 +- .../Polyfills/type_traits/is_signed.hpp | 2 +- .../Polyfills/type_traits/is_unsigned.hpp | 2 +- .../Polyfills/type_traits/make_unsigned.hpp | 2 +- .../Polyfills/type_traits/remove_const.hpp | 2 +- .../type_traits/remove_reference.hpp | 2 +- .../Polyfills/type_traits/type_identity.hpp | 2 +- .../src/ArduinoJson/Polyfills/utility.hpp | 2 +- .../Serialization/CountingDecorator.hpp | 2 +- .../src/ArduinoJson/Serialization/Writer.hpp | 2 +- .../Writers/ArduinoStringWriter.hpp | 2 +- .../Serialization/Writers/DummyWriter.hpp | 2 +- .../Serialization/Writers/PrintWriter.hpp | 2 +- .../Writers/StaticStringWriter.hpp | 9 +- .../Serialization/Writers/StdStreamWriter.hpp | 2 +- .../Serialization/Writers/StdStringWriter.hpp | 2 +- .../src/ArduinoJson/Serialization/measure.hpp | 2 +- .../ArduinoJson/Serialization/serialize.hpp | 19 +- .../StringStorage/StringCopier.hpp | 2 +- .../ArduinoJson/StringStorage/StringMover.hpp | 2 +- .../StringStorage/StringStorage.hpp | 2 +- .../Strings/ArduinoStringAdapter.hpp | 2 +- .../Strings/ConstRamStringAdapter.hpp | 2 +- .../Strings/FlashStringAdapter.hpp | 2 +- .../Strings/FlashStringIterator.hpp | 2 +- .../src/ArduinoJson/Strings/IsString.hpp | 2 +- .../ArduinoJson/Strings/IsWriteableString.hpp | 2 +- .../ArduinoJson/Strings/RamStringAdapter.hpp | 2 +- .../Strings/SizedFlashStringAdapter.hpp | 2 +- .../Strings/SizedRamStringAdapter.hpp | 2 +- .../ArduinoJson/Strings/StdStringAdapter.hpp | 2 +- .../src/ArduinoJson/Strings/StoragePolicy.hpp | 2 +- .../src/ArduinoJson/Strings/String.hpp | 2 +- .../ArduinoJson/Strings/StringAdapters.hpp | 2 +- .../src/ArduinoJson/Variant/Converter.hpp | 12 + .../src/ArduinoJson/Variant/ConverterImpl.hpp | 268 ++++++++++++++++++ .../src/ArduinoJson/Variant/SlotFunctions.hpp | 2 +- .../src/ArduinoJson/Variant/VariantAs.hpp | 114 -------- .../src/ArduinoJson/Variant/VariantAsImpl.hpp | 57 ---- .../ArduinoJson/Variant/VariantCompare.hpp | 38 +-- .../ArduinoJson/Variant/VariantContent.hpp | 19 +- .../src/ArduinoJson/Variant/VariantData.hpp | 133 ++++----- .../ArduinoJson/Variant/VariantFunctions.hpp | 43 +-- .../src/ArduinoJson/Variant/VariantImpl.hpp | 36 ++- .../src/ArduinoJson/Variant/VariantIs.hpp | 146 ---------- .../ArduinoJson/Variant/VariantOperators.hpp | 20 +- .../src/ArduinoJson/Variant/VariantRef.hpp | 258 +++++++++-------- .../ArduinoJson/Variant/VariantShortcuts.hpp | 2 +- .../src/ArduinoJson/Variant/VariantSlot.hpp | 10 +- .../src/ArduinoJson/Variant/VariantTag.hpp | 2 +- .../src/ArduinoJson/Variant/VariantTo.hpp | 2 +- .../src/ArduinoJson/Variant/Visitor.hpp | 6 +- .../src/ArduinoJson/compatibility.hpp | 4 +- lib/ArduinoJson/src/ArduinoJson/version.hpp | 8 +- lib/ArduinoJson/src/CMakeLists.txt | 2 +- 144 files changed, 1001 insertions(+), 906 deletions(-) create mode 100644 lib/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp create mode 100644 lib/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp delete mode 100644 lib/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp delete mode 100644 lib/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp delete mode 100644 lib/ArduinoJson/src/ArduinoJson/Variant/VariantIs.hpp diff --git a/lib/ArduinoJson/ArduinoJson.h b/lib/ArduinoJson/ArduinoJson.h index b5d887ab9..ba79dc8e3 100644 --- a/lib/ArduinoJson/ArduinoJson.h +++ b/lib/ArduinoJson/ArduinoJson.h @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/CHANGELOG.md b/lib/ArduinoJson/CHANGELOG.md index 53c8f010e..f3866b3c8 100644 --- a/lib/ArduinoJson/CHANGELOG.md +++ b/lib/ArduinoJson/CHANGELOG.md @@ -1,9 +1,11 @@ ArduinoJson: change log ======================= -HEAD ----- +v6.18.0 (2021-05-05) +------- +* Added support for custom converters (issue #687) +* Added support for `Printable` (issue #1444) * Removed support for `char` values, see below (issue #1498) * `deserializeJson()` leaves `\uXXXX` unchanged instead of returning `NotSupported` * `deserializeMsgPack()` inserts `null` instead of returning `NotSupported` @@ -11,9 +13,17 @@ HEAD * Added `JsonVariant::is()` (issue #1412) * Added `JsonVariant::is()` (issue #1412) * Changed `JsonVariantConst::is()` to return `false` (issue #1412) +* Simplified `JsonVariant::as()` to always return `T` (see below) +* Updated folders list in `.mbedignore` (PR #1515 by @AGlass0fMilk) +* Fixed member-call-on-null-pointer in `getMember()` when array is empty +* `serializeMsgPack(doc, buffer, size)` doesn't add null-terminator anymore (issue #1545) +* `serializeJson(doc, buffer, size)` adds null-terminator only if there is enough room +* PlatformIO: set `build.libArchive` to `false` (PR #1550 by @askreet) > ### BREAKING CHANGES > +> #### Support for `char` removed +> > We cannot cast a `JsonVariant` to a `char` anymore, so the following will break: > ```c++ > char age = doc["age"]; // error: no matching function for call to 'variantAs(VariantData*&)' @@ -33,6 +43,31 @@ HEAD > int8_t age; > doc["age"] = age; // OK > ``` +> A deprecation warning with the message "Support for `char` is deprecated, use `int8_t` or `uint8_t` instead" was added to allow a smooth transition. +> +> #### `as()` always returns `T` +> +> Previously, `JsonVariant::as()` could return a type different from `T`. +> The most common example is `as()` that returned a `const char*`. +> While this feature simplified a few use cases, it was confusing and complicated the +> implementation of custom converters. +> +> Starting from this version, `as` doesn't try to auto-correct the return type and always return `T`, +> which means that you cannot write this anymore: +> +> ```c++ +> Serial.println(doc["sensor"].as()); // error: invalid conversion from 'const char*' to 'char*' [-fpermissive] +> ``` +> +> Instead, you must write: +> +> ```c++ +> Serial.println(doc["sensor"].as()); // OK +> ``` +> +> A deprecation warning with the message "Replace `as()` with `as()`" was added to allow a smooth transition. +> +> #### `DeserializationError::NotSupported` removed > > On a different topic, `DeserializationError::NotSupported` has been removed. > Instead of returning this error: @@ -40,7 +75,9 @@ HEAD > * `deserializeJson()` leaves `\uXXXX` unchanged (only when `ARDUINOJSON_DECODE_UNICODE` is `0`) > * `deserializeMsgPack()` replaces unsupported values with `null`s > -> Lastly, a very minor change conserns `JsonVariantConst::is()`. +> #### Const-aware `is()` +> +> Lastly, a very minor change concerns `JsonVariantConst::is()`. > It used to return `true` for `JsonArray` and `JsonOject`, but now it returns `false`. > Instead, you must use `JsonArrayConst` and `JsonObjectConst`. diff --git a/lib/ArduinoJson/README.md b/lib/ArduinoJson/README.md index 5b5206c7c..c30028435 100644 --- a/lib/ArduinoJson/README.md +++ b/lib/ArduinoJson/README.md @@ -2,7 +2,7 @@ --- -[![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.17.3)](https://www.ardu-badge.com/ArduinoJson/6.17.3) +[![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.18.0)](https://www.ardu-badge.com/ArduinoJson/6.18.0) [![Continuous Integration](https://github.com/bblanchon/ArduinoJson/workflows/Continuous%20Integration/badge.svg?branch=6.x)](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A6.x) [![Continuous Integration](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/6.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson) @@ -34,10 +34,11 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). * Deduplicates strings * Versatile * [Supports custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v6/how-to/use-external-ram-on-esp32/?utm_source=github&utm_medium=readme) - * Supports [Arduino's `String`](https://arduinojson.org/v6/api/config/enable_arduino_string/) and [STL's `std::string`](https://arduinojson.org/v6/api/config/enable_std_string/?utm_source=github&utm_medium=readme) - * Supports Arduino's `Stream` and [STL's `std::istream`/`std::ostream`](https://arduinojson.org/v6/api/config/enable_std_stream/?utm_source=github&utm_medium=readme) + * Supports [Arduino's `String`](https://arduinojson.org/v6/api/config/enable_arduino_string/?utm_source=github&utm_medium=readme) and [STL's `std::string`](https://arduinojson.org/v6/api/config/enable_std_string/?utm_source=github&utm_medium=readme) + * Supports [Arduino's `Stream`](https://arduinojson.org/v6/api/config/enable_arduino_stream/?utm_source=github&utm_medium=readme) and [STL's `std::istream`/`std::ostream`](https://arduinojson.org/v6/api/config/enable_std_stream/?utm_source=github&utm_medium=readme) * [Supports Flash strings](https://arduinojson.org/v6/api/config/enable_progmem/?utm_source=github&utm_medium=readme) * Supports [custom readers](https://arduinojson.org/v6/api/json/deserializejson/?utm_source=github&utm_medium=readme#custom-reader) and [custom writers](https://arduinojson.org/v6/api/json/serializejson/?utm_source=github&utm_medium=readme#custom-writer) + * Supports custom converters * Portable * Usable on any C++ project (not limited to Arduino) * Compatible with C++98 @@ -86,7 +87,7 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). * [How-tos](https://arduinojson.org/v6/example/?utm_source=github&utm_medium=readme) * [FAQ](https://arduinojson.org/v6/faq/?utm_source=github&utm_medium=readme) * [Book](https://arduinojson.org/book/?utm_source=github&utm_medium=readme) - * [Changelog](changelog.md) + * [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) and [PlatformIO](https://platformio.org/lib/search) * [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson) diff --git a/lib/ArduinoJson/src/ArduinoJson.h b/lib/ArduinoJson/src/ArduinoJson.h index e6e2b2425..2984c2379 100644 --- a/lib/ArduinoJson/src/ArduinoJson.h +++ b/lib/ArduinoJson/src/ArduinoJson.h @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson.hpp b/lib/ArduinoJson/src/ArduinoJson.hpp index 52b4f3be9..28d42eef5 100644 --- a/lib/ArduinoJson/src/ArduinoJson.hpp +++ b/lib/ArduinoJson/src/ArduinoJson.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -27,7 +27,7 @@ #include "ArduinoJson/Collection/CollectionImpl.hpp" #include "ArduinoJson/Object/MemberProxy.hpp" #include "ArduinoJson/Object/ObjectImpl.hpp" -#include "ArduinoJson/Variant/VariantAsImpl.hpp" +#include "ArduinoJson/Variant/ConverterImpl.hpp" #include "ArduinoJson/Variant/VariantCompare.hpp" #include "ArduinoJson/Variant/VariantImpl.hpp" diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp index 219be6a74..e7cdc4c5c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp index e4e41978c..ae06b2046 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp index b465aa489..fcacc6b6a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp index b92107c18..a991db0d7 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -164,4 +164,42 @@ class ArrayRef : public ArrayRefBase, private: MemoryPool* _pool; }; + +template <> +struct Converter { + static bool toJson(VariantConstRef src, VariantRef dst) { + return variantCopyFrom(getData(dst), getData(src), getPool(dst)); + } + + static ArrayConstRef fromJson(VariantConstRef src) { + return ArrayConstRef(variantAsArray(getData(src))); + } + + static bool checkJson(VariantConstRef src) { + const VariantData* data = getData(src); + return data && data->isArray(); + } +}; + +template <> +struct Converter { + static bool toJson(VariantConstRef src, VariantRef dst) { + return variantCopyFrom(getData(dst), getData(src), getPool(dst)); + } + + static ArrayRef fromJson(VariantRef src) { + VariantData* data = getData(src); + MemoryPool* pool = getPool(src); + return ArrayRef(pool, data != 0 ? data->asArray() : 0); + } + + static bool checkJson(VariantConstRef) { + return false; + } + + static bool checkJson(VariantRef src) { + VariantData* data = getData(src); + return data && data->isArray(); + } +}; } // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp index e39043aa1..fd26d04ae 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -9,6 +9,8 @@ namespace ARDUINOJSON_NAMESPACE { // Forward declarations. +class ArrayRef; +class ObjectRef; template class ElementProxy; diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp index 6e19d01c2..c6062e492 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -65,10 +65,18 @@ class ElementProxy : public VariantOperators >, } template - FORCE_INLINE typename VariantAs::type as() const { + FORCE_INLINE typename enable_if::value, T>::type as() + const { return getUpstreamElement().template as(); } + template + FORCE_INLINE typename enable_if::value, const char*>::type + ARDUINOJSON_DEPRECATED("Replace as() with as()") + as() const { + return as(); + } + template FORCE_INLINE operator T() const { return getUpstreamElement(); @@ -170,6 +178,10 @@ class ElementProxy : public VariantOperators >, return _array.getOrAddElement(_index); } + friend bool convertToJson(const this_type& src, VariantRef dst) { + return dst.set(src.getUpstreamElement()); + } + TArray _array; const size_t _index; }; diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp index 6deba8fe3..619b91d8d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -76,7 +76,8 @@ class ArrayCopier1D : public Visitor { VariantSlot* slot = array.head(); while (slot != 0 && size < _capacity) { - _destination[size++] = variantAs(slot->data()); + _destination[size++] = + Converter::fromJson(VariantConstRef(slot->data())); slot = slot->next(); } return size; diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp index 630c2d48e..d2bca45f0 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp index 51d167790..49a24beed 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -115,6 +115,8 @@ inline VariantSlot* CollectionData::getSlot(TAdaptedString key) const { } inline VariantSlot* CollectionData::getSlot(size_t index) const { + if (!_head) + return 0; return _head->next(index); } diff --git a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp index 3c517369b..0c0d4c489 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp index de6b7dedf..7b617111a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp index 9f50f6e12..7ea3078dc 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp index 88223efdd..06964b43e 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp index 77ca27430..e965c8256 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp index f72ad5fa2..724638f92 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp index b76ce8c71..71571d416 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp index 0d41f7dd0..7eca134d7 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp index 47cfb9250..37c3c317d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp index 8f577a000..67cf6825b 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp index 44ccdddc8..eebaa2cc0 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp index f9c8fb19b..e56e26264 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp index 045fbcbd8..23295421c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp index 4ab738973..5c85d8a78 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp index d6c328fd3..de6f41131 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp index 6ac1ea2d3..d67d93496 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -21,12 +21,12 @@ class JsonDocument : public Visitable { } template - typename VariantAs::type as() { + T as() { return getVariant().template as(); } template - typename VariantConstAs::type as() const { + T as() const { return getVariant().template as(); } @@ -70,7 +70,7 @@ class JsonDocument : public Visitable { } bool set(const JsonDocument& src) { - return to().set(src.as()); + return to().set(src.as()); } template @@ -337,4 +337,8 @@ class JsonDocument : public Visitable { JsonDocument& operator=(const JsonDocument&); }; +inline bool convertToJson(const JsonDocument& src, VariantRef dst) { + return dst.set(src.as()); +} + } // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp index be204b550..fbbadd43a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp index 7e35bd11b..811e82522 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp index c20cf4ca8..1a07be866 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp index a3fe4e24e..5cb9aa270 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -14,6 +14,8 @@ namespace ARDUINOJSON_NAMESPACE { template class JsonSerializer : public Visitor { public: + static const bool producesText = true; + JsonSerializer(TWriter writer) : _formatter(writer) {} FORCE_INLINE size_t visitArray(const CollectionData &array) { @@ -71,13 +73,13 @@ class JsonSerializer : public Visitor { return bytesWritten(); } - size_t visitNegativeInteger(UInt value) { - _formatter.writeNegativeInteger(value); + size_t visitSignedInteger(Integer value) { + _formatter.writeInteger(value); return bytesWritten(); } - size_t visitPositiveInteger(UInt value) { - _formatter.writePositiveInteger(value); + size_t visitUnsignedInteger(UInt value) { + _formatter.writeInteger(value); return bytesWritten(); } diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp index a5d042766..aef1fe368 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp index 3b1b919dc..dbb0c1723 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -16,7 +16,7 @@ class PrettyJsonSerializer : public JsonSerializer { typedef JsonSerializer base; public: - PrettyJsonSerializer(TWriter &writer) : base(writer), _nesting(0) {} + PrettyJsonSerializer(TWriter writer) : base(writer), _nesting(0) {} size_t visitArray(const CollectionData &array) { VariantSlot *slot = array.head(); diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp index 114e45563..18694f14e 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace ARDUINOJSON_NAMESPACE { @@ -75,28 +76,31 @@ class TextFormatter { FloatParts parts(value); - writePositiveInteger(parts.integral); + writeInteger(parts.integral); if (parts.decimalPlaces) writeDecimals(parts.decimal, parts.decimalPlaces); - if (parts.exponent < 0) { - writeRaw("e-"); - writePositiveInteger(-parts.exponent); - } - - if (parts.exponent > 0) { + if (parts.exponent) { writeRaw('e'); - writePositiveInteger(parts.exponent); + writeInteger(parts.exponent); } } - void writeNegativeInteger(UInt value) { - writeRaw('-'); - writePositiveInteger(value); - } - template - void writePositiveInteger(T value) { + typename enable_if::value>::type writeInteger(T value) { + typedef typename make_unsigned::type unsigned_type; + unsigned_type unsigned_value; + if (value < 0) { + writeRaw('-'); + unsigned_value = unsigned_type(unsigned_type(~value) + 1); + } else { + unsigned_value = unsigned_type(value); + } + writeInteger(unsigned_value); + } + + template + typename enable_if::value>::type writeInteger(T value) { char buffer[22]; char *end = buffer + sizeof(buffer); char *begin = end; diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp index ae10d4d23..4e2750f3b 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp index 4f4bc63e6..a30f77a82 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp index 9d91e83e9..bf1679879 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp index 60459eb48..49debf856 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp b/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp index 97408ee0a..30173bf86 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp b/lib/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp index 8dba09a66..f25d12f2b 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp index ec011846f..49c6fd41d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -27,7 +27,7 @@ class MsgPackDeserializer { template DeserializationError parse(VariantData &variant, TFilter filter, NestingLimit nestingLimit) { - parseVariant(variant, filter, nestingLimit); + parseVariant(&variant, filter, nestingLimit); return _foundSomething ? _error : DeserializationError::EmptyInput; } @@ -41,9 +41,9 @@ class MsgPackDeserializer { } template - bool parseVariant(VariantData &variant, TFilter filter, + bool parseVariant(VariantData *variant, TFilter filter, NestingLimit nestingLimit) { - uint8_t code = 0; + uint8_t code = 0; // TODO: why do we need to initialize this variable? if (!readByte(code)) return false; @@ -61,12 +61,12 @@ class MsgPackDeserializer { case 0xc2: if (allowValue) - variant.setBoolean(false); + variant->setBoolean(false); return true; case 0xc3: if (allowValue) - variant.setBoolean(true); + variant->setBoolean(true); return true; case 0xc4: // bin 8 (not supported) @@ -217,7 +217,7 @@ class MsgPackDeserializer { } if (allowValue) - variant.setInteger(static_cast(code)); + variant->setInteger(static_cast(code)); return true; } @@ -263,39 +263,39 @@ class MsgPackDeserializer { } template - bool readInteger(VariantData &variant) { + bool readInteger(VariantData *variant) { T value; if (!readInteger(value)) return false; - variant.setInteger(value); + variant->setInteger(value); return true; } template typename enable_if::type readFloat( - VariantData &variant) { + VariantData *variant) { T value; if (!readBytes(value)) return false; fixEndianess(value); - variant.setFloat(value); + variant->setFloat(value); return true; } template typename enable_if::type readDouble( - VariantData &variant) { + VariantData *variant) { T value; if (!readBytes(value)) return false; fixEndianess(value); - variant.setFloat(value); + variant->setFloat(value); return true; } template typename enable_if::type readDouble( - VariantData &variant) { + VariantData *variant) { uint8_t i[8]; // input is 8 bytes T value; // output is 4 bytes uint8_t *o = reinterpret_cast(&value); @@ -303,12 +303,12 @@ class MsgPackDeserializer { return false; doubleToFloat(i, o); fixEndianess(value); - variant.setFloat(value); + variant->setFloat(value); return true; } template - bool readString(VariantData &variant) { + bool readString(VariantData *variant) { T size; if (!readInteger(size)) return false; @@ -331,11 +331,11 @@ class MsgPackDeserializer { return skipBytes(size); } - bool readString(VariantData &variant, size_t n) { + bool readString(VariantData *variant, size_t n) { if (!readString(n)) return false; - variant.setStringPointer(_stringStorage.save(), - typename TStringStorage::storage_policy()); + variant->setStringPointer(_stringStorage.save(), + typename TStringStorage::storage_policy()); return true; } @@ -357,7 +357,7 @@ class MsgPackDeserializer { } template - bool readArray(VariantData &variant, TFilter filter, + bool readArray(VariantData *variant, TFilter filter, NestingLimit nestingLimit) { TSize size; if (!readInteger(size)) @@ -366,7 +366,7 @@ class MsgPackDeserializer { } template - bool readArray(VariantData &variant, size_t n, TFilter filter, + bool readArray(VariantData *variant, size_t n, TFilter filter, NestingLimit nestingLimit) { if (nestingLimit.reached()) { _error = DeserializationError::TooDeep; @@ -375,7 +375,7 @@ class MsgPackDeserializer { bool allowArray = filter.allowArray(); - CollectionData *array = allowArray ? &variant.toArray() : 0; + CollectionData *array = allowArray ? &variant->toArray() : 0; TFilter memberFilter = filter[0U]; @@ -392,7 +392,7 @@ class MsgPackDeserializer { value = 0; } - if (!parseVariant(*value, memberFilter, nestingLimit.decrement())) + if (!parseVariant(value, memberFilter, nestingLimit.decrement())) return false; } @@ -400,7 +400,7 @@ class MsgPackDeserializer { } template - bool readObject(VariantData &variant, TFilter filter, + bool readObject(VariantData *variant, TFilter filter, NestingLimit nestingLimit) { TSize size; if (!readInteger(size)) @@ -409,14 +409,14 @@ class MsgPackDeserializer { } template - bool readObject(VariantData &variant, size_t n, TFilter filter, + bool readObject(VariantData *variant, size_t n, TFilter filter, NestingLimit nestingLimit) { if (nestingLimit.reached()) { _error = DeserializationError::TooDeep; return false; } - CollectionData *object = filter.allowObject() ? &variant.toObject() : 0; + CollectionData *object = filter.allowObject() ? &variant->toObject() : 0; for (; n; --n) { if (!readKey()) @@ -444,7 +444,7 @@ class MsgPackDeserializer { member = 0; } - if (!parseVariant(*member, memberFilter, nestingLimit.decrement())) + if (!parseVariant(member, memberFilter, nestingLimit.decrement())) return false; } diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp index bb9d05bb2..b1cd8727c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -17,6 +17,8 @@ namespace ARDUINOJSON_NAMESPACE { template class MsgPackSerializer : public Visitor { public: + static const bool producesText = false; + MsgPackSerializer(TWriter writer) : _writer(writer) {} template @@ -101,30 +103,37 @@ class MsgPackSerializer : public Visitor { return bytesWritten(); } - size_t visitNegativeInteger(UInt value) { - UInt negated = UInt(~value + 1); - if (value <= 0x20) { - writeInteger(int8_t(negated)); - } else if (value <= 0x80) { + size_t visitSignedInteger(Integer value) { + if (value > 0) { + visitUnsignedInteger(static_cast(value)); + } else if (value >= -0x20) { + writeInteger(int8_t(value)); + } else if (value >= -0x80) { writeByte(0xD0); - writeInteger(int8_t(negated)); - } else if (value <= 0x8000) { + writeInteger(int8_t(value)); + } else if (value >= -0x8000) { writeByte(0xD1); - writeInteger(int16_t(negated)); - } else if (value <= 0x80000000) { + writeInteger(int16_t(value)); + } +#if ARDUINOJSON_USE_LONG_LONG + else if (value >= -0x80000000LL) +#else + else +#endif + { writeByte(0xD2); - writeInteger(int32_t(negated)); + writeInteger(int32_t(value)); } #if ARDUINOJSON_USE_LONG_LONG else { writeByte(0xD3); - writeInteger(int64_t(negated)); + writeInteger(int64_t(value)); } #endif return bytesWritten(); } - size_t visitPositiveInteger(UInt value) { + size_t visitUnsignedInteger(UInt value) { if (value <= 0x7F) { writeInteger(uint8_t(value)); } else if (value <= 0xFF) { diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp index ff1bf8ed9..74f7e9dae 100644 --- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp index 19ead87e4..016d5334d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp b/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp index 88b67dd42..2d85440aa 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp index de5884ef3..bbaca0454 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp index 7bdfe9f37..4e53add39 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp index 4286af016..60b1dfd1a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp index d5e3a15f4..fb656a7d9 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp index caf6e3361..bfd41d548 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp index fad7c6d71..02bbefa50 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -15,84 +15,86 @@ #endif #include -#include -#include #include +#include namespace ARDUINOJSON_NAMESPACE { +// uint32 -> int32 +// uint64 -> int32 template -typename enable_if::value && sizeof(TOut) <= sizeof(TIn), +typename enable_if::value && is_unsigned::value && + is_integral::value && sizeof(TOut) <= sizeof(TIn), bool>::type -canStorePositiveInteger(TIn value) { +canConvertNumber(TIn value) { return value <= TIn(numeric_limits::highest()); } +// uint32 -> int64 template -typename enable_if::value && sizeof(TIn) < sizeof(TOut), +typename enable_if::value && is_unsigned::value && + is_integral::value && sizeof(TIn) < sizeof(TOut), bool>::type -canStorePositiveInteger(TIn) { +canConvertNumber(TIn) { return true; } +// uint32 -> float +// int32 -> float template -typename enable_if::value, bool>::type -canStorePositiveInteger(TIn) { +typename enable_if::value && is_floating_point::value, + bool>::type +canConvertNumber(TIn) { return true; } +// int64 -> int32 template -typename enable_if::value, bool>::type -canStoreNegativeInteger(TIn) { +typename enable_if::value && is_signed::value && + is_integral::value && is_signed::value && + sizeof(TOut) < sizeof(TIn), + bool>::type +canConvertNumber(TIn value) { + return value >= TIn(numeric_limits::lowest()) && + value <= TIn(numeric_limits::highest()); +} + +// int32 -> int32 +// int32 -> int64 +template +typename enable_if::value && is_signed::value && + is_integral::value && is_signed::value && + sizeof(TIn) <= sizeof(TOut), + bool>::type +canConvertNumber(TIn) { return true; } +// int32 -> uint32 template -typename enable_if::value && is_signed::value && - sizeof(TOut) <= sizeof(TIn), +typename enable_if::value && is_signed::value && + is_integral::value && is_unsigned::value, bool>::type -canStoreNegativeInteger(TIn value) { - return value <= TIn(numeric_limits::highest()) + 1; +canConvertNumber(TIn value) { + if (value < 0) + return false; + return value <= TIn(numeric_limits::highest()); } +// float -> int32 +// float -> int64 template -typename enable_if::value && is_signed::value && - sizeof(TIn) < sizeof(TOut), +typename enable_if::value && + !is_floating_point::value, bool>::type -canStoreNegativeInteger(TIn) { - return true; -} - -template -typename enable_if::value && is_unsigned::value, - bool>::type -canStoreNegativeInteger(TIn) { - return false; -} - -template -TOut convertPositiveInteger(TIn value) { - return canStorePositiveInteger(value) ? TOut(value) : 0; -} - -template -TOut convertNegativeInteger(TIn value) { - return canStoreNegativeInteger(value) ? TOut(~value + 1) : 0; -} - -template -typename enable_if::value, TOut>::type convertFloat( - TIn value) { - return TOut(value); -} - -template -typename enable_if::value, TOut>::type convertFloat( - TIn value) { +canConvertNumber(TIn value) { return value >= numeric_limits::lowest() && - value <= numeric_limits::highest() - ? TOut(value) - : 0; + value <= numeric_limits::highest(); +} + +template +TOut convertNumber(TIn value) { + return canConvertNumber(value) ? TOut(value) : 0; } } // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp index eb3ce579c..cf050c78d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include namespace ARDUINOJSON_NAMESPACE { @@ -69,11 +69,17 @@ inline bool parseNumber(const char* s, VariantData& result) { } if (*s == '\0') { - if (is_negative) - result.setNegativeInteger(UInt(mantissa)); - else - result.setPositiveInteger(UInt(mantissa)); - return true; + if (is_negative) { + const mantissa_t sintMantissaMax = mantissa_t(1) + << (sizeof(Integer) * 8 - 1); + if (mantissa <= sintMantissaMax) { + result.setInteger(Integer(~mantissa + 1)); + return true; + } + } else { + result.setInteger(UInt(mantissa)); + return true; + } } // avoid mantissa overflow @@ -142,6 +148,6 @@ inline T parseNumber(const char* s) { VariantData value; value.init(); // VariantData is a POD, so it has no constructor parseNumber(s, value); - return variantAs(&value); + return Converter::fromJson(VariantConstRef(&value)); } } // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp index c3cd9d514..0bee84bf2 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -46,20 +46,6 @@ class MemberProxy : public VariantOperators >, template FORCE_INLINE typename enable_if::value, this_type &>::type operator=(const TValue &src) { - /******************************************************************** - ** THIS IS NOT A BUG IN THE LIBRARY ** - ** -------------------------------- ** - ** Get a compilation error pointing here? ** - ** It doesn't mean the error *is* here. ** - ** Often, it's because you try to assign the wrong value type. ** - ** ** - ** For example: ** - ** char age = 42 ** - ** doc["age"] = age; ** - ** Instead, use: ** - ** int8_t age = 42; ** - ** doc["age"] = age; ** - ********************************************************************/ getOrAddUpstreamMember().set(src); return *this; } @@ -81,9 +67,17 @@ class MemberProxy : public VariantOperators >, return getUpstreamMember().isNull(); } - template - FORCE_INLINE typename VariantAs::type as() const { - return getUpstreamMember().template as(); + template + FORCE_INLINE typename enable_if::value, T>::type as() + const { + return getUpstreamMember().template as(); + } + + template + FORCE_INLINE typename enable_if::value, const char *>::type + ARDUINOJSON_DEPRECATED("Replace as() with as()") + as() const { + return as(); } template @@ -193,6 +187,10 @@ class MemberProxy : public VariantOperators >, return _object.getOrAddMember(_key); } + friend bool convertToJson(const this_type &src, VariantRef dst) { + return dst.set(src.getUpstreamMember()); + } + TObject _object; TStringRef _key; }; diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp index b784c86e6..1b46e8426 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp index 97c6e8ce0..d66b61cad 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp index 6f70c5d9f..d72945990 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp index 618f1ecdb..c945fb6ca 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -236,4 +236,42 @@ class ObjectRef : public ObjectRefBase, private: MemoryPool* _pool; }; + +template <> +struct Converter { + static bool toJson(VariantConstRef src, VariantRef dst) { + return variantCopyFrom(getData(dst), getData(src), getPool(dst)); + } + + static ObjectConstRef fromJson(VariantConstRef src) { + return ObjectConstRef(variantAsObject(getData(src))); + } + + static bool checkJson(VariantConstRef src) { + const VariantData* data = getData(src); + return data && data->isObject(); + } +}; + +template <> +struct Converter { + static bool toJson(VariantConstRef src, VariantRef dst) { + return variantCopyFrom(getData(dst), getData(src), getPool(dst)); + } + + static ObjectRef fromJson(VariantRef src) { + VariantData* data = getData(src); + MemoryPool* pool = getPool(src); + return ObjectRef(pool, data != 0 ? data->asObject() : 0); + } + + static bool checkJson(VariantConstRef) { + return false; + } + + static bool checkJson(VariantRef src) { + VariantData* data = getData(src); + return data && data->isObject(); + } +}; } // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp index 579adc746..0f3409f5f 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/Pair.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/Pair.hpp index 213426c6a..44fce7518 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/Pair.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/Pair.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp index b7a040ee1..8f8e2770c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp index 5fa2b4598..1030ec60e 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp index 66fd688f2..f04c9acce 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -8,23 +8,32 @@ #define FORCE_INLINE // __forceinline causes C4714 when returning std::string #define NO_INLINE __declspec(noinline) -#define DEPRECATED(msg) __declspec(deprecated(msg)) + +#ifndef ARDUINOJSON_DEPRECATED +#define ARDUINOJSON_DEPRECATED(msg) __declspec(deprecated(msg)) +#endif #elif defined(__GNUC__) // GCC or Clang #define FORCE_INLINE __attribute__((always_inline)) #define NO_INLINE __attribute__((noinline)) + +#ifndef ARDUINOJSON_DEPRECATED #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -#define DEPRECATED(msg) __attribute__((deprecated(msg))) +#define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated(msg))) #else -#define DEPRECATED(msg) __attribute__((deprecated)) +#define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated)) +#endif #endif #else // Other compilers #define FORCE_INLINE #define NO_INLINE -#define DEPRECATED(msg) + +#ifndef ARDUINOJSON_DEPRECATED +#define ARDUINOJSON_DEPRECATED(msg) +#endif #endif diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp index fd3683d6a..bd7a8cc65 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp index 2d9985ded..066c7b800 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp index 65cd79ffc..80048284b 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp index 635200c32..eff272add 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp index 21484cd51..9ac47a53d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp index d0333aaa0..f253818e0 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp index 39c3755c0..f5bbd85e5 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp index a3370c14c..488654b21 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp index dcb175ba6..e017b5dda 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp index eac4d9472..a877b4caa 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp index 6d6ffb675..4a8ff4b94 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp index 3ae1d2838..e42d1bb99 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp index 541cae46e..87081123a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp index 4e1f0a7c4..cc29b3375 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp index 98a8a44b3..b53d7111c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp index eb6148a80..ee739a70a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp index 2af9a6282..32b41cd95 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp index 05bceeebd..a3808f3a3 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp index a49b0b61a..32e758c98 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp index 7f2724320..847525a93 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp index 973d937b2..26aec1de0 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp index d2a26c8ad..b7e9d3d24 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp index 61ef33120..26e895c8a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp index 39d286978..a24953964 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp index 374f9e56c..db5da9bdf 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp index 08b27e654..fbb701cf7 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp index 8a24e592b..be2649829 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp index 97c7bcc5f..4cf2d08b8 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp index 9adae4a3f..5a19eb18d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp index 7098d322d..181285087 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp index d1b6052c1..c464a47c3 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp index 363e1ae45..c99bc9919 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp index bd4432c18..3d89fb1d6 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp index cbbc5ca73..52bd1175d 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp index ba0adfb5d..5efa6e492 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp index d8561de96..a26a1f1cf 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp index d702bd894..13a64912c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp index e36779335..1a4213b83 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -8,18 +8,14 @@ namespace ARDUINOJSON_NAMESPACE { -// A Print implementation that allows to write in a char[] class StaticStringWriter { public: - StaticStringWriter(char *buf, size_t size) : end(buf + size - 1), p(buf) { - *p = '\0'; - } + StaticStringWriter(char *buf, size_t size) : end(buf + size), p(buf) {} size_t write(uint8_t c) { if (p >= end) return 0; *p++ = static_cast(c); - *p = '\0'; return 1; } @@ -29,7 +25,6 @@ class StaticStringWriter { *p++ = static_cast(*s++); n--; } - *p = '\0'; return size_t(p - begin); } diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp index d0d534289..e08ba4d60 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp index eb56b2b32..c1f7cc00f 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp index 7b656f650..6d199944c 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp index 73a720e2e..16d2e4ef1 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp @@ -1,4 +1,4 @@ -// ArduinoJson - arduinojson.org +// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License @@ -23,11 +23,23 @@ size_t serialize(const TSource &source, TDestination &destination) { } template