Added a deprecation warning for as<char>() and set(char)

This commit is contained in:
Benoit Blanchon
2021-05-04 14:48:51 +02:00
parent ab23625091
commit 4780174ee1
3 changed files with 75 additions and 6 deletions

View File

@ -88,14 +88,22 @@ class VariantRef : public VariantRefBase<VariantData>,
return Converter<T>::toJson(value, *this);
}
FORCE_INLINE bool ARDUINOJSON_DEPRECATED(
"Support for char is deprecated, use int8_t or uint8_t instead")
set(char value) const {
return set<signed char>(value);
}
template <typename T>
FORCE_INLINE bool set(T *value) const {
return Converter<T *>::toJson(value, *this);
}
template <typename T>
FORCE_INLINE typename enable_if<!is_same<T, char *>::value, T>::type as()
const {
FORCE_INLINE
typename enable_if<!is_same<T, char *>::value && !is_same<T, char>::value,
T>::type
as() const {
return Converter<T>::fromJson(*this);
}
@ -106,6 +114,14 @@ class VariantRef : public VariantRefBase<VariantData>,
return as<const char *>();
}
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 as<signed char>();
}
template <typename T>
FORCE_INLINE bool is() const {
return Converter<T>::checkJson(*this);
@ -113,7 +129,7 @@ class VariantRef : public VariantRefBase<VariantData>,
template <typename T>
FORCE_INLINE operator T() const {
return Converter<T>::fromJson(*this);
return as<T>();
}
template <typename TVisitor>
@ -212,8 +228,10 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
}
template <typename T>
FORCE_INLINE typename enable_if<!is_same<T, char *>::value, T>::type as()
const {
FORCE_INLINE
typename enable_if<!is_same<T, char *>::value && !is_same<T, char>::value,
T>::type
as() const {
return Converter<T>::fromJson(*this);
}
@ -224,6 +242,14 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
return as<const char *>();
}
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 as<signed char>();
}
template <typename T>
FORCE_INLINE bool is() const {
return Converter<T>::checkJson(*this);
@ -231,7 +257,7 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
template <typename T>
FORCE_INLINE operator T() const {
return Converter<T>::fromJson(*this);
return as<T>();
}
FORCE_INLINE VariantConstRef getElement(size_t) const;