Loading...
Searching...
No Matches
Go to the documentation of this file. 1#ifndef _BBM_MACRO_UTIL_H_
2#define _BBM_MACRO_UTIL_H_
14#define BBM_PASS(...) __VA_ARGS__
19#define BBM_CALL(macro, ...) macro (__VA_ARGS__)
29#define BBM_EXPAND(...) _BBM_EXPAND4(_BBM_EXPAND4(_BBM_EXPAND4(_BBM_EXPAND4(__VA_ARGS__))))
30#define _BBM_EXPAND4(...) _BBM_EXPAND3(_BBM_EXPAND3(_BBM_EXPAND3(_BBM_EXPAND3(__VA_ARGS__))))
31#define _BBM_EXPAND3(...) _BBM_EXPAND2(_BBM_EXPAND2(_BBM_EXPAND2(_BBM_EXPAND2(__VA_ARGS__))))
32#define _BBM_EXPAND2(...) _BBM_EXPAND1(_BBM_EXPAND1(_BBM_EXPAND1(_BBM_EXPAND1(__VA_ARGS__))))
33#define _BBM_EXPAND1(...) __VA_ARGS__
47#define BBM_FOREACH_OPT(MACRO, OPT, ...) \
48 __VA_OPT__(BBM_EXPAND(_BBM_FOREACH_OPT(MACRO, OPT, __VA_ARGS__)))
49#define _BBM_FOREACH_OPT(MACRO, OPT, ARG, ...) \
51 __VA_OPT__(OPT() _BBM_CALL_FOREACH_OPT BBM_PARENS (MACRO, OPT, __VA_ARGS__))
52#define _BBM_CALL_FOREACH_OPT() _BBM_FOREACH_OPT
61#define BBM_FOR_EACH(MACRO, ...) BBM_FOREACH_OPT(MACRO, , __VA_ARGS__)
67#define BBM_TO_STRING(...) #__VA_ARGS__
74#define BBM_STRINGIFY(...) BBM_TO_STRING(__VA_ARGS__)
81#define BBM_STRINGIFY_EACH(...) BBM_FOREACH_OPT(BBM_TO_STRING, BBM_COMMA, __VA_ARGS__)