Browse Source

Merge pull request #4123 from laytan/more-core-orca-support

orca: implement core:time and core:log
Laytan 11 tháng trước cách đây
mục cha
commit
b3f22133f3

+ 1 - 0
core/log/file_console_logger.odin

@@ -1,4 +1,5 @@
 //+build !freestanding
+//+build !orca
 package log
 
 import "core:encoding/ansi"

+ 0 - 41
core/sys/orca/macros.odin

@@ -2,8 +2,6 @@
 
 package orca
 
-import "core:fmt"
-
 ////////////////////////////////////////////////////////////////////////////////
 // Helpers for logging, asserting and aborting.
 ////////////////////////////////////////////////////////////////////////////////
@@ -18,16 +16,6 @@ log_error :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	)
 }
 
-log_errorf :: proc(format: string, args: ..any, loc := #caller_location) {
-	log_ext(
-		.ERROR,
-		cstring(raw_data(loc.procedure)),
-		cstring(raw_data(loc.file_path)),
-		loc.line,
-		fmt.ctprintf(format, ..args),
-	)
-}
-
 log_warning :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	log_ext(
 		.WARNING,
@@ -38,16 +26,6 @@ log_warning :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	)
 }
 
-log_warningf :: proc(format: string, args: ..any, loc := #caller_location) {
-	log_ext(
-		.WARNING,
-		cstring(raw_data(loc.procedure)),
-		cstring(raw_data(loc.file_path)),
-		loc.line,
-		fmt.ctprintf(format, ..args),
-	)
-}
-
 log_info :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	log_ext(
 		.INFO,
@@ -58,16 +36,6 @@ log_info :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	)
 }
 
-log_infof :: proc(format: string, args: ..any, loc := #caller_location) {
-	log_ext(
-		.INFO,
-		cstring(raw_data(loc.procedure)),
-		cstring(raw_data(loc.file_path)),
-		loc.line,
-		fmt.ctprintf(format, ..args),
-	)
-}
-
 abort :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	abort_ext(
 		cstring(raw_data(loc.procedure)),
@@ -77,15 +45,6 @@ abort :: proc "contextless" (msg: cstring, loc := #caller_location) {
 	)
 }
 
-abortf :: proc(format: string, args: ..any, loc := #caller_location) {
-	abort_ext(
-		cstring(raw_data(loc.procedure)),
-		cstring(raw_data(loc.file_path)),
-		loc.line,
-		fmt.ctprintf(format, ..args),
-	)
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 // Types and helpers for doubly-linked lists.
 ////////////////////////////////////////////////////////////////////////////////

+ 22 - 0
core/sys/orca/odin.odin

@@ -0,0 +1,22 @@
+// File contains Odin specific helpers.
+
+package orca
+
+import "base:runtime"
+
+create_odin_logger :: proc(lowest := runtime.Logger_Level.Debug, ident := "") -> runtime.Logger {
+	return runtime.Logger{odin_logger_proc, nil, lowest, {}}
+}
+
+odin_logger_proc :: proc(logger_data: rawptr, level: runtime.Logger_Level, text: string, options: runtime.Logger_Options, location := #caller_location) {
+	cbuf := make([]byte, len(text)+1, context.temp_allocator)
+	copy(cbuf, text)
+	ctext := cstring(raw_data(cbuf))
+
+	switch level {
+	case .Debug, .Info:  log_info(ctext, location)
+	case .Warning:       log_warning(ctext, location)
+	case:                fallthrough
+	case .Error, .Fatal: log_error(ctext, location)
+	}
+}

+ 29 - 0
core/time/time_orca.odin

@@ -0,0 +1,29 @@
+//+private
+//+build orca
+package time
+
+import "base:intrinsics"
+
+import "core:sys/orca"
+
+_IS_SUPPORTED :: true
+
+_now :: proc "contextless" () -> Time {
+	CLK_JAN_1970 :: 2208988800
+	secs := orca.clock_time(.DATE)
+	return Time{i64((secs - CLK_JAN_1970) * 1e9)}
+}
+
+_sleep :: proc "contextless" (d: Duration) {
+	// NOTE: no way to sleep afaict.
+	if d > 0 {
+		orca.log_warning("core:time 'sleep' is unimplemented for orca")
+	}
+}
+
+_tick_now :: proc "contextless" () -> Tick {
+	secs := orca.clock_time(.MONOTONIC)
+	return Tick{i64(secs * 1e9)}
+}
+
+_yield :: proc "contextless" () {}

+ 1 - 0
core/time/time_other.odin

@@ -8,6 +8,7 @@
 //+build !darwin
 //+build !wasi
 //+build !windows
+//+build !orca
 package time
 
 _IS_SUPPORTED :: false