diff options
| author | nasr <nsrddyn@gmail.com> | 2026-10-09 12:37:56 +0200 |
|---|---|---|
| committer | nasr <nsrddyn@gmail.com> | 2026-10-09 12:37:56 +0200 |
| commit | 9a2fe3e091849518f3d2f79114ba67fa4fc63adf (patch) | |
| tree | 62678a2ff13752d8f8916aca8b6ff70d9bbd6d80 /source/base/base_core.h | |
| parent | e467661baf3d035fb4726559abee52a0c8897ab0 (diff) | |
feature: window with sqaures etc etcmain
Diffstat (limited to 'source/base/base_core.h')
| -rw-r--r-- | source/base/base_core.h | 73 |
1 files changed, 43 insertions, 30 deletions
diff --git a/source/base/base_core.h b/source/base/base_core.h index 9d0f5e7..d708ce1 100644 --- a/source/base/base_core.h +++ b/source/base/base_core.h | |||
| @@ -14,10 +14,31 @@ | |||
| 14 | 14 | ||
| 15 | //- architecture definitions | 15 | //- architecture definitions |
| 16 | 16 | ||
| 17 | #if defined(__arm__) || defined(__aarch64__) | 17 | #if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM64) |
| 18 | #define ARCH_ARM 1 | 18 | #define ARCH_ARM 1 |
| 19 | #elif defined(__i386__) || defined(__x86_64__) | 19 | #elif defined(__x86_64__) || defined(_M_X64) |
| 20 | #define ARCH_x86_64 1 | 20 | #define ARCH_x86_64 1 |
| 21 | #elif defined(__i386__) || defined(_M_IX86) | ||
| 22 | #define ARCH_X86 1 | ||
| 23 | #endif | ||
| 24 | |||
| 25 | #ifndef COMPILER_MSVC | ||
| 26 | #define COMPILER_MSVC 0 | ||
| 27 | #endif | ||
| 28 | #ifndef COMPILER_CLANG | ||
| 29 | #define COMPILER_CLANG 0 | ||
| 30 | #endif | ||
| 31 | #ifndef COMPILER_GCC | ||
| 32 | #define COMPILER_GCC 0 | ||
| 33 | #endif | ||
| 34 | #ifndef ARCH_ARM | ||
| 35 | #define ARCH_ARM 0 | ||
| 36 | #endif | ||
| 37 | #ifndef ARCH_x86_64 | ||
| 38 | #define ARCH_x86_64 0 | ||
| 39 | #endif | ||
| 40 | #ifndef ARCH_X86 | ||
| 41 | #define ARCH_X86 0 | ||
| 21 | #endif | 42 | #endif |
| 22 | 43 | ||
| 23 | //- compiler definitions | 44 | //- compiler definitions |
| @@ -39,26 +60,27 @@ | |||
| 39 | #define Unused(x) (void)(x) | 60 | #define Unused(x) (void)(x) |
| 40 | #define Nil 0 | 61 | #define Nil 0 |
| 41 | 62 | ||
| 42 | #define Deprecated __attribute__((__deprecated__)) | 63 | #define Deprecated [[deprecated]] |
| 43 | 64 | ||
| 44 | //- breakpoints | 65 | //- breakpoints |
| 45 | #if ARCH_ARM | ||
| 46 | #define breakpoint() __asm__ volatile("brk #0") | ||
| 47 | #elif ARCH_x86_64 | ||
| 48 | |||
| 49 | #if COMPILER_GCC | ||
| 50 | #define breakpoint() __asm__ volatile("int3") | ||
| 51 | #endif | ||
| 52 | #endif | ||
| 53 | |||
| 54 | #if COMPILER_MSVC | 66 | #if COMPILER_MSVC |
| 55 | #include <intrin.h> | 67 | #include <intrin.h> |
| 56 | #define breakpoint() __debugbreak() | 68 | #define breakpoint() __debugbreak() |
| 69 | #define Trap() __fastfail(0) | ||
| 70 | #elif COMPILER_CLANG | ||
| 71 | #define breakpoint() __builtin_debugtrap() | ||
| 72 | #define Trap() __builtin_trap() | ||
| 73 | #elif ARCH_ARM | ||
| 74 | #define breakpoint() __asm__ volatile("brk #0") | ||
| 75 | #define Trap() __builtin_trap() | ||
| 76 | #else | ||
| 77 | #define breakpoint() __asm__ volatile("int3") | ||
| 78 | #define Trap() __builtin_trap() | ||
| 57 | #endif | 79 | #endif |
| 58 | 80 | ||
| 59 | //- | 81 | //- |
| 60 | #define MemCpy(dest, src, len) memcpy((dest), (src), (len)) | 82 | #define MemCpy(dest, src, len) memcpy((dest), (src), (len)) |
| 61 | #define MemSet(dest, len) memset((dest), (1), (len)) | 83 | #define MemSet(dest, val, len) memset((dest), (val), (len)) |
| 62 | #define MemSetZero(dest, len) memset((dest), (0), (len)) | 84 | #define MemSetZero(dest, len) memset((dest), (0), (len)) |
| 63 | 85 | ||
| 64 | //- | 86 | //- |
| @@ -107,11 +129,17 @@ typedef intptr_t smm; | |||
| 107 | 129 | ||
| 108 | //- | 130 | //- |
| 109 | 131 | ||
| 110 | #define Assert(expression) _assert(expression) | 132 | #define Assert(expression) do { \ |
| 133 | if (!(expression)) { \ | ||
| 134 | breakpoint(); \ | ||
| 135 | Trap(); \ | ||
| 136 | } \ | ||
| 137 | } \ | ||
| 138 | while(0) | ||
| 111 | 139 | ||
| 112 | // NOTE: apparantly in macros this strinifys whataever you put after the # | 140 | // NOTE: apparantly in macros this strinifys whataever you put after the # |
| 113 | #define AssertLog(expression, ...) do { \ | 141 | #define AssertLog(expression, ...) do { \ |
| 114 | if (!expression) { \ | 142 | if (!(expression)) { \ |
| 115 | Log("%s:%d: %s\n", __FILE__, __LINE__, #expression); \ | 143 | Log("%s:%d: %s\n", __FILE__, __LINE__, #expression); \ |
| 116 | Log(__VA_ARGS__);\ | 144 | Log(__VA_ARGS__);\ |
| 117 | Assert(false);\ | 145 | Assert(false);\ |
| @@ -119,21 +147,6 @@ typedef intptr_t smm; | |||
| 119 | } \ | 147 | } \ |
| 120 | while(0) | 148 | while(0) |
| 121 | 149 | ||
| 122 | internal void _assert(bool expression); | ||
| 123 | |||
| 124 | |||
| 125 | internal void _assert(bool expression) | ||
| 126 | { | ||
| 127 | |||
| 128 | if (!expression) { | ||
| 129 | breakpoint(); | ||
| 130 | #if COMPILER_MSVC | ||
| 131 | __fastfail(0); | ||
| 132 | #else | ||
| 133 | __builtin_trap(); // NOTE: always stop, breakpoint() is empty on arm without DEBUG | ||
| 134 | #endif | ||
| 135 | } | ||
| 136 | } | ||
| 137 | 150 | ||
| 138 | 151 | ||
| 139 | 152 | ||
