summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2018-10-18 17:33:27 +0200
committerKonstantin Käfer <mail@kkaefer.com>2018-10-23 12:23:40 +0200
commit282c71e8e9a8ec9c2eab612f2e60a71b15d24c8a (patch)
tree2d5a7d0f9b054af2686fe94dfa8c5690e8c92e72 /platform
parent729eeeb3f821981cc5d3c9e06ffbb85ed4d857d7 (diff)
downloadqtlocation-mapboxgl-282c71e8e9a8ec9c2eab612f2e60a71b15d24c8a.tar.gz
[core] unify UTF-8/16 conversion to <boost/locale/encoding_utf.hpp>
Diffstat (limited to 'platform')
-rw-r--r--platform/android/config.cmake7
-rw-r--r--platform/default/codecvt/codecvt30
-rw-r--r--platform/default/jni/string_conversion.hpp17
-rw-r--r--platform/default/utf.cpp11
-rw-r--r--platform/qt/src/utf.cpp2
5 files changed, 29 insertions, 38 deletions
diff --git a/platform/android/config.cmake b/platform/android/config.cmake
index cc44c2585c..ec64b239f8 100644
--- a/platform/android/config.cmake
+++ b/platform/android/config.cmake
@@ -69,7 +69,6 @@ macro(mbgl_filesource)
target_add_mason_package(mbgl-filesource PUBLIC jni.hpp)
target_link_libraries(mbgl-filesource
- PRIVATE codecvt
PUBLIC sqlite
PUBLIC -llog
PUBLIC -landroid
@@ -84,8 +83,11 @@ add_library(mapbox-gl SHARED
platform/android/src/main.cpp
)
+target_include_directories(mapbox-gl
+ PRIVATE src
+)
+
target_link_libraries(mapbox-gl
- PRIVATE codecvt
PRIVATE mbgl-core
PRIVATE mbgl-filesource
)
@@ -106,7 +108,6 @@ macro(mbgl_platform_test)
)
target_link_libraries(mbgl-test
- PRIVATE codecvt
PRIVATE mbgl-core
PRIVATE mbgl-filesource
)
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
diff --git a/platform/qt/src/utf.cpp b/platform/qt/src/utf.cpp
index d8bf2ca0b3..069c7bca39 100644
--- a/platform/qt/src/utf.cpp
+++ b/platform/qt/src/utf.cpp
@@ -5,7 +5,7 @@
namespace mbgl {
namespace util {
-std::u16string utf8_to_utf16::convert(std::string const& utf8) {
+std::u16string convertUTF8ToUTF16(std::string const& utf8) {
auto utf16 = QString::fromUtf8(utf8.data(), utf8.length());
// Newers Qt have QString::toStdU16String(), but this is how it is