From: Damjan Marion Date: Sun, 6 Aug 2023 18:41:40 +0000 (+0200) Subject: vppinfra: add vec_foreach_pointer macro X-Git-Tag: v24.02-rc0~92 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=993735913c6764d7a66c8fae4196a61206611186 vppinfra: add vec_foreach_pointer macro works with vectors of pointers... Type: improvement Change-Id: I530653978fcf981be299cf42a1133be000d74d0c Signed-off-by: Damjan Marion --- diff --git a/.clang-format b/.clang-format index 0680770a07f..050505b168b 100644 --- a/.clang-format +++ b/.clang-format @@ -18,6 +18,7 @@ ForEachMacros: - 'vec_foreach_backwards' - 'vec_foreach_index' - 'vec_foreach_index_backwards' + - 'vec_foreach_pointer' - 'vlib_foreach_rx_tx' - 'foreach_vlib_main' - 'foreach_set_bit_index' diff --git a/src/vppinfra/vec_bootstrap.h b/src/vppinfra/vec_bootstrap.h index 006d16723e3..5c827d4aa5a 100644 --- a/src/vppinfra/vec_bootstrap.h +++ b/src/vppinfra/vec_bootstrap.h @@ -238,6 +238,10 @@ _vec_set_len (void *v, uword len, uword elt_sz) if (v) \ for ((var) = vec_len ((v)) - 1; (var) >= 0; (var)--) +#define vec_foreach_pointer(e, v) \ + for (typeof (**v) **__ep = (v), *(e) = *__ep; __ep - (v) < vec_len (v); \ + __ep++, (e) = *__ep) + #endif /* included_clib_vec_bootstrap_h */ /*