// Code generated by gobind. DO NOT EDIT.

// JNI functions for the Go <=> Java bridge.
//
//   autogenerated by gobind -lang=java interfaces

#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_Interfaces;
jmethodID proxy_class_interfaces_Interfaces_cons;
static jmethodID mid_Interfaces_SomeMethod;
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_interfaces_Interfaces__1init(JNIEnv *env, jclass _unused) {
    jclass clazz;
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyError");
    proxy_class_interfaces_Error = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_Error_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/Error");
    mid_Error_Err = (*env)->GetMethodID(env, clazz, "err", "()V");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI");
    proxy_class_interfaces_I = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_I_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/I");
    mid_I_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI1");
    proxy_class_interfaces_I1 = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_I1_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/I1");
    mid_I1_J = (*env)->GetMethodID(env, clazz, "j", "()V");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI2");
    proxy_class_interfaces_I2 = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_I2_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/I2");
    mid_I2_G = (*env)->GetMethodID(env, clazz, "g", "()V");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI3");
    proxy_class_interfaces_I3 = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_I3_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/I3");
    mid_I3_F = (*env)->GetMethodID(env, clazz, "f", "()Linterfaces/I1;");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyInterfaces");
    proxy_class_interfaces_Interfaces = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_Interfaces_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/Interfaces_");
    mid_Interfaces_SomeMethod = (*env)->GetMethodID(env, clazz, "someMethod", "()V");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyLargerI");
    proxy_class_interfaces_LargerI = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_LargerI_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/LargerI");
    mid_LargerI_AnotherFunc = (*env)->GetMethodID(env, clazz, "anotherFunc", "()V");
    mid_LargerI_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxySameI");
    proxy_class_interfaces_SameI = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_SameI_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/SameI");
    mid_SameI_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
    
    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyWithParam");
    proxy_class_interfaces_WithParam = (*env)->NewGlobalRef(env, clazz);
    proxy_class_interfaces_WithParam_cons = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
    clazz = (*env)->FindClass(env, "interfaces/WithParam");
    mid_WithParam_HasParam = (*env)->GetMethodID(env, clazz, "hasParam", "(Z)V");
    
}

JNIEXPORT jint JNICALL
Java_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_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_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_interfaces_Interfaces_00024proxyError_err(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_get_exception(env);
    int32_t _exc = go_seq_to_refnum(env, exc);
    go_seq_pop_local_frame(env);
    return _exc;
}

JNIEXPORT jint JNICALL
Java_interfaces_Interfaces_00024proxyI_rand(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxyI1_j(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxyI2_g(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxyI3_f(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxyInterfaces_someMethod(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(env, __this__);
    proxyinterfaces_Interfaces_SomeMethod(o);
}

void cproxyinterfaces_Interfaces_SomeMethod(int32_t refnum) {
    JNIEnv *env = go_seq_push_local_frame(0);
    jobject o = go_seq_from_refnum(env, refnum, proxy_class_interfaces_Interfaces, proxy_class_interfaces_Interfaces_cons);
    (*env)->CallVoidMethod(env, o, mid_Interfaces_SomeMethod);
    go_seq_pop_local_frame(env);
}

JNIEXPORT void JNICALL
Java_interfaces_Interfaces_00024proxyLargerI_anotherFunc(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxyLargerI_rand(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxySameI_rand(JNIEnv* env, jobject __this__) {
    int32_t o = go_seq_to_refnum_go(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_interfaces_Interfaces_00024proxyWithParam_hasParam(JNIEnv* env, jobject __this__, jboolean p0) {
    int32_t o = go_seq_to_refnum_go(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);
}

