proper enums

This commit is contained in:
Michael Kutowski
2025-03-01 13:33:23 +01:00
parent 43c54d4de8
commit 57a1264450
3 changed files with 87 additions and 96 deletions
+38
View File
@@ -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.
////////////////////////////////////////////////////////////////////////////////
+48 -95
View File
@@ -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 {
+1 -1
View File
@@ -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")
}
}