diff options
Diffstat (limited to 'src/support/path.cpp')
-rw-r--r-- | src/support/path.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/support/path.cpp b/src/support/path.cpp index 1858fe1e9..284618f09 100644 --- a/src/support/path.cpp +++ b/src/support/path.cpp @@ -19,9 +19,39 @@ // #include "support/path.h" +#ifdef USE_WSTRING_PATHS +#include "windows.h" +#endif namespace wasm::Path { +#ifdef USE_WSTRING_PATHS +PathString to_path(const std::string& s) { return string_to_wstring(s); } + +std::wstring string_to_wstring(const std::string& s) { + const char* inptr = s.data(); + size_t inlen = s.size(); + size_t outlen = MultiByteToWideChar(CP_UTF8, 0, inptr, inlen, NULL, 0); + std::wstring outstr(outlen, 0); + const LPWSTR outptr = outstr.data(); + MultiByteToWideChar(CP_UTF8, 0, inptr, inlen, outptr, outlen); + return outstr; +} + +std::string wstring_to_string(const std::wstring& s) { + const wchar_t* inptr = s.data(); + size_t inlen = s.size(); + size_t outlen = + WideCharToMultiByte(CP_UTF8, 0, inptr, inlen, NULL, 0, NULL, NULL); + std::string outstr(outlen, 0); + const LPSTR outptr = outstr.data(); + WideCharToMultiByte(CP_UTF8, 0, inptr, inlen, outptr, outlen, NULL, NULL); + return outstr; +} +#else +PathString to_path(const std::string& s) { return s; } +#endif + char getPathSeparator() { // TODO: use c++17's path separator // http://en.cppreference.com/w/cpp/experimental/fs/path |