From ce56d992214dfe793186f614d1759cd2ba061ad4 Mon Sep 17 00:00:00 2001 From: Riley Beckett Date: Tue, 14 Oct 2025 18:15:38 -0400 Subject: allow multiple array_for_all's in one scope without collision --- array.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/array.h b/array.h index bf0bfe8..3c410e2 100644 --- a/array.h +++ b/array.h @@ -13,6 +13,8 @@ void array_print(void* array); void array_pop(void* array); void* array_add_(void* array, size_t item_size); +#define CONCAT_INNER(a, b) a ## b +#define CONCAT(a, b) CONCAT_INNER(a, b) #define array_clear(array) (((array_info*)(array))[-1].size = 0) #define array_size(array) (((array_info*)(array))[-1].size) @@ -31,8 +33,8 @@ void* array_add_(void* array, size_t item_size); #define array_last(array) (array)[array_size(array) - 1] -#define array_for_all(type__, it__, array__) \ -type__* it__ = array__; type__* end__ = array__ ? array__ + array_size(array__) : NULL; \ -for (; it__ < end__; it__++) +#define array_for_all(type__, name__, array__) \ +type__* CONCAT(it__, __LINE__) = array__; type__* CONCAT(end__, __LINE__) = array__ ? array__ + array_size(array__) : NULL; \ +for (type__* name__; (CONCAT(it__, __LINE__) < CONCAT(end__, __LINE__)) ? (name__ = CONCAT(it__, __LINE__), true) : false; CONCAT(it__, __LINE__)++) #endif // ARRAY_H_ -- cgit v1.2.3