aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorMax Horn2009-09-06 12:59:07 +0000
committerMax Horn2009-09-06 12:59:07 +0000
commitae16d496b9f2b245167a8af3fdab3e124364047d (patch)
tree821b9ae1da031348b65aa430018f58e83e640262 /common
parentb51e9988e61733b5675623a598afc9ff436caf38 (diff)
downloadscummvm-rg350-ae16d496b9f2b245167a8af3fdab3e124364047d.tar.gz
scummvm-rg350-ae16d496b9f2b245167a8af3fdab3e124364047d.tar.bz2
scummvm-rg350-ae16d496b9f2b245167a8af3fdab3e124364047d.zip
COMMON: HashMap::getVal now allows specifying a default value.
A new variant of HashMap::getVal with a second 'default value' parameter has been added. This helps avoid many contains() + getVal() combos (which incur double lookup penalty), and is much lighter than using find() (which has to create an iterator). svn-id: r43983
Diffstat (limited to 'common')
-rw-r--r--common/hashmap.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/common/hashmap.h b/common/hashmap.h
index 2a50bff07a..25381b92a7 100644
--- a/common/hashmap.h
+++ b/common/hashmap.h
@@ -220,6 +220,7 @@ public:
Val &getVal(const Key &key);
const Val &getVal(const Key &key) const;
+ const Val &getVal(const Key &key, const Val &defaultVal) const;
void setVal(const Key &key, const Val &val);
void clear(bool shrinkArray = 0);
@@ -555,11 +556,16 @@ Val &HashMap<Key, Val, HashFunc, EqualFunc>::getVal(const Key &key) {
template<class Key, class Val, class HashFunc, class EqualFunc>
const Val &HashMap<Key, Val, HashFunc, EqualFunc>::getVal(const Key &key) const {
+ return getVal(key, _defaultVal);
+}
+
+template<class Key, class Val, class HashFunc, class EqualFunc>
+const Val &HashMap<Key, Val, HashFunc, EqualFunc>::getVal(const Key &key, const Val &defaultVal) const {
uint ctr = lookup(key);
if (_storage[ctr] != NULL)
return _storage[ctr]->_value;
else
- return _defaultVal;
+ return defaultVal;
}
template<class Key, class Val, class HashFunc, class EqualFunc>