Skip to content

Commit 0b55a23

Browse files
committed
refactor(core,jni): remove the the bridges of configuration APIs
These APIs are useful when call them in C/C++, but they are hard to use with good performance for Java/Kotlin.
1 parent 731cf0a commit 0b55a23

File tree

3 files changed

+0
-267
lines changed

3 files changed

+0
-267
lines changed

app/src/main/java/com/osfans/trime/core/Rime.java

-30
Original file line numberDiff line numberDiff line change
@@ -676,27 +676,6 @@ public static native boolean deployRimeConfigFile(
676676

677677
public static native boolean selectRimeSchema(@NonNull String schemaId);
678678

679-
// configuration
680-
public static native Boolean config_get_bool(String name, String key);
681-
682-
public static native boolean config_set_bool(String name, String key, boolean value);
683-
684-
public static native Integer config_get_int(String name, String key);
685-
686-
public static native boolean config_set_int(String name, String key, int value);
687-
688-
public static native Double config_get_double(String name, String key);
689-
690-
public static native boolean config_set_double(String name, String key, double value);
691-
692-
public static native String config_get_string(String name, String key);
693-
694-
public static native boolean config_set_string(String name, String key, String value);
695-
696-
public static native int config_list_size(String name, String key);
697-
698-
public static native List config_get_list(String name, String key);
699-
700679
@Nullable
701680
public static native Map<String, Object> getRimeConfigMap(
702681
@NonNull String configId, @NonNull String key);
@@ -736,15 +715,6 @@ public static native Map<String, Object> getRimeConfigMap(
736715

737716
public static native int get_keycode_by_name(String name);
738717

739-
// customize setting
740-
public static native boolean customize_bool(String name, String key, boolean value);
741-
742-
public static native boolean customize_int(String name, String key, int value);
743-
744-
public static native boolean customize_double(String name, String key, double value);
745-
746-
public static native boolean customize_string(String name, String key, String value);
747-
748718
@NonNull
749719
public static native SchemaListItem[] getAvailableRimeSchemaList();
750720

app/src/main/jni/librime_jni/levers.cc

-70
Original file line numberDiff line numberDiff line change
@@ -7,76 +7,6 @@ static RimeLeversApi* get_levers() {
77
return (RimeLeversApi*) (RimeFindModule("levers")->get_api());
88
}
99

10-
extern "C"
11-
JNIEXPORT jboolean JNICALL
12-
Java_com_osfans_trime_core_Rime_customize_1bool(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jboolean value) {
13-
RimeLeversApi* levers = get_levers();
14-
const char* s = env->GetStringUTFChars(name, nullptr);
15-
RimeCustomSettings* settings = levers->custom_settings_init(s, TAG);
16-
Bool b = levers->load_settings(settings);
17-
env->ReleaseStringUTFChars(name, s);
18-
if (b) {
19-
s = env->GetStringUTFChars(key, nullptr);
20-
if (levers->customize_bool(settings, s, value)) levers->save_settings(settings);
21-
env->ReleaseStringUTFChars(key, s);
22-
}
23-
levers->custom_settings_destroy(settings);
24-
return b;
25-
}
26-
27-
extern "C"
28-
JNIEXPORT jboolean JNICALL
29-
Java_com_osfans_trime_core_Rime_customize_1int(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jint value) {
30-
RimeLeversApi* levers = get_levers();
31-
const char* s = env->GetStringUTFChars(name, nullptr);
32-
RimeCustomSettings* settings = levers->custom_settings_init(s, TAG);
33-
Bool b = levers->load_settings(settings);
34-
env->ReleaseStringUTFChars(name, s);
35-
if (b) {
36-
s = env->GetStringUTFChars(key, nullptr);
37-
if (levers->customize_int(settings, s, value)) levers->save_settings(settings);
38-
env->ReleaseStringUTFChars(key, s);
39-
}
40-
levers->custom_settings_destroy(settings);
41-
return b;
42-
}
43-
44-
extern "C"
45-
JNIEXPORT jboolean JNICALL
46-
Java_com_osfans_trime_core_Rime_customize_1double(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jdouble value) {
47-
RimeLeversApi* levers = get_levers();
48-
const char* s = env->GetStringUTFChars(name, nullptr);
49-
RimeCustomSettings* settings = levers->custom_settings_init(s, TAG);
50-
Bool b = levers->load_settings(settings);
51-
env->ReleaseStringUTFChars(name, s);
52-
if (b) {
53-
s = env->GetStringUTFChars(key, nullptr);
54-
if (levers->customize_double(settings, s, value)) levers->save_settings(settings);
55-
env->ReleaseStringUTFChars(key, s);
56-
}
57-
levers->custom_settings_destroy(settings);
58-
return b;
59-
}
60-
61-
extern "C"
62-
JNIEXPORT jboolean JNICALL
63-
Java_com_osfans_trime_core_Rime_customize_1string(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jstring value) {
64-
RimeLeversApi* levers = get_levers();
65-
const char* s = env->GetStringUTFChars(name, nullptr);
66-
RimeCustomSettings* settings = levers->custom_settings_init(s, TAG);
67-
Bool b = levers->load_settings(settings);
68-
env->ReleaseStringUTFChars(name, s);
69-
if (b) {
70-
s = env->GetStringUTFChars(key, nullptr);
71-
const char* c_value = env->GetStringUTFChars(value, nullptr);
72-
if (levers->customize_string(settings, s, c_value)) levers->save_settings(settings);
73-
env->ReleaseStringUTFChars(key, s);
74-
env->ReleaseStringUTFChars(value, c_value);
75-
}
76-
levers->custom_settings_destroy(settings);
77-
return b;
78-
}
79-
8010
extern "C"
8111
JNIEXPORT jobjectArray JNICALL
8212
Java_com_osfans_trime_core_Rime_getAvailableRimeSchemaList(JNIEnv *env, jclass /* thiz */) {

app/src/main/jni/librime_jni/rime_jni.cc

-167
Original file line numberDiff line numberDiff line change
@@ -456,173 +456,6 @@ Java_com_osfans_trime_core_Rime_selectRimeSchema(JNIEnv *env, jclass /* thiz */,
456456
return Rime::Instance().selectSchema(schema);
457457
}
458458

459-
// configuration
460-
extern "C"
461-
JNIEXPORT jobject JNICALL
462-
Java_com_osfans_trime_core_Rime_config_1get_1bool(JNIEnv *env, jclass /* thiz */, jstring name, jstring key) {
463-
const char* s = env->GetStringUTFChars(name, nullptr);
464-
RimeConfig config = {0};
465-
Bool b = RimeConfigOpen(s, &config);
466-
env->ReleaseStringUTFChars(name, s);
467-
Bool value;
468-
if (b) {
469-
s = env->GetStringUTFChars(key, nullptr);
470-
b = RimeConfigGetBool(&config, s, &value);
471-
env->ReleaseStringUTFChars(key, s);
472-
}
473-
RimeConfigClose(&config);
474-
if (!b) return nullptr;
475-
jclass jc = env->FindClass("java/lang/Boolean");
476-
jmethodID ctorID = env->GetMethodID(jc, "<init>", "(Z)V");
477-
auto ret = env->NewObject(jc, ctorID, value);
478-
env->DeleteLocalRef(jc);
479-
return ret;
480-
}
481-
482-
extern "C"
483-
JNIEXPORT jboolean JNICALL
484-
Java_com_osfans_trime_core_Rime_config_1set_1bool(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jboolean value) {
485-
const char* s = env->GetStringUTFChars(name, nullptr);
486-
RimeConfig config = {nullptr};
487-
Bool b = RimeConfigOpen(s, &config);
488-
env->ReleaseStringUTFChars(name, s);
489-
if (b) {
490-
s = env->GetStringUTFChars(key, nullptr);
491-
b = RimeConfigSetBool(&config, s, value);
492-
env->ReleaseStringUTFChars(key, s);
493-
}
494-
RimeConfigClose(&config);
495-
return b;
496-
}
497-
498-
extern "C"
499-
JNIEXPORT jobject JNICALL
500-
Java_com_osfans_trime_core_Rime_config_1get_1int(JNIEnv *env, jclass /* thiz */, jstring name, jstring key) {
501-
const char* s = env->GetStringUTFChars(name, nullptr);
502-
RimeConfig config = {nullptr};
503-
Bool b = RimeConfigOpen(s, &config);
504-
env->ReleaseStringUTFChars(name, s);
505-
int value;
506-
if (b) {
507-
s = env->GetStringUTFChars(key, nullptr);
508-
b = RimeConfigGetInt(&config, s, &value);
509-
env->ReleaseStringUTFChars(key, s);
510-
}
511-
RimeConfigClose(&config);
512-
if (!b) return nullptr;
513-
jclass jc = env->FindClass("java/lang/Integer");
514-
jmethodID ctorID = env->GetMethodID(jc, "<init>", "(I)V");
515-
auto ret = env->NewObject(jc, ctorID, value);
516-
env->DeleteLocalRef(jc);
517-
return ret;
518-
}
519-
520-
extern "C"
521-
JNIEXPORT jboolean JNICALL
522-
Java_com_osfans_trime_core_Rime_config_1set_1int(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jint value) {
523-
const char* s = env->GetStringUTFChars(name, nullptr);
524-
RimeConfig config = {nullptr};
525-
Bool b = RimeConfigOpen(s, &config);
526-
env->ReleaseStringUTFChars(name, s);
527-
if (b) {
528-
s = env->GetStringUTFChars(key, nullptr);
529-
b = RimeConfigSetInt(&config, s, value);
530-
env->ReleaseStringUTFChars(key, s);
531-
}
532-
RimeConfigClose(&config);
533-
return b;
534-
}
535-
536-
extern "C"
537-
JNIEXPORT jobject JNICALL
538-
Java_com_osfans_trime_core_Rime_config_1get_1double(JNIEnv *env, jclass /* thiz */, jstring name, jstring key) {
539-
const char* s = env->GetStringUTFChars(name, nullptr);
540-
RimeConfig config = {nullptr};
541-
Bool b = RimeConfigOpen(s, &config);
542-
env->ReleaseStringUTFChars(name, s);
543-
double value;
544-
if (b) {
545-
s = env->GetStringUTFChars(key, nullptr);
546-
b = RimeConfigGetDouble(&config, s, &value);
547-
env->ReleaseStringUTFChars(key, s);
548-
}
549-
RimeConfigClose(&config);
550-
if (!b) return nullptr;
551-
jclass jc = env->FindClass("java/lang/Double");
552-
jmethodID ctorID = env->GetMethodID(jc, "<init>", "(D)V");
553-
auto ret = env->NewObject(jc, ctorID, value);
554-
env->DeleteLocalRef(jc);
555-
return ret;
556-
}
557-
558-
extern "C"
559-
JNIEXPORT jboolean JNICALL
560-
Java_com_osfans_trime_core_Rime_config_1set_1double(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jdouble value) {
561-
const char* s = env->GetStringUTFChars(name, nullptr);
562-
RimeConfig config = {0};
563-
Bool b = RimeConfigOpen(s, &config);
564-
env->ReleaseStringUTFChars(name, s);
565-
if (b) {
566-
s = env->GetStringUTFChars(key, nullptr);
567-
b = RimeConfigSetDouble(&config, s, value);
568-
env->ReleaseStringUTFChars(key, s);
569-
}
570-
RimeConfigClose(&config);
571-
return b;
572-
}
573-
574-
extern "C"
575-
JNIEXPORT jstring JNICALL
576-
Java_com_osfans_trime_core_Rime_config_1get_1string(JNIEnv *env, jclass /* thiz */, jstring name, jstring key) {
577-
const char* s = env->GetStringUTFChars(name, nullptr);
578-
RimeConfig config = {nullptr};
579-
Bool b = RimeConfigOpen(s, &config);
580-
env->ReleaseStringUTFChars(name, s);
581-
char value[MAX_BUFFER_LENGTH] = {0};
582-
if (b) {
583-
s = env->GetStringUTFChars(key, nullptr);
584-
b = RimeConfigGetString(&config, s, value, MAX_BUFFER_LENGTH);
585-
env->ReleaseStringUTFChars(key, s);
586-
}
587-
RimeConfigClose(&config);
588-
return b ? env->NewStringUTF(value) : nullptr;
589-
}
590-
591-
extern "C"
592-
JNIEXPORT jboolean JNICALL
593-
Java_com_osfans_trime_core_Rime_config_1set_1string(JNIEnv *env, jclass /* thiz */, jstring name, jstring key, jstring value) {
594-
const char* s = env->GetStringUTFChars(name, nullptr);
595-
RimeConfig config = {nullptr};
596-
Bool b = RimeConfigOpen(s, &config);
597-
env->ReleaseStringUTFChars(name, s);
598-
if (b) {
599-
s = env->GetStringUTFChars(key, nullptr);
600-
const char* v = env->GetStringUTFChars(value, nullptr);
601-
b = RimeConfigSetString(&config, s, v);
602-
env->ReleaseStringUTFChars(key, s);
603-
env->ReleaseStringUTFChars(key, v);
604-
}
605-
RimeConfigClose(&config);
606-
return b;
607-
}
608-
609-
extern "C"
610-
JNIEXPORT jint JNICALL
611-
Java_com_osfans_trime_core_Rime_config_1list_1size(JNIEnv *env, jclass /* thiz */, jstring name, jstring key) {
612-
const char* s = env->GetStringUTFChars(name, nullptr);
613-
RimeConfig config = {nullptr};
614-
Bool b = RimeConfigOpen(s, &config);
615-
env->ReleaseStringUTFChars(name, s);
616-
int value = 0;
617-
if (b) {
618-
s = env->GetStringUTFChars(key, nullptr);
619-
value = RimeConfigListSize(&config, s);
620-
env->ReleaseStringUTFChars(key, s);
621-
}
622-
RimeConfigClose(&config);
623-
return value;
624-
}
625-
626459
//testing
627460
extern "C"
628461
JNIEXPORT jboolean JNICALL

0 commit comments

Comments
 (0)