aboutsummaryrefslogtreecommitdiff
path: root/macro.h
diff options
context:
space:
mode:
Diffstat (limited to 'macro.h')
-rw-r--r--macro.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/macro.h b/macro.h
index bf0c1864..11287b44 100644
--- a/macro.h
+++ b/macro.h
@@ -79,6 +79,21 @@
/*
+ * Iterator macros.
+ */
+#define FOR(T, var, set) for( \
+ BEG_ ## T (var, set); \
+ END_ ## T (var, set); \
+ NXT_ ## T (var, set))
+
+/* Example int implementation
+ * FOR(int, i, 10) { } */
+
+#define BEG_int(i, set) int i = 0
+#define NXT_int(i, set) i++
+#define END_int(i, set) i < set
+
+/*
* General functions that different container types may implement.
* Actuall implementation and type signature is mostly left to
* individual implementations.