#include "kern/print.hpp" #include namespace teachos { namespace { print_handler * current_print_handler{}; println_handler * current_println_handler{}; print_handler * current_print_error_handler{}; println_handler * current_println_error_handler{}; } // namespace auto print(std::string_view text) -> void { if (current_print_handler) { current_print_handler(text); } } auto println(std::string_view text) -> void { if (current_println_handler) { current_println_handler(text); } } auto print_error(std::string_view text) -> void { if (current_print_error_handler) { current_print_error_handler(text); } } auto println_error(std::string_view text) -> void { if (current_println_error_handler) { 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