Go to the documentation of this file.
25 #define OV_PP_TOSTRING(...) OV_PP_TOSTRING_(__VA_ARGS__)
26 #define OV_PP_TOSTRING_(...) #__VA_ARGS__
28 #define OV_PP_EXPAND(X) X
30 #define OV_PP_NARG(...) OV_PP_EXPAND( OV_PP_NARG_(__VA_ARGS__, OV_PP_RSEQ_N()) )
31 #define OV_PP_NARG_(...) OV_PP_EXPAND( OV_PP_ARG_N(__VA_ARGS__) )
32 #define OV_PP_ARG_N(_1, _2, _3, _4, N, ...) N
33 #define OV_PP_RSEQ_N() 4, 3, 2, 1, 0
36 #define OV_PP_CAT_(x, y) x ## y
37 #define OV_PP_CAT(x, y) OV_PP_CAT_(x, y)
38 #define OV_PP_CAT3_(x, y, z) x ## y ## z
39 #define OV_PP_CAT3(x, y, z) OV_PP_CAT3_(x, y, z)
40 #define OV_PP_CAT4_(x, y, z, w) x ## y ## z ## w
41 #define OV_PP_CAT4(x, y, z, w) OV_PP_CAT4_(x, y, z, w)
44 #define OV_PP_OVERLOAD(NAME, ...) OV_PP_EXPAND( OV_PP_CAT3(NAME, _, OV_PP_EXPAND( OV_PP_NARG(__VA_ARGS__) ))(__VA_ARGS__) )