Loading...
Searching...
No Matches
4# define RSTD_OS_WINDOWS 1
8# define RSTD_OS_LINUX 1
12# define RSTD_OS_APPLE 1
15#if defined(__unix__) || defined(__APPLE__)
16# define RSTD_OS_UNIX 1
19#define USE_TRAIT(Class) \
21 template<typename, typename> \
22 friend struct rstd::Impl; \
23 template<typename _USE_TRAIT_T> \
24 requires rstd::Impled<Self, rstd::cmp::PartialEq<_USE_TRAIT_T>> \
25 friend bool operator==(const Self& a, const _USE_TRAIT_T& b) noexcept { \
26 return as<rstd::cmp::PartialEq<_USE_TRAIT_T>>(a).eq(b); \
29#define RSTD_STR(a, ...) #a
30#define RSTD_FIRST(a, ...) a
31#define RSTD_REST(a, ...) __VA_ARGS__
33#define RSTD_REST_ARGS(a, ...) __VA_OPT__(, ) __VA_ARGS__
36# define debug_assert(...) ((void)0)
37# define debug_assert_eq(...) ((void)0)
39# define debug_assert(EXP, ...) \
40 if (! (EXP)) rstd::panic(#EXP RSTD_STR(__VA_ARGS__) RSTD_REST_ARGS(__VA_ARGS__))
41# define debug_assert_eq(A, B) debug_assert((A) == (B))
44#define rstd_assert(EXP, ...) \
45 if (! (EXP)) rstd::panic(#EXP RSTD_STR(__VA_ARGS__) RSTD_REST_ARGS(__VA_ARGS__))
46#define rstd_assert_eq(A, B) rstd_assert((A) == (B))
48#define rstd_error(...) \
50 if (rstd::log::log_enabled(rstd::log::Level::Error, "")) { \
51 rstd::log::error(__VA_ARGS__); \
55#define rstd_warn(...) \
57 if (rstd::log::log_enabled(rstd::log::Level::Warn, "")) { \
58 rstd::log::warn(__VA_ARGS__); \
62#define rstd_info(...) \
64 if (rstd::log::log_enabled(rstd::log::Level::Info, "")) { \
65 rstd::log::info(__VA_ARGS__); \
70# define rstd_debug(...) ((void)0)
72# define rstd_debug(...) \
74 if (rstd::log::log_enabled(rstd::log::Level::Debug, "")) { \
75 rstd::log::debug(__VA_ARGS__); \
80#define rstd_trace(...) \
82 if (rstd::log::log_enabled(rstd::log::Level::Trace, "")) { \
83 rstd::log::trace(__VA_ARGS__); \
88#define rstd_error_t(TARGET, ...) \
90 if (rstd::log::log_enabled(rstd::log::Level::Error, TARGET)) { \
91 rstd::log::error(TARGET, __VA_ARGS__); \
95#define rstd_warn_t(TARGET, ...) \
97 if (rstd::log::log_enabled(rstd::log::Level::Warn, TARGET)) { \
98 rstd::log::warn(TARGET, __VA_ARGS__); \
102#define rstd_info_t(TARGET, ...) \
104 if (rstd::log::log_enabled(rstd::log::Level::Info, TARGET)) { \
105 rstd::log::info(TARGET, __VA_ARGS__); \
110# define rstd_debug_t(...) ((void)0)
112# define rstd_debug_t(TARGET, ...) \
114 if (rstd::log::log_enabled(rstd::log::Level::Debug, TARGET)) { \
115 rstd::log::debug(TARGET, __VA_ARGS__); \
120#define rstd_trace_t(TARGET, ...) \
122 if (rstd::log::log_enabled(rstd::log::Level::Trace, TARGET)) { \
123 rstd::log::trace(TARGET, __VA_ARGS__); \