diff options
Diffstat (limited to 'platform/android/src/text/collator.cpp')
-rw-r--r-- | platform/android/src/text/collator.cpp | 71 |
1 files changed, 34 insertions, 37 deletions
diff --git a/platform/android/src/text/collator.cpp b/platform/android/src/text/collator.cpp index 86e72a1dac..04da53832a 100644 --- a/platform/android/src/text/collator.cpp +++ b/platform/android/src/text/collator.cpp @@ -16,20 +16,20 @@ void Collator::registerNative(jni::JNIEnv& env) { jni::Class<Collator>::Singleton(env); } -jni::Object<Collator> Collator::getInstance(jni::JNIEnv& env, jni::Object<Locale> locale) { - static auto javaClass = jni::Class<Collator>::Singleton(env); +jni::Local<jni::Object<Collator>> Collator::getInstance(jni::JNIEnv& env, const jni::Object<Locale>& locale) { + static auto& javaClass = jni::Class<Collator>::Singleton(env); static auto method = javaClass.GetStaticMethod<jni::Object<Collator> (jni::Object<Locale>)>(env, "getInstance"); return javaClass.Call(env, method, locale); } -void Collator::setStrength(jni::JNIEnv& env, jni::Object<Collator> collator, jni::jint strength) { - static auto javaClass = jni::Class<Collator>::Singleton(env); +void Collator::setStrength(jni::JNIEnv& env, const jni::Object<Collator>& collator, jni::jint strength) { + static auto& javaClass = jni::Class<Collator>::Singleton(env); static auto method = javaClass.GetMethod<void (jni::jint)>(env, "setStrength"); collator.Call(env, method, strength); } -jni::jint Collator::compare(jni::JNIEnv& env, jni::Object<Collator> collator, jni::String lhs, jni::String rhs) { - static auto javaClass = jni::Class<Collator>::Singleton(env); +jni::jint Collator::compare(jni::JNIEnv& env, const jni::Object<Collator>& collator, const jni::String& lhs, const jni::String& rhs) { + static auto& javaClass = jni::Class<Collator>::Singleton(env); auto static method = javaClass.GetMethod<jni::jint (jni::String, jni::String)>(env, "compare"); return collator.Call(env, method, lhs, rhs); } @@ -54,32 +54,32 @@ jni::String Locale::toLanguageTag(jni::JNIEnv& env, jni::Object<Locale> locale) } */ -jni::String Locale::getLanguage(jni::JNIEnv& env, jni::Object<Locale> locale) { - static auto javaClass = jni::Class<Locale>::Singleton(env); +jni::Local<jni::String> Locale::getLanguage(jni::JNIEnv& env, const jni::Object<Locale>& locale) { + static auto& javaClass = jni::Class<Locale>::Singleton(env); static auto method = javaClass.GetMethod<jni::String ()>(env, "getLanguage"); return locale.Call(env, method); } -jni::String Locale::getCountry(jni::JNIEnv& env, jni::Object<Locale> locale) { - static auto javaClass = jni::Class<Locale>::Singleton(env); +jni::Local<jni::String> Locale::getCountry(jni::JNIEnv& env, const jni::Object<Locale>& locale) { + static auto& javaClass = jni::Class<Locale>::Singleton(env); static auto method = javaClass.GetMethod<jni::String ()>(env, "getCountry"); return locale.Call(env, method); } -jni::Object<Locale> Locale::getDefault(jni::JNIEnv& env) { - static auto javaClass = jni::Class<Locale>::Singleton(env); +jni::Local<jni::Object<Locale>> Locale::getDefault(jni::JNIEnv& env) { + static auto& javaClass = jni::Class<Locale>::Singleton(env); static auto method = javaClass.GetStaticMethod<jni::Object<Locale> ()>(env, "getDefault"); return javaClass.Call(env, method); } -jni::Object<Locale> Locale::New(jni::JNIEnv& env, jni::String language) { - static auto javaClass = jni::Class<Locale>::Singleton(env); +jni::Local<jni::Object<Locale>> Locale::New(jni::JNIEnv& env, const jni::String& language) { + static auto& javaClass = jni::Class<Locale>::Singleton(env); static auto constructor = javaClass.GetConstructor<jni::String>(env); return javaClass.New(env, constructor, language); } -jni::Object<Locale> Locale::New(jni::JNIEnv& env, jni::String language, jni::String region) { - static auto javaClass = jni::Class<Locale>::Singleton(env); +jni::Local<jni::Object<Locale>> Locale::New(jni::JNIEnv& env, const jni::String& language, const jni::String& region) { + static auto& javaClass = jni::Class<Locale>::Singleton(env); static auto constructor = javaClass.GetConstructor<jni::String, jni::String>(env); return javaClass.New(env, constructor, language, region); } @@ -98,26 +98,25 @@ public: { LanguageTag languageTag = locale_ ? LanguageTag::fromBCP47(*locale_) : LanguageTag(); if (!languageTag.language) { - locale = android::Locale::getDefault(*env).NewGlobalRef(*env); + locale = jni::NewGlobal(*env, + android::Locale::getDefault(*env)); } else if (!languageTag.region) { - locale = android::Locale::New(*env, - jni::Make<jni::String>(*env, *(languageTag.language))) - .NewGlobalRef(*env); + locale = jni::NewGlobal(*env, + android::Locale::New(*env, jni::Make<jni::String>(*env, *languageTag.language))); } else { - locale = android::Locale::New(*env, - jni::Make<jni::String>(*env, *(languageTag.language)), - jni::Make<jni::String>(*env, *(languageTag.region))) - .NewGlobalRef(*env); + locale = jni::NewGlobal(*env, + android::Locale::New(*env, jni::Make<jni::String>(*env, *languageTag.language), + jni::Make<jni::String>(*env, *languageTag.region))); } - collator = android::Collator::getInstance(*env, *locale).NewGlobalRef(*env);; + collator = jni::NewGlobal(*env, android::Collator::getInstance(*env, locale)); if (!diacriticSensitive && !caseSensitive) { - android::Collator::setStrength(*env, *collator, 0 /*PRIMARY*/); + android::Collator::setStrength(*env, collator, 0 /*PRIMARY*/); } else if (diacriticSensitive && !caseSensitive) { - android::Collator::setStrength(*env, *collator, 1 /*SECONDARY*/); + android::Collator::setStrength(*env, collator, 1 /*SECONDARY*/); } else if (caseSensitive) { // If we're case-sensitive and diacritic-sensitive, we use a case-sensitive collator // and a fallback implementation of diacritic-insensitivity. - android::Collator::setStrength(*env, *collator, 2 /*TERTIARY*/); + android::Collator::setStrength(*env, collator, 2 /*TERTIARY*/); } } @@ -135,23 +134,21 @@ 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 = jni::SeizeLocal(*env, jni::Make<jni::String>(*env, useUnaccent ? + jni::Local<jni::String> jlhs = jni::Make<jni::String>(*env, useUnaccent ? platform::unaccent(lhs) : - lhs)); - jni::Local<jni::String> jrhs = jni::SeizeLocal(*env, jni::Make<jni::String>(*env, useUnaccent ? + lhs); + jni::Local<jni::String> jrhs = jni::Make<jni::String>(*env, useUnaccent ? platform::unaccent(rhs) : - rhs)); + rhs); - jni::jint result = android::Collator::compare(*env, *collator, *jlhs, *jrhs); + jni::jint result = android::Collator::compare(*env, collator, jlhs, jrhs); return result; } std::string resolvedLocale() const { - std::string language = jni::Make<std::string>(*env, - *jni::SeizeLocal(*env, android::Locale::getLanguage(*env, *locale))); - std::string region = jni::Make<std::string>(*env, - *jni::SeizeLocal(*env, android::Locale::getCountry(*env, *locale))); + std::string language = jni::Make<std::string>(*env, android::Locale::getLanguage(*env, locale)); + std::string region = jni::Make<std::string>(*env, android::Locale::getCountry(*env, locale)); optional<std::string> resultLanguage; if (!language.empty()) resultLanguage = language; |