#pragma once #define BASALT_ENABLE_ALLOC_RECORDS 1 #if defined(__clang__) || defined(__gcc__) #define STATIC_ASSERT(x,y) _Static_assert(x,y) #else #define STATIC_ASSERT(x,y) static_assert(x,y) #endif #ifndef NULL #define NULL ((void*)0) #endif #ifdef _MSC_VER #define debug_break() __debugbreak(); #else #define debug_break() __builtin_trap(); #endif typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef unsigned long long u64; typedef signed char i8; typedef signed short i16; typedef signed int i32; typedef signed long long i64; typedef float f32; typedef double f64; STATIC_ASSERT(sizeof(u8) == 1, "Expected sizeof(u8) == 1"); STATIC_ASSERT(sizeof(u16) == 2, "Expected sizeof(u16) == 2"); STATIC_ASSERT(sizeof(u32) == 4, "Expected sizeof(u32) == 4"); STATIC_ASSERT(sizeof(u64) == 8, "Expected sizeof(u64) == 8"); STATIC_ASSERT(sizeof(i8) == 1, "Expected sizeof(i8) == 1"); STATIC_ASSERT(sizeof(i16) == 2, "Expected sizeof(i16) == 2"); STATIC_ASSERT(sizeof(i32) == 4, "Expected sizeof(i32) == 4"); STATIC_ASSERT(sizeof(i64) == 8, "Expected sizeof(i64) == 8"); STATIC_ASSERT(sizeof(f32) == 4, "Expected sizeof(f32) == 4"); STATIC_ASSERT(sizeof(f64) == 8, "Expected sizeof(f64) == 8"); #define BCLAMP(val, min, max) (val) = (val) > (max) ? (max) : (val) < (min) ? (min) : (val) #define BCLAMP_EXTENT(val, min, max) \ (val).width = ((val).width > (max).width) ? (max).width : ((val).width < (min).width) ? (min).width : (val).width; \ (val).height = ((val).height > (max).height) ? (max).height : ((val).height < (min).height) ? (min).height : (val).height #if defined(WIN32) || defined(_WIN32) || defined (__WIN32__) #define BPLATFORM_WINDOWS 1 #ifndef _WIN64 #error "Only 64-bit windows is supported" #endif #elif defined(__linux__) || defined(__gnu_linux__) #define BPLATFORM_LINUX 1 #if defined(__ANDROID__) #define BPLATFORM_ANDROID 1 #endif #elif defined(__unix__) #define BPLATFORM_UNIX 1 #elif defined(_POSIX_VERSION) #define BPLATFORM_POSIX 1 #elif defined(__APPLE__) #define BPLATFORM_APPLE 1 #include #if TARGET_IPHONE_SIMULATOR #define BPLATFORM_IOS 1 #define BPLATFORM_IOS_SIMULATOR 1 #elif TARGET_OS_IPHONE #define BPLATFORM_IOS 1 #elif TARGET_OS_MAC #define BPLATFORM_MACOS 1 #else #error "Unknown Apple Architecture" #endif #else #error "Unknown platform #endif