mango-core 0.2.1

Core Libraries for the mango operationg system.
Documentation
// SPDX-License-Identifier: MIT OR Apache-2.0
//
// Copyright (c) 2018-2023 Andre Richter <andre.o.richter@gmail.com>

/// Prints an info, with a newline.
#[macro_export]
macro_rules! info {
    ($string:expr) => ({
        let timestamp = $crate::TIME.lock().get_uptime_or(0);

        $crate::println!(
            concat!("[  {:>3}.{:06}] ", $string, "\n"),
            timestamp.as_secs(),
            timestamp.subsec_micros(),
        );
    });
    ($format_string:expr, $($arg:tt)*) => ({
        let timestamp = $crate::TIME.lock().get_uptime_or(0);

        $crate::println!(
            concat!("[  {:>3}.{:06}] ", $format_string, "\n"),
            timestamp.as_secs(),
            timestamp.subsec_micros(),
            $($arg)*
        );
    })
}

/// Prints a warning, with a newline.
#[macro_export]
macro_rules! warn {
    ($string:expr) => ({
        let timestamp = $crate::TIME.lock().get_uptime_or(0);

        $crate::println!(
            concat!("[W {:>3}.{:06}] ", $string),
            timestamp.as_secs(),
            timestamp.subsec_micros(),
        );
    });
    ($format_string:expr, $($arg:tt)*) => ({
        let timestamp = $crate::TIME.lock().get_uptime_or(0);

        $crate::println!(
            concat!("[W {:>3}.{:06}] ", $format_string),
            timestamp.as_secs(),
            timestamp.subsec_micros(),
            $($arg)*
        );
    })
}

/// Debug print, with a newline.
#[macro_export]
macro_rules! debug {
    ($string:expr) => ({
        if cfg!(feature = "debug_prints") {
            let timestamp = $crate::TIME.lock().get_uptime_or(0);

            $crate::println!(
                concat!("<[>D {:>3}.{:06}> ", $string, "\n"),
                timestamp.as_secs(),
                timestamp.subsec_micros(),
            );
        }
    });
    ($format_string:expr, $($arg:tt)*) => ({
        if cfg!(feature = "debug_prints") {
            let timestamp = $crate::TIME.lock().get_uptime_or(0);

            $crate::println!(
                concat!("<D {:>3}.{:06}> ", $format_string, "\n"),
                timestamp.as_secs(),
                timestamp.subsec_micros(),
                $($arg)*
            );
        }
    })
}