︙ | | | ︙ | |
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
[left methodForSelector: selector];
return comparator(left, selector, right);
}
static void
quicksort(OFMutableArray *array, size_t left, size_t right, SEL selector,
int options)
{
OFComparisonResult ascending, descending;
if (options & OF_ARRAY_SORT_DESCENDING) {
ascending = OFOrderedDescending;
descending = OFOrderedAscending;
} else {
ascending = OFOrderedAscending;
descending = OFOrderedDescending;
}
|
|
|
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
[left methodForSelector: selector];
return comparator(left, selector, right);
}
static void
quicksort(OFMutableArray *array, size_t left, size_t right, SEL selector,
OFArraySortOptions options)
{
OFComparisonResult ascending, descending;
if (options & OFArraySortDescending) {
ascending = OFOrderedDescending;
descending = OFOrderedAscending;
} else {
ascending = OFOrderedAscending;
descending = OFOrderedDescending;
}
|
︙ | | | ︙ | |
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
left = i + 1;
}
}
#ifdef OF_HAVE_BLOCKS
static void
quicksortWithBlock(OFMutableArray *array, size_t left, size_t right,
OFComparator comparator, int options)
{
OFComparisonResult ascending, descending;
if (options & OF_ARRAY_SORT_DESCENDING) {
ascending = OFOrderedDescending;
descending = OFOrderedAscending;
} else {
ascending = OFOrderedAscending;
descending = OFOrderedDescending;
}
|
|
|
|
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
left = i + 1;
}
}
#ifdef OF_HAVE_BLOCKS
static void
quicksortWithBlock(OFMutableArray *array, size_t left, size_t right,
OFComparator comparator, OFArraySortOptions options)
{
OFComparisonResult ascending, descending;
if (options & OFArraySortDescending) {
ascending = OFOrderedDescending;
descending = OFOrderedAscending;
} else {
ascending = OFOrderedAscending;
descending = OFOrderedDescending;
}
|
︙ | | | ︙ | |
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
|
- (void)removeAllObjects
{
[self removeObjectsInRange: OFMakeRange(0, self.count)];
}
#ifdef OF_HAVE_BLOCKS
- (void)replaceObjectsUsingBlock: (of_array_replace_block_t)block
{
[self enumerateObjectsUsingBlock: ^ (id object, size_t idx,
bool *stop) {
id new = block(object, idx);
if (new != object)
[self replaceObjectAtIndex: idx withObject: new];
|
|
|
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
|
- (void)removeAllObjects
{
[self removeObjectsInRange: OFMakeRange(0, self.count)];
}
#ifdef OF_HAVE_BLOCKS
- (void)replaceObjectsUsingBlock: (OFArrayReplaceBlock)block
{
[self enumerateObjectsUsingBlock: ^ (id object, size_t idx,
bool *stop) {
id new = block(object, idx);
if (new != object)
[self replaceObjectAtIndex: idx withObject: new];
|
︙ | | | ︙ | |
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
|
- (void)sort
{
[self sortUsingSelector: @selector(compare:) options: 0];
}
- (void)sortUsingSelector: (SEL)selector
options: (int)options
{
size_t count = self.count;
if (count == 0 || count == 1)
return;
quicksort(self, 0, count - 1, selector, options);
}
#ifdef OF_HAVE_BLOCKS
- (void)sortUsingComparator: (OFComparator)comparator options: (int)options
{
size_t count = self.count;
if (count == 0 || count == 1)
return;
quicksortWithBlock(self, 0, count - 1, comparator, options);
|
|
|
>
|
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
|
- (void)sort
{
[self sortUsingSelector: @selector(compare:) options: 0];
}
- (void)sortUsingSelector: (SEL)selector
options: (OFArraySortOptions)options
{
size_t count = self.count;
if (count == 0 || count == 1)
return;
quicksort(self, 0, count - 1, selector, options);
}
#ifdef OF_HAVE_BLOCKS
- (void)sortUsingComparator: (OFComparator)comparator
options: (OFArraySortOptions)options
{
size_t count = self.count;
if (count == 0 || count == 1)
return;
quicksortWithBlock(self, 0, count - 1, comparator, options);
|
︙ | | | ︙ | |