1#![warn(missing_docs)]
19#![no_std]
20
21pub extern crate ufmt;
22
23pub use ufmt::{uDebug, uDisplay, uWrite, uwrite, uwriteln};
24
25#[cfg(windows)]
26extern "system" {
27 fn SetConsoleOutputCP(wCodePageID: u32) -> i32;
28}
29
30pub fn init() {
34 #[cfg(windows)]
35 {
36 unsafe {
37 SetConsoleOutputCP(65001);
38 }
39 }
40}
41
42mod imp;
43pub use imp::{Stdout, Stderr};
44
45#[macro_export]
47macro_rules! println {
48 () => {
49 let _ = $crate::ufmt::uwrite!($crate::Stdout::new(), "\n");
50 };
51 ($($arg:tt)*) => {
52 let _ = $crate::ufmt::uwriteln!($crate::Stdout::new(), $($arg)*);
53 };
54}
55
56#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
57#[macro_export]
59macro_rules! print {
60 ($($arg:tt)*) => {
61 let _ = $crate::ufmt::uwrite!($crate::Stdout::new(), $($arg)*);
62 };
63}
64
65#[macro_export]
67macro_rules! eprintln {
68 () => {
69 let _ = $crate::ufmt::uwrite!($crate::Stderr::new(), "\n");
70 };
71 ($($arg:tt)*) => {
72 let _ = $crate::ufmt::uwriteln!($crate::Stderr::new(), $($arg)*);
73 };
74}
75
76#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
77#[macro_export]
79macro_rules! eprint {
80 ($($arg:tt)*) => {
81 let _ = $crate::ufmt::uwrite!($crate::Stderr::new(), $($arg)*);
82 };
83}
84
85#[cfg(debug_assertions)]
87#[macro_export]
88macro_rules! d_println {
89 () => {
90 let _ = $crate::ufmt::uwrite!($crate::Stdout::new(), "\n");
91 };
92 ($($arg:tt)*) => {
93 let _ = $crate::ufmt::uwriteln!($crate::Stdout::new(), $($arg)*);
94 };
95}
96
97#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
98#[cfg(debug_assertions)]
100#[macro_export]
101macro_rules! d_print {
102 ($($arg:tt)*) => {
103 let _ = $crate::ufmt::uwrite!($crate::Stdout::new(), $($arg)*);
104 };
105}
106
107#[cfg(not(debug_assertions))]
109#[macro_export]
110macro_rules! d_println {
111 ($($arg:tt)*) => {
112 };
113}
114
115#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
116#[cfg(not(debug_assertions))]
118#[macro_export]
119macro_rules! d_print {
120 ($($arg:tt)*) => {
121 };
122}