typedef struct Arena{ OS_Memory memory; U64 len; U64 alignment; }Arena; typedef struct Arena_Checkpoint{ Arena *arena; SizeU pos; } Arena_Checkpoint; function B32 string_compare(String a, String b); function void *arena_push_size(Arena *a, SizeU size); function String arena_push_string_copy(Arena *arena, String string); #define arena_push_array(a,T,c) (T *)arena_push_size(a,sizeof(T)*(c)) #define arena_push_struct(a,T) arena_push_array(a,T,1) function Arena *arena_begin_scratch(); function void arena_end_scratch();