summaryrefslogtreecommitdiff
path: root/darray.h
diff options
context:
space:
mode:
Diffstat (limited to 'darray.h')
-rw-r--r--darray.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/darray.h b/darray.h
index 71e2d7e6ce..b613d08489 100644
--- a/darray.h
+++ b/darray.h
@@ -51,10 +51,20 @@
1 \
) : 0)
+// Last element of the array
+//
+#define rb_darray_back(ary) ((ary)->data[(ary)->meta.size - 1])
+
// Remove the last element of the array.
//
#define rb_darray_pop_back(ary) ((ary)->meta.size--)
+// Remove element at idx and replace it by the last element
+#define rb_darray_remove_unordered(ary, idx) do { \
+ rb_darray_set(ary, idx, rb_darray_back(ary)); \
+ rb_darray_pop_back(ary); \
+} while (0);
+
// Iterate over items of the array in a for loop
//
#define rb_darray_foreach(ary, idx_name, elem_ptr_var) \