-#define array_elt(array, n) (array).data[(n)]
-#define array_ptr(array, n) (array).data + (n)
+#define array_elt(array, n) ((array).data[(n)])
+#define array_ptr(array, n) ((array).data + (n))
+
+#define foreach(var, array) \
+ for (uint32_t __Ai = 0 ; __Ai < (array).len ; ++__Ai) { \
+ var = array_ptr(array, __Ai);