From a56c0c6fe0335ffb1f9f0e747a79b0430fbac161 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sat, 21 Nov 2020 20:42:18 -0600 Subject: [PATCH] chore(error): add STORM_ASSERT_VOID and improve assertion macros --- storm/Error.cpp | 2 +- storm/Error.hpp | 34 +++++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/storm/Error.cpp b/storm/Error.cpp index 54eb48b..ee20af8 100644 --- a/storm/Error.cpp +++ b/storm/Error.cpp @@ -3,7 +3,7 @@ #include #include -void SErrDisplayAppFatal(const char* format, ...) { +[[ noreturn ]] void SErrDisplayAppFatal(const char* format, ...) { va_list args; va_start(args, format); vprintf(format, args); diff --git a/storm/Error.hpp b/storm/Error.hpp index 38ec2af..f6f2be7 100644 --- a/storm/Error.hpp +++ b/storm/Error.hpp @@ -3,23 +3,39 @@ #include +#if defined(PLATFORM_MAC) || defined(PLATFORM_LINUX) +#define ERROR_INVALID_PARAMETER 0x57 +#endif + #if defined(NDEBUG) -#define STORM_ASSERT(x) \ - if (!(x)) { \ - SErrSetLastError(0x57); \ - return 0; \ - } +#define STORM_ASSERT(x) \ + if (!(x)) { \ + SErrSetLastError(ERROR_INVALID_PARAMETER); \ + return 0; \ + } \ + (void)0 +#define STORM_ASSERT_VOID(x) \ + if (!(x)) { \ + SErrSetLastError(ERROR_INVALID_PARAMETER); \ + return; \ + } \ + (void)0 #else #define STORM_ASSERT(x) \ if (!(x)) { \ SErrPrepareAppFatal(__FILE__, __LINE__); \ SErrDisplayAppFatal(#x); \ - SErrSetLastError(0x57); \ - return 0; \ - } + } \ + (void)0 +#define STORM_ASSERT_VOID(x) \ + if (!(x)) { \ + SErrPrepareAppFatal(__FILE__, __LINE__); \ + SErrDisplayAppFatal(#x); \ + } \ + (void)0 #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);