21GX_P2P_NAMESPACE_BEGIN()
51 GxP2PDebug(
void) : _printLV(PRINT_LV::
_3){}
62 static GxP2PDebug* getInstance(
void)
64 static GxP2PDebug _instance;
68 constexpr void setPrintLV(GxP2PDebug::PRINT_LV printLV){ _printLV = printLV; }
70 constexpr GxP2PDebug::PRINT_LV getPrintLV(
void)
const {
return _printLV; }
79 inline void trace(PRINT_LV printLV, GX_CSTR function, ...);
81 inline void breakStop(GX_CSTR check, ...);
83 inline void breakStop(
void);
87 inline void print(GX_CSTR buffer);
106#ifndef GET_FORMAT_STRING
107#if defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L
108#define GET_FORMAT_STRING(dst, len, start) \
111 va_start(va, start); \
112 GX_STR __format = va_arg(va, GX_STR); \
113 _vsnprintf_s(dst, len, _TRUNCATE, __format, va); \
117#define GET_FORMAT_STRING(dst, len, start) \
120 va_start(va, start); \
121 GX_STR __format = va_arg(va, GX_STR); \
122 vsnprintf(dst, len, __format, va); \
134inline void GxP2PDebug::trace(PRINT_LV printLV, GX_CSTR function, ...)
139 if (printLV <= _printLV)
142 GX_MEMSET(buffer, 0,
sizeof(buffer));
144 sprintf(buffer,
"<%s> ", function);
146 sprintf_s(buffer,
"<%s> ", function);
148 GxP2PDebug::print(buffer);
151 GX_MEMSET(buffer, 0,
sizeof(buffer));
152 GET_FORMAT_STRING(buffer,
sizeof(buffer), function);
153 GxP2PDebug::print(buffer);
162inline void GxP2PDebug::breakStop(GX_CSTR check, ...)
167 GET_FORMAT_STRING(buffer,
sizeof(buffer), check);
170 trace(PRINT_LV::_1, __FUNCTION__,
"Assert failed!! %s(%d)\n%s <%s> ", __FILE__, __LINE__, check, buffer);
179inline void GxP2PDebug::breakStop(
void)
181 GX_ASSERT(
false,
"");
188inline void GxP2PDebug::print(GX_CSTR buffer)
190 GX_TRACE(GX_TRACE_CATEGORY_P2P, buffer);
193GX_P2P_NAMESPACE_END()
201#define GXP2P_DEBUG_SETPRINTLV(__LEVEL__) gx::p2p::GxP2PDebug::getInstance()->setPrintLV(__LEVEL__)
203#define GXP2P_DEBUG_SETPRINTLV(__LEVEL__)
210#define GXP2P_DEBUG_GETPRINTLV(__LEVEL__) gx::p2p::GxP2PDebug::getInstance()->getPrintLV()
212#define GXP2P_DEBUG_GETPRINTLV(__LEVEL__)
219#define GXP2P_DEBUG_TRACE(__LEVEL__, ...) gx::p2p::GxP2PDebug::getInstance()->trace(__LEVEL__, __FUNCTION__, __VA_ARGS__)
221#define GXP2P_DEBUG_TRACE(__LEVEL__, ...) ((void)0)
228#define GXP2P_DEBUG_ASSERT(a, ...) if( !(a) ) \
230 gx::p2p::GxP2PDebug::getInstance()->breakStop(#a, __VA_ARGS__); \
233#define GXP2P_DEBUG_ASSERT(a, ...)
240#define GXP2P_DEBUG_VERIFY(a, ...) GXP2P_DEBUG_ASSERT(a, __VA_ARGS__)
242#define GXP2P_DEBUG_VERIFY(a, ...) a
249#define GXP2P_DEBUG_BREAK() gx::p2p::GxP2PDebug::getInstance()->breakStop()
251#define GXP2P_DEBUG_BREAK()
257#define GXP2P_ERROR_PRINT(...) GXP2P_DEBUG_TRACE(gx::p2p::GxP2PDebug::PRINT_LV::_1, __VA_ARGS__)
258#define GXP2P_SYSTEM_PRINT(...) GXP2P_DEBUG_TRACE(gx::p2p::GxP2PDebug::PRINT_LV::_2, __VA_ARGS__)
259#define GXP2P_APPLICATION_PRINT(...) GXP2P_DEBUG_TRACE(gx::p2p::GxP2PDebug::PRINT_LV::_3, __VA_ARGS__)
260#define GXP2P_CALLBACK_PRINT(...) GXP2P_DEBUG_TRACE(gx::p2p::GxP2PDebug::PRINT_LV::_4, __VA_ARGS__)
261#define GXP2P_FUNCTION_PRINT(...) GXP2P_DEBUG_TRACE(gx::p2p::GxP2PDebug::PRINT_LV::_5, __VA_ARGS__)
266#define GXP2P_FUNCTION_PRINT_START() GXP2P_FUNCTION_PRINT("start\n")
267#define GXP2P_FUNCTION_PRINT_END(__RESULT__) GXP2P_FUNCTION_PRINT("end (%d)\n", __RESULT__)
static constexpr u32 VALUE_256
256
Definition GxMath.h:127