Logging: made LogMessage contain a string view instead of const char*, added BufferSink, changed message parameter of formatted parameter to be string instead of const char*.

This commit is contained in:
Patrick Wuttke
2025-10-28 12:01:50 +01:00
parent 7d4c782b0f
commit 0e1964ba25
7 changed files with 450 additions and 40 deletions

View File

@@ -26,27 +26,28 @@ public:
using typename base_t::allocator_t;
using typename base_t::formatter_ptr_t;
using typename base_t::message_t;
using typename base_t::string_t;
public:
explicit BaseDebugOutputSink(formatter_ptr_t formatter, allocator_t allocator = {})
MIJIN_NOEXCEPT_IF(std::is_nothrow_move_constructible_v<allocator_t>)
: base_t(std::move(formatter), std::move(allocator)) {}
void handleMessageFormatted(const message_t&, const char_t* formatted) MIJIN_NOEXCEPT override
void handleMessageFormatted(const message_t&, const string_t& formatted) MIJIN_NOEXCEPT override
{
if constexpr (std::is_same_v<char_t, char>)
{
OutputDebugStringA(formatted);
OutputDebugStringA(formatted.c_str());
OutputDebugStringA("\n");
}
else if constexpr (std::is_same_v<char_t, wchar_t>)
{
OutputDebugStringW(formatted);
OutputDebugStringW(formatted.c_str());
OutputDebugStringW(L"\n");
}
else if constexpr (sizeof(char_t) == sizeof(char))
{
// char8_t etc.
OutputDebugStringA(std::bit_cast<const char*>(formatted));
OutputDebugStringA(std::bit_cast<const char*>(formatted.c_str()));
OutputDebugStringA("\n");
}
else