2024-03-05 11:19:31 +08:00

45 lines
1017 B
C++

#pragma once
#include <plog/Converters/UTF8Converter.h>
#include <plog/Util.h>
namespace plog
{
template<class NextConverter = UTF8Converter>
class NativeEOLConverter : public NextConverter
{
#ifdef _WIN32
public:
static std::string header(const util::nstring& str)
{
return NextConverter::header(fixLineEndings(str));
}
static std::string convert(const util::nstring& str)
{
return NextConverter::convert(fixLineEndings(str));
}
private:
static std::wstring fixLineEndings(const std::wstring& str)
{
std::wstring output;
output.reserve(str.length() * 2);
for (size_t i = 0; i < str.size(); ++i)
{
wchar_t ch = str[i];
if (ch == L'\n')
{
output.push_back(L'\r');
}
output.push_back(ch);
}
return output;
}
#endif
};
}