From d352f9bb11b30844cca90e8aabdb1f02fa9e1ee2 Mon Sep 17 00:00:00 2001 From: Patrick Goldinger Date: Thu, 1 Jun 2023 22:04:36 +0200 Subject: [PATCH] Fix naming in jni_exception utils --- app/src/main/cpp/FlorisApplication.cpp | 29 +++++------ .../main/cpp/LatinLanguageProviderService.cpp | 2 +- app/src/main/cpp/LatinNlpSession.cpp | 52 +++++++++++-------- app/src/main/cpp/utils/jni_exception.h | 2 +- 4 files changed, 46 insertions(+), 39 deletions(-) diff --git a/app/src/main/cpp/FlorisApplication.cpp b/app/src/main/cpp/FlorisApplication.cpp index 9b2e023b..4acf86ce 100644 --- a/app/src/main/cpp/FlorisApplication.cpp +++ b/app/src/main/cpp/FlorisApplication.cpp @@ -14,22 +14,21 @@ * limitations under the License. */ -#include -#include -#include -#include +#include "fl_icuext.hpp" +#include "utils/jni_exception.h" #include "utils/jni_utils.h" -#include "fl_icuext.hpp" +#include -#pragma ide diagnostic ignored "UnusedLocalVariable" - -extern "C" -JNIEXPORT jint JNICALL -Java_dev_patrickgold_florisboard_FlorisApplication_00024Companion_nativeInitICUData( - JNIEnv *env, jobject, fl::jni::NativeStr path) -{ - auto path_str = fl::jni::j2std_string(env, path); - auto status = fl::icuext::loadAndSetCommonData(path_str); - return status; +extern "C" JNIEXPORT jint JNICALL +Java_dev_patrickgold_florisboard_FlorisApplication_00024Companion_nativeInitICUData( // + JNIEnv* env, + jobject, + fl::jni::NativeStr path +) { + return fl::jni::runInExceptionContainer(env, [&] { + auto path_str = fl::jni::j2std_string(env, path); + auto status = fl::icuext::loadAndSetCommonData(path_str); + return status; + }); } diff --git a/app/src/main/cpp/LatinLanguageProviderService.cpp b/app/src/main/cpp/LatinLanguageProviderService.cpp index 363ef18f..bd750da0 100644 --- a/app/src/main/cpp/LatinLanguageProviderService.cpp +++ b/app/src/main/cpp/LatinLanguageProviderService.cpp @@ -26,7 +26,7 @@ Java_dev_patrickgold_florisboard_ime_nlp_latin_LatinLanguageProviderService_0002 jobject, fl::jni::NativeStr j_dict_path ) { - return fl::jni::run_in_exception_container(env, [&] { + return fl::jni::runInExceptionContainer(env, [&] { auto dict_path = fl::jni::j2std_string(env, j_dict_path); auto dict = fl::nlp::LatinDictionary(0); dict.file_path = dict_path; diff --git a/app/src/main/cpp/LatinNlpSession.cpp b/app/src/main/cpp/LatinNlpSession.cpp index 91a507a7..6976512d 100644 --- a/app/src/main/cpp/LatinNlpSession.cpp +++ b/app/src/main/cpp/LatinNlpSession.cpp @@ -30,7 +30,7 @@ Java_dev_patrickgold_florisboard_ime_nlp_latin_LatinNlpSession_00024CXX_nativeIn JNIEnv* env, jobject ) { - return fl::jni::run_in_exception_container(env, [&] { + return fl::jni::runInExceptionContainer(env, [&] { auto* session = new fl::nlp::LatinNlpSession(); return reinterpret_cast(session); }); @@ -42,7 +42,7 @@ Java_dev_patrickgold_florisboard_ime_nlp_latin_LatinNlpSession_00024CXX_nativeDi jobject, jlong native_ptr ) { - return fl::jni::run_in_exception_container(env, [&] { + return fl::jni::runInExceptionContainer(env, [&] { auto* session = reinterpret_cast(native_ptr); delete session; }); @@ -55,7 +55,7 @@ Java_dev_patrickgold_florisboard_ime_nlp_latin_LatinNlpSession_00024CXX_nativeLo jlong native_ptr, fl::jni::NativeStr j_config_path ) { - return fl::jni::run_in_exception_container(env, [&] { + return fl::jni::runInExceptionContainer(env, [&] { auto* session = reinterpret_cast(native_ptr); auto config_path = fl::jni::j2std_string(env, j_config_path); session->loadConfigFromFile(config_path); @@ -71,14 +71,16 @@ Java_dev_patrickgold_florisboard_ime_nlp_latin_LatinNlpSession_00024CXX_nativeSp fl::jni::NativeList j_prev_words, jint flags ) { - auto* session = reinterpret_cast(native_ptr); - auto word = fl::jni::j2std_string(env, j_word); - auto prev_words = fl::jni::j2std_list(env, j_prev_words); - auto spelling_result = session->spell(word, prev_words, flags); - auto json = nlohmann::json(); - json["suggestionAttributes"] = spelling_result.suggestion_attributes; - json["suggestions"] = spelling_result.suggestions; - return fl::jni::std2j_string(env, json.dump()); + return fl::jni::runInExceptionContainer(env, [&] { + auto* session = reinterpret_cast(native_ptr); + auto word = fl::jni::j2std_string(env, j_word); + auto prev_words = fl::jni::j2std_list(env, j_prev_words); + auto spelling_result = session->spell(word, prev_words, flags); + auto json = nlohmann::json(); + json["suggestionAttributes"] = spelling_result.suggestion_attributes; + json["suggestions"] = spelling_result.suggestions; + return fl::jni::std2j_string(env, json.dump()); + }); } extern "C" JNIEXPORT fl::jni::NativeList JNICALL @@ -90,15 +92,21 @@ Java_dev_patrickgold_florisboard_ime_nlp_latin_LatinNlpSession_00024CXX_nativeSu fl::jni::NativeList j_prev_words, jint flags ) { - auto* session = reinterpret_cast(native_ptr); - auto word = fl::jni::j2std_string(env, j_word); - auto prev_words = fl::jni::j2std_list(env, j_prev_words); - fl::nlp::SuggestionResults suggestion_results; - session->suggest(word, prev_words, flags, suggestion_results); - std::vector candidates; - candidates.reserve(suggestion_results.size()); - for (auto& candidate_ptr : suggestion_results) { - candidates.push_back(std::move(*candidate_ptr)); - } - return fl::jni::std2j_list(env, candidates); + return fl::jni::runInExceptionContainer(env, [&] { + auto* session = reinterpret_cast(native_ptr); + auto word = fl::jni::j2std_string(env, j_word); + if (word == "null") { + int* x = nullptr; + *x = 1; + } + auto prev_words = fl::jni::j2std_list(env, j_prev_words); + fl::nlp::SuggestionResults suggestion_results; + session->suggest(word, prev_words, flags, suggestion_results); + std::vector candidates; + candidates.reserve(suggestion_results.size()); + for (auto& candidate_ptr : suggestion_results) { + candidates.push_back(std::move(*candidate_ptr)); + } + return fl::jni::std2j_list(env, candidates); + }); } diff --git a/app/src/main/cpp/utils/jni_exception.h b/app/src/main/cpp/utils/jni_exception.h index b74eb483..dab67f0e 100644 --- a/app/src/main/cpp/utils/jni_exception.h +++ b/app/src/main/cpp/utils/jni_exception.h @@ -34,7 +34,7 @@ namespace fl::jni { template -auto run_in_exception_container(JNIEnv* env, F&& block) noexcept -> std::invoke_result_t { +auto runInExceptionContainer(JNIEnv* env, F&& block) noexcept -> std::invoke_result_t { jclass exception_class = nullptr; const char* exception_message = nullptr;