Added comparisons between JsonVariants

This commit is contained in:
Benoit Blanchon
2020-07-02 15:28:34 +02:00
parent 0e794a28a1
commit 7e58347fbe
19 changed files with 808 additions and 666 deletions

View File

@@ -42,8 +42,10 @@ class VariantRefBase {
// bool is<unsigned int>() const;
// bool is<unsigned long>() const;
template <typename T>
FORCE_INLINE typename enable_if<is_integral<T>::value, bool>::type is()
const {
FORCE_INLINE
typename enable_if<is_integral<T>::value && !is_same<bool, T>::value,
bool>::type
is() const {
return variantIsInteger<T>(_data);
}
//
@@ -108,9 +110,6 @@ class VariantRefBase {
return variantIsInteger<int>(_data);
}
template <typename T>
int compare(const T &) const; // VariantCompare.cpp
FORCE_INLINE bool isNull() const {
return variantIsNull(_data);
}
@@ -188,7 +187,8 @@ class VariantRef : public VariantRefBase<VariantData>,
// set(unsigned long)
template <typename T>
FORCE_INLINE bool set(
T value, typename enable_if<is_integral<T>::value>::type * = 0) const {
T value, typename enable_if<is_integral<T>::value &&
!is_same<bool, T>::value>::type * = 0) const {
return variantSetInteger<T>(_data, value);
}
@@ -262,14 +262,6 @@ class VariantRef : public VariantRefBase<VariantData>,
variantAccept(_data, visitor);
}
FORCE_INLINE bool operator==(VariantRef lhs) const {
return variantEquals(_data, lhs._data);
}
FORCE_INLINE bool operator!=(VariantRef lhs) const {
return !variantEquals(_data, lhs._data);
}
// Change the type of the variant
//
// ArrayRef to<ArrayRef>()
@@ -407,13 +399,5 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
operator[](TChar *key) const {
return getMember(key);
}
FORCE_INLINE bool operator==(VariantConstRef lhs) const {
return variantEquals(_data, lhs._data);
}
FORCE_INLINE bool operator!=(VariantConstRef lhs) const {
return !variantEquals(_data, lhs._data);
}
};
} // namespace ARDUINOJSON_NAMESPACE