From 688f883e16e98a94c9654fa2bf6fc8257f01e2e6 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 15 Aug 2024 03:01:04 -0400 Subject: Add array:find() --- builtins/array.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'builtins/array.c') diff --git a/builtins/array.c b/builtins/array.c index b310e43d..9c393699 100644 --- a/builtins/array.c +++ b/builtins/array.c @@ -211,6 +211,16 @@ public void Array$remove_item(array_t *arr, void *item, Int_t max_removals, cons } } +public Int_t Array$find(array_t arr, void *item, const TypeInfo *type) +{ + const TypeInfo *item_type = type->ArrayInfo.item; + for (int64_t i = 0; i < arr.length; i++) { + if (generic_equal(item, arr.data + i*arr.stride, item_type)) + return I(i+1); + } + return I(0); +} + public void Array$sort(array_t *arr, closure_t comparison, int64_t padded_item_size) { if (arr->data_refcount != 0 || (int64_t)arr->stride != padded_item_size) -- cgit v1.2.3