/* $info$ tags: glue|log-manager $end_info$ */ #include #include #include #include #include #include #include namespace LogMan { namespace Throw { fextl::vector Handlers; void InstallHandler(ThrowHandler Handler) { Handlers.emplace_back(Handler); } void UnInstallHandlers() { Handlers.clear(); } void MFmt(const char *fmt, const fmt::format_args& args) { auto msg = fextl::fmt::vformat(fmt, args); for (auto& Handler : Handlers) { Handler(msg.c_str()); } FEX_TRAP_EXECUTION; } } // namespace Throw namespace Msg { fextl::vector Handlers; void InstallHandler(MsgHandler Handler) { Handlers.emplace_back(Handler); } void UnInstallHandlers() { Handlers.clear(); } void MFmtImpl(DebugLevels level, const char* fmt, const fmt::format_args& args) { const auto msg = fextl::fmt::vformat(fmt, args); for (auto& Handler : Handlers) { Handler(level, msg.c_str()); } } } // namespace Msg } // namespace LogMan