30 #include YFM_MinGW32_YCLib_MinGW32
32 using namespace YSLib;
40 Win32Exception::Win32Exception(ErrorCode ec,
const std::string&
s, LevelType
l)
45 return s +
": " + FormatMessage(ec);
53 YAssert(ec != 0,
"No error should be thrown.");
63 ::FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER
64 | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, {},
65 ec, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
66 reinterpret_cast<wchar_t*
>(&buf), 1, {});
84 RegisterKey k1(HKEY_CURRENT_USER, L
"Software\\Wine");
85 RegisterKey k2(HKEY_LOCAL_MACHINE, L
"Software\\Wine");
100 if (cp_src == cp_dst)
103 const int w_len(::MultiByteToWideChar(cp_src, 0, str, len, {}, 0));
104 std::wstring wstr(w_len,
wchar_t());
105 wchar_t* w_str = &wstr[0];
107 ::MultiByteToWideChar(cp_src, 0, str, len, w_str, w_len);
115 const int r_len(::WideCharToMultiByte(cp, 0, str, len,
116 nullptr, 0,
nullptr,
nullptr));
119 ::WideCharToMultiByte(cp, 0, str, len, &mbcs[0], r_len, {}, {});
126 const auto w_len(::MultiByteToWideChar(cp, 0, str, len, {}, 0));
127 std::wstring res(w_len,
wchar_t());
128 const auto w_str = &res[0];
130 ::MultiByteToWideChar(cp, 0, str, len, w_str, w_len);
std::wstring MBCSToWCS(const char *str, std::size_t len, int cp)
#define yunused(...)
标记未使用的表达式。
YF_API std::string MBCSToMBCS(const char *, std::size_t, int=CP_UTF8, int=CP_ACP)
转换第一个 int 参数指定编码的字符串为第二个 int 参数指定的编码。
std::exception Exception
YSLib 异常基类。
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
GSStringTemplate< char >::basic_string string
std::string WCSToMBCS(const wchar_t *str, std::size_t len, int cp)
YF_API bool CheckWine()
判断是否在 Wine 环境下运行。
#define YAssert(_expr, _msg)