diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-04-02 13:08:06 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-04-02 13:08:06 -0400 |
| commit | c73e96ff916209d74e2be9bd7d8de3758685ce4d (patch) | |
| tree | 8f902fea5b6790061e48600243f0f8faeded32dd /builtins/array.c | |
| parent | b6534ce34706d1a98584e5f916107d91da072346 (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.c | 4 |
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) |
