#pragma once #include #define STRINGIZE(x) STRINGIZE2(x) #define STRINGIZE2(x) #x #ifdef WEB #define assert_impl(cond, str) ((cond) || (EM_ASM({ assert(0, UTF8ToString($0) + UTF8ToString($1)); }, (__func__), (str)), 0)) #elif defined(DESKTOP) #define assert_impl(cond, str) ((cond) || (fputs("Assertion failed: " __FUNCTION__ str "\n", stderr), __debugbreak(), 0)) #else #error "Don't know how to assert for current platform configuration" #endif #ifdef NDEBUG #define game_assert(cond) ((void)0) #else #define game_assert(cond) assert_impl(cond, "(" __FILE__ ":" STRINGIZE(__LINE__) "): \"" #cond "\"") #endif #ifdef assert #undef assert #endif #define assert game_assert #define Log(...) { printf("%s Log %d | ", __FILE__, __LINE__); printf(__VA_ARGS__); }