From b2f7510d64c2e33dec17856539c71204ee423627 Mon Sep 17 00:00:00 2001 From: Francesco Date: Tue, 9 Sep 2025 22:25:43 +0200 Subject: [PATCH] refactor(vector): add index to foreach --- test/vector/v1.c | 4 ++-- vector/myvector.c | 4 ++-- vector/myvector.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/vector/v1.c b/test/vector/v1.c index 39be8b5..9a6f782 100644 --- a/test/vector/v1.c +++ b/test/vector/v1.c @@ -10,13 +10,13 @@ typedef struct my_elem { } my_elem_s; /* Functions used to iterate for each vector's element */ -static void multiply(void *elem) { +static void multiply(size_t index, void *elem) { my_elem_s *e = (my_elem_s *)elem; e->age = e->age * 2; } /* Another way to use foreach -static void print(void *elem) { +static void print(size_t index, void *elem) { my_elem_s *e = (my_elem_s *)elem; printf("%s (%d)\n", e->name, e->age); } diff --git a/vector/myvector.c b/vector/myvector.c index 8cc2f1e..a20d815 100644 --- a/vector/myvector.c +++ b/vector/myvector.c @@ -282,7 +282,7 @@ int vec_set(vec_s *vec, size_t index, void *value) { return 0; } -int vec_foreach(vec_s *vec, void (*fefn)(void *)) { +int vec_foreach(vec_s *vec, void (*fefn)(size_t index, void *elem)) { if (vec == NULL || fefn == NULL) { return -1; } @@ -292,7 +292,7 @@ int vec_foreach(vec_s *vec, void (*fefn)(void *)) { } for (size_t i = 0; i < vec->size; ++i) { - fefn((char *)vec->data + (i * vec->elem_size)); + fefn(i, (char *)vec->data + (i * vec->elem_size)); } mtx_unlock(&vec->lock); diff --git a/vector/myvector.h b/vector/myvector.h index 7389225..dbb7131 100644 --- a/vector/myvector.h +++ b/vector/myvector.h @@ -37,7 +37,7 @@ int vec_set(vec_s *vec, size_t index, void *value); int vec_clear(vec_s *vec); -int vec_foreach(vec_s *vec, void (*fefn)(void *)); +int vec_foreach(vec_s *vec, void (*fefn)(size_t index, void *elem)); // void *vec_sort(vec_s *, void (* sortfn)(void *a, void *b))