summaryrefslogtreecommitdiffhomepage
path: root/include/rodeo/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/rodeo/common.h')
-rw-r--r--include/rodeo/common.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/rodeo/common.h b/include/rodeo/common.h
new file mode 100644
index 0000000..886a82c
--- /dev/null
+++ b/include/rodeo/common.h
@@ -0,0 +1,20 @@
+
+#define mrodeo_name_concat(prefix, suffix) prefix##suffix
+
+#define mrodeo_macrovar(prefix) mrodeo_name_concat(prefix##_, __LINE__)
+
+#define mrodeo_defer_do(start, end) \
+ for( \
+ int mrodeo_macrovar(_macrovar_) = (start, 0); \
+ !mrodeo_macrovar(_macrovar_); \
+ (mrodeo_macrovar(_macrovar_) += 1), end \
+ ) \
+
+#define \
+mrodeo_vargs_do(final_arg) \
+ va_list vargs; \
+ mrodeo_defer_do( \
+ va_start(vargs, final_arg), \
+ va_end(vargs) \
+ ) \
+