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. --- macro.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'macro.h') diff --git a/macro.h b/macro.h index ae69ddd3..0057df25 100644 --- a/macro.h +++ b/macro.h @@ -78,18 +78,20 @@ /* Declare destructor */ #define FREE_F(T) int FREE(T) (T* this) +/* generate reusable internal symbol */ +#define __INTER(s) TP3(__, s, __internal) -/* - * Iterator macros. - */ -#define FOR(T, var, set) for( \ - BEG_ ## T (var, set); \ - END_ ## T (var, set); \ - NXT_ ## T (var, set)) +/* Iterator macros. */ +#define FOR(CONT_T, T, var, set) \ + PRE_FOR_ ## CONT_T (T, var, set); \ + for( BEG_ ## CONT_T (T, var, set); \ + END_ ## CONT_T (T, var, set); \ + NXT_ ## CONT_T (T, var, set)) /* Example int implementation * FOR(int, i, 10) { } */ +#define PRE_FOR_int(i, set) #define BEG_int(i, set) int i = 0 #define NXT_int(i, set) i++ #define END_int(i, set) i < set -- cgit v1.2.3