You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

63 lines
2.0 KiB

#pragma once
#ifdef _VERBOSE
#pragma comment(lib, "ucrt.lib")
#include <windows.h>
#include <stdio.h>
static HANDLE log_handle;
char buffer[8192];
wchar_t bufferW[8192];
inline void init_logger()
{
log_handle = CreateFileA("doorstop.log", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
NULL);
}
inline void free_logger()
{
CloseHandle(log_handle);
}
#define LOG(message, ...) \
{ \
int len = _snprintf_s(buffer, sizeof(buffer)/sizeof(char), _TRUNCATE, message, __VA_ARGS__); \
WriteFile(log_handle, buffer, len, NULL, NULL); \
}
#else
inline void init_logger()
{
}
inline void free_logger()
{
}
#define LOG(message, ...)
#endif
#define ASSERT_F(test, message, ...) \
if(!(test)) \
{ \
_snwprintf_s(bufferW, sizeof(bufferW)/sizeof(wchar_t), _TRUNCATE, message, __VA_ARGS__); \
MessageBoxW(NULL, bufferW, L"Doorstop: Fatal", MB_OK | MB_ICONERROR); \
ExitProcess(EXIT_FAILURE); \
}
// A helper for cleaner error logging
#define ASSERT(test, message) \
if(!(test)) \
{ \
MessageBoxW(NULL, message, L"Doorstop: Fatal", MB_OK | MB_ICONERROR); \
ExitProcess(EXIT_FAILURE); \
}
#define ASSERT_SOFT(test, ...) \
if(!(test)) \
{ \
return __VA_ARGS__; \
}