summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-10-19 11:30:46 -0400
committerAndrew Opalach <andrew@akon.city> 2024-10-19 11:30:46 -0400
commit736f15908cf34a851140094897a13ff12d55fd0c (patch)
tree190ff424e4dc7ef1db3cda803be14fe06cc8a302 /src
parente23e7af2ae14073f7fec7c8992976f9ae9e489c8 (diff)
downloadlibalabaster-736f15908cf34a851140094897a13ff12d55fd0c.tar.gz
libalabaster-736f15908cf34a851140094897a13ff12d55fd0c.tar.bz2
libalabaster-736f15908cf34a851140094897a13ff12d55fd0c.zip
array: Add remove_range() + tests
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src')
-rw-r--r--src/array.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/array.c b/src/array.c
index 8803c54..2b06d23 100644
--- a/src/array.c
+++ b/src/array.c
@@ -74,6 +74,15 @@
} \
} while (0)
+#define al_array_remove_range(arr, i, e) \
+ do { \
+ if (e != (arr).size) { \
+ al_memmove(&al_array_at(arr, i), &al_array_at(arr, e), \
+ al_array_item_size(arr) * ((arr).size - e)); \
+ } \
+ (arr).size -= e - i; \
+ } while (0)
+
#if AL_USE_STDLIB
#define al_array_sort(arr, type, cmp) AL_STDLIB_QSORT((arr).data, type, (arr).size, cmp)
#else