From 238cce21515fda6cdcaea3d557cd447e1eece0eb Mon Sep 17 00:00:00 2001 From: Ian Piumarta Date: Wed, 22 Mar 2023 16:08:27 +0900 Subject: [PATCH] Add map_pop to remove the last element from an array-like map. --- src/object.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/object.c b/src/object.c index 4941585..f9fc165 100644 --- a/src/object.c +++ b/src/object.c @@ -547,6 +547,15 @@ oop map_append(oop map, oop value) return map_set(map, makeInteger(map_size(map)), value); } +oop map_pop(oop map) +{ assert(map_isArray(map)); + size_t size = get(map, Map, size); + if (size == 0) return null; + oop val = get(map, Map, elements)[--size].value; + set(map, Map, size, size); + return val; +} + oop makeArrayFromElement(oop elem, int repeat) { oop array= makeMapCapacity(repeat);