SQLite Android Bindings
Hex Artifact Content
Not logged in

Artifact 62c2d1f7cbb03f5f9fd87c5bc986bd4186761079:


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 31 30 20 54 68 65 20 41 6e 64  (C) 2010 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 23 69 66  icense.. */..#if
0270: 6e 64 65 66 20 4a 4e 49 5f 43 4f 4e 53 54 41 4e  ndef JNI_CONSTAN
0280: 54 53 5f 48 5f 69 6e 63 6c 75 64 65 64 0a 23 64  TS_H_included.#d
0290: 65 66 69 6e 65 20 4a 4e 49 5f 43 4f 4e 53 54 41  efine JNI_CONSTA
02a0: 4e 54 53 5f 48 5f 69 6e 63 6c 75 64 65 64 0a 0a  NTS_H_included..
02b0: 23 69 6e 63 6c 75 64 65 20 22 4a 4e 49 48 65 6c  #include "JNIHel
02c0: 70 2e 68 22 0a 0a 2f 2a 2a 0a 20 2a 20 41 20 63  p.h"../**. * A c
02d0: 61 63 68 65 20 74 6f 20 61 76 6f 69 64 20 63 61  ache to avoid ca
02e0: 6c 6c 69 6e 67 20 46 69 6e 64 43 6c 61 73 73 20  lling FindClass 
02f0: 61 74 20 72 75 6e 74 69 6d 65 2e 0a 20 2a 0a 20  at runtime.. *. 
0300: 2a 20 43 6c 61 73 73 20 6c 6f 6f 6b 75 70 20 69  * Class lookup i
0310: 73 20 72 65 6c 61 74 69 76 65 6c 79 20 65 78 70  s relatively exp
0320: 65 6e 73 69 76 65 20 28 32 2e 35 75 73 20 6f 6e  ensive (2.5us on
0330: 20 70 61 73 73 69 6f 6e 2d 65 6e 67 20 61 74 20   passion-eng at 
0340: 74 68 65 20 74 69 6d 65 20 6f 66 20 77 72 69 74  the time of writ
0350: 69 6e 67 29 2c 20 73 6f 20 77 65 20 64 6f 0a 20  ing), so we do. 
0360: 2a 20 61 6c 6c 20 73 75 63 68 20 6c 6f 6f 6b 75  * all such looku
0370: 70 73 20 65 61 67 65 72 6c 79 20 61 74 20 73 74  ps eagerly at st
0380: 61 72 74 75 70 2e 20 54 68 69 73 20 6d 65 61 6e  artup. This mean
0390: 73 20 74 68 61 74 20 63 6f 64 65 20 74 68 61 74  s that code that
03a0: 20 6e 65 76 65 72 20 75 73 65 73 2c 20 73 61 79   never uses, say
03b0: 2c 0a 20 2a 20 6a 61 76 61 2e 75 74 69 6c 2e 7a  ,. * java.util.z
03c0: 69 70 2e 44 65 66 6c 61 74 65 72 20 73 74 69 6c  ip.Deflater stil
03d0: 6c 20 68 61 73 20 74 6f 20 70 61 79 20 66 6f 72  l has to pay for
03e0: 20 74 68 65 20 6c 6f 6f 6b 75 70 2c 20 62 75 74   the lookup, but
03f0: 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20 6f   it means that o
0400: 6e 20 61 20 64 65 76 69 63 65 20 74 68 65 20 63  n a device the c
0410: 6f 73 74 0a 20 2a 20 69 73 20 64 65 66 69 6e 69  ost. * is defini
0420: 74 65 6c 79 20 70 61 69 64 20 64 75 72 69 6e 67  tely paid during
0430: 20 62 6f 6f 74 20 61 6e 64 20 61 6d 6f 72 74 69   boot and amorti
0440: 7a 65 64 2e 20 41 20 63 65 6e 74 72 61 6c 20 63  zed. A central c
0450: 61 63 68 65 20 61 6c 73 6f 20 72 65 6d 6f 76 65  ache also remove
0460: 73 20 74 68 65 20 74 65 6d 70 74 61 74 69 6f 6e  s the temptation
0470: 20 74 6f 0a 20 2a 20 64 79 6e 61 6d 69 63 61 6c   to. * dynamical
0480: 6c 79 20 63 61 6c 6c 20 46 69 6e 64 43 6c 61 73  ly call FindClas
0490: 73 20 72 61 74 68 65 72 20 74 68 61 6e 20 61 64  s rather than ad
04a0: 64 20 61 20 73 6d 61 6c 6c 20 63 61 63 68 65 20  d a small cache 
04b0: 74 6f 20 65 61 63 68 20 66 69 6c 65 20 74 68 61  to each file tha
04c0: 74 20 6e 65 65 64 73 20 6f 6e 65 2e 20 41 6e 6f  t needs one. Ano
04d0: 74 68 65 72 0a 20 2a 20 63 6f 73 74 20 69 73 20  ther. * cost is 
04e0: 74 68 61 74 20 65 61 63 68 20 63 6c 61 73 73 20  that each class 
04f0: 63 61 63 68 65 64 20 68 65 72 65 20 72 65 71 75  cached here requ
0500: 69 72 65 73 20 61 20 67 6c 6f 62 61 6c 20 72 65  ires a global re
0510: 66 65 72 65 6e 63 65 2c 20 74 68 6f 75 67 68 20  ference, though 
0520: 69 6e 20 70 72 61 63 74 69 63 65 20 77 65 20 73  in practice we s
0530: 61 76 65 0a 20 2a 20 65 6e 6f 75 67 68 20 62 79  ave. * enough by
0540: 20 6e 6f 74 20 68 61 76 69 6e 67 20 61 20 67 6c   not having a gl
0550: 6f 62 61 6c 20 72 65 66 65 72 65 6e 63 65 20 66  obal reference f
0560: 6f 72 20 65 61 63 68 20 66 69 6c 65 20 74 68 61  or each file tha
0570: 74 20 75 73 65 73 20 61 20 63 6c 61 73 73 20 73  t uses a class s
0580: 75 63 68 20 61 73 20 6a 61 76 61 2e 6c 61 6e 67  uch as java.lang
0590: 2e 53 74 72 69 6e 67 0a 20 2a 20 77 68 69 63 68  .String. * which
05a0: 20 69 73 20 75 73 65 64 20 69 6e 20 73 65 76 65   is used in seve
05b0: 72 61 6c 20 66 69 6c 65 73 2e 0a 20 2a 0a 20 2a  ral files.. *. *
05c0: 20 46 69 6e 64 43 6c 61 73 73 20 69 73 20 73 74   FindClass is st
05d0: 69 6c 6c 20 63 61 6c 6c 65 64 20 69 6e 20 61 20  ill called in a 
05e0: 63 6f 75 70 6c 65 20 6f 66 20 73 69 74 75 61 74  couple of situat
05f0: 69 6f 6e 73 3a 20 77 68 65 6e 20 74 68 72 6f 77  ions: when throw
0600: 69 6e 67 20 65 78 63 65 70 74 69 6f 6e 73 2c 20  ing exceptions, 
0610: 61 6e 64 20 69 6e 20 73 6f 6d 65 20 6f 66 0a 20  and in some of. 
0620: 2a 20 74 68 65 20 73 65 72 69 61 6c 69 7a 61 74  * the serializat
0630: 69 6f 6e 20 63 6f 64 65 2e 20 54 68 65 20 66 6f  ion code. The fo
0640: 72 6d 65 72 20 69 73 20 63 6c 65 61 72 6c 79 20  rmer is clearly 
0650: 6e 6f 74 20 61 20 70 65 72 66 6f 72 6d 61 6e 63  not a performanc
0660: 65 20 63 61 73 65 2c 20 61 6e 64 20 77 65 27 72  e case, and we'r
0670: 65 20 63 75 72 72 65 6e 74 6c 79 0a 20 2a 20 61  e currently. * a
0680: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 6e 65 69  ssuming that nei
0690: 74 68 65 72 20 69 73 20 74 68 65 20 6c 61 74 74  ther is the latt
06a0: 65 72 2e 0a 20 2a 0a 20 2a 20 54 4f 44 4f 3a 20  er.. *. * TODO: 
06b0: 73 69 6d 69 6c 61 72 20 61 72 67 75 6d 65 6e 74  similar argument
06c0: 73 20 68 6f 6c 64 20 66 6f 72 20 66 69 65 6c 64  s hold for field
06d0: 20 61 6e 64 20 6d 65 74 68 6f 64 20 49 44 73 3b   and method IDs;
06e0: 20 77 65 20 73 68 6f 75 6c 64 20 63 61 63 68 65   we should cache
06f0: 20 74 68 65 6d 20 63 65 6e 74 72 61 6c 6c 79 20   them centrally 
0700: 74 6f 6f 2e 0a 20 2a 2f 0a 73 74 72 75 63 74 20  too.. */.struct 
0710: 4a 6e 69 43 6f 6e 73 74 61 6e 74 73 20 7b 0a 20  JniConstants {. 
0720: 20 20 20 73 74 61 74 69 63 20 76 6f 69 64 20 69     static void i
0730: 6e 69 74 28 4a 4e 49 45 6e 76 2a 20 65 6e 76 29  nit(JNIEnv* env)
0740: 3b 0a 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63  ;..    static jc
0750: 6c 61 73 73 20 62 69 64 69 52 75 6e 43 6c 61 73  lass bidiRunClas
0760: 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63  s;.    static jc
0770: 6c 61 73 73 20 62 69 67 44 65 63 69 6d 61 6c 43  lass bigDecimalC
0780: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
0790: 20 6a 63 6c 61 73 73 20 62 6f 6f 6c 65 61 6e 43   jclass booleanC
07a0: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
07b0: 20 6a 63 6c 61 73 73 20 62 79 74 65 41 72 72 61   jclass byteArra
07c0: 79 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74  yClass;.    stat
07d0: 69 63 20 6a 63 6c 61 73 73 20 62 79 74 65 43 6c  ic jclass byteCl
07e0: 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20  ass;.    static 
07f0: 6a 63 6c 61 73 73 20 63 61 6c 65 6e 64 61 72 43  jclass calendarC
0800: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
0810: 20 6a 63 6c 61 73 73 20 63 68 61 72 61 63 74 65   jclass characte
0820: 72 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74  rClass;.    stat
0830: 69 63 20 6a 63 6c 61 73 73 20 63 68 61 72 73 65  ic jclass charse
0840: 74 49 43 55 43 6c 61 73 73 3b 0a 20 20 20 20 73  tICUClass;.    s
0850: 74 61 74 69 63 20 6a 63 6c 61 73 73 20 63 6f 6e  tatic jclass con
0860: 73 74 72 75 63 74 6f 72 43 6c 61 73 73 3b 0a 20  structorClass;. 
0870: 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73     static jclass
0880: 20 64 65 66 6c 61 74 65 72 43 6c 61 73 73 3b 0a   deflaterClass;.
0890: 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73      static jclas
08a0: 73 20 64 6f 75 62 6c 65 43 6c 61 73 73 3b 0a 20  s doubleClass;. 
08b0: 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73     static jclass
08c0: 20 65 72 72 6e 6f 45 78 63 65 70 74 69 6f 6e 43   errnoExceptionC
08d0: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
08e0: 20 6a 63 6c 61 73 73 20 66 69 65 6c 64 43 6c 61   jclass fieldCla
08f0: 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a  ss;.    static j
0900: 63 6c 61 73 73 20 66 69 65 6c 64 50 6f 73 69 74  class fieldPosit
0910: 69 6f 6e 49 74 65 72 61 74 6f 72 43 6c 61 73 73  ionIteratorClass
0920: 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c  ;.    static jcl
0930: 61 73 73 20 66 69 6c 65 44 65 73 63 72 69 70 74  ass fileDescript
0940: 6f 72 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61  orClass;.    sta
0950: 74 69 63 20 6a 63 6c 61 73 73 20 66 6c 6f 61 74  tic jclass float
0960: 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69  Class;.    stati
0970: 63 20 6a 63 6c 61 73 73 20 67 61 69 45 78 63 65  c jclass gaiExce
0980: 70 74 69 6f 6e 43 6c 61 73 73 3b 0a 20 20 20 20  ptionClass;.    
0990: 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20 69 6e  static jclass in
09a0: 65 74 36 41 64 64 72 65 73 73 43 6c 61 73 73 3b  et6AddressClass;
09b0: 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61  .    static jcla
09c0: 73 73 20 69 6e 65 74 41 64 64 72 65 73 73 43 6c  ss inetAddressCl
09d0: 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20  ass;.    static 
09e0: 6a 63 6c 61 73 73 20 69 6e 65 74 53 6f 63 6b 65  jclass inetSocke
09f0: 74 41 64 64 72 65 73 73 43 6c 61 73 73 3b 0a 20  tAddressClass;. 
0a00: 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73     static jclass
0a10: 20 69 6e 65 74 55 6e 69 78 41 64 64 72 65 73 73   inetUnixAddress
0a20: 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69  Class;.    stati
0a30: 63 20 6a 63 6c 61 73 73 20 69 6e 66 6c 61 74 65  c jclass inflate
0a40: 72 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74  rClass;.    stat
0a50: 69 63 20 6a 63 6c 61 73 73 20 69 6e 70 75 74 53  ic jclass inputS
0a60: 74 72 65 61 6d 43 6c 61 73 73 3b 0a 20 20 20 20  treamClass;.    
0a70: 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20 69 6e  static jclass in
0a80: 74 65 67 65 72 43 6c 61 73 73 3b 0a 20 20 20 20  tegerClass;.    
0a90: 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20 6c 6f  static jclass lo
0aa0: 63 61 6c 65 44 61 74 61 43 6c 61 73 73 3b 0a 20  caleDataClass;. 
0ab0: 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73     static jclass
0ac0: 20 6c 6f 6e 67 43 6c 61 73 73 3b 0a 20 20 20 20   longClass;.    
0ad0: 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20 6d 65  static jclass me
0ae0: 74 68 6f 64 43 6c 61 73 73 3b 0a 20 20 20 20 73  thodClass;.    s
0af0: 74 61 74 69 63 20 6a 63 6c 61 73 73 20 6d 75 74  tatic jclass mut
0b00: 61 62 6c 65 49 6e 74 43 6c 61 73 73 3b 0a 20 20  ableIntClass;.  
0b10: 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20    static jclass 
0b20: 6d 75 74 61 62 6c 65 4c 6f 6e 67 43 6c 61 73 73  mutableLongClass
0b30: 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c  ;.    static jcl
0b40: 61 73 73 20 6f 62 6a 65 63 74 43 6c 61 73 73 3b  ass objectClass;
0b50: 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61  .    static jcla
0b60: 73 73 20 6f 62 6a 65 63 74 41 72 72 61 79 43 6c  ss objectArrayCl
0b70: 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20  ass;.    static 
0b80: 6a 63 6c 61 73 73 20 6f 75 74 70 75 74 53 74 72  jclass outputStr
0b90: 65 61 6d 43 6c 61 73 73 3b 0a 20 20 20 20 73 74  eamClass;.    st
0ba0: 61 74 69 63 20 6a 63 6c 61 73 73 20 70 61 72 73  atic jclass pars
0bb0: 65 50 6f 73 69 74 69 6f 6e 43 6c 61 73 73 3b 0a  ePositionClass;.
0bc0: 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73      static jclas
0bd0: 73 20 70 61 74 74 65 72 6e 53 79 6e 74 61 78 45  s patternSyntaxE
0be0: 78 63 65 70 74 69 6f 6e 43 6c 61 73 73 3b 0a 20  xceptionClass;. 
0bf0: 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73     static jclass
0c00: 20 72 65 61 6c 54 6f 53 74 72 69 6e 67 43 6c 61   realToStringCla
0c10: 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a  ss;.    static j
0c20: 63 6c 61 73 73 20 72 65 66 65 72 65 6e 63 65 43  class referenceC
0c30: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
0c40: 20 6a 63 6c 61 73 73 20 73 68 6f 72 74 43 6c 61   jclass shortCla
0c50: 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a  ss;.    static j
0c60: 63 6c 61 73 73 20 73 6f 63 6b 65 74 43 6c 61 73  class socketClas
0c70: 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63  s;.    static jc
0c80: 6c 61 73 73 20 73 6f 63 6b 65 74 49 6d 70 6c 43  lass socketImplC
0c90: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
0ca0: 20 6a 63 6c 61 73 73 20 73 74 72 69 6e 67 43 6c   jclass stringCl
0cb0: 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20  ass;.    static 
0cc0: 6a 63 6c 61 73 73 20 73 74 72 75 63 74 41 64 64  jclass structAdd
0cd0: 72 69 6e 66 6f 43 6c 61 73 73 3b 0a 20 20 20 20  rinfoClass;.    
0ce0: 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20 73 74  static jclass st
0cf0: 72 75 63 74 46 6c 6f 63 6b 43 6c 61 73 73 3b 0a  ructFlockClass;.
0d00: 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73      static jclas
0d10: 73 20 73 74 72 75 63 74 47 72 6f 75 70 52 65 71  s structGroupReq
0d20: 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69  Class;.    stati
0d30: 63 20 6a 63 6c 61 73 73 20 73 74 72 75 63 74 4c  c jclass structL
0d40: 69 6e 67 65 72 43 6c 61 73 73 3b 0a 20 20 20 20  ingerClass;.    
0d50: 73 74 61 74 69 63 20 6a 63 6c 61 73 73 20 73 74  static jclass st
0d60: 72 75 63 74 50 61 73 73 77 64 43 6c 61 73 73 3b  ructPasswdClass;
0d70: 0a 20 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61  .    static jcla
0d80: 73 73 20 73 74 72 75 63 74 50 6f 6c 6c 66 64 43  ss structPollfdC
0d90: 6c 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63  lass;.    static
0da0: 20 6a 63 6c 61 73 73 20 73 74 72 75 63 74 53 74   jclass structSt
0db0: 61 74 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61  atClass;.    sta
0dc0: 74 69 63 20 6a 63 6c 61 73 73 20 73 74 72 75 63  tic jclass struc
0dd0: 74 53 74 61 74 56 66 73 43 6c 61 73 73 3b 0a 20  tStatVfsClass;. 
0de0: 20 20 20 73 74 61 74 69 63 20 6a 63 6c 61 73 73     static jclass
0df0: 20 73 74 72 75 63 74 54 69 6d 65 76 61 6c 43 6c   structTimevalCl
0e00: 61 73 73 3b 0a 20 20 20 20 73 74 61 74 69 63 20  ass;.    static 
0e10: 6a 63 6c 61 73 73 20 73 74 72 75 63 74 55 63 72  jclass structUcr
0e20: 65 64 43 6c 61 73 73 3b 0a 20 20 20 20 73 74 61  edClass;.    sta
0e30: 74 69 63 20 6a 63 6c 61 73 73 20 73 74 72 75 63  tic jclass struc
0e40: 74 55 74 73 6e 61 6d 65 43 6c 61 73 73 3b 0a 7d  tUtsnameClass;.}
0e50: 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 41 54 49 56  ;..#define NATIV
0e60: 45 5f 4d 45 54 48 4f 44 28 63 6c 61 73 73 4e 61  E_METHOD(classNa
0e70: 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 4e 61 6d 65  me, functionName
0e80: 2c 20 73 69 67 6e 61 74 75 72 65 29 20 5c 0a 20  , signature) \. 
0e90: 20 20 20 7b 20 23 66 75 6e 63 74 69 6f 6e 4e 61     { #functionNa
0ea0: 6d 65 2c 20 73 69 67 6e 61 74 75 72 65 2c 20 72  me, signature, r
0eb0: 65 69 6e 74 65 72 70 72 65 74 5f 63 61 73 74 3c  einterpret_cast<
0ec0: 76 6f 69 64 2a 3e 28 63 6c 61 73 73 4e 61 6d 65  void*>(className
0ed0: 20 23 23 20 5f 20 23 23 20 66 75 6e 63 74 69 6f   ## _ ## functio
0ee0: 6e 4e 61 6d 65 29 20 7d 0a 0a 23 65 6e 64 69 66  nName) }..#endif
0ef0: 20 20 2f 2f 20 4a 4e 49 5f 43 4f 4e 53 54 41 4e    // JNI_CONSTAN
0f00: 54 53 5f 48 5f 69 6e 63 6c 75 64 65 64 0a        TS_H_included.