12 #define MANA_WARNING(...) (void)(mana::Trace(__VA_ARGS__))
13 #define MANA_ERROR(...) (void)(mana::Trace(__VA_ARGS__), std::terminate())
14 #define MANA_BUG(...) (void)(mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): BUG!: ", __VA_ARGS__, "\n" }), std::terminate())
15 #if MANA_BUILD_TARGET == MANA_BUILD_DEBUG
16 #define MANA_CHECK(expression) (void)( \
18 (mana::Trace({ #expression, ": ", __FILE__, "(", std::to_string(__LINE__), ")\n" }), 0) \
20 #define MANA_ASSERT(expression) (void)( \
22 (mana::Trace({ #expression, ": ", __FILE__, "(", std::to_string(__LINE__), ")\n" }), std::terminate(), 0) \
24 #define MANA_ASSERT_MESSAGE(expression, ...) (void)( \
26 (mana::Trace({ #expression, ": ", __FILE__, "(", std::to_string(__LINE__), "): ", __VA_ARGS__, "\n" }), std::terminate(), 0) \
29 #define MANA_CHECK(expression) ((void)0)
30 #define MANA_ASSERT(expression) ((void)0)
31 #define MANA_ASSERT_MESSAGE(expression, ...) ((void)0)
33 #define MANA_VERIFY(expression) (void)( \
35 (mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): (", #expression, ")\n" }), std::terminate(), 0) \
37 #define MANA_VERIFY_MESSAGE(expression, ...) (void)( \
39 (mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): ", __VA_ARGS__, " (", #expression, ")\n" }), std::terminate(), 0) \
41 #define MANA_NOT_IMPLEMENTED() (void)( \
42 (mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): Not implemented!\n" }), std::terminate()) \