mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 05:08:14 +00:00
orca: implement core:time and core:log
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
//+build !freestanding
|
//+build !freestanding
|
||||||
|
//+build !orca
|
||||||
package log
|
package log
|
||||||
|
|
||||||
import "core:encoding/ansi"
|
import "core:encoding/ansi"
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
package orca
|
package orca
|
||||||
|
|
||||||
import "core:fmt"
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Helpers for logging, asserting and aborting.
|
// 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_warning :: proc "contextless" (msg: cstring, loc := #caller_location) {
|
||||||
log_ext(
|
log_ext(
|
||||||
.WARNING,
|
.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_info :: proc "contextless" (msg: cstring, loc := #caller_location) {
|
||||||
log_ext(
|
log_ext(
|
||||||
.INFO,
|
.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 :: proc "contextless" (msg: cstring, loc := #caller_location) {
|
||||||
abort_ext(
|
abort_ext(
|
||||||
cstring(raw_data(loc.procedure)),
|
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.
|
// Types and helpers for doubly-linked lists.
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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" () {}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
//+build !darwin
|
//+build !darwin
|
||||||
//+build !wasi
|
//+build !wasi
|
||||||
//+build !windows
|
//+build !windows
|
||||||
|
//+build !orca
|
||||||
package time
|
package time
|
||||||
|
|
||||||
_IS_SUPPORTED :: false
|
_IS_SUPPORTED :: false
|
||||||
|
|||||||
Reference in New Issue
Block a user