Static_Array :: struct (Data_Type : Type, Count: s64) { data: [Count] Data_Type; count: s64; } array_add :: (static_array: *Static_Array, value: static_array.Data_Type) { assert(static_array.count < static_array.Count); static_array.data[static_array.count] = value; static_array.count += 1; } for_expansion :: (static_array: *Static_Array, body: Code, flags: For_Flags) #expand { for `it_index: 0..static_array.count-1 { #if flags & .POINTER { `it := *static_array.data[it_index]; } else { `it := static_array.data[it_index]; } #insert body; } } array_contains :: (static_array: Static_Array, value: static_array.Data_Type) -> bool { for static_array { if it == value return true; } return false; } operator [] :: (static_array: Static_Array, index: int) -> static_array.Data_Type { return static_array.data[index]; } operator []= :: (static_array: *Static_Array, index: int, value: static_array.Data_Type) { static_array.data[index] = value; }