summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-10-04 12:47:43 -0400
committerAndrew Opalach <andrew@akon.city> 2024-10-04 12:47:43 -0400
commitbd79d0b57f76f290bffcd8749f60f7e5870d998a (patch)
tree4805c8a32b74f38730ee69291e5374dd9db4962c /src
parent1169000ee0e763a6d09a298eba3eb4d560ff030d (diff)
downloadlibalabaster-bd79d0b57f76f290bffcd8749f60f7e5870d998a.tar.gz
libalabaster-bd79d0b57f76f290bffcd8749f60f7e5870d998a.tar.bz2
libalabaster-bd79d0b57f76f290bffcd8749f60f7e5870d998a.zip
array: Add is_empty(), foreach_rev() + tests
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src')
-rw-r--r--src/array.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/array.c b/src/array.c
index 5175d6f..cbeb256 100644
--- a/src/array.c
+++ b/src/array.c
@@ -14,6 +14,8 @@
#define al_array_init(arr) ((arr).size = 0, (arr).alloc = 0, (arr).data = NULL)
#define al_array_item_size(arr) (sizeof(*(arr).data)) // NOLINT(bugprone-sizeof-expression)
+#define al_array_is_empty(arr) ((arr).size == 0)
+
#define al_array_at(arr, i) ((arr).data[i])
#define al_array_last(arr) al_array_at(arr, (arr).size - 1)
@@ -77,6 +79,9 @@
#define al_array_foreach(arr, i, item) \
for (u32 i = 0; (i < (arr).size && (item = al_array_at(arr, i), 1)); i++)
+#define al_array_foreach_rev(arr, i, item) \
+ for (u32 i = (arr).size; (i-- > 0 && (item = al_array_at(arr, i), 1));)
+
#define al_array_foreach_ptr(arr, i, item) \
for (u32 i = 0; (i < (arr).size && (item = &al_array_at(arr, i), 1)); i++)