blob: fc6d9ac63cb123adb4e7e01cd08c8c0e92484015 [file] [log] [blame] [edit]
pub use crate::{eprint, eprintln, print, println};
#[doc(hidden)]
pub struct StdoutPrinter;
impl core::fmt::Write for StdoutPrinter {
fn write_str(&mut self, s: &str) -> core::fmt::Result {
unsafe { libc::printf(b"%.*s\0".as_ptr() as _, s.len() as i32, s.as_ptr()) };
Ok(())
}
}
#[doc(hidden)]
pub struct StderrPrinter;
impl core::fmt::Write for StderrPrinter {
fn write_str(&mut self, s: &str) -> core::fmt::Result {
unsafe { libc::write(libc::STDERR_FILENO, s.as_ptr() as _, s.len() as _) };
Ok(())
}
}
#[macro_export]
macro_rules! println {
($($arg:tt)*) => ({
use core::fmt::Write;
let _ = core::writeln!($crate::print::StdoutPrinter, $($arg)*);
})
}
#[macro_export]
macro_rules! print {
($($arg:tt)*) => ({
use core::fmt::Write;
let _ = core::write!($crate::print::StdoutPrinter, $($arg)*);
})
}
#[macro_export]
macro_rules! eprintln {
($($arg:tt)*) => ({
use core::fmt::Write;
let _ = core::writeln!($crate::print::StderrPrinter, $($arg)*);
})
}
#[macro_export]
macro_rules! eprint {
($($arg:tt)*) => ({
use core::fmt::Write;
let _ = core::write!($crate::print::StderrPrinter, $($arg)*);
})
}
#[macro_export]
macro_rules! dbg {
() => {
$crate::eprintln!("[{}:{}]", ::core::file!(), ::core::line!())
};
($val:expr $(,)?) => {
match $val {
tmp => {
$crate::eprintln!("[{}:{}] {} = {:#?}",
::core::file!(), ::core::line!(), ::core::stringify!($val), &tmp);
tmp
}
}
};
($($val:expr),+ $(,)?) => {
($($crate::dbg!($val)),+,)
};
}