diff options
Diffstat (limited to 'include/array_length.h')
-rw-r--r-- | include/array_length.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/array_length.h b/include/array_length.h index 2305e21..2a4f09f 100644 --- a/include/array_length.h +++ b/include/array_length.h @@ -33,4 +33,18 @@ VAR must evaluate to an array, not a pointer. */ #define array_end(var) (&(var)[array_length (var)]) +/* array_foreach (PTR, ARRAY) iterates over all the elements in an + array, assigning the locally defined pointer variable PTR to each + element in turn. + + array_foreach_const (PTR, ARRAY) does the same, but *PTR is declared + const even if the array is not. */ +#define array_foreach(ptr, array) \ + for (__typeof ((array)[0]) *ptr = (array) ; \ + ptr < array_end (array) ; ptr++) + +#define array_foreach_const(ptr, array) \ + for (const __typeof ((array)[0]) *ptr = (array) ; \ + ptr < array_end (array) ; ptr++) + #endif /* _ARRAY_LENGTH_H */ |