diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2018-10-18 17:33:27 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2018-10-23 12:23:40 +0200 |
commit | 282c71e8e9a8ec9c2eab612f2e60a71b15d24c8a (patch) | |
tree | 2d5a7d0f9b054af2686fe94dfa8c5690e8c92e72 /platform/default | |
parent | 729eeeb3f821981cc5d3c9e06ffbb85ed4d857d7 (diff) | |
download | qtlocation-mapboxgl-282c71e8e9a8ec9c2eab612f2e60a71b15d24c8a.tar.gz |
[core] unify UTF-8/16 conversion to <boost/locale/encoding_utf.hpp>
Diffstat (limited to 'platform/default')
-rw-r--r-- | platform/default/codecvt/codecvt | 30 | ||||
-rw-r--r-- | platform/default/jni/string_conversion.hpp | 17 | ||||
-rw-r--r-- | platform/default/utf.cpp | 11 |
3 files changed, 24 insertions, 34 deletions
diff --git a/platform/default/codecvt/codecvt b/platform/default/codecvt/codecvt deleted file mode 100644 index 8d21e82348..0000000000 --- a/platform/default/codecvt/codecvt +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -// This is a minimal polyfill that'll only work exactly for how we use codecvt - -#include <string> -#include <boost/locale/encoding_utf.hpp> - -namespace std { - -template <typename Codecvt, typename Elem = wchar_t> -class wstring_convert { -public: - static_assert(std::is_same<Elem, typename Codecvt::Elem>::value, "type mismatch"); - - inline std::basic_string<Elem> from_bytes(const string& str) { - return boost::locale::conv::utf_to_utf<Elem>(str); - } - - inline string to_bytes(const std::basic_string<Elem>& str) { - return boost::locale::conv::utf_to_utf<char>(str); - } -}; - -template <typename E> -class codecvt_utf8_utf16 { -public: - using Elem = E; -}; - -} // namespace std diff --git a/platform/default/jni/string_conversion.hpp b/platform/default/jni/string_conversion.hpp new file mode 100644 index 0000000000..66df539f4e --- /dev/null +++ b/platform/default/jni/string_conversion.hpp @@ -0,0 +1,17 @@ +#pragma once + +// This file replaces the default implementation in jni.hpp. + +#include <mbgl/util/utf.hpp> + +namespace jni { + +inline std::u16string convertUTF8ToUTF16(const std::string& str) { + return mbgl::util::convertUTF8ToUTF16(str); +} + +inline std::string convertUTF16ToUTF8(const std::u16string& str) { + return mbgl::util::convertUTF16ToUTF8(str); +} + +} // namespace jni diff --git a/platform/default/utf.cpp b/platform/default/utf.cpp index 8bc8ea7314..f0f9d3e67a 100644 --- a/platform/default/utf.cpp +++ b/platform/default/utf.cpp @@ -1,13 +1,16 @@ #include <mbgl/util/utf.hpp> -#include <locale> -#include <codecvt> +#include <boost/locale/encoding_utf.hpp> namespace mbgl { namespace util { -std::u16string utf8_to_utf16::convert(const std::string& utf8) { - return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>().from_bytes(utf8); +std::u16string convertUTF8ToUTF16(const std::string& str) { + return boost::locale::conv::utf_to_utf<char16_t>(str); +} + +std::string convertUTF16ToUTF8(const std::u16string& str) { + return boost::locale::conv::utf_to_utf<char>(str); } } // namespace util |