/****************************************************************************** * File - common_defs.h * Author - Joey Pollack * Date - 2022/05/11 (y/m/d) * Mod Date - 2022/05/11 (y/m/d) * Description - Common definitions for the engine ******************************************************************************/ #ifndef LUNARIUM_COMMON_DEFS_H_ #define LUNARIUM_COMMON_DEFS_H_ // intrinsic type short-hands // The idea for this was taken from the KOHI engine // https://github.com/travisvroman/kohi typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef unsigned long long u64; typedef char i8; typedef short i16; typedef int i32; typedef long long i64; typedef float f32; typedef double f64; // verify the type sizes static_assert(sizeof(u8) == 1, "Expected u8 to be 1 byte"); static_assert(sizeof(u16) == 2, "Expected u16 to be 2 bytes"); static_assert(sizeof(u32) == 4, "Expected u32 to be 4 bytes"); static_assert(sizeof(u64) == 8, "Expected u64 to be 8 bytes"); static_assert(sizeof(i8) == 1, "Expected i8 to be 1 byte"); static_assert(sizeof(i16) == 2, "Expected i16 to be 2 bytes"); static_assert(sizeof(i32) == 4, "Expected i32 to be 4 bytes"); static_assert(sizeof(i64) == 8, "Expected i64 to be 8 bytes"); static_assert(sizeof(f32) == 4, "Expected f32 to be 4 bytes"); static_assert(sizeof(f64) == 8, "Expected f64 to be 8 bytes"); // Platform detection #if defined(_WIN32) || defined(_WIN64) #define LPLATFORM_WINDOWS #elif defined(__linux__) || defined(__gnu_linux__) #define LPLATFORM_LINUX #else #error "Unsupported platform. Must build on windows or linux" #endif #endif // LUNARIUM_COMMON_DEFS_H_