@@ -17,10 +17,13 @@ #include "config.h" #include #import "OFEnumerator.h" +#import "OFArray.h" + +#import "autorelease.h" @implementation OFEnumerator - init { if (object_getClass(self) == [OFEnumerator class]) { @@ -39,12 +42,28 @@ - (id)nextObject { [self doesNotRecognizeSelector: _cmd]; abort(); } + +- (OFArray*)allObjects +{ + OFMutableArray *ret = [OFMutableArray array]; + void *pool = objc_autoreleasePoolPush(); + id object; + + while ((object = [self nextObject]) != nil) + [ret addObject: object]; + + [ret makeImmutable]; + + objc_autoreleasePoolPop(pool); + + return ret; +} - (void)reset { [self doesNotRecognizeSelector: _cmd]; abort(); } @end