Loading...
--- xnu/xnu-792.6.61/libkern/c++/OSOrderedSet.cpp
+++ xnu/xnu-124.13/libkern/c++/OSOrderedSet.cpp
@@ -20,7 +20,6 @@
* @APPLE_LICENSE_HEADER_END@
*/
-#include <libkern/c++/OSDictionary.h>
#include <libkern/c++/OSOrderedSet.h>
#include <libkern/c++/OSLib.h>
@@ -50,8 +49,6 @@
// unsigned int pri;
};
-#define EXT_CAST(obj) \
- reinterpret_cast<OSObject *>(const_cast<OSMetaClassBase *>(obj))
bool OSOrderedSet::
initWithCapacity(unsigned int inCapacity,
@@ -86,7 +83,7 @@
OSOrderedSet *me = new OSOrderedSet;
if (me && !me->initWithCapacity(capacity, ordering, orderingRef)) {
- me->release();
+ me->free();
me = 0;
}
@@ -95,7 +92,6 @@
void OSOrderedSet::free()
{
- (void) super::setOptions(0, kImmutable);
flushCollection();
if (array) {
@@ -152,7 +148,7 @@
haveUpdated();
for (i = 0; i < count; i++)
- array[i].obj->taggedRelease(OSTypeID(OSCollection));
+ array[i].obj->release();
count = 0;
}
@@ -180,7 +176,7 @@
}
array[index].obj = anObject;
// array[index].pri = pri;
- anObject->taggedRetain(OSTypeID(OSCollection));
+ anObject->retain();
count++;
return true;
@@ -223,14 +219,15 @@
if( deleted)
array[i-1] = array[i];
else if( (array[i].obj == anObject)) {
+ array[i].obj->release();
deleted = true;
- haveUpdated(); // Pity we can't flush the log
- array[i].obj->taggedRelease(OSTypeID(OSCollection));
}
}
- if (deleted)
- count--;
+ if( deleted) {
+ count--;
+ haveUpdated();
+ }
}
bool OSOrderedSet::containsObject(const OSMetaClassBase *anObject) const
@@ -343,78 +340,3 @@
return (*ret != 0);
}
-
-unsigned OSOrderedSet::setOptions(unsigned options, unsigned mask, void *)
-{
- unsigned old = super::setOptions(options, mask);
- if ((old ^ options) & mask) {
-
- // Value changed need to recurse over all of the child collections
- for ( unsigned i = 0; i < count; i++ ) {
- OSCollection *coll = OSDynamicCast(OSCollection, array[i].obj);
- if (coll)
- coll->setOptions(options, mask);
- }
- }
-
- return old;
-}
-
-OSCollection * OSOrderedSet::copyCollection(OSDictionary *cycleDict)
-{
- bool allocDict = !cycleDict;
- OSCollection *ret = 0;
- OSOrderedSet *newSet = 0;
-
- if (allocDict) {
- cycleDict = OSDictionary::withCapacity(16);
- if (!cycleDict)
- return 0;
- }
-
- do {
- // Check for a cycle
- ret = super::copyCollection(cycleDict);
- if (ret)
- continue;
-
- // Duplicate the set with no contents
- newSet = OSOrderedSet::withCapacity(capacity, ordering, orderingRef);
- if (!newSet)
- continue;
-
- // Insert object into cycle Dictionary
- cycleDict->setObject((const OSSymbol *) this, newSet);
-
- newSet->capacityIncrement = capacityIncrement;
-
- // Now copy over the contents to the new duplicate
- for (unsigned int i = 0; i < count; i++) {
- OSObject *obj = EXT_CAST(array[i].obj);
- OSCollection *coll = OSDynamicCast(OSCollection, obj);
- if (coll) {
- OSCollection *newColl = coll->copyCollection(cycleDict);
- if (newColl) {
- obj = newColl; // Rely on cycleDict ref for a bit
- newColl->release();
- }
- else
- goto abortCopy;
- };
- newSet->setLastObject(obj);
- };
-
- ret = newSet;
- newSet = 0;
-
- } while (false);
-
-abortCopy:
- if (newSet)
- newSet->release();
-
- if (allocDict)
- cycleDict->release();
-
- return ret;
-}