From 3d5a45b283d2a59211f9e24f100b95169375213d Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Tue, 4 Feb 2025 00:37:08 +0100 Subject: Add deref utilities & use them for log writer --- asl/log/log.hpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'asl/log/log.hpp') diff --git a/asl/log/log.hpp b/asl/log/log.hpp index f2e3a47..7445cf6 100644 --- a/asl/log/log.hpp +++ b/asl/log/log.hpp @@ -39,16 +39,24 @@ public: constexpr Logger* next_logger() const { return m_next; } }; -// @Todo Make a deref_as trait & deref utility -// @Todo Accept writer as box, pointer, reference, or value -class DefaultLogger : public Logger +class DefaultLoggerBase : public Logger { - Writer* m_writer; +protected: + static void log_inner(Writer&, const message&); +}; + +template W> +class DefaultLogger : public DefaultLoggerBase +{ + W m_writer; public: - explicit constexpr DefaultLogger(Writer* writer) : m_writer{writer} {} + explicit constexpr DefaultLogger(W&& writer) : m_writer{ASL_FWD(writer)} {} - void log(const message&) override; + constexpr void log(const message& m) override + { + log_inner(deref(m_writer), m); + } }; void register_logger(box); -- cgit