jvm_rs/
jni.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4#![allow(dead_code)]
5
6use crate::varargs::__va_list_tag;
7
8pub const JNI_FALSE: u32 = 0;
9pub const JNI_TRUE: u32 = 1;
10pub const JNI_OK: u32 = 0;
11pub const JNI_ERR: i32 = -1;
12pub const JNI_EDETACHED: i32 = -2;
13pub const JNI_EVERSION: i32 = -3;
14pub const JNI_ENOMEM: i32 = -4;
15pub const JNI_EEXIST: i32 = -5;
16pub const JNI_EINVAL: i32 = -6;
17pub const JNI_COMMIT: u32 = 1;
18pub const JNI_ABORT: u32 = 2;
19pub const JNI_VERSION_1_1: u32 = 65537;
20pub const JNI_VERSION_1_2: u32 = 65538;
21pub const JNI_VERSION_1_4: u32 = 65540;
22pub const JNI_VERSION_1_6: u32 = 65542;
23pub const JNI_VERSION_1_8: u32 = 65544;
24pub const JNI_VERSION_9: u32 = 589824;
25pub const JNI_VERSION_10: u32 = 655360;
26pub type jint = ::std::os::raw::c_int;
27pub type jlong = ::std::os::raw::c_long;
28pub type jbyte = ::std::os::raw::c_schar;
29pub type jboolean = ::std::os::raw::c_uchar;
30pub type jchar = ::std::os::raw::c_ushort;
31pub type jshort = ::std::os::raw::c_short;
32pub type jfloat = f32;
33pub type jdouble = f64;
34pub type jsize = jint;
35#[repr(C)]
36#[derive(Debug, Copy, Clone)]
37pub struct _jobject {
38    _unused: [u8; 0],
39}
40pub type jobject = *mut _jobject;
41pub type jclass = jobject;
42pub type jthrowable = jobject;
43pub type jstring = jobject;
44pub type jarray = jobject;
45pub type jbooleanArray = jarray;
46pub type jbyteArray = jarray;
47pub type jcharArray = jarray;
48pub type jshortArray = jarray;
49pub type jintArray = jarray;
50pub type jlongArray = jarray;
51pub type jfloatArray = jarray;
52pub type jdoubleArray = jarray;
53pub type jobjectArray = jarray;
54pub type jweak = jobject;
55#[repr(C)]
56#[derive(Copy, Clone)]
57pub union jvalue {
58    pub z: jboolean,
59    pub b: jbyte,
60    pub c: jchar,
61    pub s: jshort,
62    pub i: jint,
63    pub j: jlong,
64    pub f: jfloat,
65    pub d: jdouble,
66    pub l: jobject,
67    _bindgen_union_align: u64,
68}
69#[repr(C)]
70#[derive(Debug, Copy, Clone)]
71pub struct _jfieldID {
72    _unused: [u8; 0],
73}
74pub type jfieldID = *mut _jfieldID;
75#[repr(C)]
76#[derive(Debug, Copy, Clone)]
77pub struct _jmethodID {
78    _unused: [u8; 0],
79}
80pub type jmethodID = *mut _jmethodID;
81pub const _jobjectType_JNIInvalidRefType: _jobjectType = 0;
82pub const _jobjectType_JNILocalRefType: _jobjectType = 1;
83pub const _jobjectType_JNIGlobalRefType: _jobjectType = 2;
84pub const _jobjectType_JNIWeakGlobalRefType: _jobjectType = 3;
85pub type _jobjectType = ::std::os::raw::c_uint;
86pub type jobjectRefType = _jobjectType;
87
88#[repr(C)]
89#[derive(Debug, Copy, Clone)]
90pub struct JNINativeMethod {
91    pub name: *mut ::std::os::raw::c_char,
92    pub signature: *mut ::std::os::raw::c_char,
93    pub fnPtr: *mut ::std::os::raw::c_void,
94}
95pub type JNIEnv = *const JNINativeInterface_;
96pub type JavaVM = *const JNIInvokeInterface_;
97#[repr(C)]
98#[derive(Debug, Copy, Clone)]
99pub struct JNINativeInterface_ {
100    pub reserved0: *mut ::std::os::raw::c_void,
101    pub reserved1: *mut ::std::os::raw::c_void,
102    pub reserved2: *mut ::std::os::raw::c_void,
103    pub reserved3: *mut ::std::os::raw::c_void,
104    pub GetVersion: ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv) -> jint>,
105    pub DefineClass: ::std::option::Option<
106        unsafe extern "C" fn(
107            env: *mut JNIEnv,
108            name: *const ::std::os::raw::c_char,
109            loader: jobject,
110            buf: *const jbyte,
111            len: jsize,
112        ) -> jclass,
113    >,
114    pub FindClass: ::std::option::Option<
115        unsafe extern "C" fn(env: *mut JNIEnv, name: *const ::std::os::raw::c_char) -> jclass,
116    >,
117    pub FromReflectedMethod:
118        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, method: jobject) -> jmethodID>,
119    pub FromReflectedField:
120        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, field: jobject) -> jfieldID>,
121    pub ToReflectedMethod: ::std::option::Option<
122        unsafe extern "C" fn(
123            env: *mut JNIEnv,
124            cls: jclass,
125            methodID: jmethodID,
126            isStatic: jboolean,
127        ) -> jobject,
128    >,
129    pub GetSuperclass:
130        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, sub: jclass) -> jclass>,
131    pub IsAssignableFrom: ::std::option::Option<
132        unsafe extern "C" fn(env: *mut JNIEnv, sub: jclass, sup: jclass) -> jboolean,
133    >,
134    pub ToReflectedField: ::std::option::Option<
135        unsafe extern "C" fn(
136            env: *mut JNIEnv,
137            cls: jclass,
138            fieldID: jfieldID,
139            isStatic: jboolean,
140        ) -> jobject,
141    >,
142    pub Throw:
143        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jthrowable) -> jint>,
144    pub ThrowNew: ::std::option::Option<
145        unsafe extern "C" fn(
146            env: *mut JNIEnv,
147            clazz: jclass,
148            msg: *const ::std::os::raw::c_char,
149        ) -> jint,
150    >,
151    pub ExceptionOccurred:
152        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv) -> jthrowable>,
153    pub ExceptionDescribe: ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv)>,
154    pub ExceptionClear: ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv)>,
155    pub FatalError: ::std::option::Option<
156        unsafe extern "C" fn(env: *mut JNIEnv, msg: *const ::std::os::raw::c_char),
157    >,
158    pub PushLocalFrame:
159        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, capacity: jint) -> jint>,
160    pub PopLocalFrame:
161        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, result: jobject) -> jobject>,
162    pub NewGlobalRef:
163        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, lobj: jobject) -> jobject>,
164    pub DeleteGlobalRef:
165        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, gref: jobject)>,
166    pub DeleteLocalRef: ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject)>,
167    pub IsSameObject: ::std::option::Option<
168        unsafe extern "C" fn(env: *mut JNIEnv, obj1: jobject, obj2: jobject) -> jboolean,
169    >,
170    pub NewLocalRef:
171        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, ref_: jobject) -> jobject>,
172    pub EnsureLocalCapacity:
173        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, capacity: jint) -> jint>,
174    pub AllocObject:
175        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass) -> jobject>,
176    pub NewObject: ::std::option::Option<
177        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jobject,
178    >,
179    pub NewObjectV: ::std::option::Option<
180        unsafe extern "C" fn(
181            env: *mut JNIEnv,
182            clazz: jclass,
183            methodID: jmethodID,
184            args: *mut __va_list_tag,
185        ) -> jobject,
186    >,
187    pub NewObjectA: ::std::option::Option<
188        unsafe extern "C" fn(
189            env: *mut JNIEnv,
190            clazz: jclass,
191            methodID: jmethodID,
192            args: *const jvalue,
193        ) -> jobject,
194    >,
195    pub GetObjectClass:
196        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject) -> jclass>,
197    pub IsInstanceOf: ::std::option::Option<
198        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, clazz: jclass) -> jboolean,
199    >,
200    pub GetMethodID: ::std::option::Option<
201        unsafe extern "C" fn(
202            env: *mut JNIEnv,
203            clazz: jclass,
204            name: *const ::std::os::raw::c_char,
205            sig: *const ::std::os::raw::c_char,
206        ) -> jmethodID,
207    >,
208    pub CallObjectMethod: ::std::option::Option<
209        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jobject,
210    >,
211    pub CallObjectMethodV: ::std::option::Option<
212        unsafe extern "C" fn(
213            env: *mut JNIEnv,
214            obj: jobject,
215            methodID: jmethodID,
216            args: *mut __va_list_tag,
217        ) -> jobject,
218    >,
219    pub CallObjectMethodA: ::std::option::Option<
220        unsafe extern "C" fn(
221            env: *mut JNIEnv,
222            obj: jobject,
223            methodID: jmethodID,
224            args: *const jvalue,
225        ) -> jobject,
226    >,
227    pub CallBooleanMethod: ::std::option::Option<
228        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jboolean,
229    >,
230    pub CallBooleanMethodV: ::std::option::Option<
231        unsafe extern "C" fn(
232            env: *mut JNIEnv,
233            obj: jobject,
234            methodID: jmethodID,
235            args: *mut __va_list_tag,
236        ) -> jboolean,
237    >,
238    pub CallBooleanMethodA: ::std::option::Option<
239        unsafe extern "C" fn(
240            env: *mut JNIEnv,
241            obj: jobject,
242            methodID: jmethodID,
243            args: *const jvalue,
244        ) -> jboolean,
245    >,
246    pub CallByteMethod: ::std::option::Option<
247        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jbyte,
248    >,
249    pub CallByteMethodV: ::std::option::Option<
250        unsafe extern "C" fn(
251            env: *mut JNIEnv,
252            obj: jobject,
253            methodID: jmethodID,
254            args: *mut __va_list_tag,
255        ) -> jbyte,
256    >,
257    pub CallByteMethodA: ::std::option::Option<
258        unsafe extern "C" fn(
259            env: *mut JNIEnv,
260            obj: jobject,
261            methodID: jmethodID,
262            args: *const jvalue,
263        ) -> jbyte,
264    >,
265    pub CallCharMethod: ::std::option::Option<
266        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jchar,
267    >,
268    pub CallCharMethodV: ::std::option::Option<
269        unsafe extern "C" fn(
270            env: *mut JNIEnv,
271            obj: jobject,
272            methodID: jmethodID,
273            args: *mut __va_list_tag,
274        ) -> jchar,
275    >,
276    pub CallCharMethodA: ::std::option::Option<
277        unsafe extern "C" fn(
278            env: *mut JNIEnv,
279            obj: jobject,
280            methodID: jmethodID,
281            args: *const jvalue,
282        ) -> jchar,
283    >,
284    pub CallShortMethod: ::std::option::Option<
285        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jshort,
286    >,
287    pub CallShortMethodV: ::std::option::Option<
288        unsafe extern "C" fn(
289            env: *mut JNIEnv,
290            obj: jobject,
291            methodID: jmethodID,
292            args: *mut __va_list_tag,
293        ) -> jshort,
294    >,
295    pub CallShortMethodA: ::std::option::Option<
296        unsafe extern "C" fn(
297            env: *mut JNIEnv,
298            obj: jobject,
299            methodID: jmethodID,
300            args: *const jvalue,
301        ) -> jshort,
302    >,
303    pub CallIntMethod: ::std::option::Option<
304        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jint,
305    >,
306    pub CallIntMethodV: ::std::option::Option<
307        unsafe extern "C" fn(
308            env: *mut JNIEnv,
309            obj: jobject,
310            methodID: jmethodID,
311            args: *mut __va_list_tag,
312        ) -> jint,
313    >,
314    pub CallIntMethodA: ::std::option::Option<
315        unsafe extern "C" fn(
316            env: *mut JNIEnv,
317            obj: jobject,
318            methodID: jmethodID,
319            args: *const jvalue,
320        ) -> jint,
321    >,
322    pub CallLongMethod: ::std::option::Option<
323        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jlong,
324    >,
325    pub CallLongMethodV: ::std::option::Option<
326        unsafe extern "C" fn(
327            env: *mut JNIEnv,
328            obj: jobject,
329            methodID: jmethodID,
330            args: *mut __va_list_tag,
331        ) -> jlong,
332    >,
333    pub CallLongMethodA: ::std::option::Option<
334        unsafe extern "C" fn(
335            env: *mut JNIEnv,
336            obj: jobject,
337            methodID: jmethodID,
338            args: *const jvalue,
339        ) -> jlong,
340    >,
341    pub CallFloatMethod: ::std::option::Option<
342        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jfloat,
343    >,
344    pub CallFloatMethodV: ::std::option::Option<
345        unsafe extern "C" fn(
346            env: *mut JNIEnv,
347            obj: jobject,
348            methodID: jmethodID,
349            args: *mut __va_list_tag,
350        ) -> jfloat,
351    >,
352    pub CallFloatMethodA: ::std::option::Option<
353        unsafe extern "C" fn(
354            env: *mut JNIEnv,
355            obj: jobject,
356            methodID: jmethodID,
357            args: *const jvalue,
358        ) -> jfloat,
359    >,
360    pub CallDoubleMethod: ::std::option::Option<
361        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...) -> jdouble,
362    >,
363    pub CallDoubleMethodV: ::std::option::Option<
364        unsafe extern "C" fn(
365            env: *mut JNIEnv,
366            obj: jobject,
367            methodID: jmethodID,
368            args: *mut __va_list_tag,
369        ) -> jdouble,
370    >,
371    pub CallDoubleMethodA: ::std::option::Option<
372        unsafe extern "C" fn(
373            env: *mut JNIEnv,
374            obj: jobject,
375            methodID: jmethodID,
376            args: *const jvalue,
377        ) -> jdouble,
378    >,
379    pub CallVoidMethod: ::std::option::Option<
380        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, methodID: jmethodID, ...),
381    >,
382    pub CallVoidMethodV: ::std::option::Option<
383        unsafe extern "C" fn(
384            env: *mut JNIEnv,
385            obj: jobject,
386            methodID: jmethodID,
387            args: *mut __va_list_tag,
388        ),
389    >,
390    pub CallVoidMethodA: ::std::option::Option<
391        unsafe extern "C" fn(
392            env: *mut JNIEnv,
393            obj: jobject,
394            methodID: jmethodID,
395            args: *const jvalue,
396        ),
397    >,
398    pub CallNonvirtualObjectMethod: ::std::option::Option<
399        unsafe extern "C" fn(
400            env: *mut JNIEnv,
401            obj: jobject,
402            clazz: jclass,
403            methodID: jmethodID,
404            ...
405        ) -> jobject,
406    >,
407    pub CallNonvirtualObjectMethodV: ::std::option::Option<
408        unsafe extern "C" fn(
409            env: *mut JNIEnv,
410            obj: jobject,
411            clazz: jclass,
412            methodID: jmethodID,
413            args: *mut __va_list_tag,
414        ) -> jobject,
415    >,
416    pub CallNonvirtualObjectMethodA: ::std::option::Option<
417        unsafe extern "C" fn(
418            env: *mut JNIEnv,
419            obj: jobject,
420            clazz: jclass,
421            methodID: jmethodID,
422            args: *const jvalue,
423        ) -> jobject,
424    >,
425    pub CallNonvirtualBooleanMethod: ::std::option::Option<
426        unsafe extern "C" fn(
427            env: *mut JNIEnv,
428            obj: jobject,
429            clazz: jclass,
430            methodID: jmethodID,
431            ...
432        ) -> jboolean,
433    >,
434    pub CallNonvirtualBooleanMethodV: ::std::option::Option<
435        unsafe extern "C" fn(
436            env: *mut JNIEnv,
437            obj: jobject,
438            clazz: jclass,
439            methodID: jmethodID,
440            args: *mut __va_list_tag,
441        ) -> jboolean,
442    >,
443    pub CallNonvirtualBooleanMethodA: ::std::option::Option<
444        unsafe extern "C" fn(
445            env: *mut JNIEnv,
446            obj: jobject,
447            clazz: jclass,
448            methodID: jmethodID,
449            args: *const jvalue,
450        ) -> jboolean,
451    >,
452    pub CallNonvirtualByteMethod: ::std::option::Option<
453        unsafe extern "C" fn(
454            env: *mut JNIEnv,
455            obj: jobject,
456            clazz: jclass,
457            methodID: jmethodID,
458            ...
459        ) -> jbyte,
460    >,
461    pub CallNonvirtualByteMethodV: ::std::option::Option<
462        unsafe extern "C" fn(
463            env: *mut JNIEnv,
464            obj: jobject,
465            clazz: jclass,
466            methodID: jmethodID,
467            args: *mut __va_list_tag,
468        ) -> jbyte,
469    >,
470    pub CallNonvirtualByteMethodA: ::std::option::Option<
471        unsafe extern "C" fn(
472            env: *mut JNIEnv,
473            obj: jobject,
474            clazz: jclass,
475            methodID: jmethodID,
476            args: *const jvalue,
477        ) -> jbyte,
478    >,
479    pub CallNonvirtualCharMethod: ::std::option::Option<
480        unsafe extern "C" fn(
481            env: *mut JNIEnv,
482            obj: jobject,
483            clazz: jclass,
484            methodID: jmethodID,
485            ...
486        ) -> jchar,
487    >,
488    pub CallNonvirtualCharMethodV: ::std::option::Option<
489        unsafe extern "C" fn(
490            env: *mut JNIEnv,
491            obj: jobject,
492            clazz: jclass,
493            methodID: jmethodID,
494            args: *mut __va_list_tag,
495        ) -> jchar,
496    >,
497    pub CallNonvirtualCharMethodA: ::std::option::Option<
498        unsafe extern "C" fn(
499            env: *mut JNIEnv,
500            obj: jobject,
501            clazz: jclass,
502            methodID: jmethodID,
503            args: *const jvalue,
504        ) -> jchar,
505    >,
506    pub CallNonvirtualShortMethod: ::std::option::Option<
507        unsafe extern "C" fn(
508            env: *mut JNIEnv,
509            obj: jobject,
510            clazz: jclass,
511            methodID: jmethodID,
512            ...
513        ) -> jshort,
514    >,
515    pub CallNonvirtualShortMethodV: ::std::option::Option<
516        unsafe extern "C" fn(
517            env: *mut JNIEnv,
518            obj: jobject,
519            clazz: jclass,
520            methodID: jmethodID,
521            args: *mut __va_list_tag,
522        ) -> jshort,
523    >,
524    pub CallNonvirtualShortMethodA: ::std::option::Option<
525        unsafe extern "C" fn(
526            env: *mut JNIEnv,
527            obj: jobject,
528            clazz: jclass,
529            methodID: jmethodID,
530            args: *const jvalue,
531        ) -> jshort,
532    >,
533    pub CallNonvirtualIntMethod: ::std::option::Option<
534        unsafe extern "C" fn(
535            env: *mut JNIEnv,
536            obj: jobject,
537            clazz: jclass,
538            methodID: jmethodID,
539            ...
540        ) -> jint,
541    >,
542    pub CallNonvirtualIntMethodV: ::std::option::Option<
543        unsafe extern "C" fn(
544            env: *mut JNIEnv,
545            obj: jobject,
546            clazz: jclass,
547            methodID: jmethodID,
548            args: *mut __va_list_tag,
549        ) -> jint,
550    >,
551    pub CallNonvirtualIntMethodA: ::std::option::Option<
552        unsafe extern "C" fn(
553            env: *mut JNIEnv,
554            obj: jobject,
555            clazz: jclass,
556            methodID: jmethodID,
557            args: *const jvalue,
558        ) -> jint,
559    >,
560    pub CallNonvirtualLongMethod: ::std::option::Option<
561        unsafe extern "C" fn(
562            env: *mut JNIEnv,
563            obj: jobject,
564            clazz: jclass,
565            methodID: jmethodID,
566            ...
567        ) -> jlong,
568    >,
569    pub CallNonvirtualLongMethodV: ::std::option::Option<
570        unsafe extern "C" fn(
571            env: *mut JNIEnv,
572            obj: jobject,
573            clazz: jclass,
574            methodID: jmethodID,
575            args: *mut __va_list_tag,
576        ) -> jlong,
577    >,
578    pub CallNonvirtualLongMethodA: ::std::option::Option<
579        unsafe extern "C" fn(
580            env: *mut JNIEnv,
581            obj: jobject,
582            clazz: jclass,
583            methodID: jmethodID,
584            args: *const jvalue,
585        ) -> jlong,
586    >,
587    pub CallNonvirtualFloatMethod: ::std::option::Option<
588        unsafe extern "C" fn(
589            env: *mut JNIEnv,
590            obj: jobject,
591            clazz: jclass,
592            methodID: jmethodID,
593            ...
594        ) -> jfloat,
595    >,
596    pub CallNonvirtualFloatMethodV: ::std::option::Option<
597        unsafe extern "C" fn(
598            env: *mut JNIEnv,
599            obj: jobject,
600            clazz: jclass,
601            methodID: jmethodID,
602            args: *mut __va_list_tag,
603        ) -> jfloat,
604    >,
605    pub CallNonvirtualFloatMethodA: ::std::option::Option<
606        unsafe extern "C" fn(
607            env: *mut JNIEnv,
608            obj: jobject,
609            clazz: jclass,
610            methodID: jmethodID,
611            args: *const jvalue,
612        ) -> jfloat,
613    >,
614    pub CallNonvirtualDoubleMethod: ::std::option::Option<
615        unsafe extern "C" fn(
616            env: *mut JNIEnv,
617            obj: jobject,
618            clazz: jclass,
619            methodID: jmethodID,
620            ...
621        ) -> jdouble,
622    >,
623    pub CallNonvirtualDoubleMethodV: ::std::option::Option<
624        unsafe extern "C" fn(
625            env: *mut JNIEnv,
626            obj: jobject,
627            clazz: jclass,
628            methodID: jmethodID,
629            args: *mut __va_list_tag,
630        ) -> jdouble,
631    >,
632    pub CallNonvirtualDoubleMethodA: ::std::option::Option<
633        unsafe extern "C" fn(
634            env: *mut JNIEnv,
635            obj: jobject,
636            clazz: jclass,
637            methodID: jmethodID,
638            args: *const jvalue,
639        ) -> jdouble,
640    >,
641    pub CallNonvirtualVoidMethod: ::std::option::Option<
642        unsafe extern "C" fn(
643            env: *mut JNIEnv,
644            obj: jobject,
645            clazz: jclass,
646            methodID: jmethodID,
647            ...
648        ),
649    >,
650    pub CallNonvirtualVoidMethodV: ::std::option::Option<
651        unsafe extern "C" fn(
652            env: *mut JNIEnv,
653            obj: jobject,
654            clazz: jclass,
655            methodID: jmethodID,
656            args: *mut __va_list_tag,
657        ),
658    >,
659    pub CallNonvirtualVoidMethodA: ::std::option::Option<
660        unsafe extern "C" fn(
661            env: *mut JNIEnv,
662            obj: jobject,
663            clazz: jclass,
664            methodID: jmethodID,
665            args: *const jvalue,
666        ),
667    >,
668    pub GetFieldID: ::std::option::Option<
669        unsafe extern "C" fn(
670            env: *mut JNIEnv,
671            clazz: jclass,
672            name: *const ::std::os::raw::c_char,
673            sig: *const ::std::os::raw::c_char,
674        ) -> jfieldID,
675    >,
676    pub GetObjectField: ::std::option::Option<
677        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jobject,
678    >,
679    pub GetBooleanField: ::std::option::Option<
680        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jboolean,
681    >,
682    pub GetByteField: ::std::option::Option<
683        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jbyte,
684    >,
685    pub GetCharField: ::std::option::Option<
686        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jchar,
687    >,
688    pub GetShortField: ::std::option::Option<
689        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jshort,
690    >,
691    pub GetIntField: ::std::option::Option<
692        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jint,
693    >,
694    pub GetLongField: ::std::option::Option<
695        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jlong,
696    >,
697    pub GetFloatField: ::std::option::Option<
698        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jfloat,
699    >,
700    pub GetDoubleField: ::std::option::Option<
701        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID) -> jdouble,
702    >,
703    pub SetObjectField: ::std::option::Option<
704        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jobject),
705    >,
706    pub SetBooleanField: ::std::option::Option<
707        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jboolean),
708    >,
709    pub SetByteField: ::std::option::Option<
710        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jbyte),
711    >,
712    pub SetCharField: ::std::option::Option<
713        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jchar),
714    >,
715    pub SetShortField: ::std::option::Option<
716        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jshort),
717    >,
718    pub SetIntField: ::std::option::Option<
719        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jint),
720    >,
721    pub SetLongField: ::std::option::Option<
722        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jlong),
723    >,
724    pub SetFloatField: ::std::option::Option<
725        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jfloat),
726    >,
727    pub SetDoubleField: ::std::option::Option<
728        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject, fieldID: jfieldID, val: jdouble),
729    >,
730    pub GetStaticMethodID: ::std::option::Option<
731        unsafe extern "C" fn(
732            env: *mut JNIEnv,
733            clazz: jclass,
734            name: *const ::std::os::raw::c_char,
735            sig: *const ::std::os::raw::c_char,
736        ) -> jmethodID,
737    >,
738    pub CallStaticObjectMethod: ::std::option::Option<
739        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jobject,
740    >,
741    pub CallStaticObjectMethodV: ::std::option::Option<
742        unsafe extern "C" fn(
743            env: *mut JNIEnv,
744            clazz: jclass,
745            methodID: jmethodID,
746            args: *mut __va_list_tag,
747        ) -> jobject,
748    >,
749    pub CallStaticObjectMethodA: ::std::option::Option<
750        unsafe extern "C" fn(
751            env: *mut JNIEnv,
752            clazz: jclass,
753            methodID: jmethodID,
754            args: *const jvalue,
755        ) -> jobject,
756    >,
757    pub CallStaticBooleanMethod: ::std::option::Option<
758        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jboolean,
759    >,
760    pub CallStaticBooleanMethodV: ::std::option::Option<
761        unsafe extern "C" fn(
762            env: *mut JNIEnv,
763            clazz: jclass,
764            methodID: jmethodID,
765            args: *mut __va_list_tag,
766        ) -> jboolean,
767    >,
768    pub CallStaticBooleanMethodA: ::std::option::Option<
769        unsafe extern "C" fn(
770            env: *mut JNIEnv,
771            clazz: jclass,
772            methodID: jmethodID,
773            args: *const jvalue,
774        ) -> jboolean,
775    >,
776    pub CallStaticByteMethod: ::std::option::Option<
777        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jbyte,
778    >,
779    pub CallStaticByteMethodV: ::std::option::Option<
780        unsafe extern "C" fn(
781            env: *mut JNIEnv,
782            clazz: jclass,
783            methodID: jmethodID,
784            args: *mut __va_list_tag,
785        ) -> jbyte,
786    >,
787    pub CallStaticByteMethodA: ::std::option::Option<
788        unsafe extern "C" fn(
789            env: *mut JNIEnv,
790            clazz: jclass,
791            methodID: jmethodID,
792            args: *const jvalue,
793        ) -> jbyte,
794    >,
795    pub CallStaticCharMethod: ::std::option::Option<
796        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jchar,
797    >,
798    pub CallStaticCharMethodV: ::std::option::Option<
799        unsafe extern "C" fn(
800            env: *mut JNIEnv,
801            clazz: jclass,
802            methodID: jmethodID,
803            args: *mut __va_list_tag,
804        ) -> jchar,
805    >,
806    pub CallStaticCharMethodA: ::std::option::Option<
807        unsafe extern "C" fn(
808            env: *mut JNIEnv,
809            clazz: jclass,
810            methodID: jmethodID,
811            args: *const jvalue,
812        ) -> jchar,
813    >,
814    pub CallStaticShortMethod: ::std::option::Option<
815        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jshort,
816    >,
817    pub CallStaticShortMethodV: ::std::option::Option<
818        unsafe extern "C" fn(
819            env: *mut JNIEnv,
820            clazz: jclass,
821            methodID: jmethodID,
822            args: *mut __va_list_tag,
823        ) -> jshort,
824    >,
825    pub CallStaticShortMethodA: ::std::option::Option<
826        unsafe extern "C" fn(
827            env: *mut JNIEnv,
828            clazz: jclass,
829            methodID: jmethodID,
830            args: *const jvalue,
831        ) -> jshort,
832    >,
833    pub CallStaticIntMethod: ::std::option::Option<
834        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jint,
835    >,
836    pub CallStaticIntMethodV: ::std::option::Option<
837        unsafe extern "C" fn(
838            env: *mut JNIEnv,
839            clazz: jclass,
840            methodID: jmethodID,
841            args: *mut __va_list_tag,
842        ) -> jint,
843    >,
844    pub CallStaticIntMethodA: ::std::option::Option<
845        unsafe extern "C" fn(
846            env: *mut JNIEnv,
847            clazz: jclass,
848            methodID: jmethodID,
849            args: *const jvalue,
850        ) -> jint,
851    >,
852    pub CallStaticLongMethod: ::std::option::Option<
853        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jlong,
854    >,
855    pub CallStaticLongMethodV: ::std::option::Option<
856        unsafe extern "C" fn(
857            env: *mut JNIEnv,
858            clazz: jclass,
859            methodID: jmethodID,
860            args: *mut __va_list_tag,
861        ) -> jlong,
862    >,
863    pub CallStaticLongMethodA: ::std::option::Option<
864        unsafe extern "C" fn(
865            env: *mut JNIEnv,
866            clazz: jclass,
867            methodID: jmethodID,
868            args: *const jvalue,
869        ) -> jlong,
870    >,
871    pub CallStaticFloatMethod: ::std::option::Option<
872        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jfloat,
873    >,
874    pub CallStaticFloatMethodV: ::std::option::Option<
875        unsafe extern "C" fn(
876            env: *mut JNIEnv,
877            clazz: jclass,
878            methodID: jmethodID,
879            args: *mut __va_list_tag,
880        ) -> jfloat,
881    >,
882    pub CallStaticFloatMethodA: ::std::option::Option<
883        unsafe extern "C" fn(
884            env: *mut JNIEnv,
885            clazz: jclass,
886            methodID: jmethodID,
887            args: *const jvalue,
888        ) -> jfloat,
889    >,
890    pub CallStaticDoubleMethod: ::std::option::Option<
891        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, methodID: jmethodID, ...) -> jdouble,
892    >,
893    pub CallStaticDoubleMethodV: ::std::option::Option<
894        unsafe extern "C" fn(
895            env: *mut JNIEnv,
896            clazz: jclass,
897            methodID: jmethodID,
898            args: *mut __va_list_tag,
899        ) -> jdouble,
900    >,
901    pub CallStaticDoubleMethodA: ::std::option::Option<
902        unsafe extern "C" fn(
903            env: *mut JNIEnv,
904            clazz: jclass,
905            methodID: jmethodID,
906            args: *const jvalue,
907        ) -> jdouble,
908    >,
909    pub CallStaticVoidMethod: ::std::option::Option<
910        unsafe extern "C" fn(env: *mut JNIEnv, cls: jclass, methodID: jmethodID, ...),
911    >,
912    pub CallStaticVoidMethodV: ::std::option::Option<
913        unsafe extern "C" fn(
914            env: *mut JNIEnv,
915            cls: jclass,
916            methodID: jmethodID,
917            args: *mut __va_list_tag,
918        ),
919    >,
920    pub CallStaticVoidMethodA: ::std::option::Option<
921        unsafe extern "C" fn(
922            env: *mut JNIEnv,
923            cls: jclass,
924            methodID: jmethodID,
925            args: *const jvalue,
926        ),
927    >,
928    pub GetStaticFieldID: ::std::option::Option<
929        unsafe extern "C" fn(
930            env: *mut JNIEnv,
931            clazz: jclass,
932            name: *const ::std::os::raw::c_char,
933            sig: *const ::std::os::raw::c_char,
934        ) -> jfieldID,
935    >,
936    pub GetStaticObjectField: ::std::option::Option<
937        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jobject,
938    >,
939    pub GetStaticBooleanField: ::std::option::Option<
940        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jboolean,
941    >,
942    pub GetStaticByteField: ::std::option::Option<
943        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jbyte,
944    >,
945    pub GetStaticCharField: ::std::option::Option<
946        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jchar,
947    >,
948    pub GetStaticShortField: ::std::option::Option<
949        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jshort,
950    >,
951    pub GetStaticIntField: ::std::option::Option<
952        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jint,
953    >,
954    pub GetStaticLongField: ::std::option::Option<
955        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jlong,
956    >,
957    pub GetStaticFloatField: ::std::option::Option<
958        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jfloat,
959    >,
960    pub GetStaticDoubleField: ::std::option::Option<
961        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID) -> jdouble,
962    >,
963    pub SetStaticObjectField: ::std::option::Option<
964        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jobject),
965    >,
966    pub SetStaticBooleanField: ::std::option::Option<
967        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jboolean),
968    >,
969    pub SetStaticByteField: ::std::option::Option<
970        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jbyte),
971    >,
972    pub SetStaticCharField: ::std::option::Option<
973        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jchar),
974    >,
975    pub SetStaticShortField: ::std::option::Option<
976        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jshort),
977    >,
978    pub SetStaticIntField: ::std::option::Option<
979        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jint),
980    >,
981    pub SetStaticLongField: ::std::option::Option<
982        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jlong),
983    >,
984    pub SetStaticFloatField: ::std::option::Option<
985        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jfloat),
986    >,
987    pub SetStaticDoubleField: ::std::option::Option<
988        unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass, fieldID: jfieldID, value: jdouble),
989    >,
990    pub NewString: ::std::option::Option<
991        unsafe extern "C" fn(env: *mut JNIEnv, unicode: *const jchar, len: jsize) -> jstring,
992    >,
993    pub GetStringLength:
994        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, str_: jstring) -> jsize>,
995    pub GetStringChars: ::std::option::Option<
996        unsafe extern "C" fn(
997            env: *mut JNIEnv,
998            str_: jstring,
999            isCopy: *mut jboolean,
1000        ) -> *const jchar,
1001    >,
1002    pub ReleaseStringChars: ::std::option::Option<
1003        unsafe extern "C" fn(env: *mut JNIEnv, str_: jstring, chars: *const jchar),
1004    >,
1005    pub NewStringUTF: ::std::option::Option<
1006        unsafe extern "C" fn(env: *mut JNIEnv, utf: *const ::std::os::raw::c_char) -> jstring,
1007    >,
1008    pub GetStringUTFLength:
1009        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, str_: jstring) -> jsize>,
1010    pub GetStringUTFChars: ::std::option::Option<
1011        unsafe extern "C" fn(
1012            env: *mut JNIEnv,
1013            str_: jstring,
1014            isCopy: *mut jboolean,
1015        ) -> *const ::std::os::raw::c_char,
1016    >,
1017    pub ReleaseStringUTFChars: ::std::option::Option<
1018        unsafe extern "C" fn(env: *mut JNIEnv, str_: jstring, chars: *const ::std::os::raw::c_char),
1019    >,
1020    pub GetArrayLength:
1021        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, array: jarray) -> jsize>,
1022    pub NewObjectArray: ::std::option::Option<
1023        unsafe extern "C" fn(
1024            env: *mut JNIEnv,
1025            len: jsize,
1026            clazz: jclass,
1027            init: jobject,
1028        ) -> jobjectArray,
1029    >,
1030    pub GetObjectArrayElement: ::std::option::Option<
1031        unsafe extern "C" fn(env: *mut JNIEnv, array: jobjectArray, index: jsize) -> jobject,
1032    >,
1033    pub SetObjectArrayElement: ::std::option::Option<
1034        unsafe extern "C" fn(env: *mut JNIEnv, array: jobjectArray, index: jsize, val: jobject),
1035    >,
1036    pub NewBooleanArray:
1037        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jbooleanArray>,
1038    pub NewByteArray:
1039        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jbyteArray>,
1040    pub NewCharArray:
1041        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jcharArray>,
1042    pub NewShortArray:
1043        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jshortArray>,
1044    pub NewIntArray:
1045        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jintArray>,
1046    pub NewLongArray:
1047        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jlongArray>,
1048    pub NewFloatArray:
1049        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jfloatArray>,
1050    pub NewDoubleArray:
1051        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, len: jsize) -> jdoubleArray>,
1052    pub GetBooleanArrayElements: ::std::option::Option<
1053        unsafe extern "C" fn(
1054            env: *mut JNIEnv,
1055            array: jbooleanArray,
1056            isCopy: *mut jboolean,
1057        ) -> *mut jboolean,
1058    >,
1059    pub GetByteArrayElements: ::std::option::Option<
1060        unsafe extern "C" fn(
1061            env: *mut JNIEnv,
1062            array: jbyteArray,
1063            isCopy: *mut jboolean,
1064        ) -> *mut jbyte,
1065    >,
1066    pub GetCharArrayElements: ::std::option::Option<
1067        unsafe extern "C" fn(
1068            env: *mut JNIEnv,
1069            array: jcharArray,
1070            isCopy: *mut jboolean,
1071        ) -> *mut jchar,
1072    >,
1073    pub GetShortArrayElements: ::std::option::Option<
1074        unsafe extern "C" fn(
1075            env: *mut JNIEnv,
1076            array: jshortArray,
1077            isCopy: *mut jboolean,
1078        ) -> *mut jshort,
1079    >,
1080    pub GetIntArrayElements: ::std::option::Option<
1081        unsafe extern "C" fn(
1082            env: *mut JNIEnv,
1083            array: jintArray,
1084            isCopy: *mut jboolean,
1085        ) -> *mut jint,
1086    >,
1087    pub GetLongArrayElements: ::std::option::Option<
1088        unsafe extern "C" fn(
1089            env: *mut JNIEnv,
1090            array: jlongArray,
1091            isCopy: *mut jboolean,
1092        ) -> *mut jlong,
1093    >,
1094    pub GetFloatArrayElements: ::std::option::Option<
1095        unsafe extern "C" fn(
1096            env: *mut JNIEnv,
1097            array: jfloatArray,
1098            isCopy: *mut jboolean,
1099        ) -> *mut jfloat,
1100    >,
1101    pub GetDoubleArrayElements: ::std::option::Option<
1102        unsafe extern "C" fn(
1103            env: *mut JNIEnv,
1104            array: jdoubleArray,
1105            isCopy: *mut jboolean,
1106        ) -> *mut jdouble,
1107    >,
1108    pub ReleaseBooleanArrayElements: ::std::option::Option<
1109        unsafe extern "C" fn(
1110            env: *mut JNIEnv,
1111            array: jbooleanArray,
1112            elems: *mut jboolean,
1113            mode: jint,
1114        ),
1115    >,
1116    pub ReleaseByteArrayElements: ::std::option::Option<
1117        unsafe extern "C" fn(env: *mut JNIEnv, array: jbyteArray, elems: *mut jbyte, mode: jint),
1118    >,
1119    pub ReleaseCharArrayElements: ::std::option::Option<
1120        unsafe extern "C" fn(env: *mut JNIEnv, array: jcharArray, elems: *mut jchar, mode: jint),
1121    >,
1122    pub ReleaseShortArrayElements: ::std::option::Option<
1123        unsafe extern "C" fn(env: *mut JNIEnv, array: jshortArray, elems: *mut jshort, mode: jint),
1124    >,
1125    pub ReleaseIntArrayElements: ::std::option::Option<
1126        unsafe extern "C" fn(env: *mut JNIEnv, array: jintArray, elems: *mut jint, mode: jint),
1127    >,
1128    pub ReleaseLongArrayElements: ::std::option::Option<
1129        unsafe extern "C" fn(env: *mut JNIEnv, array: jlongArray, elems: *mut jlong, mode: jint),
1130    >,
1131    pub ReleaseFloatArrayElements: ::std::option::Option<
1132        unsafe extern "C" fn(env: *mut JNIEnv, array: jfloatArray, elems: *mut jfloat, mode: jint),
1133    >,
1134    pub ReleaseDoubleArrayElements: ::std::option::Option<
1135        unsafe extern "C" fn(
1136            env: *mut JNIEnv,
1137            array: jdoubleArray,
1138            elems: *mut jdouble,
1139            mode: jint,
1140        ),
1141    >,
1142    pub GetBooleanArrayRegion: ::std::option::Option<
1143        unsafe extern "C" fn(
1144            env: *mut JNIEnv,
1145            array: jbooleanArray,
1146            start: jsize,
1147            l: jsize,
1148            buf: *mut jboolean,
1149        ),
1150    >,
1151    pub GetByteArrayRegion: ::std::option::Option<
1152        unsafe extern "C" fn(
1153            env: *mut JNIEnv,
1154            array: jbyteArray,
1155            start: jsize,
1156            len: jsize,
1157            buf: *mut jbyte,
1158        ),
1159    >,
1160    pub GetCharArrayRegion: ::std::option::Option<
1161        unsafe extern "C" fn(
1162            env: *mut JNIEnv,
1163            array: jcharArray,
1164            start: jsize,
1165            len: jsize,
1166            buf: *mut jchar,
1167        ),
1168    >,
1169    pub GetShortArrayRegion: ::std::option::Option<
1170        unsafe extern "C" fn(
1171            env: *mut JNIEnv,
1172            array: jshortArray,
1173            start: jsize,
1174            len: jsize,
1175            buf: *mut jshort,
1176        ),
1177    >,
1178    pub GetIntArrayRegion: ::std::option::Option<
1179        unsafe extern "C" fn(
1180            env: *mut JNIEnv,
1181            array: jintArray,
1182            start: jsize,
1183            len: jsize,
1184            buf: *mut jint,
1185        ),
1186    >,
1187    pub GetLongArrayRegion: ::std::option::Option<
1188        unsafe extern "C" fn(
1189            env: *mut JNIEnv,
1190            array: jlongArray,
1191            start: jsize,
1192            len: jsize,
1193            buf: *mut jlong,
1194        ),
1195    >,
1196    pub GetFloatArrayRegion: ::std::option::Option<
1197        unsafe extern "C" fn(
1198            env: *mut JNIEnv,
1199            array: jfloatArray,
1200            start: jsize,
1201            len: jsize,
1202            buf: *mut jfloat,
1203        ),
1204    >,
1205    pub GetDoubleArrayRegion: ::std::option::Option<
1206        unsafe extern "C" fn(
1207            env: *mut JNIEnv,
1208            array: jdoubleArray,
1209            start: jsize,
1210            len: jsize,
1211            buf: *mut jdouble,
1212        ),
1213    >,
1214    pub SetBooleanArrayRegion: ::std::option::Option<
1215        unsafe extern "C" fn(
1216            env: *mut JNIEnv,
1217            array: jbooleanArray,
1218            start: jsize,
1219            l: jsize,
1220            buf: *const jboolean,
1221        ),
1222    >,
1223    pub SetByteArrayRegion: ::std::option::Option<
1224        unsafe extern "C" fn(
1225            env: *mut JNIEnv,
1226            array: jbyteArray,
1227            start: jsize,
1228            len: jsize,
1229            buf: *const jbyte,
1230        ),
1231    >,
1232    pub SetCharArrayRegion: ::std::option::Option<
1233        unsafe extern "C" fn(
1234            env: *mut JNIEnv,
1235            array: jcharArray,
1236            start: jsize,
1237            len: jsize,
1238            buf: *const jchar,
1239        ),
1240    >,
1241    pub SetShortArrayRegion: ::std::option::Option<
1242        unsafe extern "C" fn(
1243            env: *mut JNIEnv,
1244            array: jshortArray,
1245            start: jsize,
1246            len: jsize,
1247            buf: *const jshort,
1248        ),
1249    >,
1250    pub SetIntArrayRegion: ::std::option::Option<
1251        unsafe extern "C" fn(
1252            env: *mut JNIEnv,
1253            array: jintArray,
1254            start: jsize,
1255            len: jsize,
1256            buf: *const jint,
1257        ),
1258    >,
1259    pub SetLongArrayRegion: ::std::option::Option<
1260        unsafe extern "C" fn(
1261            env: *mut JNIEnv,
1262            array: jlongArray,
1263            start: jsize,
1264            len: jsize,
1265            buf: *const jlong,
1266        ),
1267    >,
1268    pub SetFloatArrayRegion: ::std::option::Option<
1269        unsafe extern "C" fn(
1270            env: *mut JNIEnv,
1271            array: jfloatArray,
1272            start: jsize,
1273            len: jsize,
1274            buf: *const jfloat,
1275        ),
1276    >,
1277    pub SetDoubleArrayRegion: ::std::option::Option<
1278        unsafe extern "C" fn(
1279            env: *mut JNIEnv,
1280            array: jdoubleArray,
1281            start: jsize,
1282            len: jsize,
1283            buf: *const jdouble,
1284        ),
1285    >,
1286    pub RegisterNatives: ::std::option::Option<
1287        unsafe extern "C" fn(
1288            env: *mut JNIEnv,
1289            clazz: jclass,
1290            methods: *const JNINativeMethod,
1291            nMethods: jint,
1292        ) -> jint,
1293    >,
1294    pub UnregisterNatives:
1295        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass) -> jint>,
1296    pub MonitorEnter:
1297        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject) -> jint>,
1298    pub MonitorExit:
1299        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject) -> jint>,
1300    pub GetJavaVM:
1301        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, vm: *mut *mut JavaVM) -> jint>,
1302    pub GetStringRegion: ::std::option::Option<
1303        unsafe extern "C" fn(
1304            env: *mut JNIEnv,
1305            str_: jstring,
1306            start: jsize,
1307            len: jsize,
1308            buf: *mut jchar,
1309        ),
1310    >,
1311    pub GetStringUTFRegion: ::std::option::Option<
1312        unsafe extern "C" fn(
1313            env: *mut JNIEnv,
1314            str_: jstring,
1315            start: jsize,
1316            len: jsize,
1317            buf: *mut ::std::os::raw::c_char,
1318        ),
1319    >,
1320    pub GetPrimitiveArrayCritical: ::std::option::Option<
1321        unsafe extern "C" fn(
1322            env: *mut JNIEnv,
1323            array: jarray,
1324            isCopy: *mut jboolean,
1325        ) -> *mut ::std::os::raw::c_void,
1326    >,
1327    pub ReleasePrimitiveArrayCritical: ::std::option::Option<
1328        unsafe extern "C" fn(
1329            env: *mut JNIEnv,
1330            array: jarray,
1331            carray: *mut ::std::os::raw::c_void,
1332            mode: jint,
1333        ),
1334    >,
1335    pub GetStringCritical: ::std::option::Option<
1336        unsafe extern "C" fn(
1337            env: *mut JNIEnv,
1338            string: jstring,
1339            isCopy: *mut jboolean,
1340        ) -> *const jchar,
1341    >,
1342    pub ReleaseStringCritical: ::std::option::Option<
1343        unsafe extern "C" fn(env: *mut JNIEnv, string: jstring, cstring: *const jchar),
1344    >,
1345    pub NewWeakGlobalRef:
1346        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject) -> jweak>,
1347    pub DeleteWeakGlobalRef:
1348        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, ref_: jweak)>,
1349    pub ExceptionCheck: ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv) -> jboolean>,
1350    pub NewDirectByteBuffer: ::std::option::Option<
1351        unsafe extern "C" fn(
1352            env: *mut JNIEnv,
1353            address: *mut ::std::os::raw::c_void,
1354            capacity: jlong,
1355        ) -> jobject,
1356    >,
1357    pub GetDirectBufferAddress: ::std::option::Option<
1358        unsafe extern "C" fn(env: *mut JNIEnv, buf: jobject) -> *mut ::std::os::raw::c_void,
1359    >,
1360    pub GetDirectBufferCapacity:
1361        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, buf: jobject) -> jlong>,
1362    pub GetObjectRefType: ::std::option::Option<
1363        unsafe extern "C" fn(env: *mut JNIEnv, obj: jobject) -> jobjectRefType,
1364    >,
1365    pub GetModule:
1366        ::std::option::Option<unsafe extern "C" fn(env: *mut JNIEnv, clazz: jclass) -> jobject>,
1367}
1368#[repr(C)]
1369#[derive(Debug, Copy, Clone)]
1370pub struct JNIEnv_ {
1371    pub functions: *const JNINativeInterface_,
1372}
1373#[repr(C)]
1374#[derive(Debug, Copy, Clone)]
1375pub struct JavaVMOption {
1376    pub optionString: *mut ::std::os::raw::c_char,
1377    pub extraInfo: *mut ::std::os::raw::c_void,
1378}
1379#[repr(C)]
1380#[derive(Debug, Copy, Clone)]
1381pub struct JavaVMInitArgs {
1382    pub version: jint,
1383    pub nOptions: jint,
1384    pub options: *mut JavaVMOption,
1385    pub ignoreUnrecognized: jboolean,
1386}
1387#[repr(C)]
1388#[derive(Debug, Copy, Clone)]
1389pub struct JavaVMAttachArgs {
1390    pub version: jint,
1391    pub name: *mut ::std::os::raw::c_char,
1392    pub group: jobject,
1393}
1394#[repr(C)]
1395#[derive(Debug, Copy, Clone)]
1396pub struct JNIInvokeInterface_ {
1397    pub reserved0: *mut ::std::os::raw::c_void,
1398    pub reserved1: *mut ::std::os::raw::c_void,
1399    pub reserved2: *mut ::std::os::raw::c_void,
1400    pub DestroyJavaVM: ::std::option::Option<unsafe extern "C" fn(vm: *mut JavaVM) -> jint>,
1401    pub AttachCurrentThread: ::std::option::Option<
1402        unsafe extern "C" fn(
1403            vm: *mut JavaVM,
1404            penv: *mut *mut ::std::os::raw::c_void,
1405            args: *mut ::std::os::raw::c_void,
1406        ) -> jint,
1407    >,
1408    pub DetachCurrentThread: ::std::option::Option<unsafe extern "C" fn(vm: *mut JavaVM) -> jint>,
1409    pub GetEnv: ::std::option::Option<
1410        unsafe extern "C" fn(
1411            vm: *mut JavaVM,
1412            penv: *mut *mut ::std::os::raw::c_void,
1413            version: jint,
1414        ) -> jint,
1415    >,
1416    pub AttachCurrentThreadAsDaemon: ::std::option::Option<
1417        unsafe extern "C" fn(
1418            vm: *mut JavaVM,
1419            penv: *mut *mut ::std::os::raw::c_void,
1420            args: *mut ::std::os::raw::c_void,
1421        ) -> jint,
1422    >,
1423}
1424#[repr(C)]
1425#[derive(Debug, Copy, Clone)]
1426pub struct JavaVM_ {
1427    pub functions: *const JNIInvokeInterface_,
1428}
1429extern "C" {
1430    pub fn JNI_GetDefaultJavaVMInitArgs(args: *mut ::std::os::raw::c_void) -> jint;
1431}
1432extern "C" {
1433    pub fn JNI_CreateJavaVM(
1434        pvm: *mut *mut JavaVM,
1435        penv: *mut *mut ::std::os::raw::c_void,
1436        args: *mut ::std::os::raw::c_void,
1437    ) -> jint;
1438}
1439extern "C" {
1440    pub fn JNI_GetCreatedJavaVMs(arg1: *mut *mut JavaVM, arg2: jsize, arg3: *mut jsize) -> jint;
1441}
1442extern "C" {
1443    pub fn JNI_OnLoad(vm: *mut JavaVM, reserved: *mut ::std::os::raw::c_void) -> jint;
1444}
1445extern "C" {
1446    pub fn JNI_OnUnload(vm: *mut JavaVM, reserved: *mut ::std::os::raw::c_void);
1447}