added: type info methods
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 6 Jun 2023 03:18:28 +0000 (22:18 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 6 Jun 2023 03:18:28 +0000 (22:18 -0500)
core/runtime/info/types.onyx

index 56ea5a5a8de723480c8b2ad078f7915ccde315d1..4d2afdcf4a5e12ff2cc350259a1aa97ee60a072e 100644 (file)
@@ -231,3 +231,27 @@ get_type_info :: (t: type_expr) -> &Type_Info {
 }
 
 
+
+#inject type_expr {
+    info :: get_type_info
+}
+
+#inject Type_Info {
+    as_basic             :: (t: &Type_Info) => cast(&Type_Info_Basic, t);
+    as_pointer           :: (t: &Type_Info) => cast(&Type_Info_Pointer, t);
+    as_multi_pointer     :: (t: &Type_Info) => cast(&Type_Info_Multi_Pointer, t);
+    as_function          :: (t: &Type_Info) => cast(&Type_Info_Function, t);
+    as_array             :: (t: &Type_Info) => cast(&Type_Info_Array, t);
+    as_slice             :: (t: &Type_Info) => cast(&Type_Info_Slice, t);
+    as_dynamic_array     :: (t: &Type_Info) => cast(&Type_Info_Dynamic_Array, t);
+    as_variadic_argument :: (t: &Type_Info) => cast(&Type_Info_Variadic_Argument, t);
+    as_enum              :: (t: &Type_Info) => cast(&Type_Info_Enum, t);
+    as_struct            :: (t: &Type_Info) => cast(&Type_Info_Struct, t);
+    as_poly_struct       :: (t: &Type_Info) => cast(&Type_Info_Polymorphic_Struct, t);
+    as_union             :: (t: &Type_Info) => cast(&Type_Info_Union, t);
+    as_poly_union        :: (t: &Type_Info) => cast(&Type_Info_Polymorphic_Union, t);
+    as_distinct          :: (t: &Type_Info) => cast(&Type_Info_Distinct, t);
+    as_compound          :: (t: &Type_Info) => cast(&Type_Info_Compound, t);
+}
+
+