From ec40f6e3acc7874b82709ab81b254c741529fdff Mon Sep 17 00:00:00 2001 From: Mica White Date: Mon, 26 Oct 2026 10:52:04 -0400 Subject: Finish engine --- platforms/tortuise-script-wasm/src/log.rs | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 platforms/tortuise-script-wasm/src/log.rs (limited to 'platforms/tortuise-script-wasm/src/log.rs') diff --git a/platforms/tortuise-script-wasm/src/log.rs b/platforms/tortuise-script-wasm/src/log.rs new file mode 100644 index 0000000..306a0d5 --- /dev/null +++ b/platforms/tortuise-script-wasm/src/log.rs @@ -0,0 +1,36 @@ +use alloc::string::ToString; +use log::{LevelFilter, Log, Metadata, Record, SetLoggerError, set_logger, set_max_level}; + +mod tortuise { + use log::Level; + + #[link(wasm_import_module = "tortuise")] + unsafe extern "C" { + pub unsafe fn log(severity: Level, message: *const u8, length: usize); + } +} + +static LOG: TortuiseLogger = TortuiseLogger; + +pub struct TortuiseLogger; + +impl TortuiseLogger { + pub fn init() -> Result<(), SetLoggerError> { + set_logger(&LOG).map(|()| set_max_level(LevelFilter::Trace)) + } +} + +impl Log for TortuiseLogger { + fn enabled(&self, _: &Metadata) -> bool { + true + } + + fn log(&self, record: &Record) { + let message = record.args().to_string(); + unsafe { + tortuise::log(record.level(), message.as_ptr(), message.len()); + } + } + + fn flush(&self) {} +} -- cgit v1.3.1