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 /vector.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-- | vector.h | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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 */ |