blob: 222e02513ef2e2581102ff0606dfb28d947d221b [file] [log] [blame]
/*
* These tricks are taken from
* http://efesx.com/2010/07/17/variadic-macro-to-count-number-of-arguments/
* and
* http://efesx.com/2010/08/31/overloading-macros/
*/
#define VA_NUM_ARGS(...) VA_NUM_ARGS_IMPL(__VA_ARGS__, 5,4,3,2,1)
#define VA_NUM_ARGS_IMPL(_1,_2,_3,_4,_5,N,...) N
#define macro_dispatcher(func, ...) \
macro_dispatcher_(func, VA_NUM_ARGS(__VA_ARGS__))
#define macro_dispatcher_(func, nargs) \
macro_dispatcher__(func, nargs)
#define macro_dispatcher__(func, nargs) \
func ## nargs