Simplify JsonArray::operator==

This commit is contained in:
Benoit Blanchon
2023-06-20 18:18:48 +02:00
parent ba8d102432
commit 488475fe16
4 changed files with 13 additions and 7 deletions

View File

@ -85,7 +85,7 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
// Compares the content of two arrays.
FORCE_INLINE bool operator==(JsonArray rhs) const {
return JsonArrayConst(data_) == JsonArrayConst(rhs.data_);
return arrayEquals(data_, rhs.data_);
}
// Removes the element at the specified iterator.

View File

@ -45,12 +45,7 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
// Compares the content of two arrays.
// Returns true if the two arrays are equal.
FORCE_INLINE bool operator==(JsonArrayConst rhs) const {
if (data_ == rhs.data_)
return true;
if (!data_ || !rhs.data_)
return false;
return arrayEquals(*data_, *rhs.data_);
return arrayEquals(data_, rhs.data_);
}
// Returns the element at the specified index.

View File

@ -54,6 +54,8 @@ inline VariantData* collectionToVariant(CollectionData* collection) {
bool arrayEquals(const detail::CollectionData& lhs,
const detail::CollectionData& rhs);
bool arrayEquals(const detail::CollectionData* lhs,
const detail::CollectionData* rhs);
bool objectEquals(const detail::CollectionData& lhs,
const detail::CollectionData& rhs);

View File

@ -116,6 +116,15 @@ inline bool arrayEquals(const CollectionData& lhs, const CollectionData& rhs) {
}
}
inline bool arrayEquals(const CollectionData* lhs, const CollectionData* rhs) {
if (lhs == rhs)
return true;
if (!lhs || !rhs)
return false;
return arrayEquals(*lhs, *rhs);
}
inline bool objectEquals(const CollectionData& lhs, const CollectionData& rhs) {
size_t count = 0;
for (auto a = lhs.head(); a; a = a->next()) {