From 4eb0e6ca3adea9f6139299316b0fac1f1369bd8e Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Mon, 3 Nov 2025 23:25:05 +0100 Subject: checkpoint --- lr_macros.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lr_macros.h (limited to 'lr_macros.h') diff --git a/lr_macros.h b/lr_macros.h new file mode 100644 index 0000000..a503ad5 --- /dev/null +++ b/lr_macros.h @@ -0,0 +1,52 @@ +#ifndef LR_MACROS_H +#define LR_MACROS_H + +// Zero +#if !defined(COMPILER_MSVC) +#define COMPILER_MSVC 0 +#endif +#if !defined(COMPILER_LLVM) +#define COMPILER_LLVM 0 +#endif +#if !defined(COMPILER_GNU) +#define COMPILER_GNU 0 +#endif + +// Detect compiler +#if __clang__ +# define COMPILER_CLANG 1 +#elif _MSC_VER +# define COMPILER_MSVC 1 +#elif __GNUC__ +# define COMPILER_GNU 1 +#endif + +// Push/Pop warnings +#if defined(COMPILER_GNU) +# define PUSH_WARNINGS \ +_Pragma("GCC diagnostic push") \ +_Pragma("GCC diagnostic ignored \"-Weverything\"") +# define POP_WARNINGS \ +_Pragma("GCC diagnostic pop") +#elif defined(COMPILER_CLANG) +# define PUSH_WARNINGS \ +_Pragma("clang diagnostic push") \ +_Pragma("clang diagnostic ignored \"-Weverything\"") +# define POP_WARNINGS \ +_Pragma("clang diagnostic pop") +#else +# define PUSH_WARNINGS \ +_Pragma("message \"No compatible compiler found\"") +# define POP_WARNINGS +#endif + +#define ArrayCount(Array) (sizeof(Array) / sizeof((Array)[0])) + +#define Assert(Expression) if(!(Expression)) { __asm__ volatile("int3"); } +#define DebugBreakOnce do { local_persist b32 X = false; Assert(X); X = true; } while(0) +#define NullExpression { int X = 0; } + +#define Min(A, B) (((A) < (B)) ? (A) : (B)) +#define Max(A, B) (((A) > (B)) ? (A) : (B)) + +#endif // LR_MACROS_H \ No newline at end of file -- cgit v1.2.3-70-g09d2