112- (id) ooDeepCopyWithSharedObjects:(NSMutableSet *)objects
116 NSArray *result =
nil;
117 BOOL tempObjects = NO;
119 count = [
self count];
122 members = calloc(
sizeof *members,
count);
125 [
NSException raise:NSMallocException format:@"Failed to allocate space for %lu objects in %s.", (unsigned long)count, __PRETTY_FUNCTION__];
135 [
self getObjects:members];
139 for (i = 0; i <
count; i++)
141 members[
i] = [
members[
i] ooDeepCopyWithSharedObjects:objects];
145 result = [[
NSArray alloc] initWithObjects:members count:count];
150 for (i = 0; i <
count; i++)
156 if (tempObjects) [
objects release];
168- (id) ooDeepCopyWithSharedObjects:(NSMutableSet *)objects
173 BOOL tempObjects = NO;
175 count = [
self count];
178 members = malloc(
sizeof *members *
count);
181 [
NSException raise:NSMallocException format:@"Failed to allocate space for %lu objects in %s.", (unsigned long)count, __PRETTY_FUNCTION__];
196 foreach (member,
self)
198 members[
i] = [
member ooDeepCopyWithSharedObjects:objects];
203 result = [[
NSSet alloc] initWithObjects:members count:count];
208 for (i = 0; i <
count; i++)
214 if (tempObjects) [
objects release];
226- (id) ooDeepCopyWithSharedObjects:(NSMutableSet *)objects
231 NSDictionary *result =
nil;
232 BOOL tempObjects = NO;
234 count = [
self count];
237 keys = malloc(
sizeof *keys *
count);
238 values = malloc(
sizeof *values *
count);
239 if (keys == NULL || values == NULL)
243 [
NSException raise:NSMallocException format:@"Failed to allocate space for %lu objects in %s.", (unsigned long)count, __PRETTY_FUNCTION__];
260 keys[
i] = [
key ooDeepCopyWithSharedObjects:objects];
261 values[
i] = [[
self objectForKey:key] ooDeepCopyWithSharedObjects:objects];
266 result = [[
NSDictionary alloc] initWithObjects:values forKeys:keys count:count];
271 for (i = 0; i <
count; i++)
279 if (tempObjects) [
objects release];