summaryrefslogtreecommitdiff
path: root/src/darray.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/darray.h')
-rw-r--r--src/darray.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/darray.h b/src/darray.h
index c9b6094..569576e 100644
--- a/src/darray.h
+++ b/src/darray.h
@@ -326,6 +326,17 @@ darray_next_alloc(size_t alloc, size_t need)
#define darray_foreach_from(i, arr, from) \
for ((i) = &(arr).item[from]; (i) < &(arr).item[(arr).size]; (i)++)
+/* Iterate on index and value at the same time, like Python's enumerate. */
+#define darray_enumerate(idx, val, arr) \
+ for ((idx) = 0, (val) = &(arr).item[0]; \
+ (idx) < (arr).size; \
+ (idx)++, (val)++)
+
+#define darray_enumerate_from(idx, val, arr, from) \
+ for ((idx) = (from), (val) = &(arr).item[0]; \
+ (idx) < (arr).size; \
+ (idx)++, (val)++)
+
/*
* darray_foreach_reverse(T *&i, darray(T) arr) {...}
*