From 91aeefea53fefb38de73d0cf5a812c45d74ed778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sat, 9 Feb 2019 12:08:53 +0100 Subject: Add iterator macros. --- macro.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'macro.h') diff --git a/macro.h b/macro.h index bf0c1864..11287b44 100644 --- a/macro.h +++ b/macro.h @@ -78,6 +78,21 @@ #define FREE_F(T) int FREE(T) (T* this) +/* + * 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 -- cgit v1.2.3