From c43d6191c5c93bbfc4e9d7b4cc4f994093ccfe72 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 25 Jan 2019 13:22:33 +0100 Subject: [PATCH] Implement print!/println! macros --- src/main.rs | 10 +--------- src/vga_buffer.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index cbe1e48d..db198632 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,15 +7,7 @@ mod vga_buffer; #[no_mangle] pub extern "C" fn _start() -> ! { - use core::fmt::Write; - vga_buffer::WRITER.lock().write_str("Hello again").unwrap(); - write!( - vga_buffer::WRITER.lock(), - ", some numbers: {} {}", - 42, - 1.337 - ) - .unwrap(); + println!("Hello World{}", "!"); loop {} } diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index c08b7d7a..265557d7 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -123,3 +123,20 @@ impl fmt::Write for Writer { Ok(()) } } + +#[macro_export] +macro_rules! print { + ($($arg:tt)*) => ($crate::vga_buffer::_print(format_args!($($arg)*))); +} + +#[macro_export] +macro_rules! println { + () => ($crate::print!("\n")); + ($($arg:tt)*) => ($crate::print!("{}\n", format_args!($($arg)*))); +} + +#[doc(hidden)] +pub fn _print(args: fmt::Arguments) { + use core::fmt::Write; + WRITER.lock().write_fmt(args).unwrap(); +}