blob: 7ee09605b682e38389853e1d11d5e9506a93e05e [file] [log] [blame]
// Copyright 2017 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef STARBOARD_SHARED_WIN32_WCHAR_UTILS_H_
#define STARBOARD_SHARED_WIN32_WCHAR_UTILS_H_
#include <codecvt>
#include <cwchar>
#include <locale>
#include <string>
namespace starboard {
namespace shared {
namespace win32 {
inline std::string wchar_tToUTF8(const wchar_t* const str) {
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.to_bytes(str);
}
inline std::string wchar_tToUTF8(const wchar_t* const str,
const std::size_t size) {
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.to_bytes(str, str + size);
}
inline std::wstring CStringToWString(const char* str) {
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.from_bytes(str);
}
#if defined(__cplusplus_winrt)
inline std::string platformStringToString(Platform::String^ to_convert) {
std::wstring ws(to_convert->Begin(), to_convert->End());
return wchar_tToUTF8(ws.data(), ws.size());
}
inline Platform::String^ stringToPlatformString(const std::string& to_convert) {
return ref new Platform::String(CStringToWString(to_convert.c_str()).c_str());
}
#endif
} // namespace win32
} // namespace shared
} // namespace starboard
#endif // STARBOARD_SHARED_WIN32_WCHAR_UTILS_H_