mirror of
https://github.com/netbirdio/gomobile-tvos-fork.git
synced 2026-05-22 18:43:29 -07:00
bind,internal/importers: handle Java long constants correctly
Change-Id: Idff789038e7470ef5b12798273fc67165d57f4dc Reviewed-on: https://go-review.googlesource.com/35293 Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
Vendored
+48
-1
@@ -6,6 +6,8 @@
|
||||
|
||||
static jclass class_java_lang_Float;
|
||||
static jmethodID m_java_lang_Float_toString;
|
||||
static jclass class_java_lang_Long;
|
||||
static jmethodID m_java_lang_Long_toString;
|
||||
static jclass class_java_lang_Object;
|
||||
static jmethodID m_java_lang_Object_toString;
|
||||
static jclass class_java_lang_Runnable;
|
||||
@@ -15,11 +17,14 @@ static jclass class_java_lang_Character_Subset;
|
||||
static jmethodID m_java_lang_Character_Subset_toString;
|
||||
|
||||
void init_proxies() {
|
||||
JNIEnv *env = go_seq_push_local_frame(5);
|
||||
JNIEnv *env = go_seq_push_local_frame(6);
|
||||
jclass clazz;
|
||||
clazz = (*env)->FindClass(env, "java/lang/Float");
|
||||
class_java_lang_Float = (*env)->NewGlobalRef(env, clazz);
|
||||
m_java_lang_Float_toString = go_seq_get_method_id(clazz, "toString", "()Ljava/lang/String;");
|
||||
clazz = (*env)->FindClass(env, "java/lang/Long");
|
||||
class_java_lang_Long = (*env)->NewGlobalRef(env, clazz);
|
||||
m_java_lang_Long_toString = go_seq_get_method_id(clazz, "toString", "()Ljava/lang/String;");
|
||||
clazz = (*env)->FindClass(env, "java/lang/Object");
|
||||
class_java_lang_Object = (*env)->NewGlobalRef(env, clazz);
|
||||
m_java_lang_Object_toString = go_seq_get_method_id(clazz, "toString", "()Ljava/lang/String;");
|
||||
@@ -50,6 +55,22 @@ ret_nstring cproxy_java_lang_Float_toString(jint this) {
|
||||
return __res;
|
||||
}
|
||||
|
||||
ret_nstring cproxy_java_lang_Long_toString(jint this) {
|
||||
JNIEnv *env = go_seq_push_local_frame(1);
|
||||
// Must be a Java object
|
||||
jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
|
||||
jstring res = (*env)->CallObjectMethod(env, _this, m_java_lang_Long_toString);
|
||||
jobject _exc = go_seq_get_exception(env);
|
||||
int32_t _exc_ref = go_seq_to_refnum(env, _exc);
|
||||
if (_exc != NULL) {
|
||||
res = NULL;
|
||||
}
|
||||
nstring _res = go_seq_from_java_string(env, res);
|
||||
go_seq_pop_local_frame(env);
|
||||
ret_nstring __res = {_res, _exc_ref};
|
||||
return __res;
|
||||
}
|
||||
|
||||
ret_nstring cproxy_java_lang_Object_toString(jint this) {
|
||||
JNIEnv *env = go_seq_push_local_frame(1);
|
||||
// Must be a Java object
|
||||
@@ -112,6 +133,9 @@ ret_nstring cproxy_java_lang_Character_Subset_toString(jint this) {
|
||||
jclass proxy_class_java_F;
|
||||
jmethodID proxy_class_java_F_cons;
|
||||
static jmethodID mid_F_ToString;
|
||||
jclass proxy_class_java_L;
|
||||
jmethodID proxy_class_java_L_cons;
|
||||
static jmethodID mid_L_ToString;
|
||||
jclass proxy_class_java_O;
|
||||
jmethodID proxy_class_java_O_cons;
|
||||
static jmethodID mid_O_ToString;
|
||||
@@ -130,6 +154,12 @@ Java_java_Java__1init(JNIEnv *env, jclass _unused) {
|
||||
clazz = (*env)->FindClass(env, "java/F");
|
||||
mid_F_ToString = (*env)->GetMethodID(env, clazz, "toString", "()Ljava/lang/String;");
|
||||
|
||||
clazz = (*env)->FindClass(env, "java/Java$proxyL");
|
||||
proxy_class_java_L = (*env)->NewGlobalRef(env, clazz);
|
||||
proxy_class_java_L_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
||||
clazz = (*env)->FindClass(env, "java/L");
|
||||
mid_L_ToString = (*env)->GetMethodID(env, clazz, "toString", "()Ljava/lang/String;");
|
||||
|
||||
clazz = (*env)->FindClass(env, "java/Java$proxyO");
|
||||
proxy_class_java_O = (*env)->NewGlobalRef(env, clazz);
|
||||
proxy_class_java_O_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
||||
@@ -166,6 +196,23 @@ nstring cproxyjava_F_ToString(int32_t refnum) {
|
||||
return _res;
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_java_Java_00024proxyL_toString(JNIEnv* env, jobject __this__) {
|
||||
int32_t o = go_seq_to_refnum_go(env, __this__);
|
||||
nstring r0 = proxyjava_L_ToString(o);
|
||||
jstring _r0 = go_seq_to_java_string(env, r0);
|
||||
return _r0;
|
||||
}
|
||||
|
||||
nstring cproxyjava_L_ToString(int32_t refnum) {
|
||||
JNIEnv *env = go_seq_push_local_frame(0);
|
||||
jobject o = go_seq_from_refnum(env, refnum, proxy_class_java_L, proxy_class_java_L_cons);
|
||||
jstring res = (*env)->CallObjectMethod(env, o, mid_L_ToString);
|
||||
nstring _res = go_seq_from_java_string(env, res);
|
||||
go_seq_pop_local_frame(env);
|
||||
return _res;
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_java_Java_00024proxyO_toString(JNIEnv* env, jobject __this__) {
|
||||
int32_t o = go_seq_to_refnum_go(env, __this__);
|
||||
|
||||
Reference in New Issue
Block a user