mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Remove support for naked char (was deprecated since 6.18.0)
				
					
				
			This commit is contained in:
		| @@ -15,6 +15,7 @@ HEAD | |||||||
| * Remove undocumented `JsonArrayIterator::internal()` and `JsonObjectIterator::internal()` | * Remove undocumented `JsonArrayIterator::internal()` and `JsonObjectIterator::internal()` | ||||||
| * Rename things in `ARDUINOJSON_NAMESPACE` to match the public names | * Rename things in `ARDUINOJSON_NAMESPACE` to match the public names | ||||||
| * Add documentation to most public symbols | * Add documentation to most public symbols | ||||||
|  | * Remove support for naked `char` (was deprecated since 6.18.0) | ||||||
|  |  | ||||||
| > ### BREAKING CHANGES | > ### BREAKING CHANGES | ||||||
| > | > | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ | |||||||
| add_executable(MiscTests | add_executable(MiscTests | ||||||
| 	arithmeticCompare.cpp | 	arithmeticCompare.cpp | ||||||
| 	conflicts.cpp | 	conflicts.cpp | ||||||
| 	deprecated.cpp |  | ||||||
| 	FloatParts.cpp | 	FloatParts.cpp | ||||||
| 	JsonString.cpp | 	JsonString.cpp | ||||||
| 	NoArduinoHeader.cpp | 	NoArduinoHeader.cpp | ||||||
|   | |||||||
| @@ -1,115 +0,0 @@ | |||||||
| // ArduinoJson - https://arduinojson.org |  | ||||||
| // Copyright © 2014-2022, Benoit BLANCHON |  | ||||||
| // MIT License |  | ||||||
|  |  | ||||||
| #define ARDUINOJSON_DEPRECATED(msg)  // nothing |  | ||||||
|  |  | ||||||
| #include <ArduinoJson.h> |  | ||||||
| #include <catch.hpp> |  | ||||||
|  |  | ||||||
| TEST_CASE("Deprecated features") { |  | ||||||
|   StaticJsonDocument<256> doc; |  | ||||||
|   const char* s = "hello"; |  | ||||||
|   doc["s"] = s; |  | ||||||
|   doc["c"] = 42; |  | ||||||
|   doc["a"].add(s); |  | ||||||
|   doc["a"].add(42); |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariant::add(char)") { |  | ||||||
|     JsonVariant v = doc.to<JsonVariant>(); |  | ||||||
|     v.add('*'); |  | ||||||
|     REQUIRE(v[0] == 42); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariant::as<char*>()") { |  | ||||||
|     JsonVariant v = doc["s"]; |  | ||||||
|     REQUIRE(v.as<char*>() == s); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariant::as<char>()") { |  | ||||||
|     JsonVariant v = doc["c"]; |  | ||||||
|     REQUIRE(v.as<char>() == '*'); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariant::is<char*>()") { |  | ||||||
|     JsonVariant v = doc["s"]; |  | ||||||
|     REQUIRE(v.is<char*>() == true); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariant::is<char>()") { |  | ||||||
|     JsonVariant v = doc["c"]; |  | ||||||
|     REQUIRE(v.is<char>() == true); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariant::set(char)") { |  | ||||||
|     JsonVariant v = doc.to<JsonVariant>(); |  | ||||||
|     v.set('*'); |  | ||||||
|     REQUIRE(v.as<unsigned char>() == 42); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariantConst::as<char*>()") { |  | ||||||
|     JsonVariantConst v = doc["s"]; |  | ||||||
|     REQUIRE(v.as<char*>() == s); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariantConst::as<char>()") { |  | ||||||
|     JsonVariantConst v = doc["c"]; |  | ||||||
|     REQUIRE(v.as<char>() == '*'); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariantConst::is<char*>()") { |  | ||||||
|     JsonVariantConst v = doc["s"]; |  | ||||||
|     REQUIRE(v.is<char*>() == true); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("JsonVariantConst::is<char>()") { |  | ||||||
|     JsonVariantConst v = doc["c"]; |  | ||||||
|     REQUIRE(v.is<char>() == true); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("MemberProxy::as<char*>()") { |  | ||||||
|     REQUIRE(doc["s"].as<char*>() == s); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("MemberProxy::as<char>()") { |  | ||||||
|     REQUIRE(doc["c"].as<char>() == '*'); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("MemberProxy::as<char>()") { |  | ||||||
|     doc["x"].set('*'); |  | ||||||
|     REQUIRE(doc["x"] == 42); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("MemberProxy::is<char*>()") { |  | ||||||
|     REQUIRE(doc["s"].is<char*>() == true); |  | ||||||
|     REQUIRE(doc["c"].is<char*>() == false); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("MemberProxy::is<char>()") { |  | ||||||
|     REQUIRE(doc["c"].is<char>() == true); |  | ||||||
|     REQUIRE(doc["s"].is<char>() == false); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("ElementProxy::as<char*>()") { |  | ||||||
|     REQUIRE(doc["a"][0].as<char*>() == s); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("ElementProxy::as<char>()") { |  | ||||||
|     REQUIRE(doc["a"][1].as<char>() == '*'); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("ElementProxy::as<char>()") { |  | ||||||
|     doc["a"][0].set('*'); |  | ||||||
|     REQUIRE(doc["a"][0] == 42); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("ElementProxy::is<char*>()") { |  | ||||||
|     REQUIRE(doc["a"][0].is<char*>() == true); |  | ||||||
|     REQUIRE(doc["a"][1].is<char*>() == false); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   SECTION("ElementProxy::is<char>()") { |  | ||||||
|     REQUIRE(doc["a"][1].is<char>() == true); |  | ||||||
|     REQUIRE(doc["a"][0].is<char>() == false); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -9,32 +9,16 @@ | |||||||
| #  define FORCE_INLINE  // __forceinline causes C4714 when returning std::string | #  define FORCE_INLINE  // __forceinline causes C4714 when returning std::string | ||||||
| #  define NO_INLINE __declspec(noinline) | #  define NO_INLINE __declspec(noinline) | ||||||
|  |  | ||||||
| #  ifndef ARDUINOJSON_DEPRECATED |  | ||||||
| #    define ARDUINOJSON_DEPRECATED(msg) __declspec(deprecated(msg)) |  | ||||||
| #  endif |  | ||||||
|  |  | ||||||
| #elif defined(__GNUC__)  // GCC or Clang | #elif defined(__GNUC__)  // GCC or Clang | ||||||
|  |  | ||||||
| #  define FORCE_INLINE __attribute__((always_inline)) | #  define FORCE_INLINE __attribute__((always_inline)) | ||||||
| #  define NO_INLINE __attribute__((noinline)) | #  define NO_INLINE __attribute__((noinline)) | ||||||
|  |  | ||||||
| #  ifndef ARDUINOJSON_DEPRECATED |  | ||||||
| #    if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) |  | ||||||
| #      define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated(msg))) |  | ||||||
| #    else |  | ||||||
| #      define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated)) |  | ||||||
| #    endif |  | ||||||
| #  endif |  | ||||||
|  |  | ||||||
| #else  // Other compilers | #else  // Other compilers | ||||||
|  |  | ||||||
| #  define FORCE_INLINE | #  define FORCE_INLINE | ||||||
| #  define NO_INLINE | #  define NO_INLINE | ||||||
|  |  | ||||||
| #  ifndef ARDUINOJSON_DEPRECATED |  | ||||||
| #    define ARDUINOJSON_DEPRECATED(msg) |  | ||||||
| #  endif |  | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if __cplusplus >= 201103L | #if __cplusplus >= 201103L | ||||||
|   | |||||||
| @@ -74,25 +74,6 @@ class JsonVariantConst : public VariantTag, | |||||||
|     return Converter<T>::fromJson(*this); |     return Converter<T>::fromJson(*this); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Deprecated: use as<const char*>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariantconst/as/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()") |  | ||||||
|       as() const { |  | ||||||
|     return as<const char*>(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // Deprecated: use as<int8_t>() or as<uint8_t>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariantconst/as/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char>::value, char>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED( |  | ||||||
|       "Support for char is deprecated, use int8_t or uint8_t instead") |  | ||||||
|       as() const { |  | ||||||
|     return static_cast<char>(as<signed char>()); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // Returns true if the value is of the specified type. |   // Returns true if the value is of the specified type. | ||||||
|   // https://arduinojson.org/v6/api/jsonvariantconst/is/ |   // https://arduinojson.org/v6/api/jsonvariantconst/is/ | ||||||
|   template <typename T> |   template <typename T> | ||||||
| @@ -103,25 +84,6 @@ class JsonVariantConst : public VariantTag, | |||||||
|     return Converter<T>::checkJson(*this); |     return Converter<T>::checkJson(*this); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Deprecated: use is<const char*>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariantconst/is/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char*>::value, bool>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()") |  | ||||||
|       is() const { |  | ||||||
|     return is<const char*>(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // Deprecated: use is<int8_t>() or is<uint8_t>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariantconst/is/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char>::value, bool>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED( |  | ||||||
|       "Support for char is deprecated, use int8_t or uint8_t instead") |  | ||||||
|       is() const { |  | ||||||
|     return is<signed char>(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   template <typename T> |   template <typename T> | ||||||
|   FORCE_INLINE operator T() const { |   FORCE_INLINE operator T() const { | ||||||
|     return as<T>(); |     return as<T>(); | ||||||
|   | |||||||
| @@ -142,12 +142,6 @@ VariantRefBase<TDerived>::to() const { | |||||||
|   return *this; |   return *this; | ||||||
| } | } | ||||||
|  |  | ||||||
| // Out of class definition to avoid #1560 |  | ||||||
| template <typename TDerived> |  | ||||||
| inline bool VariantRefBase<TDerived>::set(char value) const { |  | ||||||
|   return set(static_cast<signed char>(value)); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| template <typename TDerived> | template <typename TDerived> | ||||||
| inline void convertToJson(const VariantRefBase<TDerived>& src, | inline void convertToJson(const VariantRefBase<TDerived>& src, | ||||||
|                           JsonVariant dst) { |                           JsonVariant dst) { | ||||||
|   | |||||||
| @@ -62,25 +62,6 @@ class VariantRefBase : public VariantTag { | |||||||
|     return Converter<T>::fromJson(getVariant()); |     return Converter<T>::fromJson(getVariant()); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Deprecated: use as<const char*>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/as/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()") |  | ||||||
|       as() const { |  | ||||||
|     return as<const char*>(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // Deprecated: use as<int8_t>() or as<uint8_t>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/as/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char>::value, char>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED( |  | ||||||
|       "Support for char is deprecated, use int8_t or uint8_t instead") |  | ||||||
|       as() const { |  | ||||||
|     return static_cast<char>(as<signed char>()); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   template <typename T> |   template <typename T> | ||||||
|   FORCE_INLINE operator T() const { |   FORCE_INLINE operator T() const { | ||||||
|     return as<T>(); |     return as<T>(); | ||||||
| @@ -126,25 +107,6 @@ class VariantRefBase : public VariantTag { | |||||||
|     return Converter<T>::checkJson(getVariantConst()); |     return Converter<T>::checkJson(getVariantConst()); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Deprecated: use is<const char*>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/is/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char*>::value, bool>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()") |  | ||||||
|       is() const { |  | ||||||
|     return is<const char*>(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // Deprecated: use is<int8_t>() or is<uint8_t>() instead. |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/is/ |  | ||||||
|   template <typename T> |  | ||||||
|   FORCE_INLINE typename enable_if<is_same<T, char>::value, bool>::type |  | ||||||
|   ARDUINOJSON_DEPRECATED( |  | ||||||
|       "Support for char is deprecated, use int8_t or uint8_t instead") |  | ||||||
|       is() const { |  | ||||||
|     return is<signed char>(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // Shallow copies the specified value. |   // Shallow copies the specified value. | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/shallowcopy/ |   // https://arduinojson.org/v6/api/jsonvariant/shallowcopy/ | ||||||
|   FORCE_INLINE void shallowCopy(JsonVariantConst target) { |   FORCE_INLINE void shallowCopy(JsonVariantConst target) { | ||||||
| @@ -176,12 +138,6 @@ class VariantRefBase : public VariantTag { | |||||||
|     return pool && !pool->overflowed(); |     return pool && !pool->overflowed(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Deprecated: use int8_t or uint8_t instead |  | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/set/ |  | ||||||
|   bool ARDUINOJSON_DEPRECATED( |  | ||||||
|       "Support for char is deprecated, use int8_t or uint8_t instead") |  | ||||||
|       set(char value) const; |  | ||||||
|  |  | ||||||
|   // Returns the size of the array or object. |   // Returns the size of the array or object. | ||||||
|   // https://arduinojson.org/v6/api/jsonvariant/size/ |   // https://arduinojson.org/v6/api/jsonvariant/size/ | ||||||
|   FORCE_INLINE size_t size() const { |   FORCE_INLINE size_t size() const { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user