void nsPropertyTable::Enumerate(nsPropertyOwner aObject, NSPropertyFunc aCallback, void *aData) { PropertyList* prop; for (prop = mPropertyList; prop; prop = prop->mNext) { auto entry = static_cast<PropertyListMapEntry*> (prop->mObjectValueMap.Search(aObject)); if (entry) { aCallback(const_cast<void*>(aObject.get()), prop->mName, entry->value, aData); } } }
void nsPropertyTable::Enumerate(nsPropertyOwner aObject, NSPropertyFunc aCallback, void *aData) { PropertyList* prop; for (prop = mPropertyList; prop; prop = prop->mNext) { PropertyListMapEntry *entry = static_cast<PropertyListMapEntry*> (PL_DHashTableOperate(&prop->mObjectValueMap, aObject, PL_DHASH_LOOKUP)); if (PL_DHASH_ENTRY_IS_BUSY(entry)) { aCallback(const_cast<void*>(aObject.get()), prop->mName, entry->value, aData); } } }
bool nsPropertyTable::PropertyList::DeletePropertyFor(nsPropertyOwner aObject) { auto entry = static_cast<PropertyListMapEntry*>(mObjectValueMap.Search(aObject)); if (!entry) return false; void* value = entry->value; mObjectValueMap.RemoveEntry(entry); if (mDtorFunc) mDtorFunc(const_cast<void*>(aObject.get()), mName, value, mDtorData); return true; }
bool nsPropertyTable::PropertyList::DeletePropertyFor(nsPropertyOwner aObject) { PropertyListMapEntry *entry = static_cast<PropertyListMapEntry*> (PL_DHashTableOperate(&mObjectValueMap, aObject, PL_DHASH_LOOKUP)); if (!PL_DHASH_ENTRY_IS_BUSY(entry)) return false; void* value = entry->value; PL_DHashTableRawRemove(&mObjectValueMap, entry); if (mDtorFunc) mDtorFunc(const_cast<void*>(aObject.get()), mName, value, mDtorData); return true; }