From a72a67f33008b034c6600ea23719577bd82a3c1f Mon Sep 17 00:00:00 2001 From: Horror Proton <107091537+horror-proton@users.noreply.github.com> Date: Sat, 10 Sep 2022 00:40:53 +0800 Subject: [PATCH] feat: WIP Logger::separator --- src/MeoAssistant/Logger.hpp | 48 +++++++++++++------------------------ 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/src/MeoAssistant/Logger.hpp b/src/MeoAssistant/Logger.hpp index 731a659e29..d14d8f73f4 100644 --- a/src/MeoAssistant/Logger.hpp +++ b/src/MeoAssistant/Logger.hpp @@ -203,57 +203,43 @@ namespace asst } } - template + template struct stream_put_line_impl; - template - struct stream_put_line_impl + template + struct stream_put_line_impl { - static constexpr Stream& apply(Stream& s, const separator& sep) + static constexpr Stream& apply(Stream& s, const separator&) { - std::ignore = sep; s << std::endl; return s; } }; - template - struct stream_put_line_impl + template + struct stream_put_line_impl { - static constexpr Stream& apply(Stream& s, const separator& sep, Only&& only) + static constexpr Stream& apply(Stream& s, [[maybe_unused]] const separator& sep, First&& f, Rest&&... rs) { - if constexpr (!IsFirstWord) { - s << sep.str; - } - stream_put(s, std::forward(only)); - s << std::endl; - return s; - } - }; - - template - struct stream_put_line_impl - { - static constexpr Stream& apply(Stream& s, const separator& sep, First&& f, Rest&&... rs) - { - if constexpr (std::same_as>) { - stream_put_line_impl::apply(s, f, std::forward(rs)...); + if constexpr (std::same_as, separator>) { + stream_put_line_impl::apply(s, std::forward(f), + std::forward(rs)...); } else { - if constexpr (!IsFirstWord) { - s << sep.str; - } + s << sep.str; stream_put(s, std::forward(f)); - stream_put_line_impl::apply(s, sep, std::forward(rs)...); + stream_put_line_impl::apply(s, sep, std::forward(rs)...); } return s; } }; - template - Stream& stream_put_line(Stream& s, const separator& sep, Args&&... args) + template + Stream& stream_put_line(Stream& s, const separator& sep, First&& a0, Args&&... args) { - return stream_put_line_impl::apply(s, sep, std::forward(args)...); + stream_put(s, std::forward(a0)); + stream_put_line_impl::apply(s, sep, std::forward(args)...); + return s; } inline static const separator DefaultSeparator { " " };