gwnavruntime/kernel/SF_Debug.h Source File
Go to the documentation of this file.
20 #ifndef INC_KY_Kernel_Debug_H
21 #define INC_KY_Kernel_Debug_H
26 #if !defined(KY_BUILD_DEBUG)
27 # define KY_NO_DEBUG_OUTPUT
31 #define KY_LOG_SUFFIX_ADD(fmt, ...) (fmt " [%s:%u]\n", __VA_ARGS__, KY_GET_COMPILED_FILENAME, __LINE__)
32 #else // defined(KY_CC_GNU) || defined(KY_CC_SNC) || defined(KY_CC_GHS)
33 #define KY_LOG_SUFFIX_ADD(fmt, ...) (fmt " [%s:%u]\n", ## __VA_ARGS__, KY_GET_COMPILED_FILENAME, __LINE__)
35 #define KY_LOG_SUFFIX(args) KY_LOG_SUFFIX_ADD args
37 #ifndef KY_NO_DEBUG_OUTPUT
44 class LogDebugMessager
47 LogDebugMessager(LogMessageId
id)
51 void Print(
const char* fmt, ...) const KY_LOG_VAARG_ATTRIBUTE(2,3);
59 #define KY_DEBUG_OUTPUTN(msgtype, msg) Kaim::LogDebugMessager(msgtype).Print msg;
60 #define KY_DEBUG_OUTPUTN_IF(cond, msgtype, msg) do { if (cond) { KY_DEBUG_OUTPUTN(msgtype, msg); } } while (0)
62 #define KY_DEBUG_OUTPUT(cond, msgtype, str) KY_DEBUG_OUTPUTN_IF(cond, msgtype, ("%s", str))
63 #define KY_DEBUG_OUTPUT1(cond, msgtype, str, p1) KY_DEBUG_OUTPUTN_IF(cond, msgtype, (str, p1))
64 #define KY_DEBUG_OUTPUT2(cond, msgtype, str, p1, p2) KY_DEBUG_OUTPUTN_IF(cond, msgtype, (str, p1, p2))
65 #define KY_DEBUG_OUTPUT3(cond, msgtype, str, p1, p2, p3) KY_DEBUG_OUTPUTN_IF(cond, msgtype, (str, p1, p2, p3))
66 #define KY_DEBUG_OUTPUT4(cond, msgtype, str, p1, p2, p3, p4) KY_DEBUG_OUTPUTN_IF(cond, msgtype, (str, p1, p2, p3, p4))
67 #define KY_DEBUG_OUTPUT5(cond, msgtype, str, p1, p2, p3, p4, p5) KY_DEBUG_OUTPUTN_IF(cond, msgtype, (str, p1, p2, p3, p4, p5))
68 #define KY_DEBUG_OUTPUT6(cond, msgtype, str, p1, p2, p3, p4, p5, p6) KY_DEBUG_OUTPUTN_IF(cond, msgtype, (str, p1, p2, p3, p4, p5, p6))
72 #define KY_DEBUG_ASSERTN(cond, msg) do { if (!(cond)) { KY_DEBUG_OUTPUTN(Kaim::Log_DebugAssert, KY_LOG_SUFFIX(msg)); KY_DEBUG_BREAK; } } while (0)
73 #define KY_DEBUG_ASSERT(cond, str) KY_DEBUG_ASSERTN(cond, ("%s", str))
74 #define KY_DEBUG_ASSERT1(cond, str, p1) KY_DEBUG_ASSERTN(cond, (str, p1))
75 #define KY_DEBUG_ASSERT2(cond, str, p1, p2) KY_DEBUG_ASSERTN(cond, (str, p1, p2))
76 #define KY_DEBUG_ASSERT3(cond, str, p1, p2, p3) KY_DEBUG_ASSERTN(cond, (str, p1, p2, p3))
77 #define KY_DEBUG_ASSERT4(cond, str, p1, p2, p3, p4) KY_DEBUG_ASSERTN(cond, (str, p1, p2, p3, p4))
78 #define KY_DEBUG_ASSERT5(cond, str, p1, p2, p3, p4, p5) KY_DEBUG_ASSERTN(cond, (str, p1, p2, p3, p4, p5))
79 #define KY_DEBUG_ASSERT6(cond, str, p1, p2, p3, p4, p5, p6) KY_DEBUG_ASSERTN(cond, (str, p1, p2, p3, p4, p5, p6))
85 #define KY_DEBUG_OUTPUTN(msgtype, msg) ((void)0)
86 #define KY_DEBUG_OUTPUTN_IF(cond, msgtype, msg) ((void)0)
87 #define KY_DEBUG_OUTPUT(cond, msgtype, str ) ((void)0)
88 #define KY_DEBUG_OUTPUT1(cond, msgtype, str, p1) ((void)0)
89 #define KY_DEBUG_OUTPUT2(cond, msgtype, str, p1, p2) ((void)0)
90 #define KY_DEBUG_OUTPUT3(cond, msgtype, str, p1, p2, p3) ((void)0)
91 #define KY_DEBUG_OUTPUT4(cond, msgtype, str, p1, p2, p3, p4) ((void)0)
92 #define KY_DEBUG_OUTPUT5(cond, msgtype, str, p1, p2, p3, p4, p5) ((void)0)
93 #define KY_DEBUG_OUTPUT6(cond, msgtype, str, p1, p2, p3, p4, p5, p6) ((void)0)
97 #define KY_DEBUG_ASSERTN(cond, msg) ((void)0)
98 #define KY_DEBUG_ASSERT(cond, str) ((void)0)
99 #define KY_DEBUG_ASSERT1(cond, str, p1) ((void)0)
100 #define KY_DEBUG_ASSERT2(cond, str, p1, p2) ((void)0)
101 #define KY_DEBUG_ASSERT3(cond, str, p1, p2, p3) ((void)0)
102 #define KY_DEBUG_ASSERT4(cond, str, p1, p2, p3, p4) ((void)0)
103 #define KY_DEBUG_ASSERT5(cond, str, p1, p2, p3, p4, p5) ((void)0)
104 #define KY_DEBUG_ASSERT6(cond, str, p1, p2, p3, p4, p5, p6) ((void)0)
106 #endif // KY_BUILD_DEBUG
113 #define KY_DEBUG_WARNINGN(msg) do { KY_DEBUG_OUTPUTN(Kaim::Log_DebugWarning, KY_LOG_SUFFIX(msg)); } while (0)
114 #define KY_DEBUG_WARNINGN_IF(cond, msg) do { if (cond) { KY_DEBUG_WARNINGN(msg); } } while (0)
115 #define KY_DEBUG_WARNING(cond, str) KY_DEBUG_WARNINGN_IF(cond, ("%s", str))
116 #define KY_DEBUG_WARNING1(cond, str, p1) KY_DEBUG_WARNINGN_IF(cond, (str, p1))
117 #define KY_DEBUG_WARNING2(cond, str, p1, p2) KY_DEBUG_WARNINGN_IF(cond, (str, p1,p2))
118 #define KY_DEBUG_WARNING3(cond, str, p1, p2, p3) KY_DEBUG_WARNINGN_IF(cond, (str, p1,p2,p3))
119 #define KY_DEBUG_WARNING4(cond, str, p1, p2, p3, p4) KY_DEBUG_WARNINGN_IF(cond, (str, p1,p2,p3,p4))
120 #define KY_DEBUG_WARNING5(cond, str, p1, p2, p3, p4, p5) KY_DEBUG_WARNINGN_IF(cond, (str, p1,p2,p3,p4,p5))
121 #define KY_DEBUG_WARNING6(cond, str, p1, p2, p3, p4, p5, p6) KY_DEBUG_WARNINGN_IF(cond, (str, p1,p2,p3,p4,p5,p6))
124 #define KY_DEBUG_ERRORN(msg) do { KY_DEBUG_OUTPUTN(Kaim::Log_DebugError, KY_LOG_SUFFIX(msg)); } while (0)
125 #define KY_DEBUG_ERRORN_IF(cond, msg) do { if (cond) { KY_DEBUG_ERRORN(msg); } } while (0)
126 #define KY_DEBUG_ERROR(cond, str) KY_DEBUG_ERRORN_IF(cond, ("%s", str))
127 #define KY_DEBUG_ERROR1(cond, str, p1) KY_DEBUG_ERRORN_IF(cond, (str, p1))
128 #define KY_DEBUG_ERROR2(cond, str, p1, p2) KY_DEBUG_ERRORN_IF(cond, (str, p1,p2))
129 #define KY_DEBUG_ERROR3(cond, str, p1, p2, p3) KY_DEBUG_ERRORN_IF(cond, (str, p1,p2,p3))
130 #define KY_DEBUG_ERROR4(cond, str, p1, p2, p3, p4) KY_DEBUG_ERRORN_IF(cond, (str, p1,p2,p3,p4))
131 #define KY_DEBUG_ERROR5(cond, str, p1, p2, p3, p4, p5) KY_DEBUG_ERRORN_IF(cond, (str, p1,p2,p3,p4,p5))
132 #define KY_DEBUG_ERROR6(cond, str, p1, p2, p3, p4, p5, p6) KY_DEBUG_ERRORN_IF(cond, (str, p1,p2,p3,p4,p5,p6))
134 #define KY_DEBUG_MESSAGEN(msg) KY_DEBUG_OUTPUTN(Kaim::Log_DebugMessage, msg)
135 #define KY_DEBUG_MESSAGEN_IF(cond, msg) KY_DEBUG_OUTPUTN_IF(cond, Kaim::Log_DebugMessage, msg)
136 #define KY_DEBUG_MESSAGE(cond, str) KY_DEBUG_MESSAGEN_IF(cond, ("%s", str))
137 #define KY_DEBUG_MESSAGE1(cond, str, p1) KY_DEBUG_MESSAGEN_IF(cond, (str, p1))
138 #define KY_DEBUG_MESSAGE2(cond, str, p1, p2) KY_DEBUG_MESSAGEN_IF(cond, (str, p1,p2))
139 #define KY_DEBUG_MESSAGE3(cond, str, p1, p2, p3) KY_DEBUG_MESSAGEN_IF(cond, (str, p1,p2,p3))
140 #define KY_DEBUG_MESSAGE4(cond, str, p1, p2, p3, p4) KY_DEBUG_MESSAGEN_IF(cond, (str, p1,p2,p3,p4))
141 #define KY_DEBUG_MESSAGE5(cond, str, p1, p2, p3, p4, p5) KY_DEBUG_MESSAGEN_IF(cond, (str, p1,p2,p3,p4,p5))
142 #define KY_DEBUG_MESSAGE6(cond, str, p1, p2, p3, p4, p5, p6) KY_DEBUG_MESSAGEN_IF(cond, (str, p1,p2,p3,p4,p5,p6))
144 #define KY_DEBUG_MESSAGE_LINEN(msg) do { KY_DEBUG_OUTPUTN(Kaim::Log_DebugMessage, KY_LOG_SUFFIX(msg)); } while (0)
145 #define KY_DEBUG_MESSAGE_LINEN_IF(cond, msg) do { if (cond) { KY_DEBUG_MESSAGE_LINEN(msg); } } while (0)
146 #define KY_DEBUG_MESSAGE_LINE(cond, str) KY_DEBUG_MESSAGE_LINEN_IF(cond, ("%s", str))
147 #define KY_DEBUG_MESSAGE_LINE1(cond, str, p1) KY_DEBUG_MESSAGE_LINEN_IF(cond, (str, p1))
148 #define KY_DEBUG_MESSAGE_LINE2(cond, str, p1, p2) KY_DEBUG_MESSAGE_LINEN_IF(cond, (str, p1,p2))
149 #define KY_DEBUG_MESSAGE_LINE3(cond, str, p1, p2, p3) KY_DEBUG_MESSAGE_LINEN_IF(cond, (str, p1,p2,p3))
150 #define KY_DEBUG_MESSAGE_LINE4(cond, str, p1, p2, p3, p4) KY_DEBUG_MESSAGE_LINEN_IF(cond, (str, p1,p2,p3,p4))
151 #define KY_DEBUG_MESSAGE_LINE5(cond, str, p1, p2, p3, p4, p5) KY_DEBUG_MESSAGE_LINEN_IF(cond, (str, p1,p2,p3,p4,p5))
152 #define KY_DEBUG_MESSAGE_LINE6(cond, str, p1, p2, p3, p4, p5, p6) KY_DEBUG_MESSAGE_LINEN_IF(cond, (str, p1,p2,p3,p4,p5,p6))
156 #define KY_DEBUG_SINT(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(%d)\n", int (v))
157 #define KY_DEBUG_UINT(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(%u)\n", unsigned(v))
158 #define KY_DEBUG_HEX(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(0x%X)\n", unsigned(v))
159 #define KY_DEBUG_FLOAT(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(%f)\n", Kaim::Double(v))
160 #define KY_DEBUG_DOUBLE(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(%f)\n", Kaim::Double(v))
161 #define KY_DEBUG_CHAR(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(%c)\n", char(v))
162 #define KY_DEBUG_WCHAR(v) KY_DEBUG_OUTPUT1(1, Kaim::Log_DebugMessage, #v "(%lc)\n", wchar_t(v))
Definition: gamekitcrowddispersion.h:20