8 inline constexpr
bool NO_LOG_ = 1;
17 #define JRLQP_PP_ID(x) x
19 #define JRLQP_PP_APPLY(macro, ...) JRLQP_PP_ID(macro(__VA_ARGS__))
22 #define JRLQP_PP_NARG(...) JRLQP_PP_ID(JRLQP_PP_NARG_(__VA_ARGS__, JRLQP_PP_RSEQ_N()))
23 #define JRLQP_PP_NARG_(...) JRLQP_PP_ID(JRLQP_PP_ARG_N(__VA_ARGS__))
24 #define JRLQP_PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
25 #define JRLQP_PP_RSEQ_N() 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
27 #define JRLQP_CHOOSE_AUTO_NAME_START(count) JRLQP_AUTO_NAME_ARG##count
29 #define JRLQP_AUTO_NAME_ARG(...) \
30 JRLQP_PP_ID(JRLQP_PP_APPLY(JRLQP_CHOOSE_AUTO_NAME_START, JRLQP_PP_NARG(__VA_ARGS__))(__VA_ARGS__))
32 #define JRLQP_AUTO_NAME_ARG1(x) #x, x
33 #define JRLQP_AUTO_NAME_ARG2(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG1(__VA_ARGS__))
34 #define JRLQP_AUTO_NAME_ARG3(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG2(__VA_ARGS__))
35 #define JRLQP_AUTO_NAME_ARG4(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG3(__VA_ARGS__))
36 #define JRLQP_AUTO_NAME_ARG5(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG4(__VA_ARGS__))
37 #define JRLQP_AUTO_NAME_ARG6(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG5(__VA_ARGS__))
38 #define JRLQP_AUTO_NAME_ARG7(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG6(__VA_ARGS__))
39 #define JRLQP_AUTO_NAME_ARG8(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG7(__VA_ARGS__))
40 #define JRLQP_AUTO_NAME_ARG9(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG8(__VA_ARGS__))
41 #define JRLQP_AUTO_NAME_ARG10(x, ...) #x, x, JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG9(__VA_ARGS__))
43 #define JRLQP_ENABLE_LOG_(macro, ...) \
48 JRLQP_PP_ID(macro(__VA_ARGS__)); \
51 #define JRLQP_ENABLE_DEBUG_(macro, ...) \
56 JRLQP_PP_ID(macro(__VA_ARGS__)); \
60 #define JRLQP_LOG_(logger, flags, ...) \
61 JRLQP_PP_ID(logger.log(static_cast<uint32_t>(flags), JRLQP_PP_ID(JRLQP_AUTO_NAME_ARG(__VA_ARGS__))))
62 #define JRLQP_LOG_AS_(logger, flags, ...) JRLQP_PP_ID(logger.log(static_cast<uint32_t>(flags), __VA_ARGS__))
63 #define JRLQP_LOG(...) JRLQP_PP_ID(JRLQP_ENABLE_LOG_(JRLQP_LOG_, __VA_ARGS__))
64 #define JRLQP_DBG(...) JRLQP_PP_ID(JRLQP_ENABLE_DEBUG_(JRLQP_LOG_, __VA_ARGS__))
65 #define JRLQP_LOG_AS(...) JRLQP_PP_ID(JRLQP_ENABLE_LOG_(JRLQP_LOG_AS_, __VA_ARGS__))
66 #define JRLQP_DBG_AS(...) JRLQP_PP_ID(JRLQP_ENABLE_DEBUG_(JRLQP_LOG_AS_, __VA_ARGS__))
68 #define JRLQP_LOG_COMMENT(logger, flag, ...) \
69 JRLQP_PP_ID(JRLQP_ENABLE_LOG_(logger.comment, static_cast<uint32_t>(flag), __VA_ARGS__))
70 #define JRLQP_DBG_COMMENT(logger, flag, ...) \
71 JRLQP_PP_ID(JRLQP_ENABLE_DEBUG_(logger.comment, static_cast<uint32_t>(flag), __VA_ARGS__))
73 #define JRLQP_LOG_NEW_ITER(logger, it) JRLQP_ENABLE_LOG_(logger.startIter, it)
74 #define JRLQP_DBG_NEW_ITER(logger, it) JRLQP_ENABLE_DEBUG_(logger.startIter, it)
76 #define JRLQP_LOG_RESET(logger) JRLQP_ENABLE_LOG_(logger.startIter, -1)
77 #define JRLQP_DBG_RESET(logger) JRLQP_ENABLE_DEBUG_(logger.startIter, -1)
79 #define JRLQP_DEBUG_ONLY(expr) \
constexpr bool NO_LOG_
Definition: debug.h:6
constexpr bool DEBUG_OUTPUT
Definition: debug.h:14