#pragma once #include #include typedef uint8_t u8; typedef uint16_t u16; typedef int16_t i16; typedef int32_t i32; typedef uint32_t u32; typedef uint64_t u64; typedef float f32; typedef double f64; typedef uintptr_t uptr; typedef char sbyte; typedef ptrdiff_t size; typedef size_t usize; #define OPTION(type, typeName) \ struct { \ enum {NONE, SOME} tag; \ union { \ u8 none; \ type typeName; \ } some; \ }