1
1
/*
2
- * SPDX-FileCopyrightText: 2024 Rime community
2
+ * SPDX-FileCopyrightText: 2015 - 2025 Rime community
3
3
*
4
4
* SPDX-License-Identifier: GPL-3.0-or-later
5
5
*/
6
-
7
- // SPDX-FileCopyrightText: 2015 - 2024 Rime community
8
- //
9
- // SPDX-License-Identifier: GPL-3.0-or-later
10
-
11
- #ifndef TRIME_JNI_UTILS_H
12
- #define TRIME_JNI_UTILS_H
6
+ #pragma once
13
7
14
8
#include < jni.h>
15
9
#include < utf8.h>
@@ -22,12 +16,6 @@ static inline void throwJavaException(JNIEnv *env, const char *msg) {
22
16
env->DeleteLocalRef (c);
23
17
}
24
18
25
- static inline jint extract_int (JNIEnv *env, jobject f) {
26
- return env->CallIntMethod (
27
- f,
28
- env->GetMethodID (env->FindClass (" java/lang/Integer" ), " intValue" , " ()I" ));
29
- }
30
-
31
19
class CString {
32
20
private:
33
21
JNIEnv *env_;
@@ -89,28 +77,12 @@ class JString {
89
77
jstring operator *() { return jstring_; }
90
78
};
91
79
92
- class JClass {
93
- private:
94
- JNIEnv *env_;
95
- jclass jclass_;
96
-
97
- public:
98
- JClass (JNIEnv *env, const char *name)
99
- : env_(env), jclass_(env->FindClass (name)) {}
100
-
101
- ~JClass () { env_->DeleteLocalRef (jclass_); }
102
-
103
- operator jclass () { return jclass_; }
104
-
105
- jclass operator *() { return jclass_; }
106
- };
107
-
108
80
class JEnv {
109
81
private:
110
- JNIEnv *env;
82
+ JNIEnv *env = nullptr ;
111
83
112
84
public:
113
- JEnv (JavaVM *jvm) {
85
+ explicit JEnv (JavaVM *jvm) {
114
86
if (jvm->GetEnv (reinterpret_cast <void **>(&env), JNI_VERSION_1_6) ==
115
87
JNI_EDETACHED) {
116
88
jvm->AttachCurrentThread (&env, nullptr );
@@ -136,18 +108,6 @@ class GlobalRefSingleton {
136
108
jclass Boolean;
137
109
jmethodID BooleanInit;
138
110
139
- jclass HashMap;
140
- jmethodID HashMapInit;
141
- jmethodID HashMapPut;
142
-
143
- jclass ArrayList;
144
- jmethodID ArrayListInit;
145
- jmethodID ArrayListAdd;
146
-
147
- jclass Pair;
148
- jmethodID PairFirst;
149
- jmethodID PairSecond;
150
-
151
111
jclass Rime;
152
112
jmethodID HandleRimeMessage;
153
113
@@ -180,7 +140,7 @@ class GlobalRefSingleton {
180
140
jclass KeyEvent;
181
141
jmethodID KeyEventInit;
182
142
183
- GlobalRefSingleton (JavaVM *jvm_) : jvm(jvm_) {
143
+ explicit GlobalRefSingleton (JavaVM *jvm_) : jvm(jvm_) {
184
144
JNIEnv *env;
185
145
jvm->AttachCurrentThread (&env, nullptr );
186
146
@@ -198,23 +158,6 @@ class GlobalRefSingleton {
198
158
env->NewGlobalRef (env->FindClass (" java/lang/Boolean" )));
199
159
BooleanInit = env->GetMethodID (Boolean, " <init>" , " (Z)V" );
200
160
201
- HashMap = reinterpret_cast <jclass>(
202
- env->NewGlobalRef (env->FindClass (" java/util/HashMap" )));
203
- HashMapInit = env->GetMethodID (HashMap, " <init>" , " ()V" );
204
- HashMapPut = env->GetMethodID (
205
- HashMap, " put" ,
206
- " (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" );
207
-
208
- ArrayList = reinterpret_cast <jclass>(
209
- env->NewGlobalRef (env->FindClass (" java/util/ArrayList" )));
210
- ArrayListInit = env->GetMethodID (ArrayList, " <init>" , " (I)V" );
211
- ArrayListAdd = env->GetMethodID (ArrayList, " add" , " (ILjava/lang/Object;)V" );
212
-
213
- Pair = reinterpret_cast <jclass>(
214
- env->NewGlobalRef (env->FindClass (" kotlin/Pair" )));
215
- PairFirst = env->GetMethodID (Pair, " getFirst" , " ()Ljava/lang/Object;" );
216
- PairSecond = env->GetMethodID (Pair, " getSecond" , " ()Ljava/lang/Object;" );
217
-
218
161
Rime = reinterpret_cast <jclass>(
219
162
env->NewGlobalRef (env->FindClass (" com/osfans/trime/core/Rime" )));
220
163
HandleRimeMessage = env->GetStaticMethodID (Rime, " handleRimeMessage" ,
@@ -277,9 +220,7 @@ class GlobalRefSingleton {
277
220
env->GetMethodID (KeyEvent, " <init>" , " (IILjava/lang/String;)V" );
278
221
}
279
222
280
- const JEnv AttachEnv () const { return JEnv (jvm); }
223
+ [[nodiscard]] JEnv AttachEnv () const { return JEnv (jvm); }
281
224
};
282
225
283
226
extern GlobalRefSingleton *GlobalRef;
284
-
285
- #endif // TRIME_JNI_UTILS_H
0 commit comments