#pragma once #include "IOManager.hpp" #include "format.hpp" #include #include inline void log(FILE *_stream, eFormatType type, std::string str) { #ifndef DEBUG if (type == TRACE) return; #endif if (g_pIOManager) g_pIOManager->addLog({.type = type, .log = str}); else std::println(_stream, "{}", NFormatter::fmt(type, str)); } template void log(FILE *_stream, eFormatType type, std::format_string fmt, Args &&...args) { #ifndef DEBUG if (type == TRACE) return; #endif if (g_pIOManager) g_pIOManager->addLog({.type = type, .log = NFormatter::fmt(NONEWLINE, fmt, std::forward(args)...)}); else std::println(_stream, "{}", NFormatter::fmt(type, fmt, std::forward(args)...)); } inline void log(eFormatType type, std::string str) { log(type == ERR ? stderr : stdout, type, str); } template void log(eFormatType type, std::format_string fmt, Args &&...args) { log(type == ERR ? stderr : stdout, type, fmt, std::forward(args)...); }