package bug import "core:fmt" Dimension :: enum { D1, D2, D3, } View_Type :: enum { D1, D1_Array, D2, D2_Array, D3, Cube, Cube_Array, } @(private) DIMENSION_COUNT :: [Dimension]int { .D1 = 1, .D2 = 2, .D3 = 3, } @(private) VIEW_DIMENSION :: [View_Type]Dimension { .D1 = .D1, .D1_Array = .D1, .D2 = .D2, .D2_Array = .D2, .D3 = .D3, .Cube = .D2, .Cube_Array = .D2, } Image1 :: struct($DIM: Dimension) { size: [DIMENSION_COUNT[DIM]]int, } Image2 :: struct($DIM: Dimension) { size: [1 + (int)(DIM)]int, } Image_View :: struct($TYPE: View_Type) { image: ^Image2(VIEW_DIMENSION[TYPE]), } create_image_view :: proc($TYPE: View_Type) -> Image_View(TYPE) { return {} } main :: proc() { view2 := create_image_view(.Cube) fmt.println(view2) }