Added -enumerateObjectsUsingBlock: implementation to NSArray.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29174 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
David Chisnall 2009-12-27 15:25:12 +00:00
parent 7d0822ec49
commit 05f18160df
3 changed files with 24 additions and 0 deletions

View file

@ -29,6 +29,7 @@
#import <Foundation/NSObject.h>
#import <Foundation/NSRange.h>
#import <Foundation/NSEnumerator.h>
#import <GNUstepBase/GSBlocks.h>
#if defined(__cplusplus)
extern "C" {
@ -115,6 +116,14 @@ extern "C" {
- (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)useAuxiliaryFile;
- (id) valueForKey: (NSString*)key;
#endif
DEFINE_BLOCK_TYPE(GSEnumeratorBlock, void, id, NSUInteger, BOOL*);
/**
* Enumerate over the collection using the given block. The first argument is
* the object and the second is the index in the array. The final argument is
* a pointer to a BOOL indicating whether the enumeration should stop. Setting
* this to YES will interrupt the enumeration.
*/
- (void)enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock;
@end

View file

@ -112,6 +112,7 @@ win32-def.top \
libgnustep-base.def
ADD_HEADERS = \
GSBlocks.h \
GSVersionMacros.h \
GSObjCRuntime.h \
GSCategories.h \

View file

@ -54,6 +54,7 @@
#import "Foundation/NSKeyedArchiver.h"
#import "GNUstepBase/GSCategories.h"
#import "GSPrivate.h"
#import "GSFastEnumeration.h"
static BOOL GSMacOSXCompatiblePropertyLists(void)
{
@ -1618,6 +1619,19 @@ compare(id elem1, id elem2, void* context)
return result;
}
- (void)enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock
{
NSUInteger count = 0;
BOOL shouldStop = NO;
FOR_IN (id, obj, self)
CALL_BLOCK(aBlock, obj, count++, &shouldStop);
if (shouldStop)
{
return;
}
END_FOR_IN(self)
}
@end