summaryrefslogtreecommitdiff
path: root/src/support/path.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/support/path.cpp')
-rw-r--r--src/support/path.cpp30
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