|  | #![doc(html_root_url="https://docs.rs/jni-sys/0.3.0")] | 
|  | #![allow(non_snake_case, non_camel_case_types)] | 
|  |  | 
|  | use std::os::raw::c_void; | 
|  | use std::os::raw::c_char; | 
|  |  | 
|  | // FIXME is this sufficiently correct? | 
|  | pub type va_list = *mut c_void; | 
|  |  | 
|  | pub type jint = i32; | 
|  | pub type jlong = i64; | 
|  | pub type jbyte = i8; | 
|  | pub type jboolean = u8; | 
|  | pub type jchar = u16; | 
|  | pub type jshort = i16; | 
|  | pub type jfloat = f32; | 
|  | pub type jdouble = f64; | 
|  | pub type jsize = jint; | 
|  |  | 
|  | pub enum _jobject {} | 
|  | pub type jobject = *mut _jobject; | 
|  | pub type jclass = jobject; | 
|  | pub type jthrowable = jobject; | 
|  | pub type jstring = jobject; | 
|  | pub type jarray = jobject; | 
|  | pub type jbooleanArray = jarray; | 
|  | pub type jbyteArray = jarray; | 
|  | pub type jcharArray = jarray; | 
|  | pub type jshortArray = jarray; | 
|  | pub type jintArray = jarray; | 
|  | pub type jlongArray = jarray; | 
|  | pub type jfloatArray = jarray; | 
|  | pub type jdoubleArray = jarray; | 
|  | pub type jobjectArray = jarray; | 
|  | pub type jweak = jobject; | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub union jvalue { | 
|  | pub z: jboolean, | 
|  | pub b: jbyte, | 
|  | pub c: jchar, | 
|  | pub s: jshort, | 
|  | pub i: jint, | 
|  | pub j: jlong, | 
|  | pub f: jfloat, | 
|  | pub d: jdouble, | 
|  | pub l: jobject, | 
|  | } | 
|  |  | 
|  | impl Clone for jvalue { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | pub enum _jfieldID {} | 
|  | pub type jfieldID = *mut _jfieldID; | 
|  | pub enum _jmethodID {} | 
|  | pub type jmethodID = *mut _jmethodID; | 
|  |  | 
|  | #[derive(Clone, Copy)] | 
|  | #[repr(C)] | 
|  | pub enum jobjectRefType { | 
|  | JNIInvalidRefType = 0, | 
|  | JNILocalRefType = 1, | 
|  | JNIGlobalRefType = 2, | 
|  | JNIWeakGlobalRefType = 3, | 
|  | } | 
|  |  | 
|  | pub const JNI_FALSE: jboolean = 0; | 
|  | pub const JNI_TRUE: jboolean = 1; | 
|  |  | 
|  | pub const JNI_OK: jint = 0; | 
|  | pub const JNI_ERR: jint = -1; | 
|  | pub const JNI_EDETACHED: jint = -2; | 
|  | pub const JNI_EVERSION: jint = -3; | 
|  | pub const JNI_ENOMEM: jint = -4; | 
|  | pub const JNI_EEXIST: jint = -5; | 
|  | pub const JNI_EINVAL: jint = -6; | 
|  |  | 
|  | pub const JNI_COMMIT: jint = 1; | 
|  | pub const JNI_ABORT: jint = 2; | 
|  |  | 
|  | pub const JNI_VERSION_1_1: jint = 0x00010001; | 
|  | pub const JNI_VERSION_1_2: jint = 0x00010002; | 
|  | pub const JNI_VERSION_1_4: jint = 0x00010004; | 
|  | pub const JNI_VERSION_1_6: jint = 0x00010006; | 
|  | pub const JNI_VERSION_1_8: jint = 0x00010008; | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JNINativeMethod { | 
|  | pub name: *mut c_char, | 
|  | pub signature: *mut c_char, | 
|  | pub fnPtr: *mut c_void, | 
|  | } | 
|  |  | 
|  | impl Clone for JNINativeMethod { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | pub type JNIEnv = *const JNINativeInterface_; | 
|  | pub type JavaVM = *const JNIInvokeInterface_; | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JNINativeInterface_ { | 
|  | pub reserved0: *mut c_void, | 
|  | pub reserved1: *mut c_void, | 
|  | pub reserved2: *mut c_void, | 
|  | pub reserved3: *mut c_void, | 
|  | pub GetVersion: Option<unsafe extern "system" fn(env: *mut JNIEnv) -> jint>, | 
|  | pub DefineClass: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | name: *const c_char, | 
|  | loader: jobject, | 
|  | buf: *const jbyte, | 
|  | len: jsize) | 
|  | -> jclass, | 
|  | >, | 
|  | pub FindClass: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, name: *const c_char) -> jclass>, | 
|  | pub FromReflectedMethod: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, method: jobject) -> jmethodID>, | 
|  | pub FromReflectedField: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, field: jobject) -> jfieldID>, | 
|  | pub ToReflectedMethod: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | cls: jclass, | 
|  | methodID: jmethodID, | 
|  | isStatic: jboolean) | 
|  | -> jobject, | 
|  | >, | 
|  | pub GetSuperclass: Option<unsafe extern "system" fn(env: *mut JNIEnv, sub: jclass) -> jclass>, | 
|  | pub IsAssignableFrom: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, sub: jclass, sup: jclass) -> jboolean>, | 
|  | pub ToReflectedField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | cls: jclass, | 
|  | fieldID: jfieldID, | 
|  | isStatic: jboolean) | 
|  | -> jobject, | 
|  | >, | 
|  | pub Throw: Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jthrowable) -> jint>, | 
|  | pub ThrowNew: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | msg: *const c_char) | 
|  | -> jint, | 
|  | >, | 
|  | pub ExceptionOccurred: Option<unsafe extern "system" fn(env: *mut JNIEnv) -> jthrowable>, | 
|  | pub ExceptionDescribe: Option<unsafe extern "system" fn(env: *mut JNIEnv)>, | 
|  | pub ExceptionClear: Option<unsafe extern "system" fn(env: *mut JNIEnv)>, | 
|  | pub FatalError: Option<unsafe extern "system" fn(env: *mut JNIEnv, msg: *const c_char) -> !>, | 
|  | pub PushLocalFrame: Option<unsafe extern "system" fn(env: *mut JNIEnv, capacity: jint) -> jint>, | 
|  | pub PopLocalFrame: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, result: jobject) -> jobject>, | 
|  | pub NewGlobalRef: Option<unsafe extern "system" fn(env: *mut JNIEnv, lobj: jobject) -> jobject>, | 
|  | pub DeleteGlobalRef: Option<unsafe extern "system" fn(env: *mut JNIEnv, gref: jobject)>, | 
|  | pub DeleteLocalRef: Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject)>, | 
|  | pub IsSameObject: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj1: jobject, | 
|  | obj2: jobject) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub NewLocalRef: Option<unsafe extern "system" fn(env: *mut JNIEnv, ref_: jobject) -> jobject>, | 
|  | pub EnsureLocalCapacity: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, capacity: jint) -> jint>, | 
|  | pub AllocObject: Option<unsafe extern "system" fn(env: *mut JNIEnv, clazz: jclass) -> jobject>, | 
|  | pub NewObject: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jobject, | 
|  | >, | 
|  | pub NewObjectV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jobject, | 
|  | >, | 
|  | pub NewObjectA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jobject, | 
|  | >, | 
|  | pub GetObjectClass: Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject) -> jclass>, | 
|  | pub IsInstanceOf: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject, clazz: jclass) -> jboolean>, | 
|  | pub GetMethodID: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | name: *const c_char, | 
|  | sig: *const c_char) | 
|  | -> jmethodID, | 
|  | >, | 
|  | pub CallObjectMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallObjectMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallObjectMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallBooleanMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallBooleanMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallBooleanMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallByteMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallByteMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallByteMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallCharMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallCharMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallCharMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallShortMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallShortMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallShortMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallIntMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallIntMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallIntMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallLongMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallLongMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallLongMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallFloatMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallFloatMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallFloatMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallDoubleMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallDoubleMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallDoubleMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallVoidMethod: | 
|  | Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...)>, | 
|  | pub CallVoidMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: va_list), | 
|  | >, | 
|  | pub CallVoidMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue), | 
|  | >, | 
|  | pub CallNonvirtualObjectMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallNonvirtualObjectMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallNonvirtualObjectMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallNonvirtualBooleanMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallNonvirtualBooleanMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallNonvirtualBooleanMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallNonvirtualByteMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallNonvirtualByteMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallNonvirtualByteMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallNonvirtualCharMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallNonvirtualCharMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallNonvirtualCharMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallNonvirtualShortMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallNonvirtualShortMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallNonvirtualShortMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallNonvirtualIntMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallNonvirtualIntMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallNonvirtualIntMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallNonvirtualLongMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallNonvirtualLongMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallNonvirtualLongMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallNonvirtualFloatMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallNonvirtualFloatMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallNonvirtualFloatMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallNonvirtualDoubleMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallNonvirtualDoubleMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallNonvirtualDoubleMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallNonvirtualVoidMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...), | 
|  | >, | 
|  | pub CallNonvirtualVoidMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list), | 
|  | >, | 
|  | pub CallNonvirtualVoidMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue), | 
|  | >, | 
|  | pub GetFieldID: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | name: *const c_char, | 
|  | sig: *const c_char) | 
|  | -> jfieldID, | 
|  | >, | 
|  | pub GetObjectField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jobject, | 
|  | >, | 
|  | pub GetBooleanField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub GetByteField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub GetCharField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jchar, | 
|  | >, | 
|  | pub GetShortField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jshort, | 
|  | >, | 
|  | pub GetIntField: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jint>, | 
|  | pub GetLongField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jlong, | 
|  | >, | 
|  | pub GetFloatField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub GetDoubleField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub SetObjectField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jobject), | 
|  | >, | 
|  | pub SetBooleanField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jboolean), | 
|  | >, | 
|  | pub SetByteField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jbyte), | 
|  | >, | 
|  | pub SetCharField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jchar), | 
|  | >, | 
|  | pub SetShortField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jshort), | 
|  | >, | 
|  | pub SetIntField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jint), | 
|  | >, | 
|  | pub SetLongField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jlong), | 
|  | >, | 
|  | pub SetFloatField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jfloat), | 
|  | >, | 
|  | pub SetDoubleField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | obj: jobject, | 
|  | fieldID: jfieldID, | 
|  | val: jdouble), | 
|  | >, | 
|  | pub GetStaticMethodID: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | name: *const c_char, | 
|  | sig: *const c_char) | 
|  | -> jmethodID, | 
|  | >, | 
|  | pub CallStaticObjectMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallStaticObjectMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallStaticObjectMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jobject, | 
|  | >, | 
|  | pub CallStaticBooleanMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallStaticBooleanMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallStaticBooleanMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub CallStaticByteMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallStaticByteMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallStaticByteMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub CallStaticCharMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallStaticCharMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallStaticCharMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jchar, | 
|  | >, | 
|  | pub CallStaticShortMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallStaticShortMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallStaticShortMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jshort, | 
|  | >, | 
|  | pub CallStaticIntMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallStaticIntMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallStaticIntMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jint, | 
|  | >, | 
|  | pub CallStaticLongMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallStaticLongMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallStaticLongMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jlong, | 
|  | >, | 
|  | pub CallStaticFloatMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallStaticFloatMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallStaticFloatMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub CallStaticDoubleMethod: Option< | 
|  | unsafe extern "C" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | ...) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallStaticDoubleMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallStaticDoubleMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub CallStaticVoidMethod: | 
|  | Option<unsafe extern "C" fn(env: *mut JNIEnv, cls: jclass, methodID: jmethodID, ...)>, | 
|  | pub CallStaticVoidMethodV: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | cls: jclass, | 
|  | methodID: jmethodID, | 
|  | args: va_list), | 
|  | >, | 
|  | pub CallStaticVoidMethodA: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | cls: jclass, | 
|  | methodID: jmethodID, | 
|  | args: *const jvalue), | 
|  | >, | 
|  | pub GetStaticFieldID: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | name: *const c_char, | 
|  | sig: *const c_char) | 
|  | -> jfieldID, | 
|  | >, | 
|  | pub GetStaticObjectField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jobject, | 
|  | >, | 
|  | pub GetStaticBooleanField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jboolean, | 
|  | >, | 
|  | pub GetStaticByteField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jbyte, | 
|  | >, | 
|  | pub GetStaticCharField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jchar, | 
|  | >, | 
|  | pub GetStaticShortField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jshort, | 
|  | >, | 
|  | pub GetStaticIntField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jint, | 
|  | >, | 
|  | pub GetStaticLongField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jlong, | 
|  | >, | 
|  | pub GetStaticFloatField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jfloat, | 
|  | >, | 
|  | pub GetStaticDoubleField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID) | 
|  | -> jdouble, | 
|  | >, | 
|  | pub SetStaticObjectField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jobject), | 
|  | >, | 
|  | pub SetStaticBooleanField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jboolean), | 
|  | >, | 
|  | pub SetStaticByteField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jbyte), | 
|  | >, | 
|  | pub SetStaticCharField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jchar), | 
|  | >, | 
|  | pub SetStaticShortField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jshort), | 
|  | >, | 
|  | pub SetStaticIntField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jint), | 
|  | >, | 
|  | pub SetStaticLongField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jlong), | 
|  | >, | 
|  | pub SetStaticFloatField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jfloat), | 
|  | >, | 
|  | pub SetStaticDoubleField: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | fieldID: jfieldID, | 
|  | value: jdouble), | 
|  | >, | 
|  | pub NewString: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | unicode: *const jchar, | 
|  | len: jsize) | 
|  | -> jstring, | 
|  | >, | 
|  | pub GetStringLength: Option<unsafe extern "system" fn(env: *mut JNIEnv, str: jstring) -> jsize>, | 
|  | pub GetStringChars: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | str: jstring, | 
|  | isCopy: *mut jboolean) | 
|  | -> *const jchar, | 
|  | >, | 
|  | pub ReleaseStringChars: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, str: jstring, chars: *const jchar)>, | 
|  | pub NewStringUTF: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, utf: *const c_char) -> jstring>, | 
|  | pub GetStringUTFLength: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, str: jstring) -> jsize>, | 
|  | pub GetStringUTFChars: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | str: jstring, | 
|  | isCopy: *mut jboolean) | 
|  | -> *const c_char, | 
|  | >, | 
|  | pub ReleaseStringUTFChars: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, str: jstring, chars: *const c_char)>, | 
|  | pub GetArrayLength: Option<unsafe extern "system" fn(env: *mut JNIEnv, array: jarray) -> jsize>, | 
|  | pub NewObjectArray: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | len: jsize, | 
|  | clazz: jclass, | 
|  | init: jobject) | 
|  | -> jobjectArray, | 
|  | >, | 
|  | pub GetObjectArrayElement: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jobjectArray, | 
|  | index: jsize) | 
|  | -> jobject, | 
|  | >, | 
|  | pub SetObjectArrayElement: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jobjectArray, | 
|  | index: jsize, | 
|  | val: jobject), | 
|  | >, | 
|  | pub NewBooleanArray: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jbooleanArray>, | 
|  | pub NewByteArray: Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jbyteArray>, | 
|  | pub NewCharArray: Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jcharArray>, | 
|  | pub NewShortArray: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jshortArray>, | 
|  | pub NewIntArray: Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jintArray>, | 
|  | pub NewLongArray: Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jlongArray>, | 
|  | pub NewFloatArray: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jfloatArray>, | 
|  | pub NewDoubleArray: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, len: jsize) -> jdoubleArray>, | 
|  | pub GetBooleanArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbooleanArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jboolean, | 
|  | >, | 
|  | pub GetByteArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbyteArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jbyte, | 
|  | >, | 
|  | pub GetCharArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jcharArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jchar, | 
|  | >, | 
|  | pub GetShortArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jshortArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jshort, | 
|  | >, | 
|  | pub GetIntArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jintArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jint, | 
|  | >, | 
|  | pub GetLongArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jlongArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jlong, | 
|  | >, | 
|  | pub GetFloatArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jfloatArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jfloat, | 
|  | >, | 
|  | pub GetDoubleArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jdoubleArray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut jdouble, | 
|  | >, | 
|  | pub ReleaseBooleanArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbooleanArray, | 
|  | elems: *mut jboolean, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseByteArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbyteArray, | 
|  | elems: *mut jbyte, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseCharArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jcharArray, | 
|  | elems: *mut jchar, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseShortArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jshortArray, | 
|  | elems: *mut jshort, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseIntArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jintArray, | 
|  | elems: *mut jint, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseLongArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jlongArray, | 
|  | elems: *mut jlong, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseFloatArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jfloatArray, | 
|  | elems: *mut jfloat, | 
|  | mode: jint), | 
|  | >, | 
|  | pub ReleaseDoubleArrayElements: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jdoubleArray, | 
|  | elems: *mut jdouble, | 
|  | mode: jint), | 
|  | >, | 
|  | pub GetBooleanArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbooleanArray, | 
|  | start: jsize, | 
|  | l: jsize, | 
|  | buf: *mut jboolean), | 
|  | >, | 
|  | pub GetByteArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbyteArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jbyte), | 
|  | >, | 
|  | pub GetCharArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jcharArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jchar), | 
|  | >, | 
|  | pub GetShortArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jshortArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jshort), | 
|  | >, | 
|  | pub GetIntArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jintArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jint), | 
|  | >, | 
|  | pub GetLongArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jlongArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jlong), | 
|  | >, | 
|  | pub GetFloatArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jfloatArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jfloat), | 
|  | >, | 
|  | pub GetDoubleArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jdoubleArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jdouble), | 
|  | >, | 
|  | pub SetBooleanArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbooleanArray, | 
|  | start: jsize, | 
|  | l: jsize, | 
|  | buf: *const jboolean), | 
|  | >, | 
|  | pub SetByteArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jbyteArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jbyte), | 
|  | >, | 
|  | pub SetCharArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jcharArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jchar), | 
|  | >, | 
|  | pub SetShortArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jshortArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jshort), | 
|  | >, | 
|  | pub SetIntArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jintArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jint), | 
|  | >, | 
|  | pub SetLongArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jlongArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jlong), | 
|  | >, | 
|  | pub SetFloatArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jfloatArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jfloat), | 
|  | >, | 
|  | pub SetDoubleArrayRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jdoubleArray, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *const jdouble), | 
|  | >, | 
|  | pub RegisterNatives: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | clazz: jclass, | 
|  | methods: *const JNINativeMethod, | 
|  | nMethods: jint) | 
|  | -> jint, | 
|  | >, | 
|  | pub UnregisterNatives: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, clazz: jclass) -> jint>, | 
|  | pub MonitorEnter: Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject) -> jint>, | 
|  | pub MonitorExit: Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject) -> jint>, | 
|  | pub GetJavaVM: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, vm: *mut *mut JavaVM) -> jint>, | 
|  | pub GetStringRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | str: jstring, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut jchar), | 
|  | >, | 
|  | pub GetStringUTFRegion: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | str: jstring, | 
|  | start: jsize, | 
|  | len: jsize, | 
|  | buf: *mut c_char), | 
|  | >, | 
|  | pub GetPrimitiveArrayCritical: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jarray, | 
|  | isCopy: *mut jboolean) | 
|  | -> *mut c_void, | 
|  | >, | 
|  | pub ReleasePrimitiveArrayCritical: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | array: jarray, | 
|  | carray: *mut c_void, | 
|  | mode: jint), | 
|  | >, | 
|  | pub GetStringCritical: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | string: jstring, | 
|  | isCopy: *mut jboolean) | 
|  | -> *const jchar, | 
|  | >, | 
|  | pub ReleaseStringCritical: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, string: jstring, cstring: *const jchar)>, | 
|  | pub NewWeakGlobalRef: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject) -> jweak>, | 
|  | pub DeleteWeakGlobalRef: Option<unsafe extern "system" fn(env: *mut JNIEnv, ref_: jweak)>, | 
|  | pub ExceptionCheck: Option<unsafe extern "system" fn(env: *mut JNIEnv) -> jboolean>, | 
|  | pub NewDirectByteBuffer: Option< | 
|  | unsafe extern "system" fn(env: *mut JNIEnv, | 
|  | address: *mut c_void, | 
|  | capacity: jlong) | 
|  | -> jobject, | 
|  | >, | 
|  | pub GetDirectBufferAddress: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, buf: jobject) -> *mut c_void>, | 
|  | pub GetDirectBufferCapacity: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, buf: jobject) -> jlong>, | 
|  | pub GetObjectRefType: | 
|  | Option<unsafe extern "system" fn(env: *mut JNIEnv, obj: jobject) -> jobjectRefType>, | 
|  | } | 
|  |  | 
|  | impl Clone for JNINativeInterface_ { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JNIEnv_ { | 
|  | pub functions: *const JNINativeInterface_, | 
|  | } | 
|  |  | 
|  | impl Clone for JNIEnv_ { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JavaVMOption { | 
|  | pub optionString: *mut c_char, | 
|  | pub extraInfo: *mut c_void, | 
|  | } | 
|  |  | 
|  | impl Clone for JavaVMOption { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JavaVMInitArgs { | 
|  | pub version: jint, | 
|  | pub nOptions: jint, | 
|  | pub options: *mut JavaVMOption, | 
|  | pub ignoreUnrecognized: jboolean, | 
|  | } | 
|  |  | 
|  | impl Clone for JavaVMInitArgs { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JavaVMAttachArgs { | 
|  | pub version: jint, | 
|  | pub name: *mut c_char, | 
|  | pub group: jobject, | 
|  | } | 
|  |  | 
|  | impl Clone for JavaVMAttachArgs { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | #[repr(C)] | 
|  | #[derive(Copy)] | 
|  | pub struct JNIInvokeInterface_ { | 
|  | pub reserved0: *mut c_void, | 
|  | pub reserved1: *mut c_void, | 
|  | pub reserved2: *mut c_void, | 
|  | pub DestroyJavaVM: Option<unsafe extern "system" fn(vm: *mut JavaVM) -> jint>, | 
|  | pub AttachCurrentThread: Option< | 
|  | unsafe extern "system" fn(vm: *mut JavaVM, | 
|  | penv: *mut *mut c_void, | 
|  | args: *mut c_void) | 
|  | -> jint, | 
|  | >, | 
|  | pub DetachCurrentThread: Option<unsafe extern "system" fn(vm: *mut JavaVM) -> jint>, | 
|  | pub GetEnv: Option< | 
|  | unsafe extern "system" fn(vm: *mut JavaVM, | 
|  | penv: *mut *mut c_void, | 
|  | version: jint) | 
|  | -> jint, | 
|  | >, | 
|  | pub AttachCurrentThreadAsDaemon: Option< | 
|  | unsafe extern "system" fn(vm: *mut JavaVM, | 
|  | penv: *mut *mut c_void, | 
|  | args: *mut c_void) | 
|  | -> jint, | 
|  | >, | 
|  | } | 
|  |  | 
|  | impl Clone for JNIInvokeInterface_ { | 
|  | fn clone(&self) -> Self { | 
|  | *self | 
|  | } | 
|  | } | 
|  |  | 
|  | extern "system" { | 
|  | pub fn JNI_GetDefaultJavaVMInitArgs(args: *mut c_void) -> jint; | 
|  | pub fn JNI_CreateJavaVM( | 
|  | pvm: *mut *mut JavaVM, | 
|  | penv: *mut *mut c_void, | 
|  | args: *mut c_void, | 
|  | ) -> jint; | 
|  | pub fn JNI_GetCreatedJavaVMs(vmBuf: *mut *mut JavaVM, bufLen: jsize, nVMs: *mut jsize) -> jint; | 
|  | } |