[Basic] NFC: Factor out _FILENAME_FOR_ASSERT macro

This commit is contained in:
Hamish Knight
2025-05-19 20:55:01 +01:00
parent 92641253f7
commit ffb474e0b9

View File

@@ -24,6 +24,13 @@
#define ASSERT_UNLIKELY(expression) ((expression))
#endif
// Visual Studio doesn't have __FILE_NAME__
#ifdef __FILE_NAME__
#define _FILENAME_FOR_ASSERT __FILE_NAME__
#else
#define _FILENAME_FOR_ASSERT __FILE__
#endif
// ================================ Mandatory Asserts ================================
// `ASSERT(expr)`:
@@ -41,27 +48,13 @@
// that are more expensive than you think. You can switch those to
// `CONDITIONAL_ASSERT` or `DEBUG_ASSERT` as needed.
// Visual Studio doesn't have __FILE_NAME__
#ifdef __FILE_NAME__
#define ASSERT(expr) \
do { \
if (ASSERT_UNLIKELY(!(expr))) { \
ASSERT_failure(#expr, __FILE_NAME__, __LINE__, __func__); \
} \
#define ASSERT(expr) \
do { \
if (ASSERT_UNLIKELY(!(expr))) { \
ASSERT_failure(#expr, _FILENAME_FOR_ASSERT, __LINE__, __func__); \
} \
} while (0)
#else
#define ASSERT(expr) \
do { \
if (ASSERT_UNLIKELY(!(expr))) { \
ASSERT_failure(#expr, __FILE__, __LINE__, __func__); \
} \
} while (0)
#endif
// Function that reports the actual failure when it occurs.
void ASSERT_failure(const char *expr, const char *file, int line, const char *func);