chore(error): add STORM_ASSERT_VOID and improve assertion macros

This commit is contained in:
fallenoak 2020-11-21 20:42:18 -06:00
parent bc499d065c
commit a56c0c6fe0
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
2 changed files with 26 additions and 10 deletions

View file

@ -3,7 +3,7 @@
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
void SErrDisplayAppFatal(const char* format, ...) { [[ noreturn ]] void SErrDisplayAppFatal(const char* format, ...) {
va_list args; va_list args;
va_start(args, format); va_start(args, format);
vprintf(format, args); vprintf(format, args);

View file

@ -3,23 +3,39 @@
#include <cstdint> #include <cstdint>
#if defined(PLATFORM_MAC) || defined(PLATFORM_LINUX)
#define ERROR_INVALID_PARAMETER 0x57
#endif
#if defined(NDEBUG) #if defined(NDEBUG)
#define STORM_ASSERT(x) \ #define STORM_ASSERT(x) \
if (!(x)) { \ if (!(x)) { \
SErrSetLastError(0x57); \ SErrSetLastError(ERROR_INVALID_PARAMETER); \
return 0; \ return 0; \
} } \
(void)0
#define STORM_ASSERT_VOID(x) \
if (!(x)) { \
SErrSetLastError(ERROR_INVALID_PARAMETER); \
return; \
} \
(void)0
#else #else
#define STORM_ASSERT(x) \ #define STORM_ASSERT(x) \
if (!(x)) { \ if (!(x)) { \
SErrPrepareAppFatal(__FILE__, __LINE__); \ SErrPrepareAppFatal(__FILE__, __LINE__); \
SErrDisplayAppFatal(#x); \ SErrDisplayAppFatal(#x); \
SErrSetLastError(0x57); \ } \
return 0; \ (void)0
} #define STORM_ASSERT_VOID(x) \
if (!(x)) { \
SErrPrepareAppFatal(__FILE__, __LINE__); \
SErrDisplayAppFatal(#x); \
} \
(void)0
#endif #endif
void SErrDisplayAppFatal(const char* format, ...); [[noreturn]] void SErrDisplayAppFatal(const char* format, ...);
int32_t SErrDisplayError(uint32_t errorcode, const char* filename, int32_t linenumber, const char* description, int32_t recoverable, uint32_t exitcode, uint32_t a7); int32_t SErrDisplayError(uint32_t errorcode, const char* filename, int32_t linenumber, const char* description, int32_t recoverable, uint32_t exitcode, uint32_t a7);