WideString CPDF_FileSpec::DecodeFileName(const WideString& filepath) { if (filepath.GetLength() <= 1) return WideString(); #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_ if (filepath.Left(sizeof("/Mac") - 1) == WideStringView(L"/Mac")) return ChangeSlashToPlatform(filepath.c_str() + 1); return ChangeSlashToPlatform(filepath.c_str()); #elif _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_ if (filepath[0] != L'/') return ChangeSlashToPlatform(filepath.c_str()); if (filepath[1] == L'/') return ChangeSlashToPlatform(filepath.c_str() + 1); if (filepath[2] == L'/') { WideString result; result += filepath[1]; result += L':'; result += ChangeSlashToPlatform(filepath.c_str() + 2); return result; } WideString result; result += L'\\'; result += ChangeSlashToPlatform(filepath.c_str()); return result; #else return WideString(filepath); #endif }
TEST(fxstring, FX_UTF8Encode) { EXPECT_EQ("", FX_UTF8Encode(WideStringView())); EXPECT_EQ( "x" "\xc2\x80" "\xc3\xbf" "\xef\xbc\xac" "y", FX_UTF8Encode(L"x" L"\u0080" L"\u00ff" L"\uff2c" L"y")); }
inline WideStringView GetWin32ErrorDescription(unsigned long ulErrorCode) noexcept { const wchar_t *pwszStr; const auto uLength = ::_MCFCRT_GetWin32ErrorDescription(&pwszStr, ulErrorCode); return WideStringView(pwszStr, uLength); }