70 FORMAT_MESSAGE_FROM_SYSTEM,
82 return GetLastError();
100 _CurMessageHandler = func;
120 _CurAssertHandler = func;
140 _CurTriggerHandler = func;
160 _CurProfileStartHandler = func;
180 _CurProfileStopHandler = func;
200 if (_CurMessageHandler !=
NULL) {
205 va_start(va, format);
206 vsprintf(buffer, format, va);
207 WWASSERT((strlen(buffer) <
sizeof(buffer)));
230 if (_CurMessageHandler !=
NULL) {
235 va_start(va, format);
236 vsprintf(buffer, format, va);
237 WWASSERT((strlen(buffer) <
sizeof(buffer)));
260 if (_CurMessageHandler !=
NULL) {
265 va_start(va, format);
266 vsprintf(buffer, format, va);
267 WWASSERT((strlen(buffer) <
sizeof(buffer)));
288void WWDebug_Assert_Fail(
const char * expr,
const char * file,
int line)
290 if (_CurAssertHandler !=
NULL) {
293 sprintf(buffer,
"%s (%d) Assert: %s\n",file,line,expr);
294 _CurAssertHandler(buffer);
301 if (Is_Trying_To_Exit()) {
305 char assertbuf[4096];
306 sprintf(assertbuf,
"Assert failed\n\n. File %s Line %d", file, line);
308 int code = MessageBoxA(
NULL, assertbuf,
"WWDebug_Assert_Fail", MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
310 if (code == IDABORT) {
315 if (code == IDRETRY) {
344void __cdecl _assert(
void *expr,
void *filename,
unsigned lineno)
346 WWDebug_Assert_Fail((
const char*)expr, (
const char*)filename, lineno);
368void WWDebug_Assert_Fail_Print(
const char * expr,
const char * file,
int line,
const char *
string)
370 if (_CurAssertHandler !=
NULL) {
373 sprintf(buffer,
"%s (%d) Assert: %s %s\n",file,line,expr,
string);
374 _CurAssertHandler(buffer);
399 if (_CurTriggerHandler !=
NULL) {
400 return _CurTriggerHandler(trigger_num);
421 if (_CurProfileStartHandler !=
NULL) {
422 _CurProfileStartHandler( title );
441 if (_CurProfileStopHandler !=
NULL) {
442 _CurProfileStopHandler( title );
461void WWDebug_DBWin32_Message_Handler(
const char * str )
470 heventDBWIN = OpenEvent(EVENT_MODIFY_STATE,
FALSE,
"DBWIN_BUFFER_READY");
478 heventData = OpenEvent(EVENT_MODIFY_STATE,
FALSE,
"DBWIN_DATA_READY");
482 CloseHandle(heventDBWIN);
486 hSharedFile = CreateFileMapping((HANDLE)-1,
NULL, PAGE_READWRITE, 0, 4096,
"DBWIN_BUFFER");
490 CloseHandle(heventDBWIN);
491 CloseHandle(heventData);
495 lpszSharedMem = (LPSTR)MapViewOfFile(hSharedFile, FILE_MAP_WRITE, 0, 0, 512);
499 CloseHandle(heventDBWIN);
500 CloseHandle(heventData);
505 WaitForSingleObject(heventDBWIN, INFINITE);
508 *((LPDWORD)lpszSharedMem) = 0;
509 wsprintf(lpszSharedMem +
sizeof(
DWORD),
"%s", str);
512 SetEvent(heventData);
515 CloseHandle(hSharedFile);
516 CloseHandle(heventData);
517 CloseHandle(heventDBWIN);
ProfileFunc WWDebug_Install_Profile_Stop_Handler(ProfileFunc func)
TriggerFunc WWDebug_Install_Trigger_Handler(TriggerFunc func)
void WWDebug_Printf_Warning(const char *format,...)
ProfileFunc WWDebug_Install_Profile_Start_Handler(ProfileFunc func)
void Convert_System_Error_To_String(int id, char *buffer, int buf_len)
PrintFunc WWDebug_Install_Message_Handler(PrintFunc func)
void WWDebug_Profile_Stop(const char *title)
AssertPrintFunc WWDebug_Install_Assert_Handler(AssertPrintFunc func)
bool WWDebug_Check_Trigger(int trigger_num)
void WWDebug_Profile_Start(const char *title)
void WWDebug_Printf(const char *format,...)
int Get_Last_System_Error()
void WWDebug_Printf_Error(const char *format,...)
@ WWDEBUG_TYPE_INFORMATION
void(* ProfileFunc)(const char *title)
void(* PrintFunc)(DebugType type, const char *message)
bool(* TriggerFunc)(int trigger_num)
void(* AssertPrintFunc)(const char *message)