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;
|
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>
|
template<class EntryType>
|
||||||
inline void
|
inline void
|
||||||
ImplCycleCollectionUnlink(nsTHashtable<EntryType>& aField)
|
ImplCycleCollectionUnlink(nsTHashtable<EntryType>& aField)
|
||||||
@ -566,10 +537,10 @@ ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback,
|
|||||||
const char* aName,
|
const char* aName,
|
||||||
uint32_t aFlags = 0)
|
uint32_t aFlags = 0)
|
||||||
{
|
{
|
||||||
nsTHashtableCCTraversalData userData(aCallback, aName, aFlags);
|
for (auto iter = aField.Iter(); !iter.Done(); iter.Next()) {
|
||||||
|
EntryType* entry = iter.Get();
|
||||||
aField.EnumerateEntries(ImplCycleCollectionTraverse_EnumFunc<EntryType>,
|
ImplCycleCollectionTraverse(aCallback, *entry, aName, aFlags);
|
||||||
&userData);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // nsTHashtable_h__
|
#endif // nsTHashtable_h__
|
||||||
|
Loading…
x
Reference in New Issue
Block a user