Accept Java API interface types as arguments and return values from bound Go package functions and methods. Also, allow Go structs to extend Java classes and implement Java interfaces as well as override and implement methods. This is the third and final part of the implementation of the golang/go#16876 proposal. Fixes golang/go#16876 Change-Id: I6951dd87235553ce09abe5117a39a503466163c0 Reviewed-on: https://go-review.googlesource.com/28597 Reviewed-by: David Crawshaw <crawshaw@golang.org>
255 lines
10 KiB
Plaintext
255 lines
10 KiB
Plaintext
// JNI functions for the Go <=> Java bridge.
|
|
// gobind -lang=java interfaces
|
|
//
|
|
// File is generated by gobind. Do not edit.
|
|
|
|
#include <android/log.h>
|
|
#include <stdint.h>
|
|
#include "seq.h"
|
|
#include "_cgo_export.h"
|
|
#include "interfaces.h"
|
|
|
|
jclass proxy_class_interfaces_Error;
|
|
jmethodID proxy_class_interfaces_Error_cons;
|
|
static jmethodID mid_Error_Err;
|
|
jclass proxy_class_interfaces_I;
|
|
jmethodID proxy_class_interfaces_I_cons;
|
|
static jmethodID mid_I_Rand;
|
|
jclass proxy_class_interfaces_I1;
|
|
jmethodID proxy_class_interfaces_I1_cons;
|
|
static jmethodID mid_I1_J;
|
|
jclass proxy_class_interfaces_I2;
|
|
jmethodID proxy_class_interfaces_I2_cons;
|
|
static jmethodID mid_I2_G;
|
|
jclass proxy_class_interfaces_I3;
|
|
jmethodID proxy_class_interfaces_I3_cons;
|
|
static jmethodID mid_I3_F;
|
|
jclass proxy_class_interfaces_LargerI;
|
|
jmethodID proxy_class_interfaces_LargerI_cons;
|
|
static jmethodID mid_LargerI_AnotherFunc;
|
|
static jmethodID mid_LargerI_Rand;
|
|
jclass proxy_class_interfaces_SameI;
|
|
jmethodID proxy_class_interfaces_SameI_cons;
|
|
static jmethodID mid_SameI_Rand;
|
|
jclass proxy_class_interfaces_WithParam;
|
|
jmethodID proxy_class_interfaces_WithParam_cons;
|
|
static jmethodID mid_WithParam_HasParam;
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces__1init(JNIEnv *env, jclass _unused) {
|
|
jclass clazz;
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyError");
|
|
proxy_class_interfaces_Error = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_Error_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Error");
|
|
mid_Error_Err = (*env)->GetMethodID(env, clazz, "err", "()V");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI");
|
|
proxy_class_interfaces_I = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_I_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/I");
|
|
mid_I_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI1");
|
|
proxy_class_interfaces_I1 = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_I1_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/I1");
|
|
mid_I1_J = (*env)->GetMethodID(env, clazz, "j", "()V");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI2");
|
|
proxy_class_interfaces_I2 = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_I2_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/I2");
|
|
mid_I2_G = (*env)->GetMethodID(env, clazz, "g", "()V");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI3");
|
|
proxy_class_interfaces_I3 = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_I3_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/I3");
|
|
mid_I3_F = (*env)->GetMethodID(env, clazz, "f", "()Lgo/interfaces/I1;");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyLargerI");
|
|
proxy_class_interfaces_LargerI = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_LargerI_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/LargerI");
|
|
mid_LargerI_AnotherFunc = (*env)->GetMethodID(env, clazz, "anotherFunc", "()V");
|
|
mid_LargerI_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxySameI");
|
|
proxy_class_interfaces_SameI = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_SameI_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/SameI");
|
|
mid_SameI_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
|
|
|
|
clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyWithParam");
|
|
proxy_class_interfaces_WithParam = (*env)->NewGlobalRef(env, clazz);
|
|
proxy_class_interfaces_WithParam_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
|
|
clazz = (*env)->FindClass(env, "go/interfaces/WithParam");
|
|
mid_WithParam_HasParam = (*env)->GetMethodID(env, clazz, "hasParam", "(Z)V");
|
|
|
|
}
|
|
|
|
JNIEXPORT jint JNICALL
|
|
Java_go_interfaces_Interfaces_add3(JNIEnv* env, jclass _clazz, jobject r) {
|
|
int32_t _r = go_seq_to_refnum(env, r);
|
|
int32_t r0 = proxyinterfaces__Add3(_r);
|
|
jint _r0 = (jint)r0;
|
|
return _r0;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces_callErr(JNIEnv* env, jclass _clazz, jobject e) {
|
|
int32_t _e = go_seq_to_refnum(env, e);
|
|
int32_t r0 = proxyinterfaces__CallErr(_e);
|
|
jobject _r0 = go_seq_from_refnum(env, r0, proxy_class__error, proxy_class__error_cons);
|
|
go_seq_maybe_throw_exception(env, _r0);
|
|
}
|
|
|
|
JNIEXPORT jobject JNICALL
|
|
Java_go_interfaces_Interfaces_seven(JNIEnv* env, jclass _clazz) {
|
|
int32_t r0 = proxyinterfaces__Seven();
|
|
jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_interfaces_I, proxy_class_interfaces_I_cons);
|
|
return _r0;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyError_err(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
int32_t r0 = proxyinterfaces_Error_Err(o);
|
|
jobject _r0 = go_seq_from_refnum(env, r0, proxy_class__error, proxy_class__error_cons);
|
|
go_seq_maybe_throw_exception(env, _r0);
|
|
}
|
|
|
|
int32_t cproxyinterfaces_Error_Err(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_Error, proxy_class_interfaces_Error_cons);
|
|
(*env)->CallVoidMethod(env, o, mid_Error_Err);
|
|
jobject exc = go_seq_wrap_exception(env);
|
|
int32_t _exc = go_seq_to_refnum(env, exc);
|
|
go_seq_pop_local_frame(env);
|
|
return _exc;
|
|
}
|
|
|
|
JNIEXPORT jint JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyI_rand(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
int32_t r0 = proxyinterfaces_I_Rand(o);
|
|
jint _r0 = (jint)r0;
|
|
return _r0;
|
|
}
|
|
|
|
int32_t cproxyinterfaces_I_Rand(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_I, proxy_class_interfaces_I_cons);
|
|
jint res = (*env)->CallIntMethod(env, o, mid_I_Rand);
|
|
int32_t _res = (int32_t)res;
|
|
go_seq_pop_local_frame(env);
|
|
return _res;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyI1_j(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
proxyinterfaces_I1_J(o);
|
|
}
|
|
|
|
void cproxyinterfaces_I1_J(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_I1, proxy_class_interfaces_I1_cons);
|
|
(*env)->CallVoidMethod(env, o, mid_I1_J);
|
|
go_seq_pop_local_frame(env);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyI2_g(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
proxyinterfaces_I2_G(o);
|
|
}
|
|
|
|
void cproxyinterfaces_I2_G(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_I2, proxy_class_interfaces_I2_cons);
|
|
(*env)->CallVoidMethod(env, o, mid_I2_G);
|
|
go_seq_pop_local_frame(env);
|
|
}
|
|
|
|
JNIEXPORT jobject JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyI3_f(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
int32_t r0 = proxyinterfaces_I3_F(o);
|
|
jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_interfaces_I1, proxy_class_interfaces_I1_cons);
|
|
return _r0;
|
|
}
|
|
|
|
int32_t cproxyinterfaces_I3_F(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_I3, proxy_class_interfaces_I3_cons);
|
|
jobject res = (*env)->CallObjectMethod(env, o, mid_I3_F);
|
|
int32_t _res = go_seq_to_refnum(env, res);
|
|
go_seq_pop_local_frame(env);
|
|
return _res;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyLargerI_anotherFunc(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
proxyinterfaces_LargerI_AnotherFunc(o);
|
|
}
|
|
|
|
void cproxyinterfaces_LargerI_AnotherFunc(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_LargerI, proxy_class_interfaces_LargerI_cons);
|
|
(*env)->CallVoidMethod(env, o, mid_LargerI_AnotherFunc);
|
|
go_seq_pop_local_frame(env);
|
|
}
|
|
|
|
JNIEXPORT jint JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyLargerI_rand(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
int32_t r0 = proxyinterfaces_LargerI_Rand(o);
|
|
jint _r0 = (jint)r0;
|
|
return _r0;
|
|
}
|
|
|
|
int32_t cproxyinterfaces_LargerI_Rand(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_LargerI, proxy_class_interfaces_LargerI_cons);
|
|
jint res = (*env)->CallIntMethod(env, o, mid_LargerI_Rand);
|
|
int32_t _res = (int32_t)res;
|
|
go_seq_pop_local_frame(env);
|
|
return _res;
|
|
}
|
|
|
|
JNIEXPORT jint JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxySameI_rand(JNIEnv* env, jobject __this__) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
int32_t r0 = proxyinterfaces_SameI_Rand(o);
|
|
jint _r0 = (jint)r0;
|
|
return _r0;
|
|
}
|
|
|
|
int32_t cproxyinterfaces_SameI_Rand(int32_t refnum) {
|
|
JNIEnv *env = go_seq_push_local_frame(0);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_SameI, proxy_class_interfaces_SameI_cons);
|
|
jint res = (*env)->CallIntMethod(env, o, mid_SameI_Rand);
|
|
int32_t _res = (int32_t)res;
|
|
go_seq_pop_local_frame(env);
|
|
return _res;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_go_interfaces_Interfaces_00024proxyWithParam_hasParam(JNIEnv* env, jobject __this__, jboolean p0) {
|
|
int32_t o = go_seq_to_refnum(env, __this__);
|
|
char _p0 = (char)p0;
|
|
proxyinterfaces_WithParam_HasParam(o, _p0);
|
|
}
|
|
|
|
void cproxyinterfaces_WithParam_HasParam(int32_t refnum, char p0) {
|
|
JNIEnv *env = go_seq_push_local_frame(1);
|
|
jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_WithParam, proxy_class_interfaces_WithParam_cons);
|
|
jboolean _p0 = p0 ? JNI_TRUE : JNI_FALSE;
|
|
(*env)->CallVoidMethod(env, o, mid_WithParam_HasParam, _p0);
|
|
go_seq_pop_local_frame(env);
|
|
}
|
|
|