blob: d7e7cc961bbf8e39f2d3c90eaedf302dc6e6c3a5 [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__, 6,5,4,3,2,1)
#define VA_NUM_ARGS_IMPL(_1,_2,_3,_4,_5,_6,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