forked from bblanchon/ArduinoJson
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