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:
Nicholas Nethercote 2015-07-09 16:54:59 -07:00
Родитель 35b8916e86
Коммит 240d180d7f
1 изменённых файлов: 4 добавлений и 33 удалений

Просмотреть файл

@ -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__