diff options
Diffstat (limited to 'src/core/basetypes/MCHashMap.cpp')
-rw-r--r-- | src/core/basetypes/MCHashMap.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/core/basetypes/MCHashMap.cpp b/src/core/basetypes/MCHashMap.cpp index 046aad90..486707e9 100644 --- a/src/core/basetypes/MCHashMap.cpp +++ b/src/core/basetypes/MCHashMap.cpp @@ -281,6 +281,29 @@ void HashMap::removeAllObjects() mCount = 0; } +bool HashMap::isEqual(Object * otherObject) +{ + HashMap * otherMap = (HashMap *) otherObject; + if (otherMap->count() != count()) { + return false; + } + bool result = true; + mc_foreachhashmapKeyAndValue(Object, key, Object, value, this) { + Object * otherValue = otherMap->objectForKey(key); + if (otherValue == NULL) { + result = false; + break; + } + if (!value->isEqual(otherValue)) { + fprintf(stderr, "%s: %s %s\n", MCUTF8(key), MCUTF8(value), MCUTF8(otherValue)); + result = false; + break; + } + } + + return result; +} + HashMap * HashMap::serializable() { HashMap * result = Object::serializable(); |