Skip to content

Commit

Permalink
utils/dynarr: add dynarr_find_pod
Browse files Browse the repository at this point in the history
Signed-off-by: Yuxuan Shui <[email protected]>
  • Loading branch information
yshui committed Jun 5, 2024
1 parent 43e0a99 commit 4dc7878
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/utils/dynarr.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,17 @@ static inline void dynarr_remove_swap_impl(size_t size, void *arr, size_t idx) {
#define dynarr_foreach(arr, i) for (typeof(arr)(i) = (arr); (i) < dynarr_end(arr); (i)++)
#define dynarr_foreach_rev(arr, i) \
for (typeof(arr)(i) = dynarr_end(arr) - 1; (i) >= (arr); (i)--)

/// Find the index of an element in the array by using trivial comparison, returns -1 if
/// not found.
#define dynarr_find_pod(arr, needle) \
({ \
ptrdiff_t dynarr_find_ret = -1; \
dynarr_foreach(arr, dynarr_find_i) { \
if (*dynarr_find_i == (needle)) { \
dynarr_find_ret = dynarr_find_i - (arr); \
break; \
} \
} \
dynarr_find_ret; \
})

0 comments on commit 4dc7878

Please sign in to comment.