From 95d9aee0cf45a9834eeca7bcdc03b8e67ac84c9b Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 2 Dec 2023 00:11:20 -0600 Subject: [PATCH] [ox/std] Cleanup stdlib/non-stdlib specific build path in logging --- deps/ox/src/ox/std/def.hpp | 20 ++++---------------- deps/ox/src/ox/std/trace.hpp | 36 +++++++----------------------------- 2 files changed, 11 insertions(+), 45 deletions(-) diff --git a/deps/ox/src/ox/std/def.hpp b/deps/ox/src/ox/std/def.hpp index 5417dfe0..403c96ab 100644 --- a/deps/ox/src/ox/std/def.hpp +++ b/deps/ox/src/ox/std/def.hpp @@ -17,16 +17,9 @@ #define oxOut(...) ox::trace::OutStream(__FILE__, __LINE__, "stdout", __VA_ARGS__) #define oxErr(...) ox::trace::OutStream(__FILE__, __LINE__, "stderr", __VA_ARGS__) -#ifdef OX_USE_STDLIB -// Non-GCC compilers don't like ##__VA_ARGS__, so use initializer list, which relies on std lib -#define oxTracef(ch, fmt, ...) ox::trace::TraceStream(__FILE__, __LINE__, ch, ox::detail::fmtSegments(fmt), {__VA_ARGS__}) -#define oxOutf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "stdout", ox::detail::fmtSegments(fmt), {__VA_ARGS__}) -#define oxErrf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "stderr", ox::detail::fmtSegments(fmt), {__VA_ARGS__}) -#else -#define oxTracef(ch, fmt, ...) ox::trace::TraceStream(__FILE__, __LINE__, ch, ox::detail::fmtSegments(fmt), ##__VA_ARGS__) -#define oxOutf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "stdout", ox::detail::fmtSegments(fmt), ##__VA_ARGS__) -#define oxErrf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "stderr", ox::detail::fmtSegments(fmt), ##__VA_ARGS__) -#endif +#define oxTracef(ch, fmt, ...) ox::trace::TraceStream(__FILE__, __LINE__, ch, ox::detail::fmtSegments(fmt), __VA_ARGS__) +#define oxOutf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "stdout", ox::detail::fmtSegments(fmt), __VA_ARGS__) +#define oxErrf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "stderr", ox::detail::fmtSegments(fmt), __VA_ARGS__) #define oxInfo(...) oxTrace("info", __VA_ARGS__) #define oxInfof(...) oxTracef("info", __VA_ARGS__) @@ -35,12 +28,7 @@ #ifndef OX_NODEBUG #define oxDebug(...) ox::trace::OutStream(__FILE__, __LINE__, "debug", __VA_ARGS__) -#ifdef OX_USE_STDLIB -// Non-GCC compilers don't like ##__VA_ARGS__, so use initializer list, which relies on std lib -#define oxDebugf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "debug", ox::detail::fmtSegments(fmt), {__VA_ARGS__}) -#else -#define oxDebugf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "debug", ox::detail::fmtSegments(fmt), ##__VA_ARGS__) -#endif +#define oxDebugf(fmt, ...) ox::trace::OutStream(__FILE__, __LINE__, "debug", ox::detail::fmtSegments(fmt), __VA_ARGS__) #else #define oxDebug(...) static_assert(false, "Debug prints were checked in."); #define oxDebugf(...) static_assert(false, "Debug prints were checked in."); diff --git a/deps/ox/src/ox/std/trace.hpp b/deps/ox/src/ox/std/trace.hpp index 426f381e..b7c7787c 100644 --- a/deps/ox/src/ox/std/trace.hpp +++ b/deps/ox/src/ox/std/trace.hpp @@ -141,39 +141,22 @@ class OutStream { m_msg.msg = msg; } -#ifdef OX_USE_STDLIB template - constexpr OutStream(const char *file, int line, const char *ch, detail::Fmt fmtSegments, std::array elements) noexcept { - //static_assert(sizeof...(args) == fmtSegmentCnt - 1, "Wrong number of trace arguments for format."); + constexpr OutStream(const char *file, int line, const char *ch, detail::Fmt fmtSegments, Args const&...elements) noexcept { + static_assert(sizeof...(elements) == fmtSegmentCnt - 1, "Wrong number of trace arguments for format."); m_msg.file = file; m_msg.line = line; m_msg.ch = ch; const auto &firstSegment = fmtSegments.segments[0]; oxIgnoreError(m_msg.msg.append(firstSegment.str, firstSegment.length)); //const detail::FmtArg elements[sizeof...(args)] = {args...}; - for (size_t i = 0; i < fmtSegments.size - 1; ++i) { - m_msg.msg += elements[i].out; + for (size_t i = 0; auto const&e : std::initializer_list{elements...}) { + m_msg.msg += e.out; const auto &s = fmtSegments.segments[i + 1]; oxIgnoreError(m_msg.msg.append(s.str, s.length)); + ++i; } } -#else - template - constexpr OutStream(const char *file, int line, const char *ch, detail::Fmt fmtSegments, Args const&...args) noexcept { - //static_assert(sizeof...(args) == fmtSegmentCnt - 1, "Wrong number of trace arguments for format."); - m_msg.file = file; - m_msg.line = line; - m_msg.ch = ch; - const auto &firstSegment = fmtSegments.segments[0]; - oxIgnoreError(m_msg.msg.append(firstSegment.str, firstSegment.length)); - const detail::FmtArg elements[sizeof...(args)] = {args...}; - for (auto i = 0u; i < fmtSegments.size - 1; ++i) { - m_msg.msg += elements[i].out; - const auto &s = fmtSegments.segments[i + 1]; - oxIgnoreError(m_msg.msg.append(s.str, s.length)); - } - } -#endif inline ~OutStream() noexcept { oxTraceHook(m_msg.file, m_msg.line, m_msg.ch, m_msg.msg.c_str()); @@ -257,15 +240,10 @@ class NullStream { constexpr NullStream(const char*, int, const char*, const char* = "") noexcept { } -#ifdef OX_USE_STDLIB template - constexpr NullStream(const char*, int, const char*, detail::Fmt, std::array) noexcept { + constexpr NullStream(const char*, int, const char*, detail::Fmt, Args const&...elements) noexcept { + static_assert(sizeof...(elements) == fmtSegmentCnt - 1, "Wrong number of trace arguments for format."); } -#else - template - constexpr NullStream(const char*, int, const char*, detail::Fmt, Args...) noexcept { - } -#endif template constexpr const NullStream &operator<<(const T&) const noexcept {