aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorZac Pierson <zacpiersonhehe@gmail.com>2017-02-15 10:21:38 -0600
committerZac Pierson <zacpiersonhehe@gmail.com>2017-02-15 10:21:38 -0600
commitaaa4dd5c363f2cb4643cd6489108d5be7c9d17de (patch)
treecb6b93596135d2a7f868acc73fcea1536e3d7ab9 /core
parent9d19ee7e4c285d5d881570be3328d81bdff40368 (diff)
parent71100ed427ee2eec8d8a9d4d9616102738097e80 (diff)
Merge https://github.com/gingerBill/odin
Diffstat (limited to 'core')
-rw-r--r--core/_preload.odin27
-rw-r--r--core/fmt.odin23
-rw-r--r--core/hash.odin8
-rw-r--r--core/opengl.odin198
-rw-r--r--core/sys/windows.odin13
-rw-r--r--core/types.odin2
-rw-r--r--core/utf8.odin4
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