#include "kern/print.hpp" #include namespace teachos { namespace { constinit auto noop = [](std::string_view) {}; constinit auto current_print_handler = static_cast(noop); constinit auto current_println_handler = static_cast(noop); constinit auto current_print_error_handler = static_cast(noop); constinit auto current_println_error_handler = static_cast(noop); } // namespace auto print(std::string_view text) -> void { current_print_handler(text); } auto println(std::string_view text) -> void { current_println_handler(text); } auto print_error(std::string_view text) -> void { current_print_error_handler(text); } auto println_error(std::string_view text) -> void { current_println_error_handler(text); } auto set_print_handler(print_handler handler) -> print_handler * { auto old = current_print_handler; current_print_handler = handler; return old; } auto set_println_handler(println_handler handler) -> print_handler * { auto old = current_println_handler; current_println_handler = handler; return old; } auto set_print_error_handler(print_handler handler) -> print_handler * { auto old = current_print_error_handler; current_print_error_handler = handler; return old; } auto set_println_error_handler(println_handler handler) -> print_handler * { auto old = current_println_error_handler; current_println_error_handler = handler; return old; } } // namespace teachos