Index: src/OFArray.h ================================================================== --- src/OFArray.h +++ src/OFArray.h @@ -11,17 +11,18 @@ #include #import "OFObject.h" #import "OFDataArray.h" +#import "OFFastEnumeration.h" @class OFString; /** * The OFArray class is a class for storing objects in an array. */ -@interface OFArray: OFObject +@interface OFArray: OFObject { OFDataArray *array; } /** Index: src/OFArray.m ================================================================== --- src/OFArray.m +++ src/OFArray.m @@ -281,10 +281,26 @@ OF_HASH_FINALIZE(hash); return hash; } + +- (int)countByEnumeratingWithState: (of_fast_enumeration_state_t*)state + objects: (id*)objects + count: (int)count_ +{ + size_t count = [array count]; + + if (state->state >= count) + return 0; + + state->state = count; + state->itemsPtr = [array cArray]; + state->mutationsPtr = (unsigned long*)self; + + return count; +} - (void)dealloc { OFObject **objs = [array cArray]; size_t i, count = [array count]; Index: src/OFMutableArray.m ================================================================== --- src/OFMutableArray.m +++ src/OFMutableArray.m @@ -197,6 +197,22 @@ [self freeMemory: copy]; } return self; } + +- (int)countByEnumeratingWithState: (of_fast_enumeration_state_t*)state + objects: (id*)objects + count: (int)count_ +{ + size_t count = [array count]; + + if (state->state >= count) + return 0; + + state->state = count; + state->itemsPtr = [array cArray]; + state->mutationsPtr = &mutations; + + return count; +} @end