#ifndef TYPES_H #define TYPES_H typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef unsigned long long u64; typedef signed char i8; typedef short i16; typedef int i32; typedef long long i64; typedef float f32; typedef double f64; typedef unsigned long usize; typedef long isize; typedef u8 bool; #define true 1 #define false 0 #ifndef NULL #define NULL ((void *)0) #endif #define U8_MIN 0 #define U8_MAX 255 #define U16_MIN 0 #define U16_MAX 65535 #define U32_MIN 0 #define U32_MAX 4294967295U #define I8_MIN (-128) #define I8_MAX 127 #define I16_MIN (-32768) #define I16_MAX 32767 #define I32_MIN -2147483648 #define I32_MAX 2147483647 /* Use appropriate syntax for no-discard function attribute, depending * on C standard used. */ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201710L #define __nodiscard [[nodiscard]] #else #define __nodiscard __attribute__((warn_unused_result)) #endif #endif