pub enum Level {
Debug,
Info,
Warn,
Error,
}
pub fn write(level: Level, message: impl AsRef<str>) {
let level = match level {
Level::Debug => 0,
Level::Info => 1,
Level::Warn => 2,
Level::Error => 3,
};
let message = FfiObject::new(&message.as_ref());
unsafe {
lotus_script_sys::log::write(level, message.packed());
}
}
#[doc(hidden)]
#[macro_export]
macro_rules! log {
($level:expr, $($arg:tt)*) => {
$crate::log::write($level, format!($($arg)*));
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! debug {
($($arg:tt)*) => {
log!($crate::log::Level::Debug, $($arg)*);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! info {
($($arg:tt)*) => {
log!($crate::log::Level::Info, $($arg)*);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! warning {
($($arg:tt)*) => {
log!($crate::log::Level::Warn, $($arg)*);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! error {
($($arg:tt)*) => {
log!($crate::log::Level::Error, $($arg)*);
};
}
#[doc(inline)]
pub use debug;
#[doc(inline)]
pub use error;
#[doc(inline)]
pub use info;
#[doc(inline)]
pub use log;
use lotus_script_sys::FfiObject;
#[doc(inline)]
pub use warning;