SQLite Android Bindings
Hex Artifact Content
Not logged in

Artifact 9e4e050dd1e55bd855ab3d5724974be1025de1df:


0000: 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20  /*. * Copyright 
0010: 28 43 29 20 32 30 30 36 20 54 68 65 20 41 6e 64  (C) 2006 The And
0020: 72 6f 69 64 20 4f 70 65 6e 20 53 6f 75 72 63 65  roid Open Source
0030: 20 50 72 6f 6a 65 63 74 0a 20 2a 0a 20 2a 20 4c   Project. *. * L
0040: 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68  icensed under th
0050: 65 20 41 70 61 63 68 65 20 4c 69 63 65 6e 73 65  e Apache License
0060: 2c 20 56 65 72 73 69 6f 6e 20 32 2e 30 20 28 74  , Version 2.0 (t
0070: 68 65 20 22 4c 69 63 65 6e 73 65 22 29 3b 0a 20  he "License");. 
0080: 2a 20 79 6f 75 20 6d 61 79 20 6e 6f 74 20 75 73  * you may not us
0090: 65 20 74 68 69 73 20 66 69 6c 65 20 65 78 63 65  e this file exce
00a0: 70 74 20 69 6e 20 63 6f 6d 70 6c 69 61 6e 63 65  pt in compliance
00b0: 20 77 69 74 68 20 74 68 65 20 4c 69 63 65 6e 73   with the Licens
00c0: 65 2e 0a 20 2a 20 59 6f 75 20 6d 61 79 20 6f 62  e.. * You may ob
00d0: 74 61 69 6e 20 61 20 63 6f 70 79 20 6f 66 20 74  tain a copy of t
00e0: 68 65 20 4c 69 63 65 6e 73 65 20 61 74 0a 20 2a  he License at. *
00f0: 0a 20 2a 20 20 20 20 20 20 68 74 74 70 3a 2f 2f  . *      http://
0100: 77 77 77 2e 61 70 61 63 68 65 2e 6f 72 67 2f 6c  www.apache.org/l
0110: 69 63 65 6e 73 65 73 2f 4c 49 43 45 4e 53 45 2d  icenses/LICENSE-
0120: 32 2e 30 0a 20 2a 0a 20 2a 20 55 6e 6c 65 73 73  2.0. *. * Unless
0130: 20 72 65 71 75 69 72 65 64 20 62 79 20 61 70 70   required by app
0140: 6c 69 63 61 62 6c 65 20 6c 61 77 20 6f 72 20 61  licable law or a
0150: 67 72 65 65 64 20 74 6f 20 69 6e 20 77 72 69 74  greed to in writ
0160: 69 6e 67 2c 20 73 6f 66 74 77 61 72 65 0a 20 2a  ing, software. *
0170: 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64   distributed und
0180: 65 72 20 74 68 65 20 4c 69 63 65 6e 73 65 20 69  er the License i
0190: 73 20 64 69 73 74 72 69 62 75 74 65 64 20 6f 6e  s distributed on
01a0: 20 61 6e 20 22 41 53 20 49 53 22 20 42 41 53 49   an "AS IS" BASI
01b0: 53 2c 0a 20 2a 20 57 49 54 48 4f 55 54 20 57 41  S,. * WITHOUT WA
01c0: 52 52 41 4e 54 49 45 53 20 4f 52 20 43 4f 4e 44  RRANTIES OR COND
01d0: 49 54 49 4f 4e 53 20 4f 46 20 41 4e 59 20 4b 49  ITIONS OF ANY KI
01e0: 4e 44 2c 20 65 69 74 68 65 72 20 65 78 70 72 65  ND, either expre
01f0: 73 73 20 6f 72 20 69 6d 70 6c 69 65 64 2e 0a 20  ss or implied.. 
0200: 2a 20 53 65 65 20 74 68 65 20 4c 69 63 65 6e 73  * See the Licens
0210: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
0220: 69 63 20 6c 61 6e 67 75 61 67 65 20 67 6f 76 65  ic language gove
0230: 72 6e 69 6e 67 20 70 65 72 6d 69 73 73 69 6f 6e  rning permission
0240: 73 20 61 6e 64 0a 20 2a 20 6c 69 6d 69 74 61 74  s and. * limitat
0250: 69 6f 6e 73 20 75 6e 64 65 72 20 74 68 65 20 4c  ions under the L
0260: 69 63 65 6e 73 65 2e 0a 20 2a 2f 0a 0a 2f 2a 0a  icense.. */../*.
0270: 20 2a 20 4a 4e 49 20 73 70 65 63 69 66 69 63 61   * JNI specifica
0280: 74 69 6f 6e 2c 20 61 73 20 64 65 66 69 6e 65 64  tion, as defined
0290: 20 62 79 20 53 75 6e 3a 0a 20 2a 20 68 74 74 70   by Sun:. * http
02a0: 3a 2f 2f 6a 61 76 61 2e 73 75 6e 2e 63 6f 6d 2f  ://java.sun.com/
02b0: 6a 61 76 61 73 65 2f 36 2f 64 6f 63 73 2f 74 65  javase/6/docs/te
02c0: 63 68 6e 6f 74 65 73 2f 67 75 69 64 65 73 2f 6a  chnotes/guides/j
02d0: 6e 69 2f 73 70 65 63 2f 6a 6e 69 54 4f 43 2e 68  ni/spec/jniTOC.h
02e0: 74 6d 6c 0a 20 2a 0a 20 2a 20 45 76 65 72 79 74  tml. *. * Everyt
02f0: 68 69 6e 67 20 68 65 72 65 20 69 73 20 65 78 70  hing here is exp
0300: 65 63 74 65 64 20 74 6f 20 62 65 20 56 4d 2d 6e  ected to be VM-n
0310: 65 75 74 72 61 6c 2e 0a 20 2a 2f 0a 0a 23 69 66  eutral.. */..#if
0320: 6e 64 65 66 20 4a 4e 49 5f 48 5f 0a 23 64 65 66  ndef JNI_H_.#def
0330: 69 6e 65 20 4a 4e 49 5f 48 5f 0a 0a 23 69 6e 63  ine JNI_H_..#inc
0340: 6c 75 64 65 20 3c 73 74 64 61 72 67 2e 68 3e 0a  lude <stdarg.h>.
0350: 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6e 74  #include <stdint
0360: 2e 68 3e 0a 0a 2f 2a 20 50 72 69 6d 69 74 69 76  .h>../* Primitiv
0370: 65 20 74 79 70 65 73 20 74 68 61 74 20 6d 61 74  e types that mat
0380: 63 68 20 75 70 20 77 69 74 68 20 4a 61 76 61 20  ch up with Java 
0390: 65 71 75 69 76 61 6c 65 6e 74 73 2e 20 2a 2f 0a  equivalents. */.
03a0: 74 79 70 65 64 65 66 20 75 69 6e 74 38 5f 74 20  typedef uint8_t 
03b0: 20 6a 62 6f 6f 6c 65 61 6e 3b 20 2f 2a 20 75 6e   jboolean; /* un
03c0: 73 69 67 6e 65 64 20 38 20 62 69 74 73 20 2a 2f  signed 8 bits */
03d0: 0a 74 79 70 65 64 65 66 20 69 6e 74 38 5f 74 20  .typedef int8_t 
03e0: 20 20 6a 62 79 74 65 3b 20 20 20 20 2f 2a 20 73    jbyte;    /* s
03f0: 69 67 6e 65 64 20 38 20 62 69 74 73 20 2a 2f 0a  igned 8 bits */.
0400: 74 79 70 65 64 65 66 20 75 69 6e 74 31 36 5f 74  typedef uint16_t
0410: 20 6a 63 68 61 72 3b 20 20 20 20 2f 2a 20 75 6e   jchar;    /* un
0420: 73 69 67 6e 65 64 20 31 36 20 62 69 74 73 20 2a  signed 16 bits *
0430: 2f 0a 74 79 70 65 64 65 66 20 69 6e 74 31 36 5f  /.typedef int16_
0440: 74 20 20 6a 73 68 6f 72 74 3b 20 20 20 2f 2a 20  t  jshort;   /* 
0450: 73 69 67 6e 65 64 20 31 36 20 62 69 74 73 20 2a  signed 16 bits *
0460: 2f 0a 74 79 70 65 64 65 66 20 69 6e 74 33 32 5f  /.typedef int32_
0470: 74 20 20 6a 69 6e 74 3b 20 20 20 20 20 2f 2a 20  t  jint;     /* 
0480: 73 69 67 6e 65 64 20 33 32 20 62 69 74 73 20 2a  signed 32 bits *
0490: 2f 0a 74 79 70 65 64 65 66 20 69 6e 74 36 34 5f  /.typedef int64_
04a0: 74 20 20 6a 6c 6f 6e 67 3b 20 20 20 20 2f 2a 20  t  jlong;    /* 
04b0: 73 69 67 6e 65 64 20 36 34 20 62 69 74 73 20 2a  signed 64 bits *
04c0: 2f 0a 74 79 70 65 64 65 66 20 66 6c 6f 61 74 20  /.typedef float 
04d0: 20 20 20 6a 66 6c 6f 61 74 3b 20 20 20 2f 2a 20     jfloat;   /* 
04e0: 33 32 2d 62 69 74 20 49 45 45 45 20 37 35 34 20  32-bit IEEE 754 
04f0: 2a 2f 0a 74 79 70 65 64 65 66 20 64 6f 75 62 6c  */.typedef doubl
0500: 65 20 20 20 6a 64 6f 75 62 6c 65 3b 20 20 2f 2a  e   jdouble;  /*
0510: 20 36 34 2d 62 69 74 20 49 45 45 45 20 37 35 34   64-bit IEEE 754
0520: 20 2a 2f 0a 0a 2f 2a 20 22 63 61 72 64 69 6e 61   */../* "cardina
0530: 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20 73 69  l indices and si
0540: 7a 65 73 22 20 2a 2f 0a 74 79 70 65 64 65 66 20  zes" */.typedef 
0550: 6a 69 6e 74 20 20 20 20 20 6a 73 69 7a 65 3b 0a  jint     jsize;.
0560: 0a 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70  .#ifdef __cplusp
0570: 6c 75 73 0a 2f 2a 0a 20 2a 20 52 65 66 65 72 65  lus./*. * Refere
0580: 6e 63 65 20 74 79 70 65 73 2c 20 69 6e 20 43 2b  nce types, in C+
0590: 2b 0a 20 2a 2f 0a 63 6c 61 73 73 20 5f 6a 6f 62  +. */.class _job
05a0: 6a 65 63 74 20 7b 7d 3b 0a 63 6c 61 73 73 20 5f  ject {};.class _
05b0: 6a 63 6c 61 73 73 20 3a 20 70 75 62 6c 69 63 20  jclass : public 
05c0: 5f 6a 6f 62 6a 65 63 74 20 7b 7d 3b 0a 63 6c 61  _jobject {};.cla
05d0: 73 73 20 5f 6a 73 74 72 69 6e 67 20 3a 20 70 75  ss _jstring : pu
05e0: 62 6c 69 63 20 5f 6a 6f 62 6a 65 63 74 20 7b 7d  blic _jobject {}
05f0: 3b 0a 63 6c 61 73 73 20 5f 6a 61 72 72 61 79 20  ;.class _jarray 
0600: 3a 20 70 75 62 6c 69 63 20 5f 6a 6f 62 6a 65 63  : public _jobjec
0610: 74 20 7b 7d 3b 0a 63 6c 61 73 73 20 5f 6a 6f 62  t {};.class _job
0620: 6a 65 63 74 41 72 72 61 79 20 3a 20 70 75 62 6c  jectArray : publ
0630: 69 63 20 5f 6a 61 72 72 61 79 20 7b 7d 3b 0a 63  ic _jarray {};.c
0640: 6c 61 73 73 20 5f 6a 62 6f 6f 6c 65 61 6e 41 72  lass _jbooleanAr
0650: 72 61 79 20 3a 20 70 75 62 6c 69 63 20 5f 6a 61  ray : public _ja
0660: 72 72 61 79 20 7b 7d 3b 0a 63 6c 61 73 73 20 5f  rray {};.class _
0670: 6a 62 79 74 65 41 72 72 61 79 20 3a 20 70 75 62  jbyteArray : pub
0680: 6c 69 63 20 5f 6a 61 72 72 61 79 20 7b 7d 3b 0a  lic _jarray {};.
0690: 63 6c 61 73 73 20 5f 6a 63 68 61 72 41 72 72 61  class _jcharArra
06a0: 79 20 3a 20 70 75 62 6c 69 63 20 5f 6a 61 72 72  y : public _jarr
06b0: 61 79 20 7b 7d 3b 0a 63 6c 61 73 73 20 5f 6a 73  ay {};.class _js
06c0: 68 6f 72 74 41 72 72 61 79 20 3a 20 70 75 62 6c  hortArray : publ
06d0: 69 63 20 5f 6a 61 72 72 61 79 20 7b 7d 3b 0a 63  ic _jarray {};.c
06e0: 6c 61 73 73 20 5f 6a 69 6e 74 41 72 72 61 79 20  lass _jintArray 
06f0: 3a 20 70 75 62 6c 69 63 20 5f 6a 61 72 72 61 79  : public _jarray
0700: 20 7b 7d 3b 0a 63 6c 61 73 73 20 5f 6a 6c 6f 6e   {};.class _jlon
0710: 67 41 72 72 61 79 20 3a 20 70 75 62 6c 69 63 20  gArray : public 
0720: 5f 6a 61 72 72 61 79 20 7b 7d 3b 0a 63 6c 61 73  _jarray {};.clas
0730: 73 20 5f 6a 66 6c 6f 61 74 41 72 72 61 79 20 3a  s _jfloatArray :
0740: 20 70 75 62 6c 69 63 20 5f 6a 61 72 72 61 79 20   public _jarray 
0750: 7b 7d 3b 0a 63 6c 61 73 73 20 5f 6a 64 6f 75 62  {};.class _jdoub
0760: 6c 65 41 72 72 61 79 20 3a 20 70 75 62 6c 69 63  leArray : public
0770: 20 5f 6a 61 72 72 61 79 20 7b 7d 3b 0a 63 6c 61   _jarray {};.cla
0780: 73 73 20 5f 6a 74 68 72 6f 77 61 62 6c 65 20 3a  ss _jthrowable :
0790: 20 70 75 62 6c 69 63 20 5f 6a 6f 62 6a 65 63 74   public _jobject
07a0: 20 7b 7d 3b 0a 0a 74 79 70 65 64 65 66 20 5f 6a   {};..typedef _j
07b0: 6f 62 6a 65 63 74 2a 20 20 20 20 20 20 20 6a 6f  object*       jo
07c0: 62 6a 65 63 74 3b 0a 74 79 70 65 64 65 66 20 5f  bject;.typedef _
07d0: 6a 63 6c 61 73 73 2a 20 20 20 20 20 20 20 20 6a  jclass*        j
07e0: 63 6c 61 73 73 3b 0a 74 79 70 65 64 65 66 20 5f  class;.typedef _
07f0: 6a 73 74 72 69 6e 67 2a 20 20 20 20 20 20 20 6a  jstring*       j
0800: 73 74 72 69 6e 67 3b 0a 74 79 70 65 64 65 66 20  string;.typedef 
0810: 5f 6a 61 72 72 61 79 2a 20 20 20 20 20 20 20 20  _jarray*        
0820: 6a 61 72 72 61 79 3b 0a 74 79 70 65 64 65 66 20  jarray;.typedef 
0830: 5f 6a 6f 62 6a 65 63 74 41 72 72 61 79 2a 20 20  _jobjectArray*  
0840: 6a 6f 62 6a 65 63 74 41 72 72 61 79 3b 0a 74 79  jobjectArray;.ty
0850: 70 65 64 65 66 20 5f 6a 62 6f 6f 6c 65 61 6e 41  pedef _jbooleanA
0860: 72 72 61 79 2a 20 6a 62 6f 6f 6c 65 61 6e 41 72  rray* jbooleanAr
0870: 72 61 79 3b 0a 74 79 70 65 64 65 66 20 5f 6a 62  ray;.typedef _jb
0880: 79 74 65 41 72 72 61 79 2a 20 20 20 20 6a 62 79  yteArray*    jby
0890: 74 65 41 72 72 61 79 3b 0a 74 79 70 65 64 65 66  teArray;.typedef
08a0: 20 5f 6a 63 68 61 72 41 72 72 61 79 2a 20 20 20   _jcharArray*   
08b0: 20 6a 63 68 61 72 41 72 72 61 79 3b 0a 74 79 70   jcharArray;.typ
08c0: 65 64 65 66 20 5f 6a 73 68 6f 72 74 41 72 72 61  edef _jshortArra
08d0: 79 2a 20 20 20 6a 73 68 6f 72 74 41 72 72 61 79  y*   jshortArray
08e0: 3b 0a 74 79 70 65 64 65 66 20 5f 6a 69 6e 74 41  ;.typedef _jintA
08f0: 72 72 61 79 2a 20 20 20 20 20 6a 69 6e 74 41 72  rray*     jintAr
0900: 72 61 79 3b 0a 74 79 70 65 64 65 66 20 5f 6a 6c  ray;.typedef _jl
0910: 6f 6e 67 41 72 72 61 79 2a 20 20 20 20 6a 6c 6f  ongArray*    jlo
0920: 6e 67 41 72 72 61 79 3b 0a 74 79 70 65 64 65 66  ngArray;.typedef
0930: 20 5f 6a 66 6c 6f 61 74 41 72 72 61 79 2a 20 20   _jfloatArray*  
0940: 20 6a 66 6c 6f 61 74 41 72 72 61 79 3b 0a 74 79   jfloatArray;.ty
0950: 70 65 64 65 66 20 5f 6a 64 6f 75 62 6c 65 41 72  pedef _jdoubleAr
0960: 72 61 79 2a 20 20 6a 64 6f 75 62 6c 65 41 72 72  ray*  jdoubleArr
0970: 61 79 3b 0a 74 79 70 65 64 65 66 20 5f 6a 74 68  ay;.typedef _jth
0980: 72 6f 77 61 62 6c 65 2a 20 20 20 20 6a 74 68 72  rowable*    jthr
0990: 6f 77 61 62 6c 65 3b 0a 74 79 70 65 64 65 66 20  owable;.typedef 
09a0: 5f 6a 6f 62 6a 65 63 74 2a 20 20 20 20 20 20 20  _jobject*       
09b0: 6a 77 65 61 6b 3b 0a 0a 0a 23 65 6c 73 65 20 2f  jweak;...#else /
09c0: 2a 20 6e 6f 74 20 5f 5f 63 70 6c 75 73 70 6c 75  * not __cplusplu
09d0: 73 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 52 65 66 65  s */../*. * Refe
09e0: 72 65 6e 63 65 20 74 79 70 65 73 2c 20 69 6e 20  rence types, in 
09f0: 43 2e 0a 20 2a 2f 0a 74 79 70 65 64 65 66 20 76  C.. */.typedef v
0a00: 6f 69 64 2a 20 20 20 20 20 20 20 20 20 20 20 6a  oid*           j
0a10: 6f 62 6a 65 63 74 3b 0a 74 79 70 65 64 65 66 20  object;.typedef 
0a20: 6a 6f 62 6a 65 63 74 20 20 20 20 20 20 20 20 20  jobject         
0a30: 6a 63 6c 61 73 73 3b 0a 74 79 70 65 64 65 66 20  jclass;.typedef 
0a40: 6a 6f 62 6a 65 63 74 20 20 20 20 20 20 20 20 20  jobject         
0a50: 6a 73 74 72 69 6e 67 3b 0a 74 79 70 65 64 65 66  jstring;.typedef
0a60: 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 20 20 20   jobject        
0a70: 20 6a 61 72 72 61 79 3b 0a 74 79 70 65 64 65 66   jarray;.typedef
0a80: 20 6a 61 72 72 61 79 20 20 20 20 20 20 20 20 20   jarray         
0a90: 20 6a 6f 62 6a 65 63 74 41 72 72 61 79 3b 0a 74   jobjectArray;.t
0aa0: 79 70 65 64 65 66 20 6a 61 72 72 61 79 20 20 20  ypedef jarray   
0ab0: 20 20 20 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 41         jbooleanA
0ac0: 72 72 61 79 3b 0a 74 79 70 65 64 65 66 20 6a 61  rray;.typedef ja
0ad0: 72 72 61 79 20 20 20 20 20 20 20 20 20 20 6a 62  rray          jb
0ae0: 79 74 65 41 72 72 61 79 3b 0a 74 79 70 65 64 65  yteArray;.typede
0af0: 66 20 6a 61 72 72 61 79 20 20 20 20 20 20 20 20  f jarray        
0b00: 20 20 6a 63 68 61 72 41 72 72 61 79 3b 0a 74 79    jcharArray;.ty
0b10: 70 65 64 65 66 20 6a 61 72 72 61 79 20 20 20 20  pedef jarray    
0b20: 20 20 20 20 20 20 6a 73 68 6f 72 74 41 72 72 61        jshortArra
0b30: 79 3b 0a 74 79 70 65 64 65 66 20 6a 61 72 72 61  y;.typedef jarra
0b40: 79 20 20 20 20 20 20 20 20 20 20 6a 69 6e 74 41  y          jintA
0b50: 72 72 61 79 3b 0a 74 79 70 65 64 65 66 20 6a 61  rray;.typedef ja
0b60: 72 72 61 79 20 20 20 20 20 20 20 20 20 20 6a 6c  rray          jl
0b70: 6f 6e 67 41 72 72 61 79 3b 0a 74 79 70 65 64 65  ongArray;.typede
0b80: 66 20 6a 61 72 72 61 79 20 20 20 20 20 20 20 20  f jarray        
0b90: 20 20 6a 66 6c 6f 61 74 41 72 72 61 79 3b 0a 74    jfloatArray;.t
0ba0: 79 70 65 64 65 66 20 6a 61 72 72 61 79 20 20 20  ypedef jarray   
0bb0: 20 20 20 20 20 20 20 6a 64 6f 75 62 6c 65 41 72         jdoubleAr
0bc0: 72 61 79 3b 0a 74 79 70 65 64 65 66 20 6a 6f 62  ray;.typedef job
0bd0: 6a 65 63 74 20 20 20 20 20 20 20 20 20 6a 74 68  ject         jth
0be0: 72 6f 77 61 62 6c 65 3b 0a 74 79 70 65 64 65 66  rowable;.typedef
0bf0: 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 20 20 20   jobject        
0c00: 20 6a 77 65 61 6b 3b 0a 0a 23 65 6e 64 69 66 20   jweak;..#endif 
0c10: 2f 2a 20 6e 6f 74 20 5f 5f 63 70 6c 75 73 70 6c  /* not __cpluspl
0c20: 75 73 20 2a 2f 0a 0a 73 74 72 75 63 74 20 5f 6a  us */..struct _j
0c30: 66 69 65 6c 64 49 44 3b 20 20 20 20 20 20 20 20  fieldID;        
0c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
0c50: 2a 20 6f 70 61 71 75 65 20 73 74 72 75 63 74 75  * opaque structu
0c60: 72 65 20 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  re */.typedef st
0c70: 72 75 63 74 20 5f 6a 66 69 65 6c 64 49 44 2a 20  ruct _jfieldID* 
0c80: 6a 66 69 65 6c 64 49 44 3b 20 20 20 20 20 2f 2a  jfieldID;     /*
0c90: 20 66 69 65 6c 64 20 49 44 73 20 2a 2f 0a 0a 73   field IDs */..s
0ca0: 74 72 75 63 74 20 5f 6a 6d 65 74 68 6f 64 49 44  truct _jmethodID
0cb0: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
0cc0: 20 20 20 20 20 20 20 2f 2a 20 6f 70 61 71 75 65         /* opaque
0cd0: 20 73 74 72 75 63 74 75 72 65 20 2a 2f 0a 74 79   structure */.ty
0ce0: 70 65 64 65 66 20 73 74 72 75 63 74 20 5f 6a 6d  pedef struct _jm
0cf0: 65 74 68 6f 64 49 44 2a 20 6a 6d 65 74 68 6f 64  ethodID* jmethod
0d00: 49 44 3b 20 20 20 2f 2a 20 6d 65 74 68 6f 64 20  ID;   /* method 
0d10: 49 44 73 20 2a 2f 0a 0a 73 74 72 75 63 74 20 4a  IDs */..struct J
0d20: 4e 49 49 6e 76 6f 6b 65 49 6e 74 65 72 66 61 63  NIInvokeInterfac
0d30: 65 3b 0a 0a 74 79 70 65 64 65 66 20 75 6e 69 6f  e;..typedef unio
0d40: 6e 20 6a 76 61 6c 75 65 20 7b 0a 20 20 20 20 6a  n jvalue {.    j
0d50: 62 6f 6f 6c 65 61 6e 20 20 20 20 7a 3b 0a 20 20  boolean    z;.  
0d60: 20 20 6a 62 79 74 65 20 20 20 20 20 20 20 62 3b    jbyte       b;
0d70: 0a 20 20 20 20 6a 63 68 61 72 20 20 20 20 20 20  .    jchar      
0d80: 20 63 3b 0a 20 20 20 20 6a 73 68 6f 72 74 20 20   c;.    jshort  
0d90: 20 20 20 20 73 3b 0a 20 20 20 20 6a 69 6e 74 20      s;.    jint 
0da0: 20 20 20 20 20 20 20 69 3b 0a 20 20 20 20 6a 6c         i;.    jl
0db0: 6f 6e 67 20 20 20 20 20 20 20 6a 3b 0a 20 20 20  ong       j;.   
0dc0: 20 6a 66 6c 6f 61 74 20 20 20 20 20 20 66 3b 0a   jfloat      f;.
0dd0: 20 20 20 20 6a 64 6f 75 62 6c 65 20 20 20 20 20      jdouble     
0de0: 64 3b 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 20  d;.    jobject  
0df0: 20 20 20 6c 3b 0a 7d 20 6a 76 61 6c 75 65 3b 0a     l;.} jvalue;.
0e00: 0a 74 79 70 65 64 65 66 20 65 6e 75 6d 20 6a 6f  .typedef enum jo
0e10: 62 6a 65 63 74 52 65 66 54 79 70 65 20 7b 0a 20  bjectRefType {. 
0e20: 20 20 20 4a 4e 49 49 6e 76 61 6c 69 64 52 65 66     JNIInvalidRef
0e30: 54 79 70 65 20 3d 20 30 2c 0a 20 20 20 20 4a 4e  Type = 0,.    JN
0e40: 49 4c 6f 63 61 6c 52 65 66 54 79 70 65 20 3d 20  ILocalRefType = 
0e50: 31 2c 0a 20 20 20 20 4a 4e 49 47 6c 6f 62 61 6c  1,.    JNIGlobal
0e60: 52 65 66 54 79 70 65 20 3d 20 32 2c 0a 20 20 20  RefType = 2,.   
0e70: 20 4a 4e 49 57 65 61 6b 47 6c 6f 62 61 6c 52 65   JNIWeakGlobalRe
0e80: 66 54 79 70 65 20 3d 20 33 0a 7d 20 6a 6f 62 6a  fType = 3.} jobj
0e90: 65 63 74 52 65 66 54 79 70 65 3b 0a 0a 74 79 70  ectRefType;..typ
0ea0: 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20  edef struct {.  
0eb0: 20 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 6e 61    const char* na
0ec0: 6d 65 3b 0a 20 20 20 20 63 6f 6e 73 74 20 63 68  me;.    const ch
0ed0: 61 72 2a 20 73 69 67 6e 61 74 75 72 65 3b 0a 20  ar* signature;. 
0ee0: 20 20 20 76 6f 69 64 2a 20 20 20 20 20 20 20 66     void*       f
0ef0: 6e 50 74 72 3b 0a 7d 20 4a 4e 49 4e 61 74 69 76  nPtr;.} JNINativ
0f00: 65 4d 65 74 68 6f 64 3b 0a 0a 73 74 72 75 63 74  eMethod;..struct
0f10: 20 5f 4a 4e 49 45 6e 76 3b 0a 73 74 72 75 63 74   _JNIEnv;.struct
0f20: 20 5f 4a 61 76 61 56 4d 3b 0a 74 79 70 65 64 65   _JavaVM;.typede
0f30: 66 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 4a  f const struct J
0f40: 4e 49 4e 61 74 69 76 65 49 6e 74 65 72 66 61 63  NINativeInterfac
0f50: 65 2a 20 43 5f 4a 4e 49 45 6e 76 3b 0a 0a 23 69  e* C_JNIEnv;..#i
0f60: 66 20 64 65 66 69 6e 65 64 28 5f 5f 63 70 6c 75  f defined(__cplu
0f70: 73 70 6c 75 73 29 0a 74 79 70 65 64 65 66 20 5f  splus).typedef _
0f80: 4a 4e 49 45 6e 76 20 4a 4e 49 45 6e 76 3b 0a 74  JNIEnv JNIEnv;.t
0f90: 79 70 65 64 65 66 20 5f 4a 61 76 61 56 4d 20 4a  ypedef _JavaVM J
0fa0: 61 76 61 56 4d 3b 0a 23 65 6c 73 65 0a 74 79 70  avaVM;.#else.typ
0fb0: 65 64 65 66 20 63 6f 6e 73 74 20 73 74 72 75 63  edef const struc
0fc0: 74 20 4a 4e 49 4e 61 74 69 76 65 49 6e 74 65 72  t JNINativeInter
0fd0: 66 61 63 65 2a 20 4a 4e 49 45 6e 76 3b 0a 74 79  face* JNIEnv;.ty
0fe0: 70 65 64 65 66 20 63 6f 6e 73 74 20 73 74 72 75  pedef const stru
0ff0: 63 74 20 4a 4e 49 49 6e 76 6f 6b 65 49 6e 74 65  ct JNIInvokeInte
1000: 72 66 61 63 65 2a 20 4a 61 76 61 56 4d 3b 0a 23  rface* JavaVM;.#
1010: 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 54 61 62  endif../*. * Tab
1020: 6c 65 20 6f 66 20 69 6e 74 65 72 66 61 63 65 20  le of interface 
1030: 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72  function pointer
1040: 73 2e 0a 20 2a 2f 0a 73 74 72 75 63 74 20 4a 4e  s.. */.struct JN
1050: 49 4e 61 74 69 76 65 49 6e 74 65 72 66 61 63 65  INativeInterface
1060: 20 7b 0a 20 20 20 20 76 6f 69 64 2a 20 20 20 20   {.    void*    
1070: 20 20 20 72 65 73 65 72 76 65 64 30 3b 0a 20 20     reserved0;.  
1080: 20 20 76 6f 69 64 2a 20 20 20 20 20 20 20 72 65    void*       re
1090: 73 65 72 76 65 64 31 3b 0a 20 20 20 20 76 6f 69  served1;.    voi
10a0: 64 2a 20 20 20 20 20 20 20 72 65 73 65 72 76 65  d*       reserve
10b0: 64 32 3b 0a 20 20 20 20 76 6f 69 64 2a 20 20 20  d2;.    void*   
10c0: 20 20 20 20 72 65 73 65 72 76 65 64 33 3b 0a 0a      reserved3;..
10d0: 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20 20 20      jint        
10e0: 28 2a 47 65 74 56 65 72 73 69 6f 6e 29 28 4a 4e  (*GetVersion)(JN
10f0: 49 45 6e 76 20 2a 29 3b 0a 0a 20 20 20 20 6a 63  IEnv *);..    jc
1100: 6c 61 73 73 20 20 20 20 20 20 28 2a 44 65 66 69  lass      (*Defi
1110: 6e 65 43 6c 61 73 73 29 28 4a 4e 49 45 6e 76 2a  neClass)(JNIEnv*
1120: 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 6a  , const char*, j
1130: 6f 62 6a 65 63 74 2c 20 63 6f 6e 73 74 20 6a 62  object, const jb
1140: 79 74 65 2a 2c 0a 20 20 20 20 20 20 20 20 20 20  yte*,.          
1150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73                js
1160: 69 7a 65 29 3b 0a 20 20 20 20 6a 63 6c 61 73 73  ize);.    jclass
1170: 20 20 20 20 20 20 28 2a 46 69 6e 64 43 6c 61 73        (*FindClas
1180: 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 63 6f 6e 73  s)(JNIEnv*, cons
1190: 74 20 63 68 61 72 2a 29 3b 0a 0a 20 20 20 20 6a  t char*);..    j
11a0: 6d 65 74 68 6f 64 49 44 20 20 20 28 2a 46 72 6f  methodID   (*Fro
11b0: 6d 52 65 66 6c 65 63 74 65 64 4d 65 74 68 6f 64  mReflectedMethod
11c0: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
11d0: 63 74 29 3b 0a 20 20 20 20 6a 66 69 65 6c 64 49  ct);.    jfieldI
11e0: 44 20 20 20 20 28 2a 46 72 6f 6d 52 65 66 6c 65  D    (*FromRefle
11f0: 63 74 65 64 46 69 65 6c 64 29 28 4a 4e 49 45 6e  ctedField)(JNIEn
1200: 76 2a 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a 20 20  v*, jobject);.  
1210: 20 20 2f 2a 20 73 70 65 63 20 64 6f 65 73 6e 27    /* spec doesn'
1220: 74 20 73 68 6f 77 20 6a 62 6f 6f 6c 65 61 6e 20  t show jboolean 
1230: 70 61 72 61 6d 65 74 65 72 20 2a 2f 0a 20 20 20  parameter */.   
1240: 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 28 2a 54   jobject     (*T
1250: 6f 52 65 66 6c 65 63 74 65 64 4d 65 74 68 6f 64  oReflectedMethod
1260: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73  )(JNIEnv*, jclas
1270: 73 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 62  s, jmethodID, jb
1280: 6f 6f 6c 65 61 6e 29 3b 0a 0a 20 20 20 20 6a 63  oolean);..    jc
1290: 6c 61 73 73 20 20 20 20 20 20 28 2a 47 65 74 53  lass      (*GetS
12a0: 75 70 65 72 63 6c 61 73 73 29 28 4a 4e 49 45 6e  uperclass)(JNIEn
12b0: 76 2a 2c 20 6a 63 6c 61 73 73 29 3b 0a 20 20 20  v*, jclass);.   
12c0: 20 6a 62 6f 6f 6c 65 61 6e 20 20 20 20 28 2a 49   jboolean    (*I
12d0: 73 41 73 73 69 67 6e 61 62 6c 65 46 72 6f 6d 29  sAssignableFrom)
12e0: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73  (JNIEnv*, jclass
12f0: 2c 20 6a 63 6c 61 73 73 29 3b 0a 0a 20 20 20 20  , jclass);..    
1300: 2f 2a 20 73 70 65 63 20 64 6f 65 73 6e 27 74 20  /* spec doesn't 
1310: 73 68 6f 77 20 6a 62 6f 6f 6c 65 61 6e 20 70 61  show jboolean pa
1320: 72 61 6d 65 74 65 72 20 2a 2f 0a 20 20 20 20 6a  rameter */.    j
1330: 6f 62 6a 65 63 74 20 20 20 20 20 28 2a 54 6f 52  object     (*ToR
1340: 65 66 6c 65 63 74 65 64 46 69 65 6c 64 29 28 4a  eflectedField)(J
1350: 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20  NIEnv*, jclass, 
1360: 6a 66 69 65 6c 64 49 44 2c 20 6a 62 6f 6f 6c 65  jfieldID, jboole
1370: 61 6e 29 3b 0a 0a 20 20 20 20 6a 69 6e 74 20 20  an);..    jint  
1380: 20 20 20 20 20 20 28 2a 54 68 72 6f 77 29 28 4a        (*Throw)(J
1390: 4e 49 45 6e 76 2a 2c 20 6a 74 68 72 6f 77 61 62  NIEnv*, jthrowab
13a0: 6c 65 29 3b 0a 20 20 20 20 6a 69 6e 74 20 20 20  le);.    jint   
13b0: 20 20 20 20 20 28 2a 54 68 72 6f 77 4e 65 77 29       (*ThrowNew)
13c0: 28 4a 4e 49 45 6e 76 20 2a 2c 20 6a 63 6c 61 73  (JNIEnv *, jclas
13d0: 73 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29  s, const char *)
13e0: 3b 0a 20 20 20 20 6a 74 68 72 6f 77 61 62 6c 65  ;.    jthrowable
13f0: 20 20 28 2a 45 78 63 65 70 74 69 6f 6e 4f 63 63    (*ExceptionOcc
1400: 75 72 72 65 64 29 28 4a 4e 49 45 6e 76 2a 29 3b  urred)(JNIEnv*);
1410: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
1420: 20 28 2a 45 78 63 65 70 74 69 6f 6e 44 65 73 63   (*ExceptionDesc
1430: 72 69 62 65 29 28 4a 4e 49 45 6e 76 2a 29 3b 0a  ribe)(JNIEnv*);.
1440: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
1450: 28 2a 45 78 63 65 70 74 69 6f 6e 43 6c 65 61 72  (*ExceptionClear
1460: 29 28 4a 4e 49 45 6e 76 2a 29 3b 0a 20 20 20 20  )(JNIEnv*);.    
1470: 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 46 61  void        (*Fa
1480: 74 61 6c 45 72 72 6f 72 29 28 4a 4e 49 45 6e 76  talError)(JNIEnv
1490: 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 29 3b  *, const char*);
14a0: 0a 0a 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20  ..    jint      
14b0: 20 20 28 2a 50 75 73 68 4c 6f 63 61 6c 46 72 61    (*PushLocalFra
14c0: 6d 65 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 69 6e  me)(JNIEnv*, jin
14d0: 74 29 3b 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20  t);.    jobject 
14e0: 20 20 20 20 28 2a 50 6f 70 4c 6f 63 61 6c 46 72      (*PopLocalFr
14f0: 61 6d 65 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  ame)(JNIEnv*, jo
1500: 62 6a 65 63 74 29 3b 0a 0a 20 20 20 20 6a 6f 62  bject);..    job
1510: 6a 65 63 74 20 20 20 20 20 28 2a 4e 65 77 47 6c  ject     (*NewGl
1520: 6f 62 61 6c 52 65 66 29 28 4a 4e 49 45 6e 76 2a  obalRef)(JNIEnv*
1530: 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a 20 20 20 20  , jobject);.    
1540: 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 44 65  void        (*De
1550: 6c 65 74 65 47 6c 6f 62 61 6c 52 65 66 29 28 4a  leteGlobalRef)(J
1560: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 29  NIEnv*, jobject)
1570: 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20  ;.    void      
1580: 20 20 28 2a 44 65 6c 65 74 65 4c 6f 63 61 6c 52    (*DeleteLocalR
1590: 65 66 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62  ef)(JNIEnv*, job
15a0: 6a 65 63 74 29 3b 0a 20 20 20 20 6a 62 6f 6f 6c  ject);.    jbool
15b0: 65 61 6e 20 20 20 20 28 2a 49 73 53 61 6d 65 4f  ean    (*IsSameO
15c0: 62 6a 65 63 74 29 28 4a 4e 49 45 6e 76 2a 2c 20  bject)(JNIEnv*, 
15d0: 6a 6f 62 6a 65 63 74 2c 20 6a 6f 62 6a 65 63 74  jobject, jobject
15e0: 29 3b 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20  );..    jobject 
15f0: 20 20 20 20 28 2a 4e 65 77 4c 6f 63 61 6c 52 65      (*NewLocalRe
1600: 66 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a  f)(JNIEnv*, jobj
1610: 65 63 74 29 3b 0a 20 20 20 20 6a 69 6e 74 20 20  ect);.    jint  
1620: 20 20 20 20 20 20 28 2a 45 6e 73 75 72 65 4c 6f        (*EnsureLo
1630: 63 61 6c 43 61 70 61 63 69 74 79 29 28 4a 4e 49  calCapacity)(JNI
1640: 45 6e 76 2a 2c 20 6a 69 6e 74 29 3b 0a 0a 20 20  Env*, jint);..  
1650: 20 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 28 2a    jobject     (*
1660: 41 6c 6c 6f 63 4f 62 6a 65 63 74 29 28 4a 4e 49  AllocObject)(JNI
1670: 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 29 3b 0a 20  Env*, jclass);. 
1680: 20 20 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 28     jobject     (
1690: 2a 4e 65 77 4f 62 6a 65 63 74 29 28 4a 4e 49 45  *NewObject)(JNIE
16a0: 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65  nv*, jclass, jme
16b0: 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20  thodID, ...);.  
16c0: 20 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 28 2a    jobject     (*
16d0: 4e 65 77 4f 62 6a 65 63 74 56 29 28 4a 4e 49 45  NewObjectV)(JNIE
16e0: 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65  nv*, jclass, jme
16f0: 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 29  thodID, va_list)
1700: 3b 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 20 20  ;.    jobject   
1710: 20 20 28 2a 4e 65 77 4f 62 6a 65 63 74 41 29 28    (*NewObjectA)(
1720: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
1730: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c   jmethodID, jval
1740: 75 65 2a 29 3b 0a 0a 20 20 20 20 6a 63 6c 61 73  ue*);..    jclas
1750: 73 20 20 20 20 20 20 28 2a 47 65 74 4f 62 6a 65  s      (*GetObje
1760: 63 74 43 6c 61 73 73 29 28 4a 4e 49 45 6e 76 2a  ctClass)(JNIEnv*
1770: 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a 20 20 20 20  , jobject);.    
1780: 6a 62 6f 6f 6c 65 61 6e 20 20 20 20 28 2a 49 73  jboolean    (*Is
1790: 49 6e 73 74 61 6e 63 65 4f 66 29 28 4a 4e 49 45  InstanceOf)(JNIE
17a0: 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63  nv*, jobject, jc
17b0: 6c 61 73 73 29 3b 0a 20 20 20 20 6a 6d 65 74 68  lass);.    jmeth
17c0: 6f 64 49 44 20 20 20 28 2a 47 65 74 4d 65 74 68  odID   (*GetMeth
17d0: 6f 64 49 44 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  odID)(JNIEnv*, j
17e0: 63 6c 61 73 73 2c 20 63 6f 6e 73 74 20 63 68 61  class, const cha
17f0: 72 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 29  r*, const char*)
1800: 3b 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 20  ;..    jobject  
1810: 20 20 20 28 2a 43 61 6c 6c 4f 62 6a 65 63 74 4d     (*CallObjectM
1820: 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20  ethod)(JNIEnv*, 
1830: 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64  jobject, jmethod
1840: 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 6f  ID, ...);.    jo
1850: 62 6a 65 63 74 20 20 20 20 20 28 2a 43 61 6c 6c  bject     (*Call
1860: 4f 62 6a 65 63 74 4d 65 74 68 6f 64 56 29 28 4a  ObjectMethodV)(J
1870: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c  NIEnv*, jobject,
1880: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f 6c   jmethodID, va_l
1890: 69 73 74 29 3b 0a 20 20 20 20 6a 6f 62 6a 65 63  ist);.    jobjec
18a0: 74 20 20 20 20 20 28 2a 43 61 6c 6c 4f 62 6a 65  t     (*CallObje
18b0: 63 74 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e  ctMethodA)(JNIEn
18c0: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65  v*, jobject, jme
18d0: 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29  thodID, jvalue*)
18e0: 3b 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20 20  ;.    jboolean  
18f0: 20 20 28 2a 43 61 6c 6c 42 6f 6f 6c 65 61 6e 4d    (*CallBooleanM
1900: 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20  ethod)(JNIEnv*, 
1910: 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64  jobject, jmethod
1920: 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 62  ID, ...);.    jb
1930: 6f 6f 6c 65 61 6e 20 20 20 20 28 2a 43 61 6c 6c  oolean    (*Call
1940: 42 6f 6f 6c 65 61 6e 4d 65 74 68 6f 64 56 29 28  BooleanMethodV)(
1950: 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74  JNIEnv*, jobject
1960: 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f  , jmethodID, va_
1970: 6c 69 73 74 29 3b 0a 20 20 20 20 6a 62 6f 6f 6c  list);.    jbool
1980: 65 61 6e 20 20 20 20 28 2a 43 61 6c 6c 42 6f 6f  ean    (*CallBoo
1990: 6c 65 61 6e 4d 65 74 68 6f 64 41 29 28 4a 4e 49  leanMethodA)(JNI
19a0: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a  Env*, jobject, j
19b0: 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65  methodID, jvalue
19c0: 2a 29 3b 0a 20 20 20 20 6a 62 79 74 65 20 20 20  *);.    jbyte   
19d0: 20 20 20 20 28 2a 43 61 6c 6c 42 79 74 65 4d 65      (*CallByteMe
19e0: 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  thod)(JNIEnv*, j
19f0: 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49  object, jmethodI
1a00: 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 62 79  D, ...);.    jby
1a10: 74 65 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 42  te       (*CallB
1a20: 79 74 65 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45  yteMethodV)(JNIE
1a30: 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d  nv*, jobject, jm
1a40: 65 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74  ethodID, va_list
1a50: 29 3b 0a 20 20 20 20 6a 62 79 74 65 20 20 20 20  );.    jbyte    
1a60: 20 20 20 28 2a 43 61 6c 6c 42 79 74 65 4d 65 74     (*CallByteMet
1a70: 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  hodA)(JNIEnv*, j
1a80: 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49  object, jmethodI
1a90: 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20 20  D, jvalue*);.   
1aa0: 20 6a 63 68 61 72 20 20 20 20 20 20 20 28 2a 43   jchar       (*C
1ab0: 61 6c 6c 43 68 61 72 4d 65 74 68 6f 64 29 28 4a  allCharMethod)(J
1ac0: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c  NIEnv*, jobject,
1ad0: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29   jmethodID, ...)
1ae0: 3b 0a 20 20 20 20 6a 63 68 61 72 20 20 20 20 20  ;.    jchar     
1af0: 20 20 28 2a 43 61 6c 6c 43 68 61 72 4d 65 74 68    (*CallCharMeth
1b00: 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  odV)(JNIEnv*, jo
1b10: 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49 44  bject, jmethodID
1b20: 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20 20 20  , va_list);.    
1b30: 6a 63 68 61 72 20 20 20 20 20 20 20 28 2a 43 61  jchar       (*Ca
1b40: 6c 6c 43 68 61 72 4d 65 74 68 6f 64 41 29 28 4a  llCharMethodA)(J
1b50: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c  NIEnv*, jobject,
1b60: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c   jmethodID, jval
1b70: 75 65 2a 29 3b 0a 20 20 20 20 6a 73 68 6f 72 74  ue*);.    jshort
1b80: 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 68 6f 72        (*CallShor
1b90: 74 4d 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a  tMethod)(JNIEnv*
1ba0: 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68  , jobject, jmeth
1bb0: 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20  odID, ...);.    
1bc0: 6a 73 68 6f 72 74 20 20 20 20 20 20 28 2a 43 61  jshort      (*Ca
1bd0: 6c 6c 53 68 6f 72 74 4d 65 74 68 6f 64 56 29 28  llShortMethodV)(
1be0: 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74  JNIEnv*, jobject
1bf0: 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f  , jmethodID, va_
1c00: 6c 69 73 74 29 3b 0a 20 20 20 20 6a 73 68 6f 72  list);.    jshor
1c10: 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 68 6f  t      (*CallSho
1c20: 72 74 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e  rtMethodA)(JNIEn
1c30: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65  v*, jobject, jme
1c40: 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29  thodID, jvalue*)
1c50: 3b 0a 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20  ;.    jint      
1c60: 20 20 28 2a 43 61 6c 6c 49 6e 74 4d 65 74 68 6f    (*CallIntMetho
1c70: 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a  d)(JNIEnv*, jobj
1c80: 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20  ect, jmethodID, 
1c90: 2e 2e 2e 29 3b 0a 20 20 20 20 6a 69 6e 74 20 20  ...);.    jint  
1ca0: 20 20 20 20 20 20 28 2a 43 61 6c 6c 49 6e 74 4d        (*CallIntM
1cb0: 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c  ethodV)(JNIEnv*,
1cc0: 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f   jobject, jmetho
1cd0: 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20  dID, va_list);. 
1ce0: 20 20 20 6a 69 6e 74 20 20 20 20 20 20 20 20 28     jint        (
1cf0: 2a 43 61 6c 6c 49 6e 74 4d 65 74 68 6f 64 41 29  *CallIntMethodA)
1d00: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
1d10: 74 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76  t, jmethodID, jv
1d20: 61 6c 75 65 2a 29 3b 0a 20 20 20 20 6a 6c 6f 6e  alue*);.    jlon
1d30: 67 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 4c 6f  g       (*CallLo
1d40: 6e 67 4d 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76  ngMethod)(JNIEnv
1d50: 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74  *, jobject, jmet
1d60: 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20  hodID, ...);.   
1d70: 20 6a 6c 6f 6e 67 20 20 20 20 20 20 20 28 2a 43   jlong       (*C
1d80: 61 6c 6c 4c 6f 6e 67 4d 65 74 68 6f 64 56 29 28  allLongMethodV)(
1d90: 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74  JNIEnv*, jobject
1da0: 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f  , jmethodID, va_
1db0: 6c 69 73 74 29 3b 0a 20 20 20 20 6a 6c 6f 6e 67  list);.    jlong
1dc0: 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 4c 6f 6e         (*CallLon
1dd0: 67 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76  gMethodA)(JNIEnv
1de0: 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74  *, jobject, jmet
1df0: 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b  hodID, jvalue*);
1e00: 0a 20 20 20 20 6a 66 6c 6f 61 74 20 20 20 20 20  .    jfloat     
1e10: 20 28 2a 43 61 6c 6c 46 6c 6f 61 74 4d 65 74 68   (*CallFloatMeth
1e20: 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62  od)(JNIEnv*, job
1e30: 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49 44 2c  ject, jmethodID,
1e40: 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 66 6c 6f 61   ...);.    jfloa
1e50: 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 46 6c 6f  t      (*CallFlo
1e60: 61 74 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e  atMethodV)(JNIEn
1e70: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65  v*, jobject, jme
1e80: 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 29  thodID, va_list)
1e90: 3b 0a 20 20 20 20 6a 66 6c 6f 61 74 20 20 20 20  ;.    jfloat    
1ea0: 20 20 28 2a 43 61 6c 6c 46 6c 6f 61 74 4d 65 74    (*CallFloatMet
1eb0: 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  hodA)(JNIEnv*, j
1ec0: 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49  object, jmethodI
1ed0: 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20 20  D, jvalue*);.   
1ee0: 20 6a 64 6f 75 62 6c 65 20 20 20 20 20 28 2a 43   jdouble     (*C
1ef0: 61 6c 6c 44 6f 75 62 6c 65 4d 65 74 68 6f 64 29  allDoubleMethod)
1f00: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
1f10: 74 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e  t, jmethodID, ..
1f20: 2e 29 3b 0a 20 20 20 20 6a 64 6f 75 62 6c 65 20  .);.    jdouble 
1f30: 20 20 20 20 28 2a 43 61 6c 6c 44 6f 75 62 6c 65      (*CallDouble
1f40: 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a  MethodV)(JNIEnv*
1f50: 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 6d 65 74 68  , jobject, jmeth
1f60: 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a  odID, va_list);.
1f70: 20 20 20 20 6a 64 6f 75 62 6c 65 20 20 20 20 20      jdouble     
1f80: 28 2a 43 61 6c 6c 44 6f 75 62 6c 65 4d 65 74 68  (*CallDoubleMeth
1f90: 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  odA)(JNIEnv*, jo
1fa0: 62 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49 44  bject, jmethodID
1fb0: 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20 20 20  , jvalue*);.    
1fc0: 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 43 61  void        (*Ca
1fd0: 6c 6c 56 6f 69 64 4d 65 74 68 6f 64 29 28 4a 4e  llVoidMethod)(JN
1fe0: 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20  IEnv*, jobject, 
1ff0: 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b  jmethodID, ...);
2000: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
2010: 20 28 2a 43 61 6c 6c 56 6f 69 64 4d 65 74 68 6f   (*CallVoidMetho
2020: 64 56 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62  dV)(JNIEnv*, job
2030: 6a 65 63 74 2c 20 6a 6d 65 74 68 6f 64 49 44 2c  ject, jmethodID,
2040: 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20 20 20 76   va_list);.    v
2050: 6f 69 64 20 20 20 20 20 20 20 20 28 2a 43 61 6c  oid        (*Cal
2060: 6c 56 6f 69 64 4d 65 74 68 6f 64 41 29 28 4a 4e  lVoidMethodA)(JN
2070: 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20  IEnv*, jobject, 
2080: 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75  jmethodID, jvalu
2090: 65 2a 29 3b 0a 0a 20 20 20 20 6a 6f 62 6a 65 63  e*);..    jobjec
20a0: 74 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76  t     (*CallNonv
20b0: 69 72 74 75 61 6c 4f 62 6a 65 63 74 4d 65 74 68  irtualObjectMeth
20c0: 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62  od)(JNIEnv*, job
20d0: 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20  ject, jclass,.  
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c        jmethodID,
2100: 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 6f 62 6a 65   ...);.    jobje
2110: 63 74 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e  ct     (*CallNon
2120: 76 69 72 74 75 61 6c 4f 62 6a 65 63 74 4d 65 74  virtualObjectMet
2130: 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  hodV)(JNIEnv*, j
2140: 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a  object, jclass,.
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49          jmethodI
2170: 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20 20  D, va_list);.   
2180: 20 6a 6f 62 6a 65 63 74 20 20 20 20 20 28 2a 43   jobject     (*C
2190: 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 4f 62 6a  allNonvirtualObj
21a0: 65 63 74 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45  ectMethodA)(JNIE
21b0: 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63  nv*, jobject, jc
21c0: 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20  lass,.          
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6d                jm
21e0: 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a  ethodID, jvalue*
21f0: 29 3b 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20  );.    jboolean 
2200: 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74     (*CallNonvirt
2210: 75 61 6c 42 6f 6f 6c 65 61 6e 4d 65 74 68 6f 64  ualBooleanMethod
2220: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
2230: 63 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20  ct, jclass,.    
2240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2250: 20 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e      jmethodID, .
2260: 2e 2e 29 3b 0a 20 20 20 20 6a 62 6f 6f 6c 65 61  ..);.    jboolea
2270: 6e 20 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69  n    (*CallNonvi
2280: 72 74 75 61 6c 42 6f 6f 6c 65 61 6e 4d 65 74 68  rtualBooleanMeth
2290: 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  odV)(JNIEnv*, jo
22a0: 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a 20  bject, jclass,. 
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c0: 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49          jmethodI
22d0: 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20 20  D, va_list);.   
22e0: 20 6a 62 6f 6f 6c 65 61 6e 20 20 20 20 28 2a 43   jboolean    (*C
22f0: 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 42 6f 6f  allNonvirtualBoo
2300: 6c 65 61 6e 4d 65 74 68 6f 64 41 29 28 4a 4e 49  leanMethodA)(JNI
2310: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a  Env*, jobject, j
2320: 63 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20  class,.         
2330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2340: 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75  jmethodID, jvalu
2350: 65 2a 29 3b 0a 20 20 20 20 6a 62 79 74 65 20 20  e*);.    jbyte  
2360: 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69       (*CallNonvi
2370: 72 74 75 61 6c 42 79 74 65 4d 65 74 68 6f 64 29  rtualByteMethod)
2380: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
2390: 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20  t, jclass,.     
23a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b0: 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e     jmethodID, ..
23c0: 2e 29 3b 0a 20 20 20 20 6a 62 79 74 65 20 20 20  .);.    jbyte   
23d0: 20 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72      (*CallNonvir
23e0: 74 75 61 6c 42 79 74 65 4d 65 74 68 6f 64 56 29  tualByteMethodV)
23f0: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
2400: 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20  t, jclass,.     
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2420: 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61     jmethodID, va
2430: 5f 6c 69 73 74 29 3b 0a 20 20 20 20 6a 62 79 74  _list);.    jbyt
2440: 65 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f  e       (*CallNo
2450: 6e 76 69 72 74 75 61 6c 42 79 74 65 4d 65 74 68  nvirtualByteMeth
2460: 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  odA)(JNIEnv*, jo
2470: 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a 20  bject, jclass,. 
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2490: 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49 44         jmethodID
24a0: 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20 20 20  , jvalue*);.    
24b0: 6a 63 68 61 72 20 20 20 20 20 20 20 28 2a 43 61  jchar       (*Ca
24c0: 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 43 68 61 72  llNonvirtualChar
24d0: 4d 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c  Method)(JNIEnv*,
24e0: 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73   jobject, jclass
24f0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2500: 20 20 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f            jmetho
2510: 64 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a  dID, ...);.    j
2520: 63 68 61 72 20 20 20 20 20 20 20 28 2a 43 61 6c  char       (*Cal
2530: 6c 4e 6f 6e 76 69 72 74 75 61 6c 43 68 61 72 4d  lNonvirtualCharM
2540: 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c  ethodV)(JNIEnv*,
2550: 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73   jobject, jclass
2560: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2570: 20 20 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f            jmetho
2580: 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20  dID, va_list);. 
2590: 20 20 20 6a 63 68 61 72 20 20 20 20 20 20 20 28     jchar       (
25a0: 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 43  *CallNonvirtualC
25b0: 68 61 72 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45  harMethodA)(JNIE
25c0: 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63  nv*, jobject, jc
25d0: 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20  lass,.          
25e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6d                jm
25f0: 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a  ethodID, jvalue*
2600: 29 3b 0a 20 20 20 20 6a 73 68 6f 72 74 20 20 20  );.    jshort   
2610: 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74     (*CallNonvirt
2620: 75 61 6c 53 68 6f 72 74 4d 65 74 68 6f 64 29 28  ualShortMethod)(
2630: 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74  JNIEnv*, jobject
2640: 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20 20  , jclass,.      
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2660: 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e    jmethodID, ...
2670: 29 3b 0a 20 20 20 20 6a 73 68 6f 72 74 20 20 20  );.    jshort   
2680: 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74     (*CallNonvirt
2690: 75 61 6c 53 68 6f 72 74 4d 65 74 68 6f 64 56 29  ualShortMethodV)
26a0: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
26b0: 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20  t, jclass,.     
26c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d0: 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61     jmethodID, va
26e0: 5f 6c 69 73 74 29 3b 0a 20 20 20 20 6a 73 68 6f  _list);.    jsho
26f0: 72 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f  rt      (*CallNo
2700: 6e 76 69 72 74 75 61 6c 53 68 6f 72 74 4d 65 74  nvirtualShortMet
2710: 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  hodA)(JNIEnv*, j
2720: 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a  object, jclass,.
2730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2740: 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49          jmethodI
2750: 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20 20  D, jvalue*);.   
2760: 20 6a 69 6e 74 20 20 20 20 20 20 20 20 28 2a 43   jint        (*C
2770: 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 49 6e 74  allNonvirtualInt
2780: 4d 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c  Method)(JNIEnv*,
2790: 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73   jobject, jclass
27a0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
27b0: 20 20 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f            jmetho
27c0: 64 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a  dID, ...);.    j
27d0: 69 6e 74 20 20 20 20 20 20 20 20 28 2a 43 61 6c  int        (*Cal
27e0: 6c 4e 6f 6e 76 69 72 74 75 61 6c 49 6e 74 4d 65  lNonvirtualIntMe
27f0: 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c 20  thodV)(JNIEnv*, 
2800: 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c  jobject, jclass,
2810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2820: 20 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64           jmethod
2830: 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20  ID, va_list);.  
2840: 20 20 6a 69 6e 74 20 20 20 20 20 20 20 20 28 2a    jint        (*
2850: 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 49 6e  CallNonvirtualIn
2860: 74 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76  tMethodA)(JNIEnv
2870: 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c 61  *, jobject, jcla
2880: 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ss,.            
2890: 20 20 20 20 20 20 20 20 20 20 20 20 6a 6d 65 74              jmet
28a0: 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b  hodID, jvalue*);
28b0: 0a 20 20 20 20 6a 6c 6f 6e 67 20 20 20 20 20 20  .    jlong      
28c0: 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61   (*CallNonvirtua
28d0: 6c 4c 6f 6e 67 4d 65 74 68 6f 64 29 28 4a 4e 49  lLongMethod)(JNI
28e0: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a  Env*, jobject, j
28f0: 63 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20  class,.         
2900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
2910: 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a  methodID, ...);.
2920: 20 20 20 20 6a 6c 6f 6e 67 20 20 20 20 20 20 20      jlong       
2930: 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c  (*CallNonvirtual
2940: 4c 6f 6e 67 4d 65 74 68 6f 64 56 29 28 4a 4e 49  LongMethodV)(JNI
2950: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a  Env*, jobject, j
2960: 63 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20  class,.         
2970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
2980: 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73  methodID, va_lis
2990: 74 29 3b 0a 20 20 20 20 6a 6c 6f 6e 67 20 20 20  t);.    jlong   
29a0: 20 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72      (*CallNonvir
29b0: 74 75 61 6c 4c 6f 6e 67 4d 65 74 68 6f 64 41 29  tualLongMethodA)
29c0: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
29d0: 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20  t, jclass,.     
29e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f0: 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76     jmethodID, jv
2a00: 61 6c 75 65 2a 29 3b 0a 20 20 20 20 6a 66 6c 6f  alue*);.    jflo
2a10: 61 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f  at      (*CallNo
2a20: 6e 76 69 72 74 75 61 6c 46 6c 6f 61 74 4d 65 74  nvirtualFloatMet
2a30: 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  hod)(JNIEnv*, jo
2a40: 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a 20  bject, jclass,. 
2a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a60: 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49 44         jmethodID
2a70: 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 66 6c 6f  , ...);.    jflo
2a80: 61 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 4e 6f  at      (*CallNo
2a90: 6e 76 69 72 74 75 61 6c 46 6c 6f 61 74 4d 65 74  nvirtualFloatMet
2aa0: 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  hodV)(JNIEnv*, j
2ab0: 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73 2c 0a  object, jclass,.
2ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad0: 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49          jmethodI
2ae0: 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20 20  D, va_list);.   
2af0: 20 6a 66 6c 6f 61 74 20 20 20 20 20 20 28 2a 43   jfloat      (*C
2b00: 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 46 6c 6f  allNonvirtualFlo
2b10: 61 74 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e  atMethodA)(JNIEn
2b20: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c  v*, jobject, jcl
2b30: 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ass,.           
2b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6d 65               jme
2b50: 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29  thodID, jvalue*)
2b60: 3b 0a 20 20 20 20 6a 64 6f 75 62 6c 65 20 20 20  ;.    jdouble   
2b70: 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74 75    (*CallNonvirtu
2b80: 61 6c 44 6f 75 62 6c 65 4d 65 74 68 6f 64 29 28  alDoubleMethod)(
2b90: 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74  JNIEnv*, jobject
2ba0: 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20 20  , jclass,.      
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc0: 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e    jmethodID, ...
2bd0: 29 3b 0a 20 20 20 20 6a 64 6f 75 62 6c 65 20 20  );.    jdouble  
2be0: 20 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74     (*CallNonvirt
2bf0: 75 61 6c 44 6f 75 62 6c 65 4d 65 74 68 6f 64 56  ualDoubleMethodV
2c00: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
2c10: 63 74 2c 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20  ct, jclass,.    
2c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c30: 20 20 20 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76      jmethodID, v
2c40: 61 5f 6c 69 73 74 29 3b 0a 20 20 20 20 6a 64 6f  a_list);.    jdo
2c50: 75 62 6c 65 20 20 20 20 20 28 2a 43 61 6c 6c 4e  uble     (*CallN
2c60: 6f 6e 76 69 72 74 75 61 6c 44 6f 75 62 6c 65 4d  onvirtualDoubleM
2c70: 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c  ethodA)(JNIEnv*,
2c80: 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c 61 73 73   jobject, jclass
2c90: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2ca0: 20 20 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f            jmetho
2cb0: 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20  dID, jvalue*);. 
2cc0: 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28     void        (
2cd0: 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 56  *CallNonvirtualV
2ce0: 6f 69 64 4d 65 74 68 6f 64 29 28 4a 4e 49 45 6e  oidMethod)(JNIEn
2cf0: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c  v*, jobject, jcl
2d00: 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ass,.           
2d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6d 65               jme
2d20: 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20  thodID, ...);.  
2d30: 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a    void        (*
2d40: 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 56 6f  CallNonvirtualVo
2d50: 69 64 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e  idMethodV)(JNIEn
2d60: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 63 6c  v*, jobject, jcl
2d70: 61 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ass,.           
2d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6d 65               jme
2d90: 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 29  thodID, va_list)
2da0: 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20  ;.    void      
2db0: 20 20 28 2a 43 61 6c 6c 4e 6f 6e 76 69 72 74 75    (*CallNonvirtu
2dc0: 61 6c 56 6f 69 64 4d 65 74 68 6f 64 41 29 28 4a  alVoidMethodA)(J
2dd0: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c  NIEnv*, jobject,
2de0: 20 6a 63 6c 61 73 73 2c 0a 20 20 20 20 20 20 20   jclass,.       
2df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e00: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c   jmethodID, jval
2e10: 75 65 2a 29 3b 0a 0a 20 20 20 20 6a 66 69 65 6c  ue*);..    jfiel
2e20: 64 49 44 20 20 20 20 28 2a 47 65 74 46 69 65 6c  dID    (*GetFiel
2e30: 64 49 44 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63  dID)(JNIEnv*, jc
2e40: 6c 61 73 73 2c 20 63 6f 6e 73 74 20 63 68 61 72  lass, const char
2e50: 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 29 3b  *, const char*);
2e60: 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 20 20  ..    jobject   
2e70: 20 20 28 2a 47 65 74 4f 62 6a 65 63 74 46 69 65    (*GetObjectFie
2e80: 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62  ld)(JNIEnv*, job
2e90: 6a 65 63 74 2c 20 6a 66 69 65 6c 64 49 44 29 3b  ject, jfieldID);
2ea0: 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20 20 20  .    jboolean   
2eb0: 20 28 2a 47 65 74 42 6f 6f 6c 65 61 6e 46 69 65   (*GetBooleanFie
2ec0: 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62  ld)(JNIEnv*, job
2ed0: 6a 65 63 74 2c 20 6a 66 69 65 6c 64 49 44 29 3b  ject, jfieldID);
2ee0: 0a 20 20 20 20 6a 62 79 74 65 20 20 20 20 20 20  .    jbyte      
2ef0: 20 28 2a 47 65 74 42 79 74 65 46 69 65 6c 64 29   (*GetByteField)
2f00: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
2f10: 74 2c 20 6a 66 69 65 6c 64 49 44 29 3b 0a 20 20  t, jfieldID);.  
2f20: 20 20 6a 63 68 61 72 20 20 20 20 20 20 20 28 2a    jchar       (*
2f30: 47 65 74 43 68 61 72 46 69 65 6c 64 29 28 4a 4e  GetCharField)(JN
2f40: 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20  IEnv*, jobject, 
2f50: 6a 66 69 65 6c 64 49 44 29 3b 0a 20 20 20 20 6a  jfieldID);.    j
2f60: 73 68 6f 72 74 20 20 20 20 20 20 28 2a 47 65 74  short      (*Get
2f70: 53 68 6f 72 74 46 69 65 6c 64 29 28 4a 4e 49 45  ShortField)(JNIE
2f80: 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 66  nv*, jobject, jf
2f90: 69 65 6c 64 49 44 29 3b 0a 20 20 20 20 6a 69 6e  ieldID);.    jin
2fa0: 74 20 20 20 20 20 20 20 20 28 2a 47 65 74 49 6e  t        (*GetIn
2fb0: 74 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c  tField)(JNIEnv*,
2fc0: 20 6a 6f 62 6a 65 63 74 2c 20 6a 66 69 65 6c 64   jobject, jfield
2fd0: 49 44 29 3b 0a 20 20 20 20 6a 6c 6f 6e 67 20 20  ID);.    jlong  
2fe0: 20 20 20 20 20 28 2a 47 65 74 4c 6f 6e 67 46 69       (*GetLongFi
2ff0: 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f  eld)(JNIEnv*, jo
3000: 62 6a 65 63 74 2c 20 6a 66 69 65 6c 64 49 44 29  bject, jfieldID)
3010: 3b 0a 20 20 20 20 6a 66 6c 6f 61 74 20 20 20 20  ;.    jfloat    
3020: 20 20 28 2a 47 65 74 46 6c 6f 61 74 46 69 65 6c    (*GetFloatFiel
3030: 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a  d)(JNIEnv*, jobj
3040: 65 63 74 2c 20 6a 66 69 65 6c 64 49 44 29 3b 0a  ect, jfieldID);.
3050: 20 20 20 20 6a 64 6f 75 62 6c 65 20 20 20 20 20      jdouble     
3060: 28 2a 47 65 74 44 6f 75 62 6c 65 46 69 65 6c 64  (*GetDoubleField
3070: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
3080: 63 74 2c 20 6a 66 69 65 6c 64 49 44 29 3b 0a 0a  ct, jfieldID);..
3090: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
30a0: 28 2a 53 65 74 4f 62 6a 65 63 74 46 69 65 6c 64  (*SetObjectField
30b0: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
30c0: 63 74 2c 20 6a 66 69 65 6c 64 49 44 2c 20 6a 6f  ct, jfieldID, jo
30d0: 62 6a 65 63 74 29 3b 0a 20 20 20 20 76 6f 69 64  bject);.    void
30e0: 20 20 20 20 20 20 20 20 28 2a 53 65 74 42 6f 6f          (*SetBoo
30f0: 6c 65 61 6e 46 69 65 6c 64 29 28 4a 4e 49 45 6e  leanField)(JNIEn
3100: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 66 69  v*, jobject, jfi
3110: 65 6c 64 49 44 2c 20 6a 62 6f 6f 6c 65 61 6e 29  eldID, jboolean)
3120: 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20  ;.    void      
3130: 20 20 28 2a 53 65 74 42 79 74 65 46 69 65 6c 64    (*SetByteField
3140: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
3150: 63 74 2c 20 6a 66 69 65 6c 64 49 44 2c 20 6a 62  ct, jfieldID, jb
3160: 79 74 65 29 3b 0a 20 20 20 20 76 6f 69 64 20 20  yte);.    void  
3170: 20 20 20 20 20 20 28 2a 53 65 74 43 68 61 72 46        (*SetCharF
3180: 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  ield)(JNIEnv*, j
3190: 6f 62 6a 65 63 74 2c 20 6a 66 69 65 6c 64 49 44  object, jfieldID
31a0: 2c 20 6a 63 68 61 72 29 3b 0a 20 20 20 20 76 6f  , jchar);.    vo
31b0: 69 64 20 20 20 20 20 20 20 20 28 2a 53 65 74 53  id        (*SetS
31c0: 68 6f 72 74 46 69 65 6c 64 29 28 4a 4e 49 45 6e  hortField)(JNIEn
31d0: 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20 6a 66 69  v*, jobject, jfi
31e0: 65 6c 64 49 44 2c 20 6a 73 68 6f 72 74 29 3b 0a  eldID, jshort);.
31f0: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
3200: 28 2a 53 65 74 49 6e 74 46 69 65 6c 64 29 28 4a  (*SetIntField)(J
3210: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c  NIEnv*, jobject,
3220: 20 6a 66 69 65 6c 64 49 44 2c 20 6a 69 6e 74 29   jfieldID, jint)
3230: 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20  ;.    void      
3240: 20 20 28 2a 53 65 74 4c 6f 6e 67 46 69 65 6c 64    (*SetLongField
3250: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65  )(JNIEnv*, jobje
3260: 63 74 2c 20 6a 66 69 65 6c 64 49 44 2c 20 6a 6c  ct, jfieldID, jl
3270: 6f 6e 67 29 3b 0a 20 20 20 20 76 6f 69 64 20 20  ong);.    void  
3280: 20 20 20 20 20 20 28 2a 53 65 74 46 6c 6f 61 74        (*SetFloat
3290: 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20  Field)(JNIEnv*, 
32a0: 6a 6f 62 6a 65 63 74 2c 20 6a 66 69 65 6c 64 49  jobject, jfieldI
32b0: 44 2c 20 6a 66 6c 6f 61 74 29 3b 0a 20 20 20 20  D, jfloat);.    
32c0: 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 53 65  void        (*Se
32d0: 74 44 6f 75 62 6c 65 46 69 65 6c 64 29 28 4a 4e  tDoubleField)(JN
32e0: 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 2c 20  IEnv*, jobject, 
32f0: 6a 66 69 65 6c 64 49 44 2c 20 6a 64 6f 75 62 6c  jfieldID, jdoubl
3300: 65 29 3b 0a 0a 20 20 20 20 6a 6d 65 74 68 6f 64  e);..    jmethod
3310: 49 44 20 20 20 28 2a 47 65 74 53 74 61 74 69 63  ID   (*GetStatic
3320: 4d 65 74 68 6f 64 49 44 29 28 4a 4e 49 45 6e 76  MethodID)(JNIEnv
3330: 2a 2c 20 6a 63 6c 61 73 73 2c 20 63 6f 6e 73 74  *, jclass, const
3340: 20 63 68 61 72 2a 2c 20 63 6f 6e 73 74 20 63 68   char*, const ch
3350: 61 72 2a 29 3b 0a 0a 20 20 20 20 6a 6f 62 6a 65  ar*);..    jobje
3360: 63 74 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61  ct     (*CallSta
3370: 74 69 63 4f 62 6a 65 63 74 4d 65 74 68 6f 64 29  ticObjectMethod)
3380: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73  (JNIEnv*, jclass
3390: 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e  , jmethodID, ...
33a0: 29 3b 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 20  );.    jobject  
33b0: 20 20 20 28 2a 43 61 6c 6c 53 74 61 74 69 63 4f     (*CallStaticO
33c0: 62 6a 65 63 74 4d 65 74 68 6f 64 56 29 28 4a 4e  bjectMethodV)(JN
33d0: 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a  IEnv*, jclass, j
33e0: 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73  methodID, va_lis
33f0: 74 29 3b 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20  t);.    jobject 
3400: 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74 69 63      (*CallStatic
3410: 4f 62 6a 65 63 74 4d 65 74 68 6f 64 41 29 28 4a  ObjectMethodA)(J
3420: 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20  NIEnv*, jclass, 
3430: 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75  jmethodID, jvalu
3440: 65 2a 29 3b 0a 20 20 20 20 6a 62 6f 6f 6c 65 61  e*);.    jboolea
3450: 6e 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74 69  n    (*CallStati
3460: 63 42 6f 6f 6c 65 61 6e 4d 65 74 68 6f 64 29 28  cBooleanMethod)(
3470: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
3480: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29   jmethodID, ...)
3490: 3b 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20 20  ;.    jboolean  
34a0: 20 20 28 2a 43 61 6c 6c 53 74 61 74 69 63 42 6f    (*CallStaticBo
34b0: 6f 6c 65 61 6e 4d 65 74 68 6f 64 56 29 28 4a 4e  oleanMethodV)(JN
34c0: 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a  IEnv*, jclass, j
34d0: 6d 65 74 68 6f 64 49 44 2c 0a 20 20 20 20 20 20  methodID,.      
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34f0: 20 20 76 61 5f 6c 69 73 74 29 3b 0a 20 20 20 20    va_list);.    
3500: 6a 62 6f 6f 6c 65 61 6e 20 20 20 20 28 2a 43 61  jboolean    (*Ca
3510: 6c 6c 53 74 61 74 69 63 42 6f 6f 6c 65 61 6e 4d  llStaticBooleanM
3520: 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c  ethodA)(JNIEnv*,
3530: 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f 64   jclass, jmethod
3540: 49 44 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ID,.            
3550: 20 20 20 20 20 20 20 20 20 20 20 20 6a 76 61 6c              jval
3560: 75 65 2a 29 3b 0a 20 20 20 20 6a 62 79 74 65 20  ue*);.    jbyte 
3570: 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74        (*CallStat
3580: 69 63 42 79 74 65 4d 65 74 68 6f 64 29 28 4a 4e  icByteMethod)(JN
3590: 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a  IEnv*, jclass, j
35a0: 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a  methodID, ...);.
35b0: 20 20 20 20 6a 62 79 74 65 20 20 20 20 20 20 20      jbyte       
35c0: 28 2a 43 61 6c 6c 53 74 61 74 69 63 42 79 74 65  (*CallStaticByte
35d0: 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a  MethodV)(JNIEnv*
35e0: 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f  , jclass, jmetho
35f0: 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20  dID, va_list);. 
3600: 20 20 20 6a 62 79 74 65 20 20 20 20 20 20 20 28     jbyte       (
3610: 2a 43 61 6c 6c 53 74 61 74 69 63 42 79 74 65 4d  *CallStaticByteM
3620: 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c  ethodA)(JNIEnv*,
3630: 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f 64   jclass, jmethod
3640: 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20  ID, jvalue*);.  
3650: 20 20 6a 63 68 61 72 20 20 20 20 20 20 20 28 2a    jchar       (*
3660: 43 61 6c 6c 53 74 61 74 69 63 43 68 61 72 4d 65  CallStaticCharMe
3670: 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  thod)(JNIEnv*, j
3680: 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f 64 49 44  class, jmethodID
3690: 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 63 68 61  , ...);.    jcha
36a0: 72 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74  r       (*CallSt
36b0: 61 74 69 63 43 68 61 72 4d 65 74 68 6f 64 56 29  aticCharMethodV)
36c0: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73  (JNIEnv*, jclass
36d0: 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f  , jmethodID, va_
36e0: 6c 69 73 74 29 3b 0a 20 20 20 20 6a 63 68 61 72  list);.    jchar
36f0: 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61         (*CallSta
3700: 74 69 63 43 68 61 72 4d 65 74 68 6f 64 41 29 28  ticCharMethodA)(
3710: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
3720: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c   jmethodID, jval
3730: 75 65 2a 29 3b 0a 20 20 20 20 6a 73 68 6f 72 74  ue*);.    jshort
3740: 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74        (*CallStat
3750: 69 63 53 68 6f 72 74 4d 65 74 68 6f 64 29 28 4a  icShortMethod)(J
3760: 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20  NIEnv*, jclass, 
3770: 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b  jmethodID, ...);
3780: 0a 20 20 20 20 6a 73 68 6f 72 74 20 20 20 20 20  .    jshort     
3790: 20 28 2a 43 61 6c 6c 53 74 61 74 69 63 53 68 6f   (*CallStaticSho
37a0: 72 74 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e  rtMethodV)(JNIEn
37b0: 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74  v*, jclass, jmet
37c0: 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b  hodID, va_list);
37d0: 0a 20 20 20 20 6a 73 68 6f 72 74 20 20 20 20 20  .    jshort     
37e0: 20 28 2a 43 61 6c 6c 53 74 61 74 69 63 53 68 6f   (*CallStaticSho
37f0: 72 74 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e  rtMethodA)(JNIEn
3800: 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74  v*, jclass, jmet
3810: 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b  hodID, jvalue*);
3820: 0a 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20 20  .    jint       
3830: 20 28 2a 43 61 6c 6c 53 74 61 74 69 63 49 6e 74   (*CallStaticInt
3840: 4d 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c  Method)(JNIEnv*,
3850: 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f 64   jclass, jmethod
3860: 49 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 69  ID, ...);.    ji
3870: 6e 74 20 20 20 20 20 20 20 20 28 2a 43 61 6c 6c  nt        (*Call
3880: 53 74 61 74 69 63 49 6e 74 4d 65 74 68 6f 64 56  StaticIntMethodV
3890: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73  )(JNIEnv*, jclas
38a0: 73 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61  s, jmethodID, va
38b0: 5f 6c 69 73 74 29 3b 0a 20 20 20 20 6a 69 6e 74  _list);.    jint
38c0: 20 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74          (*CallSt
38d0: 61 74 69 63 49 6e 74 4d 65 74 68 6f 64 41 29 28  aticIntMethodA)(
38e0: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
38f0: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c   jmethodID, jval
3900: 75 65 2a 29 3b 0a 20 20 20 20 6a 6c 6f 6e 67 20  ue*);.    jlong 
3910: 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74        (*CallStat
3920: 69 63 4c 6f 6e 67 4d 65 74 68 6f 64 29 28 4a 4e  icLongMethod)(JN
3930: 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a  IEnv*, jclass, j
3940: 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b 0a  methodID, ...);.
3950: 20 20 20 20 6a 6c 6f 6e 67 20 20 20 20 20 20 20      jlong       
3960: 28 2a 43 61 6c 6c 53 74 61 74 69 63 4c 6f 6e 67  (*CallStaticLong
3970: 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76 2a  MethodV)(JNIEnv*
3980: 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f  , jclass, jmetho
3990: 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 20  dID, va_list);. 
39a0: 20 20 20 6a 6c 6f 6e 67 20 20 20 20 20 20 20 28     jlong       (
39b0: 2a 43 61 6c 6c 53 74 61 74 69 63 4c 6f 6e 67 4d  *CallStaticLongM
39c0: 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a 2c  ethodA)(JNIEnv*,
39d0: 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f 64   jclass, jmethod
39e0: 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 20 20  ID, jvalue*);.  
39f0: 20 20 6a 66 6c 6f 61 74 20 20 20 20 20 20 28 2a    jfloat      (*
3a00: 43 61 6c 6c 53 74 61 74 69 63 46 6c 6f 61 74 4d  CallStaticFloatM
3a10: 65 74 68 6f 64 29 28 4a 4e 49 45 6e 76 2a 2c 20  ethod)(JNIEnv*, 
3a20: 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f 64 49  jclass, jmethodI
3a30: 44 2c 20 2e 2e 2e 29 3b 0a 20 20 20 20 6a 66 6c  D, ...);.    jfl
3a40: 6f 61 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 53  oat      (*CallS
3a50: 74 61 74 69 63 46 6c 6f 61 74 4d 65 74 68 6f 64  taticFloatMethod
3a60: 56 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61  V)(JNIEnv*, jcla
3a70: 73 73 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76  ss, jmethodID, v
3a80: 61 5f 6c 69 73 74 29 3b 0a 20 20 20 20 6a 66 6c  a_list);.    jfl
3a90: 6f 61 74 20 20 20 20 20 20 28 2a 43 61 6c 6c 53  oat      (*CallS
3aa0: 74 61 74 69 63 46 6c 6f 61 74 4d 65 74 68 6f 64  taticFloatMethod
3ab0: 41 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61  A)(JNIEnv*, jcla
3ac0: 73 73 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a  ss, jmethodID, j
3ad0: 76 61 6c 75 65 2a 29 3b 0a 20 20 20 20 6a 64 6f  value*);.    jdo
3ae0: 75 62 6c 65 20 20 20 20 20 28 2a 43 61 6c 6c 53  uble     (*CallS
3af0: 74 61 74 69 63 44 6f 75 62 6c 65 4d 65 74 68 6f  taticDoubleMetho
3b00: 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61  d)(JNIEnv*, jcla
3b10: 73 73 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 2e  ss, jmethodID, .
3b20: 2e 2e 29 3b 0a 20 20 20 20 6a 64 6f 75 62 6c 65  ..);.    jdouble
3b30: 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74 69       (*CallStati
3b40: 63 44 6f 75 62 6c 65 4d 65 74 68 6f 64 56 29 28  cDoubleMethodV)(
3b50: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
3b60: 20 6a 6d 65 74 68 6f 64 49 44 2c 20 76 61 5f 6c   jmethodID, va_l
3b70: 69 73 74 29 3b 0a 20 20 20 20 6a 64 6f 75 62 6c  ist);.    jdoubl
3b80: 65 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61 74  e     (*CallStat
3b90: 69 63 44 6f 75 62 6c 65 4d 65 74 68 6f 64 41 29  icDoubleMethodA)
3ba0: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73  (JNIEnv*, jclass
3bb0: 2c 20 6a 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61  , jmethodID, jva
3bc0: 6c 75 65 2a 29 3b 0a 20 20 20 20 76 6f 69 64 20  lue*);.    void 
3bd0: 20 20 20 20 20 20 20 28 2a 43 61 6c 6c 53 74 61         (*CallSta
3be0: 74 69 63 56 6f 69 64 4d 65 74 68 6f 64 29 28 4a  ticVoidMethod)(J
3bf0: 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20  NIEnv*, jclass, 
3c00: 6a 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 3b  jmethodID, ...);
3c10: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
3c20: 20 28 2a 43 61 6c 6c 53 74 61 74 69 63 56 6f 69   (*CallStaticVoi
3c30: 64 4d 65 74 68 6f 64 56 29 28 4a 4e 49 45 6e 76  dMethodV)(JNIEnv
3c40: 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68  *, jclass, jmeth
3c50: 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 29 3b 0a  odID, va_list);.
3c60: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
3c70: 28 2a 43 61 6c 6c 53 74 61 74 69 63 56 6f 69 64  (*CallStaticVoid
3c80: 4d 65 74 68 6f 64 41 29 28 4a 4e 49 45 6e 76 2a  MethodA)(JNIEnv*
3c90: 2c 20 6a 63 6c 61 73 73 2c 20 6a 6d 65 74 68 6f  , jclass, jmetho
3ca0: 64 49 44 2c 20 6a 76 61 6c 75 65 2a 29 3b 0a 0a  dID, jvalue*);..
3cb0: 20 20 20 20 6a 66 69 65 6c 64 49 44 20 20 20 20      jfieldID    
3cc0: 28 2a 47 65 74 53 74 61 74 69 63 46 69 65 6c 64  (*GetStaticField
3cd0: 49 44 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c  ID)(JNIEnv*, jcl
3ce0: 61 73 73 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a  ass, const char*
3cf0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
3d00: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20            const 
3d10: 63 68 61 72 2a 29 3b 0a 0a 20 20 20 20 6a 6f 62  char*);..    job
3d20: 6a 65 63 74 20 20 20 20 20 28 2a 47 65 74 53 74  ject     (*GetSt
3d30: 61 74 69 63 4f 62 6a 65 63 74 46 69 65 6c 64 29  aticObjectField)
3d40: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73  (JNIEnv*, jclass
3d50: 2c 20 6a 66 69 65 6c 64 49 44 29 3b 0a 20 20 20  , jfieldID);.   
3d60: 20 6a 62 6f 6f 6c 65 61 6e 20 20 20 20 28 2a 47   jboolean    (*G
3d70: 65 74 53 74 61 74 69 63 42 6f 6f 6c 65 61 6e 46  etStaticBooleanF
3d80: 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  ield)(JNIEnv*, j
3d90: 63 6c 61 73 73 2c 20 6a 66 69 65 6c 64 49 44 29  class, jfieldID)
3da0: 3b 0a 20 20 20 20 6a 62 79 74 65 20 20 20 20 20  ;.    jbyte     
3db0: 20 20 28 2a 47 65 74 53 74 61 74 69 63 42 79 74    (*GetStaticByt
3dc0: 65 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c  eField)(JNIEnv*,
3dd0: 20 6a 63 6c 61 73 73 2c 20 6a 66 69 65 6c 64 49   jclass, jfieldI
3de0: 44 29 3b 0a 20 20 20 20 6a 63 68 61 72 20 20 20  D);.    jchar   
3df0: 20 20 20 20 28 2a 47 65 74 53 74 61 74 69 63 43      (*GetStaticC
3e00: 68 61 72 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76  harField)(JNIEnv
3e10: 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 66 69 65 6c  *, jclass, jfiel
3e20: 64 49 44 29 3b 0a 20 20 20 20 6a 73 68 6f 72 74  dID);.    jshort
3e30: 20 20 20 20 20 20 28 2a 47 65 74 53 74 61 74 69        (*GetStati
3e40: 63 53 68 6f 72 74 46 69 65 6c 64 29 28 4a 4e 49  cShortField)(JNI
3e50: 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 66  Env*, jclass, jf
3e60: 69 65 6c 64 49 44 29 3b 0a 20 20 20 20 6a 69 6e  ieldID);.    jin
3e70: 74 20 20 20 20 20 20 20 20 28 2a 47 65 74 53 74  t        (*GetSt
3e80: 61 74 69 63 49 6e 74 46 69 65 6c 64 29 28 4a 4e  aticIntField)(JN
3e90: 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a  IEnv*, jclass, j
3ea0: 66 69 65 6c 64 49 44 29 3b 0a 20 20 20 20 6a 6c  fieldID);.    jl
3eb0: 6f 6e 67 20 20 20 20 20 20 20 28 2a 47 65 74 53  ong       (*GetS
3ec0: 74 61 74 69 63 4c 6f 6e 67 46 69 65 6c 64 29 28  taticLongField)(
3ed0: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
3ee0: 20 6a 66 69 65 6c 64 49 44 29 3b 0a 20 20 20 20   jfieldID);.    
3ef0: 6a 66 6c 6f 61 74 20 20 20 20 20 20 28 2a 47 65  jfloat      (*Ge
3f00: 74 53 74 61 74 69 63 46 6c 6f 61 74 46 69 65 6c  tStaticFloatFiel
3f10: 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61  d)(JNIEnv*, jcla
3f20: 73 73 2c 20 6a 66 69 65 6c 64 49 44 29 3b 0a 20  ss, jfieldID);. 
3f30: 20 20 20 6a 64 6f 75 62 6c 65 20 20 20 20 20 28     jdouble     (
3f40: 2a 47 65 74 53 74 61 74 69 63 44 6f 75 62 6c 65  *GetStaticDouble
3f50: 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20  Field)(JNIEnv*, 
3f60: 6a 63 6c 61 73 73 2c 20 6a 66 69 65 6c 64 49 44  jclass, jfieldID
3f70: 29 3b 0a 0a 20 20 20 20 76 6f 69 64 20 20 20 20  );..    void    
3f80: 20 20 20 20 28 2a 53 65 74 53 74 61 74 69 63 4f      (*SetStaticO
3f90: 62 6a 65 63 74 46 69 65 6c 64 29 28 4a 4e 49 45  bjectField)(JNIE
3fa0: 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 66 69  nv*, jclass, jfi
3fb0: 65 6c 64 49 44 2c 20 6a 6f 62 6a 65 63 74 29 3b  eldID, jobject);
3fc0: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
3fd0: 20 28 2a 53 65 74 53 74 61 74 69 63 42 6f 6f 6c   (*SetStaticBool
3fe0: 65 61 6e 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76  eanField)(JNIEnv
3ff0: 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 66 69 65 6c  *, jclass, jfiel
4000: 64 49 44 2c 20 6a 62 6f 6f 6c 65 61 6e 29 3b 0a  dID, jboolean);.
4010: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
4020: 28 2a 53 65 74 53 74 61 74 69 63 42 79 74 65 46  (*SetStaticByteF
4030: 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  ield)(JNIEnv*, j
4040: 63 6c 61 73 73 2c 20 6a 66 69 65 6c 64 49 44 2c  class, jfieldID,
4050: 20 6a 62 79 74 65 29 3b 0a 20 20 20 20 76 6f 69   jbyte);.    voi
4060: 64 20 20 20 20 20 20 20 20 28 2a 53 65 74 53 74  d        (*SetSt
4070: 61 74 69 63 43 68 61 72 46 69 65 6c 64 29 28 4a  aticCharField)(J
4080: 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20  NIEnv*, jclass, 
4090: 6a 66 69 65 6c 64 49 44 2c 20 6a 63 68 61 72 29  jfieldID, jchar)
40a0: 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20  ;.    void      
40b0: 20 20 28 2a 53 65 74 53 74 61 74 69 63 53 68 6f    (*SetStaticSho
40c0: 72 74 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76 2a  rtField)(JNIEnv*
40d0: 2c 20 6a 63 6c 61 73 73 2c 20 6a 66 69 65 6c 64  , jclass, jfield
40e0: 49 44 2c 20 6a 73 68 6f 72 74 29 3b 0a 20 20 20  ID, jshort);.   
40f0: 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 53   void        (*S
4100: 65 74 53 74 61 74 69 63 49 6e 74 46 69 65 6c 64  etStaticIntField
4110: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73  )(JNIEnv*, jclas
4120: 73 2c 20 6a 66 69 65 6c 64 49 44 2c 20 6a 69 6e  s, jfieldID, jin
4130: 74 29 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20  t);.    void    
4140: 20 20 20 20 28 2a 53 65 74 53 74 61 74 69 63 4c      (*SetStaticL
4150: 6f 6e 67 46 69 65 6c 64 29 28 4a 4e 49 45 6e 76  ongField)(JNIEnv
4160: 2a 2c 20 6a 63 6c 61 73 73 2c 20 6a 66 69 65 6c  *, jclass, jfiel
4170: 64 49 44 2c 20 6a 6c 6f 6e 67 29 3b 0a 20 20 20  dID, jlong);.   
4180: 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 53   void        (*S
4190: 65 74 53 74 61 74 69 63 46 6c 6f 61 74 46 69 65  etStaticFloatFie
41a0: 6c 64 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c  ld)(JNIEnv*, jcl
41b0: 61 73 73 2c 20 6a 66 69 65 6c 64 49 44 2c 20 6a  ass, jfieldID, j
41c0: 66 6c 6f 61 74 29 3b 0a 20 20 20 20 76 6f 69 64  float);.    void
41d0: 20 20 20 20 20 20 20 20 28 2a 53 65 74 53 74 61          (*SetSta
41e0: 74 69 63 44 6f 75 62 6c 65 46 69 65 6c 64 29 28  ticDoubleField)(
41f0: 4a 4e 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c  JNIEnv*, jclass,
4200: 20 6a 66 69 65 6c 64 49 44 2c 20 6a 64 6f 75 62   jfieldID, jdoub
4210: 6c 65 29 3b 0a 0a 20 20 20 20 6a 73 74 72 69 6e  le);..    jstrin
4220: 67 20 20 20 20 20 28 2a 4e 65 77 53 74 72 69 6e  g     (*NewStrin
4230: 67 29 28 4a 4e 49 45 6e 76 2a 2c 20 63 6f 6e 73  g)(JNIEnv*, cons
4240: 74 20 6a 63 68 61 72 2a 2c 20 6a 73 69 7a 65 29  t jchar*, jsize)
4250: 3b 0a 20 20 20 20 6a 73 69 7a 65 20 20 20 20 20  ;.    jsize     
4260: 20 20 28 2a 47 65 74 53 74 72 69 6e 67 4c 65 6e    (*GetStringLen
4270: 67 74 68 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 73  gth)(JNIEnv*, js
4280: 74 72 69 6e 67 29 3b 0a 20 20 20 20 63 6f 6e 73  tring);.    cons
4290: 74 20 6a 63 68 61 72 2a 20 28 2a 47 65 74 53 74  t jchar* (*GetSt
42a0: 72 69 6e 67 43 68 61 72 73 29 28 4a 4e 49 45 6e  ringChars)(JNIEn
42b0: 76 2a 2c 20 6a 73 74 72 69 6e 67 2c 20 6a 62 6f  v*, jstring, jbo
42c0: 6f 6c 65 61 6e 2a 29 3b 0a 20 20 20 20 76 6f 69  olean*);.    voi
42d0: 64 20 20 20 20 20 20 20 20 28 2a 52 65 6c 65 61  d        (*Relea
42e0: 73 65 53 74 72 69 6e 67 43 68 61 72 73 29 28 4a  seStringChars)(J
42f0: 4e 49 45 6e 76 2a 2c 20 6a 73 74 72 69 6e 67 2c  NIEnv*, jstring,
4300: 20 63 6f 6e 73 74 20 6a 63 68 61 72 2a 29 3b 0a   const jchar*);.
4310: 20 20 20 20 6a 73 74 72 69 6e 67 20 20 20 20 20      jstring     
4320: 28 2a 4e 65 77 53 74 72 69 6e 67 55 54 46 29 28  (*NewStringUTF)(
4330: 4a 4e 49 45 6e 76 2a 2c 20 63 6f 6e 73 74 20 63  JNIEnv*, const c
4340: 68 61 72 2a 29 3b 0a 20 20 20 20 6a 73 69 7a 65  har*);.    jsize
4350: 20 20 20 20 20 20 20 28 2a 47 65 74 53 74 72 69         (*GetStri
4360: 6e 67 55 54 46 4c 65 6e 67 74 68 29 28 4a 4e 49  ngUTFLength)(JNI
4370: 45 6e 76 2a 2c 20 6a 73 74 72 69 6e 67 29 3b 0a  Env*, jstring);.
4380: 20 20 20 20 2f 2a 20 4a 4e 49 20 73 70 65 63 20      /* JNI spec 
4390: 73 61 79 73 20 74 68 69 73 20 72 65 74 75 72 6e  says this return
43a0: 73 20 63 6f 6e 73 74 20 6a 62 79 74 65 2a 2c 20  s const jbyte*, 
43b0: 62 75 74 20 74 68 61 74 27 73 20 69 6e 63 6f 6e  but that's incon
43c0: 73 69 73 74 65 6e 74 20 2a 2f 0a 20 20 20 20 63  sistent */.    c
43d0: 6f 6e 73 74 20 63 68 61 72 2a 20 28 2a 47 65 74  onst char* (*Get
43e0: 53 74 72 69 6e 67 55 54 46 43 68 61 72 73 29 28  StringUTFChars)(
43f0: 4a 4e 49 45 6e 76 2a 2c 20 6a 73 74 72 69 6e 67  JNIEnv*, jstring
4400: 2c 20 6a 62 6f 6f 6c 65 61 6e 2a 29 3b 0a 20 20  , jboolean*);.  
4410: 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a    void        (*
4420: 52 65 6c 65 61 73 65 53 74 72 69 6e 67 55 54 46  ReleaseStringUTF
4430: 43 68 61 72 73 29 28 4a 4e 49 45 6e 76 2a 2c 20  Chars)(JNIEnv*, 
4440: 6a 73 74 72 69 6e 67 2c 20 63 6f 6e 73 74 20 63  jstring, const c
4450: 68 61 72 2a 29 3b 0a 20 20 20 20 6a 73 69 7a 65  har*);.    jsize
4460: 20 20 20 20 20 20 20 28 2a 47 65 74 41 72 72 61         (*GetArra
4470: 79 4c 65 6e 67 74 68 29 28 4a 4e 49 45 6e 76 2a  yLength)(JNIEnv*
4480: 2c 20 6a 61 72 72 61 79 29 3b 0a 20 20 20 20 6a  , jarray);.    j
4490: 6f 62 6a 65 63 74 41 72 72 61 79 20 28 2a 4e 65  objectArray (*Ne
44a0: 77 4f 62 6a 65 63 74 41 72 72 61 79 29 28 4a 4e  wObjectArray)(JN
44b0: 49 45 6e 76 2a 2c 20 6a 73 69 7a 65 2c 20 6a 63  IEnv*, jsize, jc
44c0: 6c 61 73 73 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a  lass, jobject);.
44d0: 20 20 20 20 6a 6f 62 6a 65 63 74 20 20 20 20 20      jobject     
44e0: 28 2a 47 65 74 4f 62 6a 65 63 74 41 72 72 61 79  (*GetObjectArray
44f0: 45 6c 65 6d 65 6e 74 29 28 4a 4e 49 45 6e 76 2a  Element)(JNIEnv*
4500: 2c 20 6a 6f 62 6a 65 63 74 41 72 72 61 79 2c 20  , jobjectArray, 
4510: 6a 73 69 7a 65 29 3b 0a 20 20 20 20 76 6f 69 64  jsize);.    void
4520: 20 20 20 20 20 20 20 20 28 2a 53 65 74 4f 62 6a          (*SetObj
4530: 65 63 74 41 72 72 61 79 45 6c 65 6d 65 6e 74 29  ectArrayElement)
4540: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63  (JNIEnv*, jobjec
4550: 74 41 72 72 61 79 2c 20 6a 73 69 7a 65 2c 20 6a  tArray, jsize, j
4560: 6f 62 6a 65 63 74 29 3b 0a 0a 20 20 20 20 6a 62  object);..    jb
4570: 6f 6f 6c 65 61 6e 41 72 72 61 79 20 28 2a 4e 65  ooleanArray (*Ne
4580: 77 42 6f 6f 6c 65 61 6e 41 72 72 61 79 29 28 4a  wBooleanArray)(J
4590: 4e 49 45 6e 76 2a 2c 20 6a 73 69 7a 65 29 3b 0a  NIEnv*, jsize);.
45a0: 20 20 20 20 6a 62 79 74 65 41 72 72 61 79 20 20      jbyteArray  
45b0: 20 20 28 2a 4e 65 77 42 79 74 65 41 72 72 61 79    (*NewByteArray
45c0: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 73 69 7a 65  )(JNIEnv*, jsize
45d0: 29 3b 0a 20 20 20 20 6a 63 68 61 72 41 72 72 61  );.    jcharArra
45e0: 79 20 20 20 20 28 2a 4e 65 77 43 68 61 72 41 72  y    (*NewCharAr
45f0: 72 61 79 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 73  ray)(JNIEnv*, js
4600: 69 7a 65 29 3b 0a 20 20 20 20 6a 73 68 6f 72 74  ize);.    jshort
4610: 41 72 72 61 79 20 20 20 28 2a 4e 65 77 53 68 6f  Array   (*NewSho
4620: 72 74 41 72 72 61 79 29 28 4a 4e 49 45 6e 76 2a  rtArray)(JNIEnv*
4630: 2c 20 6a 73 69 7a 65 29 3b 0a 20 20 20 20 6a 69  , jsize);.    ji
4640: 6e 74 41 72 72 61 79 20 20 20 20 20 28 2a 4e 65  ntArray     (*Ne
4650: 77 49 6e 74 41 72 72 61 79 29 28 4a 4e 49 45 6e  wIntArray)(JNIEn
4660: 76 2a 2c 20 6a 73 69 7a 65 29 3b 0a 20 20 20 20  v*, jsize);.    
4670: 6a 6c 6f 6e 67 41 72 72 61 79 20 20 20 20 28 2a  jlongArray    (*
4680: 4e 65 77 4c 6f 6e 67 41 72 72 61 79 29 28 4a 4e  NewLongArray)(JN
4690: 49 45 6e 76 2a 2c 20 6a 73 69 7a 65 29 3b 0a 20  IEnv*, jsize);. 
46a0: 20 20 20 6a 66 6c 6f 61 74 41 72 72 61 79 20 20     jfloatArray  
46b0: 20 28 2a 4e 65 77 46 6c 6f 61 74 41 72 72 61 79   (*NewFloatArray
46c0: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 73 69 7a 65  )(JNIEnv*, jsize
46d0: 29 3b 0a 20 20 20 20 6a 64 6f 75 62 6c 65 41 72  );.    jdoubleAr
46e0: 72 61 79 20 20 28 2a 4e 65 77 44 6f 75 62 6c 65  ray  (*NewDouble
46f0: 41 72 72 61 79 29 28 4a 4e 49 45 6e 76 2a 2c 20  Array)(JNIEnv*, 
4700: 6a 73 69 7a 65 29 3b 0a 0a 20 20 20 20 6a 62 6f  jsize);..    jbo
4710: 6f 6c 65 61 6e 2a 20 20 20 28 2a 47 65 74 42 6f  olean*   (*GetBo
4720: 6f 6c 65 61 6e 41 72 72 61 79 45 6c 65 6d 65 6e  oleanArrayElemen
4730: 74 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 62 6f  ts)(JNIEnv*, jbo
4740: 6f 6c 65 61 6e 41 72 72 61 79 2c 20 6a 62 6f 6f  oleanArray, jboo
4750: 6c 65 61 6e 2a 29 3b 0a 20 20 20 20 6a 62 79 74  lean*);.    jbyt
4760: 65 2a 20 20 20 20 20 20 28 2a 47 65 74 42 79 74  e*      (*GetByt
4770: 65 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 29 28  eArrayElements)(
4780: 4a 4e 49 45 6e 76 2a 2c 20 6a 62 79 74 65 41 72  JNIEnv*, jbyteAr
4790: 72 61 79 2c 20 6a 62 6f 6f 6c 65 61 6e 2a 29 3b  ray, jboolean*);
47a0: 0a 20 20 20 20 6a 63 68 61 72 2a 20 20 20 20 20  .    jchar*     
47b0: 20 28 2a 47 65 74 43 68 61 72 41 72 72 61 79 45   (*GetCharArrayE
47c0: 6c 65 6d 65 6e 74 73 29 28 4a 4e 49 45 6e 76 2a  lements)(JNIEnv*
47d0: 2c 20 6a 63 68 61 72 41 72 72 61 79 2c 20 6a 62  , jcharArray, jb
47e0: 6f 6f 6c 65 61 6e 2a 29 3b 0a 20 20 20 20 6a 73  oolean*);.    js
47f0: 68 6f 72 74 2a 20 20 20 20 20 28 2a 47 65 74 53  hort*     (*GetS
4800: 68 6f 72 74 41 72 72 61 79 45 6c 65 6d 65 6e 74  hortArrayElement
4810: 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 73 68 6f  s)(JNIEnv*, jsho
4820: 72 74 41 72 72 61 79 2c 20 6a 62 6f 6f 6c 65 61  rtArray, jboolea
4830: 6e 2a 29 3b 0a 20 20 20 20 6a 69 6e 74 2a 20 20  n*);.    jint*  
4840: 20 20 20 20 20 28 2a 47 65 74 49 6e 74 41 72 72       (*GetIntArr
4850: 61 79 45 6c 65 6d 65 6e 74 73 29 28 4a 4e 49 45  ayElements)(JNIE
4860: 6e 76 2a 2c 20 6a 69 6e 74 41 72 72 61 79 2c 20  nv*, jintArray, 
4870: 6a 62 6f 6f 6c 65 61 6e 2a 29 3b 0a 20 20 20 20  jboolean*);.    
4880: 6a 6c 6f 6e 67 2a 20 20 20 20 20 20 28 2a 47 65  jlong*      (*Ge
4890: 74 4c 6f 6e 67 41 72 72 61 79 45 6c 65 6d 65 6e  tLongArrayElemen
48a0: 74 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6c 6f  ts)(JNIEnv*, jlo
48b0: 6e 67 41 72 72 61 79 2c 20 6a 62 6f 6f 6c 65 61  ngArray, jboolea
48c0: 6e 2a 29 3b 0a 20 20 20 20 6a 66 6c 6f 61 74 2a  n*);.    jfloat*
48d0: 20 20 20 20 20 28 2a 47 65 74 46 6c 6f 61 74 41       (*GetFloatA
48e0: 72 72 61 79 45 6c 65 6d 65 6e 74 73 29 28 4a 4e  rrayElements)(JN
48f0: 49 45 6e 76 2a 2c 20 6a 66 6c 6f 61 74 41 72 72  IEnv*, jfloatArr
4900: 61 79 2c 20 6a 62 6f 6f 6c 65 61 6e 2a 29 3b 0a  ay, jboolean*);.
4910: 20 20 20 20 6a 64 6f 75 62 6c 65 2a 20 20 20 20      jdouble*    
4920: 28 2a 47 65 74 44 6f 75 62 6c 65 41 72 72 61 79  (*GetDoubleArray
4930: 45 6c 65 6d 65 6e 74 73 29 28 4a 4e 49 45 6e 76  Elements)(JNIEnv
4940: 2a 2c 20 6a 64 6f 75 62 6c 65 41 72 72 61 79 2c  *, jdoubleArray,
4950: 20 6a 62 6f 6f 6c 65 61 6e 2a 29 3b 0a 0a 20 20   jboolean*);..  
4960: 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a    void        (*
4970: 52 65 6c 65 61 73 65 42 6f 6f 6c 65 61 6e 41 72  ReleaseBooleanAr
4980: 72 61 79 45 6c 65 6d 65 6e 74 73 29 28 4a 4e 49  rayElements)(JNI
4990: 45 6e 76 2a 2c 20 6a 62 6f 6f 6c 65 61 6e 41 72  Env*, jbooleanAr
49a0: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ray,.           
49b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 62 6f               jbo
49c0: 6f 6c 65 61 6e 2a 2c 20 6a 69 6e 74 29 3b 0a 20  olean*, jint);. 
49d0: 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28     void        (
49e0: 2a 52 65 6c 65 61 73 65 42 79 74 65 41 72 72 61  *ReleaseByteArra
49f0: 79 45 6c 65 6d 65 6e 74 73 29 28 4a 4e 49 45 6e  yElements)(JNIEn
4a00: 76 2a 2c 20 6a 62 79 74 65 41 72 72 61 79 2c 0a  v*, jbyteArray,.
4a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a20: 20 20 20 20 20 20 20 20 6a 62 79 74 65 2a 2c 20          jbyte*, 
4a30: 6a 69 6e 74 29 3b 0a 20 20 20 20 76 6f 69 64 20  jint);.    void 
4a40: 20 20 20 20 20 20 20 28 2a 52 65 6c 65 61 73 65         (*Release
4a50: 43 68 61 72 41 72 72 61 79 45 6c 65 6d 65 6e 74  CharArrayElement
4a60: 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 68 61  s)(JNIEnv*, jcha
4a70: 72 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20  rArray,.        
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a90: 6a 63 68 61 72 2a 2c 20 6a 69 6e 74 29 3b 0a 20  jchar*, jint);. 
4aa0: 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28     void        (
4ab0: 2a 52 65 6c 65 61 73 65 53 68 6f 72 74 41 72 72  *ReleaseShortArr
4ac0: 61 79 45 6c 65 6d 65 6e 74 73 29 28 4a 4e 49 45  ayElements)(JNIE
4ad0: 6e 76 2a 2c 20 6a 73 68 6f 72 74 41 72 72 61 79  nv*, jshortArray
4ae0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
4af0: 20 20 20 20 20 20 20 20 20 20 6a 73 68 6f 72 74            jshort
4b00: 2a 2c 20 6a 69 6e 74 29 3b 0a 20 20 20 20 76 6f  *, jint);.    vo
4b10: 69 64 20 20 20 20 20 20 20 20 28 2a 52 65 6c 65  id        (*Rele
4b20: 61 73 65 49 6e 74 41 72 72 61 79 45 6c 65 6d 65  aseIntArrayEleme
4b30: 6e 74 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 69  nts)(JNIEnv*, ji
4b40: 6e 74 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20  ntArray,.       
4b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b60: 20 6a 69 6e 74 2a 2c 20 6a 69 6e 74 29 3b 0a 20   jint*, jint);. 
4b70: 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28     void        (
4b80: 2a 52 65 6c 65 61 73 65 4c 6f 6e 67 41 72 72 61  *ReleaseLongArra
4b90: 79 45 6c 65 6d 65 6e 74 73 29 28 4a 4e 49 45 6e  yElements)(JNIEn
4ba0: 76 2a 2c 20 6a 6c 6f 6e 67 41 72 72 61 79 2c 0a  v*, jlongArray,.
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4bc0: 20 20 20 20 20 20 20 20 6a 6c 6f 6e 67 2a 2c 20          jlong*, 
4bd0: 6a 69 6e 74 29 3b 0a 20 20 20 20 76 6f 69 64 20  jint);.    void 
4be0: 20 20 20 20 20 20 20 28 2a 52 65 6c 65 61 73 65         (*Release
4bf0: 46 6c 6f 61 74 41 72 72 61 79 45 6c 65 6d 65 6e  FloatArrayElemen
4c00: 74 73 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 66 6c  ts)(JNIEnv*, jfl
4c10: 6f 61 74 41 72 72 61 79 2c 0a 20 20 20 20 20 20  oatArray,.      
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c30: 20 20 6a 66 6c 6f 61 74 2a 2c 20 6a 69 6e 74 29    jfloat*, jint)
4c40: 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20  ;.    void      
4c50: 20 20 28 2a 52 65 6c 65 61 73 65 44 6f 75 62 6c    (*ReleaseDoubl
4c60: 65 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 29 28  eArrayElements)(
4c70: 4a 4e 49 45 6e 76 2a 2c 20 6a 64 6f 75 62 6c 65  JNIEnv*, jdouble
4c80: 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20  Array,.         
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
4ca0: 64 6f 75 62 6c 65 2a 2c 20 6a 69 6e 74 29 3b 0a  double*, jint);.
4cb0: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
4cc0: 20 28 2a 47 65 74 42 6f 6f 6c 65 61 6e 41 72 72   (*GetBooleanArr
4cd0: 61 79 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76  ayRegion)(JNIEnv
4ce0: 2a 2c 20 6a 62 6f 6f 6c 65 61 6e 41 72 72 61 79  *, jbooleanArray
4cf0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
4d00: 20 20 20 20 20 20 20 20 20 20 6a 73 69 7a 65 2c            jsize,
4d10: 20 6a 73 69 7a 65 2c 20 6a 62 6f 6f 6c 65 61 6e   jsize, jboolean
4d20: 2a 29 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20  *);.    void    
4d30: 20 20 20 20 28 2a 47 65 74 42 79 74 65 41 72 72      (*GetByteArr
4d40: 61 79 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76  ayRegion)(JNIEnv
4d50: 2a 2c 20 6a 62 79 74 65 41 72 72 61 79 2c 0a 20  *, jbyteArray,. 
4d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d70: 20 20 20 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73         jsize, js
4d80: 69 7a 65 2c 20 6a 62 79 74 65 2a 29 3b 0a 20 20  ize, jbyte*);.  
4d90: 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a    void        (*
4da0: 47 65 74 43 68 61 72 41 72 72 61 79 52 65 67 69  GetCharArrayRegi
4db0: 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 63 68  on)(JNIEnv*, jch
4dc0: 61 72 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20  arArray,.       
4dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4de0: 20 6a 73 69 7a 65 2c 20 6a 73 69 7a 65 2c 20 6a   jsize, jsize, j
4df0: 63 68 61 72 2a 29 3b 0a 20 20 20 20 76 6f 69 64  char*);.    void
4e00: 20 20 20 20 20 20 20 20 28 2a 47 65 74 53 68 6f          (*GetSho
4e10: 72 74 41 72 72 61 79 52 65 67 69 6f 6e 29 28 4a  rtArrayRegion)(J
4e20: 4e 49 45 6e 76 2a 2c 20 6a 73 68 6f 72 74 41 72  NIEnv*, jshortAr
4e30: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ray,.           
4e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73 69               jsi
4e50: 7a 65 2c 20 6a 73 69 7a 65 2c 20 6a 73 68 6f 72  ze, jsize, jshor
4e60: 74 2a 29 3b 0a 20 20 20 20 76 6f 69 64 20 20 20  t*);.    void   
4e70: 20 20 20 20 20 28 2a 47 65 74 49 6e 74 41 72 72       (*GetIntArr
4e80: 61 79 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76  ayRegion)(JNIEnv
4e90: 2a 2c 20 6a 69 6e 74 41 72 72 61 79 2c 0a 20 20  *, jintArray,.  
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 20 20 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69        jsize, jsi
4ec0: 7a 65 2c 20 6a 69 6e 74 2a 29 3b 0a 20 20 20 20  ze, jint*);.    
4ed0: 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a 47 65  void        (*Ge
4ee0: 74 4c 6f 6e 67 41 72 72 61 79 52 65 67 69 6f 6e  tLongArrayRegion
4ef0: 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6c 6f 6e 67  )(JNIEnv*, jlong
4f00: 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20  Array,.         
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
4f20: 73 69 7a 65 2c 20 6a 73 69 7a 65 2c 20 6a 6c 6f  size, jsize, jlo
4f30: 6e 67 2a 29 3b 0a 20 20 20 20 76 6f 69 64 20 20  ng*);.    void  
4f40: 20 20 20 20 20 20 28 2a 47 65 74 46 6c 6f 61 74        (*GetFloat
4f50: 41 72 72 61 79 52 65 67 69 6f 6e 29 28 4a 4e 49  ArrayRegion)(JNI
4f60: 45 6e 76 2a 2c 20 6a 66 6c 6f 61 74 41 72 72 61  Env*, jfloatArra
4f70: 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y,.             
4f80: 20 20 20 20 20 20 20 20 20 20 20 6a 73 69 7a 65             jsize
4f90: 2c 20 6a 73 69 7a 65 2c 20 6a 66 6c 6f 61 74 2a  , jsize, jfloat*
4fa0: 29 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20  );.    void     
4fb0: 20 20 20 28 2a 47 65 74 44 6f 75 62 6c 65 41 72     (*GetDoubleAr
4fc0: 72 61 79 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e  rayRegion)(JNIEn
4fd0: 76 2a 2c 20 6a 64 6f 75 62 6c 65 41 72 72 61 79  v*, jdoubleArray
4fe0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
4ff0: 20 20 20 20 20 20 20 20 20 20 6a 73 69 7a 65 2c            jsize,
5000: 20 6a 73 69 7a 65 2c 20 6a 64 6f 75 62 6c 65 2a   jsize, jdouble*
5010: 29 3b 0a 0a 20 20 20 20 2f 2a 20 73 70 65 63 20  );..    /* spec 
5020: 73 68 6f 77 73 20 74 68 65 73 65 20 77 69 74 68  shows these with
5030: 6f 75 74 20 63 6f 6e 73 74 3b 20 73 6f 6d 65 20  out const; some 
5040: 6a 6e 69 2e 68 20 64 6f 2c 20 73 6f 6d 65 20 64  jni.h do, some d
5050: 6f 6e 27 74 20 2a 2f 0a 20 20 20 20 76 6f 69 64  on't */.    void
5060: 20 20 20 20 20 20 20 20 28 2a 53 65 74 42 6f 6f          (*SetBoo
5070: 6c 65 61 6e 41 72 72 61 79 52 65 67 69 6f 6e 29  leanArrayRegion)
5080: 28 4a 4e 49 45 6e 76 2a 2c 20 6a 62 6f 6f 6c 65  (JNIEnv*, jboole
5090: 61 6e 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20  anArray,.       
50a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50b0: 20 6a 73 69 7a 65 2c 20 6a 73 69 7a 65 2c 20 63   jsize, jsize, c
50c0: 6f 6e 73 74 20 6a 62 6f 6f 6c 65 61 6e 2a 29 3b  onst jboolean*);
50d0: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
50e0: 20 28 2a 53 65 74 42 79 74 65 41 72 72 61 79 52   (*SetByteArrayR
50f0: 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c 20  egion)(JNIEnv*, 
5100: 6a 62 79 74 65 41 72 72 61 79 2c 0a 20 20 20 20  jbyteArray,.    
5110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5120: 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69 7a 65      jsize, jsize
5130: 2c 20 63 6f 6e 73 74 20 6a 62 79 74 65 2a 29 3b  , const jbyte*);
5140: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
5150: 20 28 2a 53 65 74 43 68 61 72 41 72 72 61 79 52   (*SetCharArrayR
5160: 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c 20  egion)(JNIEnv*, 
5170: 6a 63 68 61 72 41 72 72 61 79 2c 0a 20 20 20 20  jcharArray,.    
5180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5190: 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69 7a 65      jsize, jsize
51a0: 2c 20 63 6f 6e 73 74 20 6a 63 68 61 72 2a 29 3b  , const jchar*);
51b0: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
51c0: 20 28 2a 53 65 74 53 68 6f 72 74 41 72 72 61 79   (*SetShortArray
51d0: 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c  Region)(JNIEnv*,
51e0: 20 6a 73 68 6f 72 74 41 72 72 61 79 2c 0a 20 20   jshortArray,.  
51f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5200: 20 20 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69        jsize, jsi
5210: 7a 65 2c 20 63 6f 6e 73 74 20 6a 73 68 6f 72 74  ze, const jshort
5220: 2a 29 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20  *);.    void    
5230: 20 20 20 20 28 2a 53 65 74 49 6e 74 41 72 72 61      (*SetIntArra
5240: 79 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a  yRegion)(JNIEnv*
5250: 2c 20 6a 69 6e 74 41 72 72 61 79 2c 0a 20 20 20  , jintArray,.   
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5270: 20 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69 7a       jsize, jsiz
5280: 65 2c 20 63 6f 6e 73 74 20 6a 69 6e 74 2a 29 3b  e, const jint*);
5290: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
52a0: 20 28 2a 53 65 74 4c 6f 6e 67 41 72 72 61 79 52   (*SetLongArrayR
52b0: 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c 20  egion)(JNIEnv*, 
52c0: 6a 6c 6f 6e 67 41 72 72 61 79 2c 0a 20 20 20 20  jlongArray,.    
52d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52e0: 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69 7a 65      jsize, jsize
52f0: 2c 20 63 6f 6e 73 74 20 6a 6c 6f 6e 67 2a 29 3b  , const jlong*);
5300: 0a 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20  .    void       
5310: 20 28 2a 53 65 74 46 6c 6f 61 74 41 72 72 61 79   (*SetFloatArray
5320: 52 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c  Region)(JNIEnv*,
5330: 20 6a 66 6c 6f 61 74 41 72 72 61 79 2c 0a 20 20   jfloatArray,.  
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 20 6a 73 69 7a 65 2c 20 6a 73 69        jsize, jsi
5360: 7a 65 2c 20 63 6f 6e 73 74 20 6a 66 6c 6f 61 74  ze, const jfloat
5370: 2a 29 3b 0a 20 20 20 20 76 6f 69 64 20 20 20 20  *);.    void    
5380: 20 20 20 20 28 2a 53 65 74 44 6f 75 62 6c 65 41      (*SetDoubleA
5390: 72 72 61 79 52 65 67 69 6f 6e 29 28 4a 4e 49 45  rrayRegion)(JNIE
53a0: 6e 76 2a 2c 20 6a 64 6f 75 62 6c 65 41 72 72 61  nv*, jdoubleArra
53b0: 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y,.             
53c0: 20 20 20 20 20 20 20 20 20 20 20 6a 73 69 7a 65             jsize
53d0: 2c 20 6a 73 69 7a 65 2c 20 63 6f 6e 73 74 20 6a  , jsize, const j
53e0: 64 6f 75 62 6c 65 2a 29 3b 0a 0a 20 20 20 20 6a  double*);..    j
53f0: 69 6e 74 20 20 20 20 20 20 20 20 28 2a 52 65 67  int        (*Reg
5400: 69 73 74 65 72 4e 61 74 69 76 65 73 29 28 4a 4e  isterNatives)(JN
5410: 49 45 6e 76 2a 2c 20 6a 63 6c 61 73 73 2c 20 63  IEnv*, jclass, c
5420: 6f 6e 73 74 20 4a 4e 49 4e 61 74 69 76 65 4d 65  onst JNINativeMe
5430: 74 68 6f 64 2a 2c 0a 20 20 20 20 20 20 20 20 20  thod*,.         
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
5450: 69 6e 74 29 3b 0a 20 20 20 20 6a 69 6e 74 20 20  int);.    jint  
5460: 20 20 20 20 20 20 28 2a 55 6e 72 65 67 69 73 74        (*Unregist
5470: 65 72 4e 61 74 69 76 65 73 29 28 4a 4e 49 45 6e  erNatives)(JNIEn
5480: 76 2a 2c 20 6a 63 6c 61 73 73 29 3b 0a 20 20 20  v*, jclass);.   
5490: 20 6a 69 6e 74 20 20 20 20 20 20 20 20 28 2a 4d   jint        (*M
54a0: 6f 6e 69 74 6f 72 45 6e 74 65 72 29 28 4a 4e 49  onitorEnter)(JNI
54b0: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a  Env*, jobject);.
54c0: 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20 20 20      jint        
54d0: 28 2a 4d 6f 6e 69 74 6f 72 45 78 69 74 29 28 4a  (*MonitorExit)(J
54e0: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 29  NIEnv*, jobject)
54f0: 3b 0a 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20  ;.    jint      
5500: 20 20 28 2a 47 65 74 4a 61 76 61 56 4d 29 28 4a    (*GetJavaVM)(J
5510: 4e 49 45 6e 76 2a 2c 20 4a 61 76 61 56 4d 2a 2a  NIEnv*, JavaVM**
5520: 29 3b 0a 0a 20 20 20 20 76 6f 69 64 20 20 20 20  );..    void    
5530: 20 20 20 20 28 2a 47 65 74 53 74 72 69 6e 67 52      (*GetStringR
5540: 65 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c 20  egion)(JNIEnv*, 
5550: 6a 73 74 72 69 6e 67 2c 20 6a 73 69 7a 65 2c 20  jstring, jsize, 
5560: 6a 73 69 7a 65 2c 20 6a 63 68 61 72 2a 29 3b 0a  jsize, jchar*);.
5570: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
5580: 28 2a 47 65 74 53 74 72 69 6e 67 55 54 46 52 65  (*GetStringUTFRe
5590: 67 69 6f 6e 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a  gion)(JNIEnv*, j
55a0: 73 74 72 69 6e 67 2c 20 6a 73 69 7a 65 2c 20 6a  string, jsize, j
55b0: 73 69 7a 65 2c 20 63 68 61 72 2a 29 3b 0a 0a 20  size, char*);.. 
55c0: 20 20 20 76 6f 69 64 2a 20 20 20 20 20 20 20 28     void*       (
55d0: 2a 47 65 74 50 72 69 6d 69 74 69 76 65 41 72 72  *GetPrimitiveArr
55e0: 61 79 43 72 69 74 69 63 61 6c 29 28 4a 4e 49 45  ayCritical)(JNIE
55f0: 6e 76 2a 2c 20 6a 61 72 72 61 79 2c 20 6a 62 6f  nv*, jarray, jbo
5600: 6f 6c 65 61 6e 2a 29 3b 0a 20 20 20 20 76 6f 69  olean*);.    voi
5610: 64 20 20 20 20 20 20 20 20 28 2a 52 65 6c 65 61  d        (*Relea
5620: 73 65 50 72 69 6d 69 74 69 76 65 41 72 72 61 79  sePrimitiveArray
5630: 43 72 69 74 69 63 61 6c 29 28 4a 4e 49 45 6e 76  Critical)(JNIEnv
5640: 2a 2c 20 6a 61 72 72 61 79 2c 20 76 6f 69 64 2a  *, jarray, void*
5650: 2c 20 6a 69 6e 74 29 3b 0a 0a 20 20 20 20 63 6f  , jint);..    co
5660: 6e 73 74 20 6a 63 68 61 72 2a 20 28 2a 47 65 74  nst jchar* (*Get
5670: 53 74 72 69 6e 67 43 72 69 74 69 63 61 6c 29 28  StringCritical)(
5680: 4a 4e 49 45 6e 76 2a 2c 20 6a 73 74 72 69 6e 67  JNIEnv*, jstring
5690: 2c 20 6a 62 6f 6f 6c 65 61 6e 2a 29 3b 0a 20 20  , jboolean*);.  
56a0: 20 20 76 6f 69 64 20 20 20 20 20 20 20 20 28 2a    void        (*
56b0: 52 65 6c 65 61 73 65 53 74 72 69 6e 67 43 72 69  ReleaseStringCri
56c0: 74 69 63 61 6c 29 28 4a 4e 49 45 6e 76 2a 2c 20  tical)(JNIEnv*, 
56d0: 6a 73 74 72 69 6e 67 2c 20 63 6f 6e 73 74 20 6a  jstring, const j
56e0: 63 68 61 72 2a 29 3b 0a 0a 20 20 20 20 6a 77 65  char*);..    jwe
56f0: 61 6b 20 20 20 20 20 20 20 28 2a 4e 65 77 57 65  ak       (*NewWe
5700: 61 6b 47 6c 6f 62 61 6c 52 65 66 29 28 4a 4e 49  akGlobalRef)(JNI
5710: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a  Env*, jobject);.
5720: 20 20 20 20 76 6f 69 64 20 20 20 20 20 20 20 20      void        
5730: 28 2a 44 65 6c 65 74 65 57 65 61 6b 47 6c 6f 62  (*DeleteWeakGlob
5740: 61 6c 52 65 66 29 28 4a 4e 49 45 6e 76 2a 2c 20  alRef)(JNIEnv*, 
5750: 6a 77 65 61 6b 29 3b 0a 0a 20 20 20 20 6a 62 6f  jweak);..    jbo
5760: 6f 6c 65 61 6e 20 20 20 20 28 2a 45 78 63 65 70  olean    (*Excep
5770: 74 69 6f 6e 43 68 65 63 6b 29 28 4a 4e 49 45 6e  tionCheck)(JNIEn
5780: 76 2a 29 3b 0a 0a 20 20 20 20 6a 6f 62 6a 65 63  v*);..    jobjec
5790: 74 20 20 20 20 20 28 2a 4e 65 77 44 69 72 65 63  t     (*NewDirec
57a0: 74 42 79 74 65 42 75 66 66 65 72 29 28 4a 4e 49  tByteBuffer)(JNI
57b0: 45 6e 76 2a 2c 20 76 6f 69 64 2a 2c 20 6a 6c 6f  Env*, void*, jlo
57c0: 6e 67 29 3b 0a 20 20 20 20 76 6f 69 64 2a 20 20  ng);.    void*  
57d0: 20 20 20 20 20 28 2a 47 65 74 44 69 72 65 63 74       (*GetDirect
57e0: 42 75 66 66 65 72 41 64 64 72 65 73 73 29 28 4a  BufferAddress)(J
57f0: 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 29  NIEnv*, jobject)
5800: 3b 0a 20 20 20 20 6a 6c 6f 6e 67 20 20 20 20 20  ;.    jlong     
5810: 20 20 28 2a 47 65 74 44 69 72 65 63 74 42 75 66    (*GetDirectBuf
5820: 66 65 72 43 61 70 61 63 69 74 79 29 28 4a 4e 49  ferCapacity)(JNI
5830: 45 6e 76 2a 2c 20 6a 6f 62 6a 65 63 74 29 3b 0a  Env*, jobject);.
5840: 0a 20 20 20 20 2f 2a 20 61 64 64 65 64 20 69 6e  .    /* added in
5850: 20 4a 4e 49 20 31 2e 36 20 2a 2f 0a 20 20 20 20   JNI 1.6 */.    
5860: 6a 6f 62 6a 65 63 74 52 65 66 54 79 70 65 20 28  jobjectRefType (
5870: 2a 47 65 74 4f 62 6a 65 63 74 52 65 66 54 79 70  *GetObjectRefTyp
5880: 65 29 28 4a 4e 49 45 6e 76 2a 2c 20 6a 6f 62 6a  e)(JNIEnv*, jobj
5890: 65 63 74 29 3b 0a 7d 3b 0a 0a 2f 2a 0a 20 2a 20  ect);.};../*. * 
58a0: 43 2b 2b 20 6f 62 6a 65 63 74 20 77 72 61 70 70  C++ object wrapp
58b0: 65 72 2e 0a 20 2a 0a 20 2a 20 54 68 69 73 20 69  er.. *. * This i
58c0: 73 20 75 73 75 61 6c 6c 79 20 6f 76 65 72 6c 61  s usually overla
58d0: 69 64 20 6f 6e 20 61 20 43 20 73 74 72 75 63 74  id on a C struct
58e0: 20 77 68 6f 73 65 20 66 69 72 73 74 20 65 6c 65   whose first ele
58f0: 6d 65 6e 74 20 69 73 20 61 0a 20 2a 20 4a 4e 49  ment is a. * JNI
5900: 4e 61 74 69 76 65 49 6e 74 65 72 66 61 63 65 2a  NativeInterface*
5910: 2e 20 20 57 65 20 72 65 6c 79 20 73 6f 6d 65 77  .  We rely somew
5920: 68 61 74 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20  hat on compiler 
5930: 62 65 68 61 76 69 6f 72 2e 0a 20 2a 2f 0a 73 74  behavior.. */.st
5940: 72 75 63 74 20 5f 4a 4e 49 45 6e 76 20 7b 0a 20  ruct _JNIEnv {. 
5950: 20 20 20 2f 2a 20 64 6f 20 6e 6f 74 20 72 65 6e     /* do not ren
5960: 61 6d 65 20 74 68 69 73 3b 20 69 74 20 64 6f 65  ame this; it doe
5970: 73 20 6e 6f 74 20 73 65 65 6d 20 74 6f 20 62 65  s not seem to be
5980: 20 65 6e 74 69 72 65 6c 79 20 6f 70 61 71 75 65   entirely opaque
5990: 20 2a 2f 0a 20 20 20 20 63 6f 6e 73 74 20 73 74   */.    const st
59a0: 72 75 63 74 20 4a 4e 49 4e 61 74 69 76 65 49 6e  ruct JNINativeIn
59b0: 74 65 72 66 61 63 65 2a 20 66 75 6e 63 74 69 6f  terface* functio
59c0: 6e 73 3b 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  ns;..#if defined
59d0: 28 5f 5f 63 70 6c 75 73 70 6c 75 73 29 0a 0a 20  (__cplusplus).. 
59e0: 20 20 20 6a 69 6e 74 20 47 65 74 56 65 72 73 69     jint GetVersi
59f0: 6f 6e 28 29 0a 20 20 20 20 7b 20 72 65 74 75 72  on().    { retur
5a00: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74  n functions->Get
5a10: 56 65 72 73 69 6f 6e 28 74 68 69 73 29 3b 20 7d  Version(this); }
5a20: 0a 0a 20 20 20 20 6a 63 6c 61 73 73 20 44 65 66  ..    jclass Def
5a30: 69 6e 65 43 6c 61 73 73 28 63 6f 6e 73 74 20 63  ineClass(const c
5a40: 68 61 72 20 2a 6e 61 6d 65 2c 20 6a 6f 62 6a 65  har *name, jobje
5a50: 63 74 20 6c 6f 61 64 65 72 2c 20 63 6f 6e 73 74  ct loader, const
5a60: 20 6a 62 79 74 65 2a 20 62 75 66 2c 0a 20 20 20   jbyte* buf,.   
5a70: 20 20 20 20 20 6a 73 69 7a 65 20 62 75 66 4c 65       jsize bufLe
5a80: 6e 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  n).    { return 
5a90: 66 75 6e 63 74 69 6f 6e 73 2d 3e 44 65 66 69 6e  functions->Defin
5aa0: 65 43 6c 61 73 73 28 74 68 69 73 2c 20 6e 61 6d  eClass(this, nam
5ab0: 65 2c 20 6c 6f 61 64 65 72 2c 20 62 75 66 2c 20  e, loader, buf, 
5ac0: 62 75 66 4c 65 6e 29 3b 20 7d 0a 0a 20 20 20 20  bufLen); }..    
5ad0: 6a 63 6c 61 73 73 20 46 69 6e 64 43 6c 61 73 73  jclass FindClass
5ae0: 28 63 6f 6e 73 74 20 63 68 61 72 2a 20 6e 61 6d  (const char* nam
5af0: 65 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  e).    { return 
5b00: 66 75 6e 63 74 69 6f 6e 73 2d 3e 46 69 6e 64 43  functions->FindC
5b10: 6c 61 73 73 28 74 68 69 73 2c 20 6e 61 6d 65 29  lass(this, name)
5b20: 3b 20 7d 0a 0a 20 20 20 20 6a 6d 65 74 68 6f 64  ; }..    jmethod
5b30: 49 44 20 46 72 6f 6d 52 65 66 6c 65 63 74 65 64  ID FromReflected
5b40: 4d 65 74 68 6f 64 28 6a 6f 62 6a 65 63 74 20 6d  Method(jobject m
5b50: 65 74 68 6f 64 29 0a 20 20 20 20 7b 20 72 65 74  ethod).    { ret
5b60: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 46  urn functions->F
5b70: 72 6f 6d 52 65 66 6c 65 63 74 65 64 4d 65 74 68  romReflectedMeth
5b80: 6f 64 28 74 68 69 73 2c 20 6d 65 74 68 6f 64 29  od(this, method)
5b90: 3b 20 7d 0a 0a 20 20 20 20 6a 66 69 65 6c 64 49  ; }..    jfieldI
5ba0: 44 20 46 72 6f 6d 52 65 66 6c 65 63 74 65 64 46  D FromReflectedF
5bb0: 69 65 6c 64 28 6a 6f 62 6a 65 63 74 20 66 69 65  ield(jobject fie
5bc0: 6c 64 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  ld).    { return
5bd0: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 46 72 6f 6d   functions->From
5be0: 52 65 66 6c 65 63 74 65 64 46 69 65 6c 64 28 74  ReflectedField(t
5bf0: 68 69 73 2c 20 66 69 65 6c 64 29 3b 20 7d 0a 0a  his, field); }..
5c00: 20 20 20 20 6a 6f 62 6a 65 63 74 20 54 6f 52 65      jobject ToRe
5c10: 66 6c 65 63 74 65 64 4d 65 74 68 6f 64 28 6a 63  flectedMethod(jc
5c20: 6c 61 73 73 20 63 6c 73 2c 20 6a 6d 65 74 68 6f  lass cls, jmetho
5c30: 64 49 44 20 6d 65 74 68 6f 64 49 44 2c 20 6a 62  dID methodID, jb
5c40: 6f 6f 6c 65 61 6e 20 69 73 53 74 61 74 69 63 29  oolean isStatic)
5c50: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
5c60: 6e 63 74 69 6f 6e 73 2d 3e 54 6f 52 65 66 6c 65  nctions->ToRefle
5c70: 63 74 65 64 4d 65 74 68 6f 64 28 74 68 69 73 2c  ctedMethod(this,
5c80: 20 63 6c 73 2c 20 6d 65 74 68 6f 64 49 44 2c 20   cls, methodID, 
5c90: 69 73 53 74 61 74 69 63 29 3b 20 7d 0a 0a 20 20  isStatic); }..  
5ca0: 20 20 6a 63 6c 61 73 73 20 47 65 74 53 75 70 65    jclass GetSupe
5cb0: 72 63 6c 61 73 73 28 6a 63 6c 61 73 73 20 63 6c  rclass(jclass cl
5cc0: 61 7a 7a 29 0a 20 20 20 20 7b 20 72 65 74 75 72  azz).    { retur
5cd0: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74  n functions->Get
5ce0: 53 75 70 65 72 63 6c 61 73 73 28 74 68 69 73 2c  Superclass(this,
5cf0: 20 63 6c 61 7a 7a 29 3b 20 7d 0a 0a 20 20 20 20   clazz); }..    
5d00: 6a 62 6f 6f 6c 65 61 6e 20 49 73 41 73 73 69 67  jboolean IsAssig
5d10: 6e 61 62 6c 65 46 72 6f 6d 28 6a 63 6c 61 73 73  nableFrom(jclass
5d20: 20 63 6c 61 7a 7a 31 2c 20 6a 63 6c 61 73 73 20   clazz1, jclass 
5d30: 63 6c 61 7a 7a 32 29 0a 20 20 20 20 7b 20 72 65  clazz2).    { re
5d40: 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e  turn functions->
5d50: 49 73 41 73 73 69 67 6e 61 62 6c 65 46 72 6f 6d  IsAssignableFrom
5d60: 28 74 68 69 73 2c 20 63 6c 61 7a 7a 31 2c 20 63  (this, clazz1, c
5d70: 6c 61 7a 7a 32 29 3b 20 7d 0a 0a 20 20 20 20 6a  lazz2); }..    j
5d80: 6f 62 6a 65 63 74 20 54 6f 52 65 66 6c 65 63 74  object ToReflect
5d90: 65 64 46 69 65 6c 64 28 6a 63 6c 61 73 73 20 63  edField(jclass c
5da0: 6c 73 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65  ls, jfieldID fie
5db0: 6c 64 49 44 2c 20 6a 62 6f 6f 6c 65 61 6e 20 69  ldID, jboolean i
5dc0: 73 53 74 61 74 69 63 29 0a 20 20 20 20 7b 20 72  sStatic).    { r
5dd0: 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d  eturn functions-
5de0: 3e 54 6f 52 65 66 6c 65 63 74 65 64 46 69 65 6c  >ToReflectedFiel
5df0: 64 28 74 68 69 73 2c 20 63 6c 73 2c 20 66 69 65  d(this, cls, fie
5e00: 6c 64 49 44 2c 20 69 73 53 74 61 74 69 63 29 3b  ldID, isStatic);
5e10: 20 7d 0a 0a 20 20 20 20 6a 69 6e 74 20 54 68 72   }..    jint Thr
5e20: 6f 77 28 6a 74 68 72 6f 77 61 62 6c 65 20 6f 62  ow(jthrowable ob
5e30: 6a 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  j).    { return 
5e40: 66 75 6e 63 74 69 6f 6e 73 2d 3e 54 68 72 6f 77  functions->Throw
5e50: 28 74 68 69 73 2c 20 6f 62 6a 29 3b 20 7d 0a 0a  (this, obj); }..
5e60: 20 20 20 20 6a 69 6e 74 20 54 68 72 6f 77 4e 65      jint ThrowNe
5e70: 77 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20  w(jclass clazz, 
5e80: 63 6f 6e 73 74 20 63 68 61 72 2a 20 6d 65 73 73  const char* mess
5e90: 61 67 65 29 0a 20 20 20 20 7b 20 72 65 74 75 72  age).    { retur
5ea0: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 54 68 72  n functions->Thr
5eb0: 6f 77 4e 65 77 28 74 68 69 73 2c 20 63 6c 61 7a  owNew(this, claz
5ec0: 7a 2c 20 6d 65 73 73 61 67 65 29 3b 20 7d 0a 0a  z, message); }..
5ed0: 20 20 20 20 6a 74 68 72 6f 77 61 62 6c 65 20 45      jthrowable E
5ee0: 78 63 65 70 74 69 6f 6e 4f 63 63 75 72 72 65 64  xceptionOccurred
5ef0: 28 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  ().    { return 
5f00: 66 75 6e 63 74 69 6f 6e 73 2d 3e 45 78 63 65 70  functions->Excep
5f10: 74 69 6f 6e 4f 63 63 75 72 72 65 64 28 74 68 69  tionOccurred(thi
5f20: 73 29 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20  s); }..    void 
5f30: 45 78 63 65 70 74 69 6f 6e 44 65 73 63 72 69 62  ExceptionDescrib
5f40: 65 28 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69  e().    { functi
5f50: 6f 6e 73 2d 3e 45 78 63 65 70 74 69 6f 6e 44 65  ons->ExceptionDe
5f60: 73 63 72 69 62 65 28 74 68 69 73 29 3b 20 7d 0a  scribe(this); }.
5f70: 0a 20 20 20 20 76 6f 69 64 20 45 78 63 65 70 74  .    void Except
5f80: 69 6f 6e 43 6c 65 61 72 28 29 0a 20 20 20 20 7b  ionClear().    {
5f90: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 45 78 63 65   functions->Exce
5fa0: 70 74 69 6f 6e 43 6c 65 61 72 28 74 68 69 73 29  ptionClear(this)
5fb0: 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 46 61  ; }..    void Fa
5fc0: 74 61 6c 45 72 72 6f 72 28 63 6f 6e 73 74 20 63  talError(const c
5fd0: 68 61 72 2a 20 6d 73 67 29 0a 20 20 20 20 7b 20  har* msg).    { 
5fe0: 66 75 6e 63 74 69 6f 6e 73 2d 3e 46 61 74 61 6c  functions->Fatal
5ff0: 45 72 72 6f 72 28 74 68 69 73 2c 20 6d 73 67 29  Error(this, msg)
6000: 3b 20 7d 0a 0a 20 20 20 20 6a 69 6e 74 20 50 75  ; }..    jint Pu
6010: 73 68 4c 6f 63 61 6c 46 72 61 6d 65 28 6a 69 6e  shLocalFrame(jin
6020: 74 20 63 61 70 61 63 69 74 79 29 0a 20 20 20 20  t capacity).    
6030: 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f  { return functio
6040: 6e 73 2d 3e 50 75 73 68 4c 6f 63 61 6c 46 72 61  ns->PushLocalFra
6050: 6d 65 28 74 68 69 73 2c 20 63 61 70 61 63 69 74  me(this, capacit
6060: 79 29 3b 20 7d 0a 0a 20 20 20 20 6a 6f 62 6a 65  y); }..    jobje
6070: 63 74 20 50 6f 70 4c 6f 63 61 6c 46 72 61 6d 65  ct PopLocalFrame
6080: 28 6a 6f 62 6a 65 63 74 20 72 65 73 75 6c 74 29  (jobject result)
6090: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
60a0: 6e 63 74 69 6f 6e 73 2d 3e 50 6f 70 4c 6f 63 61  nctions->PopLoca
60b0: 6c 46 72 61 6d 65 28 74 68 69 73 2c 20 72 65 73  lFrame(this, res
60c0: 75 6c 74 29 3b 20 7d 0a 0a 20 20 20 20 6a 6f 62  ult); }..    job
60d0: 6a 65 63 74 20 4e 65 77 47 6c 6f 62 61 6c 52 65  ject NewGlobalRe
60e0: 66 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 29 0a 20  f(jobject obj). 
60f0: 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63     { return func
6100: 74 69 6f 6e 73 2d 3e 4e 65 77 47 6c 6f 62 61 6c  tions->NewGlobal
6110: 52 65 66 28 74 68 69 73 2c 20 6f 62 6a 29 3b 20  Ref(this, obj); 
6120: 7d 0a 0a 20 20 20 20 76 6f 69 64 20 44 65 6c 65  }..    void Dele
6130: 74 65 47 6c 6f 62 61 6c 52 65 66 28 6a 6f 62 6a  teGlobalRef(jobj
6140: 65 63 74 20 67 6c 6f 62 61 6c 52 65 66 29 0a 20  ect globalRef). 
6150: 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e     { functions->
6160: 44 65 6c 65 74 65 47 6c 6f 62 61 6c 52 65 66 28  DeleteGlobalRef(
6170: 74 68 69 73 2c 20 67 6c 6f 62 61 6c 52 65 66 29  this, globalRef)
6180: 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 44 65  ; }..    void De
6190: 6c 65 74 65 4c 6f 63 61 6c 52 65 66 28 6a 6f 62  leteLocalRef(job
61a0: 6a 65 63 74 20 6c 6f 63 61 6c 52 65 66 29 0a 20  ject localRef). 
61b0: 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e     { functions->
61c0: 44 65 6c 65 74 65 4c 6f 63 61 6c 52 65 66 28 74  DeleteLocalRef(t
61d0: 68 69 73 2c 20 6c 6f 63 61 6c 52 65 66 29 3b 20  his, localRef); 
61e0: 7d 0a 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20  }..    jboolean 
61f0: 49 73 53 61 6d 65 4f 62 6a 65 63 74 28 6a 6f 62  IsSameObject(job
6200: 6a 65 63 74 20 72 65 66 31 2c 20 6a 6f 62 6a 65  ject ref1, jobje
6210: 63 74 20 72 65 66 32 29 0a 20 20 20 20 7b 20 72  ct ref2).    { r
6220: 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d  eturn functions-
6230: 3e 49 73 53 61 6d 65 4f 62 6a 65 63 74 28 74 68  >IsSameObject(th
6240: 69 73 2c 20 72 65 66 31 2c 20 72 65 66 32 29 3b  is, ref1, ref2);
6250: 20 7d 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20   }..    jobject 
6260: 4e 65 77 4c 6f 63 61 6c 52 65 66 28 6a 6f 62 6a  NewLocalRef(jobj
6270: 65 63 74 20 72 65 66 29 0a 20 20 20 20 7b 20 72  ect ref).    { r
6280: 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d  eturn functions-
6290: 3e 4e 65 77 4c 6f 63 61 6c 52 65 66 28 74 68 69  >NewLocalRef(thi
62a0: 73 2c 20 72 65 66 29 3b 20 7d 0a 0a 20 20 20 20  s, ref); }..    
62b0: 6a 69 6e 74 20 45 6e 73 75 72 65 4c 6f 63 61 6c  jint EnsureLocal
62c0: 43 61 70 61 63 69 74 79 28 6a 69 6e 74 20 63 61  Capacity(jint ca
62d0: 70 61 63 69 74 79 29 0a 20 20 20 20 7b 20 72 65  pacity).    { re
62e0: 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e  turn functions->
62f0: 45 6e 73 75 72 65 4c 6f 63 61 6c 43 61 70 61 63  EnsureLocalCapac
6300: 69 74 79 28 74 68 69 73 2c 20 63 61 70 61 63 69  ity(this, capaci
6310: 74 79 29 3b 20 7d 0a 0a 20 20 20 20 6a 6f 62 6a  ty); }..    jobj
6320: 65 63 74 20 41 6c 6c 6f 63 4f 62 6a 65 63 74 28  ect AllocObject(
6330: 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 29 0a 20 20  jclass clazz).  
6340: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
6350: 69 6f 6e 73 2d 3e 41 6c 6c 6f 63 4f 62 6a 65 63  ions->AllocObjec
6360: 74 28 74 68 69 73 2c 20 63 6c 61 7a 7a 29 3b 20  t(this, clazz); 
6370: 7d 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 4e  }..    jobject N
6380: 65 77 4f 62 6a 65 63 74 28 6a 63 6c 61 73 73 20  ewObject(jclass 
6390: 63 6c 61 7a 7a 2c 20 6a 6d 65 74 68 6f 64 49 44  clazz, jmethodID
63a0: 20 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 0a   methodID, ...).
63b0: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 76 61      {.        va
63c0: 5f 6c 69 73 74 20 61 72 67 73 3b 0a 20 20 20 20  _list args;.    
63d0: 20 20 20 20 76 61 5f 73 74 61 72 74 28 61 72 67      va_start(arg
63e0: 73 2c 20 6d 65 74 68 6f 64 49 44 29 3b 0a 20 20  s, methodID);.  
63f0: 20 20 20 20 20 20 6a 6f 62 6a 65 63 74 20 72 65        jobject re
6400: 73 75 6c 74 20 3d 20 66 75 6e 63 74 69 6f 6e 73  sult = functions
6410: 2d 3e 4e 65 77 4f 62 6a 65 63 74 56 28 74 68 69  ->NewObjectV(thi
6420: 73 2c 20 63 6c 61 7a 7a 2c 20 6d 65 74 68 6f 64  s, clazz, method
6430: 49 44 2c 20 61 72 67 73 29 3b 0a 20 20 20 20 20  ID, args);.     
6440: 20 20 20 76 61 5f 65 6e 64 28 61 72 67 73 29 3b     va_end(args);
6450: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
6460: 72 65 73 75 6c 74 3b 0a 20 20 20 20 7d 0a 0a 20  result;.    }.. 
6470: 20 20 20 6a 6f 62 6a 65 63 74 20 4e 65 77 4f 62     jobject NewOb
6480: 6a 65 63 74 56 28 6a 63 6c 61 73 73 20 63 6c 61  jectV(jclass cla
6490: 7a 7a 2c 20 6a 6d 65 74 68 6f 64 49 44 20 6d 65  zz, jmethodID me
64a0: 74 68 6f 64 49 44 2c 20 76 61 5f 6c 69 73 74 20  thodID, va_list 
64b0: 61 72 67 73 29 0a 20 20 20 20 7b 20 72 65 74 75  args).    { retu
64c0: 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65  rn functions->Ne
64d0: 77 4f 62 6a 65 63 74 56 28 74 68 69 73 2c 20 63  wObjectV(this, c
64e0: 6c 61 7a 7a 2c 20 6d 65 74 68 6f 64 49 44 2c 20  lazz, methodID, 
64f0: 61 72 67 73 29 3b 20 7d 0a 0a 20 20 20 20 6a 6f  args); }..    jo
6500: 62 6a 65 63 74 20 4e 65 77 4f 62 6a 65 63 74 41  bject NewObjectA
6510: 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20 6a  (jclass clazz, j
6520: 6d 65 74 68 6f 64 49 44 20 6d 65 74 68 6f 64 49  methodID methodI
6530: 44 2c 20 6a 76 61 6c 75 65 2a 20 61 72 67 73 29  D, jvalue* args)
6540: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
6550: 6e 63 74 69 6f 6e 73 2d 3e 4e 65 77 4f 62 6a 65  nctions->NewObje
6560: 63 74 41 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c  ctA(this, clazz,
6570: 20 6d 65 74 68 6f 64 49 44 2c 20 61 72 67 73 29   methodID, args)
6580: 3b 20 7d 0a 0a 20 20 20 20 6a 63 6c 61 73 73 20  ; }..    jclass 
6590: 47 65 74 4f 62 6a 65 63 74 43 6c 61 73 73 28 6a  GetObjectClass(j
65a0: 6f 62 6a 65 63 74 20 6f 62 6a 29 0a 20 20 20 20  object obj).    
65b0: 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f  { return functio
65c0: 6e 73 2d 3e 47 65 74 4f 62 6a 65 63 74 43 6c 61  ns->GetObjectCla
65d0: 73 73 28 74 68 69 73 2c 20 6f 62 6a 29 3b 20 7d  ss(this, obj); }
65e0: 0a 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20 49  ..    jboolean I
65f0: 73 49 6e 73 74 61 6e 63 65 4f 66 28 6a 6f 62 6a  sInstanceOf(jobj
6600: 65 63 74 20 6f 62 6a 2c 20 6a 63 6c 61 73 73 20  ect obj, jclass 
6610: 63 6c 61 7a 7a 29 0a 20 20 20 20 7b 20 72 65 74  clazz).    { ret
6620: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 49  urn functions->I
6630: 73 49 6e 73 74 61 6e 63 65 4f 66 28 74 68 69 73  sInstanceOf(this
6640: 2c 20 6f 62 6a 2c 20 63 6c 61 7a 7a 29 3b 20 7d  , obj, clazz); }
6650: 0a 0a 20 20 20 20 6a 6d 65 74 68 6f 64 49 44 20  ..    jmethodID 
6660: 47 65 74 4d 65 74 68 6f 64 49 44 28 6a 63 6c 61  GetMethodID(jcla
6670: 73 73 20 63 6c 61 7a 7a 2c 20 63 6f 6e 73 74 20  ss clazz, const 
6680: 63 68 61 72 2a 20 6e 61 6d 65 2c 20 63 6f 6e 73  char* name, cons
6690: 74 20 63 68 61 72 2a 20 73 69 67 29 0a 20 20 20  t char* sig).   
66a0: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
66b0: 6f 6e 73 2d 3e 47 65 74 4d 65 74 68 6f 64 49 44  ons->GetMethodID
66c0: 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 6e 61  (this, clazz, na
66d0: 6d 65 2c 20 73 69 67 29 3b 20 7d 0a 0a 23 64 65  me, sig); }..#de
66e0: 66 69 6e 65 20 43 41 4c 4c 5f 54 59 50 45 5f 4d  fine CALL_TYPE_M
66f0: 45 54 48 4f 44 28 5f 6a 74 79 70 65 2c 20 5f 6a  ETHOD(_jtype, _j
6700: 6e 61 6d 65 29 20 20 20 20 20 20 20 20 20 20 20  name)           
6710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6720: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 5f           \.    _
6730: 6a 74 79 70 65 20 43 61 6c 6c 23 23 5f 6a 6e 61  jtype Call##_jna
6740: 6d 65 23 23 4d 65 74 68 6f 64 28 6a 6f 62 6a 65  me##Method(jobje
6750: 63 74 20 6f 62 6a 2c 20 6a 6d 65 74 68 6f 64 49  ct obj, jmethodI
6760: 44 20 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29  D methodID, ...)
6770: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 7b 20 20         \.    {  
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67c0: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 5f       \.        _
67d0: 6a 74 79 70 65 20 72 65 73 75 6c 74 3b 20 20 20  jtype result;   
67e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6810: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 76 61 5f     \.        va_
6820: 6c 69 73 74 20 61 72 67 73 3b 20 20 20 20 20 20  list args;      
6830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6860: 20 5c 0a 20 20 20 20 20 20 20 20 76 61 5f 73 74   \.        va_st
6870: 61 72 74 28 61 72 67 73 2c 20 6d 65 74 68 6f 64  art(args, method
6880: 49 44 29 3b 20 20 20 20 20 20 20 20 20 20 20 20  ID);            
6890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
68b0: 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20  .        result 
68c0: 3d 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 43 61 6c  = functions->Cal
68d0: 6c 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74 68 6f  l##_jname##Metho
68e0: 64 56 28 74 68 69 73 2c 20 6f 62 6a 2c 20 6d 65  dV(this, obj, me
68f0: 74 68 6f 64 49 44 2c 20 20 20 20 20 20 5c 0a 20  thodID,      \. 
6900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6910: 20 20 20 61 72 67 73 29 3b 20 20 20 20 20 20 20     args);       
6920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
6950: 20 20 20 20 20 76 61 5f 65 6e 64 28 61 72 67 73       va_end(args
6960: 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  );              
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6990: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
69a0: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
69b0: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
69c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69e0: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 7d 0a 23         \.    }.#
69f0: 64 65 66 69 6e 65 20 43 41 4c 4c 5f 54 59 50 45  define CALL_TYPE
6a00: 5f 4d 45 54 48 4f 44 56 28 5f 6a 74 79 70 65 2c  _METHODV(_jtype,
6a10: 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20   _jname)        
6a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a30: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
6a40: 20 5f 6a 74 79 70 65 20 43 61 6c 6c 23 23 5f 6a   _jtype Call##_j
6a50: 6e 61 6d 65 23 23 4d 65 74 68 6f 64 56 28 6a 6f  name##MethodV(jo
6a60: 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 6d 65 74 68  bject obj, jmeth
6a70: 6f 64 49 44 20 6d 65 74 68 6f 64 49 44 2c 20 20  odID methodID,  
6a80: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
6a90: 20 20 20 76 61 5f 6c 69 73 74 20 61 72 67 73 29     va_list args)
6aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ad0: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 7b 20 72         \.    { r
6ae0: 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d  eturn functions-
6af0: 3e 43 61 6c 6c 23 23 5f 6a 6e 61 6d 65 23 23 4d  >Call##_jname##M
6b00: 65 74 68 6f 64 56 28 74 68 69 73 2c 20 6f 62 6a  ethodV(this, obj
6b10: 2c 20 6d 65 74 68 6f 64 49 44 2c 20 61 72 67 73  , methodID, args
6b20: 29 3b 20 7d 0a 23 64 65 66 69 6e 65 20 43 41 4c  ); }.#define CAL
6b30: 4c 5f 54 59 50 45 5f 4d 45 54 48 4f 44 41 28 5f  L_TYPE_METHODA(_
6b40: 6a 74 79 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20  jtype, _jname)  
6b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b70: 20 5c 0a 20 20 20 20 5f 6a 74 79 70 65 20 43 61   \.    _jtype Ca
6b80: 6c 6c 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74 68  ll##_jname##Meth
6b90: 6f 64 41 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c  odA(jobject obj,
6ba0: 20 6a 6d 65 74 68 6f 64 49 44 20 6d 65 74 68 6f   jmethodID metho
6bb0: 64 49 44 2c 20 20 20 20 20 20 20 20 20 20 20 5c  dID,           \
6bc0: 0a 20 20 20 20 20 20 20 20 6a 76 61 6c 75 65 2a  .        jvalue*
6bd0: 20 61 72 67 73 29 20 20 20 20 20 20 20 20 20 20   args)          
6be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
6c10: 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63     { return func
6c20: 74 69 6f 6e 73 2d 3e 43 61 6c 6c 23 23 5f 6a 6e  tions->Call##_jn
6c30: 61 6d 65 23 23 4d 65 74 68 6f 64 41 28 74 68 69  ame##MethodA(thi
6c40: 73 2c 20 6f 62 6a 2c 20 6d 65 74 68 6f 64 49 44  s, obj, methodID
6c50: 2c 20 61 72 67 73 29 3b 20 7d 0a 0a 23 64 65 66  , args); }..#def
6c60: 69 6e 65 20 43 41 4c 4c 5f 54 59 50 45 28 5f 6a  ine CALL_TYPE(_j
6c70: 74 79 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20 20  type, _jname)   
6c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ca0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 43 41          \.    CA
6cb0: 4c 4c 5f 54 59 50 45 5f 4d 45 54 48 4f 44 28 5f  LL_TYPE_METHOD(_
6cc0: 6a 74 79 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20  jtype, _jname)  
6cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6cf0: 20 20 20 20 20 20 5c 0a 20 20 20 20 43 41 4c 4c        \.    CALL
6d00: 5f 54 59 50 45 5f 4d 45 54 48 4f 44 56 28 5f 6a  _TYPE_METHODV(_j
6d10: 74 79 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20 20  type, _jname)   
6d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d40: 20 20 20 20 5c 0a 20 20 20 20 43 41 4c 4c 5f 54      \.    CALL_T
6d50: 59 50 45 5f 4d 45 54 48 4f 44 41 28 5f 6a 74 79  YPE_METHODA(_jty
6d60: 70 65 2c 20 5f 6a 6e 61 6d 65 29 0a 0a 20 20 20  pe, _jname)..   
6d70: 20 43 41 4c 4c 5f 54 59 50 45 28 6a 6f 62 6a 65   CALL_TYPE(jobje
6d80: 63 74 2c 20 4f 62 6a 65 63 74 29 0a 20 20 20 20  ct, Object).    
6d90: 43 41 4c 4c 5f 54 59 50 45 28 6a 62 6f 6f 6c 65  CALL_TYPE(jboole
6da0: 61 6e 2c 20 42 6f 6f 6c 65 61 6e 29 0a 20 20 20  an, Boolean).   
6db0: 20 43 41 4c 4c 5f 54 59 50 45 28 6a 62 79 74 65   CALL_TYPE(jbyte
6dc0: 2c 20 42 79 74 65 29 0a 20 20 20 20 43 41 4c 4c  , Byte).    CALL
6dd0: 5f 54 59 50 45 28 6a 63 68 61 72 2c 20 43 68 61  _TYPE(jchar, Cha
6de0: 72 29 0a 20 20 20 20 43 41 4c 4c 5f 54 59 50 45  r).    CALL_TYPE
6df0: 28 6a 73 68 6f 72 74 2c 20 53 68 6f 72 74 29 0a  (jshort, Short).
6e00: 20 20 20 20 43 41 4c 4c 5f 54 59 50 45 28 6a 69      CALL_TYPE(ji
6e10: 6e 74 2c 20 49 6e 74 29 0a 20 20 20 20 43 41 4c  nt, Int).    CAL
6e20: 4c 5f 54 59 50 45 28 6a 6c 6f 6e 67 2c 20 4c 6f  L_TYPE(jlong, Lo
6e30: 6e 67 29 0a 20 20 20 20 43 41 4c 4c 5f 54 59 50  ng).    CALL_TYP
6e40: 45 28 6a 66 6c 6f 61 74 2c 20 46 6c 6f 61 74 29  E(jfloat, Float)
6e50: 0a 20 20 20 20 43 41 4c 4c 5f 54 59 50 45 28 6a  .    CALL_TYPE(j
6e60: 64 6f 75 62 6c 65 2c 20 44 6f 75 62 6c 65 29 0a  double, Double).
6e70: 0a 20 20 20 20 76 6f 69 64 20 43 61 6c 6c 56 6f  .    void CallVo
6e80: 69 64 4d 65 74 68 6f 64 28 6a 6f 62 6a 65 63 74  idMethod(jobject
6e90: 20 6f 62 6a 2c 20 6a 6d 65 74 68 6f 64 49 44 20   obj, jmethodID 
6ea0: 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 0a 20  methodID, ...). 
6eb0: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 76 61 5f     {.        va_
6ec0: 6c 69 73 74 20 61 72 67 73 3b 0a 20 20 20 20 20  list args;.     
6ed0: 20 20 20 76 61 5f 73 74 61 72 74 28 61 72 67 73     va_start(args
6ee0: 2c 20 6d 65 74 68 6f 64 49 44 29 3b 0a 20 20 20  , methodID);.   
6ef0: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 2d 3e       functions->
6f00: 43 61 6c 6c 56 6f 69 64 4d 65 74 68 6f 64 56 28  CallVoidMethodV(
6f10: 74 68 69 73 2c 20 6f 62 6a 2c 20 6d 65 74 68 6f  this, obj, metho
6f20: 64 49 44 2c 20 61 72 67 73 29 3b 0a 20 20 20 20  dID, args);.    
6f30: 20 20 20 20 76 61 5f 65 6e 64 28 61 72 67 73 29      va_end(args)
6f40: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 76 6f 69 64  ;.    }.    void
6f50: 20 43 61 6c 6c 56 6f 69 64 4d 65 74 68 6f 64 56   CallVoidMethodV
6f60: 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 6d  (jobject obj, jm
6f70: 65 74 68 6f 64 49 44 20 6d 65 74 68 6f 64 49 44  ethodID methodID
6f80: 2c 20 76 61 5f 6c 69 73 74 20 61 72 67 73 29 0a  , va_list args).
6f90: 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d      { functions-
6fa0: 3e 43 61 6c 6c 56 6f 69 64 4d 65 74 68 6f 64 56  >CallVoidMethodV
6fb0: 28 74 68 69 73 2c 20 6f 62 6a 2c 20 6d 65 74 68  (this, obj, meth
6fc0: 6f 64 49 44 2c 20 61 72 67 73 29 3b 20 7d 0a 20  odID, args); }. 
6fd0: 20 20 20 76 6f 69 64 20 43 61 6c 6c 56 6f 69 64     void CallVoid
6fe0: 4d 65 74 68 6f 64 41 28 6a 6f 62 6a 65 63 74 20  MethodA(jobject 
6ff0: 6f 62 6a 2c 20 6a 6d 65 74 68 6f 64 49 44 20 6d  obj, jmethodID m
7000: 65 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a  ethodID, jvalue*
7010: 20 61 72 67 73 29 0a 20 20 20 20 7b 20 66 75 6e   args).    { fun
7020: 63 74 69 6f 6e 73 2d 3e 43 61 6c 6c 56 6f 69 64  ctions->CallVoid
7030: 4d 65 74 68 6f 64 41 28 74 68 69 73 2c 20 6f 62  MethodA(this, ob
7040: 6a 2c 20 6d 65 74 68 6f 64 49 44 2c 20 61 72 67  j, methodID, arg
7050: 73 29 3b 20 7d 0a 0a 23 64 65 66 69 6e 65 20 43  s); }..#define C
7060: 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59 50 45  ALL_NONVIRT_TYPE
7070: 5f 4d 45 54 48 4f 44 28 5f 6a 74 79 70 65 2c 20  _METHOD(_jtype, 
7080: 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20 20  _jname)         
7090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70a0: 20 20 20 5c 0a 20 20 20 20 5f 6a 74 79 70 65 20     \.    _jtype 
70b0: 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 23 23  CallNonvirtual##
70c0: 5f 6a 6e 61 6d 65 23 23 4d 65 74 68 6f 64 28 6a  _jname##Method(j
70d0: 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 63 6c 61  object obj, jcla
70e0: 73 73 20 63 6c 61 7a 7a 2c 20 20 20 20 20 20 20  ss clazz,       
70f0: 20 5c 0a 20 20 20 20 20 20 20 20 6a 6d 65 74 68   \.        jmeth
7100: 6f 64 49 44 20 6d 65 74 68 6f 64 49 44 2c 20 2e  odID methodID, .
7110: 2e 2e 29 20 20 20 20 20 20 20 20 20 20 20 20 20  ..)             
7120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
7140: 0a 20 20 20 20 7b 20 20 20 20 20 20 20 20 20 20  .    {          
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7180: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
7190: 20 20 20 20 20 20 20 5f 6a 74 79 70 65 20 72 65         _jtype re
71a0: 73 75 6c 74 3b 20 20 20 20 20 20 20 20 20 20 20  sult;           
71b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
71c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
71d0: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
71e0: 20 20 20 20 20 76 61 5f 6c 69 73 74 20 61 72 67       va_list arg
71f0: 73 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  s;              
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7220: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
7230: 20 20 20 76 61 5f 73 74 61 72 74 28 61 72 67 73     va_start(args
7240: 2c 20 6d 65 74 68 6f 64 49 44 29 3b 20 20 20 20  , methodID);    
7250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7270: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20         \.       
7280: 20 72 65 73 75 6c 74 20 3d 20 66 75 6e 63 74 69   result = functi
7290: 6f 6e 73 2d 3e 43 61 6c 6c 4e 6f 6e 76 69 72 74  ons->CallNonvirt
72a0: 75 61 6c 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74  ual##_jname##Met
72b0: 68 6f 64 56 28 74 68 69 73 2c 20 6f 62 6a 2c 20  hodV(this, obj, 
72c0: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20       \.         
72d0: 20 20 20 20 20 20 20 20 20 20 20 63 6c 61 7a 7a             clazz
72e0: 2c 20 6d 65 74 68 6f 64 49 44 2c 20 61 72 67 73  , methodID, args
72f0: 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  );              
7300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7310: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 76 61 5f     \.        va_
7320: 65 6e 64 28 61 72 67 73 29 3b 20 20 20 20 20 20  end(args);      
7330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7360: 20 5c 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   \.        retur
7370: 6e 20 72 65 73 75 6c 74 3b 20 20 20 20 20 20 20  n result;       
7380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
73b0: 0a 20 20 20 20 7d 0a 23 64 65 66 69 6e 65 20 43  .    }.#define C
73c0: 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59 50 45  ALL_NONVIRT_TYPE
73d0: 5f 4d 45 54 48 4f 44 56 28 5f 6a 74 79 70 65 2c  _METHODV(_jtype,
73e0: 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20   _jname)        
73f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7400: 20 20 20 5c 0a 20 20 20 20 5f 6a 74 79 70 65 20     \.    _jtype 
7410: 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c 23 23  CallNonvirtual##
7420: 5f 6a 6e 61 6d 65 23 23 4d 65 74 68 6f 64 56 28  _jname##MethodV(
7430: 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 63 6c  jobject obj, jcl
7440: 61 73 73 20 63 6c 61 7a 7a 2c 20 20 20 20 20 20  ass clazz,      
7450: 20 5c 0a 20 20 20 20 20 20 20 20 6a 6d 65 74 68   \.        jmeth
7460: 6f 64 49 44 20 6d 65 74 68 6f 64 49 44 2c 20 76  odID methodID, v
7470: 61 5f 6c 69 73 74 20 61 72 67 73 29 20 20 20 20  a_list args)    
7480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
74a0: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
74b0: 6e 63 74 69 6f 6e 73 2d 3e 43 61 6c 6c 4e 6f 6e  nctions->CallNon
74c0: 76 69 72 74 75 61 6c 23 23 5f 6a 6e 61 6d 65 23  virtual##_jname#
74d0: 23 4d 65 74 68 6f 64 56 28 74 68 69 73 2c 20 6f  #MethodV(this, o
74e0: 62 6a 2c 20 63 6c 61 7a 7a 2c 20 20 20 5c 0a 20  bj, clazz,   \. 
74f0: 20 20 20 20 20 20 20 6d 65 74 68 6f 64 49 44 2c         methodID,
7500: 20 61 72 67 73 29 3b 20 7d 0a 23 64 65 66 69 6e   args); }.#defin
7510: 65 20 43 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54  e CALL_NONVIRT_T
7520: 59 50 45 5f 4d 45 54 48 4f 44 41 28 5f 6a 74 79  YPE_METHODA(_jty
7530: 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20  pe, _jname)     
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7550: 20 20 20 20 20 20 5c 0a 20 20 20 20 5f 6a 74 79        \.    _jty
7560: 70 65 20 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61  pe CallNonvirtua
7570: 6c 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74 68 6f  l##_jname##Metho
7580: 64 41 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c 20  dA(jobject obj, 
7590: 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20 20 20  jclass clazz,   
75a0: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 6a 6d      \.        jm
75b0: 65 74 68 6f 64 49 44 20 6d 65 74 68 6f 64 49 44  ethodID methodID
75c0: 2c 20 6a 76 61 6c 75 65 2a 20 61 72 67 73 29 20  , jvalue* args) 
75d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75f0: 20 20 5c 0a 20 20 20 20 7b 20 72 65 74 75 72 6e    \.    { return
7600: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 43 61 6c 6c   functions->Call
7610: 4e 6f 6e 76 69 72 74 75 61 6c 23 23 5f 6a 6e 61  Nonvirtual##_jna
7620: 6d 65 23 23 4d 65 74 68 6f 64 41 28 74 68 69 73  me##MethodA(this
7630: 2c 20 6f 62 6a 2c 20 63 6c 61 7a 7a 2c 20 20 20  , obj, clazz,   
7640: 5c 0a 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64  \.        method
7650: 49 44 2c 20 61 72 67 73 29 3b 20 7d 0a 0a 23 64  ID, args); }..#d
7660: 65 66 69 6e 65 20 43 41 4c 4c 5f 4e 4f 4e 56 49  efine CALL_NONVI
7670: 52 54 5f 54 59 50 45 28 5f 6a 74 79 70 65 2c 20  RT_TYPE(_jtype, 
7680: 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20 20  _jname)         
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76a0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
76b0: 43 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59 50  CALL_NONVIRT_TYP
76c0: 45 5f 4d 45 54 48 4f 44 28 5f 6a 74 79 70 65 2c  E_METHOD(_jtype,
76d0: 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20   _jname)        
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76f0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 43 41          \.    CA
7700: 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59 50 45 5f  LL_NONVIRT_TYPE_
7710: 4d 45 54 48 4f 44 56 28 5f 6a 74 79 70 65 2c 20  METHODV(_jtype, 
7720: 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20 20  _jname)         
7730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7740: 20 20 20 20 20 20 5c 0a 20 20 20 20 43 41 4c 4c        \.    CALL
7750: 5f 4e 4f 4e 56 49 52 54 5f 54 59 50 45 5f 4d 45  _NONVIRT_TYPE_ME
7760: 54 48 4f 44 41 28 5f 6a 74 79 70 65 2c 20 5f 6a  THODA(_jtype, _j
7770: 6e 61 6d 65 29 0a 0a 20 20 20 20 43 41 4c 4c 5f  name)..    CALL_
7780: 4e 4f 4e 56 49 52 54 5f 54 59 50 45 28 6a 6f 62  NONVIRT_TYPE(job
7790: 6a 65 63 74 2c 20 4f 62 6a 65 63 74 29 0a 20 20  ject, Object).  
77a0: 20 20 43 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54    CALL_NONVIRT_T
77b0: 59 50 45 28 6a 62 6f 6f 6c 65 61 6e 2c 20 42 6f  YPE(jboolean, Bo
77c0: 6f 6c 65 61 6e 29 0a 20 20 20 20 43 41 4c 4c 5f  olean).    CALL_
77d0: 4e 4f 4e 56 49 52 54 5f 54 59 50 45 28 6a 62 79  NONVIRT_TYPE(jby
77e0: 74 65 2c 20 42 79 74 65 29 0a 20 20 20 20 43 41  te, Byte).    CA
77f0: 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59 50 45 28  LL_NONVIRT_TYPE(
7800: 6a 63 68 61 72 2c 20 43 68 61 72 29 0a 20 20 20  jchar, Char).   
7810: 20 43 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59   CALL_NONVIRT_TY
7820: 50 45 28 6a 73 68 6f 72 74 2c 20 53 68 6f 72 74  PE(jshort, Short
7830: 29 0a 20 20 20 20 43 41 4c 4c 5f 4e 4f 4e 56 49  ).    CALL_NONVI
7840: 52 54 5f 54 59 50 45 28 6a 69 6e 74 2c 20 49 6e  RT_TYPE(jint, In
7850: 74 29 0a 20 20 20 20 43 41 4c 4c 5f 4e 4f 4e 56  t).    CALL_NONV
7860: 49 52 54 5f 54 59 50 45 28 6a 6c 6f 6e 67 2c 20  IRT_TYPE(jlong, 
7870: 4c 6f 6e 67 29 0a 20 20 20 20 43 41 4c 4c 5f 4e  Long).    CALL_N
7880: 4f 4e 56 49 52 54 5f 54 59 50 45 28 6a 66 6c 6f  ONVIRT_TYPE(jflo
7890: 61 74 2c 20 46 6c 6f 61 74 29 0a 20 20 20 20 43  at, Float).    C
78a0: 41 4c 4c 5f 4e 4f 4e 56 49 52 54 5f 54 59 50 45  ALL_NONVIRT_TYPE
78b0: 28 6a 64 6f 75 62 6c 65 2c 20 44 6f 75 62 6c 65  (jdouble, Double
78c0: 29 0a 0a 20 20 20 20 76 6f 69 64 20 43 61 6c 6c  )..    void Call
78d0: 4e 6f 6e 76 69 72 74 75 61 6c 56 6f 69 64 4d 65  NonvirtualVoidMe
78e0: 74 68 6f 64 28 6a 6f 62 6a 65 63 74 20 6f 62 6a  thod(jobject obj
78f0: 2c 20 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 0a  , jclass clazz,.
7900: 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64 49          jmethodI
7910: 44 20 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29  D methodID, ...)
7920: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 76  .    {.        v
7930: 61 5f 6c 69 73 74 20 61 72 67 73 3b 0a 20 20 20  a_list args;.   
7940: 20 20 20 20 20 76 61 5f 73 74 61 72 74 28 61 72       va_start(ar
7950: 67 73 2c 20 6d 65 74 68 6f 64 49 44 29 3b 0a 20  gs, methodID);. 
7960: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73         functions
7970: 2d 3e 43 61 6c 6c 4e 6f 6e 76 69 72 74 75 61 6c  ->CallNonvirtual
7980: 56 6f 69 64 4d 65 74 68 6f 64 56 28 74 68 69 73  VoidMethodV(this
7990: 2c 20 6f 62 6a 2c 20 63 6c 61 7a 7a 2c 20 6d 65  , obj, clazz, me
79a0: 74 68 6f 64 49 44 2c 20 61 72 67 73 29 3b 0a 20  thodID, args);. 
79b0: 20 20 20 20 20 20 20 76 61 5f 65 6e 64 28 61 72         va_end(ar
79c0: 67 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 76  gs);.    }.    v
79d0: 6f 69 64 20 43 61 6c 6c 4e 6f 6e 76 69 72 74 75  oid CallNonvirtu
79e0: 61 6c 56 6f 69 64 4d 65 74 68 6f 64 56 28 6a 6f  alVoidMethodV(jo
79f0: 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 63 6c 61 73  bject obj, jclas
7a00: 73 20 63 6c 61 7a 7a 2c 0a 20 20 20 20 20 20 20  s clazz,.       
7a10: 20 6a 6d 65 74 68 6f 64 49 44 20 6d 65 74 68 6f   jmethodID metho
7a20: 64 49 44 2c 20 76 61 5f 6c 69 73 74 20 61 72 67  dID, va_list arg
7a30: 73 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f  s).    { functio
7a40: 6e 73 2d 3e 43 61 6c 6c 4e 6f 6e 76 69 72 74 75  ns->CallNonvirtu
7a50: 61 6c 56 6f 69 64 4d 65 74 68 6f 64 56 28 74 68  alVoidMethodV(th
7a60: 69 73 2c 20 6f 62 6a 2c 20 63 6c 61 7a 7a 2c 20  is, obj, clazz, 
7a70: 6d 65 74 68 6f 64 49 44 2c 20 61 72 67 73 29 3b  methodID, args);
7a80: 20 7d 0a 20 20 20 20 76 6f 69 64 20 43 61 6c 6c   }.    void Call
7a90: 4e 6f 6e 76 69 72 74 75 61 6c 56 6f 69 64 4d 65  NonvirtualVoidMe
7aa0: 74 68 6f 64 41 28 6a 6f 62 6a 65 63 74 20 6f 62  thodA(jobject ob
7ab0: 6a 2c 20 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c  j, jclass clazz,
7ac0: 0a 20 20 20 20 20 20 20 20 6a 6d 65 74 68 6f 64  .        jmethod
7ad0: 49 44 20 6d 65 74 68 6f 64 49 44 2c 20 6a 76 61  ID methodID, jva
7ae0: 6c 75 65 2a 20 61 72 67 73 29 0a 20 20 20 20 7b  lue* args).    {
7af0: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 43 61 6c 6c   functions->Call
7b00: 4e 6f 6e 76 69 72 74 75 61 6c 56 6f 69 64 4d 65  NonvirtualVoidMe
7b10: 74 68 6f 64 41 28 74 68 69 73 2c 20 6f 62 6a 2c  thodA(this, obj,
7b20: 20 63 6c 61 7a 7a 2c 20 6d 65 74 68 6f 64 49 44   clazz, methodID
7b30: 2c 20 61 72 67 73 29 3b 20 7d 0a 0a 20 20 20 20  , args); }..    
7b40: 6a 66 69 65 6c 64 49 44 20 47 65 74 46 69 65 6c  jfieldID GetFiel
7b50: 64 49 44 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a  dID(jclass clazz
7b60: 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 6e 61  , const char* na
7b70: 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 20  me, const char* 
7b80: 73 69 67 29 0a 20 20 20 20 7b 20 72 65 74 75 72  sig).    { retur
7b90: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74  n functions->Get
7ba0: 46 69 65 6c 64 49 44 28 74 68 69 73 2c 20 63 6c  FieldID(this, cl
7bb0: 61 7a 7a 2c 20 6e 61 6d 65 2c 20 73 69 67 29 3b  azz, name, sig);
7bc0: 20 7d 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20   }..    jobject 
7bd0: 47 65 74 4f 62 6a 65 63 74 46 69 65 6c 64 28 6a  GetObjectField(j
7be0: 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 66 69 65  object obj, jfie
7bf0: 6c 64 49 44 20 66 69 65 6c 64 49 44 29 0a 20 20  ldID fieldID).  
7c00: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
7c10: 69 6f 6e 73 2d 3e 47 65 74 4f 62 6a 65 63 74 46  ions->GetObjectF
7c20: 69 65 6c 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20  ield(this, obj, 
7c30: 66 69 65 6c 64 49 44 29 3b 20 7d 0a 20 20 20 20  fieldID); }.    
7c40: 6a 62 6f 6f 6c 65 61 6e 20 47 65 74 42 6f 6f 6c  jboolean GetBool
7c50: 65 61 6e 46 69 65 6c 64 28 6a 6f 62 6a 65 63 74  eanField(jobject
7c60: 20 6f 62 6a 2c 20 6a 66 69 65 6c 64 49 44 20 66   obj, jfieldID f
7c70: 69 65 6c 64 49 44 29 0a 20 20 20 20 7b 20 72 65  ieldID).    { re
7c80: 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e  turn functions->
7c90: 47 65 74 42 6f 6f 6c 65 61 6e 46 69 65 6c 64 28  GetBooleanField(
7ca0: 74 68 69 73 2c 20 6f 62 6a 2c 20 66 69 65 6c 64  this, obj, field
7cb0: 49 44 29 3b 20 7d 0a 20 20 20 20 6a 62 79 74 65  ID); }.    jbyte
7cc0: 20 47 65 74 42 79 74 65 46 69 65 6c 64 28 6a 6f   GetByteField(jo
7cd0: 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 66 69 65 6c  bject obj, jfiel
7ce0: 64 49 44 20 66 69 65 6c 64 49 44 29 0a 20 20 20  dID fieldID).   
7cf0: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
7d00: 6f 6e 73 2d 3e 47 65 74 42 79 74 65 46 69 65 6c  ons->GetByteFiel
7d10: 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20 66 69 65  d(this, obj, fie
7d20: 6c 64 49 44 29 3b 20 7d 0a 20 20 20 20 6a 63 68  ldID); }.    jch
7d30: 61 72 20 47 65 74 43 68 61 72 46 69 65 6c 64 28  ar GetCharField(
7d40: 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 66 69  jobject obj, jfi
7d50: 65 6c 64 49 44 20 66 69 65 6c 64 49 44 29 0a 20  eldID fieldID). 
7d60: 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63     { return func
7d70: 74 69 6f 6e 73 2d 3e 47 65 74 43 68 61 72 46 69  tions->GetCharFi
7d80: 65 6c 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20 66  eld(this, obj, f
7d90: 69 65 6c 64 49 44 29 3b 20 7d 0a 20 20 20 20 6a  ieldID); }.    j
7da0: 73 68 6f 72 74 20 47 65 74 53 68 6f 72 74 46 69  short GetShortFi
7db0: 65 6c 64 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c  eld(jobject obj,
7dc0: 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64 49   jfieldID fieldI
7dd0: 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  D).    { return 
7de0: 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 68  functions->GetSh
7df0: 6f 72 74 46 69 65 6c 64 28 74 68 69 73 2c 20 6f  ortField(this, o
7e00: 62 6a 2c 20 66 69 65 6c 64 49 44 29 3b 20 7d 0a  bj, fieldID); }.
7e10: 20 20 20 20 6a 69 6e 74 20 47 65 74 49 6e 74 46      jint GetIntF
7e20: 69 65 6c 64 28 6a 6f 62 6a 65 63 74 20 6f 62 6a  ield(jobject obj
7e30: 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64  , jfieldID field
7e40: 49 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  ID).    { return
7e50: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 49   functions->GetI
7e60: 6e 74 46 69 65 6c 64 28 74 68 69 73 2c 20 6f 62  ntField(this, ob
7e70: 6a 2c 20 66 69 65 6c 64 49 44 29 3b 20 7d 0a 20  j, fieldID); }. 
7e80: 20 20 20 6a 6c 6f 6e 67 20 47 65 74 4c 6f 6e 67     jlong GetLong
7e90: 46 69 65 6c 64 28 6a 6f 62 6a 65 63 74 20 6f 62  Field(jobject ob
7ea0: 6a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c  j, jfieldID fiel
7eb0: 64 49 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72  dID).    { retur
7ec0: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74  n functions->Get
7ed0: 4c 6f 6e 67 46 69 65 6c 64 28 74 68 69 73 2c 20  LongField(this, 
7ee0: 6f 62 6a 2c 20 66 69 65 6c 64 49 44 29 3b 20 7d  obj, fieldID); }
7ef0: 0a 20 20 20 20 6a 66 6c 6f 61 74 20 47 65 74 46  .    jfloat GetF
7f00: 6c 6f 61 74 46 69 65 6c 64 28 6a 6f 62 6a 65 63  loatField(jobjec
7f10: 74 20 6f 62 6a 2c 20 6a 66 69 65 6c 64 49 44 20  t obj, jfieldID 
7f20: 66 69 65 6c 64 49 44 29 0a 20 20 20 20 7b 20 72  fieldID).    { r
7f30: 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d  eturn functions-
7f40: 3e 47 65 74 46 6c 6f 61 74 46 69 65 6c 64 28 74  >GetFloatField(t
7f50: 68 69 73 2c 20 6f 62 6a 2c 20 66 69 65 6c 64 49  his, obj, fieldI
7f60: 44 29 3b 20 7d 0a 20 20 20 20 6a 64 6f 75 62 6c  D); }.    jdoubl
7f70: 65 20 47 65 74 44 6f 75 62 6c 65 46 69 65 6c 64  e GetDoubleField
7f80: 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 66  (jobject obj, jf
7f90: 69 65 6c 64 49 44 20 66 69 65 6c 64 49 44 29 0a  ieldID fieldID).
7fa0: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e      { return fun
7fb0: 63 74 69 6f 6e 73 2d 3e 47 65 74 44 6f 75 62 6c  ctions->GetDoubl
7fc0: 65 46 69 65 6c 64 28 74 68 69 73 2c 20 6f 62 6a  eField(this, obj
7fd0: 2c 20 66 69 65 6c 64 49 44 29 3b 20 7d 0a 0a 20  , fieldID); }.. 
7fe0: 20 20 20 76 6f 69 64 20 53 65 74 4f 62 6a 65 63     void SetObjec
7ff0: 74 46 69 65 6c 64 28 6a 6f 62 6a 65 63 74 20 6f  tField(jobject o
8000: 62 6a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65  bj, jfieldID fie
8010: 6c 64 49 44 2c 20 6a 6f 62 6a 65 63 74 20 76 61  ldID, jobject va
8020: 6c 75 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  lue).    { funct
8030: 69 6f 6e 73 2d 3e 53 65 74 4f 62 6a 65 63 74 46  ions->SetObjectF
8040: 69 65 6c 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20  ield(this, obj, 
8050: 66 69 65 6c 64 49 44 2c 20 76 61 6c 75 65 29 3b  fieldID, value);
8060: 20 7d 0a 20 20 20 20 76 6f 69 64 20 53 65 74 42   }.    void SetB
8070: 6f 6f 6c 65 61 6e 46 69 65 6c 64 28 6a 6f 62 6a  ooleanField(jobj
8080: 65 63 74 20 6f 62 6a 2c 20 6a 66 69 65 6c 64 49  ect obj, jfieldI
8090: 44 20 66 69 65 6c 64 49 44 2c 20 6a 62 6f 6f 6c  D fieldID, jbool
80a0: 65 61 6e 20 76 61 6c 75 65 29 0a 20 20 20 20 7b  ean value).    {
80b0: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 42   functions->SetB
80c0: 6f 6f 6c 65 61 6e 46 69 65 6c 64 28 74 68 69 73  ooleanField(this
80d0: 2c 20 6f 62 6a 2c 20 66 69 65 6c 64 49 44 2c 20  , obj, fieldID, 
80e0: 76 61 6c 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f  value); }.    vo
80f0: 69 64 20 53 65 74 42 79 74 65 46 69 65 6c 64 28  id SetByteField(
8100: 6a 6f 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 66 69  jobject obj, jfi
8110: 65 6c 64 49 44 20 66 69 65 6c 64 49 44 2c 20 6a  eldID fieldID, j
8120: 62 79 74 65 20 76 61 6c 75 65 29 0a 20 20 20 20  byte value).    
8130: 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74  { functions->Set
8140: 42 79 74 65 46 69 65 6c 64 28 74 68 69 73 2c 20  ByteField(this, 
8150: 6f 62 6a 2c 20 66 69 65 6c 64 49 44 2c 20 76 61  obj, fieldID, va
8160: 6c 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64  lue); }.    void
8170: 20 53 65 74 43 68 61 72 46 69 65 6c 64 28 6a 6f   SetCharField(jo
8180: 62 6a 65 63 74 20 6f 62 6a 2c 20 6a 66 69 65 6c  bject obj, jfiel
8190: 64 49 44 20 66 69 65 6c 64 49 44 2c 20 6a 63 68  dID fieldID, jch
81a0: 61 72 20 76 61 6c 75 65 29 0a 20 20 20 20 7b 20  ar value).    { 
81b0: 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 43 68  functions->SetCh
81c0: 61 72 46 69 65 6c 64 28 74 68 69 73 2c 20 6f 62  arField(this, ob
81d0: 6a 2c 20 66 69 65 6c 64 49 44 2c 20 76 61 6c 75  j, fieldID, valu
81e0: 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 53  e); }.    void S
81f0: 65 74 53 68 6f 72 74 46 69 65 6c 64 28 6a 6f 62  etShortField(job
8200: 6a 65 63 74 20 6f 62 6a 2c 20 6a 66 69 65 6c 64  ject obj, jfield
8210: 49 44 20 66 69 65 6c 64 49 44 2c 20 6a 73 68 6f  ID fieldID, jsho
8220: 72 74 20 76 61 6c 75 65 29 0a 20 20 20 20 7b 20  rt value).    { 
8230: 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 53 68  functions->SetSh
8240: 6f 72 74 46 69 65 6c 64 28 74 68 69 73 2c 20 6f  ortField(this, o
8250: 62 6a 2c 20 66 69 65 6c 64 49 44 2c 20 76 61 6c  bj, fieldID, val
8260: 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20  ue); }.    void 
8270: 53 65 74 49 6e 74 46 69 65 6c 64 28 6a 6f 62 6a  SetIntField(jobj
8280: 65 63 74 20 6f 62 6a 2c 20 6a 66 69 65 6c 64 49  ect obj, jfieldI
8290: 44 20 66 69 65 6c 64 49 44 2c 20 6a 69 6e 74 20  D fieldID, jint 
82a0: 76 61 6c 75 65 29 0a 20 20 20 20 7b 20 66 75 6e  value).    { fun
82b0: 63 74 69 6f 6e 73 2d 3e 53 65 74 49 6e 74 46 69  ctions->SetIntFi
82c0: 65 6c 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20 66  eld(this, obj, f
82d0: 69 65 6c 64 49 44 2c 20 76 61 6c 75 65 29 3b 20  ieldID, value); 
82e0: 7d 0a 20 20 20 20 76 6f 69 64 20 53 65 74 4c 6f  }.    void SetLo
82f0: 6e 67 46 69 65 6c 64 28 6a 6f 62 6a 65 63 74 20  ngField(jobject 
8300: 6f 62 6a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69  obj, jfieldID fi
8310: 65 6c 64 49 44 2c 20 6a 6c 6f 6e 67 20 76 61 6c  eldID, jlong val
8320: 75 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69  ue).    { functi
8330: 6f 6e 73 2d 3e 53 65 74 4c 6f 6e 67 46 69 65 6c  ons->SetLongFiel
8340: 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20 66 69 65  d(this, obj, fie
8350: 6c 64 49 44 2c 20 76 61 6c 75 65 29 3b 20 7d 0a  ldID, value); }.
8360: 20 20 20 20 76 6f 69 64 20 53 65 74 46 6c 6f 61      void SetFloa
8370: 74 46 69 65 6c 64 28 6a 6f 62 6a 65 63 74 20 6f  tField(jobject o
8380: 62 6a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65  bj, jfieldID fie
8390: 6c 64 49 44 2c 20 6a 66 6c 6f 61 74 20 76 61 6c  ldID, jfloat val
83a0: 75 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69  ue).    { functi
83b0: 6f 6e 73 2d 3e 53 65 74 46 6c 6f 61 74 46 69 65  ons->SetFloatFie
83c0: 6c 64 28 74 68 69 73 2c 20 6f 62 6a 2c 20 66 69  ld(this, obj, fi
83d0: 65 6c 64 49 44 2c 20 76 61 6c 75 65 29 3b 20 7d  eldID, value); }
83e0: 0a 20 20 20 20 76 6f 69 64 20 53 65 74 44 6f 75  .    void SetDou
83f0: 62 6c 65 46 69 65 6c 64 28 6a 6f 62 6a 65 63 74  bleField(jobject
8400: 20 6f 62 6a 2c 20 6a 66 69 65 6c 64 49 44 20 66   obj, jfieldID f
8410: 69 65 6c 64 49 44 2c 20 6a 64 6f 75 62 6c 65 20  ieldID, jdouble 
8420: 76 61 6c 75 65 29 0a 20 20 20 20 7b 20 66 75 6e  value).    { fun
8430: 63 74 69 6f 6e 73 2d 3e 53 65 74 44 6f 75 62 6c  ctions->SetDoubl
8440: 65 46 69 65 6c 64 28 74 68 69 73 2c 20 6f 62 6a  eField(this, obj
8450: 2c 20 66 69 65 6c 64 49 44 2c 20 76 61 6c 75 65  , fieldID, value
8460: 29 3b 20 7d 0a 0a 20 20 20 20 6a 6d 65 74 68 6f  ); }..    jmetho
8470: 64 49 44 20 47 65 74 53 74 61 74 69 63 4d 65 74  dID GetStaticMet
8480: 68 6f 64 49 44 28 6a 63 6c 61 73 73 20 63 6c 61  hodID(jclass cla
8490: 7a 7a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 20  zz, const char* 
84a0: 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72  name, const char
84b0: 2a 20 73 69 67 29 0a 20 20 20 20 7b 20 72 65 74  * sig).    { ret
84c0: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47  urn functions->G
84d0: 65 74 53 74 61 74 69 63 4d 65 74 68 6f 64 49 44  etStaticMethodID
84e0: 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 6e 61  (this, clazz, na
84f0: 6d 65 2c 20 73 69 67 29 3b 20 7d 0a 0a 23 64 65  me, sig); }..#de
8500: 66 69 6e 65 20 43 41 4c 4c 5f 53 54 41 54 49 43  fine CALL_STATIC
8510: 5f 54 59 50 45 5f 4d 45 54 48 4f 44 28 5f 6a 74  _TYPE_METHOD(_jt
8520: 79 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20 20 20  ype, _jname)    
8530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8540: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 5f           \.    _
8550: 6a 74 79 70 65 20 43 61 6c 6c 53 74 61 74 69 63  jtype CallStatic
8560: 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74 68 6f 64  ##_jname##Method
8570: 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20 6a  (jclass clazz, j
8580: 6d 65 74 68 6f 64 49 44 20 6d 65 74 68 6f 64 49  methodID methodI
8590: 44 2c 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20  D,     \.       
85a0: 20 2e 2e 2e 29 20 20 20 20 20 20 20 20 20 20 20   ...)           
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85e0: 20 20 20 20 20 5c 0a 20 20 20 20 7b 20 20 20 20       \.    {    
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8630: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 5f 6a 74     \.        _jt
8640: 79 70 65 20 72 65 73 75 6c 74 3b 20 20 20 20 20  ype result;     
8650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8680: 20 5c 0a 20 20 20 20 20 20 20 20 76 61 5f 6c 69   \.        va_li
8690: 73 74 20 61 72 67 73 3b 20 20 20 20 20 20 20 20  st args;        
86a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
86d0: 0a 20 20 20 20 20 20 20 20 76 61 5f 73 74 61 72  .        va_star
86e0: 74 28 61 72 67 73 2c 20 6d 65 74 68 6f 64 49 44  t(args, methodID
86f0: 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  );              
8700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8710: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
8720: 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
8730: 66 75 6e 63 74 69 6f 6e 73 2d 3e 43 61 6c 6c 53  functions->CallS
8740: 74 61 74 69 63 23 23 5f 6a 6e 61 6d 65 23 23 4d  tatic##_jname##M
8750: 65 74 68 6f 64 56 28 74 68 69 73 2c 20 63 6c 61  ethodV(this, cla
8760: 7a 7a 2c 20 20 20 20 20 20 20 20 5c 0a 20 20 20  zz,        \.   
8770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8780: 20 6d 65 74 68 6f 64 49 44 2c 20 61 72 67 73 29   methodID, args)
8790: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
87a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87b0: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
87c0: 20 20 20 76 61 5f 65 6e 64 28 61 72 67 73 29 3b     va_end(args);
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8800: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20         \.       
8810: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 20   return result; 
8820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8850: 20 20 20 20 20 5c 0a 20 20 20 20 7d 0a 23 64 65       \.    }.#de
8860: 66 69 6e 65 20 43 41 4c 4c 5f 53 54 41 54 49 43  fine CALL_STATIC
8870: 5f 54 59 50 45 5f 4d 45 54 48 4f 44 56 28 5f 6a  _TYPE_METHODV(_j
8880: 74 79 70 65 2c 20 5f 6a 6e 61 6d 65 29 20 20 20  type, _jname)   
8890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88a0: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 5f           \.    _
88b0: 6a 74 79 70 65 20 43 61 6c 6c 53 74 61 74 69 63  jtype CallStatic
88c0: 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74 68 6f 64  ##_jname##Method
88d0: 56 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20  V(jclass clazz, 
88e0: 6a 6d 65 74 68 6f 64 49 44 20 6d 65 74 68 6f 64  jmethodID method
88f0: 49 44 2c 20 20 20 20 5c 0a 20 20 20 20 20 20 20  ID,    \.       
8900: 20 76 61 5f 6c 69 73 74 20 61 72 67 73 29 20 20   va_list args)  
8910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8940: 20 20 20 20 20 5c 0a 20 20 20 20 7b 20 72 65 74       \.    { ret
8950: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 43  urn functions->C
8960: 61 6c 6c 53 74 61 74 69 63 23 23 5f 6a 6e 61 6d  allStatic##_jnam
8970: 65 23 23 4d 65 74 68 6f 64 56 28 74 68 69 73 2c  e##MethodV(this,
8980: 20 63 6c 61 7a 7a 2c 20 6d 65 74 68 6f 64 49 44   clazz, methodID
8990: 2c 20 20 5c 0a 20 20 20 20 20 20 20 20 61 72 67  ,  \.        arg
89a0: 73 29 3b 20 7d 0a 23 64 65 66 69 6e 65 20 43 41  s); }.#define CA
89b0: 4c 4c 5f 53 54 41 54 49 43 5f 54 59 50 45 5f 4d  LL_STATIC_TYPE_M
89c0: 45 54 48 4f 44 41 28 5f 6a 74 79 70 65 2c 20 5f  ETHODA(_jtype, _
89d0: 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20 20 20  jname)          
89e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89f0: 20 20 5c 0a 20 20 20 20 5f 6a 74 79 70 65 20 43    \.    _jtype C
8a00: 61 6c 6c 53 74 61 74 69 63 23 23 5f 6a 6e 61 6d  allStatic##_jnam
8a10: 65 23 23 4d 65 74 68 6f 64 41 28 6a 63 6c 61 73  e##MethodA(jclas
8a20: 73 20 63 6c 61 7a 7a 2c 20 6a 6d 65 74 68 6f 64  s clazz, jmethod
8a30: 49 44 20 6d 65 74 68 6f 64 49 44 2c 20 20 20 20  ID methodID,    
8a40: 5c 0a 20 20 20 20 20 20 20 20 6a 76 61 6c 75 65  \.        jvalue
8a50: 2a 20 61 72 67 73 29 20 20 20 20 20 20 20 20 20  * args)         
8a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
8a90: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e      { return fun
8aa0: 63 74 69 6f 6e 73 2d 3e 43 61 6c 6c 53 74 61 74  ctions->CallStat
8ab0: 69 63 23 23 5f 6a 6e 61 6d 65 23 23 4d 65 74 68  ic##_jname##Meth
8ac0: 6f 64 41 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c  odA(this, clazz,
8ad0: 20 6d 65 74 68 6f 64 49 44 2c 20 20 5c 0a 20 20   methodID,  \.  
8ae0: 20 20 20 20 20 20 61 72 67 73 29 3b 20 7d 0a 0a        args); }..
8af0: 23 64 65 66 69 6e 65 20 43 41 4c 4c 5f 53 54 41  #define CALL_STA
8b00: 54 49 43 5f 54 59 50 45 28 5f 6a 74 79 70 65 2c  TIC_TYPE(_jtype,
8b10: 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20   _jname)        
8b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b30: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
8b40: 20 20 43 41 4c 4c 5f 53 54 41 54 49 43 5f 54 59    CALL_STATIC_TY
8b50: 50 45 5f 4d 45 54 48 4f 44 28 5f 6a 74 79 70 65  PE_METHOD(_jtype
8b60: 2c 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20  , _jname)       
8b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b80: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
8b90: 43 41 4c 4c 5f 53 54 41 54 49 43 5f 54 59 50 45  CALL_STATIC_TYPE
8ba0: 5f 4d 45 54 48 4f 44 56 28 5f 6a 74 79 70 65 2c  _METHODV(_jtype,
8bb0: 20 5f 6a 6e 61 6d 65 29 20 20 20 20 20 20 20 20   _jname)        
8bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bd0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 43 41          \.    CA
8be0: 4c 4c 5f 53 54 41 54 49 43 5f 54 59 50 45 5f 4d  LL_STATIC_TYPE_M
8bf0: 45 54 48 4f 44 41 28 5f 6a 74 79 70 65 2c 20 5f  ETHODA(_jtype, _
8c00: 6a 6e 61 6d 65 29 0a 0a 20 20 20 20 43 41 4c 4c  jname)..    CALL
8c10: 5f 53 54 41 54 49 43 5f 54 59 50 45 28 6a 6f 62  _STATIC_TYPE(job
8c20: 6a 65 63 74 2c 20 4f 62 6a 65 63 74 29 0a 20 20  ject, Object).  
8c30: 20 20 43 41 4c 4c 5f 53 54 41 54 49 43 5f 54 59    CALL_STATIC_TY
8c40: 50 45 28 6a 62 6f 6f 6c 65 61 6e 2c 20 42 6f 6f  PE(jboolean, Boo
8c50: 6c 65 61 6e 29 0a 20 20 20 20 43 41 4c 4c 5f 53  lean).    CALL_S
8c60: 54 41 54 49 43 5f 54 59 50 45 28 6a 62 79 74 65  TATIC_TYPE(jbyte
8c70: 2c 20 42 79 74 65 29 0a 20 20 20 20 43 41 4c 4c  , Byte).    CALL
8c80: 5f 53 54 41 54 49 43 5f 54 59 50 45 28 6a 63 68  _STATIC_TYPE(jch
8c90: 61 72 2c 20 43 68 61 72 29 0a 20 20 20 20 43 41  ar, Char).    CA
8ca0: 4c 4c 5f 53 54 41 54 49 43 5f 54 59 50 45 28 6a  LL_STATIC_TYPE(j
8cb0: 73 68 6f 72 74 2c 20 53 68 6f 72 74 29 0a 20 20  short, Short).  
8cc0: 20 20 43 41 4c 4c 5f 53 54 41 54 49 43 5f 54 59    CALL_STATIC_TY
8cd0: 50 45 28 6a 69 6e 74 2c 20 49 6e 74 29 0a 20 20  PE(jint, Int).  
8ce0: 20 20 43 41 4c 4c 5f 53 54 41 54 49 43 5f 54 59    CALL_STATIC_TY
8cf0: 50 45 28 6a 6c 6f 6e 67 2c 20 4c 6f 6e 67 29 0a  PE(jlong, Long).
8d00: 20 20 20 20 43 41 4c 4c 5f 53 54 41 54 49 43 5f      CALL_STATIC_
8d10: 54 59 50 45 28 6a 66 6c 6f 61 74 2c 20 46 6c 6f  TYPE(jfloat, Flo
8d20: 61 74 29 0a 20 20 20 20 43 41 4c 4c 5f 53 54 41  at).    CALL_STA
8d30: 54 49 43 5f 54 59 50 45 28 6a 64 6f 75 62 6c 65  TIC_TYPE(jdouble
8d40: 2c 20 44 6f 75 62 6c 65 29 0a 0a 20 20 20 20 76  , Double)..    v
8d50: 6f 69 64 20 43 61 6c 6c 53 74 61 74 69 63 56 6f  oid CallStaticVo
8d60: 69 64 4d 65 74 68 6f 64 28 6a 63 6c 61 73 73 20  idMethod(jclass 
8d70: 63 6c 61 7a 7a 2c 20 6a 6d 65 74 68 6f 64 49 44  clazz, jmethodID
8d80: 20 6d 65 74 68 6f 64 49 44 2c 20 2e 2e 2e 29 0a   methodID, ...).
8d90: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 76 61      {.        va
8da0: 5f 6c 69 73 74 20 61 72 67 73 3b 0a 20 20 20 20  _list args;.    
8db0: 20 20 20 20 76 61 5f 73 74 61 72 74 28 61 72 67      va_start(arg
8dc0: 73 2c 20 6d 65 74 68 6f 64 49 44 29 3b 0a 20 20  s, methodID);.  
8dd0: 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 2d        functions-
8de0: 3e 43 61 6c 6c 53 74 61 74 69 63 56 6f 69 64 4d  >CallStaticVoidM
8df0: 65 74 68 6f 64 56 28 74 68 69 73 2c 20 63 6c 61  ethodV(this, cla
8e00: 7a 7a 2c 20 6d 65 74 68 6f 64 49 44 2c 20 61 72  zz, methodID, ar
8e10: 67 73 29 3b 0a 20 20 20 20 20 20 20 20 76 61 5f  gs);.        va_
8e20: 65 6e 64 28 61 72 67 73 29 3b 0a 20 20 20 20 7d  end(args);.    }
8e30: 0a 20 20 20 20 76 6f 69 64 20 43 61 6c 6c 53 74  .    void CallSt
8e40: 61 74 69 63 56 6f 69 64 4d 65 74 68 6f 64 56 28  aticVoidMethodV(
8e50: 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20 6a 6d  jclass clazz, jm
8e60: 65 74 68 6f 64 49 44 20 6d 65 74 68 6f 64 49 44  ethodID methodID
8e70: 2c 20 76 61 5f 6c 69 73 74 20 61 72 67 73 29 0a  , va_list args).
8e80: 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d      { functions-
8e90: 3e 43 61 6c 6c 53 74 61 74 69 63 56 6f 69 64 4d  >CallStaticVoidM
8ea0: 65 74 68 6f 64 56 28 74 68 69 73 2c 20 63 6c 61  ethodV(this, cla
8eb0: 7a 7a 2c 20 6d 65 74 68 6f 64 49 44 2c 20 61 72  zz, methodID, ar
8ec0: 67 73 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20  gs); }.    void 
8ed0: 43 61 6c 6c 53 74 61 74 69 63 56 6f 69 64 4d 65  CallStaticVoidMe
8ee0: 74 68 6f 64 41 28 6a 63 6c 61 73 73 20 63 6c 61  thodA(jclass cla
8ef0: 7a 7a 2c 20 6a 6d 65 74 68 6f 64 49 44 20 6d 65  zz, jmethodID me
8f00: 74 68 6f 64 49 44 2c 20 6a 76 61 6c 75 65 2a 20  thodID, jvalue* 
8f10: 61 72 67 73 29 0a 20 20 20 20 7b 20 66 75 6e 63  args).    { func
8f20: 74 69 6f 6e 73 2d 3e 43 61 6c 6c 53 74 61 74 69  tions->CallStati
8f30: 63 56 6f 69 64 4d 65 74 68 6f 64 41 28 74 68 69  cVoidMethodA(thi
8f40: 73 2c 20 63 6c 61 7a 7a 2c 20 6d 65 74 68 6f 64  s, clazz, method
8f50: 49 44 2c 20 61 72 67 73 29 3b 20 7d 0a 0a 20 20  ID, args); }..  
8f60: 20 20 6a 66 69 65 6c 64 49 44 20 47 65 74 53 74    jfieldID GetSt
8f70: 61 74 69 63 46 69 65 6c 64 49 44 28 6a 63 6c 61  aticFieldID(jcla
8f80: 73 73 20 63 6c 61 7a 7a 2c 20 63 6f 6e 73 74 20  ss clazz, const 
8f90: 63 68 61 72 2a 20 6e 61 6d 65 2c 20 63 6f 6e 73  char* name, cons
8fa0: 74 20 63 68 61 72 2a 20 73 69 67 29 0a 20 20 20  t char* sig).   
8fb0: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
8fc0: 6f 6e 73 2d 3e 47 65 74 53 74 61 74 69 63 46 69  ons->GetStaticFi
8fd0: 65 6c 64 49 44 28 74 68 69 73 2c 20 63 6c 61 7a  eldID(this, claz
8fe0: 7a 2c 20 6e 61 6d 65 2c 20 73 69 67 29 3b 20 7d  z, name, sig); }
8ff0: 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 47 65  ..    jobject Ge
9000: 74 53 74 61 74 69 63 4f 62 6a 65 63 74 46 69 65  tStaticObjectFie
9010: 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c  ld(jclass clazz,
9020: 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64 49   jfieldID fieldI
9030: 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  D).    { return 
9040: 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74  functions->GetSt
9050: 61 74 69 63 4f 62 6a 65 63 74 46 69 65 6c 64 28  aticObjectField(
9060: 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65  this, clazz, fie
9070: 6c 64 49 44 29 3b 20 7d 0a 20 20 20 20 6a 62 6f  ldID); }.    jbo
9080: 6f 6c 65 61 6e 20 47 65 74 53 74 61 74 69 63 42  olean GetStaticB
9090: 6f 6f 6c 65 61 6e 46 69 65 6c 64 28 6a 63 6c 61  ooleanField(jcla
90a0: 73 73 20 63 6c 61 7a 7a 2c 20 6a 66 69 65 6c 64  ss clazz, jfield
90b0: 49 44 20 66 69 65 6c 64 49 44 29 0a 20 20 20 20  ID fieldID).    
90c0: 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f  { return functio
90d0: 6e 73 2d 3e 47 65 74 53 74 61 74 69 63 42 6f 6f  ns->GetStaticBoo
90e0: 6c 65 61 6e 46 69 65 6c 64 28 74 68 69 73 2c 20  leanField(this, 
90f0: 63 6c 61 7a 7a 2c 20 66 69 65 6c 64 49 44 29 3b  clazz, fieldID);
9100: 20 7d 0a 20 20 20 20 6a 62 79 74 65 20 47 65 74   }.    jbyte Get
9110: 53 74 61 74 69 63 42 79 74 65 46 69 65 6c 64 28  StaticByteField(
9120: 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20 6a 66  jclass clazz, jf
9130: 69 65 6c 64 49 44 20 66 69 65 6c 64 49 44 29 0a  ieldID fieldID).
9140: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e      { return fun
9150: 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74 61 74 69  ctions->GetStati
9160: 63 42 79 74 65 46 69 65 6c 64 28 74 68 69 73 2c  cByteField(this,
9170: 20 63 6c 61 7a 7a 2c 20 66 69 65 6c 64 49 44 29   clazz, fieldID)
9180: 3b 20 7d 0a 20 20 20 20 6a 63 68 61 72 20 47 65  ; }.    jchar Ge
9190: 74 53 74 61 74 69 63 43 68 61 72 46 69 65 6c 64  tStaticCharField
91a0: 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20 6a  (jclass clazz, j
91b0: 66 69 65 6c 64 49 44 20 66 69 65 6c 64 49 44 29  fieldID fieldID)
91c0: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
91d0: 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74 61 74  nctions->GetStat
91e0: 69 63 43 68 61 72 46 69 65 6c 64 28 74 68 69 73  icCharField(this
91f0: 2c 20 63 6c 61 7a 7a 2c 20 66 69 65 6c 64 49 44  , clazz, fieldID
9200: 29 3b 20 7d 0a 20 20 20 20 6a 73 68 6f 72 74 20  ); }.    jshort 
9210: 47 65 74 53 74 61 74 69 63 53 68 6f 72 74 46 69  GetStaticShortFi
9220: 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a  eld(jclass clazz
9230: 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64  , jfieldID field
9240: 49 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  ID).    { return
9250: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53   functions->GetS
9260: 74 61 74 69 63 53 68 6f 72 74 46 69 65 6c 64 28  taticShortField(
9270: 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65  this, clazz, fie
9280: 6c 64 49 44 29 3b 20 7d 0a 20 20 20 20 6a 69 6e  ldID); }.    jin
9290: 74 20 47 65 74 53 74 61 74 69 63 49 6e 74 46 69  t GetStaticIntFi
92a0: 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a  eld(jclass clazz
92b0: 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64  , jfieldID field
92c0: 49 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  ID).    { return
92d0: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53   functions->GetS
92e0: 74 61 74 69 63 49 6e 74 46 69 65 6c 64 28 74 68  taticIntField(th
92f0: 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65 6c 64  is, clazz, field
9300: 49 44 29 3b 20 7d 0a 20 20 20 20 6a 6c 6f 6e 67  ID); }.    jlong
9310: 20 47 65 74 53 74 61 74 69 63 4c 6f 6e 67 46 69   GetStaticLongFi
9320: 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a  eld(jclass clazz
9330: 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64  , jfieldID field
9340: 49 44 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  ID).    { return
9350: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53   functions->GetS
9360: 74 61 74 69 63 4c 6f 6e 67 46 69 65 6c 64 28 74  taticLongField(t
9370: 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65 6c  his, clazz, fiel
9380: 64 49 44 29 3b 20 7d 0a 20 20 20 20 6a 66 6c 6f  dID); }.    jflo
9390: 61 74 20 47 65 74 53 74 61 74 69 63 46 6c 6f 61  at GetStaticFloa
93a0: 74 46 69 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c  tField(jclass cl
93b0: 61 7a 7a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69  azz, jfieldID fi
93c0: 65 6c 64 49 44 29 0a 20 20 20 20 7b 20 72 65 74  eldID).    { ret
93d0: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47  urn functions->G
93e0: 65 74 53 74 61 74 69 63 46 6c 6f 61 74 46 69 65  etStaticFloatFie
93f0: 6c 64 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20  ld(this, clazz, 
9400: 66 69 65 6c 64 49 44 29 3b 20 7d 0a 20 20 20 20  fieldID); }.    
9410: 6a 64 6f 75 62 6c 65 20 47 65 74 53 74 61 74 69  jdouble GetStati
9420: 63 44 6f 75 62 6c 65 46 69 65 6c 64 28 6a 63 6c  cDoubleField(jcl
9430: 61 73 73 20 63 6c 61 7a 7a 2c 20 6a 66 69 65 6c  ass clazz, jfiel
9440: 64 49 44 20 66 69 65 6c 64 49 44 29 0a 20 20 20  dID fieldID).   
9450: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
9460: 6f 6e 73 2d 3e 47 65 74 53 74 61 74 69 63 44 6f  ons->GetStaticDo
9470: 75 62 6c 65 46 69 65 6c 64 28 74 68 69 73 2c 20  ubleField(this, 
9480: 63 6c 61 7a 7a 2c 20 66 69 65 6c 64 49 44 29 3b  clazz, fieldID);
9490: 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 53 65 74   }..    void Set
94a0: 53 74 61 74 69 63 4f 62 6a 65 63 74 46 69 65 6c  StaticObjectFiel
94b0: 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20  d(jclass clazz, 
94c0: 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64 49 44  jfieldID fieldID
94d0: 2c 20 6a 6f 62 6a 65 63 74 20 76 61 6c 75 65 29  , jobject value)
94e0: 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73  .    { functions
94f0: 2d 3e 53 65 74 53 74 61 74 69 63 4f 62 6a 65 63  ->SetStaticObjec
9500: 74 46 69 65 6c 64 28 74 68 69 73 2c 20 63 6c 61  tField(this, cla
9510: 7a 7a 2c 20 66 69 65 6c 64 49 44 2c 20 76 61 6c  zz, fieldID, val
9520: 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20  ue); }.    void 
9530: 53 65 74 53 74 61 74 69 63 42 6f 6f 6c 65 61 6e  SetStaticBoolean
9540: 46 69 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61  Field(jclass cla
9550: 7a 7a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65  zz, jfieldID fie
9560: 6c 64 49 44 2c 20 6a 62 6f 6f 6c 65 61 6e 20 76  ldID, jboolean v
9570: 61 6c 75 65 29 0a 20 20 20 20 7b 20 66 75 6e 63  alue).    { func
9580: 74 69 6f 6e 73 2d 3e 53 65 74 53 74 61 74 69 63  tions->SetStatic
9590: 42 6f 6f 6c 65 61 6e 46 69 65 6c 64 28 74 68 69  BooleanField(thi
95a0: 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65 6c 64 49  s, clazz, fieldI
95b0: 44 2c 20 76 61 6c 75 65 29 3b 20 7d 0a 20 20 20  D, value); }.   
95c0: 20 76 6f 69 64 20 53 65 74 53 74 61 74 69 63 42   void SetStaticB
95d0: 79 74 65 46 69 65 6c 64 28 6a 63 6c 61 73 73 20  yteField(jclass 
95e0: 63 6c 61 7a 7a 2c 20 6a 66 69 65 6c 64 49 44 20  clazz, jfieldID 
95f0: 66 69 65 6c 64 49 44 2c 20 6a 62 79 74 65 20 76  fieldID, jbyte v
9600: 61 6c 75 65 29 0a 20 20 20 20 7b 20 66 75 6e 63  alue).    { func
9610: 74 69 6f 6e 73 2d 3e 53 65 74 53 74 61 74 69 63  tions->SetStatic
9620: 42 79 74 65 46 69 65 6c 64 28 74 68 69 73 2c 20  ByteField(this, 
9630: 63 6c 61 7a 7a 2c 20 66 69 65 6c 64 49 44 2c 20  clazz, fieldID, 
9640: 76 61 6c 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f  value); }.    vo
9650: 69 64 20 53 65 74 53 74 61 74 69 63 43 68 61 72  id SetStaticChar
9660: 46 69 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61  Field(jclass cla
9670: 7a 7a 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65  zz, jfieldID fie
9680: 6c 64 49 44 2c 20 6a 63 68 61 72 20 76 61 6c 75  ldID, jchar valu
9690: 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f  e).    { functio
96a0: 6e 73 2d 3e 53 65 74 53 74 61 74 69 63 43 68 61  ns->SetStaticCha
96b0: 72 46 69 65 6c 64 28 74 68 69 73 2c 20 63 6c 61  rField(this, cla
96c0: 7a 7a 2c 20 66 69 65 6c 64 49 44 2c 20 76 61 6c  zz, fieldID, val
96d0: 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20  ue); }.    void 
96e0: 53 65 74 53 74 61 74 69 63 53 68 6f 72 74 46 69  SetStaticShortFi
96f0: 65 6c 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a  eld(jclass clazz
9700: 2c 20 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64  , jfieldID field
9710: 49 44 2c 20 6a 73 68 6f 72 74 20 76 61 6c 75 65  ID, jshort value
9720: 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e  ).    { function
9730: 73 2d 3e 53 65 74 53 74 61 74 69 63 53 68 6f 72  s->SetStaticShor
9740: 74 46 69 65 6c 64 28 74 68 69 73 2c 20 63 6c 61  tField(this, cla
9750: 7a 7a 2c 20 66 69 65 6c 64 49 44 2c 20 76 61 6c  zz, fieldID, val
9760: 75 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20  ue); }.    void 
9770: 53 65 74 53 74 61 74 69 63 49 6e 74 46 69 65 6c  SetStaticIntFiel
9780: 64 28 6a 63 6c 61 73 73 20 63 6c 61 7a 7a 2c 20  d(jclass clazz, 
9790: 6a 66 69 65 6c 64 49 44 20 66 69 65 6c 64 49 44  jfieldID fieldID
97a0: 2c 20 6a 69 6e 74 20 76 61 6c 75 65 29 0a 20 20  , jint value).  
97b0: 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53    { functions->S
97c0: 65 74 53 74 61 74 69 63 49 6e 74 46 69 65 6c 64  etStaticIntField
97d0: 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69  (this, clazz, fi
97e0: 65 6c 64 49 44 2c 20 76 61 6c 75 65 29 3b 20 7d  eldID, value); }
97f0: 0a 20 20 20 20 76 6f 69 64 20 53 65 74 53 74 61  .    void SetSta
9800: 74 69 63 4c 6f 6e 67 46 69 65 6c 64 28 6a 63 6c  ticLongField(jcl
9810: 61 73 73 20 63 6c 61 7a 7a 2c 20 6a 66 69 65 6c  ass clazz, jfiel
9820: 64 49 44 20 66 69 65 6c 64 49 44 2c 20 6a 6c 6f  dID fieldID, jlo
9830: 6e 67 20 76 61 6c 75 65 29 0a 20 20 20 20 7b 20  ng value).    { 
9840: 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 53 74  functions->SetSt
9850: 61 74 69 63 4c 6f 6e 67 46 69 65 6c 64 28 74 68  aticLongField(th
9860: 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65 6c 64  is, clazz, field
9870: 49 44 2c 20 76 61 6c 75 65 29 3b 20 7d 0a 20 20  ID, value); }.  
9880: 20 20 76 6f 69 64 20 53 65 74 53 74 61 74 69 63    void SetStatic
9890: 46 6c 6f 61 74 46 69 65 6c 64 28 6a 63 6c 61 73  FloatField(jclas
98a0: 73 20 63 6c 61 7a 7a 2c 20 6a 66 69 65 6c 64 49  s clazz, jfieldI
98b0: 44 20 66 69 65 6c 64 49 44 2c 20 6a 66 6c 6f 61  D fieldID, jfloa
98c0: 74 20 76 61 6c 75 65 29 0a 20 20 20 20 7b 20 66  t value).    { f
98d0: 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 53 74 61  unctions->SetSta
98e0: 74 69 63 46 6c 6f 61 74 46 69 65 6c 64 28 74 68  ticFloatField(th
98f0: 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69 65 6c 64  is, clazz, field
9900: 49 44 2c 20 76 61 6c 75 65 29 3b 20 7d 0a 20 20  ID, value); }.  
9910: 20 20 76 6f 69 64 20 53 65 74 53 74 61 74 69 63    void SetStatic
9920: 44 6f 75 62 6c 65 46 69 65 6c 64 28 6a 63 6c 61  DoubleField(jcla
9930: 73 73 20 63 6c 61 7a 7a 2c 20 6a 66 69 65 6c 64  ss clazz, jfield
9940: 49 44 20 66 69 65 6c 64 49 44 2c 20 6a 64 6f 75  ID fieldID, jdou
9950: 62 6c 65 20 76 61 6c 75 65 29 0a 20 20 20 20 7b  ble value).    {
9960: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 53   functions->SetS
9970: 74 61 74 69 63 44 6f 75 62 6c 65 46 69 65 6c 64  taticDoubleField
9980: 28 74 68 69 73 2c 20 63 6c 61 7a 7a 2c 20 66 69  (this, clazz, fi
9990: 65 6c 64 49 44 2c 20 76 61 6c 75 65 29 3b 20 7d  eldID, value); }
99a0: 0a 0a 20 20 20 20 6a 73 74 72 69 6e 67 20 4e 65  ..    jstring Ne
99b0: 77 53 74 72 69 6e 67 28 63 6f 6e 73 74 20 6a 63  wString(const jc
99c0: 68 61 72 2a 20 75 6e 69 63 6f 64 65 43 68 61 72  har* unicodeChar
99d0: 73 2c 20 6a 73 69 7a 65 20 6c 65 6e 29 0a 20 20  s, jsize len).  
99e0: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
99f0: 69 6f 6e 73 2d 3e 4e 65 77 53 74 72 69 6e 67 28  ions->NewString(
9a00: 74 68 69 73 2c 20 75 6e 69 63 6f 64 65 43 68 61  this, unicodeCha
9a10: 72 73 2c 20 6c 65 6e 29 3b 20 7d 0a 0a 20 20 20  rs, len); }..   
9a20: 20 6a 73 69 7a 65 20 47 65 74 53 74 72 69 6e 67   jsize GetString
9a30: 4c 65 6e 67 74 68 28 6a 73 74 72 69 6e 67 20 73  Length(jstring s
9a40: 74 72 69 6e 67 29 0a 20 20 20 20 7b 20 72 65 74  tring).    { ret
9a50: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47  urn functions->G
9a60: 65 74 53 74 72 69 6e 67 4c 65 6e 67 74 68 28 74  etStringLength(t
9a70: 68 69 73 2c 20 73 74 72 69 6e 67 29 3b 20 7d 0a  his, string); }.
9a80: 0a 20 20 20 20 63 6f 6e 73 74 20 6a 63 68 61 72  .    const jchar
9a90: 2a 20 47 65 74 53 74 72 69 6e 67 43 68 61 72 73  * GetStringChars
9aa0: 28 6a 73 74 72 69 6e 67 20 73 74 72 69 6e 67 2c  (jstring string,
9ab0: 20 6a 62 6f 6f 6c 65 61 6e 2a 20 69 73 43 6f 70   jboolean* isCop
9ac0: 79 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  y).    { return 
9ad0: 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74  functions->GetSt
9ae0: 72 69 6e 67 43 68 61 72 73 28 74 68 69 73 2c 20  ringChars(this, 
9af0: 73 74 72 69 6e 67 2c 20 69 73 43 6f 70 79 29 3b  string, isCopy);
9b00: 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 52 65 6c   }..    void Rel
9b10: 65 61 73 65 53 74 72 69 6e 67 43 68 61 72 73 28  easeStringChars(
9b20: 6a 73 74 72 69 6e 67 20 73 74 72 69 6e 67 2c 20  jstring string, 
9b30: 63 6f 6e 73 74 20 6a 63 68 61 72 2a 20 63 68 61  const jchar* cha
9b40: 72 73 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69  rs).    { functi
9b50: 6f 6e 73 2d 3e 52 65 6c 65 61 73 65 53 74 72 69  ons->ReleaseStri
9b60: 6e 67 43 68 61 72 73 28 74 68 69 73 2c 20 73 74  ngChars(this, st
9b70: 72 69 6e 67 2c 20 63 68 61 72 73 29 3b 20 7d 0a  ring, chars); }.
9b80: 0a 20 20 20 20 6a 73 74 72 69 6e 67 20 4e 65 77  .    jstring New
9b90: 53 74 72 69 6e 67 55 54 46 28 63 6f 6e 73 74 20  StringUTF(const 
9ba0: 63 68 61 72 2a 20 62 79 74 65 73 29 0a 20 20 20  char* bytes).   
9bb0: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
9bc0: 6f 6e 73 2d 3e 4e 65 77 53 74 72 69 6e 67 55 54  ons->NewStringUT
9bd0: 46 28 74 68 69 73 2c 20 62 79 74 65 73 29 3b 20  F(this, bytes); 
9be0: 7d 0a 0a 20 20 20 20 6a 73 69 7a 65 20 47 65 74  }..    jsize Get
9bf0: 53 74 72 69 6e 67 55 54 46 4c 65 6e 67 74 68 28  StringUTFLength(
9c00: 6a 73 74 72 69 6e 67 20 73 74 72 69 6e 67 29 0a  jstring string).
9c10: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e      { return fun
9c20: 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74 72 69 6e  ctions->GetStrin
9c30: 67 55 54 46 4c 65 6e 67 74 68 28 74 68 69 73 2c  gUTFLength(this,
9c40: 20 73 74 72 69 6e 67 29 3b 20 7d 0a 0a 20 20 20   string); }..   
9c50: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 47 65 74   const char* Get
9c60: 53 74 72 69 6e 67 55 54 46 43 68 61 72 73 28 6a  StringUTFChars(j
9c70: 73 74 72 69 6e 67 20 73 74 72 69 6e 67 2c 20 6a  string string, j
9c80: 62 6f 6f 6c 65 61 6e 2a 20 69 73 43 6f 70 79 29  boolean* isCopy)
9c90: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
9ca0: 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74 72 69  nctions->GetStri
9cb0: 6e 67 55 54 46 43 68 61 72 73 28 74 68 69 73 2c  ngUTFChars(this,
9cc0: 20 73 74 72 69 6e 67 2c 20 69 73 43 6f 70 79 29   string, isCopy)
9cd0: 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 52 65  ; }..    void Re
9ce0: 6c 65 61 73 65 53 74 72 69 6e 67 55 54 46 43 68  leaseStringUTFCh
9cf0: 61 72 73 28 6a 73 74 72 69 6e 67 20 73 74 72 69  ars(jstring stri
9d00: 6e 67 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 20  ng, const char* 
9d10: 75 74 66 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  utf).    { funct
9d20: 69 6f 6e 73 2d 3e 52 65 6c 65 61 73 65 53 74 72  ions->ReleaseStr
9d30: 69 6e 67 55 54 46 43 68 61 72 73 28 74 68 69 73  ingUTFChars(this
9d40: 2c 20 73 74 72 69 6e 67 2c 20 75 74 66 29 3b 20  , string, utf); 
9d50: 7d 0a 0a 20 20 20 20 6a 73 69 7a 65 20 47 65 74  }..    jsize Get
9d60: 41 72 72 61 79 4c 65 6e 67 74 68 28 6a 61 72 72  ArrayLength(jarr
9d70: 61 79 20 61 72 72 61 79 29 0a 20 20 20 20 7b 20  ay array).    { 
9d80: 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73  return functions
9d90: 2d 3e 47 65 74 41 72 72 61 79 4c 65 6e 67 74 68  ->GetArrayLength
9da0: 28 74 68 69 73 2c 20 61 72 72 61 79 29 3b 20 7d  (this, array); }
9db0: 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 41 72 72  ..    jobjectArr
9dc0: 61 79 20 4e 65 77 4f 62 6a 65 63 74 41 72 72 61  ay NewObjectArra
9dd0: 79 28 6a 73 69 7a 65 20 6c 65 6e 67 74 68 2c 20  y(jsize length, 
9de0: 6a 63 6c 61 73 73 20 65 6c 65 6d 65 6e 74 43 6c  jclass elementCl
9df0: 61 73 73 2c 0a 20 20 20 20 20 20 20 20 6a 6f 62  ass,.        job
9e00: 6a 65 63 74 20 69 6e 69 74 69 61 6c 45 6c 65 6d  ject initialElem
9e10: 65 6e 74 29 0a 20 20 20 20 7b 20 72 65 74 75 72  ent).    { retur
9e20: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65 77  n functions->New
9e30: 4f 62 6a 65 63 74 41 72 72 61 79 28 74 68 69 73  ObjectArray(this
9e40: 2c 20 6c 65 6e 67 74 68 2c 20 65 6c 65 6d 65 6e  , length, elemen
9e50: 74 43 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20  tClass,.        
9e60: 69 6e 69 74 69 61 6c 45 6c 65 6d 65 6e 74 29 3b  initialElement);
9e70: 20 7d 0a 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20   }..    jobject 
9e80: 47 65 74 4f 62 6a 65 63 74 41 72 72 61 79 45 6c  GetObjectArrayEl
9e90: 65 6d 65 6e 74 28 6a 6f 62 6a 65 63 74 41 72 72  ement(jobjectArr
9ea0: 61 79 20 61 72 72 61 79 2c 20 6a 73 69 7a 65 20  ay array, jsize 
9eb0: 69 6e 64 65 78 29 0a 20 20 20 20 7b 20 72 65 74  index).    { ret
9ec0: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47  urn functions->G
9ed0: 65 74 4f 62 6a 65 63 74 41 72 72 61 79 45 6c 65  etObjectArrayEle
9ee0: 6d 65 6e 74 28 74 68 69 73 2c 20 61 72 72 61 79  ment(this, array
9ef0: 2c 20 69 6e 64 65 78 29 3b 20 7d 0a 0a 20 20 20  , index); }..   
9f00: 20 76 6f 69 64 20 53 65 74 4f 62 6a 65 63 74 41   void SetObjectA
9f10: 72 72 61 79 45 6c 65 6d 65 6e 74 28 6a 6f 62 6a  rrayElement(jobj
9f20: 65 63 74 41 72 72 61 79 20 61 72 72 61 79 2c 20  ectArray array, 
9f30: 6a 73 69 7a 65 20 69 6e 64 65 78 2c 20 6a 6f 62  jsize index, job
9f40: 6a 65 63 74 20 76 61 6c 75 65 29 0a 20 20 20 20  ject value).    
9f50: 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74  { functions->Set
9f60: 4f 62 6a 65 63 74 41 72 72 61 79 45 6c 65 6d 65  ObjectArrayEleme
9f70: 6e 74 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20  nt(this, array, 
9f80: 69 6e 64 65 78 2c 20 76 61 6c 75 65 29 3b 20 7d  index, value); }
9f90: 0a 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 41 72  ..    jbooleanAr
9fa0: 72 61 79 20 4e 65 77 42 6f 6f 6c 65 61 6e 41 72  ray NewBooleanAr
9fb0: 72 61 79 28 6a 73 69 7a 65 20 6c 65 6e 67 74 68  ray(jsize length
9fc0: 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66  ).    { return f
9fd0: 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65 77 42 6f 6f  unctions->NewBoo
9fe0: 6c 65 61 6e 41 72 72 61 79 28 74 68 69 73 2c 20  leanArray(this, 
9ff0: 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20 20 20 6a  length); }.    j
a000: 62 79 74 65 41 72 72 61 79 20 4e 65 77 42 79 74  byteArray NewByt
a010: 65 41 72 72 61 79 28 6a 73 69 7a 65 20 6c 65 6e  eArray(jsize len
a020: 67 74 68 29 0a 20 20 20 20 7b 20 72 65 74 75 72  gth).    { retur
a030: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65 77  n functions->New
a040: 42 79 74 65 41 72 72 61 79 28 74 68 69 73 2c 20  ByteArray(this, 
a050: 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20 20 20 6a  length); }.    j
a060: 63 68 61 72 41 72 72 61 79 20 4e 65 77 43 68 61  charArray NewCha
a070: 72 41 72 72 61 79 28 6a 73 69 7a 65 20 6c 65 6e  rArray(jsize len
a080: 67 74 68 29 0a 20 20 20 20 7b 20 72 65 74 75 72  gth).    { retur
a090: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65 77  n functions->New
a0a0: 43 68 61 72 41 72 72 61 79 28 74 68 69 73 2c 20  CharArray(this, 
a0b0: 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20 20 20 6a  length); }.    j
a0c0: 73 68 6f 72 74 41 72 72 61 79 20 4e 65 77 53 68  shortArray NewSh
a0d0: 6f 72 74 41 72 72 61 79 28 6a 73 69 7a 65 20 6c  ortArray(jsize l
a0e0: 65 6e 67 74 68 29 0a 20 20 20 20 7b 20 72 65 74  ength).    { ret
a0f0: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e  urn functions->N
a100: 65 77 53 68 6f 72 74 41 72 72 61 79 28 74 68 69  ewShortArray(thi
a110: 73 2c 20 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20  s, length); }.  
a120: 20 20 6a 69 6e 74 41 72 72 61 79 20 4e 65 77 49    jintArray NewI
a130: 6e 74 41 72 72 61 79 28 6a 73 69 7a 65 20 6c 65  ntArray(jsize le
a140: 6e 67 74 68 29 0a 20 20 20 20 7b 20 72 65 74 75  ngth).    { retu
a150: 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65  rn functions->Ne
a160: 77 49 6e 74 41 72 72 61 79 28 74 68 69 73 2c 20  wIntArray(this, 
a170: 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20 20 20 6a  length); }.    j
a180: 6c 6f 6e 67 41 72 72 61 79 20 4e 65 77 4c 6f 6e  longArray NewLon
a190: 67 41 72 72 61 79 28 6a 73 69 7a 65 20 6c 65 6e  gArray(jsize len
a1a0: 67 74 68 29 0a 20 20 20 20 7b 20 72 65 74 75 72  gth).    { retur
a1b0: 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e 65 77  n functions->New
a1c0: 4c 6f 6e 67 41 72 72 61 79 28 74 68 69 73 2c 20  LongArray(this, 
a1d0: 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20 20 20 6a  length); }.    j
a1e0: 66 6c 6f 61 74 41 72 72 61 79 20 4e 65 77 46 6c  floatArray NewFl
a1f0: 6f 61 74 41 72 72 61 79 28 6a 73 69 7a 65 20 6c  oatArray(jsize l
a200: 65 6e 67 74 68 29 0a 20 20 20 20 7b 20 72 65 74  ength).    { ret
a210: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 4e  urn functions->N
a220: 65 77 46 6c 6f 61 74 41 72 72 61 79 28 74 68 69  ewFloatArray(thi
a230: 73 2c 20 6c 65 6e 67 74 68 29 3b 20 7d 0a 20 20  s, length); }.  
a240: 20 20 6a 64 6f 75 62 6c 65 41 72 72 61 79 20 4e    jdoubleArray N
a250: 65 77 44 6f 75 62 6c 65 41 72 72 61 79 28 6a 73  ewDoubleArray(js
a260: 69 7a 65 20 6c 65 6e 67 74 68 29 0a 20 20 20 20  ize length).    
a270: 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f  { return functio
a280: 6e 73 2d 3e 4e 65 77 44 6f 75 62 6c 65 41 72 72  ns->NewDoubleArr
a290: 61 79 28 74 68 69 73 2c 20 6c 65 6e 67 74 68 29  ay(this, length)
a2a0: 3b 20 7d 0a 0a 20 20 20 20 6a 62 6f 6f 6c 65 61  ; }..    jboolea
a2b0: 6e 2a 20 47 65 74 42 6f 6f 6c 65 61 6e 41 72 72  n* GetBooleanArr
a2c0: 61 79 45 6c 65 6d 65 6e 74 73 28 6a 62 6f 6f 6c  ayElements(jbool
a2d0: 65 61 6e 41 72 72 61 79 20 61 72 72 61 79 2c 20  eanArray array, 
a2e0: 6a 62 6f 6f 6c 65 61 6e 2a 20 69 73 43 6f 70 79  jboolean* isCopy
a2f0: 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66  ).    { return f
a300: 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 42 6f 6f  unctions->GetBoo
a310: 6c 65 61 6e 41 72 72 61 79 45 6c 65 6d 65 6e 74  leanArrayElement
a320: 73 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20 69  s(this, array, i
a330: 73 43 6f 70 79 29 3b 20 7d 0a 20 20 20 20 6a 62  sCopy); }.    jb
a340: 79 74 65 2a 20 47 65 74 42 79 74 65 41 72 72 61  yte* GetByteArra
a350: 79 45 6c 65 6d 65 6e 74 73 28 6a 62 79 74 65 41  yElements(jbyteA
a360: 72 72 61 79 20 61 72 72 61 79 2c 20 6a 62 6f 6f  rray array, jboo
a370: 6c 65 61 6e 2a 20 69 73 43 6f 70 79 29 0a 20 20  lean* isCopy).  
a380: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
a390: 69 6f 6e 73 2d 3e 47 65 74 42 79 74 65 41 72 72  ions->GetByteArr
a3a0: 61 79 45 6c 65 6d 65 6e 74 73 28 74 68 69 73 2c  ayElements(this,
a3b0: 20 61 72 72 61 79 2c 20 69 73 43 6f 70 79 29 3b   array, isCopy);
a3c0: 20 7d 0a 20 20 20 20 6a 63 68 61 72 2a 20 47 65   }.    jchar* Ge
a3d0: 74 43 68 61 72 41 72 72 61 79 45 6c 65 6d 65 6e  tCharArrayElemen
a3e0: 74 73 28 6a 63 68 61 72 41 72 72 61 79 20 61 72  ts(jcharArray ar
a3f0: 72 61 79 2c 20 6a 62 6f 6f 6c 65 61 6e 2a 20 69  ray, jboolean* i
a400: 73 43 6f 70 79 29 0a 20 20 20 20 7b 20 72 65 74  sCopy).    { ret
a410: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47  urn functions->G
a420: 65 74 43 68 61 72 41 72 72 61 79 45 6c 65 6d 65  etCharArrayEleme
a430: 6e 74 73 28 74 68 69 73 2c 20 61 72 72 61 79 2c  nts(this, array,
a440: 20 69 73 43 6f 70 79 29 3b 20 7d 0a 20 20 20 20   isCopy); }.    
a450: 6a 73 68 6f 72 74 2a 20 47 65 74 53 68 6f 72 74  jshort* GetShort
a460: 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 6a 73  ArrayElements(js
a470: 68 6f 72 74 41 72 72 61 79 20 61 72 72 61 79 2c  hortArray array,
a480: 20 6a 62 6f 6f 6c 65 61 6e 2a 20 69 73 43 6f 70   jboolean* isCop
a490: 79 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20  y).    { return 
a4a0: 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 68  functions->GetSh
a4b0: 6f 72 74 41 72 72 61 79 45 6c 65 6d 65 6e 74 73  ortArrayElements
a4c0: 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20 69 73  (this, array, is
a4d0: 43 6f 70 79 29 3b 20 7d 0a 20 20 20 20 6a 69 6e  Copy); }.    jin
a4e0: 74 2a 20 47 65 74 49 6e 74 41 72 72 61 79 45 6c  t* GetIntArrayEl
a4f0: 65 6d 65 6e 74 73 28 6a 69 6e 74 41 72 72 61 79  ements(jintArray
a500: 20 61 72 72 61 79 2c 20 6a 62 6f 6f 6c 65 61 6e   array, jboolean
a510: 2a 20 69 73 43 6f 70 79 29 0a 20 20 20 20 7b 20  * isCopy).    { 
a520: 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73  return functions
a530: 2d 3e 47 65 74 49 6e 74 41 72 72 61 79 45 6c 65  ->GetIntArrayEle
a540: 6d 65 6e 74 73 28 74 68 69 73 2c 20 61 72 72 61  ments(this, arra
a550: 79 2c 20 69 73 43 6f 70 79 29 3b 20 7d 0a 20 20  y, isCopy); }.  
a560: 20 20 6a 6c 6f 6e 67 2a 20 47 65 74 4c 6f 6e 67    jlong* GetLong
a570: 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 6a 6c  ArrayElements(jl
a580: 6f 6e 67 41 72 72 61 79 20 61 72 72 61 79 2c 20  ongArray array, 
a590: 6a 62 6f 6f 6c 65 61 6e 2a 20 69 73 43 6f 70 79  jboolean* isCopy
a5a0: 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66  ).    { return f
a5b0: 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 4c 6f 6e  unctions->GetLon
a5c0: 67 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 74  gArrayElements(t
a5d0: 68 69 73 2c 20 61 72 72 61 79 2c 20 69 73 43 6f  his, array, isCo
a5e0: 70 79 29 3b 20 7d 0a 20 20 20 20 6a 66 6c 6f 61  py); }.    jfloa
a5f0: 74 2a 20 47 65 74 46 6c 6f 61 74 41 72 72 61 79  t* GetFloatArray
a600: 45 6c 65 6d 65 6e 74 73 28 6a 66 6c 6f 61 74 41  Elements(jfloatA
a610: 72 72 61 79 20 61 72 72 61 79 2c 20 6a 62 6f 6f  rray array, jboo
a620: 6c 65 61 6e 2a 20 69 73 43 6f 70 79 29 0a 20 20  lean* isCopy).  
a630: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
a640: 69 6f 6e 73 2d 3e 47 65 74 46 6c 6f 61 74 41 72  ions->GetFloatAr
a650: 72 61 79 45 6c 65 6d 65 6e 74 73 28 74 68 69 73  rayElements(this
a660: 2c 20 61 72 72 61 79 2c 20 69 73 43 6f 70 79 29  , array, isCopy)
a670: 3b 20 7d 0a 20 20 20 20 6a 64 6f 75 62 6c 65 2a  ; }.    jdouble*
a680: 20 47 65 74 44 6f 75 62 6c 65 41 72 72 61 79 45   GetDoubleArrayE
a690: 6c 65 6d 65 6e 74 73 28 6a 64 6f 75 62 6c 65 41  lements(jdoubleA
a6a0: 72 72 61 79 20 61 72 72 61 79 2c 20 6a 62 6f 6f  rray array, jboo
a6b0: 6c 65 61 6e 2a 20 69 73 43 6f 70 79 29 0a 20 20  lean* isCopy).  
a6c0: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
a6d0: 69 6f 6e 73 2d 3e 47 65 74 44 6f 75 62 6c 65 41  ions->GetDoubleA
a6e0: 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 74 68 69  rrayElements(thi
a6f0: 73 2c 20 61 72 72 61 79 2c 20 69 73 43 6f 70 79  s, array, isCopy
a700: 29 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 52  ); }..    void R
a710: 65 6c 65 61 73 65 42 6f 6f 6c 65 61 6e 41 72 72  eleaseBooleanArr
a720: 61 79 45 6c 65 6d 65 6e 74 73 28 6a 62 6f 6f 6c  ayElements(jbool
a730: 65 61 6e 41 72 72 61 79 20 61 72 72 61 79 2c 20  eanArray array, 
a740: 6a 62 6f 6f 6c 65 61 6e 2a 20 65 6c 65 6d 73 2c  jboolean* elems,
a750: 0a 20 20 20 20 20 20 20 20 6a 69 6e 74 20 6d 6f  .        jint mo
a760: 64 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69  de).    { functi
a770: 6f 6e 73 2d 3e 52 65 6c 65 61 73 65 42 6f 6f 6c  ons->ReleaseBool
a780: 65 61 6e 41 72 72 61 79 45 6c 65 6d 65 6e 74 73  eanArrayElements
a790: 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20 65 6c  (this, array, el
a7a0: 65 6d 73 2c 20 6d 6f 64 65 29 3b 20 7d 0a 20 20  ems, mode); }.  
a7b0: 20 20 76 6f 69 64 20 52 65 6c 65 61 73 65 42 79    void ReleaseBy
a7c0: 74 65 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 28  teArrayElements(
a7d0: 6a 62 79 74 65 41 72 72 61 79 20 61 72 72 61 79  jbyteArray array
a7e0: 2c 20 6a 62 79 74 65 2a 20 65 6c 65 6d 73 2c 0a  , jbyte* elems,.
a7f0: 20 20 20 20 20 20 20 20 6a 69 6e 74 20 6d 6f 64          jint mod
a800: 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f  e).    { functio
a810: 6e 73 2d 3e 52 65 6c 65 61 73 65 42 79 74 65 41  ns->ReleaseByteA
a820: 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 74 68 69  rrayElements(thi
a830: 73 2c 20 61 72 72 61 79 2c 20 65 6c 65 6d 73 2c  s, array, elems,
a840: 20 6d 6f 64 65 29 3b 20 7d 0a 20 20 20 20 76 6f   mode); }.    vo
a850: 69 64 20 52 65 6c 65 61 73 65 43 68 61 72 41 72  id ReleaseCharAr
a860: 72 61 79 45 6c 65 6d 65 6e 74 73 28 6a 63 68 61  rayElements(jcha
a870: 72 41 72 72 61 79 20 61 72 72 61 79 2c 20 6a 63  rArray array, jc
a880: 68 61 72 2a 20 65 6c 65 6d 73 2c 0a 20 20 20 20  har* elems,.    
a890: 20 20 20 20 6a 69 6e 74 20 6d 6f 64 65 29 0a 20      jint mode). 
a8a0: 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e     { functions->
a8b0: 52 65 6c 65 61 73 65 43 68 61 72 41 72 72 61 79  ReleaseCharArray
a8c0: 45 6c 65 6d 65 6e 74 73 28 74 68 69 73 2c 20 61  Elements(this, a
a8d0: 72 72 61 79 2c 20 65 6c 65 6d 73 2c 20 6d 6f 64  rray, elems, mod
a8e0: 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 52  e); }.    void R
a8f0: 65 6c 65 61 73 65 53 68 6f 72 74 41 72 72 61 79  eleaseShortArray
a900: 45 6c 65 6d 65 6e 74 73 28 6a 73 68 6f 72 74 41  Elements(jshortA
a910: 72 72 61 79 20 61 72 72 61 79 2c 20 6a 73 68 6f  rray array, jsho
a920: 72 74 2a 20 65 6c 65 6d 73 2c 0a 20 20 20 20 20  rt* elems,.     
a930: 20 20 20 6a 69 6e 74 20 6d 6f 64 65 29 0a 20 20     jint mode).  
a940: 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 52    { functions->R
a950: 65 6c 65 61 73 65 53 68 6f 72 74 41 72 72 61 79  eleaseShortArray
a960: 45 6c 65 6d 65 6e 74 73 28 74 68 69 73 2c 20 61  Elements(this, a
a970: 72 72 61 79 2c 20 65 6c 65 6d 73 2c 20 6d 6f 64  rray, elems, mod
a980: 65 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 52  e); }.    void R
a990: 65 6c 65 61 73 65 49 6e 74 41 72 72 61 79 45 6c  eleaseIntArrayEl
a9a0: 65 6d 65 6e 74 73 28 6a 69 6e 74 41 72 72 61 79  ements(jintArray
a9b0: 20 61 72 72 61 79 2c 20 6a 69 6e 74 2a 20 65 6c   array, jint* el
a9c0: 65 6d 73 2c 0a 20 20 20 20 20 20 20 20 6a 69 6e  ems,.        jin
a9d0: 74 20 6d 6f 64 65 29 0a 20 20 20 20 7b 20 66 75  t mode).    { fu
a9e0: 6e 63 74 69 6f 6e 73 2d 3e 52 65 6c 65 61 73 65  nctions->Release
a9f0: 49 6e 74 41 72 72 61 79 45 6c 65 6d 65 6e 74 73  IntArrayElements
aa00: 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20 65 6c  (this, array, el
aa10: 65 6d 73 2c 20 6d 6f 64 65 29 3b 20 7d 0a 20 20  ems, mode); }.  
aa20: 20 20 76 6f 69 64 20 52 65 6c 65 61 73 65 4c 6f    void ReleaseLo
aa30: 6e 67 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 28  ngArrayElements(
aa40: 6a 6c 6f 6e 67 41 72 72 61 79 20 61 72 72 61 79  jlongArray array
aa50: 2c 20 6a 6c 6f 6e 67 2a 20 65 6c 65 6d 73 2c 0a  , jlong* elems,.
aa60: 20 20 20 20 20 20 20 20 6a 69 6e 74 20 6d 6f 64          jint mod
aa70: 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f  e).    { functio
aa80: 6e 73 2d 3e 52 65 6c 65 61 73 65 4c 6f 6e 67 41  ns->ReleaseLongA
aa90: 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 74 68 69  rrayElements(thi
aaa0: 73 2c 20 61 72 72 61 79 2c 20 65 6c 65 6d 73 2c  s, array, elems,
aab0: 20 6d 6f 64 65 29 3b 20 7d 0a 20 20 20 20 76 6f   mode); }.    vo
aac0: 69 64 20 52 65 6c 65 61 73 65 46 6c 6f 61 74 41  id ReleaseFloatA
aad0: 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 6a 66 6c  rrayElements(jfl
aae0: 6f 61 74 41 72 72 61 79 20 61 72 72 61 79 2c 20  oatArray array, 
aaf0: 6a 66 6c 6f 61 74 2a 20 65 6c 65 6d 73 2c 0a 20  jfloat* elems,. 
ab00: 20 20 20 20 20 20 20 6a 69 6e 74 20 6d 6f 64 65         jint mode
ab10: 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e  ).    { function
ab20: 73 2d 3e 52 65 6c 65 61 73 65 46 6c 6f 61 74 41  s->ReleaseFloatA
ab30: 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 74 68 69  rrayElements(thi
ab40: 73 2c 20 61 72 72 61 79 2c 20 65 6c 65 6d 73 2c  s, array, elems,
ab50: 20 6d 6f 64 65 29 3b 20 7d 0a 20 20 20 20 76 6f   mode); }.    vo
ab60: 69 64 20 52 65 6c 65 61 73 65 44 6f 75 62 6c 65  id ReleaseDouble
ab70: 41 72 72 61 79 45 6c 65 6d 65 6e 74 73 28 6a 64  ArrayElements(jd
ab80: 6f 75 62 6c 65 41 72 72 61 79 20 61 72 72 61 79  oubleArray array
ab90: 2c 20 6a 64 6f 75 62 6c 65 2a 20 65 6c 65 6d 73  , jdouble* elems
aba0: 2c 0a 20 20 20 20 20 20 20 20 6a 69 6e 74 20 6d  ,.        jint m
abb0: 6f 64 65 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  ode).    { funct
abc0: 69 6f 6e 73 2d 3e 52 65 6c 65 61 73 65 44 6f 75  ions->ReleaseDou
abd0: 62 6c 65 41 72 72 61 79 45 6c 65 6d 65 6e 74 73  bleArrayElements
abe0: 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20 65 6c  (this, array, el
abf0: 65 6d 73 2c 20 6d 6f 64 65 29 3b 20 7d 0a 0a 20  ems, mode); }.. 
ac00: 20 20 20 76 6f 69 64 20 47 65 74 42 6f 6f 6c 65     void GetBoole
ac10: 61 6e 41 72 72 61 79 52 65 67 69 6f 6e 28 6a 62  anArrayRegion(jb
ac20: 6f 6f 6c 65 61 6e 41 72 72 61 79 20 61 72 72 61  ooleanArray arra
ac30: 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74 2c 20  y, jsize start, 
ac40: 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20 20 20  jsize len,.     
ac50: 20 20 20 6a 62 6f 6f 6c 65 61 6e 2a 20 62 75 66     jboolean* buf
ac60: 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e  ).    { function
ac70: 73 2d 3e 47 65 74 42 6f 6f 6c 65 61 6e 41 72 72  s->GetBooleanArr
ac80: 61 79 52 65 67 69 6f 6e 28 74 68 69 73 2c 20 61  ayRegion(this, a
ac90: 72 72 61 79 2c 20 73 74 61 72 74 2c 20 6c 65 6e  rray, start, len
aca0: 2c 20 62 75 66 29 3b 20 7d 0a 20 20 20 20 76 6f  , buf); }.    vo
acb0: 69 64 20 47 65 74 42 79 74 65 41 72 72 61 79 52  id GetByteArrayR
acc0: 65 67 69 6f 6e 28 6a 62 79 74 65 41 72 72 61 79  egion(jbyteArray
acd0: 20 61 72 72 61 79 2c 20 6a 73 69 7a 65 20 73 74   array, jsize st
ace0: 61 72 74 2c 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a  art, jsize len,.
acf0: 20 20 20 20 20 20 20 20 6a 62 79 74 65 2a 20 62          jbyte* b
ad00: 75 66 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69  uf).    { functi
ad10: 6f 6e 73 2d 3e 47 65 74 42 79 74 65 41 72 72 61  ons->GetByteArra
ad20: 79 52 65 67 69 6f 6e 28 74 68 69 73 2c 20 61 72  yRegion(this, ar
ad30: 72 61 79 2c 20 73 74 61 72 74 2c 20 6c 65 6e 2c  ray, start, len,
ad40: 20 62 75 66 29 3b 20 7d 0a 20 20 20 20 76 6f 69   buf); }.    voi
ad50: 64 20 47 65 74 43 68 61 72 41 72 72 61 79 52 65  d GetCharArrayRe
ad60: 67 69 6f 6e 28 6a 63 68 61 72 41 72 72 61 79 20  gion(jcharArray 
ad70: 61 72 72 61 79 2c 20 6a 73 69 7a 65 20 73 74 61  array, jsize sta
ad80: 72 74 2c 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20  rt, jsize len,. 
ad90: 20 20 20 20 20 20 20 6a 63 68 61 72 2a 20 62 75         jchar* bu
ada0: 66 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f  f).    { functio
adb0: 6e 73 2d 3e 47 65 74 43 68 61 72 41 72 72 61 79  ns->GetCharArray
adc0: 52 65 67 69 6f 6e 28 74 68 69 73 2c 20 61 72 72  Region(this, arr
add0: 61 79 2c 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20  ay, start, len, 
ade0: 62 75 66 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64  buf); }.    void
adf0: 20 47 65 74 53 68 6f 72 74 41 72 72 61 79 52 65   GetShortArrayRe
ae00: 67 69 6f 6e 28 6a 73 68 6f 72 74 41 72 72 61 79  gion(jshortArray
ae10: 20 61 72 72 61 79 2c 20 6a 73 69 7a 65 20 73 74   array, jsize st
ae20: 61 72 74 2c 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a  art, jsize len,.
ae30: 20 20 20 20 20 20 20 20 6a 73 68 6f 72 74 2a 20          jshort* 
ae40: 62 75 66 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  buf).    { funct
ae50: 69 6f 6e 73 2d 3e 47 65 74 53 68 6f 72 74 41 72  ions->GetShortAr
ae60: 72 61 79 52 65 67 69 6f 6e 28 74 68 69 73 2c 20  rayRegion(this, 
ae70: 61 72 72 61 79 2c 20 73 74 61 72 74 2c 20 6c 65  array, start, le
ae80: 6e 2c 20 62 75 66 29 3b 20 7d 0a 20 20 20 20 76  n, buf); }.    v
ae90: 6f 69 64 20 47 65 74 49 6e 74 41 72 72 61 79 52  oid GetIntArrayR
aea0: 65 67 69 6f 6e 28 6a 69 6e 74 41 72 72 61 79 20  egion(jintArray 
aeb0: 61 72 72 61 79 2c 20 6a 73 69 7a 65 20 73 74 61  array, jsize sta
aec0: 72 74 2c 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20  rt, jsize len,. 
aed0: 20 20 20 20 20 20 20 6a 69 6e 74 2a 20 62 75 66         jint* buf
aee0: 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e  ).    { function
aef0: 73 2d 3e 47 65 74 49 6e 74 41 72 72 61 79 52 65  s->GetIntArrayRe
af00: 67 69 6f 6e 28 74 68 69 73 2c 20 61 72 72 61 79  gion(this, array
af10: 2c 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75  , start, len, bu
af20: 66 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 47  f); }.    void G
af30: 65 74 4c 6f 6e 67 41 72 72 61 79 52 65 67 69 6f  etLongArrayRegio
af40: 6e 28 6a 6c 6f 6e 67 41 72 72 61 79 20 61 72 72  n(jlongArray arr
af50: 61 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74 2c  ay, jsize start,
af60: 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20 20   jsize len,.    
af70: 20 20 20 20 6a 6c 6f 6e 67 2a 20 62 75 66 29 0a      jlong* buf).
af80: 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d      { functions-
af90: 3e 47 65 74 4c 6f 6e 67 41 72 72 61 79 52 65 67  >GetLongArrayReg
afa0: 69 6f 6e 28 74 68 69 73 2c 20 61 72 72 61 79 2c  ion(this, array,
afb0: 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75 66   start, len, buf
afc0: 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 47 65  ); }.    void Ge
afd0: 74 46 6c 6f 61 74 41 72 72 61 79 52 65 67 69 6f  tFloatArrayRegio
afe0: 6e 28 6a 66 6c 6f 61 74 41 72 72 61 79 20 61 72  n(jfloatArray ar
aff0: 72 61 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74  ray, jsize start
b000: 2c 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20  , jsize len,.   
b010: 20 20 20 20 20 6a 66 6c 6f 61 74 2a 20 62 75 66       jfloat* buf
b020: 29 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e  ).    { function
b030: 73 2d 3e 47 65 74 46 6c 6f 61 74 41 72 72 61 79  s->GetFloatArray
b040: 52 65 67 69 6f 6e 28 74 68 69 73 2c 20 61 72 72  Region(this, arr
b050: 61 79 2c 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20  ay, start, len, 
b060: 62 75 66 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64  buf); }.    void
b070: 20 47 65 74 44 6f 75 62 6c 65 41 72 72 61 79 52   GetDoubleArrayR
b080: 65 67 69 6f 6e 28 6a 64 6f 75 62 6c 65 41 72 72  egion(jdoubleArr
b090: 61 79 20 61 72 72 61 79 2c 20 6a 73 69 7a 65 20  ay array, jsize 
b0a0: 73 74 61 72 74 2c 20 6a 73 69 7a 65 20 6c 65 6e  start, jsize len
b0b0: 2c 0a 20 20 20 20 20 20 20 20 6a 64 6f 75 62 6c  ,.        jdoubl
b0c0: 65 2a 20 62 75 66 29 0a 20 20 20 20 7b 20 66 75  e* buf).    { fu
b0d0: 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 44 6f 75 62  nctions->GetDoub
b0e0: 6c 65 41 72 72 61 79 52 65 67 69 6f 6e 28 74 68  leArrayRegion(th
b0f0: 69 73 2c 20 61 72 72 61 79 2c 20 73 74 61 72 74  is, array, start
b100: 2c 20 6c 65 6e 2c 20 62 75 66 29 3b 20 7d 0a 0a  , len, buf); }..
b110: 20 20 20 20 76 6f 69 64 20 53 65 74 42 6f 6f 6c      void SetBool
b120: 65 61 6e 41 72 72 61 79 52 65 67 69 6f 6e 28 6a  eanArrayRegion(j
b130: 62 6f 6f 6c 65 61 6e 41 72 72 61 79 20 61 72 72  booleanArray arr
b140: 61 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74 2c  ay, jsize start,
b150: 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20 20   jsize len,.    
b160: 20 20 20 20 63 6f 6e 73 74 20 6a 62 6f 6f 6c 65      const jboole
b170: 61 6e 2a 20 62 75 66 29 0a 20 20 20 20 7b 20 66  an* buf).    { f
b180: 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 42 6f 6f  unctions->SetBoo
b190: 6c 65 61 6e 41 72 72 61 79 52 65 67 69 6f 6e 28  leanArrayRegion(
b1a0: 74 68 69 73 2c 20 61 72 72 61 79 2c 20 73 74 61  this, array, sta
b1b0: 72 74 2c 20 6c 65 6e 2c 20 62 75 66 29 3b 20 7d  rt, len, buf); }
b1c0: 0a 20 20 20 20 76 6f 69 64 20 53 65 74 42 79 74  .    void SetByt
b1d0: 65 41 72 72 61 79 52 65 67 69 6f 6e 28 6a 62 79  eArrayRegion(jby
b1e0: 74 65 41 72 72 61 79 20 61 72 72 61 79 2c 20 6a  teArray array, j
b1f0: 73 69 7a 65 20 73 74 61 72 74 2c 20 6a 73 69 7a  size start, jsiz
b200: 65 20 6c 65 6e 2c 0a 20 20 20 20 20 20 20 20 63  e len,.        c
b210: 6f 6e 73 74 20 6a 62 79 74 65 2a 20 62 75 66 29  onst jbyte* buf)
b220: 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73  .    { functions
b230: 2d 3e 53 65 74 42 79 74 65 41 72 72 61 79 52 65  ->SetByteArrayRe
b240: 67 69 6f 6e 28 74 68 69 73 2c 20 61 72 72 61 79  gion(this, array
b250: 2c 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75  , start, len, bu
b260: 66 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 53  f); }.    void S
b270: 65 74 43 68 61 72 41 72 72 61 79 52 65 67 69 6f  etCharArrayRegio
b280: 6e 28 6a 63 68 61 72 41 72 72 61 79 20 61 72 72  n(jcharArray arr
b290: 61 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74 2c  ay, jsize start,
b2a0: 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20 20   jsize len,.    
b2b0: 20 20 20 20 63 6f 6e 73 74 20 6a 63 68 61 72 2a      const jchar*
b2c0: 20 62 75 66 29 0a 20 20 20 20 7b 20 66 75 6e 63   buf).    { func
b2d0: 74 69 6f 6e 73 2d 3e 53 65 74 43 68 61 72 41 72  tions->SetCharAr
b2e0: 72 61 79 52 65 67 69 6f 6e 28 74 68 69 73 2c 20  rayRegion(this, 
b2f0: 61 72 72 61 79 2c 20 73 74 61 72 74 2c 20 6c 65  array, start, le
b300: 6e 2c 20 62 75 66 29 3b 20 7d 0a 20 20 20 20 76  n, buf); }.    v
b310: 6f 69 64 20 53 65 74 53 68 6f 72 74 41 72 72 61  oid SetShortArra
b320: 79 52 65 67 69 6f 6e 28 6a 73 68 6f 72 74 41 72  yRegion(jshortAr
b330: 72 61 79 20 61 72 72 61 79 2c 20 6a 73 69 7a 65  ray array, jsize
b340: 20 73 74 61 72 74 2c 20 6a 73 69 7a 65 20 6c 65   start, jsize le
b350: 6e 2c 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74  n,.        const
b360: 20 6a 73 68 6f 72 74 2a 20 62 75 66 29 0a 20 20   jshort* buf).  
b370: 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53    { functions->S
b380: 65 74 53 68 6f 72 74 41 72 72 61 79 52 65 67 69  etShortArrayRegi
b390: 6f 6e 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20  on(this, array, 
b3a0: 73 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75 66 29  start, len, buf)
b3b0: 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 53 65 74  ; }.    void Set
b3c0: 49 6e 74 41 72 72 61 79 52 65 67 69 6f 6e 28 6a  IntArrayRegion(j
b3d0: 69 6e 74 41 72 72 61 79 20 61 72 72 61 79 2c 20  intArray array, 
b3e0: 6a 73 69 7a 65 20 73 74 61 72 74 2c 20 6a 73 69  jsize start, jsi
b3f0: 7a 65 20 6c 65 6e 2c 0a 20 20 20 20 20 20 20 20  ze len,.        
b400: 63 6f 6e 73 74 20 6a 69 6e 74 2a 20 62 75 66 29  const jint* buf)
b410: 0a 20 20 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73  .    { functions
b420: 2d 3e 53 65 74 49 6e 74 41 72 72 61 79 52 65 67  ->SetIntArrayReg
b430: 69 6f 6e 28 74 68 69 73 2c 20 61 72 72 61 79 2c  ion(this, array,
b440: 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75 66   start, len, buf
b450: 29 3b 20 7d 0a 20 20 20 20 76 6f 69 64 20 53 65  ); }.    void Se
b460: 74 4c 6f 6e 67 41 72 72 61 79 52 65 67 69 6f 6e  tLongArrayRegion
b470: 28 6a 6c 6f 6e 67 41 72 72 61 79 20 61 72 72 61  (jlongArray arra
b480: 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74 2c 20  y, jsize start, 
b490: 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20 20 20  jsize len,.     
b4a0: 20 20 20 63 6f 6e 73 74 20 6a 6c 6f 6e 67 2a 20     const jlong* 
b4b0: 62 75 66 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  buf).    { funct
b4c0: 69 6f 6e 73 2d 3e 53 65 74 4c 6f 6e 67 41 72 72  ions->SetLongArr
b4d0: 61 79 52 65 67 69 6f 6e 28 74 68 69 73 2c 20 61  ayRegion(this, a
b4e0: 72 72 61 79 2c 20 73 74 61 72 74 2c 20 6c 65 6e  rray, start, len
b4f0: 2c 20 62 75 66 29 3b 20 7d 0a 20 20 20 20 76 6f  , buf); }.    vo
b500: 69 64 20 53 65 74 46 6c 6f 61 74 41 72 72 61 79  id SetFloatArray
b510: 52 65 67 69 6f 6e 28 6a 66 6c 6f 61 74 41 72 72  Region(jfloatArr
b520: 61 79 20 61 72 72 61 79 2c 20 6a 73 69 7a 65 20  ay array, jsize 
b530: 73 74 61 72 74 2c 20 6a 73 69 7a 65 20 6c 65 6e  start, jsize len
b540: 2c 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20  ,.        const 
b550: 6a 66 6c 6f 61 74 2a 20 62 75 66 29 0a 20 20 20  jfloat* buf).   
b560: 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 53 65   { functions->Se
b570: 74 46 6c 6f 61 74 41 72 72 61 79 52 65 67 69 6f  tFloatArrayRegio
b580: 6e 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20 73  n(this, array, s
b590: 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75 66 29 3b  tart, len, buf);
b5a0: 20 7d 0a 20 20 20 20 76 6f 69 64 20 53 65 74 44   }.    void SetD
b5b0: 6f 75 62 6c 65 41 72 72 61 79 52 65 67 69 6f 6e  oubleArrayRegion
b5c0: 28 6a 64 6f 75 62 6c 65 41 72 72 61 79 20 61 72  (jdoubleArray ar
b5d0: 72 61 79 2c 20 6a 73 69 7a 65 20 73 74 61 72 74  ray, jsize start
b5e0: 2c 20 6a 73 69 7a 65 20 6c 65 6e 2c 0a 20 20 20  , jsize len,.   
b5f0: 20 20 20 20 20 63 6f 6e 73 74 20 6a 64 6f 75 62       const jdoub
b600: 6c 65 2a 20 62 75 66 29 0a 20 20 20 20 7b 20 66  le* buf).    { f
b610: 75 6e 63 74 69 6f 6e 73 2d 3e 53 65 74 44 6f 75  unctions->SetDou
b620: 62 6c 65 41 72 72 61 79 52 65 67 69 6f 6e 28 74  bleArrayRegion(t
b630: 68 69 73 2c 20 61 72 72 61 79 2c 20 73 74 61 72  his, array, star
b640: 74 2c 20 6c 65 6e 2c 20 62 75 66 29 3b 20 7d 0a  t, len, buf); }.
b650: 0a 20 20 20 20 6a 69 6e 74 20 52 65 67 69 73 74  .    jint Regist
b660: 65 72 4e 61 74 69 76 65 73 28 6a 63 6c 61 73 73  erNatives(jclass
b670: 20 63 6c 61 7a 7a 2c 20 63 6f 6e 73 74 20 4a 4e   clazz, const JN
b680: 49 4e 61 74 69 76 65 4d 65 74 68 6f 64 2a 20 6d  INativeMethod* m
b690: 65 74 68 6f 64 73 2c 0a 20 20 20 20 20 20 20 20  ethods,.        
b6a0: 6a 69 6e 74 20 6e 4d 65 74 68 6f 64 73 29 0a 20  jint nMethods). 
b6b0: 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63     { return func
b6c0: 74 69 6f 6e 73 2d 3e 52 65 67 69 73 74 65 72 4e  tions->RegisterN
b6d0: 61 74 69 76 65 73 28 74 68 69 73 2c 20 63 6c 61  atives(this, cla
b6e0: 7a 7a 2c 20 6d 65 74 68 6f 64 73 2c 20 6e 4d 65  zz, methods, nMe
b6f0: 74 68 6f 64 73 29 3b 20 7d 0a 0a 20 20 20 20 6a  thods); }..    j
b700: 69 6e 74 20 55 6e 72 65 67 69 73 74 65 72 4e 61  int UnregisterNa
b710: 74 69 76 65 73 28 6a 63 6c 61 73 73 20 63 6c 61  tives(jclass cla
b720: 7a 7a 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  zz).    { return
b730: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 55 6e 72 65   functions->Unre
b740: 67 69 73 74 65 72 4e 61 74 69 76 65 73 28 74 68  gisterNatives(th
b750: 69 73 2c 20 63 6c 61 7a 7a 29 3b 20 7d 0a 0a 20  is, clazz); }.. 
b760: 20 20 20 6a 69 6e 74 20 4d 6f 6e 69 74 6f 72 45     jint MonitorE
b770: 6e 74 65 72 28 6a 6f 62 6a 65 63 74 20 6f 62 6a  nter(jobject obj
b780: 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66  ).    { return f
b790: 75 6e 63 74 69 6f 6e 73 2d 3e 4d 6f 6e 69 74 6f  unctions->Monito
b7a0: 72 45 6e 74 65 72 28 74 68 69 73 2c 20 6f 62 6a  rEnter(this, obj
b7b0: 29 3b 20 7d 0a 0a 20 20 20 20 6a 69 6e 74 20 4d  ); }..    jint M
b7c0: 6f 6e 69 74 6f 72 45 78 69 74 28 6a 6f 62 6a 65  onitorExit(jobje
b7d0: 63 74 20 6f 62 6a 29 0a 20 20 20 20 7b 20 72 65  ct obj).    { re
b7e0: 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e  turn functions->
b7f0: 4d 6f 6e 69 74 6f 72 45 78 69 74 28 74 68 69 73  MonitorExit(this
b800: 2c 20 6f 62 6a 29 3b 20 7d 0a 0a 20 20 20 20 6a  , obj); }..    j
b810: 69 6e 74 20 47 65 74 4a 61 76 61 56 4d 28 4a 61  int GetJavaVM(Ja
b820: 76 61 56 4d 2a 2a 20 76 6d 29 0a 20 20 20 20 7b  vaVM** vm).    {
b830: 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e   return function
b840: 73 2d 3e 47 65 74 4a 61 76 61 56 4d 28 74 68 69  s->GetJavaVM(thi
b850: 73 2c 20 76 6d 29 3b 20 7d 0a 0a 20 20 20 20 76  s, vm); }..    v
b860: 6f 69 64 20 47 65 74 53 74 72 69 6e 67 52 65 67  oid GetStringReg
b870: 69 6f 6e 28 6a 73 74 72 69 6e 67 20 73 74 72 2c  ion(jstring str,
b880: 20 6a 73 69 7a 65 20 73 74 61 72 74 2c 20 6a 73   jsize start, js
b890: 69 7a 65 20 6c 65 6e 2c 20 6a 63 68 61 72 2a 20  ize len, jchar* 
b8a0: 62 75 66 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  buf).    { funct
b8b0: 69 6f 6e 73 2d 3e 47 65 74 53 74 72 69 6e 67 52  ions->GetStringR
b8c0: 65 67 69 6f 6e 28 74 68 69 73 2c 20 73 74 72 2c  egion(this, str,
b8d0: 20 73 74 61 72 74 2c 20 6c 65 6e 2c 20 62 75 66   start, len, buf
b8e0: 29 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 47  ); }..    void G
b8f0: 65 74 53 74 72 69 6e 67 55 54 46 52 65 67 69 6f  etStringUTFRegio
b900: 6e 28 6a 73 74 72 69 6e 67 20 73 74 72 2c 20 6a  n(jstring str, j
b910: 73 69 7a 65 20 73 74 61 72 74 2c 20 6a 73 69 7a  size start, jsiz
b920: 65 20 6c 65 6e 2c 20 63 68 61 72 2a 20 62 75 66  e len, char* buf
b930: 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66  ).    { return f
b940: 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 53 74 72  unctions->GetStr
b950: 69 6e 67 55 54 46 52 65 67 69 6f 6e 28 74 68 69  ingUTFRegion(thi
b960: 73 2c 20 73 74 72 2c 20 73 74 61 72 74 2c 20 6c  s, str, start, l
b970: 65 6e 2c 20 62 75 66 29 3b 20 7d 0a 0a 20 20 20  en, buf); }..   
b980: 20 76 6f 69 64 2a 20 47 65 74 50 72 69 6d 69 74   void* GetPrimit
b990: 69 76 65 41 72 72 61 79 43 72 69 74 69 63 61 6c  iveArrayCritical
b9a0: 28 6a 61 72 72 61 79 20 61 72 72 61 79 2c 20 6a  (jarray array, j
b9b0: 62 6f 6f 6c 65 61 6e 2a 20 69 73 43 6f 70 79 29  boolean* isCopy)
b9c0: 0a 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75  .    { return fu
b9d0: 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 50 72 69 6d  nctions->GetPrim
b9e0: 69 74 69 76 65 41 72 72 61 79 43 72 69 74 69 63  itiveArrayCritic
b9f0: 61 6c 28 74 68 69 73 2c 20 61 72 72 61 79 2c 20  al(this, array, 
ba00: 69 73 43 6f 70 79 29 3b 20 7d 0a 0a 20 20 20 20  isCopy); }..    
ba10: 76 6f 69 64 20 52 65 6c 65 61 73 65 50 72 69 6d  void ReleasePrim
ba20: 69 74 69 76 65 41 72 72 61 79 43 72 69 74 69 63  itiveArrayCritic
ba30: 61 6c 28 6a 61 72 72 61 79 20 61 72 72 61 79 2c  al(jarray array,
ba40: 20 76 6f 69 64 2a 20 63 61 72 72 61 79 2c 20 6a   void* carray, j
ba50: 69 6e 74 20 6d 6f 64 65 29 0a 20 20 20 20 7b 20  int mode).    { 
ba60: 66 75 6e 63 74 69 6f 6e 73 2d 3e 52 65 6c 65 61  functions->Relea
ba70: 73 65 50 72 69 6d 69 74 69 76 65 41 72 72 61 79  sePrimitiveArray
ba80: 43 72 69 74 69 63 61 6c 28 74 68 69 73 2c 20 61  Critical(this, a
ba90: 72 72 61 79 2c 20 63 61 72 72 61 79 2c 20 6d 6f  rray, carray, mo
baa0: 64 65 29 3b 20 7d 0a 0a 20 20 20 20 63 6f 6e 73  de); }..    cons
bab0: 74 20 6a 63 68 61 72 2a 20 47 65 74 53 74 72 69  t jchar* GetStri
bac0: 6e 67 43 72 69 74 69 63 61 6c 28 6a 73 74 72 69  ngCritical(jstri
bad0: 6e 67 20 73 74 72 69 6e 67 2c 20 6a 62 6f 6f 6c  ng string, jbool
bae0: 65 61 6e 2a 20 69 73 43 6f 70 79 29 0a 20 20 20  ean* isCopy).   
baf0: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
bb00: 6f 6e 73 2d 3e 47 65 74 53 74 72 69 6e 67 43 72  ons->GetStringCr
bb10: 69 74 69 63 61 6c 28 74 68 69 73 2c 20 73 74 72  itical(this, str
bb20: 69 6e 67 2c 20 69 73 43 6f 70 79 29 3b 20 7d 0a  ing, isCopy); }.
bb30: 0a 20 20 20 20 76 6f 69 64 20 52 65 6c 65 61 73  .    void Releas
bb40: 65 53 74 72 69 6e 67 43 72 69 74 69 63 61 6c 28  eStringCritical(
bb50: 6a 73 74 72 69 6e 67 20 73 74 72 69 6e 67 2c 20  jstring string, 
bb60: 63 6f 6e 73 74 20 6a 63 68 61 72 2a 20 63 61 72  const jchar* car
bb70: 72 61 79 29 0a 20 20 20 20 7b 20 66 75 6e 63 74  ray).    { funct
bb80: 69 6f 6e 73 2d 3e 52 65 6c 65 61 73 65 53 74 72  ions->ReleaseStr
bb90: 69 6e 67 43 72 69 74 69 63 61 6c 28 74 68 69 73  ingCritical(this
bba0: 2c 20 73 74 72 69 6e 67 2c 20 63 61 72 72 61 79  , string, carray
bbb0: 29 3b 20 7d 0a 0a 20 20 20 20 6a 77 65 61 6b 20  ); }..    jweak 
bbc0: 4e 65 77 57 65 61 6b 47 6c 6f 62 61 6c 52 65 66  NewWeakGlobalRef
bbd0: 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 29 0a 20 20  (jobject obj).  
bbe0: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
bbf0: 69 6f 6e 73 2d 3e 4e 65 77 57 65 61 6b 47 6c 6f  ions->NewWeakGlo
bc00: 62 61 6c 52 65 66 28 74 68 69 73 2c 20 6f 62 6a  balRef(this, obj
bc10: 29 3b 20 7d 0a 0a 20 20 20 20 76 6f 69 64 20 44  ); }..    void D
bc20: 65 6c 65 74 65 57 65 61 6b 47 6c 6f 62 61 6c 52  eleteWeakGlobalR
bc30: 65 66 28 6a 77 65 61 6b 20 6f 62 6a 29 0a 20 20  ef(jweak obj).  
bc40: 20 20 7b 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 44    { functions->D
bc50: 65 6c 65 74 65 57 65 61 6b 47 6c 6f 62 61 6c 52  eleteWeakGlobalR
bc60: 65 66 28 74 68 69 73 2c 20 6f 62 6a 29 3b 20 7d  ef(this, obj); }
bc70: 0a 0a 20 20 20 20 6a 62 6f 6f 6c 65 61 6e 20 45  ..    jboolean E
bc80: 78 63 65 70 74 69 6f 6e 43 68 65 63 6b 28 29 0a  xceptionCheck().
bc90: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e      { return fun
bca0: 63 74 69 6f 6e 73 2d 3e 45 78 63 65 70 74 69 6f  ctions->Exceptio
bcb0: 6e 43 68 65 63 6b 28 74 68 69 73 29 3b 20 7d 0a  nCheck(this); }.
bcc0: 0a 20 20 20 20 6a 6f 62 6a 65 63 74 20 4e 65 77  .    jobject New
bcd0: 44 69 72 65 63 74 42 79 74 65 42 75 66 66 65 72  DirectByteBuffer
bce0: 28 76 6f 69 64 2a 20 61 64 64 72 65 73 73 2c 20  (void* address, 
bcf0: 6a 6c 6f 6e 67 20 63 61 70 61 63 69 74 79 29 0a  jlong capacity).
bd00: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e      { return fun
bd10: 63 74 69 6f 6e 73 2d 3e 4e 65 77 44 69 72 65 63  ctions->NewDirec
bd20: 74 42 79 74 65 42 75 66 66 65 72 28 74 68 69 73  tByteBuffer(this
bd30: 2c 20 61 64 64 72 65 73 73 2c 20 63 61 70 61 63  , address, capac
bd40: 69 74 79 29 3b 20 7d 0a 0a 20 20 20 20 76 6f 69  ity); }..    voi
bd50: 64 2a 20 47 65 74 44 69 72 65 63 74 42 75 66 66  d* GetDirectBuff
bd60: 65 72 41 64 64 72 65 73 73 28 6a 6f 62 6a 65 63  erAddress(jobjec
bd70: 74 20 62 75 66 29 0a 20 20 20 20 7b 20 72 65 74  t buf).    { ret
bd80: 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47  urn functions->G
bd90: 65 74 44 69 72 65 63 74 42 75 66 66 65 72 41 64  etDirectBufferAd
bda0: 64 72 65 73 73 28 74 68 69 73 2c 20 62 75 66 29  dress(this, buf)
bdb0: 3b 20 7d 0a 0a 20 20 20 20 6a 6c 6f 6e 67 20 47  ; }..    jlong G
bdc0: 65 74 44 69 72 65 63 74 42 75 66 66 65 72 43 61  etDirectBufferCa
bdd0: 70 61 63 69 74 79 28 6a 6f 62 6a 65 63 74 20 62  pacity(jobject b
bde0: 75 66 29 0a 20 20 20 20 7b 20 72 65 74 75 72 6e  uf).    { return
bdf0: 20 66 75 6e 63 74 69 6f 6e 73 2d 3e 47 65 74 44   functions->GetD
be00: 69 72 65 63 74 42 75 66 66 65 72 43 61 70 61 63  irectBufferCapac
be10: 69 74 79 28 74 68 69 73 2c 20 62 75 66 29 3b 20  ity(this, buf); 
be20: 7d 0a 0a 20 20 20 20 2f 2a 20 61 64 64 65 64 20  }..    /* added 
be30: 69 6e 20 4a 4e 49 20 31 2e 36 20 2a 2f 0a 20 20  in JNI 1.6 */.  
be40: 20 20 6a 6f 62 6a 65 63 74 52 65 66 54 79 70 65    jobjectRefType
be50: 20 47 65 74 4f 62 6a 65 63 74 52 65 66 54 79 70   GetObjectRefTyp
be60: 65 28 6a 6f 62 6a 65 63 74 20 6f 62 6a 29 0a 20  e(jobject obj). 
be70: 20 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63     { return func
be80: 74 69 6f 6e 73 2d 3e 47 65 74 4f 62 6a 65 63 74  tions->GetObject
be90: 52 65 66 54 79 70 65 28 74 68 69 73 2c 20 6f 62  RefType(this, ob
bea0: 6a 29 3b 20 7d 0a 23 65 6e 64 69 66 20 2f 2a 5f  j); }.#endif /*_
beb0: 5f 63 70 6c 75 73 70 6c 75 73 2a 2f 0a 7d 3b 0a  _cplusplus*/.};.
bec0: 0a 0a 2f 2a 0a 20 2a 20 4a 4e 49 20 69 6e 76 6f  ../*. * JNI invo
bed0: 63 61 74 69 6f 6e 20 69 6e 74 65 72 66 61 63 65  cation interface
bee0: 2e 0a 20 2a 2f 0a 73 74 72 75 63 74 20 4a 4e 49  .. */.struct JNI
bef0: 49 6e 76 6f 6b 65 49 6e 74 65 72 66 61 63 65 20  InvokeInterface 
bf00: 7b 0a 20 20 20 20 76 6f 69 64 2a 20 20 20 20 20  {.    void*     
bf10: 20 20 72 65 73 65 72 76 65 64 30 3b 0a 20 20 20    reserved0;.   
bf20: 20 76 6f 69 64 2a 20 20 20 20 20 20 20 72 65 73   void*       res
bf30: 65 72 76 65 64 31 3b 0a 20 20 20 20 76 6f 69 64  erved1;.    void
bf40: 2a 20 20 20 20 20 20 20 72 65 73 65 72 76 65 64  *       reserved
bf50: 32 3b 0a 0a 20 20 20 20 6a 69 6e 74 20 20 20 20  2;..    jint    
bf60: 20 20 20 20 28 2a 44 65 73 74 72 6f 79 4a 61 76      (*DestroyJav
bf70: 61 56 4d 29 28 4a 61 76 61 56 4d 2a 29 3b 0a 20  aVM)(JavaVM*);. 
bf80: 20 20 20 6a 69 6e 74 20 20 20 20 20 20 20 20 28     jint        (
bf90: 2a 41 74 74 61 63 68 43 75 72 72 65 6e 74 54 68  *AttachCurrentTh
bfa0: 72 65 61 64 29 28 4a 61 76 61 56 4d 2a 2c 20 4a  read)(JavaVM*, J
bfb0: 4e 49 45 6e 76 2a 2a 2c 20 76 6f 69 64 2a 29 3b  NIEnv**, void*);
bfc0: 0a 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20 20  .    jint       
bfd0: 20 28 2a 44 65 74 61 63 68 43 75 72 72 65 6e 74   (*DetachCurrent
bfe0: 54 68 72 65 61 64 29 28 4a 61 76 61 56 4d 2a 29  Thread)(JavaVM*)
bff0: 3b 0a 20 20 20 20 6a 69 6e 74 20 20 20 20 20 20  ;.    jint      
c000: 20 20 28 2a 47 65 74 45 6e 76 29 28 4a 61 76 61    (*GetEnv)(Java
c010: 56 4d 2a 2c 20 76 6f 69 64 2a 2a 2c 20 6a 69 6e  VM*, void**, jin
c020: 74 29 3b 0a 20 20 20 20 6a 69 6e 74 20 20 20 20  t);.    jint    
c030: 20 20 20 20 28 2a 41 74 74 61 63 68 43 75 72 72      (*AttachCurr
c040: 65 6e 74 54 68 72 65 61 64 41 73 44 61 65 6d 6f  entThreadAsDaemo
c050: 6e 29 28 4a 61 76 61 56 4d 2a 2c 20 4a 4e 49 45  n)(JavaVM*, JNIE
c060: 6e 76 2a 2a 2c 20 76 6f 69 64 2a 29 3b 0a 7d 3b  nv**, void*);.};
c070: 0a 0a 2f 2a 0a 20 2a 20 43 2b 2b 20 76 65 72 73  ../*. * C++ vers
c080: 69 6f 6e 2e 0a 20 2a 2f 0a 73 74 72 75 63 74 20  ion.. */.struct 
c090: 5f 4a 61 76 61 56 4d 20 7b 0a 20 20 20 20 63 6f  _JavaVM {.    co
c0a0: 6e 73 74 20 73 74 72 75 63 74 20 4a 4e 49 49 6e  nst struct JNIIn
c0b0: 76 6f 6b 65 49 6e 74 65 72 66 61 63 65 2a 20 66  vokeInterface* f
c0c0: 75 6e 63 74 69 6f 6e 73 3b 0a 0a 23 69 66 20 64  unctions;..#if d
c0d0: 65 66 69 6e 65 64 28 5f 5f 63 70 6c 75 73 70 6c  efined(__cpluspl
c0e0: 75 73 29 0a 20 20 20 20 6a 69 6e 74 20 44 65 73  us).    jint Des
c0f0: 74 72 6f 79 4a 61 76 61 56 4d 28 29 0a 20 20 20  troyJavaVM().   
c100: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
c110: 6f 6e 73 2d 3e 44 65 73 74 72 6f 79 4a 61 76 61  ons->DestroyJava
c120: 56 4d 28 74 68 69 73 29 3b 20 7d 0a 20 20 20 20  VM(this); }.    
c130: 6a 69 6e 74 20 41 74 74 61 63 68 43 75 72 72 65  jint AttachCurre
c140: 6e 74 54 68 72 65 61 64 28 4a 4e 49 45 6e 76 2a  ntThread(JNIEnv*
c150: 2a 20 70 5f 65 6e 76 2c 20 76 6f 69 64 2a 20 74  * p_env, void* t
c160: 68 72 5f 61 72 67 73 29 0a 20 20 20 20 7b 20 72  hr_args).    { r
c170: 65 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d  eturn functions-
c180: 3e 41 74 74 61 63 68 43 75 72 72 65 6e 74 54 68  >AttachCurrentTh
c190: 72 65 61 64 28 74 68 69 73 2c 20 70 5f 65 6e 76  read(this, p_env
c1a0: 2c 20 74 68 72 5f 61 72 67 73 29 3b 20 7d 0a 20  , thr_args); }. 
c1b0: 20 20 20 6a 69 6e 74 20 44 65 74 61 63 68 43 75     jint DetachCu
c1c0: 72 72 65 6e 74 54 68 72 65 61 64 28 29 0a 20 20  rrentThread().  
c1d0: 20 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74    { return funct
c1e0: 69 6f 6e 73 2d 3e 44 65 74 61 63 68 43 75 72 72  ions->DetachCurr
c1f0: 65 6e 74 54 68 72 65 61 64 28 74 68 69 73 29 3b  entThread(this);
c200: 20 7d 0a 20 20 20 20 6a 69 6e 74 20 47 65 74 45   }.    jint GetE
c210: 6e 76 28 76 6f 69 64 2a 2a 20 65 6e 76 2c 20 6a  nv(void** env, j
c220: 69 6e 74 20 76 65 72 73 69 6f 6e 29 0a 20 20 20  int version).   
c230: 20 7b 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69   { return functi
c240: 6f 6e 73 2d 3e 47 65 74 45 6e 76 28 74 68 69 73  ons->GetEnv(this
c250: 2c 20 65 6e 76 2c 20 76 65 72 73 69 6f 6e 29 3b  , env, version);
c260: 20 7d 0a 20 20 20 20 6a 69 6e 74 20 41 74 74 61   }.    jint Atta
c270: 63 68 43 75 72 72 65 6e 74 54 68 72 65 61 64 41  chCurrentThreadA
c280: 73 44 61 65 6d 6f 6e 28 4a 4e 49 45 6e 76 2a 2a  sDaemon(JNIEnv**
c290: 20 70 5f 65 6e 76 2c 20 76 6f 69 64 2a 20 74 68   p_env, void* th
c2a0: 72 5f 61 72 67 73 29 0a 20 20 20 20 7b 20 72 65  r_args).    { re
c2b0: 74 75 72 6e 20 66 75 6e 63 74 69 6f 6e 73 2d 3e  turn functions->
c2c0: 41 74 74 61 63 68 43 75 72 72 65 6e 74 54 68 72  AttachCurrentThr
c2d0: 65 61 64 41 73 44 61 65 6d 6f 6e 28 74 68 69 73  eadAsDaemon(this
c2e0: 2c 20 70 5f 65 6e 76 2c 20 74 68 72 5f 61 72 67  , p_env, thr_arg
c2f0: 73 29 3b 20 7d 0a 23 65 6e 64 69 66 20 2f 2a 5f  s); }.#endif /*_
c300: 5f 63 70 6c 75 73 70 6c 75 73 2a 2f 0a 7d 3b 0a  _cplusplus*/.};.
c310: 0a 73 74 72 75 63 74 20 4a 61 76 61 56 4d 41 74  .struct JavaVMAt
c320: 74 61 63 68 41 72 67 73 20 7b 0a 20 20 20 20 6a  tachArgs {.    j
c330: 69 6e 74 20 20 20 20 20 20 20 20 76 65 72 73 69  int        versi
c340: 6f 6e 3b 20 20 20 20 2f 2a 20 6d 75 73 74 20 62  on;    /* must b
c350: 65 20 3e 3d 20 4a 4e 49 5f 56 45 52 53 49 4f 4e  e >= JNI_VERSION
c360: 5f 31 5f 32 20 2a 2f 0a 20 20 20 20 63 6f 6e 73  _1_2 */.    cons
c370: 74 20 63 68 61 72 2a 20 6e 61 6d 65 3b 20 20 20  t char* name;   
c380: 20 20 20 20 2f 2a 20 4e 55 4c 4c 20 6f 72 20 6e      /* NULL or n
c390: 61 6d 65 20 6f 66 20 74 68 72 65 61 64 20 61 73  ame of thread as
c3a0: 20 6d 6f 64 69 66 69 65 64 20 55 54 46 2d 38 20   modified UTF-8 
c3b0: 73 74 72 20 2a 2f 0a 20 20 20 20 6a 6f 62 6a 65  str */.    jobje
c3c0: 63 74 20 20 20 20 20 67 72 6f 75 70 3b 20 20 20  ct     group;   
c3d0: 20 20 20 2f 2a 20 67 6c 6f 62 61 6c 20 72 65 66     /* global ref
c3e0: 20 6f 66 20 61 20 54 68 72 65 61 64 47 72 6f 75   of a ThreadGrou
c3f0: 70 20 6f 62 6a 65 63 74 2c 20 6f 72 20 4e 55 4c  p object, or NUL
c400: 4c 20 2a 2f 0a 7d 3b 0a 74 79 70 65 64 65 66 20  L */.};.typedef 
c410: 73 74 72 75 63 74 20 4a 61 76 61 56 4d 41 74 74  struct JavaVMAtt
c420: 61 63 68 41 72 67 73 20 4a 61 76 61 56 4d 41 74  achArgs JavaVMAt
c430: 74 61 63 68 41 72 67 73 3b 0a 0a 2f 2a 0a 20 2a  tachArgs;../*. *
c440: 20 4a 4e 49 20 31 2e 32 2b 20 69 6e 69 74 69 61   JNI 1.2+ initia
c450: 6c 69 7a 61 74 69 6f 6e 2e 20 20 28 41 73 20 6f  lization.  (As o
c460: 66 20 31 2e 36 2c 20 74 68 65 20 70 72 65 2d 31  f 1.6, the pre-1
c470: 2e 32 20 73 74 72 75 63 74 75 72 65 73 20 61 72  .2 structures ar
c480: 65 20 6e 6f 0a 20 2a 20 6c 6f 6e 67 65 72 20 73  e no. * longer s
c490: 75 70 70 6f 72 74 65 64 2e 29 0a 20 2a 2f 0a 74  upported.). */.t
c4a0: 79 70 65 64 65 66 20 73 74 72 75 63 74 20 4a 61  ypedef struct Ja
c4b0: 76 61 56 4d 4f 70 74 69 6f 6e 20 7b 0a 20 20 20  vaVMOption {.   
c4c0: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 6f 70 74   const char* opt
c4d0: 69 6f 6e 53 74 72 69 6e 67 3b 0a 20 20 20 20 76  ionString;.    v
c4e0: 6f 69 64 2a 20 20 20 20 20 20 20 65 78 74 72 61  oid*       extra
c4f0: 49 6e 66 6f 3b 0a 7d 20 4a 61 76 61 56 4d 4f 70  Info;.} JavaVMOp
c500: 74 69 6f 6e 3b 0a 0a 74 79 70 65 64 65 66 20 73  tion;..typedef s
c510: 74 72 75 63 74 20 4a 61 76 61 56 4d 49 6e 69 74  truct JavaVMInit
c520: 41 72 67 73 20 7b 0a 20 20 20 20 6a 69 6e 74 20  Args {.    jint 
c530: 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e 3b 20         version; 
c540: 20 20 20 2f 2a 20 75 73 65 20 4a 4e 49 5f 56 45     /* use JNI_VE
c550: 52 53 49 4f 4e 5f 31 5f 32 20 6f 72 20 6c 61 74  RSION_1_2 or lat
c560: 65 72 20 2a 2f 0a 0a 20 20 20 20 6a 69 6e 74 20  er */..    jint 
c570: 20 20 20 20 20 20 20 6e 4f 70 74 69 6f 6e 73 3b         nOptions;
c580: 0a 20 20 20 20 4a 61 76 61 56 4d 4f 70 74 69 6f  .    JavaVMOptio
c590: 6e 2a 20 6f 70 74 69 6f 6e 73 3b 0a 20 20 20 20  n* options;.    
c5a0: 6a 62 6f 6f 6c 65 61 6e 20 20 20 20 69 67 6e 6f  jboolean    igno
c5b0: 72 65 55 6e 72 65 63 6f 67 6e 69 7a 65 64 3b 0a  reUnrecognized;.
c5c0: 7d 20 4a 61 76 61 56 4d 49 6e 69 74 41 72 67 73  } JavaVMInitArgs
c5d0: 3b 0a 0a 23 69 66 64 65 66 20 5f 5f 63 70 6c 75  ;..#ifdef __cplu
c5e0: 73 70 6c 75 73 0a 65 78 74 65 72 6e 20 22 43 22  splus.extern "C"
c5f0: 20 7b 0a 23 65 6e 64 69 66 0a 2f 2a 0a 20 2a 20   {.#endif./*. * 
c600: 56 4d 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  VM initializatio
c610: 6e 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 2a 0a  n functions.. *.
c620: 20 2a 20 4e 6f 74 65 20 74 68 65 73 65 20 61 72   * Note these ar
c630: 65 20 74 68 65 20 6f 6e 6c 79 20 73 79 6d 62 6f  e the only symbo
c640: 6c 73 20 65 78 70 6f 72 74 65 64 20 66 6f 72 20  ls exported for 
c650: 4a 4e 49 20 62 79 20 74 68 65 20 56 4d 2e 0a 20  JNI by the VM.. 
c660: 2a 2f 0a 6a 69 6e 74 20 4a 4e 49 5f 47 65 74 44  */.jint JNI_GetD
c670: 65 66 61 75 6c 74 4a 61 76 61 56 4d 49 6e 69 74  efaultJavaVMInit
c680: 41 72 67 73 28 76 6f 69 64 2a 29 3b 0a 6a 69 6e  Args(void*);.jin
c690: 74 20 4a 4e 49 5f 43 72 65 61 74 65 4a 61 76 61  t JNI_CreateJava
c6a0: 56 4d 28 4a 61 76 61 56 4d 2a 2a 2c 20 4a 4e 49  VM(JavaVM**, JNI
c6b0: 45 6e 76 2a 2a 2c 20 76 6f 69 64 2a 29 3b 0a 6a  Env**, void*);.j
c6c0: 69 6e 74 20 4a 4e 49 5f 47 65 74 43 72 65 61 74  int JNI_GetCreat
c6d0: 65 64 4a 61 76 61 56 4d 73 28 4a 61 76 61 56 4d  edJavaVMs(JavaVM
c6e0: 2a 2a 2c 20 6a 73 69 7a 65 2c 20 6a 73 69 7a 65  **, jsize, jsize
c6f0: 2a 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4a 4e 49  *);..#define JNI
c700: 49 4d 50 4f 52 54 0a 23 64 65 66 69 6e 65 20 4a  IMPORT.#define J
c710: 4e 49 45 58 50 4f 52 54 20 20 5f 5f 61 74 74 72  NIEXPORT  __attr
c720: 69 62 75 74 65 5f 5f 20 28 28 76 69 73 69 62 69  ibute__ ((visibi
c730: 6c 69 74 79 20 28 22 64 65 66 61 75 6c 74 22 29  lity ("default")
c740: 29 29 0a 23 64 65 66 69 6e 65 20 4a 4e 49 43 41  )).#define JNICA
c750: 4c 4c 0a 0a 2f 2a 0a 20 2a 20 50 72 6f 74 6f 74  LL../*. * Protot
c760: 79 70 65 73 20 66 6f 72 20 66 75 6e 63 74 69 6f  ypes for functio
c770: 6e 73 20 65 78 70 6f 72 74 65 64 20 62 79 20 6c  ns exported by l
c780: 6f 61 64 61 62 6c 65 20 73 68 61 72 65 64 20 6c  oadable shared l
c790: 69 62 73 2e 20 20 54 68 65 73 65 20 61 72 65 0a  ibs.  These are.
c7a0: 20 2a 20 63 61 6c 6c 65 64 20 62 79 20 4a 4e 49   * called by JNI
c7b0: 2c 20 6e 6f 74 20 70 72 6f 76 69 64 65 64 20 62  , not provided b
c7c0: 79 20 4a 4e 49 2e 0a 20 2a 2f 0a 4a 4e 49 45 58  y JNI.. */.JNIEX
c7d0: 50 4f 52 54 20 6a 69 6e 74 20 4a 4e 49 5f 4f 6e  PORT jint JNI_On
c7e0: 4c 6f 61 64 28 4a 61 76 61 56 4d 2a 20 76 6d 2c  Load(JavaVM* vm,
c7f0: 20 76 6f 69 64 2a 20 72 65 73 65 72 76 65 64 29   void* reserved)
c800: 3b 0a 4a 4e 49 45 58 50 4f 52 54 20 76 6f 69 64  ;.JNIEXPORT void
c810: 20 4a 4e 49 5f 4f 6e 55 6e 6c 6f 61 64 28 4a 61   JNI_OnUnload(Ja
c820: 76 61 56 4d 2a 20 76 6d 2c 20 76 6f 69 64 2a 20  vaVM* vm, void* 
c830: 72 65 73 65 72 76 65 64 29 3b 0a 0a 23 69 66 64  reserved);..#ifd
c840: 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 7d  ef __cplusplus.}
c850: 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a 20  .#endif.../*. * 
c860: 4d 61 6e 69 66 65 73 74 20 63 6f 6e 73 74 61 6e  Manifest constan
c870: 74 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ts.. */.#define 
c880: 4a 4e 49 5f 46 41 4c 53 45 20 20 20 30 0a 23 64  JNI_FALSE   0.#d
c890: 65 66 69 6e 65 20 4a 4e 49 5f 54 52 55 45 20 20  efine JNI_TRUE  
c8a0: 20 20 31 0a 0a 23 64 65 66 69 6e 65 20 4a 4e 49    1..#define JNI
c8b0: 5f 56 45 52 53 49 4f 4e 5f 31 5f 31 20 30 78 30  _VERSION_1_1 0x0
c8c0: 30 30 31 30 30 30 31 0a 23 64 65 66 69 6e 65 20  0010001.#define 
c8d0: 4a 4e 49 5f 56 45 52 53 49 4f 4e 5f 31 5f 32 20  JNI_VERSION_1_2 
c8e0: 30 78 30 30 30 31 30 30 30 32 0a 23 64 65 66 69  0x00010002.#defi
c8f0: 6e 65 20 4a 4e 49 5f 56 45 52 53 49 4f 4e 5f 31  ne JNI_VERSION_1
c900: 5f 34 20 30 78 30 30 30 31 30 30 30 34 0a 23 64  _4 0x00010004.#d
c910: 65 66 69 6e 65 20 4a 4e 49 5f 56 45 52 53 49 4f  efine JNI_VERSIO
c920: 4e 5f 31 5f 36 20 30 78 30 30 30 31 30 30 30 36  N_1_6 0x00010006
c930: 0a 0a 23 64 65 66 69 6e 65 20 4a 4e 49 5f 4f 4b  ..#define JNI_OK
c940: 20 20 20 20 20 20 20 20 20 20 28 30 29 20 20 20            (0)   
c950: 20 20 20 20 20 20 2f 2a 20 6e 6f 20 65 72 72 6f        /* no erro
c960: 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4a 4e 49  r */.#define JNI
c970: 5f 45 52 52 20 20 20 20 20 20 20 20 20 28 2d 31  _ERR         (-1
c980: 29 20 20 20 20 20 20 20 20 2f 2a 20 67 65 6e 65  )        /* gene
c990: 72 69 63 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65  ric error */.#de
c9a0: 66 69 6e 65 20 4a 4e 49 5f 45 44 45 54 41 43 48  fine JNI_EDETACH
c9b0: 45 44 20 20 20 28 2d 32 29 20 20 20 20 20 20 20  ED   (-2)       
c9c0: 20 2f 2a 20 74 68 72 65 61 64 20 64 65 74 61 63   /* thread detac
c9d0: 68 65 64 20 66 72 6f 6d 20 74 68 65 20 56 4d 20  hed from the VM 
c9e0: 2a 2f 0a 23 64 65 66 69 6e 65 20 4a 4e 49 5f 45  */.#define JNI_E
c9f0: 56 45 52 53 49 4f 4e 20 20 20 20 28 2d 33 29 20  VERSION    (-3) 
ca00: 20 20 20 20 20 20 20 2f 2a 20 4a 4e 49 20 76 65         /* JNI ve
ca10: 72 73 69 6f 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a  rsion error */..
ca20: 23 64 65 66 69 6e 65 20 4a 4e 49 5f 43 4f 4d 4d  #define JNI_COMM
ca30: 49 54 20 20 20 20 20 20 31 20 20 20 20 20 20 20  IT      1       
ca40: 20 20 20 20 2f 2a 20 63 6f 70 79 20 63 6f 6e 74      /* copy cont
ca50: 65 6e 74 2c 20 64 6f 20 6e 6f 74 20 66 72 65 65  ent, do not free
ca60: 20 62 75 66 66 65 72 20 2a 2f 0a 23 64 65 66 69   buffer */.#defi
ca70: 6e 65 20 4a 4e 49 5f 41 42 4f 52 54 20 20 20 20  ne JNI_ABORT    
ca80: 20 20 20 32 20 20 20 20 20 20 20 20 20 20 20 2f     2           /
ca90: 2a 20 66 72 65 65 20 62 75 66 66 65 72 20 77 2f  * free buffer w/
caa0: 6f 20 63 6f 70 79 69 6e 67 20 62 61 63 6b 20 2a  o copying back *
cab0: 2f 0a 0a 23 65 6e 64 69 66 20 20 2f 2a 20 4a 4e  /..#endif  /* JN
cac0: 49 5f 48 5f 20 2a 2f 0a                          I_H_ */.