зеркало из https://github.com/mozilla/gecko-dev.git
Add EnumerateEntries to nsCheapSet. Bug 809446, r=bsmedberg
This commit is contained in:
Родитель
b3b82bec15
Коммит
2c79e554a2
|
@ -18,6 +18,7 @@ class nsCheapSet
|
|||
{
|
||||
public:
|
||||
typedef typename EntryType::KeyType KeyType;
|
||||
typedef PLDHashOperator (* Enumerator)(EntryType* aEntry, void* userArg);
|
||||
|
||||
nsCheapSet() : mState(ZERO)
|
||||
{
|
||||
|
@ -58,6 +59,25 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
uint32_t EnumerateEntries(Enumerator enumFunc, void* userArg)
|
||||
{
|
||||
switch (mState) {
|
||||
case ZERO:
|
||||
return 0;
|
||||
case ONE:
|
||||
if (enumFunc(GetSingleEntry(), userArg) == PL_DHASH_REMOVE) {
|
||||
GetSingleEntry()->~EntryType();
|
||||
mState = ZERO;
|
||||
}
|
||||
return 1;
|
||||
case MANY:
|
||||
return mUnion.table->EnumerateEntries(enumFunc, userArg);
|
||||
default:
|
||||
NS_NOTREACHED("bogus state");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
EntryType* GetSingleEntry()
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче