aboutsummaryrefslogtreecommitdiff
path: root/vector.h
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-02-15 18:09:00 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-02-15 20:03:45 +0100
commit05b5d8547f5f98ca4b907bf6a21564e2384740a6 (patch)
treed1a5c0a856f938721b92076e328ef22647fcaddb /vector.h
parentAdd toggle for node data output. (diff)
downloadcalp-05b5d8547f5f98ca4b907bf6a21564e2384740a6.tar.gz
calp-05b5d8547f5f98ca4b907bf6a21564e2384740a6.tar.xz
Improve FOR macro.
Diffstat (limited to 'vector.h')
-rw-r--r--vector.h12
1 files changed, 8 insertions, 4 deletions
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 */