Mana
Assert.h
Go to the documentation of this file.
1 
8 #pragma once
9 #include "Platform.h"
10 #include "String.h"
11 
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)( \
17  (!!(expression)) || \
18  (mana::Trace({ #expression, ": ", __FILE__, "(", std::to_string(__LINE__), ")\n" }), 0) \
19  )
20 #define MANA_ASSERT(expression) (void)( \
21  (!!(expression)) || \
22  (mana::Trace({ #expression, ": ", __FILE__, "(", std::to_string(__LINE__), ")\n" }), std::terminate(), 0) \
23  )
24 #define MANA_ASSERT_MESSAGE(expression, ...) (void)( \
25  (!!(expression)) || \
26  (mana::Trace({ #expression, ": ", __FILE__, "(", std::to_string(__LINE__), "): ", __VA_ARGS__, "\n" }), std::terminate(), 0) \
27  )
28 #else
29 #define MANA_CHECK(expression) ((void)0)
30 #define MANA_ASSERT(expression) ((void)0)
31 #define MANA_ASSERT_MESSAGE(expression, ...) ((void)0)
32 #endif
33 #define MANA_VERIFY(expression) (void)( \
34  (!!(expression)) || \
35  (mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): (", #expression, ")\n" }), std::terminate(), 0) \
36  )
37 #define MANA_VERIFY_MESSAGE(expression, ...) (void)( \
38  (!!(expression)) || \
39  (mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): ", __VA_ARGS__, " (", #expression, ")\n" }), std::terminate(), 0) \
40  )
41 #define MANA_NOT_IMPLEMENTED() (void)( \
42  (mana::Trace({ __FILE__, "(", std::to_string(__LINE__), "): Not implemented!\n" }), std::terminate()) \
43  )