Simplify JsonObject::operator==

This commit is contained in:
Benoit Blanchon
2023-06-20 18:20:39 +02:00
parent 488475fe16
commit 8d7bbffe10
4 changed files with 14 additions and 8 deletions

View File

@ -58,5 +58,7 @@ bool arrayEquals(const detail::CollectionData* lhs,
const detail::CollectionData* rhs);
bool objectEquals(const detail::CollectionData& lhs,
const detail::CollectionData& rhs);
bool objectEquals(const detail::CollectionData* lhs,
const detail::CollectionData* rhs);
ARDUINOJSON_END_PRIVATE_NAMESPACE

View File

@ -138,4 +138,14 @@ inline bool objectEquals(const CollectionData& lhs, const CollectionData& rhs) {
return count == rhs.size();
}
inline bool objectEquals(const CollectionData* lhs, const CollectionData* rhs) {
if (lhs == rhs)
return true;
if (!lhs || !rhs)
return false;
return objectEquals(*lhs, *rhs);
}
ARDUINOJSON_END_PRIVATE_NAMESPACE

View File

@ -100,7 +100,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
// Compares the content of two objects.
FORCE_INLINE bool operator==(JsonObject rhs) const {
return JsonObjectConst(data_) == JsonObjectConst(rhs.data_);
return objectEquals(data_, rhs.data_);
}
// Gets or sets the member with specified key.

View File

@ -108,13 +108,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
// Compares objects.
FORCE_INLINE bool operator==(JsonObjectConst rhs) const {
if (data_ == rhs.data_)
return true;
if (!data_ || !rhs.data_)
return false;
return objectEquals(*data_, *rhs.data_);
return objectEquals(data_, rhs.data_);
}
private: