mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Remove #relative slices; Replace with #relative multi-pointers
This commit is contained in:
+3
-24
@@ -2535,32 +2535,11 @@ fmt_value :: proc(fi: ^Info, v: any, verb: rune) {
|
||||
|
||||
fmt_value(fi, absolute_ptr, verb)
|
||||
|
||||
case runtime.Type_Info_Relative_Slice:
|
||||
case runtime.Type_Info_Relative_Multi_Pointer:
|
||||
ptr := reflect.relative_pointer_to_absolute_raw(v.data, info.base_integer.id)
|
||||
absolute_ptr := any{ptr, info.pointer.id}
|
||||
|
||||
if verb == 'p' {
|
||||
fmt_pointer(fi, ptr, 'p')
|
||||
} else if ptr == nil {
|
||||
io.write_string(fi.writer, "[]", &fi.n)
|
||||
} else {
|
||||
len_ptr := uintptr(v.data) + uintptr(info.base_integer.size)
|
||||
len_any := any{rawptr(len_ptr), info.base_integer.id}
|
||||
len, _ := reflect.as_int(len_any)
|
||||
slice_type := reflect.type_info_base(info.slice).variant.(runtime.Type_Info_Slice)
|
||||
|
||||
fi.record_level += 1
|
||||
defer fi.record_level -= 1
|
||||
|
||||
io.write_byte(fi.writer, '[', &fi.n)
|
||||
defer io.write_byte(fi.writer, ']', &fi.n)
|
||||
|
||||
for i in 0..<len {
|
||||
if i > 0 { io.write_string(fi.writer, ", ", &fi.n) }
|
||||
|
||||
data := uintptr(ptr) + uintptr(i*slice_type.elem_size)
|
||||
fmt_arg(fi, any{rawptr(data), slice_type.elem.id}, verb)
|
||||
}
|
||||
}
|
||||
fmt_value(fi, absolute_ptr, verb)
|
||||
|
||||
case runtime.Type_Info_Matrix:
|
||||
fmt_matrix(fi, v, verb, info)
|
||||
|
||||
Reference in New Issue
Block a user