moved type_info package to 'builtin' instead of 'core'
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 23 Jun 2021 18:19:33 +0000 (13:19 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 23 Jun 2021 18:19:33 +0000 (13:19 -0500)
bin/onyx
core/std.onyx
core/type_info.onyx [deleted file]
core/type_info/helper.onyx [new file with mode: 0644]
core/type_info/type_info.onyx [new file with mode: 0644]
core/type_info_helper.onyx [deleted file]
modules/ui/components/slider.onyx
src/onyx.c
src/onyxbuiltins.c

index c55c29c4ae9604960fcb50c789c9836d98c56294..502d0108bfb4e56366ff68113bff3d80b0e9751f 100755 (executable)
Binary files a/bin/onyx and b/bin/onyx differ
index e36f23913a78e9847304d5819967fe371e508a4a..0d12896cabd3b0ec0149e9600018b8f9067ed939 100644 (file)
@@ -41,7 +41,7 @@ package core
     #load "./wasi/clock"
     #load "./io/file"
 
-    #load "./type_info_helper"
+    #load "./type_info/helper"
 }
 
 #if runtime.Runtime == runtime.Runtime_Js {
diff --git a/core/type_info.onyx b/core/type_info.onyx
deleted file mode 100644 (file)
index 3e323e8..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-// A lot of these names have been copied from JAI's introspection system. This is just because
-// I don't want to mentally bike-shed about the names; I just want to get something working.
-
-package core.type_info
-
-type_table : [] ^Type_Info;
-
-Type_Info :: struct {
-    // This must match the order of the elements in onyxtypes.h
-    Kind :: enum {
-        Invalid           :: 0x00; // Unused
-        Basic             :: 0x01;
-        Pointer           :: 0x02;
-        Function          :: 0x03;
-        Struct            :: 0x04;
-        Compound          :: 0x05;
-        Array             :: 0x06;
-        Slice             :: 0x07;
-        Dynamic_Array     :: 0x08;
-        Variadic_Argument :: 0x09;
-        Enum              :: 0x0a;
-    }
-
-    kind := Kind.Invalid;
-    size: u32;
-
-    // Does this need to know alignment? Probably?
-    alignment: u32;
-}
-
-Type_Info_Basic :: struct {
-    use base : Type_Info;
-
-    // This must match the order of the elements in BasicKind in onyxtypes.h
-    Kind :: enum {
-        Void  :: 0x00;
-        Bool  :: 0x01;
-        I8    :: 0x03;
-        U8    :: 0x04;
-        I16   :: 0x05;
-        U16   :: 0x06;
-        I32   :: 0x07;
-        U32   :: 0x08;
-        I64   :: 0x09;
-        U64   :: 0x0a;
-
-        F32   :: 0x0c;
-        F64   :: 0x0d;
-
-        Rawptr :: 0x0e;
-
-        I8X16 :: 0x0f;
-        I16X8 :: 0x10;
-        I32X4 :: 0x11;
-        I64X2 :: 0x12;
-        F32X4 :: 0x13;
-        F64X2 :: 0x14;
-        V128  :: 0x15;
-
-        Type_Index :: 0x16;
-    }
-
-    basic_kind: Kind;
-}
-
-Type_Info_Pointer :: struct {
-    use base : Type_Info;
-
-    @Rename
-    to: type_expr;
-}
-
-Type_Info_Function :: struct {
-    use base : Type_Info;
-
-    return_type:        type_expr;
-    parameter_types: [] type_expr;
-
-    is_variadic: bool;
-}
-
-Type_Info_Array :: struct {
-    use base : Type_Info;
-
-    @Rename
-    of: type_expr;
-    count: u32;
-}
-
-Type_Info_Slice :: struct {
-    use base : Type_Info;
-
-    @Rename
-    of: type_expr;
-}
-
-Type_Info_Dynamic_Array :: struct {
-    use base : Type_Info;
-
-    @Rename
-    of: type_expr;
-}
-
-Type_Info_Variadic_Argument :: struct {
-    use base : Type_Info;
-
-    @Rename
-    of: type_expr;
-}
-
-Type_Info_Enum :: struct {
-    use base : Type_Info;
-
-    Member :: struct {
-        name: str;
-        value: u64; // This assumes enums are always represented as ints.
-    }
-
-    // This is first for better alignment
-    backing_type: type_expr;
-    name: str;
-    members: [] Member;
-
-    is_flags: bool;
-}
-
-Type_Info_Struct :: struct {
-    use base : Type_Info;
-
-    Member :: struct {
-        name: str;
-        offset: u32;
-        type_index: type_expr;
-
-        used: bool;
-        has_default: bool;
-    }
-
-    name: str;
-    members: [] Member;
-}
-
-Type_Info_Compound :: struct {
-    use base : Type_Info;
-
-    components : [] type_expr;
-}
-
-get_type_info :: (t: type_expr) -> ^Type_Info {
-    if t < ~~0 || t >= ~~type_table.count do return null;
-
-    return type_table[cast(i32) t];
-}
diff --git a/core/type_info/helper.onyx b/core/type_info/helper.onyx
new file mode 100644 (file)
index 0000000..44c76a3
--- /dev/null
@@ -0,0 +1,112 @@
+package builtin.type_info
+
+#private_file io :: package core.io
+
+write_type_name :: (writer: ^io.Writer, t: type_expr) {
+    info := get_type_info(t);
+    if info == null do return;
+
+    switch info.kind {
+        case .Basic {
+            basic := cast(^Type_Info_Basic) info;
+
+            switch basic.basic_kind {
+                case .Void do io.write_str(writer, "void");
+                case .Bool do io.write_str(writer, "bool");
+                case .U8   do io.write_str(writer, "u8");
+                case .I8   do io.write_str(writer, "i8");
+                case .U16  do io.write_str(writer, "u16");
+                case .I16  do io.write_str(writer, "i16");
+                case .U32  do io.write_str(writer, "u32");
+                case .I32  do io.write_str(writer, "i32");
+                case .U64  do io.write_str(writer, "u64");
+                case .I64  do io.write_str(writer, "i64");
+
+                case .F32  do io.write_str(writer, "f32");
+                case .F64  do io.write_str(writer, "f64");
+
+                case .Rawptr do return io.write_str(writer, "rawptr");
+
+                case .I8X16 do return io.write_str(writer, "i8x16");
+                case .I16X8 do return io.write_str(writer, "i16x8");
+                case .I32X4 do return io.write_str(writer, "i32x4");
+                case .I64X2 do return io.write_str(writer, "i64x2");
+                case .F32X4 do return io.write_str(writer, "f32x4");
+                case .F64X2 do return io.write_str(writer, "f64x2");
+                case .V128  do return io.write_str(writer, "v128");
+
+                case .Type_Index do return io.write_str(writer, "type_expr");
+            }
+        }
+
+        case .Pointer {
+            pointer := cast(^Type_Info_Pointer) info;
+            io.write_str(writer, "^");
+            write_type_name(writer, pointer.to);
+        }
+
+        case .Array {
+            arr := cast(^Type_Info_Array) info;
+            io.write_format(writer, "[%i] ", arr.count);
+            write_type_name(writer, arr.of);
+        }
+
+        case .Slice {
+            slice := cast(^Type_Info_Slice) info;
+            io.write_str(writer, "[] ");
+            write_type_name(writer, slice.of);
+        }
+
+        case .Dynamic_Array {
+            dyn := cast(^Type_Info_Dynamic_Array) info;
+            io.write_str(writer, "[..] ");
+            write_type_name(writer, dyn.of);
+        }
+
+        case .Variadic_Argument {
+            va := cast(^Type_Info_Variadic_Argument) info;
+            io.write_str(writer, "..");
+            write_type_name(writer, va.of);
+        }
+
+        case .Enum {
+            e := cast(^Type_Info_Enum) info;
+            io.write_str(writer, e.name);
+        }
+
+        case .Struct {
+            s := cast(^Type_Info_Struct) info;
+            io.write_str(writer, s.name);
+        }
+
+        case .Compound {
+            comp := cast(^Type_Info_Compound) info;
+            io.write_str(writer, "(");
+
+            i := 0;
+            for type: comp.components {
+                if i != 0 do io.write_str(writer, ", ");
+
+                write_type_name(writer, type);
+                i += 1;
+            }
+            io.write_str(writer, ")");
+        }
+
+        case .Function {
+            f := cast(^Type_Info_Function) info;
+            io.write_str(writer, "(");
+
+            i := 0;
+            for type: f.parameter_types {
+                if i != 0 do io.write_str(writer, ", ");
+
+                write_type_name(writer, type);
+                i += 1;
+            }
+            io.write_str(writer, ") -> ");
+
+            write_type_name(writer, f.return_type);
+        }            
+    }
+}
diff --git a/core/type_info/type_info.onyx b/core/type_info/type_info.onyx
new file mode 100644 (file)
index 0000000..13b8c0c
--- /dev/null
@@ -0,0 +1,153 @@
+// A lot of these names have been copied from JAI's introspection system. This is just because
+// I don't want to mentally bike-shed about the names; I just want to get something working.
+
+package builtin.type_info
+
+type_table : [] ^Type_Info;
+
+Type_Info :: struct {
+    // This must match the order of the elements in onyxtypes.h
+    Kind :: enum {
+        Invalid           :: 0x00; // Unused
+        Basic             :: 0x01;
+        Pointer           :: 0x02;
+        Function          :: 0x03;
+        Struct            :: 0x04;
+        Compound          :: 0x05;
+        Array             :: 0x06;
+        Slice             :: 0x07;
+        Dynamic_Array     :: 0x08;
+        Variadic_Argument :: 0x09;
+        Enum              :: 0x0a;
+    }
+
+    kind := Kind.Invalid;
+    size: u32;
+
+    // Does this need to know alignment? Probably?
+    alignment: u32;
+}
+
+Type_Info_Basic :: struct {
+    use base : Type_Info;
+
+    // This must match the order of the elements in BasicKind in onyxtypes.h
+    Kind :: enum {
+        Void  :: 0x00;
+        Bool  :: 0x01;
+        I8    :: 0x03;
+        U8    :: 0x04;
+        I16   :: 0x05;
+        U16   :: 0x06;
+        I32   :: 0x07;
+        U32   :: 0x08;
+        I64   :: 0x09;
+        U64   :: 0x0a;
+
+        F32   :: 0x0c;
+        F64   :: 0x0d;
+
+        Rawptr :: 0x0e;
+
+        I8X16 :: 0x0f;
+        I16X8 :: 0x10;
+        I32X4 :: 0x11;
+        I64X2 :: 0x12;
+        F32X4 :: 0x13;
+        F64X2 :: 0x14;
+        V128  :: 0x15;
+
+        Type_Index :: 0x16;
+    }
+
+    basic_kind: Kind;
+}
+
+Type_Info_Pointer :: struct {
+    use base : Type_Info;
+
+    @Rename
+    to: type_expr;
+}
+
+Type_Info_Function :: struct {
+    use base : Type_Info;
+
+    return_type:        type_expr;
+    parameter_types: [] type_expr;
+
+    is_variadic: bool;
+}
+
+Type_Info_Array :: struct {
+    use base : Type_Info;
+
+    @Rename
+    of: type_expr;
+    count: u32;
+}
+
+Type_Info_Slice :: struct {
+    use base : Type_Info;
+
+    @Rename
+    of: type_expr;
+}
+
+Type_Info_Dynamic_Array :: struct {
+    use base : Type_Info;
+
+    @Rename
+    of: type_expr;
+}
+
+Type_Info_Variadic_Argument :: struct {
+    use base : Type_Info;
+
+    @Rename
+    of: type_expr;
+}
+
+Type_Info_Enum :: struct {
+    use base : Type_Info;
+
+    Member :: struct {
+        name: str;
+        value: u64; // This assumes enums are always represented as ints.
+    }
+
+    // This is first for better alignment
+    backing_type: type_expr;
+    name: str;
+    members: [] Member;
+
+    is_flags: bool;
+}
+
+Type_Info_Struct :: struct {
+    use base : Type_Info;
+
+    Member :: struct {
+        name: str;
+        offset: u32;
+        type_index: type_expr;
+
+        used: bool;
+        has_default: bool;
+    }
+
+    name: str;
+    members: [] Member;
+}
+
+Type_Info_Compound :: struct {
+    use base : Type_Info;
+
+    components : [] type_expr;
+}
+
+get_type_info :: (t: type_expr) -> ^Type_Info {
+    if t < ~~0 || t >= ~~type_table.count do return null;
+
+    return type_table[cast(i32) t];
+}
diff --git a/core/type_info_helper.onyx b/core/type_info_helper.onyx
deleted file mode 100644 (file)
index 1674e62..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-package core.type_info
-
-#private_file io :: package core.io
-
-write_type_name :: (writer: ^io.Writer, t: type_expr) {
-    info := get_type_info(t);
-    if info == null do return;
-
-    switch info.kind {
-        case .Basic {
-            basic := cast(^Type_Info_Basic) info;
-
-            switch basic.basic_kind {
-                case .Void do io.write_str(writer, "void");
-                case .Bool do io.write_str(writer, "bool");
-                case .U8   do io.write_str(writer, "u8");
-                case .I8   do io.write_str(writer, "i8");
-                case .U16  do io.write_str(writer, "u16");
-                case .I16  do io.write_str(writer, "i16");
-                case .U32  do io.write_str(writer, "u32");
-                case .I32  do io.write_str(writer, "i32");
-                case .U64  do io.write_str(writer, "u64");
-                case .I64  do io.write_str(writer, "i64");
-
-                case .F32  do io.write_str(writer, "f32");
-                case .F64  do io.write_str(writer, "f64");
-
-                case .Rawptr do return io.write_str(writer, "rawptr");
-
-                case .I8X16 do return io.write_str(writer, "i8x16");
-                case .I16X8 do return io.write_str(writer, "i16x8");
-                case .I32X4 do return io.write_str(writer, "i32x4");
-                case .I64X2 do return io.write_str(writer, "i64x2");
-                case .F32X4 do return io.write_str(writer, "f32x4");
-                case .F64X2 do return io.write_str(writer, "f64x2");
-                case .V128  do return io.write_str(writer, "v128");
-
-                case .Type_Index do return io.write_str(writer, "type_expr");
-            }
-        }
-
-        case .Pointer {
-            pointer := cast(^Type_Info_Pointer) info;
-            io.write_str(writer, "^");
-            write_type_name(writer, pointer.to);
-        }
-
-        case .Array {
-            arr := cast(^Type_Info_Array) info;
-            io.write_format(writer, "[%i] ", arr.count);
-            write_type_name(writer, arr.of);
-        }
-
-        case .Slice {
-            slice := cast(^Type_Info_Slice) info;
-            io.write_str(writer, "[] ");
-            write_type_name(writer, slice.of);
-        }
-
-        case .Dynamic_Array {
-            dyn := cast(^Type_Info_Dynamic_Array) info;
-            io.write_str(writer, "[..] ");
-            write_type_name(writer, dyn.of);
-        }
-
-        case .Variadic_Argument {
-            va := cast(^Type_Info_Variadic_Argument) info;
-            io.write_str(writer, "..");
-            write_type_name(writer, va.of);
-        }
-
-        case .Enum {
-            e := cast(^Type_Info_Enum) info;
-            io.write_str(writer, e.name);
-        }
-
-        case .Struct {
-            s := cast(^Type_Info_Struct) info;
-            io.write_str(writer, s.name);
-        }
-
-        case .Compound {
-            comp := cast(^Type_Info_Compound) info;
-            io.write_str(writer, "(");
-
-            i := 0;
-            for type: comp.components {
-                if i != 0 do io.write_str(writer, ", ");
-
-                write_type_name(writer, type);
-                i += 1;
-            }
-            io.write_str(writer, ")");
-        }
-
-        case .Function {
-            f := cast(^Type_Info_Function) info;
-            io.write_str(writer, "(");
-
-            i := 0;
-            for type: f.parameter_types {
-                if i != 0 do io.write_str(writer, ", ");
-
-                write_type_name(writer, type);
-                i += 1;
-            }
-            io.write_str(writer, ") -> ");
-
-            write_type_name(writer, f.return_type);
-        }            
-    }
-}
\ No newline at end of file
index 6fbfe9a4b713d7936929b36ba7718ae70d22e67c..7e48b9438a62c2490aecbcd6a76cac12295f3342 100644 (file)
@@ -17,7 +17,7 @@ Slider_Theme :: struct {
 
 default_slider_theme := Slider_Theme.{};
 
-slider :: (use r: Rectangle, value: ^$T, min_value: T, max_value: T, text: str, theme := ^default_slider_theme, site := #callsite, increment := 0) -> bool {
+slider :: (use r: Rectangle, value: ^$T, min_value: T, max_value: T, theme := ^default_slider_theme, site := #callsite, increment := 0) -> bool {
     result := false;
 
     hash := get_site_hash(site, increment);
@@ -30,8 +30,6 @@ slider :: (use r: Rectangle, value: ^$T, min_value: T, max_value: T, text: str,
             result = true;
 
             // Animate this?
-            // adjust_slider_value(value, mouse_state.x - x0, width, min_value, max_value);
-
             x := mouse_state.x - x0;
 
             if T == i32 || T == i64 || T == u32 || T == u64 {
index c25bb89f4b40d04a55e322ea7ca3bdc7b9cc389c..e5aea9c63abc5d79df1afa6f5cd448b25ab7fe53 100644 (file)
@@ -207,7 +207,7 @@ static void context_init(CompileOptions* opts) {
         .state = Entity_State_Parse_Builtin,
         .type = Entity_Type_Load_File,
         .package = NULL,
-        .include = create_load(context.ast_alloc, "core/type_info"),
+        .include = create_load(context.ast_alloc, "core/type_info/type_info"),
     }));
     
     add_entities_for_node(NULL, (AstNode *) &builtin_stack_top, context.global_scope, NULL);
index d3282244ed1eb804f3ef8e8ad9f281ebf8113096..85bdd5d7cf5b3a648c13c6bacc05c0973cbc905c 100644 (file)
@@ -391,7 +391,7 @@ void initialize_builtins(bh_allocator a) {
         return;
     }
 
-    p = package_lookup("core.type_info");
+    p = package_lookup("builtin.type_info");
     if (p != NULL) {
         type_table_node = (AstTyped *) symbol_raw_resolve(p->scope, "type_table");
     }