summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/wtf/HashCountedSet.h
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-04-27 16:31:00 +0100
committerSteve Block <steveblock@google.com>2010-05-11 14:42:12 +0100
commitdcc8cf2e65d1aa555cce12431a16547e66b469ee (patch)
tree92a8d65cd5383bca9749f5327fb5e440563926e6 /JavaScriptCore/wtf/HashCountedSet.h
parentccac38a6b48843126402088a309597e682f40fe6 (diff)
downloadexternal_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.zip
external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.tar.gz
external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.tar.bz2
Merge webkit.org at r58033 : Initial merge by git
Change-Id: If006c38561af287c50cd578d251629b51e4d8cd1
Diffstat (limited to 'JavaScriptCore/wtf/HashCountedSet.h')
-rw-r--r--JavaScriptCore/wtf/HashCountedSet.h39
1 files changed, 21 insertions, 18 deletions
diff --git a/JavaScriptCore/wtf/HashCountedSet.h b/JavaScriptCore/wtf/HashCountedSet.h
index 165eb41..4ed75c5 100644
--- a/JavaScriptCore/wtf/HashCountedSet.h
+++ b/JavaScriptCore/wtf/HashCountedSet.h
@@ -43,7 +43,7 @@ namespace WTF {
int capacity() const;
bool isEmpty() const;
- // iterators iterate over pairs of values and counts
+ // Iterators iterate over pairs of values and counts.
iterator begin();
iterator end();
const_iterator begin() const;
@@ -54,21 +54,21 @@ namespace WTF {
bool contains(const ValueType&) const;
unsigned count(const ValueType&) const;
- // increases the count if an equal value is already present
- // the return value is a pair of an interator to the new value's location,
- // and a bool that is true if an new entry was added
+ // Increases the count if an equal value is already present
+ // the return value is a pair of an interator to the new value's
+ // location, and a bool that is true if an new entry was added.
std::pair<iterator, bool> add(const ValueType&);
- // reduces the count of the value, and removes it if count
- // goes down to zero
- void remove(const ValueType&);
- void remove(iterator);
+ // Reduces the count of the value, and removes it if count
+ // goes down to zero, returns true if the value is removed.
+ bool remove(const ValueType&);
+ bool remove(iterator);
- // removes the value, regardless of its count
+ // Removes the value, regardless of its count.
void removeAll(iterator);
void removeAll(const ValueType&);
- // clears the whole set
+ // Clears the whole set.
void clear();
private:
@@ -150,24 +150,27 @@ namespace WTF {
}
template<typename Value, typename HashFunctions, typename Traits>
- inline void HashCountedSet<Value, HashFunctions, Traits>::remove(const ValueType& value)
+ inline bool HashCountedSet<Value, HashFunctions, Traits>::remove(const ValueType& value)
{
- remove(find(value));
+ return remove(find(value));
}
template<typename Value, typename HashFunctions, typename Traits>
- inline void HashCountedSet<Value, HashFunctions, Traits>::remove(iterator it)
+ inline bool HashCountedSet<Value, HashFunctions, Traits>::remove(iterator it)
{
if (it == end())
- return;
+ return false;
unsigned oldVal = it->second;
- ASSERT(oldVal != 0);
+ ASSERT(oldVal);
unsigned newVal = oldVal - 1;
- if (newVal == 0)
- m_impl.remove(it);
- else
+ if (newVal) {
it->second = newVal;
+ return false;
+ }
+
+ m_impl.remove(it);
+ return true;
}
template<typename Value, typename HashFunctions, typename Traits>