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()});
const char * widen(char *dst, const char *src)
const char * narrow(char *dst, const char *src)
__declspec(dllimport) void __stdcall InitializeCriticalSection(_RWSTD_CRITICAL_SECTION *)
#define TOML_EXTERNAL_LINKAGE
#define TOML_IMPL_NAMESPACE_END
#define TOML_IMPL_NAMESPACE_START