#pragma once // ------------------------------------------------------------------------ // Freestanding headers #include #include #include #include #include #include // ------------------------------------------------------------------------ // Modern type aliases typedef char byte; typedef unsigned char ubyte, uchar; typedef signed char sbyte, schar; typedef unsigned long ulong; typedef signed long slong; typedef long long vlong; typedef unsigned long long uvlong; typedef signed long long svlong; typedef unsigned int uint; typedef uint8_t uint8; typedef uint16_t uint16; typedef uint32_t uint32; typedef uint64_t uint64; typedef int8_t int8; typedef int16_t int16; typedef int32_t int32; typedef int64_t int64; typedef float float32; typedef double float64; typedef uintptr_t uintptr; typedef intptr_t intptr; typedef int error; #define nil NULL // ------------------------------------------------------------------ // Global macros #define arrlen(Array) (sizeof(Array) / sizeof((Array)[0])) #define arrend(Array) ((Array) + arrlen(Array)) #define MAX(x, y) ((x) >= (y) ? (x) : (y)) #define MIN(x, y) ((x) < (y) ? (x) : (y))