ObjFW  Check-in [d6faaf68b9]

Overview
Comment:Rename -[reduceUsingBlock:] to -[foldUsingBlock:].
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d6faaf68b9471ffe06186dede227b86d08c92b5c7f78f53a820f38233098f0a2
User & Date: js on 2011-07-22 17:09:56
Other Links: manifest | tags
Context
2011-07-22
17:17
Add a test for -[foldUsingBlock:]. check-in: 32d6b7282a user: js tags: trunk
17:09
Rename -[reduceUsingBlock:] to -[foldUsingBlock:]. check-in: d6faaf68b9 user: js tags: trunk
17:03
Improve methods using blocks in OFDictionary. check-in: 6214a3be25 user: js tags: trunk
Changes

Modified src/OFArray.h from [825d39ec6d] to [ba9897850c].

25
26
27
28
29
30
31
32

33
34
35
36
37
38
39
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);
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
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.
 * \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
 * reduced and right what should be added to left.
 * folded and right what should be added to left.
 *
 * \param block A block which reduces two objects into one, which is called for
 * \param block A block which folds two objects into one, which is called for
 *		all objects except the first
 * \return The array reduced to a single object
 * \return The array folded to a single object
 */
- (id)reduceUsingBlock: (of_array_reduce_block_t)block;
- (id)foldUsingBlock: (of_array_fold_block_t)block;
#endif
@end

@interface OFArrayEnumerator: OFEnumerator
{
	OFArray	      *array;
	OFDataArray   *dataArray;

Modified src/OFArray.m from [720a88390f] to [ce913f08f5].

638
639
640
641
642
643
644
645

646
647
648
649
650
651
652
638
639
640
641
642
643
644

645
646
647
648
649
650
651
652







-
+







	} @finally {
		[self freeMemory: tmp];
	}

	return ret;
}

- (id)reduceUsingBlock: (of_array_reduce_block_t)block
- (id)foldUsingBlock: (of_array_fold_block_t)block
{
	size_t count = [array count];
	__block id current;

	if (count == 0)
		return nil;
	if (count == 1)