diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-15 18:09:00 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-15 20:03:45 +0100 |
commit | 05b5d8547f5f98ca4b907bf6a21564e2384740a6 (patch) | |
tree | d1a5c0a856f938721b92076e328ef22647fcaddb /macro.h | |
parent | Add toggle for node data output. (diff) | |
download | calp-05b5d8547f5f98ca4b907bf6a21564e2384740a6.tar.gz calp-05b5d8547f5f98ca4b907bf6a21564e2384740a6.tar.xz |
Improve FOR macro.
Diffstat (limited to '')
-rw-r--r-- | macro.h | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -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 |