diff --git a/core/sys/orca/macros.odin b/core/sys/orca/macros.odin index 1f906c3c3..12adfdb91 100644 --- a/core/sys/orca/macros.odin +++ b/core/sys/orca/macros.odin @@ -2,6 +2,44 @@ package orca +//////////////////////////////////////////////////////////////////////////////// +// Helpers for logging, asserting and aborting. +//////////////////////////////////////////////////////////////////////////////// + +log_error :: proc "contextless" (msg: cstring, loc := #caller_location) { + log_ext( + .ERROR, + cstring(raw_data(loc.procedure)), + cstring(raw_data(loc.file_path)), + loc.line, + msg, + ) +} + +log_warning :: proc "contextless" (msg: cstring, loc := #caller_location) { + log_ext( + .WARNING, + cstring(raw_data(loc.procedure)), + cstring(raw_data(loc.file_path)), + loc.line, + msg, + ) +} + +log_info :: proc "contextless" (msg: cstring, loc := #caller_location) { + log_ext( + .INFO, + cstring(raw_data(loc.procedure)), + cstring(raw_data(loc.file_path)), + loc.line, + msg, + ) +} + +abort :: proc "contextless" (msg: cstring, loc := #caller_location) { + abort_ext(cstring(raw_data(loc.procedure)), cstring(raw_data(loc.file_path)), loc.line, msg) +} + //////////////////////////////////////////////////////////////////////////////// // Types and helpers for doubly-linked lists. //////////////////////////////////////////////////////////////////////////////// diff --git a/core/sys/orca/orca.odin b/core/sys/orca/orca.odin index 55703e3a5..abcf42fe2 100644 --- a/core/sys/orca/orca.odin +++ b/core/sys/orca/orca.odin @@ -14,18 +14,6 @@ pool :: struct { blockSize: u64, } - -SYS_MAX_ERROR :: 1024 - -sys_err_def :: struct { - msg: [SYS_MAX_ERROR]u8 `fmt:"s,0"`, - code: i32, -} - -@(link_prefix="oc_") -foreign { - sys_error: sys_err_def -} UNICODE_BASIC_LATIN :: unicode_range { 0x0000, 127 } UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT :: unicode_range { 0x0080, 127 } UNICODE_LATIN_EXTENDED_A :: unicode_range { 0x0100, 127 } @@ -169,43 +157,6 @@ file_write_slice :: proc(file: file, slice: []char) -> u64 { file_read_slice :: proc(file: file, slice: []char) -> u64 { return file_read(file, u64(len(slice)), raw_data(slice)) } - -style_enum :: enum { - SIZE_WIDTH = 1, - SIZE_HEIGHT, - - LAYOUT_AXIS, - LAYOUT_ALIGN_X, - LAYOUT_ALIGN_Y, - LAYOUT_SPACING, - LAYOUT_MARGIN_X, - LAYOUT_MARGIN_Y, - - FLOAT_X, - FLOAT_Y, - - COLOR, - BG_COLOR, - BORDER_COLOR, - BORDER_SIZE, - ROUNDNESS, - - FONT, - FONT_SIZE, - - ANIMATION_TIME, - ANIMATION_MASK, -} - -ui_style_mask :: bit_set[style_enum; u64] - -// Masks like the C version that can be used as common combinations -SIZE :: ui_style_mask { .SIZE_WIDTH, .SIZE_HEIGHT } -LAYOUT_MARGINS :: ui_style_mask { .LAYOUT_MARGIN_X, .LAYOUT_MARGIN_Y } -LAYOUT :: ui_style_mask { .LAYOUT_AXIS, .LAYOUT_ALIGN_X, .LAYOUT_ALIGN_Y, .LAYOUT_SPACING, .LAYOUT_MARGIN_X, .LAYOUT_MARGIN_Y } -FLOAT :: ui_style_mask { .FLOAT_X, .FLOAT_Y } -MASK_INHERITED :: ui_style_mask { .COLOR, .FONT, .FONT_SIZE, .ANIMATION_TIME, .ANIMATION_MASK } - //////////////////////////////////////////////////////////////////////////////// // Utility data structures and helpers used throughout the Orca API. //////////////////////////////////////////////////////////////////////////////// @@ -572,19 +523,19 @@ utf32 :: rune // This enum declares the possible return status of UTF8 decoding/encoding operations. utf8_status :: enum u32 { // The operation was successful. - OC_UTF8_OK = 0, + OK = 0, // The operation unexpectedly encountered the end of the utf8 sequence. - OC_UTF8_OUT_OF_BOUNDS = 1, + OUT_OF_BOUNDS = 1, // A continuation byte was encountered where a leading byte was expected. - OC_UTF8_UNEXPECTED_CONTINUATION_BYTE = 3, + UNEXPECTED_CONTINUATION_BYTE = 3, // A leading byte was encountered in the middle of the encoding of utf8 codepoint. - OC_UTF8_UNEXPECTED_LEADING_BYTE = 4, + UNEXPECTED_LEADING_BYTE = 4, // The utf8 sequence contains an invalid byte. - OC_UTF8_INVALID_BYTE = 5, + INVALID_BYTE = 5, // The operation encountered an invalid utf8 codepoint. - OC_UTF8_INVALID_CODEPOINT = 6, + INVALID_CODEPOINT = 6, // The utf8 sequence contains an overlong encoding of a utf8 codepoint. - OC_UTF8_OVERLONG_ENCODING = 7, + OVERLONG_ENCODING = 7, } // A type representing the result of decoding of utf8-encoded codepoint. @@ -1191,7 +1142,7 @@ io_req :: struct { unused: u64, }, using _: struct #raw_union { - open: struct { + using open: struct { // The access permissions requested on the file to open. rights: file_access, // The options to use when opening the file. @@ -1772,7 +1723,7 @@ mouse_state :: struct { wheel: vec2, using _: struct #raw_union { buttons: [5]key_state, - _: struct { + using _: struct { left: key_state, right: key_state, middle: key_state, @@ -1862,9 +1813,9 @@ ui_size :: struct { } ui_overflow :: enum u32 { - OVERFLOW_CLIP = 0, - OVERFLOW_ALLOW = 1, - OVERFLOW_SCROLL = 2, + CLIP = 0, + ALLOW = 1, + SCROLL = 2, } ui_attribute :: enum u32 { @@ -1874,8 +1825,8 @@ ui_attribute :: enum u32 { MARGIN_X = 3, MARGIN_Y = 4, SPACING = 5, - X = 6, - Y = 7, + ALIGN_X = 6, + ALIGN_Y = 7, FLOATING_X = 8, FLOATING_Y = 9, FLOAT_TARGET_X = 10, @@ -1899,34 +1850,34 @@ ui_attribute :: enum u32 { } ui_attribute_mask :: enum u32 { - MASK_NONE = 0, - MASK_SIZE_WIDTH = 1, - MASK_SIZE_HEIGHT = 2, - MASK_LAYOUT_AXIS = 4, - MASK_LAYOUT_ALIGN_X = 64, - MASK_LAYOUT_ALIGN_Y = 128, - MASK_LAYOUT_SPACING = 32, - MASK_LAYOUT_MARGIN_X = 8, - MASK_LAYOUT_MARGIN_Y = 16, - MASK_FLOATING_X = 256, - MASK_FLOATING_Y = 512, - MASK_FLOAT_TARGET_X = 1024, - MASK_FLOAT_TARGET_Y = 2048, - MASK_OVERFLOW_X = 4096, - MASK_OVERFLOW_Y = 8192, - MASK_CONSTRAIN_X = 16384, - MASK_CONSTRAIN_Y = 32768, - MASK_COLOR = 65536, - MASK_BG_COLOR = 131072, - MASK_BORDER_COLOR = 262144, - MASK_BORDER_SIZE = 2097152, - MASK_ROUNDNESS = 4194304, - MASK_FONT = 524288, - MASK_FONT_SIZE = 1048576, - MASK_DRAW_MASK = 8388608, - MASK_ANIMATION_TIME = 16777216, - MASK_ANIMATION_MASK = 33554432, - MASK_CLICK_THROUGH = 67108864, + NONE = 0, + SIZE_WIDTH = 1, + SIZE_HEIGHT = 2, + LAYOUT_AXIS = 4, + LAYOUT_ALIGN_X = 64, + LAYOUT_ALIGN_Y = 128, + LAYOUT_SPACING = 32, + LAYOUT_MARGIN_X = 8, + LAYOUT_MARGIN_Y = 16, + FLOATING_X = 256, + FLOATING_Y = 512, + FLOAT_TARGET_X = 1024, + FLOAT_TARGET_Y = 2048, + OVERFLOW_X = 4096, + OVERFLOW_Y = 8192, + CONSTRAIN_X = 16384, + CONSTRAIN_Y = 32768, + COLOR = 65536, + BG_COLOR = 131072, + BORDER_COLOR = 262144, + BORDER_SIZE = 2097152, + ROUNDNESS = 4194304, + FONT = 524288, + FONT_SIZE = 1048576, + DRAW_MASK = 8388608, + ANIMATION_TIME = 16777216, + ANIMATION_MASK = 33554432, + CLICK_THROUGH = 67108864, } ui_layout_align :: [2]ui_align @@ -1936,6 +1887,8 @@ ui_layout :: struct { spacing: f32, margin: [2]f32, align: ui_layout_align, + overflow: [2]ui_overflow, + constrain: [2]bool, } ui_box_size :: [2]ui_size @@ -1943,10 +1896,10 @@ ui_box_size :: [2]ui_size ui_box_floating :: [2]bool ui_draw_mask :: enum u32 { - DRAW_MASK_BACKGROUND = 1, - DRAW_MASK_BORDER = 2, - DRAW_MASK_TEXT = 4, - DRAW_MASK_PROC = 8, + BACKGROUND = 1, + BORDER = 2, + TEXT = 4, + PROC = 8, } ui_style :: struct { diff --git a/core/time/time_orca.odin b/core/time/time_orca.odin index d504b29ca..f529790a5 100644 --- a/core/time/time_orca.odin +++ b/core/time/time_orca.odin @@ -17,7 +17,7 @@ _now :: proc "contextless" () -> Time { _sleep :: proc "contextless" (d: Duration) { // NOTE: no way to sleep afaict. if d > 0 { - // orca.log_warning("core:time 'sleep' is unimplemented for orca") + orca.log_warning("core:time 'sleep' is unimplemented for orca") } }