| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "flutter/fml/platform/win/wstring_conversion.h" | |
| #include <codecvt> | |
| #include <locale> | |
| #include <string> | |
| namespace fml { | |
| using WideStringConverter = | |
| std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t>; | |
| std::string WideStringToUtf8(const std::wstring_view str) { | |
| WideStringConverter converter; | |
| return converter.to_bytes(str.data()); | |
| } | |
| std::wstring Utf8ToWideString(const std::string_view str) { | |
| WideStringConverter converter; | |
| return converter.from_bytes(str.data()); | |
| } | |
| std::u16string WideStringToUtf16(const std::wstring_view str) { | |
| static_assert(sizeof(std::wstring::value_type) == | |
| sizeof(std::u16string::value_type)); | |
| return {begin(str), end(str)}; | |
| } | |
| std::wstring Utf16ToWideString(const std::u16string_view str) { | |
| static_assert(sizeof(std::wstring::value_type) == | |
| sizeof(std::u16string::value_type)); | |
| return {begin(str), end(str)}; | |
| } | |
| } // namespace fml |