From 05b5d8547f5f98ca4b907bf6a21564e2384740a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 15 Feb 2019 18:09:00 +0100 Subject: Improve FOR macro. --- vector.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'vector.h') diff --git a/vector.h b/vector.h index 7dea4d58..073252bf 100644 --- a/vector.h +++ b/vector.h @@ -24,13 +24,17 @@ TYPE* GET(VECT(TYPE))(VECT(TYPE)*, unsigned int idx); int EMPTY(VECT(TYPE))(VECT(TYPE)*); unsigned int SIZE(VECT(TYPE))(VECT(TYPE)*); -#define __BEG_VECT(i, set) unsigned int i = 0 +#define __PRE_VECT(T, i, set) \ + unsigned int __INTER(i) = 0; T* i; +#define PRE_FOR_VECT(T) __PRE_VECT + +#define __BEG_VECT(T, i, set) i = GET(VECT(T))(set, __INTER(i)) #define BEG_VECT(T) __BEG_VECT -#define __END_VECT(i, set) (set) > i -#define END_VECT(T) SIZE(VECT(T)) __END_VECT +#define __END_VECT(T, i, set) __INTER(i) < SIZE(VECT(T))(set) +#define END_VECT(T) __END_VECT -#define __NXT_VECT(l, set) i++ +#define __NXT_VECT(T, i, set) i = GET(VECT(T))(set, ++__INTER(i)) #define NXT_VECT(T) __NXT_VECT #endif /* TYPE */ -- cgit v1.2.3