1pub enum Level {
5 Debug,
6 Info,
7 Warn,
8 Error,
9}
10
11pub fn write(level: Level, message: impl AsRef<str>) {
13 let level = match level {
14 Level::Debug => 0,
15 Level::Info => 1,
16 Level::Warn => 2,
17 Level::Error => 3,
18 };
19
20 let message = FfiObject::new(&message.as_ref());
21 unsafe {
22 lotus_script_sys::log::write(level, message.packed());
23 }
24}
25
26#[doc(hidden)]
28#[macro_export]
29macro_rules! log {
30 ($level:expr, $($arg:tt)*) => {
31 $crate::log::write($level, format!($($arg)*));
32 };
33}
34
35#[doc(hidden)]
37#[macro_export]
38macro_rules! debug {
39 ($($arg:tt)*) => {
40 log!($crate::log::Level::Debug, $($arg)*);
41 };
42}
43
44#[doc(hidden)]
46#[macro_export]
47macro_rules! info {
48 ($($arg:tt)*) => {
49 log!($crate::log::Level::Info, $($arg)*);
50 };
51}
52
53#[doc(hidden)]
55#[macro_export]
56macro_rules! warning {
57 ($($arg:tt)*) => {
58 log!($crate::log::Level::Warn, $($arg)*);
59 };
60}
61
62#[doc(hidden)]
64#[macro_export]
65macro_rules! error {
66 ($($arg:tt)*) => {
67 log!($crate::log::Level::Error, $($arg)*);
68 };
69}
70
71#[doc(inline)]
72pub use debug;
73#[doc(inline)]
74pub use error;
75#[doc(inline)]
76pub use info;
77#[doc(inline)]
78pub use log;
79use lotus_script_sys::FfiObject;
80#[doc(inline)]
81pub use warning;