aboutsummaryrefslogtreecommitdiff
path: root/builtins/array.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-04-02 13:08:06 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-04-02 13:08:06 -0400
commitc73e96ff916209d74e2be9bd7d8de3758685ce4d (patch)
tree8f902fea5b6790061e48600243f0f8faeded32dd /builtins/array.c
parentb6534ce34706d1a98584e5f916107d91da072346 (diff)
Add comparison operator <> and array method to sort by a custom
comparison function
Diffstat (limited to 'builtins/array.c')
-rw-r--r--builtins/array.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/builtins/array.c b/builtins/array.c
index 8b50dbcf..84b65ae7 100644
--- a/builtins/array.c
+++ b/builtins/array.c
@@ -138,7 +138,7 @@ public void Array$remove(array_t *arr, int64_t index, int64_t count, const TypeI
arr->length -= count;
}
-public void Array$sort(array_t *arr, const TypeInfo *type)
+public void Array$sort(array_t *arr, closure_t comparison, const TypeInfo *type)
{
const TypeInfo *item_type = type->ArrayInfo.item;
int64_t item_size = item_type->size;
@@ -148,7 +148,7 @@ public void Array$sort(array_t *arr, const TypeInfo *type)
if (arr->data_refcount || (int64_t)arr->stride != item_size)
Array$compact(arr, type);
- qsort_r(arr->data, arr->length, item_size, (void*)generic_compare, (void*)item_type);
+ qsort_r(arr->data, arr->length, item_size, comparison.fn, comparison.userdata);
}
public void Array$shuffle(array_t *arr, const TypeInfo *type)