[go: up one dir, main page]

android_glue 0.1.3

Glue for the Android JNI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
#![allow(dead_code)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]

use libc;

/*
 * android_native_app_glue.h
 */
#[repr(C)]
pub struct android_app {
    pub userData: *mut libc::c_void,
    pub onAppCmd: extern fn(*mut android_app, libc::int32_t),
    pub onInputEvent: extern fn(*mut android_app, *const AInputEvent) -> libc::int32_t,
    pub activity: *const ANativeActivity,
    pub config: *const AConfiguration,
    pub savedState: *mut libc::c_void,
    pub savedStateSize: libc::size_t,
    pub looper: *mut ALooper,
    pub inputQueue: *const AInputQueue,
    pub window: *const ANativeWindow,
    pub contentRect: ARect,
    pub activityState: libc::c_int,
    pub destroyRequested: libc::c_int,
}

#[repr(C)]
pub struct android_poll_source {
    pub id: libc::int32_t,      // can be LOOPER_ID_MAIN, LOOPER_ID_INPUT or LOOPER_ID_USER
    pub app: *mut android_app,
    pub process: extern fn(*mut android_app, *mut android_poll_source),
}

pub const LOOPER_ID_MAIN: libc::int32_t = 1;
pub const LOOPER_ID_INPUT: libc::int32_t = 1;
pub const LOOPER_ID_USER: libc::int32_t = 1;

pub const APP_CMD_INPUT_CHANGED: libc::int32_t = 0;
pub const APP_CMD_INIT_WINDOW: libc::int32_t = 1;
pub const APP_CMD_TERM_WINDOW: libc::int32_t = 2;
pub const APP_CMD_WINDOW_RESIZED: libc::int32_t = 3;
pub const APP_CMD_WINDOW_REDRAW_NEEDED: libc::int32_t = 4;
pub const APP_CMD_CONTENT_RECT_CHANGED: libc::int32_t = 5;
pub const APP_CMD_GAINED_FOCUS: libc::int32_t = 6;
pub const APP_CMD_LOST_FOCUS: libc::int32_t = 7;
pub const APP_CMD_CONFIG_CHANGED: libc::int32_t = 8;
pub const APP_CMD_LOW_MEMORY: libc::int32_t = 9;
pub const APP_CMD_START: libc::int32_t = 10;
pub const APP_CMD_RESUME: libc::int32_t = 11;
pub const APP_CMD_SAVE_STATE: libc::int32_t = 12;
pub const APP_CMD_PAUSE: libc::int32_t = 13;
pub const APP_CMD_STOP: libc::int32_t = 14;
pub const APP_CMD_DESTROY: libc::int32_t = 15;

extern {
    pub fn app_dummy();
}

pub const MODE_BUFFER: libc::int32_t = 3;
pub const MODE_RANDOM: libc::int32_t = 1;
pub const MODE_STREAMING: libc::int32_t = 2;
pub const MODE_UNKNOWN: libc::int32_t = 0;

//
pub type Asset = AAsset;
pub type NativeWindowType = *const ANativeWindow;

//
//       $generated by android-rs-bindgen
//
pub type __va_list_tag = ();

//
#[link(name = "log")]
extern {}
#[link(name = "android")]
extern {}

//
//       android/asset_manager.h
//
pub const AASSET_MODE_BUFFER: libc::int32_t = 3;
pub const AASSET_MODE_RANDOM: libc::int32_t = 1;
pub const AASSET_MODE_STREAMING: libc::int32_t = 2;
pub const AASSET_MODE_UNKNOWN: libc::int32_t = 0;
pub type AAsset = ();
pub type AAssetDir = ();
extern { pub fn AAssetDir_close(assetDir: *mut AAssetDir); }
extern { pub fn AAssetDir_getNextFileName(assetDir: *mut AAssetDir) -> *const libc::c_char; }
extern { pub fn AAssetDir_rewind(assetDir: *mut AAssetDir); }
pub type AAssetManager = ();
extern { pub fn AAssetManager_open(mgr: *mut AAssetManager, filename: *const libc::c_char, mode: libc::c_int) -> *mut AAsset; }
extern { pub fn AAssetManager_openDir(mgr: *mut AAssetManager, dirName: *const libc::c_char) -> *mut AAssetDir; }
extern { pub fn AAsset_close(asset: *mut AAsset); }
extern { pub fn AAsset_getBuffer(asset: *mut AAsset) -> *const libc::c_void; }
extern { pub fn AAsset_getLength(asset: *mut AAsset) -> libc::off_t; }
extern { pub fn AAsset_getLength64(asset: *mut AAsset) -> u64; }
extern { pub fn AAsset_getRemainingLength(asset: *mut AAsset) -> libc::off_t; }
extern { pub fn AAsset_getRemainingLength64(asset: *mut AAsset) -> u64; }
extern { pub fn AAsset_isAllocated(asset: *mut AAsset) -> libc::c_int; }
extern { pub fn AAsset_openFileDescriptor(asset: *mut AAsset, outStart: *mut libc::off_t, outLength: *mut libc::off_t) -> libc::c_int; }
extern { pub fn AAsset_openFileDescriptor64(asset: *mut AAsset, outStart: *mut u64, outLength: *mut u64) -> libc::c_int; }
extern { pub fn AAsset_read(asset: *mut AAsset, buf: *mut libc::c_void, count: libc::size_t) -> libc::c_int; }
extern { pub fn AAsset_seek(asset: *mut AAsset, offset: libc::off_t, whence: libc::c_int) -> libc::off_t; }
extern { pub fn AAsset_seek64(asset: *mut AAsset, offset: u64, whence: libc::c_int) -> u64; }

//
//       android/asset_manager_jni.h
//
extern { pub fn AAssetManager_fromJava(env: *mut JNIEnv, assetManager: jobject) -> *mut AAssetManager; }

//
//       android/bitmap.h
//
pub const ANDROID_BITMAP_FORMAT_A_8: libc::int32_t = 8;
pub const ANDROID_BITMAP_FORMAT_NONE: libc::int32_t = 0;
pub const ANDROID_BITMAP_FORMAT_RGBA_4444: libc::int32_t = 7;
pub const ANDROID_BITMAP_FORMAT_RGBA_8888: libc::int32_t = 1;
pub const ANDROID_BITMAP_FORMAT_RGB_565: libc::int32_t = 4;
#[repr(C)]
pub struct AndroidBitmapInfo {
     pub width:             libc::uint32_t,
     pub height:                libc::uint32_t,
     pub stride:                libc::uint32_t,
     pub format:                libc::int32_t,
     pub flags:             libc::uint32_t,
}
extern { pub fn AndroidBitmap_getInfo(env: *mut JNIEnv, jbitmap: jobject, info: *mut AndroidBitmapInfo) -> libc::c_int; }
extern { pub fn AndroidBitmap_lockPixels(env: *mut JNIEnv, jbitmap: jobject, addrPtr: *mut *mut libc::c_void) -> libc::c_int; }
extern { pub fn AndroidBitmap_unlockPixels(env: *mut JNIEnv, jbitmap: jobject) -> libc::c_int; }

//
//       android/configuration.h
//
pub const ACONFIGURATION_DENSITY: libc::int32_t = 256;
pub const ACONFIGURATION_DENSITY_ANY: libc::int32_t = 65534;
pub const ACONFIGURATION_DENSITY_DEFAULT: libc::int32_t = 0;
pub const ACONFIGURATION_DENSITY_HIGH: libc::int32_t = 240;
pub const ACONFIGURATION_DENSITY_LOW: libc::int32_t = 120;
pub const ACONFIGURATION_DENSITY_MEDIUM: libc::int32_t = 160;
pub const ACONFIGURATION_DENSITY_NONE: libc::int32_t = 65535;
pub const ACONFIGURATION_DENSITY_TV: libc::int32_t = 213;
pub const ACONFIGURATION_DENSITY_XHIGH: libc::int32_t = 320;
pub const ACONFIGURATION_DENSITY_XXHIGH: libc::int32_t = 480;
pub const ACONFIGURATION_DENSITY_XXXHIGH: libc::int32_t = 640;
pub const ACONFIGURATION_KEYBOARD: libc::int32_t = 16;
pub const ACONFIGURATION_KEYBOARD_12KEY: libc::int32_t = 3;
pub const ACONFIGURATION_KEYBOARD_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_KEYBOARD_HIDDEN: libc::int32_t = 32;
pub const ACONFIGURATION_KEYBOARD_NOKEYS: libc::int32_t = 1;
pub const ACONFIGURATION_KEYBOARD_QWERTY: libc::int32_t = 2;
pub const ACONFIGURATION_KEYSHIDDEN_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_KEYSHIDDEN_NO: libc::int32_t = 1;
pub const ACONFIGURATION_KEYSHIDDEN_SOFT: libc::int32_t = 3;
pub const ACONFIGURATION_KEYSHIDDEN_YES: libc::int32_t = 2;
pub const ACONFIGURATION_LAYOUTDIR: libc::int32_t = 16384;
pub const ACONFIGURATION_LAYOUTDIR_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_LAYOUTDIR_LTR: libc::int32_t = 1;
pub const ACONFIGURATION_LAYOUTDIR_RTL: libc::int32_t = 2;
pub const ACONFIGURATION_LOCALE: libc::int32_t = 4;
pub const ACONFIGURATION_MCC: libc::int32_t = 1;
pub const ACONFIGURATION_MNC: libc::int32_t = 2;
pub const ACONFIGURATION_MNC_ZERO: libc::int32_t = 65535;
pub const ACONFIGURATION_NAVHIDDEN_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_NAVHIDDEN_NO: libc::int32_t = 1;
pub const ACONFIGURATION_NAVHIDDEN_YES: libc::int32_t = 2;
pub const ACONFIGURATION_NAVIGATION: libc::int32_t = 64;
pub const ACONFIGURATION_NAVIGATION_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_NAVIGATION_DPAD: libc::int32_t = 2;
pub const ACONFIGURATION_NAVIGATION_NONAV: libc::int32_t = 1;
pub const ACONFIGURATION_NAVIGATION_TRACKBALL: libc::int32_t = 3;
pub const ACONFIGURATION_NAVIGATION_WHEEL: libc::int32_t = 4;
pub const ACONFIGURATION_ORIENTATION: libc::int32_t = 128;
pub const ACONFIGURATION_ORIENTATION_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_ORIENTATION_LAND: libc::int32_t = 2;
pub const ACONFIGURATION_ORIENTATION_PORT: libc::int32_t = 1;
pub const ACONFIGURATION_ORIENTATION_SQUARE: libc::int32_t = 3;
pub const ACONFIGURATION_SCREENLONG_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_SCREENLONG_NO: libc::int32_t = 1;
pub const ACONFIGURATION_SCREENLONG_YES: libc::int32_t = 2;
pub const ACONFIGURATION_SCREENSIZE_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_SCREENSIZE_LARGE: libc::int32_t = 3;
pub const ACONFIGURATION_SCREENSIZE_NORMAL: libc::int32_t = 2;
pub const ACONFIGURATION_SCREENSIZE_SMALL: libc::int32_t = 1;
pub const ACONFIGURATION_SCREENSIZE_XLARGE: libc::int32_t = 4;
pub const ACONFIGURATION_SCREEN_HEIGHT_DP_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_SCREEN_LAYOUT: libc::int32_t = 2048;
pub const ACONFIGURATION_SCREEN_SIZE: libc::int32_t = 512;
pub const ACONFIGURATION_SCREEN_WIDTH_DP_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_SMALLEST_SCREEN_SIZE: libc::int32_t = 8192;
pub const ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_TOUCHSCREEN: libc::int32_t = 8;
pub const ACONFIGURATION_TOUCHSCREEN_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_TOUCHSCREEN_FINGER: libc::int32_t = 3;
pub const ACONFIGURATION_TOUCHSCREEN_NOTOUCH: libc::int32_t = 1;
pub const ACONFIGURATION_TOUCHSCREEN_STYLUS: libc::int32_t = 2;
pub const ACONFIGURATION_UI_MODE: libc::int32_t = 4096;
pub const ACONFIGURATION_UI_MODE_NIGHT_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_UI_MODE_NIGHT_NO: libc::int32_t = 1;
pub const ACONFIGURATION_UI_MODE_NIGHT_YES: libc::int32_t = 2;
pub const ACONFIGURATION_UI_MODE_TYPE_ANY: libc::int32_t = 0;
pub const ACONFIGURATION_UI_MODE_TYPE_APPLIANCE: libc::int32_t = 5;
pub const ACONFIGURATION_UI_MODE_TYPE_CAR: libc::int32_t = 3;
pub const ACONFIGURATION_UI_MODE_TYPE_DESK: libc::int32_t = 2;
pub const ACONFIGURATION_UI_MODE_TYPE_NORMAL: libc::int32_t = 1;
pub const ACONFIGURATION_UI_MODE_TYPE_TELEVISION: libc::int32_t = 4;
pub const ACONFIGURATION_UI_MODE_TYPE_WATCH: libc::int32_t = 6;
pub const ACONFIGURATION_VERSION: libc::int32_t = 1024;
pub type AConfiguration = ();
extern { pub fn AConfiguration_copy(dest: *mut AConfiguration, src: *mut AConfiguration); }
extern { pub fn AConfiguration_delete(config: *mut AConfiguration); }
extern { pub fn AConfiguration_diff(config1: *mut AConfiguration, config2: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_fromAssetManager(out: *mut AConfiguration, am: *mut AAssetManager); }
extern { pub fn AConfiguration_getCountry(config: *mut AConfiguration, outCountry: *mut libc::c_char); }
extern { pub fn AConfiguration_getDensity(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getKeyboard(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getKeysHidden(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getLanguage(config: *mut AConfiguration, outLanguage: *mut libc::c_char); }
extern { pub fn AConfiguration_getLayoutDirection(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getMcc(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getMnc(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getNavHidden(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getNavigation(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getOrientation(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getScreenHeightDp(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getScreenLong(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getScreenSize(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getScreenWidthDp(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getSdkVersion(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getSmallestScreenWidthDp(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getTouchscreen(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getUiModeNight(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_getUiModeType(config: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_isBetterThan(base: *mut AConfiguration, test: *mut AConfiguration, requested: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_match(base: *mut AConfiguration, requested: *mut AConfiguration) -> libc::int32_t; }
extern { pub fn AConfiguration_new() -> *mut AConfiguration; }
extern { pub fn AConfiguration_setCountry(config: *mut AConfiguration, country: *const libc::c_char); }
extern { pub fn AConfiguration_setDensity(config: *mut AConfiguration, density: libc::int32_t); }
extern { pub fn AConfiguration_setKeyboard(config: *mut AConfiguration, keyboard: libc::int32_t); }
extern { pub fn AConfiguration_setKeysHidden(config: *mut AConfiguration, keysHidden: libc::int32_t); }
extern { pub fn AConfiguration_setLanguage(config: *mut AConfiguration, language: *const libc::c_char); }
extern { pub fn AConfiguration_setLayoutDirection(config: *mut AConfiguration, value: libc::int32_t); }
extern { pub fn AConfiguration_setMcc(config: *mut AConfiguration, mcc: libc::int32_t); }
extern { pub fn AConfiguration_setMnc(config: *mut AConfiguration, mnc: libc::int32_t); }
extern { pub fn AConfiguration_setNavHidden(config: *mut AConfiguration, navHidden: libc::int32_t); }
extern { pub fn AConfiguration_setNavigation(config: *mut AConfiguration, navigation: libc::int32_t); }
extern { pub fn AConfiguration_setOrientation(config: *mut AConfiguration, orientation: libc::int32_t); }
extern { pub fn AConfiguration_setScreenHeightDp(config: *mut AConfiguration, value: libc::int32_t); }
extern { pub fn AConfiguration_setScreenLong(config: *mut AConfiguration, screenLong: libc::int32_t); }
extern { pub fn AConfiguration_setScreenSize(config: *mut AConfiguration, screenSize: libc::int32_t); }
extern { pub fn AConfiguration_setScreenWidthDp(config: *mut AConfiguration, value: libc::int32_t); }
extern { pub fn AConfiguration_setSdkVersion(config: *mut AConfiguration, sdkVersion: libc::int32_t); }
extern { pub fn AConfiguration_setSmallestScreenWidthDp(config: *mut AConfiguration, value: libc::int32_t); }
extern { pub fn AConfiguration_setTouchscreen(config: *mut AConfiguration, touchscreen: libc::int32_t); }
extern { pub fn AConfiguration_setUiModeNight(config: *mut AConfiguration, uiModeNight: libc::int32_t); }
extern { pub fn AConfiguration_setUiModeType(config: *mut AConfiguration, uiModeType: libc::int32_t); }

//
//       android/dlext.h
//
pub const ANDROID_DLEXT_RESERVED_ADDRESS: libc::int32_t = 1;
pub const ANDROID_DLEXT_RESERVED_ADDRESS_HINT: libc::int32_t = 2;
pub const ANDROID_DLEXT_USE_LIBRARY_FD: libc::int32_t = 16;
pub const ANDROID_DLEXT_USE_RELRO: libc::int32_t = 8;
pub const ANDROID_DLEXT_VALID_FLAG_BITS: libc::int32_t = 31;
pub const ANDROID_DLEXT_WRITE_RELRO: libc::int32_t = 4;
#[repr(C)]
pub struct android_dlextinfo {
     pub flags:             libc::uint64_t,
     pub reserved_addr:             *mut libc::c_void,
     pub reserved_size:             libc::size_t,
     pub relro_fd:              libc::c_int,
     pub library_fd:                libc::c_int,
}
extern { pub fn android_dlopen_ext(filename: *const libc::c_char, flag: libc::c_int, extinfo: *const android_dlextinfo) -> *mut libc::c_void; }

//
//       android/input.h
//
pub const AINPUT_EVENT_TYPE_KEY: libc::int32_t = 1;
pub const AINPUT_EVENT_TYPE_MOTION: libc::int32_t = 2;
pub const AINPUT_KEYBOARD_TYPE_ALPHABETIC: libc::int32_t = 2;
pub const AINPUT_KEYBOARD_TYPE_NONE: libc::int32_t = 0;
pub const AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC: libc::int32_t = 1;
pub const AINPUT_MOTION_RANGE_ORIENTATION: libc::int32_t = 8;
pub const AINPUT_MOTION_RANGE_PRESSURE: libc::int32_t = 2;
pub const AINPUT_MOTION_RANGE_SIZE: libc::int32_t = 3;
pub const AINPUT_MOTION_RANGE_TOOL_MAJOR: libc::int32_t = 6;
pub const AINPUT_MOTION_RANGE_TOOL_MINOR: libc::int32_t = 7;
pub const AINPUT_MOTION_RANGE_TOUCH_MAJOR: libc::int32_t = 4;
pub const AINPUT_MOTION_RANGE_TOUCH_MINOR: libc::int32_t = 5;
pub const AINPUT_MOTION_RANGE_X: libc::int32_t = 0;
pub const AINPUT_MOTION_RANGE_Y: libc::int32_t = 1;
pub const AINPUT_SOURCE_ANY: libc::int32_t = -256;
pub const AINPUT_SOURCE_CLASS_BUTTON: libc::int32_t = 1;
pub const AINPUT_SOURCE_CLASS_JOYSTICK: libc::int32_t = 16;
pub const AINPUT_SOURCE_CLASS_MASK: libc::int32_t = 255;
pub const AINPUT_SOURCE_CLASS_NAVIGATION: libc::int32_t = 4;
pub const AINPUT_SOURCE_CLASS_NONE: libc::int32_t = 0;
pub const AINPUT_SOURCE_CLASS_POINTER: libc::int32_t = 2;
pub const AINPUT_SOURCE_CLASS_POSITION: libc::int32_t = 8;
pub const AINPUT_SOURCE_DPAD: libc::int32_t = 513;
pub const AINPUT_SOURCE_GAMEPAD: libc::int32_t = 1025;
pub const AINPUT_SOURCE_JOYSTICK: libc::int32_t = 16777232;
pub const AINPUT_SOURCE_KEYBOARD: libc::int32_t = 257;
pub const AINPUT_SOURCE_MOUSE: libc::int32_t = 8194;
pub const AINPUT_SOURCE_STYLUS: libc::int32_t = 16386;
pub const AINPUT_SOURCE_TOUCHPAD: libc::int32_t = 1048584;
pub const AINPUT_SOURCE_TOUCHSCREEN: libc::int32_t = 4098;
pub const AINPUT_SOURCE_TOUCH_NAVIGATION: libc::int32_t = 2097152;
pub const AINPUT_SOURCE_TRACKBALL: libc::int32_t = 65540;
pub const AINPUT_SOURCE_UNKNOWN: libc::int32_t = 0;
pub type AInputEvent = ();
extern { pub fn AInputEvent_getDeviceId(event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AInputEvent_getSource(event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AInputEvent_getType(event: *const AInputEvent) -> libc::int32_t; }
pub type AInputQueue = ();
extern { pub fn AInputQueue_attachLooper(queue: *mut AInputQueue, looper: *mut ALooper, ident: libc::c_int, callback: ALooper_callbackFunc, data: *mut libc::c_void); }
extern { pub fn AInputQueue_detachLooper(queue: *mut AInputQueue); }
extern { pub fn AInputQueue_finishEvent(queue: *mut AInputQueue, event: *mut AInputEvent, handled: libc::c_int); }
extern { pub fn AInputQueue_getEvent(queue: *mut AInputQueue, outEvent: *mut *mut AInputEvent) -> libc::int32_t; }
extern { pub fn AInputQueue_hasEvents(queue: *mut AInputQueue) -> libc::int32_t; }
extern { pub fn AInputQueue_preDispatchEvent(queue: *mut AInputQueue, event: *mut AInputEvent) -> libc::int32_t; }
pub const AKEY_EVENT_ACTION_DOWN: libc::int32_t = 0;
pub const AKEY_EVENT_ACTION_MULTIPLE: libc::int32_t = 2;
pub const AKEY_EVENT_ACTION_UP: libc::int32_t = 1;
pub const AKEY_EVENT_FLAG_CANCELED: libc::int32_t = 32;
pub const AKEY_EVENT_FLAG_CANCELED_LONG_PRESS: libc::int32_t = 256;
pub const AKEY_EVENT_FLAG_EDITOR_ACTION: libc::int32_t = 16;
pub const AKEY_EVENT_FLAG_FALLBACK: libc::int32_t = 1024;
pub const AKEY_EVENT_FLAG_FROM_SYSTEM: libc::int32_t = 8;
pub const AKEY_EVENT_FLAG_KEEP_TOUCH_MODE: libc::int32_t = 4;
pub const AKEY_EVENT_FLAG_LONG_PRESS: libc::int32_t = 128;
pub const AKEY_EVENT_FLAG_SOFT_KEYBOARD: libc::int32_t = 2;
pub const AKEY_EVENT_FLAG_TRACKING: libc::int32_t = 512;
pub const AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY: libc::int32_t = 64;
pub const AKEY_EVENT_FLAG_WOKE_HERE: libc::int32_t = 1;
pub const AKEY_STATE_DOWN: libc::int32_t = 1;
pub const AKEY_STATE_UNKNOWN: libc::int32_t = -1;
pub const AKEY_STATE_UP: libc::int32_t = 0;
pub const AKEY_STATE_VIRTUAL: libc::int32_t = 2;
extern { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AKeyEvent_getDownTime(key_event: *const AInputEvent) -> libc::int64_t; }
extern { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> libc::int64_t; }
extern { pub fn AKeyEvent_getFlags(key_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AKeyEvent_getKeyCode(key_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AKeyEvent_getMetaState(key_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AKeyEvent_getRepeatCount(key_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AKeyEvent_getScanCode(key_event: *const AInputEvent) -> libc::int32_t; }
pub const AMETA_ALT_LEFT_ON: libc::int32_t = 16;
pub const AMETA_ALT_ON: libc::int32_t = 2;
pub const AMETA_ALT_RIGHT_ON: libc::int32_t = 32;
pub const AMETA_CAPS_LOCK_ON: libc::int32_t = 1048576;
pub const AMETA_CTRL_LEFT_ON: libc::int32_t = 8192;
pub const AMETA_CTRL_ON: libc::int32_t = 4096;
pub const AMETA_CTRL_RIGHT_ON: libc::int32_t = 16384;
pub const AMETA_FUNCTION_ON: libc::int32_t = 8;
pub const AMETA_META_LEFT_ON: libc::int32_t = 131072;
pub const AMETA_META_ON: libc::int32_t = 65536;
pub const AMETA_META_RIGHT_ON: libc::int32_t = 262144;
pub const AMETA_NONE: libc::int32_t = 0;
pub const AMETA_NUM_LOCK_ON: libc::int32_t = 2097152;
pub const AMETA_SCROLL_LOCK_ON: libc::int32_t = 4194304;
pub const AMETA_SHIFT_LEFT_ON: libc::int32_t = 64;
pub const AMETA_SHIFT_ON: libc::int32_t = 1;
pub const AMETA_SHIFT_RIGHT_ON: libc::int32_t = 128;
pub const AMETA_SYM_ON: libc::int32_t = 4;
pub const AMOTION_EVENT_ACTION_CANCEL: libc::int32_t = 3;
pub const AMOTION_EVENT_ACTION_DOWN: libc::int32_t = 0;
pub const AMOTION_EVENT_ACTION_HOVER_ENTER: libc::int32_t = 9;
pub const AMOTION_EVENT_ACTION_HOVER_EXIT: libc::int32_t = 10;
pub const AMOTION_EVENT_ACTION_HOVER_MOVE: libc::int32_t = 7;
pub const AMOTION_EVENT_ACTION_MASK: libc::int32_t = 255;
pub const AMOTION_EVENT_ACTION_MOVE: libc::int32_t = 2;
pub const AMOTION_EVENT_ACTION_OUTSIDE: libc::int32_t = 4;
pub const AMOTION_EVENT_ACTION_POINTER_DOWN: libc::int32_t = 5;
pub const AMOTION_EVENT_ACTION_POINTER_INDEX_MASK: libc::int32_t = 65280;
pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: libc::int32_t = 8;
pub const AMOTION_EVENT_ACTION_POINTER_UP: libc::int32_t = 6;
pub const AMOTION_EVENT_ACTION_SCROLL: libc::int32_t = 8;
pub const AMOTION_EVENT_ACTION_UP: libc::int32_t = 1;
pub const AMOTION_EVENT_AXIS_BRAKE: libc::int32_t = 23;
pub const AMOTION_EVENT_AXIS_DISTANCE: libc::int32_t = 24;
pub const AMOTION_EVENT_AXIS_GAS: libc::int32_t = 22;
pub const AMOTION_EVENT_AXIS_GENERIC_1: libc::int32_t = 32;
pub const AMOTION_EVENT_AXIS_GENERIC_10: libc::int32_t = 41;
pub const AMOTION_EVENT_AXIS_GENERIC_11: libc::int32_t = 42;
pub const AMOTION_EVENT_AXIS_GENERIC_12: libc::int32_t = 43;
pub const AMOTION_EVENT_AXIS_GENERIC_13: libc::int32_t = 44;
pub const AMOTION_EVENT_AXIS_GENERIC_14: libc::int32_t = 45;
pub const AMOTION_EVENT_AXIS_GENERIC_15: libc::int32_t = 46;
pub const AMOTION_EVENT_AXIS_GENERIC_16: libc::int32_t = 47;
pub const AMOTION_EVENT_AXIS_GENERIC_2: libc::int32_t = 33;
pub const AMOTION_EVENT_AXIS_GENERIC_3: libc::int32_t = 34;
pub const AMOTION_EVENT_AXIS_GENERIC_4: libc::int32_t = 35;
pub const AMOTION_EVENT_AXIS_GENERIC_5: libc::int32_t = 36;
pub const AMOTION_EVENT_AXIS_GENERIC_6: libc::int32_t = 37;
pub const AMOTION_EVENT_AXIS_GENERIC_7: libc::int32_t = 38;
pub const AMOTION_EVENT_AXIS_GENERIC_8: libc::int32_t = 39;
pub const AMOTION_EVENT_AXIS_GENERIC_9: libc::int32_t = 40;
pub const AMOTION_EVENT_AXIS_HAT_X: libc::int32_t = 15;
pub const AMOTION_EVENT_AXIS_HAT_Y: libc::int32_t = 16;
pub const AMOTION_EVENT_AXIS_HSCROLL: libc::int32_t = 10;
pub const AMOTION_EVENT_AXIS_LTRIGGER: libc::int32_t = 17;
pub const AMOTION_EVENT_AXIS_ORIENTATION: libc::int32_t = 8;
pub const AMOTION_EVENT_AXIS_PRESSURE: libc::int32_t = 2;
pub const AMOTION_EVENT_AXIS_RTRIGGER: libc::int32_t = 18;
pub const AMOTION_EVENT_AXIS_RUDDER: libc::int32_t = 20;
pub const AMOTION_EVENT_AXIS_RX: libc::int32_t = 12;
pub const AMOTION_EVENT_AXIS_RY: libc::int32_t = 13;
pub const AMOTION_EVENT_AXIS_RZ: libc::int32_t = 14;
pub const AMOTION_EVENT_AXIS_SIZE: libc::int32_t = 3;
pub const AMOTION_EVENT_AXIS_THROTTLE: libc::int32_t = 19;
pub const AMOTION_EVENT_AXIS_TILT: libc::int32_t = 25;
pub const AMOTION_EVENT_AXIS_TOOL_MAJOR: libc::int32_t = 6;
pub const AMOTION_EVENT_AXIS_TOOL_MINOR: libc::int32_t = 7;
pub const AMOTION_EVENT_AXIS_TOUCH_MAJOR: libc::int32_t = 4;
pub const AMOTION_EVENT_AXIS_TOUCH_MINOR: libc::int32_t = 5;
pub const AMOTION_EVENT_AXIS_VSCROLL: libc::int32_t = 9;
pub const AMOTION_EVENT_AXIS_WHEEL: libc::int32_t = 21;
pub const AMOTION_EVENT_AXIS_X: libc::int32_t = 0;
pub const AMOTION_EVENT_AXIS_Y: libc::int32_t = 1;
pub const AMOTION_EVENT_AXIS_Z: libc::int32_t = 11;
pub const AMOTION_EVENT_BUTTON_BACK: libc::int32_t = 8;
pub const AMOTION_EVENT_BUTTON_FORWARD: libc::int32_t = 16;
pub const AMOTION_EVENT_BUTTON_PRIMARY: libc::int32_t = 1;
pub const AMOTION_EVENT_BUTTON_SECONDARY: libc::int32_t = 2;
pub const AMOTION_EVENT_BUTTON_TERTIARY: libc::int32_t = 4;
pub const AMOTION_EVENT_EDGE_FLAG_BOTTOM: libc::int32_t = 2;
pub const AMOTION_EVENT_EDGE_FLAG_LEFT: libc::int32_t = 4;
pub const AMOTION_EVENT_EDGE_FLAG_NONE: libc::int32_t = 0;
pub const AMOTION_EVENT_EDGE_FLAG_RIGHT: libc::int32_t = 8;
pub const AMOTION_EVENT_EDGE_FLAG_TOP: libc::int32_t = 1;
pub const AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED: libc::int32_t = 1;
pub const AMOTION_EVENT_TOOL_TYPE_ERASER: libc::int32_t = 4;
pub const AMOTION_EVENT_TOOL_TYPE_FINGER: libc::int32_t = 1;
pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: libc::int32_t = 3;
pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: libc::int32_t = 2;
pub const AMOTION_EVENT_TOOL_TYPE_UNKNOWN: libc::int32_t = 0;
extern { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AMotionEvent_getAxisValue(motion_event: *const AInputEvent, axis: libc::int32_t, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getButtonState(motion_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AMotionEvent_getDownTime(motion_event: *const AInputEvent) -> libc::int64_t; }
extern { pub fn AMotionEvent_getEdgeFlags(motion_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AMotionEvent_getEventTime(motion_event: *const AInputEvent) -> libc::int64_t; }
extern { pub fn AMotionEvent_getFlags(motion_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AMotionEvent_getHistoricalAxisValue(motion_event: *const AInputEvent, axis: libc::int32_t, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalEventTime(motion_event: *const AInputEvent, history_index: libc::size_t) -> libc::int64_t; }
extern { pub fn AMotionEvent_getHistoricalOrientation(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalPressure(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalRawX(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalRawY(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalSize(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalToolMajor(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalToolMinor(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalTouchMajor(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalTouchMinor(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalX(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistoricalY(motion_event: *const AInputEvent, pointer_index: libc::size_t, history_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getHistorySize(motion_event: *const AInputEvent) -> libc::size_t; }
extern { pub fn AMotionEvent_getMetaState(motion_event: *const AInputEvent) -> libc::int32_t; }
extern { pub fn AMotionEvent_getOrientation(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getPointerCount(motion_event: *const AInputEvent) -> libc::size_t; }
extern { pub fn AMotionEvent_getPointerId(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::int32_t; }
extern { pub fn AMotionEvent_getPressure(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getRawX(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getRawY(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getSize(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getToolMajor(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getToolMinor(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getToolType(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::int32_t; }
extern { pub fn AMotionEvent_getTouchMajor(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getTouchMinor(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getX(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getXOffset(motion_event: *const AInputEvent) -> libc::c_float; }
extern { pub fn AMotionEvent_getXPrecision(motion_event: *const AInputEvent) -> libc::c_float; }
extern { pub fn AMotionEvent_getY(motion_event: *const AInputEvent, pointer_index: libc::size_t) -> libc::c_float; }
extern { pub fn AMotionEvent_getYOffset(motion_event: *const AInputEvent) -> libc::c_float; }
extern { pub fn AMotionEvent_getYPrecision(motion_event: *const AInputEvent) -> libc::c_float; }

//
//       android/keycodes.h
//
pub const AKEYCODE_0: libc::int32_t = 7;
pub const AKEYCODE_1: libc::int32_t = 8;
pub const AKEYCODE_11: libc::int32_t = 227;
pub const AKEYCODE_12: libc::int32_t = 228;
pub const AKEYCODE_2: libc::int32_t = 9;
pub const AKEYCODE_3: libc::int32_t = 10;
pub const AKEYCODE_3D_MODE: libc::int32_t = 206;
pub const AKEYCODE_4: libc::int32_t = 11;
pub const AKEYCODE_5: libc::int32_t = 12;
pub const AKEYCODE_6: libc::int32_t = 13;
pub const AKEYCODE_7: libc::int32_t = 14;
pub const AKEYCODE_8: libc::int32_t = 15;
pub const AKEYCODE_9: libc::int32_t = 16;
pub const AKEYCODE_A: libc::int32_t = 29;
pub const AKEYCODE_ALT_LEFT: libc::int32_t = 57;
pub const AKEYCODE_ALT_RIGHT: libc::int32_t = 58;
pub const AKEYCODE_APOSTROPHE: libc::int32_t = 75;
pub const AKEYCODE_APP_SWITCH: libc::int32_t = 187;
pub const AKEYCODE_ASSIST: libc::int32_t = 219;
pub const AKEYCODE_AT: libc::int32_t = 77;
pub const AKEYCODE_AVR_INPUT: libc::int32_t = 182;
pub const AKEYCODE_AVR_POWER: libc::int32_t = 181;
pub const AKEYCODE_B: libc::int32_t = 30;
pub const AKEYCODE_BACK: libc::int32_t = 4;
pub const AKEYCODE_BACKSLASH: libc::int32_t = 73;
pub const AKEYCODE_BOOKMARK: libc::int32_t = 174;
pub const AKEYCODE_BREAK: libc::int32_t = 121;
pub const AKEYCODE_BRIGHTNESS_DOWN: libc::int32_t = 220;
pub const AKEYCODE_BRIGHTNESS_UP: libc::int32_t = 221;
pub const AKEYCODE_BUTTON_1: libc::int32_t = 188;
pub const AKEYCODE_BUTTON_10: libc::int32_t = 197;
pub const AKEYCODE_BUTTON_11: libc::int32_t = 198;
pub const AKEYCODE_BUTTON_12: libc::int32_t = 199;
pub const AKEYCODE_BUTTON_13: libc::int32_t = 200;
pub const AKEYCODE_BUTTON_14: libc::int32_t = 201;
pub const AKEYCODE_BUTTON_15: libc::int32_t = 202;
pub const AKEYCODE_BUTTON_16: libc::int32_t = 203;
pub const AKEYCODE_BUTTON_2: libc::int32_t = 189;
pub const AKEYCODE_BUTTON_3: libc::int32_t = 190;
pub const AKEYCODE_BUTTON_4: libc::int32_t = 191;
pub const AKEYCODE_BUTTON_5: libc::int32_t = 192;
pub const AKEYCODE_BUTTON_6: libc::int32_t = 193;
pub const AKEYCODE_BUTTON_7: libc::int32_t = 194;
pub const AKEYCODE_BUTTON_8: libc::int32_t = 195;
pub const AKEYCODE_BUTTON_9: libc::int32_t = 196;
pub const AKEYCODE_BUTTON_A: libc::int32_t = 96;
pub const AKEYCODE_BUTTON_B: libc::int32_t = 97;
pub const AKEYCODE_BUTTON_C: libc::int32_t = 98;
pub const AKEYCODE_BUTTON_L1: libc::int32_t = 102;
pub const AKEYCODE_BUTTON_L2: libc::int32_t = 104;
pub const AKEYCODE_BUTTON_MODE: libc::int32_t = 110;
pub const AKEYCODE_BUTTON_R1: libc::int32_t = 103;
pub const AKEYCODE_BUTTON_R2: libc::int32_t = 105;
pub const AKEYCODE_BUTTON_SELECT: libc::int32_t = 109;
pub const AKEYCODE_BUTTON_START: libc::int32_t = 108;
pub const AKEYCODE_BUTTON_THUMBL: libc::int32_t = 106;
pub const AKEYCODE_BUTTON_THUMBR: libc::int32_t = 107;
pub const AKEYCODE_BUTTON_X: libc::int32_t = 99;
pub const AKEYCODE_BUTTON_Y: libc::int32_t = 100;
pub const AKEYCODE_BUTTON_Z: libc::int32_t = 101;
pub const AKEYCODE_C: libc::int32_t = 31;
pub const AKEYCODE_CALCULATOR: libc::int32_t = 210;
pub const AKEYCODE_CALENDAR: libc::int32_t = 208;
pub const AKEYCODE_CALL: libc::int32_t = 5;
pub const AKEYCODE_CAMERA: libc::int32_t = 27;
pub const AKEYCODE_CAPS_LOCK: libc::int32_t = 115;
pub const AKEYCODE_CAPTIONS: libc::int32_t = 175;
pub const AKEYCODE_CHANNEL_DOWN: libc::int32_t = 167;
pub const AKEYCODE_CHANNEL_UP: libc::int32_t = 166;
pub const AKEYCODE_CLEAR: libc::int32_t = 28;
pub const AKEYCODE_COMMA: libc::int32_t = 55;
pub const AKEYCODE_CONTACTS: libc::int32_t = 207;
pub const AKEYCODE_CTRL_LEFT: libc::int32_t = 113;
pub const AKEYCODE_CTRL_RIGHT: libc::int32_t = 114;
pub const AKEYCODE_D: libc::int32_t = 32;
pub const AKEYCODE_DEL: libc::int32_t = 67;
pub const AKEYCODE_DPAD_CENTER: libc::int32_t = 23;
pub const AKEYCODE_DPAD_DOWN: libc::int32_t = 20;
pub const AKEYCODE_DPAD_LEFT: libc::int32_t = 21;
pub const AKEYCODE_DPAD_RIGHT: libc::int32_t = 22;
pub const AKEYCODE_DPAD_UP: libc::int32_t = 19;
pub const AKEYCODE_DVR: libc::int32_t = 173;
pub const AKEYCODE_E: libc::int32_t = 33;
pub const AKEYCODE_EISU: libc::int32_t = 212;
pub const AKEYCODE_ENDCALL: libc::int32_t = 6;
pub const AKEYCODE_ENTER: libc::int32_t = 66;
pub const AKEYCODE_ENVELOPE: libc::int32_t = 65;
pub const AKEYCODE_EQUALS: libc::int32_t = 70;
pub const AKEYCODE_ESCAPE: libc::int32_t = 111;
pub const AKEYCODE_EXPLORER: libc::int32_t = 64;
pub const AKEYCODE_F: libc::int32_t = 34;
pub const AKEYCODE_F1: libc::int32_t = 131;
pub const AKEYCODE_F10: libc::int32_t = 140;
pub const AKEYCODE_F11: libc::int32_t = 141;
pub const AKEYCODE_F12: libc::int32_t = 142;
pub const AKEYCODE_F2: libc::int32_t = 132;
pub const AKEYCODE_F3: libc::int32_t = 133;
pub const AKEYCODE_F4: libc::int32_t = 134;
pub const AKEYCODE_F5: libc::int32_t = 135;
pub const AKEYCODE_F6: libc::int32_t = 136;
pub const AKEYCODE_F7: libc::int32_t = 137;
pub const AKEYCODE_F8: libc::int32_t = 138;
pub const AKEYCODE_F9: libc::int32_t = 139;
pub const AKEYCODE_FOCUS: libc::int32_t = 80;
pub const AKEYCODE_FORWARD: libc::int32_t = 125;
pub const AKEYCODE_FORWARD_DEL: libc::int32_t = 112;
pub const AKEYCODE_FUNCTION: libc::int32_t = 119;
pub const AKEYCODE_G: libc::int32_t = 35;
pub const AKEYCODE_GRAVE: libc::int32_t = 68;
pub const AKEYCODE_GUIDE: libc::int32_t = 172;
pub const AKEYCODE_H: libc::int32_t = 36;
pub const AKEYCODE_HEADSETHOOK: libc::int32_t = 79;
pub const AKEYCODE_HELP: libc::int32_t = 259;
pub const AKEYCODE_HENKAN: libc::int32_t = 214;
pub const AKEYCODE_HOME: libc::int32_t = 3;
pub const AKEYCODE_I: libc::int32_t = 37;
pub const AKEYCODE_INFO: libc::int32_t = 165;
pub const AKEYCODE_INSERT: libc::int32_t = 124;
pub const AKEYCODE_J: libc::int32_t = 38;
pub const AKEYCODE_K: libc::int32_t = 39;
pub const AKEYCODE_KANA: libc::int32_t = 218;
pub const AKEYCODE_KATAKANA_HIRAGANA: libc::int32_t = 215;
pub const AKEYCODE_L: libc::int32_t = 40;
pub const AKEYCODE_LANGUAGE_SWITCH: libc::int32_t = 204;
pub const AKEYCODE_LAST_CHANNEL: libc::int32_t = 229;
pub const AKEYCODE_LEFT_BRACKET: libc::int32_t = 71;
pub const AKEYCODE_M: libc::int32_t = 41;
pub const AKEYCODE_MANNER_MODE: libc::int32_t = 205;
pub const AKEYCODE_MEDIA_AUDIO_TRACK: libc::int32_t = 222;
pub const AKEYCODE_MEDIA_CLOSE: libc::int32_t = 128;
pub const AKEYCODE_MEDIA_EJECT: libc::int32_t = 129;
pub const AKEYCODE_MEDIA_FAST_FORWARD: libc::int32_t = 90;
pub const AKEYCODE_MEDIA_NEXT: libc::int32_t = 87;
pub const AKEYCODE_MEDIA_PAUSE: libc::int32_t = 127;
pub const AKEYCODE_MEDIA_PLAY: libc::int32_t = 126;
pub const AKEYCODE_MEDIA_PLAY_PAUSE: libc::int32_t = 85;
pub const AKEYCODE_MEDIA_PREVIOUS: libc::int32_t = 88;
pub const AKEYCODE_MEDIA_RECORD: libc::int32_t = 130;
pub const AKEYCODE_MEDIA_REWIND: libc::int32_t = 89;
pub const AKEYCODE_MEDIA_STOP: libc::int32_t = 86;
pub const AKEYCODE_MEDIA_TOP_MENU: libc::int32_t = 226;
pub const AKEYCODE_MENU: libc::int32_t = 82;
pub const AKEYCODE_META_LEFT: libc::int32_t = 117;
pub const AKEYCODE_META_RIGHT: libc::int32_t = 118;
pub const AKEYCODE_MINUS: libc::int32_t = 69;
pub const AKEYCODE_MOVE_END: libc::int32_t = 123;
pub const AKEYCODE_MOVE_HOME: libc::int32_t = 122;
pub const AKEYCODE_MUHENKAN: libc::int32_t = 213;
pub const AKEYCODE_MUSIC: libc::int32_t = 209;
pub const AKEYCODE_MUTE: libc::int32_t = 91;
pub const AKEYCODE_N: libc::int32_t = 42;
pub const AKEYCODE_NOTIFICATION: libc::int32_t = 83;
pub const AKEYCODE_NUM: libc::int32_t = 78;
pub const AKEYCODE_NUMPAD_0: libc::int32_t = 144;
pub const AKEYCODE_NUMPAD_1: libc::int32_t = 145;
pub const AKEYCODE_NUMPAD_2: libc::int32_t = 146;
pub const AKEYCODE_NUMPAD_3: libc::int32_t = 147;
pub const AKEYCODE_NUMPAD_4: libc::int32_t = 148;
pub const AKEYCODE_NUMPAD_5: libc::int32_t = 149;
pub const AKEYCODE_NUMPAD_6: libc::int32_t = 150;
pub const AKEYCODE_NUMPAD_7: libc::int32_t = 151;
pub const AKEYCODE_NUMPAD_8: libc::int32_t = 152;
pub const AKEYCODE_NUMPAD_9: libc::int32_t = 153;
pub const AKEYCODE_NUMPAD_ADD: libc::int32_t = 157;
pub const AKEYCODE_NUMPAD_COMMA: libc::int32_t = 159;
pub const AKEYCODE_NUMPAD_DIVIDE: libc::int32_t = 154;
pub const AKEYCODE_NUMPAD_DOT: libc::int32_t = 158;
pub const AKEYCODE_NUMPAD_ENTER: libc::int32_t = 160;
pub const AKEYCODE_NUMPAD_EQUALS: libc::int32_t = 161;
pub const AKEYCODE_NUMPAD_LEFT_PAREN: libc::int32_t = 162;
pub const AKEYCODE_NUMPAD_MULTIPLY: libc::int32_t = 155;
pub const AKEYCODE_NUMPAD_RIGHT_PAREN: libc::int32_t = 163;
pub const AKEYCODE_NUMPAD_SUBTRACT: libc::int32_t = 156;
pub const AKEYCODE_NUM_LOCK: libc::int32_t = 143;
pub const AKEYCODE_O: libc::int32_t = 43;
pub const AKEYCODE_P: libc::int32_t = 44;
pub const AKEYCODE_PAGE_DOWN: libc::int32_t = 93;
pub const AKEYCODE_PAGE_UP: libc::int32_t = 92;
pub const AKEYCODE_PAIRING: libc::int32_t = 225;
pub const AKEYCODE_PERIOD: libc::int32_t = 56;
pub const AKEYCODE_PICTSYMBOLS: libc::int32_t = 94;
pub const AKEYCODE_PLUS: libc::int32_t = 81;
pub const AKEYCODE_POUND: libc::int32_t = 18;
pub const AKEYCODE_POWER: libc::int32_t = 26;
pub const AKEYCODE_PROG_BLUE: libc::int32_t = 186;
pub const AKEYCODE_PROG_GREEN: libc::int32_t = 184;
pub const AKEYCODE_PROG_RED: libc::int32_t = 183;
pub const AKEYCODE_PROG_YELLOW: libc::int32_t = 185;
pub const AKEYCODE_Q: libc::int32_t = 45;
pub const AKEYCODE_R: libc::int32_t = 46;
pub const AKEYCODE_RIGHT_BRACKET: libc::int32_t = 72;
pub const AKEYCODE_RO: libc::int32_t = 217;
pub const AKEYCODE_S: libc::int32_t = 47;
pub const AKEYCODE_SCROLL_LOCK: libc::int32_t = 116;
pub const AKEYCODE_SEARCH: libc::int32_t = 84;
pub const AKEYCODE_SEMICOLON: libc::int32_t = 74;
pub const AKEYCODE_SETTINGS: libc::int32_t = 176;
pub const AKEYCODE_SHIFT_LEFT: libc::int32_t = 59;
pub const AKEYCODE_SHIFT_RIGHT: libc::int32_t = 60;
pub const AKEYCODE_SLASH: libc::int32_t = 76;
pub const AKEYCODE_SLEEP: libc::int32_t = 223;
pub const AKEYCODE_SOFT_LEFT: libc::int32_t = 1;
pub const AKEYCODE_SOFT_RIGHT: libc::int32_t = 2;
pub const AKEYCODE_SPACE: libc::int32_t = 62;
pub const AKEYCODE_STAR: libc::int32_t = 17;
pub const AKEYCODE_STB_INPUT: libc::int32_t = 180;
pub const AKEYCODE_STB_POWER: libc::int32_t = 179;
pub const AKEYCODE_SWITCH_CHARSET: libc::int32_t = 95;
pub const AKEYCODE_SYM: libc::int32_t = 63;
pub const AKEYCODE_SYSRQ: libc::int32_t = 120;
pub const AKEYCODE_T: libc::int32_t = 48;
pub const AKEYCODE_TAB: libc::int32_t = 61;
pub const AKEYCODE_TV: libc::int32_t = 170;
pub const AKEYCODE_TV_ANTENNA_CABLE: libc::int32_t = 242;
pub const AKEYCODE_TV_AUDIO_DESCRIPTION: libc::int32_t = 252;
pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: libc::int32_t = 254;
pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: libc::int32_t = 253;
pub const AKEYCODE_TV_CONTENTS_MENU: libc::int32_t = 256;
pub const AKEYCODE_TV_DATA_SERVICE: libc::int32_t = 230;
pub const AKEYCODE_TV_INPUT: libc::int32_t = 178;
pub const AKEYCODE_TV_INPUT_COMPONENT_1: libc::int32_t = 249;
pub const AKEYCODE_TV_INPUT_COMPONENT_2: libc::int32_t = 250;
pub const AKEYCODE_TV_INPUT_COMPOSITE_1: libc::int32_t = 247;
pub const AKEYCODE_TV_INPUT_COMPOSITE_2: libc::int32_t = 248;
pub const AKEYCODE_TV_INPUT_HDMI_1: libc::int32_t = 243;
pub const AKEYCODE_TV_INPUT_HDMI_2: libc::int32_t = 244;
pub const AKEYCODE_TV_INPUT_HDMI_3: libc::int32_t = 245;
pub const AKEYCODE_TV_INPUT_HDMI_4: libc::int32_t = 246;
pub const AKEYCODE_TV_INPUT_VGA_1: libc::int32_t = 251;
pub const AKEYCODE_TV_MEDIA_CONTEXT_MENU: libc::int32_t = 257;
pub const AKEYCODE_TV_NETWORK: libc::int32_t = 241;
pub const AKEYCODE_TV_NUMBER_ENTRY: libc::int32_t = 234;
pub const AKEYCODE_TV_POWER: libc::int32_t = 177;
pub const AKEYCODE_TV_RADIO_SERVICE: libc::int32_t = 232;
pub const AKEYCODE_TV_SATELLITE: libc::int32_t = 237;
pub const AKEYCODE_TV_SATELLITE_BS: libc::int32_t = 238;
pub const AKEYCODE_TV_SATELLITE_CS: libc::int32_t = 239;
pub const AKEYCODE_TV_SATELLITE_SERVICE: libc::int32_t = 240;
pub const AKEYCODE_TV_TELETEXT: libc::int32_t = 233;
pub const AKEYCODE_TV_TERRESTRIAL_ANALOG: libc::int32_t = 235;
pub const AKEYCODE_TV_TERRESTRIAL_DIGITAL: libc::int32_t = 236;
pub const AKEYCODE_TV_TIMER_PROGRAMMING: libc::int32_t = 258;
pub const AKEYCODE_TV_ZOOM_MODE: libc::int32_t = 255;
pub const AKEYCODE_U: libc::int32_t = 49;
pub const AKEYCODE_UNKNOWN: libc::int32_t = 0;
pub const AKEYCODE_V: libc::int32_t = 50;
pub const AKEYCODE_VOICE_ASSIST: libc::int32_t = 231;
pub const AKEYCODE_VOLUME_DOWN: libc::int32_t = 25;
pub const AKEYCODE_VOLUME_MUTE: libc::int32_t = 164;
pub const AKEYCODE_VOLUME_UP: libc::int32_t = 24;
pub const AKEYCODE_W: libc::int32_t = 51;
pub const AKEYCODE_WAKEUP: libc::int32_t = 224;
pub const AKEYCODE_WINDOW: libc::int32_t = 171;
pub const AKEYCODE_X: libc::int32_t = 52;
pub const AKEYCODE_Y: libc::int32_t = 53;
pub const AKEYCODE_YEN: libc::int32_t = 216;
pub const AKEYCODE_Z: libc::int32_t = 54;
pub const AKEYCODE_ZENKAKU_HANKAKU: libc::int32_t = 211;
pub const AKEYCODE_ZOOM_IN: libc::int32_t = 168;
pub const AKEYCODE_ZOOM_OUT: libc::int32_t = 169;

//
//       android/log.h
//
pub const ANDROID_LOG_DEBUG: libc::int32_t = 3;
pub const ANDROID_LOG_DEFAULT: libc::int32_t = 1;
pub const ANDROID_LOG_ERROR: libc::int32_t = 6;
pub const ANDROID_LOG_FATAL: libc::int32_t = 7;
pub const ANDROID_LOG_INFO: libc::int32_t = 4;
pub const ANDROID_LOG_SILENT: libc::int32_t = 8;
pub const ANDROID_LOG_UNKNOWN: libc::int32_t = 0;
pub const ANDROID_LOG_VERBOSE: libc::int32_t = 2;
pub const ANDROID_LOG_WARN: libc::int32_t = 5;
extern { pub fn __android_log_vprint(prio: libc::c_int, tag: *const libc::c_char, fmt: *const libc::c_char, ap: *mut __va_list_tag) -> libc::c_int; }
extern { pub fn __android_log_write(prio: libc::c_int, tag: *const libc::c_char, text: *const libc::c_char) -> libc::c_int; }
pub type android_LogPriority = i32;

//
//       android/looper.h
//
pub const ALOOPER_EVENT_ERROR: libc::int32_t = 4;
pub const ALOOPER_EVENT_HANGUP: libc::int32_t = 8;
pub const ALOOPER_EVENT_INPUT: libc::int32_t = 1;
pub const ALOOPER_EVENT_INVALID: libc::int32_t = 16;
pub const ALOOPER_EVENT_OUTPUT: libc::int32_t = 2;
pub const ALOOPER_POLL_CALLBACK: libc::int32_t = -2;
pub const ALOOPER_POLL_ERROR: libc::int32_t = -4;
pub const ALOOPER_POLL_TIMEOUT: libc::int32_t = -3;
pub const ALOOPER_POLL_WAKE: libc::int32_t = -1;
pub const ALOOPER_PREPARE_ALLOW_NON_CALLBACKS: libc::int32_t = 1;
pub type ALooper = ();
extern { pub fn ALooper_acquire(looper: *mut ALooper); }
extern { pub fn ALooper_addFd(looper: *mut ALooper, fd: libc::c_int, ident: libc::c_int, events: libc::c_int, callback: ALooper_callbackFunc, data: *mut libc::c_void) -> libc::c_int; }
pub type ALooper_callbackFunc = extern fn(libc::c_int, libc::c_int, *mut libc::c_void) -> libc::c_int;
extern { pub fn ALooper_forThread() -> *mut ALooper; }
extern { pub fn ALooper_pollAll(timeoutMillis: libc::c_int, outFd: *mut libc::c_int, outEvents: *mut libc::c_int, outData: *mut *mut libc::c_void) -> libc::c_int; }
extern { pub fn ALooper_pollOnce(timeoutMillis: libc::c_int, outFd: *mut libc::c_int, outEvents: *mut libc::c_int, outData: *mut *mut libc::c_void) -> libc::c_int; }
extern { pub fn ALooper_prepare(opts: libc::c_int) -> *mut ALooper; }
extern { pub fn ALooper_release(looper: *mut ALooper); }
extern { pub fn ALooper_removeFd(looper: *mut ALooper, fd: libc::c_int) -> libc::c_int; }
extern { pub fn ALooper_wake(looper: *mut ALooper); }

//
//       android/native_activity.h
//
pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY: libc::int32_t = 1;
pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS: libc::int32_t = 2;
pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED: libc::int32_t = 2;
pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT: libc::int32_t = 1;
#[repr(C)]
pub struct ANativeActivity {
     pub callbacks:             *mut ANativeActivityCallbacks,
     pub vm:                *mut JavaVM,
     pub env:               *mut JNIEnv,
     pub clazz:             jobject,
     pub internalDataPath:              *const libc::c_char,
     pub externalDataPath:              *const libc::c_char,
     pub sdkVersion:                libc::int32_t,
     pub instance:              *mut libc::c_void,
     pub assetManager:              *mut AAssetManager,
     pub obbPath:               *const libc::c_char,
}
#[repr(C)]
pub struct ANativeActivityCallbacks {
     pub onStart:               extern fn(*mut ANativeActivity),
     pub onResume:              extern fn(*mut ANativeActivity),
     pub onSaveInstanceState:               extern fn(*mut ANativeActivity, *mut libc::size_t) -> *mut libc::c_void,
     pub onPause:               extern fn(*mut ANativeActivity),
     pub onStop:                extern fn(*mut ANativeActivity),
     pub onDestroy:             extern fn(*mut ANativeActivity),
     pub onWindowFocusChanged:              extern fn(*mut ANativeActivity, libc::c_int),
     pub onNativeWindowCreated:             extern fn(*mut ANativeActivity, *mut ANativeWindow),
     pub onNativeWindowResized:             extern fn(*mut ANativeActivity, *mut ANativeWindow),
     pub onNativeWindowRedrawNeeded:                extern fn(*mut ANativeActivity, *mut ANativeWindow),
     pub onNativeWindowDestroyed:               extern fn(*mut ANativeActivity, *mut ANativeWindow),
     pub onInputQueueCreated:               extern fn(*mut ANativeActivity, *mut AInputQueue),
     pub onInputQueueDestroyed:             extern fn(*mut ANativeActivity, *mut AInputQueue),
     pub onContentRectChanged:              extern fn(*mut ANativeActivity, *const ARect),
     pub onConfigurationChanged:                extern fn(*mut ANativeActivity),
     pub onLowMemory:               extern fn(*mut ANativeActivity),
}
pub type ANativeActivity_createFunc = extern fn(*mut ANativeActivity, *mut libc::c_void, libc::size_t);
extern { pub fn ANativeActivity_finish(activity: *mut ANativeActivity); }
extern { pub fn ANativeActivity_hideSoftInput(activity: *mut ANativeActivity, flags: libc::uint32_t); }
extern { pub fn ANativeActivity_setWindowFlags(activity: *mut ANativeActivity, addFlags: libc::uint32_t, removeFlags: libc::uint32_t); }
extern { pub fn ANativeActivity_setWindowFormat(activity: *mut ANativeActivity, format: libc::int32_t); }
extern { pub fn ANativeActivity_showSoftInput(activity: *mut ANativeActivity, flags: libc::uint32_t); }

//
//       android/native_window.h
//
pub type ANativeWindow = ();
#[repr(C)]
pub struct ANativeWindow_Buffer {
     pub width:             libc::int32_t,
     pub height:                libc::int32_t,
     pub stride:                libc::int32_t,
     pub format:                libc::int32_t,
     pub bits:              *mut libc::c_void,
     pub reserved:              [libc::uint32_t; 5],
}
extern { pub fn ANativeWindow_acquire(window: *mut ANativeWindow); }
extern { pub fn ANativeWindow_getFormat(window: *mut ANativeWindow) -> libc::int32_t; }
extern { pub fn ANativeWindow_getHeight(window: *mut ANativeWindow) -> libc::int32_t; }
extern { pub fn ANativeWindow_getWidth(window: *mut ANativeWindow) -> libc::int32_t; }
extern { pub fn ANativeWindow_lock(window: *mut ANativeWindow, outBuffer: *mut ANativeWindow_Buffer, inOutDirtyBounds: *mut ARect) -> libc::int32_t; }
extern { pub fn ANativeWindow_release(window: *mut ANativeWindow); }
extern { pub fn ANativeWindow_setBuffersGeometry(window: *mut ANativeWindow, width: libc::int32_t, height: libc::int32_t, format: libc::int32_t) -> libc::int32_t; }
extern { pub fn ANativeWindow_unlockAndPost(window: *mut ANativeWindow) -> libc::int32_t; }
pub const WINDOW_FORMAT_RGBA_8888: libc::int32_t = 1;
pub const WINDOW_FORMAT_RGBX_8888: libc::int32_t = 2;
pub const WINDOW_FORMAT_RGB_565: libc::int32_t = 4;

//
//       android/native_window_jni.h
//
extern { pub fn ANativeWindow_fromSurface(env: *mut JNIEnv, surface: jobject) -> *mut ANativeWindow; }

//
//       android/obb.h
//
pub const AOBBINFO_OVERLAY: libc::int32_t = 1;
pub type AObbInfo = ();
extern { pub fn AObbInfo_delete(obbInfo: *mut AObbInfo); }
extern { pub fn AObbInfo_getFlags(obbInfo: *mut AObbInfo) -> libc::int32_t; }
extern { pub fn AObbInfo_getPackageName(obbInfo: *mut AObbInfo) -> *const libc::c_char; }
extern { pub fn AObbInfo_getVersion(obbInfo: *mut AObbInfo) -> libc::int32_t; }
extern { pub fn AObbScanner_getObbInfo(filename: *const libc::c_char) -> *mut AObbInfo; }

//
//       android/rect.h
//
#[repr(C)]
pub struct ARect {
     pub left:              libc::int32_t,
     pub top:               libc::int32_t,
     pub right:             libc::int32_t,
     pub bottom:                libc::int32_t,
}
pub type value_type = libc::int32_t;

//
//       android/sensor.h
//
#[repr(C)]
pub struct AHeartRateEvent {
     pub bpm:               libc::c_float,
     pub status:                libc::int8_t,
}
#[repr(C)]
pub struct AMetaDataEvent {
     pub what:              libc::int32_t,
     pub sensor:                libc::int32_t,
}
pub const AREPORTING_MODE_CONTINUOUS: libc::int32_t = 0;
pub const AREPORTING_MODE_ONE_SHOT: libc::int32_t = 2;
pub const AREPORTING_MODE_ON_CHANGE: libc::int32_t = 1;
pub const AREPORTING_MODE_SPECIAL_TRIGGER: libc::int32_t = 3;
pub const ASENSOR_STATUS_ACCURACY_HIGH: libc::int32_t = 3;
pub const ASENSOR_STATUS_ACCURACY_LOW: libc::int32_t = 1;
pub const ASENSOR_STATUS_ACCURACY_MEDIUM: libc::int32_t = 2;
pub const ASENSOR_STATUS_NO_CONTACT: libc::int32_t = -1;
pub const ASENSOR_STATUS_UNRELIABLE: libc::int32_t = 0;
pub const ASENSOR_TYPE_ACCELEROMETER: libc::int32_t = 1;
pub const ASENSOR_TYPE_GYROSCOPE: libc::int32_t = 4;
pub const ASENSOR_TYPE_LIGHT: libc::int32_t = 5;
pub const ASENSOR_TYPE_MAGNETIC_FIELD: libc::int32_t = 2;
pub const ASENSOR_TYPE_PROXIMITY: libc::int32_t = 8;
pub type ASensor = ();
#[repr(C)]
pub struct ASensorEvent {
     pub version:           libc::int32_t,
     pub sensor:            libc::int32_t,
     pub xtype:             libc::int32_t,
     pub reserved0:         libc::int32_t,
     pub timestamp:         libc::int64_t,
     pub data:              [libc::c_float; 16],
     pub flags:             libc::uint32_t,
     pub reserved1:         [libc::int32_t; 2],
}
pub type ASensorEventQueue = ();
extern { pub fn ASensorEventQueue_disableSensor(queue: *mut ASensorEventQueue, sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensorEventQueue_enableSensor(queue: *mut ASensorEventQueue, sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensorEventQueue_getEvents(queue: *mut ASensorEventQueue, events: *mut ASensorEvent, count: libc::size_t) -> libc::ssize_t; }
extern { pub fn ASensorEventQueue_hasEvents(queue: *mut ASensorEventQueue) -> libc::c_int; }
extern { pub fn ASensorEventQueue_setEventRate(queue: *mut ASensorEventQueue, sensor: *const ASensor, usec: libc::int32_t) -> libc::c_int; }
pub type ASensorList = *const ASensorRef;
pub type ASensorManager = ();
extern { pub fn ASensorManager_createEventQueue(manager: *mut ASensorManager, looper: *mut ALooper, ident: libc::c_int, callback: ALooper_callbackFunc, data: *mut libc::c_void) -> *mut ASensorEventQueue; }
extern { pub fn ASensorManager_destroyEventQueue(manager: *mut ASensorManager, queue: *mut ASensorEventQueue) -> libc::c_int; }
extern { pub fn ASensorManager_getDefaultSensor(manager: *mut ASensorManager, xtype: libc::c_int) -> *const ASensor; }
extern { pub fn ASensorManager_getDefaultSensorEx(manager: *mut ASensorManager, xtype: libc::c_int, wakeUp: bool) -> *const ASensor; }
extern { pub fn ASensorManager_getInstance() -> *mut ASensorManager; }
extern { pub fn ASensorManager_getSensorList(manager: *mut ASensorManager, list: *mut ASensorList) -> libc::c_int; }
pub type ASensorRef = *const ASensor;
#[repr(C)]
pub struct ASensorVector {
     pub unnamed0:              [u8; 12],
     pub status:                libc::int8_t,
     pub reserved:              [libc::uint8_t; 2],
}
extern { pub fn ASensor_getFifoMaxEventCount(sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensor_getFifoReservedEventCount(sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensor_getMinDelay(sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensor_getName(sensor: *const ASensor) -> *const libc::c_char; }
extern { pub fn ASensor_getReportingMode(sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensor_getResolution(sensor: *const ASensor) -> libc::c_float; }
extern { pub fn ASensor_getStringType(sensor: *const ASensor) -> *const libc::c_char; }
extern { pub fn ASensor_getType(sensor: *const ASensor) -> libc::c_int; }
extern { pub fn ASensor_getVendor(sensor: *const ASensor) -> *const libc::c_char; }
extern { pub fn ASensor_isWakeUpSensor(sensor: *const ASensor) -> bool; }
#[repr(C)]
pub struct AUncalibratedEvent {
     pub unnamed0:              [u8; 12],
     pub unnamed1:              [u8; 12],
}
#[repr(C)]
pub struct unknown_1714 {
     pub x_uncalib:             libc::c_float,
     pub y_uncalib:             libc::c_float,
     pub z_uncalib:             libc::c_float,
}
#[repr(C)]
pub struct unknown_1717 {
     pub x_bias:                libc::c_float,
     pub y_bias:                libc::c_float,
     pub z_bias:                libc::c_float,
}
#[repr(C)]
pub struct unknown_1758 {
     pub x:             libc::c_float,
     pub y:             libc::c_float,
     pub z:             libc::c_float,
}
#[repr(C)]
pub struct unknown_1759 {
     pub azimuth:               libc::c_float,
     pub pitch:             libc::c_float,
     pub roll:              libc::c_float,
}

//
//       android/storage_manager.h
//
pub const AOBB_STATE_ERROR_ALREADY_MOUNTED: libc::int32_t = 24;
pub const AOBB_STATE_ERROR_COULD_NOT_MOUNT: libc::int32_t = 21;
pub const AOBB_STATE_ERROR_COULD_NOT_UNMOUNT: libc::int32_t = 22;
pub const AOBB_STATE_ERROR_INTERNAL: libc::int32_t = 20;
pub const AOBB_STATE_ERROR_NOT_MOUNTED: libc::int32_t = 23;
pub const AOBB_STATE_ERROR_PERMISSION_DENIED: libc::int32_t = 25;
pub const AOBB_STATE_MOUNTED: libc::int32_t = 1;
pub const AOBB_STATE_UNMOUNTED: libc::int32_t = 2;
pub type AStorageManager = ();
extern { pub fn AStorageManager_delete(mgr: *mut AStorageManager); }
extern { pub fn AStorageManager_getMountedObbPath(mgr: *mut AStorageManager, filename: *const libc::c_char) -> *const libc::c_char; }
extern { pub fn AStorageManager_isObbMounted(mgr: *mut AStorageManager, filename: *const libc::c_char) -> libc::c_int; }
extern { pub fn AStorageManager_mountObb(mgr: *mut AStorageManager, filename: *const libc::c_char, key: *const libc::c_char, cb: AStorageManager_obbCallbackFunc, data: *mut libc::c_void); }
extern { pub fn AStorageManager_new() -> *mut AStorageManager; }
pub type AStorageManager_obbCallbackFunc = extern fn(*const libc::c_char, libc::int32_t, *mut libc::c_void);
extern { pub fn AStorageManager_unmountObb(mgr: *mut AStorageManager, filename: *const libc::c_char, force: libc::c_int, cb: AStorageManager_obbCallbackFunc, data: *mut libc::c_void); }

//
//       android/tts.h
//
pub const ANDROID_TTS_AUDIO_FORMAT_DEFAULT: libc::int32_t = 0;
pub const ANDROID_TTS_AUDIO_FORMAT_INVALID: libc::int32_t = -1;
pub const ANDROID_TTS_AUDIO_FORMAT_PCM_16_BIT: libc::int32_t = 1;
pub const ANDROID_TTS_AUDIO_FORMAT_PCM_8_BIT: libc::int32_t = 2;
pub const ANDROID_TTS_CALLBACK_CONTINUE: libc::int32_t = 1;
pub const ANDROID_TTS_CALLBACK_HALT: libc::int32_t = 0;
pub const ANDROID_TTS_FAILURE: libc::int32_t = -1;
pub const ANDROID_TTS_FEATURE_UNSUPPORTED: libc::int32_t = -2;
pub const ANDROID_TTS_LANG_AVAILABLE: libc::int32_t = 0;
pub const ANDROID_TTS_LANG_COUNTRY_AVAILABLE: libc::int32_t = 1;
pub const ANDROID_TTS_LANG_COUNTRY_VAR_AVAILABLE: libc::int32_t = 2;
pub const ANDROID_TTS_LANG_MISSING_DATA: libc::int32_t = -1;
pub const ANDROID_TTS_LANG_NOT_SUPPORTED: libc::int32_t = -2;
pub const ANDROID_TTS_MISSING_RESOURCES: libc::int32_t = -6;
pub const ANDROID_TTS_PROPERTY_SIZE_TOO_SMALL: libc::int32_t = -5;
pub const ANDROID_TTS_PROPERTY_UNSUPPORTED: libc::int32_t = -4;
pub const ANDROID_TTS_SUCCESS: libc::int32_t = 0;
pub const ANDROID_TTS_SYNTH_DONE: libc::int32_t = 0;
pub const ANDROID_TTS_SYNTH_PENDING: libc::int32_t = 1;
pub const ANDROID_TTS_VALUE_INVALID: libc::int32_t = -3;
extern { pub fn android_getTtsEngine() -> *mut android_tts_engine_t; }
#[repr(C)]
pub struct android_tts_engine_funcs_t {
     pub reserved:              *mut libc::c_void,
     pub init:              extern fn(*mut libc::c_void, android_tts_synth_cb_t, *const libc::c_char) -> i32,
     pub shutdown:              extern fn(*mut libc::c_void) -> i32,
     pub stop:              extern fn(*mut libc::c_void) -> i32,
     pub isLanguageAvailable:               extern fn(*mut libc::c_void, *const libc::c_char, *const libc::c_char, *const libc::c_char) -> i32,
     pub loadLanguage:              extern fn(*mut libc::c_void, *const libc::c_char, *const libc::c_char, *const libc::c_char) -> i32,
     pub setLanguage:               extern fn(*mut libc::c_void, *const libc::c_char, *const libc::c_char, *const libc::c_char) -> i32,
     pub getLanguage:               extern fn(*mut libc::c_void, *mut libc::c_char, *mut libc::c_char, *mut libc::c_char) -> i32,
     pub setAudioFormat:                extern fn(*mut libc::c_void, *mut i32, *mut libc::uint32_t, *mut libc::c_int) -> i32,
     pub setProperty:               extern fn(*mut libc::c_void, *const libc::c_char, *const libc::c_char, libc::size_t) -> i32,
     pub getProperty:               extern fn(*mut libc::c_void, *const libc::c_char, *mut libc::c_char, *mut libc::size_t) -> i32,
     pub synthesizeText:                extern fn(*mut libc::c_void, *const libc::c_char, *mut libc::int8_t, libc::size_t, *mut libc::c_void) -> i32,
}
#[repr(C)]
pub struct android_tts_engine_t {
     pub funcs:             *mut android_tts_engine_funcs_t,
}
pub type android_tts_synth_cb_t = extern fn(*mut *mut libc::c_void, libc::uint32_t, i32, libc::c_int, *mut *mut libc::int8_t, *mut libc::size_t, i32) -> i32;
extern { pub fn getTtsEngine() -> *mut android_tts_engine_t; }

//
//       android/window.h
//
pub const AWINDOW_FLAG_ALLOW_LOCK_WHILE_SCREEN_ON: libc::int32_t = 1;
pub const AWINDOW_FLAG_ALT_FOCUSABLE_IM: libc::int32_t = 131072;
pub const AWINDOW_FLAG_BLUR_BEHIND: libc::int32_t = 4;
pub const AWINDOW_FLAG_DIM_BEHIND: libc::int32_t = 2;
pub const AWINDOW_FLAG_DISMISS_KEYGUARD: libc::int32_t = 4194304;
pub const AWINDOW_FLAG_DITHER: libc::int32_t = 4096;
pub const AWINDOW_FLAG_FORCE_NOT_FULLSCREEN: libc::int32_t = 2048;
pub const AWINDOW_FLAG_FULLSCREEN: libc::int32_t = 1024;
pub const AWINDOW_FLAG_IGNORE_CHEEK_PRESSES: libc::int32_t = 32768;
pub const AWINDOW_FLAG_KEEP_SCREEN_ON: libc::int32_t = 128;
pub const AWINDOW_FLAG_LAYOUT_INSET_DECOR: libc::int32_t = 65536;
pub const AWINDOW_FLAG_LAYOUT_IN_SCREEN: libc::int32_t = 256;
pub const AWINDOW_FLAG_LAYOUT_NO_LIMITS: libc::int32_t = 512;
pub const AWINDOW_FLAG_NOT_FOCUSABLE: libc::int32_t = 8;
pub const AWINDOW_FLAG_NOT_TOUCHABLE: libc::int32_t = 16;
pub const AWINDOW_FLAG_NOT_TOUCH_MODAL: libc::int32_t = 32;
pub const AWINDOW_FLAG_SCALED: libc::int32_t = 16384;
pub const AWINDOW_FLAG_SECURE: libc::int32_t = 8192;
pub const AWINDOW_FLAG_SHOW_WALLPAPER: libc::int32_t = 1048576;
pub const AWINDOW_FLAG_SHOW_WHEN_LOCKED: libc::int32_t = 524288;
pub const AWINDOW_FLAG_TOUCHABLE_WHEN_WAKING: libc::int32_t = 64;
pub const AWINDOW_FLAG_TURN_SCREEN_ON: libc::int32_t = 2097152;
pub const AWINDOW_FLAG_WATCH_OUTSIDE_TOUCH: libc::int32_t = 262144;

//
//       jni.h
//
pub type C_JNIEnv = *const JNINativeInterface;
pub type JNIEnv = _JNIEnv;
pub const JNIGlobalRefType: libc::int32_t = 2;
pub const JNIInvalidRefType: libc::int32_t = 0;
#[repr(C)]
pub struct JNIInvokeInterface {
     pub reserved0:             *mut libc::c_void,
     pub reserved1:             *mut libc::c_void,
     pub reserved2:             *mut libc::c_void,
     pub DestroyJavaVM:             extern fn(*mut JavaVM) -> jint,
     pub AttachCurrentThread:               extern fn(*mut JavaVM, *mut *mut JNIEnv, *mut libc::c_void) -> jint,
     pub DetachCurrentThread:               extern fn(*mut JavaVM) -> jint,
     pub GetEnv:                extern fn(*mut JavaVM, *mut *mut libc::c_void, jint) -> jint,
     pub AttachCurrentThreadAsDaemon:               extern fn(*mut JavaVM, *mut *mut JNIEnv, *mut libc::c_void) -> jint,
}
pub const JNILocalRefType: libc::int32_t = 1;
#[repr(C)]
pub struct JNINativeInterface {
     pub reserved0:             *mut libc::c_void,
     pub reserved1:             *mut libc::c_void,
     pub reserved2:             *mut libc::c_void,
     pub reserved3:             *mut libc::c_void,
     pub GetVersion:                extern fn(*mut JNIEnv) -> jint,
     pub DefineClass:               extern fn(*mut JNIEnv, *const libc::c_char, jobject, *const jbyte, jsize) -> jclass,
     pub FindClass:             extern fn(*mut JNIEnv, *const libc::c_char) -> jclass,
     pub FromReflectedMethod:               extern fn(*mut JNIEnv, jobject) -> jmethodID,
     pub FromReflectedField:                extern fn(*mut JNIEnv, jobject) -> jfieldID,
     pub ToReflectedMethod:             extern fn(*mut JNIEnv, jclass, jmethodID, jboolean) -> jobject,
     pub GetSuperclass:             extern fn(*mut JNIEnv, jclass) -> jclass,
     pub IsAssignableFrom:              extern fn(*mut JNIEnv, jclass, jclass) -> jboolean,
     pub ToReflectedField:              extern fn(*mut JNIEnv, jclass, jfieldID, jboolean) -> jobject,
     pub Throw:             extern fn(*mut JNIEnv, jthrowable) -> jint,
     pub ThrowNew:              extern fn(*mut JNIEnv, jclass, *const libc::c_char) -> jint,
     pub ExceptionOccurred:             extern fn(*mut JNIEnv) -> jthrowable,
     pub ExceptionDescribe:             extern fn(*mut JNIEnv),
     pub ExceptionClear:                extern fn(*mut JNIEnv),
     pub FatalError:                extern fn(*mut JNIEnv, *const libc::c_char),
     pub PushLocalFrame:                extern fn(*mut JNIEnv, jint) -> jint,
     pub PopLocalFrame:             extern fn(*mut JNIEnv, jobject) -> jobject,
     pub NewGlobalRef:              extern fn(*mut JNIEnv, jobject) -> jobject,
     pub DeleteGlobalRef:               extern fn(*mut JNIEnv, jobject),
     pub DeleteLocalRef:                extern fn(*mut JNIEnv, jobject),
     pub IsSameObject:              extern fn(*mut JNIEnv, jobject, jobject) -> jboolean,
     pub NewLocalRef:               extern fn(*mut JNIEnv, jobject) -> jobject,
     pub EnsureLocalCapacity:               extern fn(*mut JNIEnv, jint) -> jint,
     pub AllocObject:               extern fn(*mut JNIEnv, jclass) -> jobject,
     pub NewObject:             extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jobject,
     pub NewObjectV:                extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jobject,
     pub NewObjectA:                extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jobject,
     pub GetObjectClass:                extern fn(*mut JNIEnv, jobject) -> jclass,
     pub IsInstanceOf:              extern fn(*mut JNIEnv, jobject, jclass) -> jboolean,
     pub GetMethodID:               extern fn(*mut JNIEnv, jclass, *const libc::c_char, *const libc::c_char) -> jmethodID,
     pub CallObjectMethod:              extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jobject,
     pub CallObjectMethodV:             extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jobject,
     pub CallObjectMethodA:             extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jobject,
     pub CallBooleanMethod:             extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jboolean,
     pub CallBooleanMethodV:                extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jboolean,
     pub CallBooleanMethodA:                extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jboolean,
     pub CallByteMethod:                extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jbyte,
     pub CallByteMethodV:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jbyte,
     pub CallByteMethodA:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jbyte,
     pub CallCharMethod:                extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jchar,
     pub CallCharMethodV:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jchar,
     pub CallCharMethodA:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jchar,
     pub CallShortMethod:               extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jshort,
     pub CallShortMethodV:              extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jshort,
     pub CallShortMethodA:              extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jshort,
     pub CallIntMethod:             extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jint,
     pub CallIntMethodV:                extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jint,
     pub CallIntMethodA:                extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jint,
     pub CallLongMethod:                extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jlong,
     pub CallLongMethodV:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jlong,
     pub CallLongMethodA:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jlong,
     pub CallFloatMethod:               extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jfloat,
     pub CallFloatMethodV:              extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jfloat,
     pub CallFloatMethodA:              extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jfloat,
     pub CallDoubleMethod:              extern fn(*mut JNIEnv, jobject, jmethodID, ...) -> jdouble,
     pub CallDoubleMethodV:             extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag) -> jdouble,
     pub CallDoubleMethodA:             extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue) -> jdouble,
     pub CallVoidMethod:                extern fn(*mut JNIEnv, jobject, jmethodID, ...),
     pub CallVoidMethodV:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut __va_list_tag),
     pub CallVoidMethodA:               extern fn(*mut JNIEnv, jobject, jmethodID, *mut jvalue),
     pub CallNonvirtualObjectMethod:                extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jobject,
     pub CallNonvirtualObjectMethodV:               extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jobject,
     pub CallNonvirtualObjectMethodA:               extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jobject,
     pub CallNonvirtualBooleanMethod:               extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jboolean,
     pub CallNonvirtualBooleanMethodV:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jboolean,
     pub CallNonvirtualBooleanMethodA:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jboolean,
     pub CallNonvirtualByteMethod:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jbyte,
     pub CallNonvirtualByteMethodV:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jbyte,
     pub CallNonvirtualByteMethodA:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jbyte,
     pub CallNonvirtualCharMethod:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jchar,
     pub CallNonvirtualCharMethodV:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jchar,
     pub CallNonvirtualCharMethodA:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jchar,
     pub CallNonvirtualShortMethod:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jshort,
     pub CallNonvirtualShortMethodV:                extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jshort,
     pub CallNonvirtualShortMethodA:                extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jshort,
     pub CallNonvirtualIntMethod:               extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jint,
     pub CallNonvirtualIntMethodV:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jint,
     pub CallNonvirtualIntMethodA:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jint,
     pub CallNonvirtualLongMethod:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jlong,
     pub CallNonvirtualLongMethodV:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jlong,
     pub CallNonvirtualLongMethodA:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jlong,
     pub CallNonvirtualFloatMethod:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jfloat,
     pub CallNonvirtualFloatMethodV:                extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jfloat,
     pub CallNonvirtualFloatMethodA:                extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jfloat,
     pub CallNonvirtualDoubleMethod:                extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...) -> jdouble,
     pub CallNonvirtualDoubleMethodV:               extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag) -> jdouble,
     pub CallNonvirtualDoubleMethodA:               extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue) -> jdouble,
     pub CallNonvirtualVoidMethod:              extern fn(*mut JNIEnv, jobject, jclass, jmethodID, ...),
     pub CallNonvirtualVoidMethodV:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut __va_list_tag),
     pub CallNonvirtualVoidMethodA:             extern fn(*mut JNIEnv, jobject, jclass, jmethodID, *mut jvalue),
     pub GetFieldID:                extern fn(*mut JNIEnv, jclass, *const libc::c_char, *const libc::c_char) -> jfieldID,
     pub GetObjectField:                extern fn(*mut JNIEnv, jobject, jfieldID) -> jobject,
     pub GetBooleanField:               extern fn(*mut JNIEnv, jobject, jfieldID) -> jboolean,
     pub GetByteField:              extern fn(*mut JNIEnv, jobject, jfieldID) -> jbyte,
     pub GetCharField:              extern fn(*mut JNIEnv, jobject, jfieldID) -> jchar,
     pub GetShortField:             extern fn(*mut JNIEnv, jobject, jfieldID) -> jshort,
     pub GetIntField:               extern fn(*mut JNIEnv, jobject, jfieldID) -> jint,
     pub GetLongField:              extern fn(*mut JNIEnv, jobject, jfieldID) -> jlong,
     pub GetFloatField:             extern fn(*mut JNIEnv, jobject, jfieldID) -> jfloat,
     pub GetDoubleField:                extern fn(*mut JNIEnv, jobject, jfieldID) -> jdouble,
     pub SetObjectField:                extern fn(*mut JNIEnv, jobject, jfieldID, jobject),
     pub SetBooleanField:               extern fn(*mut JNIEnv, jobject, jfieldID, jboolean),
     pub SetByteField:              extern fn(*mut JNIEnv, jobject, jfieldID, jbyte),
     pub SetCharField:              extern fn(*mut JNIEnv, jobject, jfieldID, jchar),
     pub SetShortField:             extern fn(*mut JNIEnv, jobject, jfieldID, jshort),
     pub SetIntField:               extern fn(*mut JNIEnv, jobject, jfieldID, jint),
     pub SetLongField:              extern fn(*mut JNIEnv, jobject, jfieldID, jlong),
     pub SetFloatField:             extern fn(*mut JNIEnv, jobject, jfieldID, jfloat),
     pub SetDoubleField:                extern fn(*mut JNIEnv, jobject, jfieldID, jdouble),
     pub GetStaticMethodID:             extern fn(*mut JNIEnv, jclass, *const libc::c_char, *const libc::c_char) -> jmethodID,
     pub CallStaticObjectMethod:                extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jobject,
     pub CallStaticObjectMethodV:               extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jobject,
     pub CallStaticObjectMethodA:               extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jobject,
     pub CallStaticBooleanMethod:               extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jboolean,
     pub CallStaticBooleanMethodV:              extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jboolean,
     pub CallStaticBooleanMethodA:              extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jboolean,
     pub CallStaticByteMethod:              extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jbyte,
     pub CallStaticByteMethodV:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jbyte,
     pub CallStaticByteMethodA:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jbyte,
     pub CallStaticCharMethod:              extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jchar,
     pub CallStaticCharMethodV:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jchar,
     pub CallStaticCharMethodA:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jchar,
     pub CallStaticShortMethod:             extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jshort,
     pub CallStaticShortMethodV:                extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jshort,
     pub CallStaticShortMethodA:                extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jshort,
     pub CallStaticIntMethod:               extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jint,
     pub CallStaticIntMethodV:              extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jint,
     pub CallStaticIntMethodA:              extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jint,
     pub CallStaticLongMethod:              extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jlong,
     pub CallStaticLongMethodV:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jlong,
     pub CallStaticLongMethodA:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jlong,
     pub CallStaticFloatMethod:             extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jfloat,
     pub CallStaticFloatMethodV:                extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jfloat,
     pub CallStaticFloatMethodA:                extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jfloat,
     pub CallStaticDoubleMethod:                extern fn(*mut JNIEnv, jclass, jmethodID, ...) -> jdouble,
     pub CallStaticDoubleMethodV:               extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag) -> jdouble,
     pub CallStaticDoubleMethodA:               extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue) -> jdouble,
     pub CallStaticVoidMethod:              extern fn(*mut JNIEnv, jclass, jmethodID, ...),
     pub CallStaticVoidMethodV:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut __va_list_tag),
     pub CallStaticVoidMethodA:             extern fn(*mut JNIEnv, jclass, jmethodID, *mut jvalue),
     pub GetStaticFieldID:              extern fn(*mut JNIEnv, jclass, *const libc::c_char, *const libc::c_char) -> jfieldID,
     pub GetStaticObjectField:              extern fn(*mut JNIEnv, jclass, jfieldID) -> jobject,
     pub GetStaticBooleanField:             extern fn(*mut JNIEnv, jclass, jfieldID) -> jboolean,
     pub GetStaticByteField:                extern fn(*mut JNIEnv, jclass, jfieldID) -> jbyte,
     pub GetStaticCharField:                extern fn(*mut JNIEnv, jclass, jfieldID) -> jchar,
     pub GetStaticShortField:               extern fn(*mut JNIEnv, jclass, jfieldID) -> jshort,
     pub GetStaticIntField:             extern fn(*mut JNIEnv, jclass, jfieldID) -> jint,
     pub GetStaticLongField:                extern fn(*mut JNIEnv, jclass, jfieldID) -> jlong,
     pub GetStaticFloatField:               extern fn(*mut JNIEnv, jclass, jfieldID) -> jfloat,
     pub GetStaticDoubleField:              extern fn(*mut JNIEnv, jclass, jfieldID) -> jdouble,
     pub SetStaticObjectField:              extern fn(*mut JNIEnv, jclass, jfieldID, jobject),
     pub SetStaticBooleanField:             extern fn(*mut JNIEnv, jclass, jfieldID, jboolean),
     pub SetStaticByteField:                extern fn(*mut JNIEnv, jclass, jfieldID, jbyte),
     pub SetStaticCharField:                extern fn(*mut JNIEnv, jclass, jfieldID, jchar),
     pub SetStaticShortField:               extern fn(*mut JNIEnv, jclass, jfieldID, jshort),
     pub SetStaticIntField:             extern fn(*mut JNIEnv, jclass, jfieldID, jint),
     pub SetStaticLongField:                extern fn(*mut JNIEnv, jclass, jfieldID, jlong),
     pub SetStaticFloatField:               extern fn(*mut JNIEnv, jclass, jfieldID, jfloat),
     pub SetStaticDoubleField:              extern fn(*mut JNIEnv, jclass, jfieldID, jdouble),
     pub NewString:             extern fn(*mut JNIEnv, *const jchar, jsize) -> jstring,
     pub GetStringLength:               extern fn(*mut JNIEnv, jstring) -> jsize,
     pub GetStringChars:                extern fn(*mut JNIEnv, jstring, *mut jboolean) -> *const jchar,
     pub ReleaseStringChars:                extern fn(*mut JNIEnv, jstring, *const jchar),
     pub NewStringUTF:              extern fn(*mut JNIEnv, *const libc::c_char) -> jstring,
     pub GetStringUTFLength:                extern fn(*mut JNIEnv, jstring) -> jsize,
     pub GetStringUTFChars:             extern fn(*mut JNIEnv, jstring, *mut jboolean) -> *const libc::c_char,
     pub ReleaseStringUTFChars:             extern fn(*mut JNIEnv, jstring, *const libc::c_char),
     pub GetArrayLength:                extern fn(*mut JNIEnv, jarray) -> jsize,
     pub NewObjectArray:                extern fn(*mut JNIEnv, jsize, jclass, jobject) -> jobjectArray,
     pub GetObjectArrayElement:             extern fn(*mut JNIEnv, jobjectArray, jsize) -> jobject,
     pub SetObjectArrayElement:             extern fn(*mut JNIEnv, jobjectArray, jsize, jobject),
     pub NewBooleanArray:               extern fn(*mut JNIEnv, jsize) -> jbooleanArray,
     pub NewByteArray:              extern fn(*mut JNIEnv, jsize) -> jbyteArray,
     pub NewCharArray:              extern fn(*mut JNIEnv, jsize) -> jcharArray,
     pub NewShortArray:             extern fn(*mut JNIEnv, jsize) -> jshortArray,
     pub NewIntArray:               extern fn(*mut JNIEnv, jsize) -> jintArray,
     pub NewLongArray:              extern fn(*mut JNIEnv, jsize) -> jlongArray,
     pub NewFloatArray:             extern fn(*mut JNIEnv, jsize) -> jfloatArray,
     pub NewDoubleArray:                extern fn(*mut JNIEnv, jsize) -> jdoubleArray,
     pub GetBooleanArrayElements:               extern fn(*mut JNIEnv, jbooleanArray, *mut jboolean) -> *mut jboolean,
     pub GetByteArrayElements:              extern fn(*mut JNIEnv, jbyteArray, *mut jboolean) -> *mut jbyte,
     pub GetCharArrayElements:              extern fn(*mut JNIEnv, jcharArray, *mut jboolean) -> *mut jchar,
     pub GetShortArrayElements:             extern fn(*mut JNIEnv, jshortArray, *mut jboolean) -> *mut jshort,
     pub GetIntArrayElements:               extern fn(*mut JNIEnv, jintArray, *mut jboolean) -> *mut jint,
     pub GetLongArrayElements:              extern fn(*mut JNIEnv, jlongArray, *mut jboolean) -> *mut jlong,
     pub GetFloatArrayElements:             extern fn(*mut JNIEnv, jfloatArray, *mut jboolean) -> *mut jfloat,
     pub GetDoubleArrayElements:                extern fn(*mut JNIEnv, jdoubleArray, *mut jboolean) -> *mut jdouble,
     pub ReleaseBooleanArrayElements:               extern fn(*mut JNIEnv, jbooleanArray, *mut jboolean, jint),
     pub ReleaseByteArrayElements:              extern fn(*mut JNIEnv, jbyteArray, *mut jbyte, jint),
     pub ReleaseCharArrayElements:              extern fn(*mut JNIEnv, jcharArray, *mut jchar, jint),
     pub ReleaseShortArrayElements:             extern fn(*mut JNIEnv, jshortArray, *mut jshort, jint),
     pub ReleaseIntArrayElements:               extern fn(*mut JNIEnv, jintArray, *mut jint, jint),
     pub ReleaseLongArrayElements:              extern fn(*mut JNIEnv, jlongArray, *mut jlong, jint),
     pub ReleaseFloatArrayElements:             extern fn(*mut JNIEnv, jfloatArray, *mut jfloat, jint),
     pub ReleaseDoubleArrayElements:                extern fn(*mut JNIEnv, jdoubleArray, *mut jdouble, jint),
     pub GetBooleanArrayRegion:             extern fn(*mut JNIEnv, jbooleanArray, jsize, jsize, *mut jboolean),
     pub GetByteArrayRegion:                extern fn(*mut JNIEnv, jbyteArray, jsize, jsize, *mut jbyte),
     pub GetCharArrayRegion:                extern fn(*mut JNIEnv, jcharArray, jsize, jsize, *mut jchar),
     pub GetShortArrayRegion:               extern fn(*mut JNIEnv, jshortArray, jsize, jsize, *mut jshort),
     pub GetIntArrayRegion:             extern fn(*mut JNIEnv, jintArray, jsize, jsize, *mut jint),
     pub GetLongArrayRegion:                extern fn(*mut JNIEnv, jlongArray, jsize, jsize, *mut jlong),
     pub GetFloatArrayRegion:               extern fn(*mut JNIEnv, jfloatArray, jsize, jsize, *mut jfloat),
     pub GetDoubleArrayRegion:              extern fn(*mut JNIEnv, jdoubleArray, jsize, jsize, *mut jdouble),
     pub SetBooleanArrayRegion:             extern fn(*mut JNIEnv, jbooleanArray, jsize, jsize, *const jboolean),
     pub SetByteArrayRegion:                extern fn(*mut JNIEnv, jbyteArray, jsize, jsize, *const jbyte),
     pub SetCharArrayRegion:                extern fn(*mut JNIEnv, jcharArray, jsize, jsize, *const jchar),
     pub SetShortArrayRegion:               extern fn(*mut JNIEnv, jshortArray, jsize, jsize, *const jshort),
     pub SetIntArrayRegion:             extern fn(*mut JNIEnv, jintArray, jsize, jsize, *const jint),
     pub SetLongArrayRegion:                extern fn(*mut JNIEnv, jlongArray, jsize, jsize, *const jlong),
     pub SetFloatArrayRegion:               extern fn(*mut JNIEnv, jfloatArray, jsize, jsize, *const jfloat),
     pub SetDoubleArrayRegion:              extern fn(*mut JNIEnv, jdoubleArray, jsize, jsize, *const jdouble),
     pub RegisterNatives:               extern fn(*mut JNIEnv, jclass, *const JNINativeMethod, jint) -> jint,
     pub UnregisterNatives:             extern fn(*mut JNIEnv, jclass) -> jint,
     pub MonitorEnter:              extern fn(*mut JNIEnv, jobject) -> jint,
     pub MonitorExit:               extern fn(*mut JNIEnv, jobject) -> jint,
     pub GetJavaVM:             extern fn(*mut JNIEnv, *mut *mut JavaVM) -> jint,
     pub GetStringRegion:               extern fn(*mut JNIEnv, jstring, jsize, jsize, *mut jchar),
     pub GetStringUTFRegion:                extern fn(*mut JNIEnv, jstring, jsize, jsize, *mut libc::c_char),
     pub GetPrimitiveArrayCritical:             extern fn(*mut JNIEnv, jarray, *mut jboolean) -> *mut libc::c_void,
     pub ReleasePrimitiveArrayCritical:             extern fn(*mut JNIEnv, jarray, *mut libc::c_void, jint),
     pub GetStringCritical:             extern fn(*mut JNIEnv, jstring, *mut jboolean) -> *const jchar,
     pub ReleaseStringCritical:             extern fn(*mut JNIEnv, jstring, *const jchar),
     pub NewWeakGlobalRef:              extern fn(*mut JNIEnv, jobject) -> jweak,
     pub DeleteWeakGlobalRef:               extern fn(*mut JNIEnv, jweak),
     pub ExceptionCheck:                extern fn(*mut JNIEnv) -> jboolean,
     pub NewDirectByteBuffer:               extern fn(*mut JNIEnv, *mut libc::c_void, jlong) -> jobject,
     pub GetDirectBufferAddress:                extern fn(*mut JNIEnv, jobject) -> *mut libc::c_void,
     pub GetDirectBufferCapacity:               extern fn(*mut JNIEnv, jobject) -> jlong,
     pub GetObjectRefType:              extern fn(*mut JNIEnv, jobject) -> jobjectRefType,
}
#[repr(C)]
pub struct JNINativeMethod {
     pub name:              *const libc::c_char,
     pub signature:             *const libc::c_char,
     pub fnPtr:             *mut libc::c_void,
}
pub const JNIWeakGlobalRefType: libc::int32_t = 3;
extern { pub fn JNI_OnLoad(vm: *mut JavaVM, reserved: *mut libc::c_void) -> jint; }
extern { pub fn JNI_OnUnload(vm: *mut JavaVM, reserved: *mut libc::c_void); }
pub type JavaVM = _JavaVM;
#[repr(C)]
pub struct JavaVMAttachArgs {
     pub version:               jint,
     pub name:              *const libc::c_char,
     pub group:             jobject,
}
#[repr(C)]
pub struct JavaVMInitArgs {
     pub version:               jint,
     pub nOptions:              jint,
     pub options:               *mut JavaVMOption,
     pub ignoreUnrecognized:                jboolean,
}
#[repr(C)]
pub struct JavaVMOption {
     pub optionString:              *const libc::c_char,
     pub extraInfo:             *mut libc::c_void,
}
#[repr(C)]
pub struct _JNIEnv {
     pub functions:             *const JNINativeInterface,
}
#[repr(C)]
pub struct _JavaVM {
     pub functions:             *const JNIInvokeInterface,
}
// CLASS
pub type class__jarray = ();
// CLASS
pub type class__jbooleanArray = ();
// CLASS
pub type class__jbyteArray = ();
// CLASS
pub type class__jcharArray = ();
// CLASS
pub type class__jclass = ();
// CLASS
pub type class__jdoubleArray = ();
pub type _jfieldID = ();
// CLASS
pub type class__jfloatArray = ();
// CLASS
pub type class__jintArray = ();
// CLASS
pub type class__jlongArray = ();
pub type _jmethodID = ();
// CLASS
pub type class__jobject = ();
// CLASS
pub type class__jobjectArray = ();
// CLASS
pub type class__jshortArray = ();
// CLASS
pub type class__jstring = ();
// CLASS
pub type class__jthrowable = ();
pub type jarray = *mut class__jarray;
pub type jboolean = libc::c_uchar;
pub type jbooleanArray = *mut class__jbooleanArray;
pub type jbyte = libc::c_schar;
pub type jbyteArray = *mut class__jbyteArray;
pub type jchar = libc::c_ushort;
pub type jcharArray = *mut class__jcharArray;
pub type jclass = *mut class__jclass;
pub type jdouble = libc::c_double;
pub type jdoubleArray = *mut class__jdoubleArray;
pub type jfieldID = *mut _jfieldID;
pub type jfloat = libc::c_float;
pub type jfloatArray = *mut class__jfloatArray;
pub type jint = libc::c_int;
pub type jintArray = *mut class__jintArray;
pub type jlong = libc::c_longlong;
pub type jlongArray = *mut class__jlongArray;
pub type jmethodID = *mut _jmethodID;
pub type jobject = *mut class__jobject;
pub type jobjectArray = *mut class__jobjectArray;
pub type jobjectRefType = i32;
pub type jshort = libc::c_short;
pub type jshortArray = *mut class__jshortArray;
pub type jsize = jint;
pub type jstring = *mut class__jstring;
pub type jthrowable = *mut class__jthrowable;
pub type jvalue = [u8; 8];
pub type jweak = *mut class__jobject;