diff options
| author | Zac Pierson <zacpiersonhehe@gmail.com> | 2017-02-15 10:21:38 -0600 |
|---|---|---|
| committer | Zac Pierson <zacpiersonhehe@gmail.com> | 2017-02-15 10:21:38 -0600 |
| commit | aaa4dd5c363f2cb4643cd6489108d5be7c9d17de (patch) | |
| tree | cb6b93596135d2a7f868acc73fcea1536e3d7ab9 /core | |
| parent | 9d19ee7e4c285d5d881570be3328d81bdff40368 (diff) | |
| parent | 71100ed427ee2eec8d8a9d4d9616102738097e80 (diff) | |
Merge https://github.com/gingerBill/odin
Diffstat (limited to 'core')
| -rw-r--r-- | core/_preload.odin | 27 | ||||
| -rw-r--r-- | core/fmt.odin | 23 | ||||
| -rw-r--r-- | core/hash.odin | 8 | ||||
| -rw-r--r-- | core/opengl.odin | 198 | ||||
| -rw-r--r-- | core/sys/windows.odin | 13 | ||||
| -rw-r--r-- | core/types.odin | 2 | ||||
| -rw-r--r-- | core/utf8.odin | 4 |
7 files changed, 144 insertions, 131 deletions
diff --git a/core/_preload.odin b/core/_preload.odin index 7ff3bc44f..28cd761f4 100644 --- a/core/_preload.odin +++ b/core/_preload.odin @@ -315,7 +315,11 @@ __assert :: proc(file: string, line, column: int, msg: string) #inline { file, line, column, msg); __debug_trap(); } - +__panic :: proc(file: string, line, column: int, msg: string) #inline { + fmt.fprintf(os.stderr, "%s(%d:%d) Panic: %s\n", + file, line, column, msg); + __debug_trap(); +} __bounds_check_error :: proc(file: string, line, column: int, index, count: int) { if 0 <= index && index < count { return; @@ -341,6 +345,13 @@ __substring_expr_error :: proc(file: string, line, column: int, low, high: int) file, line, column, low, high); __debug_trap(); } +__union_cast_check :: proc(ok: bool, file: string, line, column: int, from, to: ^Type_Info) { + if !ok { + fmt.fprintf(os.stderr, "%s(%d:%d) Invalid `union_cast` from %T to %T\n", + file, line, column, from, to); + __debug_trap(); + } +} __string_decode_rune :: proc(s: string) -> (rune, int) #inline { return utf8.decode_rune(s); @@ -370,7 +381,7 @@ Raw_Dynamic_Array :: struct #ordered { }; Raw_Dynamic_Map :: struct #ordered { - hashes: [...]int, + hashes: [dynamic]int, entries: Raw_Dynamic_Array, }; @@ -449,6 +460,8 @@ __dynamic_array_append_nothing :: proc(array_: rawptr, elem_size, elem_align: in } +// Map stuff + __default_hash :: proc(data: []byte) -> u64 { return hash.fnv64a(data); } @@ -650,13 +663,3 @@ __dynamic_map_erase :: proc(using h: __Map_Header, fr: __Map_Find_Result) { m.hashes[last.hash_index] = fr.entry_index; } } - - -__print_ti_ptr :: proc(ti: ^Type_Info) { - fmt.println(ti); - match e in ti { - case Type_Info.Enum: - fmt.println(e.names); - } -} - diff --git a/core/fmt.odin b/core/fmt.odin index 542f951e9..22e7eddd4 100644 --- a/core/fmt.odin +++ b/core/fmt.odin @@ -116,7 +116,11 @@ buffer_write_type :: proc(buf: ^Buffer, ti: ^Type_Info) { case ti == type_info(int): buffer_write_string(buf, "int"); case ti == type_info(uint): buffer_write_string(buf, "uint"); default: - buffer_write_string(buf, if info.signed { give "i" } else { give "u"}); + if info.signed { + buffer_write_string(buf, "i"); + } else { + buffer_write_string(buf, "u"); + } fi := Fmt_Info{buf = buf}; fmt_int(^fi, cast(u64)(8*info.size), false, 'd'); } @@ -140,7 +144,7 @@ buffer_write_type :: proc(buf: ^Buffer, ti: ^Type_Info) { if info.params == nil { buffer_write_string(buf, "()"); } else { - t := cast(^Tuple)info.params; + t := union_cast(^Tuple)info.params; buffer_write_string(buf, "("); for type, i in t.types { if i > 0 { buffer_write_string(buf, ", "); } @@ -155,10 +159,9 @@ buffer_write_type :: proc(buf: ^Buffer, ti: ^Type_Info) { case Tuple: count := info.names.count; if count != 1 { buffer_write_string(buf, "("); } - for i in 0..<count { + for name, i in info.names { if i > 0 { buffer_write_string(buf, ", "); } - name := info.names[i]; type := info.types[i]; if name.count > 0 { @@ -393,7 +396,11 @@ fmt_bad_verb :: proc(using fi: ^Fmt_Info, verb: rune) { fmt_bool :: proc(using fi: ^Fmt_Info, b: bool, verb: rune) { match verb { case 't', 'v': - buffer_write_string(buf, if b { give "true" } else { give "false" }); + if b { + buffer_write_string(buf, "true"); + } else { + buffer_write_string(buf, "false"); + } default: fmt_bad_verb(fi, verb); } @@ -790,10 +797,10 @@ fmt_value :: proc(fi: ^Fmt_Info, v: any, verb: rune) { buffer_write_string(fi.buf, "map["); defer buffer_write_byte(fi.buf, ']'); entries := ^(cast(^Raw_Dynamic_Map)v.data).entries; - gs, gs_ok := union_cast(^Struct)type_info_base(info.generated_struct); assert(gs_ok); - ed, ed_ok := union_cast(^Dynamic_Array)type_info_base(gs.types[1]); assert(ed_ok); + gs := union_cast(^Struct)type_info_base(info.generated_struct); + ed := union_cast(^Dynamic_Array)type_info_base(gs.types[1]); - entry_type, et_ok := union_cast(^Struct)ed.elem; assert(et_ok); + entry_type := union_cast(^Struct)ed.elem; entry_size := ed.elem_size; for i in 0..<entries.count { if i > 0 { diff --git a/core/hash.odin b/core/hash.odin index ac421cda9..de1ffd0b6 100644 --- a/core/hash.odin +++ b/core/hash.odin @@ -1,14 +1,14 @@ crc32 :: proc(data: []byte) -> u32 { result := ~cast(u32)0; for b in data { - result = result>>8 ~ __CRC32_TABLE[(result ~ cast(u32)b) & 0xff]; + result = result>>8 ~ _crc32_table[(result ~ cast(u32)b) & 0xff]; } return ~result; } crc64 :: proc(data: []byte) -> u64 { result := ~cast(u64)0; for b in data { - result = result>>8 ~ __CRC64_TABLE[(result ~ cast(u64)b) & 0xff]; + result = result>>8 ~ _crc64_table[(result ~ cast(u64)b) & 0xff]; } return ~result; } @@ -202,7 +202,7 @@ murmur64 :: proc(data: []byte) -> u64 { } -__CRC32_TABLE := [256]u32{ +immutable _crc32_table := [256]u32{ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, @@ -268,7 +268,7 @@ __CRC32_TABLE := [256]u32{ 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, }; -__CRC64_TABLE := [256]u64{ +immutable _crc64_table := [256]u64{ 0x0000000000000000, 0x42f0e1eba9ea3693, 0x85e1c3d753d46d26, 0xc711223cfa3e5bb5, 0x493366450e42ecdf, 0x0bc387aea7a8da4c, 0xccd2a5925d9681f9, 0x8e224479f47cb76a, 0x9266cc8a1c85d9be, 0xd0962d61b56fef2d, 0x17870f5d4f51b498, 0x5577eeb6e6bb820b, diff --git a/core/opengl.odin b/core/opengl.odin index e76e63f06..2821740b4 100644 --- a/core/opengl.odin +++ b/core/opengl.odin @@ -20,13 +20,13 @@ Viewport :: proc(x, y, width, height: i32) #foreign lib "gl Ortho :: proc(left, right, bottom, top, near, far: f64) #foreign lib "glOrtho"; Color3f :: proc(r, g, b: f32) #foreign lib "glColor3f"; Vertex3f :: proc(x, y, z: f32) #foreign lib "glVertex3f"; +GetError :: proc() -> i32 #foreign lib "glGetError"; +GetString :: proc(name: i32) -> ^byte #foreign lib "glGetString"; +GetIntegerv :: proc(name: i32, v: ^i32) #foreign lib "glGetIntegerv"; +TexCoord2f :: proc(x, y: f32) #foreign lib "glTexCoord2f"; TexImage2D :: proc(target, level, internal_format, width, height, border, - format, _type: i32, pixels: rawptr) #foreign lib "glTexImage2D"; - -GetError :: proc() -> i32 #foreign lib "glGetError"; -GetString :: proc(name: i32) -> ^byte #foreign lib "glGetString"; -GetIntegerv :: proc(name: i32, v: ^i32) #foreign lib "glGetIntegerv"; + format, type: i32, pixels: rawptr) #foreign lib "glTexImage2D"; string_data :: proc(s: string) -> ^u8 #inline { return ^s[0]; } @@ -42,114 +42,114 @@ GetProcAddress :: proc(name: string) -> proc() #cc_c { return res; } -GenBuffers: proc(count: i32, buffers: ^u32) #cc_c; -GenVertexArrays: proc(count: i32, buffers: ^u32) #cc_c; -GenSamplers: proc(count: i32, buffers: ^u32) #cc_c; -BindBuffer: proc(target: i32, buffer: u32) #cc_c; -BindVertexArray: proc(buffer: u32) #cc_c; -BindSampler: proc(position: i32, sampler: u32) #cc_c; -BufferData: proc(target: i32, size: int, data: rawptr, usage: i32) #cc_c; -BufferSubData: proc(target: i32, offset, size: int, data: rawptr) #cc_c; +GenBuffers: proc(count: i32, buffers: ^u32) #cc_c; +GenVertexArrays: proc(count: i32, buffers: ^u32) #cc_c; +GenSamplers: proc(count: i32, buffers: ^u32) #cc_c; +BindBuffer: proc(target: i32, buffer: u32) #cc_c; +BindVertexArray: proc(buffer: u32) #cc_c; +BindSampler: proc(position: i32, sampler: u32) #cc_c; +BufferData: proc(target: i32, size: int, data: rawptr, usage: i32) #cc_c; +BufferSubData: proc(target: i32, offset, size: int, data: rawptr) #cc_c; -DrawArrays: proc(mode, first: i32, count: u32) #cc_c; -DrawElements: proc(mode: i32, count: u32, type_: i32, indices: rawptr) #cc_c; +DrawArrays: proc(mode, first: i32, count: u32) #cc_c; +DrawElements: proc(mode: i32, count: u32, type_: i32, indices: rawptr) #cc_c; -MapBuffer: proc(target, access: i32) -> rawptr #cc_c; -UnmapBuffer: proc(target: i32) #cc_c; +MapBuffer: proc(target, access: i32) -> rawptr #cc_c; +UnmapBuffer: proc(target: i32) #cc_c; -VertexAttribPointer: proc(index: u32, size, type_: i32, normalized: i32, stride: u32, pointer: rawptr) #cc_c; +VertexAttribPointer: proc(index: u32, size, type_: i32, normalized: i32, stride: u32, pointer: rawptr) #cc_c; EnableVertexAttribArray: proc(index: u32) #cc_c; -CreateShader: proc(shader_type: i32) -> u32 #cc_c; -ShaderSource: proc(shader: u32, count: u32, str: ^^byte, length: ^i32) #cc_c; -CompileShader: proc(shader: u32) #cc_c; -CreateProgram: proc() -> u32 #cc_c; -AttachShader: proc(program, shader: u32) #cc_c; -DetachShader: proc(program, shader: u32) #cc_c; -DeleteShader: proc(shader: u32) #cc_c; -LinkProgram: proc(program: u32) #cc_c; -UseProgram: proc(program: u32) #cc_c; -DeleteProgram: proc(program: u32) #cc_c; - - -GetShaderiv: proc(shader: u32, pname: i32, params: ^i32) #cc_c; -GetProgramiv: proc(program: u32, pname: i32, params: ^i32) #cc_c; -GetShaderInfoLog: proc(shader: u32, max_length: u32, length: ^u32, info_long: ^byte) #cc_c; -GetProgramInfoLog: proc(program: u32, max_length: u32, length: ^u32, info_long: ^byte) #cc_c; - -ActiveTexture: proc(texture: i32) #cc_c; -GenerateMipmap: proc(target: i32) #cc_c; - -SamplerParameteri: proc(sampler: u32, pname: i32, param: i32) #cc_c; -SamplerParameterf: proc(sampler: u32, pname: i32, param: f32) #cc_c; -SamplerParameteriv: proc(sampler: u32, pname: i32, params: ^i32) #cc_c; -SamplerParameterfv: proc(sampler: u32, pname: i32, params: ^f32) #cc_c; -SamplerParameterIiv: proc(sampler: u32, pname: i32, params: ^i32) #cc_c; -SamplerParameterIuiv: proc(sampler: u32, pname: i32, params: ^u32) #cc_c; - - -Uniform1i: proc(loc: i32, v0: i32) #cc_c; -Uniform2i: proc(loc: i32, v0, v1: i32) #cc_c; -Uniform3i: proc(loc: i32, v0, v1, v2: i32) #cc_c; -Uniform4i: proc(loc: i32, v0, v1, v2, v3: i32) #cc_c; -Uniform1f: proc(loc: i32, v0: f32) #cc_c; -Uniform2f: proc(loc: i32, v0, v1: f32) #cc_c; -Uniform3f: proc(loc: i32, v0, v1, v2: f32) #cc_c; -Uniform4f: proc(loc: i32, v0, v1, v2, v3: f32) #cc_c; -UniformMatrix4fv: proc(loc: i32, count: u32, transpose: i32, value: ^f32) #cc_c; - -GetUniformLocation: proc(program: u32, name: ^byte) -> i32 #cc_c; +CreateShader: proc(shader_type: i32) -> u32 #cc_c; +ShaderSource: proc(shader: u32, count: u32, str: ^^byte, length: ^i32) #cc_c; +CompileShader: proc(shader: u32) #cc_c; +CreateProgram: proc() -> u32 #cc_c; +AttachShader: proc(program, shader: u32) #cc_c; +DetachShader: proc(program, shader: u32) #cc_c; +DeleteShader: proc(shader: u32) #cc_c; +LinkProgram: proc(program: u32) #cc_c; +UseProgram: proc(program: u32) #cc_c; +DeleteProgram: proc(program: u32) #cc_c; + + +GetShaderiv: proc(shader: u32, pname: i32, params: ^i32) #cc_c; +GetProgramiv: proc(program: u32, pname: i32, params: ^i32) #cc_c; +GetShaderInfoLog: proc(shader: u32, max_length: u32, length: ^u32, info_long: ^byte) #cc_c; +GetProgramInfoLog: proc(program: u32, max_length: u32, length: ^u32, info_long: ^byte) #cc_c; + +ActiveTexture: proc(texture: i32) #cc_c; +GenerateMipmap: proc(target: i32) #cc_c; + +SamplerParameteri: proc(sampler: u32, pname: i32, param: i32) #cc_c; +SamplerParameterf: proc(sampler: u32, pname: i32, param: f32) #cc_c; +SamplerParameteriv: proc(sampler: u32, pname: i32, params: ^i32) #cc_c; +SamplerParameterfv: proc(sampler: u32, pname: i32, params: ^f32) #cc_c; +SamplerParameterIiv: proc(sampler: u32, pname: i32, params: ^i32) #cc_c; +SamplerParameterIuiv: proc(sampler: u32, pname: i32, params: ^u32) #cc_c; + + +Uniform1i: proc(loc: i32, v0: i32) #cc_c; +Uniform2i: proc(loc: i32, v0, v1: i32) #cc_c; +Uniform3i: proc(loc: i32, v0, v1, v2: i32) #cc_c; +Uniform4i: proc(loc: i32, v0, v1, v2, v3: i32) #cc_c; +Uniform1f: proc(loc: i32, v0: f32) #cc_c; +Uniform2f: proc(loc: i32, v0, v1: f32) #cc_c; +Uniform3f: proc(loc: i32, v0, v1, v2: f32) #cc_c; +Uniform4f: proc(loc: i32, v0, v1, v2, v3: f32) #cc_c; +UniformMatrix4fv: proc(loc: i32, count: u32, transpose: i32, value: ^f32) #cc_c; + +GetUniformLocation: proc(program: u32, name: ^byte) -> i32 #cc_c; init :: proc() { set_proc_address :: proc(p: rawptr, name: string) #inline { (cast(^(proc() #cc_c))p)^ = GetProcAddress(name); } - set_proc_address(^GenBuffers, "glGenBuffers\x00"); - set_proc_address(^GenVertexArrays, "glGenVertexArrays\x00"); - set_proc_address(^GenSamplers, "glGenSamplers\x00"); - set_proc_address(^BindBuffer, "glBindBuffer\x00"); - set_proc_address(^BindSampler, "glBindSampler\x00"); - set_proc_address(^BindVertexArray, "glBindVertexArray\x00"); - set_proc_address(^BufferData, "glBufferData\x00"); - set_proc_address(^BufferSubData, "glBufferSubData\x00"); + set_proc_address(^GenBuffers, "glGenBuffers\x00"); + set_proc_address(^GenVertexArrays, "glGenVertexArrays\x00"); + set_proc_address(^GenSamplers, "glGenSamplers\x00"); + set_proc_address(^BindBuffer, "glBindBuffer\x00"); + set_proc_address(^BindSampler, "glBindSampler\x00"); + set_proc_address(^BindVertexArray, "glBindVertexArray\x00"); + set_proc_address(^BufferData, "glBufferData\x00"); + set_proc_address(^BufferSubData, "glBufferSubData\x00"); - set_proc_address(^DrawArrays, "glDrawArrays\x00"); - set_proc_address(^DrawElements, "glDrawElements\x00"); + set_proc_address(^DrawArrays, "glDrawArrays\x00"); + set_proc_address(^DrawElements, "glDrawElements\x00"); - set_proc_address(^MapBuffer, "glMapBuffer\x00"); - set_proc_address(^UnmapBuffer, "glUnmapBuffer\x00"); + set_proc_address(^MapBuffer, "glMapBuffer\x00"); + set_proc_address(^UnmapBuffer, "glUnmapBuffer\x00"); set_proc_address(^VertexAttribPointer, "glVertexAttribPointer\x00"); set_proc_address(^EnableVertexAttribArray, "glEnableVertexAttribArray\x00"); - set_proc_address(^CreateShader, "glCreateShader\x00"); - set_proc_address(^ShaderSource, "glShaderSource\x00"); - set_proc_address(^CompileShader, "glCompileShader\x00"); - set_proc_address(^CreateProgram, "glCreateProgram\x00"); - set_proc_address(^AttachShader, "glAttachShader\x00"); - set_proc_address(^DetachShader, "glDetachShader\x00"); - set_proc_address(^DeleteShader, "glDeleteShader\x00"); - set_proc_address(^LinkProgram, "glLinkProgram\x00"); - set_proc_address(^UseProgram, "glUseProgram\x00"); - set_proc_address(^DeleteProgram, "glDeleteProgram\x00"); - - set_proc_address(^GetShaderiv, "glGetShaderiv\x00"); - set_proc_address(^GetProgramiv, "glGetProgramiv\x00"); - set_proc_address(^GetShaderInfoLog, "glGetShaderInfoLog\x00"); - set_proc_address(^GetProgramInfoLog, "glGetProgramInfoLog\x00"); - - set_proc_address(^ActiveTexture, "glActiveTexture\x00"); - set_proc_address(^GenerateMipmap, "glGenerateMipmap\x00"); - - set_proc_address(^Uniform1i, "glUniform1i\x00"); - set_proc_address(^UniformMatrix4fv, "glUniformMatrix4fv\x00"); - - set_proc_address(^GetUniformLocation, "glGetUniformLocation\x00"); - - set_proc_address(^SamplerParameteri, "glSamplerParameteri\x00"); - set_proc_address(^SamplerParameterf, "glSamplerParameterf\x00"); - set_proc_address(^SamplerParameteriv, "glSamplerParameteriv\x00"); - set_proc_address(^SamplerParameterfv, "glSamplerParameterfv\x00"); - set_proc_address(^SamplerParameterIiv, "glSamplerParameterIiv\x00"); - set_proc_address(^SamplerParameterIuiv, "glSamplerParameterIuiv\x00"); + set_proc_address(^CreateShader, "glCreateShader\x00"); + set_proc_address(^ShaderSource, "glShaderSource\x00"); + set_proc_address(^CompileShader, "glCompileShader\x00"); + set_proc_address(^CreateProgram, "glCreateProgram\x00"); + set_proc_address(^AttachShader, "glAttachShader\x00"); + set_proc_address(^DetachShader, "glDetachShader\x00"); + set_proc_address(^DeleteShader, "glDeleteShader\x00"); + set_proc_address(^LinkProgram, "glLinkProgram\x00"); + set_proc_address(^UseProgram, "glUseProgram\x00"); + set_proc_address(^DeleteProgram, "glDeleteProgram\x00"); + + set_proc_address(^GetShaderiv, "glGetShaderiv\x00"); + set_proc_address(^GetProgramiv, "glGetProgramiv\x00"); + set_proc_address(^GetShaderInfoLog, "glGetShaderInfoLog\x00"); + set_proc_address(^GetProgramInfoLog, "glGetProgramInfoLog\x00"); + + set_proc_address(^ActiveTexture, "glActiveTexture\x00"); + set_proc_address(^GenerateMipmap, "glGenerateMipmap\x00"); + + set_proc_address(^Uniform1i, "glUniform1i\x00"); + set_proc_address(^UniformMatrix4fv, "glUniformMatrix4fv\x00"); + + set_proc_address(^GetUniformLocation, "glGetUniformLocation\x00"); + + set_proc_address(^SamplerParameteri, "glSamplerParameteri\x00"); + set_proc_address(^SamplerParameterf, "glSamplerParameterf\x00"); + set_proc_address(^SamplerParameteriv, "glSamplerParameteriv\x00"); + set_proc_address(^SamplerParameterfv, "glSamplerParameterfv\x00"); + set_proc_address(^SamplerParameterIiv, "glSamplerParameterIiv\x00"); + set_proc_address(^SamplerParameterIuiv, "glSamplerParameterIuiv\x00"); } diff --git a/core/sys/windows.odin b/core/sys/windows.odin index 06f84cdc9..ec126b426 100644 --- a/core/sys/windows.odin +++ b/core/sys/windows.odin @@ -41,11 +41,14 @@ WS_CAPTION :: 0x00C00000; WS_VISIBLE :: 0x10000000; WS_OVERLAPPEDWINDOW :: WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX; -WM_DESTROY :: 0x0002; -WM_CLOSE :: 0x0010; -WM_QUIT :: 0x0012; -WM_KEYDOWN :: 0x0100; -WM_KEYUP :: 0x0101; +WM_DESTROY :: 0x0002; +WM_SIZE :: 0x0005; +WM_CLOSE :: 0x0010; +WM_ACTIVATEAPP :: 0x001C; +WM_QUIT :: 0x0012; +WM_KEYDOWN :: 0x0100; +WM_KEYUP :: 0x0101; +WM_SIZING :: 0x0214; PM_REMOVE :: 1; diff --git a/core/types.odin b/core/types.odin index 5a46770d5..c541aaac5 100644 --- a/core/types.odin +++ b/core/types.odin @@ -1,6 +1,6 @@ is_signed :: proc(info: ^Type_Info) -> bool { if is_integer(info) { - i := cast(^Type_Info.Integer)info; + i := union_cast(^Type_Info.Integer)info; return i.signed; } if is_float(info) { diff --git a/core/utf8.odin b/core/utf8.odin index d1798547d..8720e1f20 100644 --- a/core/utf8.odin +++ b/core/utf8.odin @@ -30,7 +30,7 @@ HICB :: 0b1011_1111; Accept_Range :: struct { lo, hi: u8 } -accept_ranges := [5]Accept_Range{ +immutable accept_ranges := [5]Accept_Range{ {0x80, 0xbf}, {0xa0, 0xbf}, {0x80, 0x9f}, @@ -38,7 +38,7 @@ accept_ranges := [5]Accept_Range{ {0x80, 0x8f}, }; -accept_sizes := [256]byte{ +immutable accept_sizes := [256]byte{ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, // 0x00-0x0f 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, // 0x10-0x1f 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, // 0x20-0x2f |