9#if !TOML_IMPLEMENTATION
10#error This is an implementation-only header.
17#if TOML_INCLUDE_WINDOWS_H
21extern "C" __declspec(dllimport)
int __stdcall WideCharToMultiByte(
22 unsigned int CodePage,
unsigned long dwFlags,
const wchar_t* lpWideCharStr,
int cchWideChar,
23 char* lpMultiByteStr,
int cbMultiByte,
const char* lpDefaultChar,
int* lpUsedDefaultChar);
25extern "C" __declspec(dllimport)
int __stdcall MultiByteToWideChar(
26 unsigned int CodePage,
unsigned long dwFlags,
const char* lpMultiByteStr,
int cbMultiByte,
27 wchar_t* lpWideCharStr,
int cchWideChar);
35 std::string narrow(std::wstring_view str) {
36 if (str.empty())
return {};
39 const auto len = ::WideCharToMultiByte(65001, 0, str.data(),
static_cast<int>(str.length()),
40 nullptr, 0,
nullptr,
nullptr);
42 s.resize(
static_cast<size_t>(len));
43 ::WideCharToMultiByte(65001, 0, str.data(),
static_cast<int>(str.length()), s.data(), len,
50 std::wstring widen(std::string_view str) {
51 if (str.empty())
return {};
55 ::MultiByteToWideChar(65001, 0, str.data(),
static_cast<int>(str.length()),
nullptr, 0);
57 s.resize(
static_cast<size_t>(len));
58 ::MultiByteToWideChar(65001, 0, str.data(),
static_cast<int>(str.length()), s.data(), len);
66 std::wstring widen(std::u8string_view str) {
67 if (str.empty())
return {};
69 return widen(std::string_view{
reinterpret_cast<const char*
>(str.data()), str.length()});
#define TOML_EXTERNAL_LINKAGE
Definition preprocessor.hpp:1339
#define TOML_IMPL_NAMESPACE_END
Definition preprocessor.hpp:1334
#define TOML_IMPL_NAMESPACE_START
Definition preprocessor.hpp:1333