@@ -246,15 +246,13 @@ } - (uint32_t)hash { void *pool = objc_autoreleasePoolPush(); - OFEnumerator *enumerator = [self objectEnumerator]; - id object; uint32_t hash = 0; - while ((object = [enumerator nextObject]) != nil) + for (id object in self) hash += [object hash]; objc_autoreleasePoolPop(pool); return hash; @@ -262,24 +260,21 @@ - (OFString*)description { void *pool; OFMutableString *ret; - OFEnumerator *enumerator; size_t i, count = [self count]; - id object; if (count == 0) return @"{()}"; ret = [OFMutableString stringWithString: @"{(\n"]; pool = objc_autoreleasePoolPush(); - enumerator = [self objectEnumerator]; i = 0; - while ((object = [enumerator nextObject]) != nil) { + for (id object in self) { void *pool2 = objc_autoreleasePoolPush(); [ret appendString: [object description]]; if (++i < count) @@ -308,63 +303,39 @@ return [[OFMutableSet alloc] initWithSet: self]; } - (bool)isSubsetOfSet: (OFSet*)set { - void *pool = objc_autoreleasePoolPush(); - OFEnumerator *enumerator; - id object; - - enumerator = [self objectEnumerator]; - while ((object = [enumerator nextObject]) != nil) { - if (![set containsObject: object]) { - objc_autoreleasePoolPop(pool); + for (id object in self) + if (![set containsObject: object]) return false; - } - } - - objc_autoreleasePoolPop(pool); return true; } - (bool)intersectsSet: (OFSet*)set { - void *pool = objc_autoreleasePoolPush(); - OFEnumerator *enumerator; - id object; - - enumerator = [self objectEnumerator]; - while ((object = [enumerator nextObject]) != nil) { - if ([set containsObject: object]) { - objc_autoreleasePoolPop(pool); + for (id object in self) + if ([set containsObject: object]) return true; - } - } - - objc_autoreleasePoolPop(pool); return false; } - (OFXMLElement*)XMLElementBySerializing { void *pool = objc_autoreleasePoolPush(); OFXMLElement *element; - OFEnumerator *enumerator; - id object; if ([self isKindOfClass: [OFMutableSet class]]) element = [OFXMLElement elementWithName: @"OFMutableSet" namespace: OF_SERIALIZATION_NS]; else element = [OFXMLElement elementWithName: @"OFSet" namespace: OF_SERIALIZATION_NS]; - enumerator = [self objectEnumerator]; - - while ((object = [enumerator nextObject]) != nil) { + for (id object in self) { void *pool2 = objc_autoreleasePoolPush(); [element addChild: [object XMLElementBySerializing]]; objc_autoreleasePoolPop(pool2); @@ -429,11 +400,11 @@ objc_autoreleasePoolPop(pool); return [ret autorelease]; } -#if defined(OF_HAVE_BLOCKS) && defined(OF_HAVE_FAST_ENUMERATION) +#ifdef OF_HAVE_BLOCKS - (void)enumerateObjectsUsingBlock: (of_set_enumeration_block_t)block { bool stop = false; for (id object in self) { @@ -441,13 +412,11 @@ if (stop) break; } } -#endif -#ifdef OF_HAVE_BLOCKS - (OFSet*)filteredSetUsingBlock: (of_set_filter_block_t)block { OFMutableSet *ret = [OFMutableSet set]; [self enumerateObjectsUsingBlock: ^ (id object, bool *stop) {