#[macro_export]
macro_rules! set_verbosity {
() => {
$crate::VERBOSE.store(1, std::sync::atomic::Ordering::Relaxed);
};
($lvl:expr) => {
$crate::VERBOSE.store($lvl, std::sync::atomic::Ordering::Relaxed);
};
}
#[macro_export]
macro_rules! get_verbosity {
() => {
$crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed)
};
}
#[macro_export]
macro_rules! verbose_env {
() => {
let val = std::env::var("VERBOSE").unwrap_or_default();
$crate::set_verbosity!(val.parse::<u8>().unwrap_or(0));
};
}
#[macro_export]
macro_rules! verbose {
(@lvl $lvl:expr, $($arg:tt)+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= $lvl {
let msg = format!("{}{}", $crate::format_time(), format!($($arg)+));
println!("{}", msg);
}
};
($( $arg:tt )+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= 1 {
let msg = format!("{}{}", $crate::format_time(), format!($($arg)+));
println!("{}", msg);
}
};
}
#[macro_export]
macro_rules! vinfo {
(@lvl $lvl:expr, $($arg:tt)+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= $lvl {
println!("{}{}{}", $crate::format_level("INFO"), $crate::format_time(), format!($($arg)+));
}
};
($( $arg:tt )+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= 1 {
println!("{}{}{}", $crate::format_level("INFO"), $crate::format_time(), format!($($arg)+));
}
};
}
#[macro_export]
macro_rules! vwarn {
(@lvl $lvl:expr, $($arg:tt)+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= $lvl {
println!("{}{}{}", $crate::format_level("WARN"), $crate::format_time(), format!($($arg)+));
}
};
($( $arg:tt )+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= 1 {
println!("{}{}{}", $crate::format_level("WARN"), $crate::format_time(), format!($($arg)+));
}
};
}
#[macro_export]
macro_rules! verror {
(@lvl $lvl:expr, $($arg:tt)+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= $lvl {
eprintln!("{}{}{}", $crate::format_level("ERROR"), $crate::format_time(), format!($($arg)+));
}
};
($( $arg:tt )+) => {
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= 1 {
eprintln!("{}{}{}", $crate::format_level("ERROR"), $crate::format_time(), format!($($arg)+));
}
};
}
#[macro_export]
macro_rules! vebug {
(@lvl $lvl:expr, $($arg:tt)+) => {
#[cfg(debug_assertions)]
{
if $crate::VERBOSE.load(std::sync::atomic::Ordering::Relaxed) >= $lvl {
println!("{}{}{}", $crate::format_level("DEBUG"), $crate::format_time(), format!($($arg)+));
}
}
};
($($arg:tt)+) => {
#[cfg(debug_assertions)]
{
println!("{}{}{}", $crate::format_level("DEBUG"), $crate::format_time(), format!($($arg)+));
}
};
}