diff --git a/CHANGELOG.md b/CHANGELOG.md index c572cda42..73089e353 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ HEAD * Fixed error when assigning a `volatile int` to a `JsonVariant` (issue #415) * Fixed errors with Variable Length Arrays (issue #416) +* Fixed error when both `ARDUINOJSON_ENABLE_STD_STREAM` and `ARDUINOJSON_ENABLE_ARDUINO_STREAM` are set to `1` v5.8.0 ------ diff --git a/include/ArduinoJson/Data/ValueSetter.hpp b/include/ArduinoJson/Data/ValueSetter.hpp index 07d3ddd68..3898a536f 100644 --- a/include/ArduinoJson/Data/ValueSetter.hpp +++ b/include/ArduinoJson/Data/ValueSetter.hpp @@ -26,8 +26,8 @@ struct ValueSetter { }; template -struct ValueSetter::should_duplicate>::type> { +struct ValueSetter::should_duplicate>::type> { template static bool set(JsonBuffer* buffer, TDestination& destination, const TSource& source) { diff --git a/include/ArduinoJson/Deserialization/JsonParser.hpp b/include/ArduinoJson/Deserialization/JsonParser.hpp index 65e064bee..676cdf8bc 100644 --- a/include/ArduinoJson/Deserialization/JsonParser.hpp +++ b/include/ArduinoJson/Deserialization/JsonParser.hpp @@ -74,7 +74,7 @@ class JsonParser { template struct JsonParserBuilder { - typedef typename Internals::StringFuncs::Iterator InputIterator; + typedef typename Internals::StringTraits::Iterator InputIterator; typedef JsonParser, TJsonBuffer &> TParser; static TParser makeParser(TJsonBuffer *buffer, TString &json, @@ -85,7 +85,7 @@ struct JsonParserBuilder { template struct JsonParserBuilder { - typedef typename Internals::StringFuncs::Iterator InputIterator; + typedef typename Internals::StringTraits::Iterator InputIterator; typedef JsonParser, StringWriter> TParser; static TParser makeParser(TJsonBuffer *buffer, char *json, diff --git a/include/ArduinoJson/JsonBuffer.hpp b/include/ArduinoJson/JsonBuffer.hpp index e1c787741..30b18a2eb 100644 --- a/include/ArduinoJson/JsonBuffer.hpp +++ b/include/ArduinoJson/JsonBuffer.hpp @@ -61,14 +61,14 @@ class JsonBuffer { typename TypeTraits::EnableIf::value, char *>::type strdup(const TString &src) { - return Internals::StringFuncs::duplicate(src, this); + return Internals::StringTraits::duplicate(src, this); } // // char* strdup(TValue); // TValue = const char*, const char[N], const FlashStringHelper* template char *strdup(const TString *src) { - return Internals::StringFuncs::duplicate(src, this); + return Internals::StringTraits::duplicate(src, this); } // Allocates n bytes in the JsonBuffer. diff --git a/include/ArduinoJson/JsonObject.hpp b/include/ArduinoJson/JsonObject.hpp index 873289fef..47202a1df 100644 --- a/include/ArduinoJson/JsonObject.hpp +++ b/include/ArduinoJson/JsonObject.hpp @@ -282,7 +282,7 @@ class JsonObject : public Internals::JsonPrintable, template node_type* findNode(TStringRef key) const { for (node_type* node = _firstNode; node; node = node->next) { - if (Internals::StringFuncs::equals(key, node->content.key)) + if (Internals::StringTraits::equals(key, node->content.key)) return node; } return NULL; diff --git a/include/ArduinoJson/JsonVariant.hpp b/include/ArduinoJson/JsonVariant.hpp index 43d012548..6a066045e 100644 --- a/include/ArduinoJson/JsonVariant.hpp +++ b/include/ArduinoJson/JsonVariant.hpp @@ -163,7 +163,7 @@ class JsonVariant : public JsonVariantBase { // std::string as() const; // String as() const; template - typename TypeTraits::EnableIf::has_append, T>::type + typename TypeTraits::EnableIf::has_append, T>::type as() const { const char *cstr = asString(); if (cstr) return T(cstr); diff --git a/include/ArduinoJson/JsonVariantBase.hpp b/include/ArduinoJson/JsonVariantBase.hpp index 7c9a9e5e8..22cb91143 100644 --- a/include/ArduinoJson/JsonVariantBase.hpp +++ b/include/ArduinoJson/JsonVariantBase.hpp @@ -83,7 +83,7 @@ class JsonVariantBase : public Internals::JsonPrintable { // TKey = const std::string&, const String& template FORCE_INLINE typename TypeTraits::EnableIf< - Internals::StringFuncs::has_equals, + Internals::StringTraits::has_equals, const JsonObjectSubscript >::type operator[](const TString &key) const { return asObject()[key]; @@ -92,10 +92,10 @@ class JsonVariantBase : public Internals::JsonPrintable { // const JsonObjectSubscript operator[](TKey) const; // TKey = const char*, const char[N], const FlashStringHelper* template - FORCE_INLINE - typename TypeTraits::EnableIf::has_equals, - JsonObjectSubscript >::type - operator[](const TString &key) { + FORCE_INLINE typename TypeTraits::EnableIf< + Internals::StringTraits::has_equals, + JsonObjectSubscript >::type + operator[](const TString &key) { return asObject()[key]; } // @@ -103,7 +103,7 @@ class JsonVariantBase : public Internals::JsonPrintable { // TKey = const std::string&, const String& template FORCE_INLINE typename TypeTraits::EnableIf< - Internals::StringFuncs::has_equals, + Internals::StringTraits::has_equals, JsonObjectSubscript >::type operator[](const TString *key) { return asObject()[key]; @@ -113,7 +113,7 @@ class JsonVariantBase : public Internals::JsonPrintable { // TKey = const char*, const char[N], const FlashStringHelper* template FORCE_INLINE typename TypeTraits::EnableIf< - Internals::StringFuncs::has_equals, + Internals::StringTraits::has_equals, const JsonObjectSubscript >::type operator[](const TString *key) const { return asObject()[key]; diff --git a/include/ArduinoJson/JsonVariantComparisons.hpp b/include/ArduinoJson/JsonVariantComparisons.hpp index 8af2f780b..590670e37 100644 --- a/include/ArduinoJson/JsonVariantComparisons.hpp +++ b/include/ArduinoJson/JsonVariantComparisons.hpp @@ -21,11 +21,11 @@ struct JsonVariantComparer { template struct JsonVariantComparer< - TVariant, TString, typename TypeTraits::EnableIf< - Internals::StringFuncs::has_equals>::type> { + TVariant, TString, typename TypeTraits::EnableIf::has_equals>::type> { static bool equals(const TVariant &variant, const TString &comparand) { const char *value = variant.template as(); - return Internals::StringFuncs::equals(comparand, value); + return Internals::StringTraits::equals(comparand, value); } }; diff --git a/include/ArduinoJson/Serialization/DynamicStringBuilder.hpp b/include/ArduinoJson/Serialization/DynamicStringBuilder.hpp index 56a935f20..dc520d13d 100644 --- a/include/ArduinoJson/Serialization/DynamicStringBuilder.hpp +++ b/include/ArduinoJson/Serialization/DynamicStringBuilder.hpp @@ -20,7 +20,7 @@ class DynamicStringBuilder : public Print { DynamicStringBuilder(TString &str) : _str(str) {} virtual size_t write(uint8_t c) { - StringFuncs::append(_str, static_cast(c)); + StringTraits::append(_str, static_cast(c)); return 1; } diff --git a/include/ArduinoJson/Serialization/JsonPrintable.hpp b/include/ArduinoJson/Serialization/JsonPrintable.hpp index fba1ce140..3e17fd5cc 100644 --- a/include/ArduinoJson/Serialization/JsonPrintable.hpp +++ b/include/ArduinoJson/Serialization/JsonPrintable.hpp @@ -56,7 +56,7 @@ class JsonPrintable { } template - typename TypeTraits::EnableIf::has_append, size_t>::type + typename TypeTraits::EnableIf::has_append, size_t>::type printTo(TString &str) const { DynamicStringBuilder sb(str); return printTo(sb); @@ -83,7 +83,7 @@ class JsonPrintable { } template - typename TypeTraits::EnableIf::has_append, size_t>::type + typename TypeTraits::EnableIf::has_append, size_t>::type prettyPrintTo(TString &str) const { DynamicStringBuilder sb(str); return prettyPrintTo(sb); diff --git a/include/ArduinoJson/StringTraits/ArduinoStream.hpp b/include/ArduinoJson/StringTraits/ArduinoStream.hpp index de66bc353..857fe8eb8 100644 --- a/include/ArduinoJson/StringTraits/ArduinoStream.hpp +++ b/include/ArduinoJson/StringTraits/ArduinoStream.hpp @@ -14,7 +14,7 @@ namespace ArduinoJson { namespace Internals { -struct StdStreamFuncs { +struct ArduinoStreamTraits { class Iterator { Stream& _stream; @@ -29,11 +29,11 @@ struct StdStreamFuncs { }; template -struct StringFuncs::type>::value>::type> - : StdStreamFuncs {}; +struct StringTraits::type>::value>::type> + : ArduinoStreamTraits {}; } } diff --git a/include/ArduinoJson/StringTraits/CharPointer.hpp b/include/ArduinoJson/StringTraits/CharPointer.hpp index d04c5f71c..e5d0efff0 100644 --- a/include/ArduinoJson/StringTraits/CharPointer.hpp +++ b/include/ArduinoJson/StringTraits/CharPointer.hpp @@ -10,7 +10,7 @@ namespace ArduinoJson { namespace Internals { -struct CharPtrFuncs { +struct CharPointerTraits { class Iterator { const char* _ptr; @@ -43,9 +43,9 @@ struct CharPtrFuncs { }; template <> -struct StringFuncs : CharPtrFuncs {}; +struct StringTraits : CharPointerTraits {}; template <> -struct StringFuncs : CharPtrFuncs {}; +struct StringTraits : CharPointerTraits {}; } } diff --git a/include/ArduinoJson/StringTraits/FlashString.hpp b/include/ArduinoJson/StringTraits/FlashString.hpp index 82711633b..6c44ee97c 100644 --- a/include/ArduinoJson/StringTraits/FlashString.hpp +++ b/include/ArduinoJson/StringTraits/FlashString.hpp @@ -10,7 +10,7 @@ namespace ArduinoJson { namespace Internals { template <> -struct StringFuncs { +struct StringTraits { class Iterator { const char* _ptr; diff --git a/include/ArduinoJson/StringTraits/StdStream.hpp b/include/ArduinoJson/StringTraits/StdStream.hpp index 38f7954bb..d3614cd1c 100644 --- a/include/ArduinoJson/StringTraits/StdStream.hpp +++ b/include/ArduinoJson/StringTraits/StdStream.hpp @@ -15,7 +15,7 @@ namespace ArduinoJson { namespace Internals { -struct StdStreamFuncs { +struct StdStreamTraits { class Iterator { std::istream& _stream; @@ -32,11 +32,11 @@ struct StdStreamFuncs { }; template -struct StringFuncs::type>::value>::type> - : StdStreamFuncs {}; +struct StringTraits::type>::value>::type> + : StdStreamTraits {}; } } diff --git a/include/ArduinoJson/StringTraits/StdString.hpp b/include/ArduinoJson/StringTraits/StdString.hpp index cfb848cf9..1d206c7f5 100644 --- a/include/ArduinoJson/StringTraits/StdString.hpp +++ b/include/ArduinoJson/StringTraits/StdString.hpp @@ -19,7 +19,7 @@ namespace ArduinoJson { namespace Internals { template -struct StdStringFuncs { +struct StdStringTraits { template static char* duplicate(const TString& str, Buffer* buffer) { if (!str.c_str()) return NULL; // <- Arduino string can return NULL @@ -29,8 +29,8 @@ struct StdStringFuncs { return static_cast(dup); } - struct Iterator : CharPtrFuncs::Iterator { - Iterator(const TString& str) : CharPtrFuncs::Iterator(str.c_str()) {} + struct Iterator : CharPointerTraits::Iterator { + Iterator(const TString& str) : CharPointerTraits::Iterator(str.c_str()) {} }; static bool equals(const TString& str, const char* expected) { @@ -48,14 +48,15 @@ struct StdStringFuncs { #if ARDUINOJSON_ENABLE_ARDUINO_STRING template <> -struct StringFuncs : StdStringFuncs {}; +struct StringTraits : StdStringTraits {}; template <> -struct StringFuncs : StdStringFuncs {}; +struct StringTraits : StdStringTraits { +}; #endif #if ARDUINOJSON_ENABLE_STD_STRING template <> -struct StringFuncs : StdStringFuncs {}; +struct StringTraits : StdStringTraits {}; #endif } } diff --git a/include/ArduinoJson/StringTraits/StringTraits.hpp b/include/ArduinoJson/StringTraits/StringTraits.hpp index b4f23e848..3f0b63f27 100644 --- a/include/ArduinoJson/StringTraits/StringTraits.hpp +++ b/include/ArduinoJson/StringTraits/StringTraits.hpp @@ -13,13 +13,13 @@ namespace ArduinoJson { namespace Internals { template -struct StringFuncs {}; +struct StringTraits {}; template -struct StringFuncs : StringFuncs {}; +struct StringTraits : StringTraits {}; template -struct StringFuncs : StringFuncs {}; +struct StringTraits : StringTraits {}; } }