#[macro_export]
macro_rules! trace_var {
($var: expr) => {{
#[cfg(debug_assertions)]
{
use log::*;
trace!("{} = {:#?}", stringify!($var), $var);
}
}};
}
#[macro_export]
macro_rules! debug_var {
($var: expr) => {{
#[cfg(debug_assertions)]
{
use ::log::*;
debug!("{} = {:#?}", stringify!($var), $var);
}
}};
}
#[macro_export]
macro_rules! info_var {
($var: expr) => {{
#[cfg(debug_assertions)]
{
use ::log::*;
info!("{} = {:#?}", stringify!($var), $var);
}
}};
}
#[macro_export]
macro_rules! print_var {
($var: expr) => {{
#[cfg(debug_assertions)]
{
use ::log::*;
println!("{} = {:#?}", stringify!($var), $var);
}
}};
}
#[macro_export]
macro_rules! trace_enter {
() => {{
#[cfg(debug_assertions)]
{
use ::log::*;
trace!("[ENTER] {} @ line {}", function_name!(), line!());
}
}};
}
#[macro_export]
macro_rules! trace_exit {
() => {{
#[cfg(debug_assertions)]
{
use ::log::*;
trace!("[EXIT] {} @ line {}", function_name!(), line!());
}
}};
}
#[macro_export]
macro_rules! trace_u8 {
($var: expr) => {
#[cfg(debug_assertions)]
trace!("{} = {}", stringify!($var), format_u8!($var));
};
}
#[macro_export]
macro_rules! debug_u8 {
($var: expr) => {
#[cfg(debug_assertions)]
debug!("{} = {}", stringify!($var), format_u8!($var));
};
}
#[macro_export]
macro_rules! info_u8 {
($var: expr) => {
#[cfg(debug_assertions)]
info!("{} = {}", stringify!($var), format_u8!($var));
};
}
#[macro_export]
macro_rules! format_u8 {
($var: expr) => {{
if $var & 0x80 > 0 {
format!("{:#04X} {:#010b} (+: {}, ±: {})", $var, $var, $var as u8, $var as i8)
} else {
format!("{:#04X} {:#010b} (+/±: {})", $var, $var, $var as u8)
}
}};
}
#[macro_export]
macro_rules! trace_3u8 {
($var: expr) => {
#[cfg(debug_assertions)]
trace!("{} = {}", stringify!($var), format_3u8!($var));
};
}
#[macro_export]
macro_rules! debug_3u8 {
($var: expr) => {
#[cfg(debug_assertions)]
debug!("{} = {}", stringify!($var), format_3u8!($var));
};
}
#[macro_export]
macro_rules! info_3u8 {
($var: expr) => {
#[cfg(debug_assertions)]
info!("{} = {}", stringify!($var), format_3u8!($var));
};
}
#[macro_export]
macro_rules! format_3u8 {
($var: expr) => {{
format!(
"#{:02X}{:02X}{:02X} ({:#010b}, {:#010b}, {:#010b}) (+/±: ({}, {}, {}))",
$var.0, $var.1, $var.2, $var.0, $var.1, $var.2, $var.0, $var.1, $var.2
)
}};
}