#![allow(clippy::crate_in_macro_def)]
use std::ffi::CString;
#[allow(missing_docs)]
pub enum Severity {
Debug,
UserDebug,
Info,
Warning,
Error,
Fatal,
}
impl From<Severity> for u32 {
fn from(severity: Severity) -> Self {
match severity {
Severity::Debug => 0,
Severity::UserDebug => 1,
Severity::Info => 2,
Severity::Warning => 3,
Severity::Error => 4,
Severity::Fatal => 5,
}
}
}
impl From<Severity> for i32 {
fn from(severity: Severity) -> Self {
u32::from(severity) as i32
}
}
pub fn log(severity: Severity, domain: &str, message: &str) {
let message = CString::new(message).unwrap();
let domain = CString::new(domain).unwrap();
unsafe {
dmsdk_ffi::LogInternal(severity.into(), domain.as_ptr(), message.as_ptr());
}
}
#[macro_export]
macro_rules! __internal_debug {
($($arg:tt)*) => {
dmlog::log(dmlog::Severity::Debug, crate::LOG_DOMAIN, &format!($($arg)*));
};
}
#[macro_export]
macro_rules! __internal_user_debug {
($($arg:tt)*) => {
dmlog::log(dmlog::Severity::UserDebug, crate::LOG_DOMAIN, &format!($($arg)*));
};
}
#[macro_export]
macro_rules! __internal_info {
($($arg:tt)*) => {
dmlog::log(dmlog::Severity::Info, crate::LOG_DOMAIN, &format!($($arg)*));
};
}
#[macro_export]
macro_rules! __internal_warning {
($($arg:tt)*) => {
dmlog::log(dmlog::Severity::Warning, crate::LOG_DOMAIN, &format!($($arg)*));
};
}
#[macro_export]
macro_rules! __internal_error {
($($arg:tt)*) => {
dmlog::log(dmlog::Severity::Error, crate::LOG_DOMAIN, &format!($($arg)*));
};
}
#[macro_export]
macro_rules! __internal_fatal {
($($arg:tt)*) => {
dmlog::log(dmlog::Severity::Fatal, crate::LOG_DOMAIN, &format!($($arg)*));
};
}
#[doc(inline)]
pub use crate::{
__internal_debug as debug, __internal_error as error, __internal_fatal as fatal,
__internal_info as info, __internal_user_debug as user_debug, __internal_warning as warning,
};