diff --git a/examples/da_foreach.c b/examples/da_foreach.c new file mode 100644 index 0000000..1fe55a5 --- /dev/null +++ b/examples/da_foreach.c @@ -0,0 +1,17 @@ +#include +#include +#include +#define LAZY_IMPL +#include "../lazy.h" + +int main() { + srand(time(NULL)); + Lz_DA(int) nums = {0}; + for (int i = 0; i < 10; ++i) { + lz_da_append(nums, rand()%100); + } + + lz_da_foreach(int, x, nums) { + printf("%d\n", *x); + } +} diff --git a/lazy.h b/lazy.h index b57f971..6c02b11 100644 --- a/lazy.h +++ b/lazy.h @@ -87,6 +87,8 @@ char *lz_cstr_dup(const char *s); (da).data = realloc((da).data, (da).cnt * sizeof(*(da).data));\ (da).cap = (da).cnt;\ } while(0) +#define lz_da_foreach(T, name, da) \ + for (T *name = (da).data; name-(da).data < (da).cnt; ++name) typedef Lz_DA(char) Lz_SB;