ObjFW  Diff

Differences From Artifact [2a2941cb17]:

To Artifact [0f6bd8fd60]:


30
31
32
33
34
35
36
37

38
39
40
41


42
43
44
45
46
47
48
49
50
51

52
53
54
55


56
57
58


59
60
61
62
63
64
65
30
31
32
33
34
35
36

37
38
39


40
41
42
43
44
45
46
47
48
49
50

51
52
53


54
55
56


57
58
59
60
61
62
63
64
65







-
+


-
-
+
+









-
+


-
-
+
+

-
-
+
+







static struct {
	Class isa;
} placeholder;

@interface OFMutableArrayPlaceholder: OFMutableArray
@end

static of_comparison_result_t
static OFComparisonResult
compare(id left, id right, SEL selector)
{
	of_comparison_result_t (*comparator)(id, SEL, id) =
	    (of_comparison_result_t (*)(id, SEL, id))
	OFComparisonResult (*comparator)(id, SEL, id) =
	    (OFComparisonResult (*)(id, SEL, id))
	    [left methodForSelector: selector];

	return comparator(left, selector, right);
}

static void
quicksort(OFMutableArray *array, size_t left, size_t right, SEL selector,
    int options)
{
	of_comparison_result_t ascending, descending;
	OFComparisonResult ascending, descending;

	if (options & OF_ARRAY_SORT_DESCENDING) {
		ascending = OF_ORDERED_DESCENDING;
		descending = OF_ORDERED_ASCENDING;
		ascending = OFOrderedDescending;
		descending = OFOrderedAscending;
	} else {
		ascending = OF_ORDERED_ASCENDING;
		descending = OF_ORDERED_DESCENDING;
		ascending = OFOrderedAscending;
		descending = OFOrderedDescending;
	}

	while (left < right) {
		size_t i = left;
		size_t j = right - 1;
		id pivot = [array objectAtIndex: right];

90
91
92
93
94
95
96
97

98
99
100
101


102
103
104


105
106
107
108
109
110
111
90
91
92
93
94
95
96

97
98
99


100
101
102


103
104
105
106
107
108
109
110
111







-
+


-
-
+
+

-
-
+
+







}

#ifdef OF_HAVE_BLOCKS
static void
quicksortWithBlock(OFMutableArray *array, size_t left, size_t right,
    of_comparator_t comparator, int options)
{
	of_comparison_result_t ascending, descending;
	OFComparisonResult ascending, descending;

	if (options & OF_ARRAY_SORT_DESCENDING) {
		ascending = OF_ORDERED_DESCENDING;
		descending = OF_ORDERED_ASCENDING;
		ascending = OFOrderedDescending;
		descending = OFOrderedAscending;
	} else {
		ascending = OF_ORDERED_ASCENDING;
		descending = OF_ORDERED_DESCENDING;
		ascending = OFOrderedAscending;
		descending = OFOrderedDescending;
	}

	while (left < right) {
		size_t i = left;
		size_t j = right - 1;
		id pivot = [array objectAtIndex: right];