Files
basalt/include/basalt_defines.h

81 lines
2.4 KiB
C

#pragma once
#ifndef BASALT_ENABLE_ALLOC_RECORDS
#define BASALT_ENABLE_ALLOC_RECORDS 0
#endif
#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 <TargetConditionals.h>
#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