Faro Engine
0.0.0.b519570 (main)
Loading...
Searching...
No Matches
Source
Engine
Core
Source
Assert.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <type_traits>
4
#include <iostream>
5
6
#if FARO_DEBUG
// Define internal debugging macros
7
8
#if FARO_OS_WINDOWS
9
10
#include <sstream>
11
#include <
MinWindows.hpp
>
12
#define DebugOutputMessage(message) \
13
{ \
14
std::cerr << message; \
15
std::ostringstream stream; \
16
stream << message; \
17
OutputDebugStringA(stream.str().c_str()); \
18
}
19
#define Debug_Break() __debugbreak()
20
21
#elif FARO_OS_WEB
22
23
#define DebugOutputMessage(message) \
24
{ \
25
std::cerr << message; \
26
}
27
28
#define Debug_Break()
29
30
#else
31
32
#define DebugOutputMessage(message) \
33
{ \
34
std::cerr << message; \
35
}
36
37
#define Debug_Break() raise(SIGTRAP)
38
#endif
39
40
#define _DebugCheck(expression, expressionString, message, filename, lineNumber, triggerAbort)\
41
if (!(expression)){\
42
DebugOutputMessage("\n--Debug check triggered--\n");\
43
DebugOutputMessage((filename) << "(" << (lineNumber) << ")\n");\
44
if ((expressionString) != nullptr) DebugOutputMessage("Expression: " << (expressionString) << "\n");\
45
if ((message) != nullptr) DebugOutputMessage("Message: " << (expressionString) << "\n\n");\
46
if ((triggerAbort)) Debug_Break();\
47
}
48
49
#else
// Define placeholder for non-debug mode
50
#define _DebugCheck(expression, expressionString, message, filename, lineNumber, triggerAbort)
51
#define Debug_Break()
52
#endif
53
54
// Define usable macros
55
#define RequireSubClass(BaseClass, SubClass) (std::is_base_of<BaseClass, SubClass>::value)
56
57
#define Debug_BreakMessage(message) _DebugCheck(false, nullptr, message, __FILE__, __LINE__, true);
58
59
#define Debug_CheckMessage(expression, message) _DebugCheck(expression, #expression, message, __FILE__, __LINE__, false);
60
#define Debug_Check(expression) Debug_CheckMessage(expression, nullptr);
61
62
#define Debug_AssertMessage(expression, message) _DebugCheck(expression, #expression, message, __FILE__, __LINE__, true);
63
#define Debug_Assert(expression) Debug_AssertMessage(expression, nullptr);
64
65
#define Debug_BuildAssert(expression, message) static_assert(expression, message);
MinWindows.hpp
Generated by
1.9.8