aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-11-14 16:17:24 +0000
committergingerBill <bill@gingerbill.org>2024-11-14 16:17:24 +0000
commite38a08013e1afa1bbd7b8f90ee16cfbdfacfb13f (patch)
treec6a62c383f54f244e0a797615abf6a7e6825687a /core
parentb3d1d7b835fa5b05620f91420838e4dcdee65dfd (diff)
Remove `#relative` types from the compiler
Diffstat (limited to 'core')
-rw-r--r--core/fmt/fmt.odin12
-rw-r--r--core/reflect/reflect.odin81
-rw-r--r--core/reflect/types.odin32
3 files changed, 27 insertions, 98 deletions
diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin
index dd5c2c6a2..49e9f2e6d 100644
--- a/core/fmt/fmt.odin
+++ b/core/fmt/fmt.odin
@@ -3002,18 +3002,6 @@ fmt_value :: proc(fi: ^Info, v: any, verb: rune) {
case runtime.Type_Info_Bit_Set:
fmt_bit_set(fi, v, verb = verb)
- case runtime.Type_Info_Relative_Pointer:
- ptr := reflect.relative_pointer_to_absolute_raw(v.data, info.base_integer.id)
- absolute_ptr := any{ptr, info.pointer.id}
-
- fmt_value(fi, absolute_ptr, verb)
-
- 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}
-
- fmt_value(fi, absolute_ptr, verb)
-
case runtime.Type_Info_Matrix:
fmt_matrix(fi, v, verb, info)
diff --git a/core/reflect/reflect.odin b/core/reflect/reflect.odin
index d547b67ed..7f79acb77 100644
--- a/core/reflect/reflect.odin
+++ b/core/reflect/reflect.odin
@@ -31,8 +31,6 @@ Type_Info_Enum :: runtime.Type_Info_Enum
Type_Info_Map :: runtime.Type_Info_Map
Type_Info_Bit_Set :: runtime.Type_Info_Bit_Set
Type_Info_Simd_Vector :: runtime.Type_Info_Simd_Vector
-Type_Info_Relative_Pointer :: runtime.Type_Info_Relative_Pointer
-Type_Info_Relative_Multi_Pointer :: runtime.Type_Info_Relative_Multi_Pointer
Type_Info_Matrix :: runtime.Type_Info_Matrix
Type_Info_Soa_Pointer :: runtime.Type_Info_Soa_Pointer
Type_Info_Bit_Field :: runtime.Type_Info_Bit_Field
@@ -67,8 +65,6 @@ Type_Kind :: enum {
Map,
Bit_Set,
Simd_Vector,
- Relative_Pointer,
- Relative_Multi_Pointer,
Matrix,
Soa_Pointer,
Bit_Field,
@@ -80,35 +76,33 @@ type_kind :: proc(T: typeid) -> Type_Kind {
ti := type_info_of(T)
if ti != nil {
switch _ in ti.variant {
- case Type_Info_Named: return .Named
- case Type_Info_Integer: return .Integer
- case Type_Info_Rune: return .Rune
- case Type_Info_Float: return .Float
- case Type_Info_Complex: return .Complex
- case Type_Info_Quaternion: return .Quaternion
- case Type_Info_String: return .String
- case Type_Info_Boolean: return .Boolean
- case Type_Info_Any: return .Any
- case Type_Info_Type_Id: return .Type_Id
- case Type_Info_Pointer: return .Pointer
- case Type_Info_Multi_Pointer: return .Multi_Pointer
- case Type_Info_Procedure: return .Procedure
- case Type_Info_Array: return .Array
- case Type_Info_Enumerated_Array: return .Enumerated_Array
- case Type_Info_Dynamic_Array: return .Dynamic_Array
- case Type_Info_Slice: return .Slice
- case Type_Info_Parameters: return .Tuple
- case Type_Info_Struct: return .Struct
- case Type_Info_Union: return .Union
- case Type_Info_Enum: return .Enum
- case Type_Info_Map: return .Map
- case Type_Info_Bit_Set: return .Bit_Set
- case Type_Info_Simd_Vector: return .Simd_Vector
- case Type_Info_Relative_Pointer: return .Relative_Pointer
- case Type_Info_Relative_Multi_Pointer: return .Relative_Multi_Pointer
- case Type_Info_Matrix: return .Matrix
- case Type_Info_Soa_Pointer: return .Soa_Pointer
- case Type_Info_Bit_Field: return .Bit_Field
+ case Type_Info_Named: return .Named
+ case Type_Info_Integer: return .Integer
+ case Type_Info_Rune: return .Rune
+ case Type_Info_Float: return .Float
+ case Type_Info_Complex: return .Complex
+ case Type_Info_Quaternion: return .Quaternion
+ case Type_Info_String: return .String
+ case Type_Info_Boolean: return .Boolean
+ case Type_Info_Any: return .Any
+ case Type_Info_Type_Id: return .Type_Id
+ case Type_Info_Pointer: return .Pointer
+ case Type_Info_Multi_Pointer: return .Multi_Pointer
+ case Type_Info_Procedure: return .Procedure
+ case Type_Info_Array: return .Array
+ case Type_Info_Enumerated_Array: return .Enumerated_Array
+ case Type_Info_Dynamic_Array: return .Dynamic_Array
+ case Type_Info_Slice: return .Slice
+ case Type_Info_Parameters: return .Tuple
+ case Type_Info_Struct: return .Struct
+ case Type_Info_Union: return .Union
+ case Type_Info_Enum: return .Enum
+ case Type_Info_Map: return .Map
+ case Type_Info_Bit_Set: return .Bit_Set
+ case Type_Info_Simd_Vector: return .Simd_Vector
+ case Type_Info_Matrix: return .Matrix
+ case Type_Info_Soa_Pointer: return .Soa_Pointer
+ case Type_Info_Bit_Field: return .Bit_Field
}
}
@@ -1489,21 +1483,6 @@ as_string :: proc(a: any) -> (value: string, valid: bool) {
}
@(require_results)
-relative_pointer_to_absolute :: proc(a: any) -> rawptr {
- if a == nil { return nil }
- a := a
- ti := runtime.type_info_core(type_info_of(a.id))
- a.id = ti.id
-
- #partial switch info in ti.variant {
- case Type_Info_Relative_Pointer:
- return relative_pointer_to_absolute_raw(a.data, info.base_integer.id)
- }
- return nil
-}
-
-
-@(require_results)
relative_pointer_to_absolute_raw :: proc(data: rawptr, base_integer_id: typeid) -> rawptr {
_handle :: proc(ptr: ^$T) -> rawptr where intrinsics.type_is_integer(T) {
if ptr^ == 0 {
@@ -1564,10 +1543,6 @@ as_pointer :: proc(a: any) -> (value: rawptr, valid: bool) {
case cstring: value = rawptr(v)
case: valid = false
}
-
- case Type_Info_Relative_Pointer:
- valid = true
- value = relative_pointer_to_absolute_raw(a.data, info.base_integer.id)
}
return
@@ -1677,8 +1652,6 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_
Type_Info_Bit_Set,
Type_Info_Enum,
Type_Info_Simd_Vector,
- Type_Info_Relative_Pointer,
- Type_Info_Relative_Multi_Pointer,
Type_Info_Soa_Pointer,
Type_Info_Matrix:
return runtime.memory_compare(a.data, b.data, t.size) == 0
diff --git a/core/reflect/types.odin b/core/reflect/types.odin
index 4f0674dc8..cb31a27e2 100644
--- a/core/reflect/types.odin
+++ b/core/reflect/types.odin
@@ -158,14 +158,6 @@ are_types_identical :: proc(a, b: ^Type_Info) -> bool {
case Type_Info_Simd_Vector:
y := b.variant.(Type_Info_Simd_Vector) or_return
return x.count == y.count && x.elem == y.elem
-
- case Type_Info_Relative_Pointer:
- y := b.variant.(Type_Info_Relative_Pointer) or_return
- return x.base_integer == y.base_integer && x.pointer == y.pointer
-
- case Type_Info_Relative_Multi_Pointer:
- y := b.variant.(Type_Info_Relative_Multi_Pointer) or_return
- return x.base_integer == y.base_integer && x.pointer == y.pointer
case Type_Info_Matrix:
y := b.variant.(Type_Info_Matrix) or_return
@@ -392,18 +384,6 @@ is_simd_vector :: proc(info: ^Type_Info) -> bool {
_, ok := type_info_base(info).variant.(Type_Info_Simd_Vector)
return ok
}
-@(require_results)
-is_relative_pointer :: proc(info: ^Type_Info) -> bool {
- if info == nil { return false }
- _, ok := type_info_base(info).variant.(Type_Info_Relative_Pointer)
- return ok
-}
-@(require_results)
-is_relative_multi_pointer :: proc(info: ^Type_Info) -> bool {
- if info == nil { return false }
- _, ok := type_info_base(info).variant.(Type_Info_Relative_Multi_Pointer)
- return ok
-}
@(require_results)
@@ -736,18 +716,6 @@ write_type_writer :: #force_no_inline proc(w: io.Writer, ti: ^Type_Info, n_writt
io.write_i64(w, i64(info.count), 10, &n) or_return
io.write_byte(w, ']', &n) or_return
write_type(w, info.elem, &n) or_return
-
- case Type_Info_Relative_Pointer:
- io.write_string(w, "#relative(", &n) or_return
- write_type(w, info.base_integer, &n) or_return
- io.write_string(w, ") ", &n) or_return
- write_type(w, info.pointer, &n) or_return
-
- case Type_Info_Relative_Multi_Pointer:
- io.write_string(w, "#relative(", &n) or_return
- write_type(w, info.base_integer, &n) or_return
- io.write_string(w, ") ", &n) or_return
- write_type(w, info.pointer, &n) or_return
case Type_Info_Matrix:
if info.layout == .Row_Major {