diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-09-23 15:42:06 +0300 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-09-26 10:55:47 +0300 |
commit | 9c8295c6a64b6f5b2c9b67fd01633a156481a3c8 (patch) | |
tree | 27cbdbff1757d0e4aa88c3616f17233a143270e2 /platform | |
parent | 30ffbe9b8d49d8d8a2820f7b452ebc1d1531f298 (diff) | |
download | qtlocation-mapboxgl-9c8295c6a64b6f5b2c9b67fd01633a156481a3c8.tar.gz |
[core][android][darwin] Move platform specific Collator impls from expression
Platform specific Collator implementations should not be part of an expression APIs.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/android/core-files.json | 4 | ||||
-rw-r--r-- | platform/android/src/i18n/collator.cpp (renamed from platform/android/src/text/collator.cpp) | 19 | ||||
-rw-r--r-- | platform/android/src/i18n/collator_jni.hpp (renamed from platform/android/src/text/collator_jni.hpp) | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | platform/android/src/jni_native.cpp | 4 | ||||
-rw-r--r-- | platform/android/src/text/format_number_jni.hpp | 2 | ||||
-rw-r--r-- | platform/darwin/src/collator.mm | 9 | ||||
-rw-r--r-- | platform/default/src/mbgl/i18n/collator.cpp (renamed from platform/default/src/mbgl/text/collator.cpp) | 55 | ||||
-rw-r--r-- | platform/linux/config.cmake | 2 |
8 files changed, 38 insertions, 59 deletions
diff --git a/platform/android/core-files.json b/platform/android/core-files.json index 9d502bf33e..4057b21000 100644 --- a/platform/android/core-files.json +++ b/platform/android/core-files.json @@ -80,7 +80,7 @@ "platform/android/src/style/sources/vector_source.cpp", "platform/android/src/style/transition_options.cpp", "platform/android/src/style/value.cpp", - "platform/android/src/text/collator.cpp", + "platform/android/src/i18n/collator.cpp", "platform/android/src/text/local_glyph_rasterizer.cpp", "platform/android/src/text/format_number.cpp", "platform/android/src/gl_functions.cpp", @@ -185,7 +185,7 @@ "style/sources/vector_source.hpp": "platform/android/src/style/sources/vector_source.hpp", "style/transition_options.hpp": "platform/android/src/style/transition_options.hpp", "style/value.hpp": "platform/android/src/style/value.hpp", - "text/collator_jni.hpp": "platform/android/src/text/collator_jni.hpp", + "text/collator_jni.hpp": "platform/android/src/i18n/collator_jni.hpp", "text/local_glyph_rasterizer_jni.hpp": "platform/android/src/text/local_glyph_rasterizer_jni.hpp" } } diff --git a/platform/android/src/text/collator.cpp b/platform/android/src/i18n/collator.cpp index 1cd6f3cab0..b3dd8e21b3 100644 --- a/platform/android/src/text/collator.cpp +++ b/platform/android/src/i18n/collator.cpp @@ -1,6 +1,5 @@ -#include <mbgl/style/expression/collator.hpp> +#include <mbgl/i18n/collator.hpp> #include <mbgl/text/language_tag.hpp> -#include <mbgl/util/platform.hpp> #include <jni/jni.hpp> @@ -94,8 +93,7 @@ jni::Local<jni::Object<Locale>> Locale::New(jni::JNIEnv& env, const jni::String& } // namespace android -namespace style { -namespace expression { +namespace platform { class Collator::Impl { public: @@ -142,10 +140,12 @@ public: // Because of the difference in locale-awareness, this means turning on case-sensitivity // can _potentially_ change compare results for strings that don't actually have any case // differences. - jni::Local<jni::String> jlhs = useUnaccent ? android::StringUtils::unaccent(*env, jni::Make<jni::String>(*env, lhs)) - : jni::Make<jni::String>(*env, lhs); - jni::Local<jni::String> jrhs = useUnaccent ? android::StringUtils::unaccent(*env, jni::Make<jni::String>(*env, rhs)) - : jni::Make<jni::String>(*env, rhs); + jni::Local<jni::String> jlhs = useUnaccent + ? android::StringUtils::unaccent(*env, jni::Make<jni::String>(*env, lhs)) + : jni::Make<jni::String>(*env, lhs); + jni::Local<jni::String> jrhs = useUnaccent + ? android::StringUtils::unaccent(*env, jni::Make<jni::String>(*env, rhs)) + : jni::Make<jni::String>(*env, rhs); jni::jint result = android::Collator::compare(*env, collator, jlhs, jrhs); @@ -190,6 +190,5 @@ std::string Collator::resolvedLocale() const { return impl->resolvedLocale(); } -} // namespace expression -} // namespace style +} // namespace platform } // namespace mbgl diff --git a/platform/android/src/text/collator_jni.hpp b/platform/android/src/i18n/collator_jni.hpp index dd3f845662..612f9b49f3 100644 --- a/platform/android/src/text/collator_jni.hpp +++ b/platform/android/src/i18n/collator_jni.hpp @@ -1,7 +1,5 @@ #pragma once -#include <mbgl/util/image.hpp> - #include <jni/jni.hpp> /* diff --git a/platform/android/src/jni_native.cpp b/platform/android/src/jni_native.cpp index df96ba9759..966dc6a007 100755..100644 --- a/platform/android/src/jni_native.cpp +++ b/platform/android/src/jni_native.cpp @@ -50,10 +50,10 @@ #include "snapshotter/map_snapshotter.hpp" #include "snapshotter/map_snapshot.hpp" #endif -#include "text/collator_jni.hpp" +#include "i18n/collator_jni.hpp" +#include "logger.hpp" #include "text/local_glyph_rasterizer_jni.hpp" #include "text/format_number_jni.hpp" -#include "logger.hpp" namespace mbgl { namespace android { diff --git a/platform/android/src/text/format_number_jni.hpp b/platform/android/src/text/format_number_jni.hpp index 1720038925..1b63012c6e 100644 --- a/platform/android/src/text/format_number_jni.hpp +++ b/platform/android/src/text/format_number_jni.hpp @@ -2,7 +2,7 @@ #include <jni/jni.hpp> -#include "collator_jni.hpp" +#include "../i18n/collator_jni.hpp" /* android::NumberFormat is the JNI wrapper diff --git a/platform/darwin/src/collator.mm b/platform/darwin/src/collator.mm index fe2b46ffa7..0f010c1df8 100644 --- a/platform/darwin/src/collator.mm +++ b/platform/darwin/src/collator.mm @@ -1,12 +1,11 @@ -#include <mbgl/style/expression/collator.hpp> +#include <mbgl/i18n/collator.hpp> #include <sstream> #import <Foundation/Foundation.h> namespace mbgl { -namespace style { -namespace expression { +namespace platform { class Collator::Impl { public: @@ -48,7 +47,6 @@ private: NSLocale* locale; }; - Collator::Collator(bool caseSensitive, bool diacriticSensitive, optional<std::string> locale_) : impl(std::make_shared<Impl>(caseSensitive, diacriticSensitive, std::move(locale_))) {} @@ -65,6 +63,5 @@ std::string Collator::resolvedLocale() const { return impl->resolvedLocale(); } -} // namespace expression -} // namespace style +} // namespace platform } // namespace mbgl diff --git a/platform/default/src/mbgl/text/collator.cpp b/platform/default/src/mbgl/i18n/collator.cpp index 2d85b2d466..f46accff8a 100644 --- a/platform/default/src/mbgl/text/collator.cpp +++ b/platform/default/src/mbgl/i18n/collator.cpp @@ -1,7 +1,6 @@ -#include <mbgl/style/expression/collator.hpp> -#include <mbgl/util/platform.hpp> #include <libnu/strcoll.h> #include <libnu/unaccent.h> +#include <mbgl/i18n/collator.hpp> #include <cstring> #include <sstream> @@ -20,31 +19,24 @@ */ namespace { -std::string unaccent(const std::string& str) -{ +std::string unaccent(const std::string& str) { std::stringstream output; char const *itr = str.c_str(), *nitr; - char const *end = itr + str.length(); - char lo[5] = { 0 }; + char const* end = itr + str.length(); + char lo[5] = {0}; - for (; itr < end; itr = nitr) - { + for (; itr < end; itr = nitr) { uint32_t code_point = 0; char const* buf = nullptr; nitr = _nu_tounaccent(itr, end, nu_utf8_read, &code_point, &buf, nullptr); - if (buf != nullptr) - { - do - { + if (buf != nullptr) { + do { buf = NU_CASEMAP_DECODING_FUNCTION(buf, &code_point); if (code_point == 0) break; output.write(lo, nu_utf8_write(code_point, lo) - lo); - } - while (code_point != 0); - } - else - { + } while (code_point != 0); + } else { output.write(itr, nitr - itr); } } @@ -54,8 +46,7 @@ std::string unaccent(const std::string& str) } // namespace namespace mbgl { -namespace style { -namespace expression { +namespace platform { class Collator::Impl { public: @@ -65,8 +56,7 @@ public: {} bool operator==(const Impl& other) const { - return caseSensitive == other.caseSensitive && - diacriticSensitive == other.diacriticSensitive; + return caseSensitive == other.caseSensitive && diacriticSensitive == other.diacriticSensitive; } int compare(const std::string& lhs, const std::string& rhs) const { @@ -77,40 +67,35 @@ public: return nu_strcasecoll(lhs.c_str(), rhs.c_str(), nu_utf8_read, nu_utf8_read); } else if (caseSensitive && !diacriticSensitive) { - return nu_strcoll(unaccent(lhs).c_str(), unaccent(rhs).c_str(), - nu_utf8_read, nu_utf8_read); + return nu_strcoll(unaccent(lhs).c_str(), unaccent(rhs).c_str(), nu_utf8_read, nu_utf8_read); } else { - return nu_strcasecoll(unaccent(lhs).c_str(), unaccent(rhs).c_str(), - nu_utf8_read, nu_utf8_read); + return nu_strcasecoll(unaccent(lhs).c_str(), unaccent(rhs).c_str(), nu_utf8_read, nu_utf8_read); } } std::string resolvedLocale() const { return ""; } + private: bool caseSensitive; bool diacriticSensitive; }; - -Collator::Collator(bool caseSensitive, bool diacriticSensitive, optional<std::string> locale_) - : impl(std::make_shared<Impl>(caseSensitive, diacriticSensitive, std::move(locale_))) -{} +int Collator::compare(const std::string& lhs, const std::string& rhs) const { + return impl->compare(lhs, rhs); +} bool Collator::operator==(const Collator& other) const { return *impl == *(other.impl); } -int Collator::compare(const std::string& lhs, const std::string& rhs) const { - return impl->compare(lhs, rhs); -} - std::string Collator::resolvedLocale() const { return impl->resolvedLocale(); } +Collator::Collator(bool caseSensitive, bool diacriticSensitive, optional<std::string> locale) + : impl(std::make_shared<Impl>(caseSensitive, diacriticSensitive, std::move(locale))) {} -} // namespace expression -} // namespace style +} // namespace platform } // namespace mbgl diff --git a/platform/linux/config.cmake b/platform/linux/config.cmake index 3a0fd91d36..01c46c9fcb 100644 --- a/platform/linux/config.cmake +++ b/platform/linux/config.cmake @@ -50,7 +50,7 @@ macro(mbgl_platform_core) PRIVATE platform/default/src/mbgl/util/string_stdlib.cpp PRIVATE platform/default/src/mbgl/util/thread.cpp PRIVATE platform/default/src/mbgl/text/bidi.cpp - PRIVATE platform/default/src/mbgl/text/collator.cpp + PRIVATE platform/default/src/mbgl/i18n/collator.cpp PRIVATE platform/default/src/mbgl/layermanager/layer_manager.cpp PRIVATE platform/default/src/mbgl/text/local_glyph_rasterizer.cpp PRIVATE platform/default/src/mbgl/util/thread_local.cpp |