summaryrefslogtreecommitdiffhomepage
path: root/include/rodeo/common.h
blob: 886a82c6b4ad6ed00d6c1554fd04c11e6dbbe521 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)				\
	)								\