diff options
author | Damjan Marion <damarion@cisco.com> | 2023-09-29 14:31:08 +0200 |
---|---|---|
committer | Ole Tr�an <otroan@employees.org> | 2023-10-03 12:19:58 +0000 |
commit | 08057947f3da441d571420d4594ce1e3888516ea (patch) | |
tree | 78666468602df039faadbe80d1262cbd959b3161 | |
parent | 029bff4b9a60ceabad8744059427b8736fe48a2b (diff) |
vppinfra: add foreach_int macro
foreach_int(x, 1, 3, 5, 7)
{
fformat(stdout, "x is %u\n", x);
}
Type: improvement
Change-Id: Idc355f4a284f421b150e3acb7a3a57bcede408c7
Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r-- | .clang-format | 1 | ||||
-rw-r--r-- | src/vppinfra/types.h | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/.clang-format b/.clang-format index 050505b168b..03568413bf8 100644 --- a/.clang-format +++ b/.clang-format @@ -20,6 +20,7 @@ ForEachMacros: - 'vec_foreach_index_backwards' - 'vec_foreach_pointer' - 'vlib_foreach_rx_tx' + - 'foreach_int' - 'foreach_vlib_main' - 'foreach_set_bit_index' - 'foreach_vlib_frame_bitmap_set_bit_index' diff --git a/src/vppinfra/types.h b/src/vppinfra/types.h index a3fbfcc845b..42217968dcc 100644 --- a/src/vppinfra/types.h +++ b/src/vppinfra/types.h @@ -196,6 +196,12 @@ typedef i64 i64u __attribute__ ((aligned (1), __may_alias__)); typedef word wordu __attribute__ ((aligned (1), __may_alias__)); typedef uword uwordu __attribute__ ((aligned (1), __may_alias__)); +#define foreach_int(__var, ...) \ + for (int __int_array[] = { __VA_ARGS__ }, *__int_ptr = __int_array, \ + __var = *__int_ptr; \ + __int_ptr - ARRAY_LEN (__int_array) < __int_array; \ + __var = *++__int_ptr) + #endif /* included_clib_types_h */ /* |