aboutsummaryrefslogtreecommitdiff
path: root/vector.h
diff options
context:
space:
mode:
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 */