diff options
| author | gingerBill <bill@gingerbill.org> | 2024-05-16 16:30:45 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-05-16 16:30:45 +0100 |
| commit | 7cf62f00c34b98cc2f8acab75d5259ff4fc2c6f6 (patch) | |
| tree | e0c6fc1a6bb5d8161184fd988d714a12e700c121 | |
| parent | c9b1c99a4057b7e3f6caee3fb37cf85ca29a7fc9 (diff) | |
Correct #soa RTTI usage
| -rw-r--r-- | base/runtime/core_builtin_soa.odin | 16 | ||||
| -rw-r--r-- | core/fmt/fmt.odin | 2 | ||||
| -rw-r--r-- | core/strings/strings.odin | 4 |
3 files changed, 11 insertions, 11 deletions
diff --git a/base/runtime/core_builtin_soa.odin b/base/runtime/core_builtin_soa.odin index 23f879791..547df0a2b 100644 --- a/base/runtime/core_builtin_soa.odin +++ b/base/runtime/core_builtin_soa.odin @@ -102,7 +102,7 @@ make_soa_aligned :: proc($T: typeid/#soa[]$E, length: int, alignment: int, alloc total_size := 0 for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem total_size += type.size * length total_size = align_forward_int(total_size, max_align) } @@ -126,7 +126,7 @@ make_soa_aligned :: proc($T: typeid/#soa[]$E, length: int, alignment: int, alloc data := uintptr(&array) offset := 0 for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem offset = align_forward_int(offset, max_align) @@ -226,7 +226,7 @@ reserve_soa :: proc(array: ^$T/#soa[dynamic]$E, capacity: int, loc := #caller_lo max_align :: align_of(E) for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem old_size += type.size * old_cap new_size += type.size * capacity @@ -249,7 +249,7 @@ reserve_soa :: proc(array: ^$T/#soa[dynamic]$E, capacity: int, loc := #caller_lo old_offset := 0 new_offset := 0 for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem old_offset = align_forward_int(old_offset, max_align) new_offset = align_forward_int(new_offset, max_align) @@ -307,7 +307,7 @@ append_soa_elem :: proc(array: ^$T/#soa[dynamic]$E, arg: E, loc := #caller_locat max_align :: align_of(E) for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem soa_offset = align_forward_int(soa_offset, max_align) item_offset = align_forward_int(item_offset, type.align) @@ -358,7 +358,7 @@ append_soa_elems :: proc(array: ^$T/#soa[dynamic]$E, args: ..E, loc := #caller_l max_align :: align_of(E) for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem soa_offset = align_forward_int(soa_offset, max_align) item_offset = align_forward_int(item_offset, type.align) @@ -476,7 +476,7 @@ unordered_remove_soa :: proc(array: ^$T/#soa[dynamic]$E, index: int, loc := #cal data := uintptr(array) for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem offset := rawptr((^uintptr)(data)^ + uintptr(index*type.size)) final := rawptr((^uintptr)(data)^ + uintptr((len(array)-1)*type.size)) @@ -509,7 +509,7 @@ ordered_remove_soa :: proc(array: ^$T/#soa[dynamic]$E, index: int, loc := #calle data := uintptr(array) for i in 0..<field_count { - type := si.types[i].variant.(Type_Info_Pointer).elem + type := si.types[i].variant.(Type_Info_Multi_Pointer).elem offset := (^uintptr)(data)^ + uintptr(index*type.size) length := type.size*(len(array) - index - 1) diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin index 772d3dd9c..5f9485f7f 100644 --- a/core/fmt/fmt.odin +++ b/core/fmt/fmt.odin @@ -1960,7 +1960,7 @@ fmt_struct :: proc(fi: ^Info, v: any, the_verb: rune, info: runtime.Type_Info_St fmt_arg(fi, any{data, t.id}, verb) } } else { - t := info.types[i].variant.(runtime.Type_Info_Pointer).elem + t := info.types[i].variant.(runtime.Type_Info_Multi_Pointer).elem t_size := uintptr(t.size) if reflect.is_any(t) { io.write_string(fi.writer, "any{}", &fi.n) diff --git a/core/strings/strings.odin b/core/strings/strings.odin index 13c53f48e..101ba72a9 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -91,8 +91,8 @@ Inputs: Returns: - res: A string created from the null-terminated byte pointer and length */ -string_from_null_terminated_ptr :: proc(ptr: ^byte, len: int) -> (res: string) { - s := transmute(string)mem.Raw_String{ptr, len} +string_from_null_terminated_ptr :: proc(ptr: [^]byte, len: int) -> (res: string) { + s := string(ptr[:len]) s = truncate_to_byte(s, 0) return s } |