Implement comparison out of VariantData

This commit is contained in:
Benoit Blanchon
2022-04-07 21:37:00 +02:00
parent fc9d8aa31e
commit 3760a643cb
8 changed files with 37 additions and 63 deletions

View File

@@ -89,7 +89,7 @@ struct ArrayComparer : ComparerBase {
explicit ArrayComparer(const CollectionData &rhs) : _rhs(&rhs) {}
CompareResult visitArray(const CollectionData &lhs) {
if (lhs.equalsArray(*_rhs))
if (ArrayConstRef(&lhs) == ArrayConstRef(_rhs))
return COMPARE_RESULT_EQUAL;
else
return COMPARE_RESULT_DIFFER;
@@ -102,7 +102,7 @@ struct ObjectComparer : ComparerBase {
explicit ObjectComparer(const CollectionData &rhs) : _rhs(&rhs) {}
CompareResult visitObject(const CollectionData &lhs) {
if (lhs.equalsObject(*_rhs))
if (ObjectConstRef(&lhs) == ObjectConstRef(_rhs))
return COMPARE_RESULT_EQUAL;
else
return COMPARE_RESULT_DIFFER;
@@ -201,8 +201,4 @@ CompareResult compare(const T1 &lhs, const T2 &rhs) {
return lhs.accept(comparer);
}
inline int variantCompare(const VariantData *a, const VariantData *b) {
return compare(VariantConstRef(a), VariantConstRef(b));
}
} // namespace ARDUINOJSON_NAMESPACE

View File

@@ -43,8 +43,6 @@ inline bool variantCopyFrom(VariantData *dst, const VariantData *src,
return dst->copyFrom(*src, pool);
}
inline int variantCompare(const VariantData *a, const VariantData *b);
inline void variantSetNull(VariantData *var) {
if (!var)
return;