mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-28 21:28:55 +00:00
Bug 1181445 (part 5) - Use nsTHashTable::Iterator in nsTHashtable.h. r=mccr8.
This is a particularly nice example of how iterators can be so much nicer than Enumerate()-style functions: 1 file changed, 4 insertions(+), 33 deletions(-) --HG-- extra : rebase_source : 757f75b90cb4c624143c236f9743edf158f72d66
This commit is contained in:
parent
35b8916e86
commit
240d180d7f
@ -523,35 +523,6 @@ nsTHashtable<EntryType>::s_SizeOfStub(PLDHashEntryHdr* aEntry,
|
||||
|
||||
class nsCycleCollectionTraversalCallback;
|
||||
|
||||
struct MOZ_STACK_CLASS nsTHashtableCCTraversalData
|
||||
{
|
||||
nsTHashtableCCTraversalData(nsCycleCollectionTraversalCallback& aCallback,
|
||||
const char* aName,
|
||||
uint32_t aFlags)
|
||||
: mCallback(aCallback)
|
||||
, mName(aName)
|
||||
, mFlags(aFlags)
|
||||
{
|
||||
}
|
||||
|
||||
nsCycleCollectionTraversalCallback& mCallback;
|
||||
const char* mName;
|
||||
uint32_t mFlags;
|
||||
};
|
||||
|
||||
template<class EntryType>
|
||||
PLDHashOperator
|
||||
ImplCycleCollectionTraverse_EnumFunc(EntryType* aEntry, void* aUserData)
|
||||
{
|
||||
auto userData = static_cast<nsTHashtableCCTraversalData*>(aUserData);
|
||||
|
||||
ImplCycleCollectionTraverse(userData->mCallback,
|
||||
*aEntry,
|
||||
userData->mName,
|
||||
userData->mFlags);
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
template<class EntryType>
|
||||
inline void
|
||||
ImplCycleCollectionUnlink(nsTHashtable<EntryType>& aField)
|
||||
@ -566,10 +537,10 @@ ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback,
|
||||
const char* aName,
|
||||
uint32_t aFlags = 0)
|
||||
{
|
||||
nsTHashtableCCTraversalData userData(aCallback, aName, aFlags);
|
||||
|
||||
aField.EnumerateEntries(ImplCycleCollectionTraverse_EnumFunc<EntryType>,
|
||||
&userData);
|
||||
for (auto iter = aField.Iter(); !iter.Done(); iter.Next()) {
|
||||
EntryType* entry = iter.Get();
|
||||
ImplCycleCollectionTraverse(aCallback, *entry, aName, aFlags);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // nsTHashtable_h__
|
||||
|
Loading…
x
Reference in New Issue
Block a user