diff --git a/common/array.h b/common/array.h index 39479017..edca49c3 100644 --- a/common/array.h +++ b/common/array.h @@ -77,6 +77,19 @@ pfx##_array_splice(arr, pos, 1, NULL, 0); \ return res; \ } \ + static inline int pfx##_array_indexof(pfx##_array_t *arr, type_t *e) \ + { \ + return e - arr->tab; \ + } \ + static inline type_t pfx##_array_remove(pfx##_array_t *arr, type_t *e) \ + { \ + return pfx##_array_take(arr, pfx##_array_indexof(arr, e)); \ + } \ + static inline void \ + pfx##_array_push(pfx##_array_t *arr, type_t e) \ + { \ + pfx##_array_splice(arr, 0, 0, &e, 1); \ + } \ static inline void pfx##_array_append(pfx##_array_t *arr, type_t e) { \ pfx##_array_splice(arr, arr->len, 0, &e, 1); \ }