From faba0abf74dcdab3a4957bd8f13afa3c4dd19950 Mon Sep 17 00:00:00 2001 From: ubq323 Date: Sat, 17 Aug 2024 21:29:40 +0100 Subject: add delete! and objarr_delete --- val.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'val.c') diff --git a/val.c b/val.c index ed375ac..3e8558f 100644 --- a/val.c +++ b/val.c @@ -98,6 +98,16 @@ void objarr_insert(State *S, ObjArr *arr, size_t ix, Val v) { arr->d[ix] = v; } } +void objarr_delete(State *S, ObjArr *arr, size_t ix) { + CHECK(ix < arr->len, "array index out of bounds"); + if (ix < arr->len - 1) { + size_t nix = ix+1; + size_t n = arr->len - nix; + memmove(&arr->d[ix], &arr->d[ix+1], n*sizeof(Val)); + } + arr->len --; +} + static void print_val_h(Val v, int depth); void print_val(Val v) { -- cgit v1.2.3