| 1 |
#pragma once |
| 2 |
#include <plog/Converters/UTF8Converter.h> |
| 3 |
#include <plog/Util.h> |
| 4 |
|
| 5 |
namespace plog |
| 6 |
{ |
| 7 |
template<class NextConverter = UTF8Converter> |
| 8 |
class NativeEOLConverter : public NextConverter |
| 9 |
{ |
| 10 |
#ifdef _WIN32 |
| 11 |
public: |
| 12 |
static std::string header(const util::nstring& str) |
| 13 |
{ |
| 14 |
return NextConverter::header(fixLineEndings(str)); |
| 15 |
} |
| 16 |
|
| 17 |
static std::string convert(const util::nstring& str) |
| 18 |
{ |
| 19 |
return NextConverter::convert(fixLineEndings(str)); |
| 20 |
} |
| 21 |
|
| 22 |
private: |
| 23 |
static std::wstring fixLineEndings(const std::wstring& str) |
| 24 |
{ |
| 25 |
std::wstring output; |
| 26 |
output.reserve(str.length() * 2); |
| 27 |
|
| 28 |
for (size_t i = 0; i < str.size(); ++i) |
| 29 |
{ |
| 30 |
wchar_t ch = str[i]; |
| 31 |
|
| 32 |
if (ch == L'\n') |
| 33 |
{ |
| 34 |
output.push_back(L'\r'); |
| 35 |
} |
| 36 |
|
| 37 |
output.push_back(ch); |
| 38 |
} |
| 39 |
|
| 40 |
return output; |
| 41 |
} |
| 42 |
#endif |
| 43 |
}; |
| 44 |
} |