25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
@class OFString;
#ifdef OF_HAVE_BLOCKS
typedef void (^of_array_enumeration_block_t)(id object, size_t index,
BOOL *stop);
typedef BOOL (^of_array_filter_block_t)(id odject, size_t index);
typedef id (^of_array_map_block_t)(id object, size_t index);
typedef id (^of_array_reduce_block_t)(id left, id right);
#endif
/**
* \brief A class for storing objects in an array.
*/
@interface OFArray: OFObject <OFCopying, OFMutableCopying, OFCollection,
OFSerialization>
|
|
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
@class OFString;
#ifdef OF_HAVE_BLOCKS
typedef void (^of_array_enumeration_block_t)(id object, size_t index,
BOOL *stop);
typedef BOOL (^of_array_filter_block_t)(id odject, size_t index);
typedef id (^of_array_map_block_t)(id object, size_t index);
typedef id (^of_array_fold_block_t)(id left, id right);
#endif
/**
* \brief A class for storing objects in an array.
*/
@interface OFArray: OFObject <OFCopying, OFMutableCopying, OFCollection,
OFSerialization>
|
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
|
* \param block A block which determines if the object should be in the new
* array
* \return A new, autoreleased OFArray
*/
- (OFArray*)filteredArrayUsingBlock: (of_array_filter_block_t)block;
/**
* \brief Reduces the array to a single object using the specified block.
*
* If the array is empty, it will return nil.
*
* If there is only one object in the array, that object will be returned and
* the block will not be invoked.
*
* If there are at least two objects, the block is invoked for each object
* except the first, where left is always to what the array has already been
* reduced and right what should be added to left.
*
* \param block A block which reduces two objects into one, which is called for
* all objects except the first
* \return The array reduced to a single object
*/
- (id)reduceUsingBlock: (of_array_reduce_block_t)block;
#endif
@end
@interface OFArrayEnumerator: OFEnumerator
{
OFArray *array;
OFDataArray *dataArray;
|
|
|
|
|
|
|
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
|
* \param block A block which determines if the object should be in the new
* array
* \return A new, autoreleased OFArray
*/
- (OFArray*)filteredArrayUsingBlock: (of_array_filter_block_t)block;
/**
* \brief Folds the array to a single object using the specified block.
*
* If the array is empty, it will return nil.
*
* If there is only one object in the array, that object will be returned and
* the block will not be invoked.
*
* If there are at least two objects, the block is invoked for each object
* except the first, where left is always to what the array has already been
* folded and right what should be added to left.
*
* \param block A block which folds two objects into one, which is called for
* all objects except the first
* \return The array folded to a single object
*/
- (id)foldUsingBlock: (of_array_fold_block_t)block;
#endif
@end
@interface OFArrayEnumerator: OFEnumerator
{
OFArray *array;
OFDataArray *dataArray;
|