libextractor-java

GNU libextractor
Log | Files | Refs | README | LICENSE

jni.h (29309B)


      1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      2  * This file has been released into the public domain by *
      3  * Etienne M. Gagnon <egagnon@j-meg.com>                 *
      4  * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
      5 
      6 #ifndef SVM_JNI_H
      7 #define SVM_JNI_H
      8 
      9 #include <stdarg.h>
     10 #define JNICALL
     11 #define JNIEXPORT
     12 
     13 #ifdef __cplusplus
     14 extern "C"
     15 {
     16 #endif
     17 
     18 #ifdef _SABLEVM
     19 
     20 #include "system_specific.h"
     21 
     22 #else				/* SABLEVM */
     23 
     24 /* there's probably a better way...*/
     25 
     26 
     27 /* system specific primitive types */
     28 
     29   typedef unsigned char jboolean;
     30   typedef signed char jbyte;
     31   typedef unsigned short jchar;
     32   typedef signed short jshort;
     33   typedef signed int jint;
     34   typedef signed long long jlong;
     35   typedef float jfloat;
     36   typedef double jdouble;
     37 
     38 /* vm specific structures */
     39 
     40   typedef struct _jobject_struct _jobject;	/* kept as an incomplete type */
     41   typedef struct _jfieldID_struct _jfieldID;	/* kept as an incomplete type */
     42   typedef struct _methodID_struct _jmethodID;	/* kept as an incomplete type */
     43 
     44 #endif				/* SABLEVM */
     45 
     46 /* constants */
     47 
     48 #define JNI_FALSE 0
     49 #define JNI_TRUE 1
     50 
     51 #define JNI_COMMIT 1
     52 #define JNI_ABORT 2
     53 
     54 #define JNI_VERSION_1_1 0x00010001
     55 #define JNI_VERSION_1_2 0x00010002
     56 
     57 #define JNI_OK 0
     58 #define JNI_ERR (-1)
     59 #define JNI_EDETACHED (-2)
     60 #define JNI_EVERSION  (-3)
     61 
     62 /* size type */
     63 
     64   typedef jint jsize;
     65 
     66 /* class types */
     67 
     68 #ifdef _SABLEVM
     69 
     70   typedef _jobject *jobject;
     71   typedef _jarray *jarray;
     72 
     73   typedef jobject jclass;
     74   typedef jobject jstring;
     75   typedef jobject jthrowable;
     76   typedef jobject jweak;
     77 
     78   typedef jarray jobjectArray;
     79   typedef jarray jbooleanArray;
     80   typedef jarray jbyteArray;
     81   typedef jarray jcharArray;
     82   typedef jarray jshortArray;
     83   typedef jarray jintArray;
     84   typedef jarray jlongArray;
     85   typedef jarray jfloatArray;
     86   typedef jarray jdoubleArray;
     87 
     88 #else				/* SABLEVM */
     89 
     90   typedef _jobject *jobject;
     91 
     92   typedef jobject jclass;
     93   typedef jobject jstring;
     94   typedef jobject jarray;
     95   typedef jobject jobjectArray;
     96   typedef jobject jbooleanArray;
     97   typedef jobject jbyteArray;
     98   typedef jobject jcharArray;
     99   typedef jobject jshortArray;
    100   typedef jobject jintArray;
    101   typedef jobject jlongArray;
    102   typedef jobject jfloatArray;
    103   typedef jobject jdoubleArray;
    104   typedef jobject jthrowable;
    105   typedef jobject jweak;
    106 
    107 #endif				/* SABLEVM */
    108 
    109 /* fieldID and methodID types */
    110 
    111   typedef _jfieldID *jfieldID;
    112   typedef _jmethodID *jmethodID;
    113 
    114 /* value type */
    115 
    116   typedef union
    117   {
    118     jboolean z;
    119     jbyte b;
    120     jchar c;
    121     jshort s;
    122     jint i;
    123     jlong j;
    124     jfloat f;
    125     jdouble d;
    126     jobject l;
    127   }
    128   jvalue;
    129 
    130 /* JNIEnv type */
    131 
    132   typedef const struct JNINativeInterface *JNIEnv;
    133 
    134 /* JNINativeMethod type */
    135 
    136   typedef struct
    137   {
    138     char *name;
    139     char *signature;
    140     void *fnPtr;
    141   }
    142   JNINativeMethod;
    143 
    144 /* JavaVM type */
    145 
    146   typedef const struct JNIInvokeInterface *JavaVM;
    147 
    148 /* initialization structures */
    149 
    150   typedef struct
    151   {
    152     char *optionString;
    153     void *extraInfo;
    154   }
    155   JavaVMOption;
    156 
    157   typedef struct
    158   {
    159     jint version;
    160     jint nOptions;
    161     JavaVMOption *options;
    162     jboolean ignoreUnrecognized;
    163   }
    164   JavaVMInitArgs;
    165 
    166   typedef struct
    167   {
    168     jint version;
    169     char *name;
    170     jobject group;
    171   }
    172   JavaVMAttachArgs;
    173 
    174 /* JNINativeInterface type */
    175 
    176 /* *INDENT-OFF* */
    177 struct JNINativeInterface
    178 {
    179   void *null_0;
    180   void *null_1;
    181   void *null_2;
    182   void *null_3;
    183   jint (JNICALL *GetVersion) (JNIEnv *env);	/* 4 */
    184   jclass (JNICALL *DefineClass) (JNIEnv *env, const char *name,
    185 				  jobject loader, const jbyte *buf, jsize bufLen);	/* 5 */
    186   jclass (JNICALL *FindClass) (JNIEnv *env, const char *name);	/* 6 */
    187   jmethodID (JNICALL *FromReflectedMethod) (JNIEnv *env, jobject method);	/* 7 */
    188   jfieldID (JNICALL *FromReflectedField) (JNIEnv *env, jobject field);	/* 8 */
    189   jobject (JNICALL *ToReflectedMethod) (JNIEnv *env, jclass cls,
    190 					 jmethodID methodID, jboolean isStatic);	/* 9 */
    191   jclass (JNICALL *GetSuperclass) (JNIEnv *env, jclass clazz);	/* 10 */
    192   jboolean (JNICALL *IsAssignableFrom) (JNIEnv *env, jclass clazz1, jclass clazz2);	/* 11 */
    193   jobject (JNICALL *ToReflectedField) (JNIEnv *env, jclass cls,
    194 					jfieldID fieldID, jboolean isStatic);	/* 12 */
    195   jint (JNICALL *Throw) (JNIEnv *env, jthrowable obj);	/* 13 */
    196   jint (JNICALL *ThrowNew) (JNIEnv *env, jclass clazz, const char *message);	/* 14 */
    197   jthrowable (JNICALL *ExceptionOccurred) (JNIEnv *env);	/* 15 */
    198   void (JNICALL *ExceptionDescribe) (JNIEnv *env);	/* 16 */
    199   void (JNICALL *ExceptionClear) (JNIEnv *env);	/* 17 */
    200   void (JNICALL *FatalError) (JNIEnv *env, const char *msg);	/* 18 */
    201   jint (JNICALL *PushLocalFrame) (JNIEnv *env, jint capacity);	/* 19 */
    202   jobject (JNICALL *PopLocalFrame) (JNIEnv *env, jobject result);	/* 20 */
    203   jobject (JNICALL *NewGlobalRef) (JNIEnv *env, jobject obj);	/* 21 */
    204   void (JNICALL *DeleteGlobalRef) (JNIEnv *env, jobject gref);	/* 22 */
    205   void (JNICALL *DeleteLocalRef) (JNIEnv *env, jobject lref);	/* 23 */
    206   jboolean (JNICALL *IsSameObject) (JNIEnv *env, jobject ref1, jobject ref2);	/* 24 */
    207   jobject (JNICALL *NewLocalRef) (JNIEnv *env, jobject ref);	/* 25 */
    208   jint (JNICALL *EnsureLocalCapacity) (JNIEnv *env, jint capacity);	/* 26 */
    209   jobject (JNICALL *AllocObject) (JNIEnv *env, jclass clazz);	/* 27 */
    210   jobject (JNICALL *NewObject) (JNIEnv *env, jclass clazz,
    211 				 jmethodID methodID, ...);	/* 28 */
    212   jobject (JNICALL *NewObjectV) (JNIEnv *env, jclass clazz,
    213 				  jmethodID methodID, va_list args);	/* 29 */
    214   jobject (JNICALL *NewObjectA) (JNIEnv *env, jclass clazz,
    215 				  jmethodID methodID, jvalue *args);	/* 30 */
    216   jclass (JNICALL *GetObjectClass) (JNIEnv *env, jobject obj);	/* 31 */
    217   jboolean (JNICALL *IsInstanceOf) (JNIEnv *env, jobject obj, jclass clazz);	/* 32 */
    218   jmethodID (JNICALL *GetMethodID) (JNIEnv *env, jclass clazz,
    219 				     const char *name, const char *sig);	/* 33 */
    220   jobject (JNICALL *CallObjectMethod) (JNIEnv *env, jobject obj,
    221 					jmethodID methodID, ...);	/* 34 */
    222   jobject (JNICALL *CallObjectMethodV) (JNIEnv *env, jobject obj,
    223 					 jmethodID methodID, va_list args);	/* 35 */
    224   jobject (JNICALL *CallObjectMethodA) (JNIEnv *env, jobject obj,
    225 					 jmethodID methodID, jvalue *args);	/* 36 */
    226   jboolean (JNICALL *CallBooleanMethod) (JNIEnv *env, jobject obj,
    227 					  jmethodID methodID, ...);	/* 37 */
    228   jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *env, jobject obj,
    229 					   jmethodID methodID, va_list args);	/* 38 */
    230   jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *env, jobject obj,
    231 					   jmethodID methodID, jvalue *args);	/* 39 */
    232   jbyte (JNICALL *CallByteMethod) (JNIEnv *env, jobject obj,
    233 				    jmethodID methodID, ...);	/* 40 */
    234   jbyte (JNICALL *CallByteMethodV) (JNIEnv *env, jobject obj,
    235 				     jmethodID methodID, va_list args);	/* 41 */
    236   jbyte (JNICALL *CallByteMethodA) (JNIEnv *env, jobject obj,
    237 				     jmethodID methodID, jvalue *args);	/* 42 */
    238   jchar (JNICALL *CallCharMethod) (JNIEnv *env, jobject obj,
    239 				    jmethodID methodID, ...);	/* 43 */
    240   jchar (JNICALL *CallCharMethodV) (JNIEnv *env, jobject obj,
    241 				     jmethodID methodID, va_list args);	/* 44 */
    242   jchar (JNICALL *CallCharMethodA) (JNIEnv *env, jobject obj,
    243 				     jmethodID methodID, jvalue *args);	/* 45 */
    244   jshort (JNICALL *CallShortMethod) (JNIEnv *env, jobject obj,
    245 				      jmethodID methodID, ...);	/* 46 */
    246   jshort (JNICALL *CallShortMethodV) (JNIEnv *env, jobject obj,
    247 				       jmethodID methodID, va_list args);	/* 47 */
    248   jshort (JNICALL *CallShortMethodA) (JNIEnv *env, jobject obj,
    249 				       jmethodID methodID, jvalue *args);	/* 48 */
    250   jint (JNICALL *CallIntMethod) (JNIEnv *env, jobject obj,
    251 				  jmethodID methodID, ...);	/* 49 */
    252   jint (JNICALL *CallIntMethodV) (JNIEnv *env, jobject obj,
    253 				   jmethodID methodID, va_list args);	/* 50 */
    254   jint (JNICALL *CallIntMethodA) (JNIEnv *env, jobject obj,
    255 				   jmethodID methodID, jvalue *args);	/* 51 */
    256   jlong (JNICALL *CallLongMethod) (JNIEnv *env, jobject obj,
    257 				    jmethodID methodID, ...);	/* 52 */
    258   jlong (JNICALL *CallLongMethodV) (JNIEnv *env, jobject obj,
    259 				     jmethodID methodID, va_list args);	/* 53 */
    260   jlong (JNICALL *CallLongMethodA) (JNIEnv *env, jobject obj,
    261 				     jmethodID methodID, jvalue *args);	/* 54 */
    262   jfloat (JNICALL *CallFloatMethod) (JNIEnv *env, jobject obj,
    263 				      jmethodID methodID, ...);	/* 55 */
    264   jfloat (JNICALL *CallFloatMethodV) (JNIEnv *env, jobject obj,
    265 				       jmethodID methodID, va_list args);	/* 56 */
    266   jfloat (JNICALL *CallFloatMethodA) (JNIEnv *env, jobject obj,
    267 				       jmethodID methodID, jvalue *args);	/* 57 */
    268   jdouble (JNICALL *CallDoubleMethod) (JNIEnv *env, jobject obj,
    269 					jmethodID methodID, ...);	/* 58 */
    270   jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *env, jobject obj,
    271 					 jmethodID methodID, va_list args);	/* 59 */
    272   jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *env, jobject obj,
    273 					 jmethodID methodID, jvalue *args);	/* 60 */
    274   void (JNICALL *CallVoidMethod) (JNIEnv *env, jobject obj,
    275 				   jmethodID methodID, ...);	/* 61 */
    276   void (JNICALL *CallVoidMethodV) (JNIEnv *env, jobject obj,
    277 				    jmethodID methodID, va_list args);	/* 62 */
    278   void (JNICALL *CallVoidMethodA) (JNIEnv *env, jobject obj,
    279 				    jmethodID methodID, jvalue *args);	/* 63 */
    280   jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *env, jobject obj,
    281 						  jclass clazz,
    282 						  jmethodID methodID, ...);	/* 64 */
    283   jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *env, jobject obj,
    284 						   jclass clazz,
    285 						   jmethodID methodID, va_list args);	/* 65 */
    286   jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *env, jobject obj,
    287 						   jclass clazz,
    288 						   jmethodID methodID, jvalue *args);	/* 66 */
    289   jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *env, jobject obj,
    290 						    jclass clazz,
    291 						    jmethodID methodID, ...);	/* 67 */
    292   jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *env, jobject obj,
    293 						     jclass clazz,
    294 						     jmethodID methodID, va_list args);	/* 68 */
    295   jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *env, jobject obj,
    296 						     jclass clazz,
    297 						     jmethodID methodID, jvalue *args);	/* 69 */
    298   jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *env, jobject obj,
    299 					      jclass clazz,
    300 					      jmethodID methodID, ...);	/* 70 */
    301   jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *env, jobject obj,
    302 					       jclass clazz,
    303 					       jmethodID methodID, va_list args);	/* 71 */
    304   jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *env, jobject obj,
    305 					       jclass clazz,
    306 					       jmethodID methodID, jvalue *args);	/* 72 */
    307   jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *env, jobject obj,
    308 					      jclass clazz,
    309 					      jmethodID methodID, ...);	/* 73 */
    310   jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *env, jobject obj,
    311 					       jclass clazz,
    312 					       jmethodID methodID, va_list args);	/* 74 */
    313   jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *env, jobject obj,
    314 					       jclass clazz,
    315 					       jmethodID methodID, jvalue *args);	/* 75 */
    316   jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *env, jobject obj,
    317 						jclass clazz,
    318 						jmethodID methodID, ...);	/* 76 */
    319   jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *env, jobject obj,
    320 						 jclass clazz,
    321 						 jmethodID methodID, va_list args);	/* 77 */
    322   jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *env, jobject obj,
    323 						 jclass clazz,
    324 						 jmethodID methodID, jvalue *args);	/* 78 */
    325   jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *env, jobject obj,
    326 					    jclass clazz, jmethodID methodID, ...);	/* 79 */
    327   jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *env, jobject obj,
    328 					     jclass clazz, jmethodID methodID,
    329 					     va_list args);	/* 80 */
    330   jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *env, jobject obj,
    331 					     jclass clazz, jmethodID methodID,
    332 					     jvalue *args);	/* 81 */
    333   jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *env, jobject obj,
    334 					      jclass clazz,
    335 					      jmethodID methodID, ...);	/* 82 */
    336   jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *env, jobject obj,
    337 					       jclass clazz,
    338 					       jmethodID methodID, va_list args);	/* 83 */
    339   jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *env, jobject obj,
    340 					       jclass clazz,
    341 					       jmethodID methodID, jvalue *args);	/* 84 */
    342   jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *env, jobject obj,
    343 						jclass clazz,
    344 						jmethodID methodID, ...);	/* 85 */
    345   jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *env, jobject obj,
    346 						 jclass clazz,
    347 						 jmethodID methodID, va_list args);	/* 86 */
    348   jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *env, jobject obj,
    349 						 jclass clazz,
    350 						 jmethodID methodID, jvalue *args);	/* 87 */
    351   jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *env, jobject obj,
    352 						  jclass clazz,
    353 						  jmethodID methodID, ...);	/* 88 */
    354   jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *env, jobject obj,
    355 						   jclass clazz,
    356 						   jmethodID methodID, va_list args);	/* 89 */
    357   jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *env, jobject obj,
    358 						   jclass clazz,
    359 						   jmethodID methodID, jvalue *args);	/* 90 */
    360   void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *env, jobject obj,
    361 					     jclass clazz, jmethodID methodID, ...);	/* 91 */
    362   void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *env, jobject obj,
    363 					      jclass clazz,
    364 					      jmethodID methodID, va_list args);	/* 92 */
    365   void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *env, jobject obj,
    366 					      jclass clazz,
    367 					      jmethodID methodID, jvalue *args);	/* 93 */
    368   jfieldID (JNICALL *GetFieldID) (JNIEnv *env, jclass clazz,
    369 				   const char *name, const char *sig);	/* 94 */
    370   jobject (JNICALL *GetObjectField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 95 */
    371   jboolean (JNICALL *GetBooleanField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 96 */
    372   jbyte (JNICALL *GetByteField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 97 */
    373   jchar (JNICALL *GetCharField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 98 */
    374   jshort (JNICALL *GetShortField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 99 */
    375   jint (JNICALL *GetIntField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 100 */
    376   jlong (JNICALL *GetLongField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 101 */
    377   jfloat (JNICALL *GetFloatField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 102 */
    378   jdouble (JNICALL *GetDoubleField) (JNIEnv *env, jobject obj, jfieldID fieldID);	/* 103 */
    379   void (JNICALL *SetObjectField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    380 				   jobject value);	/* 104 */
    381   void (JNICALL *SetBooleanField) (JNIEnv *env, jobject obj,
    382 				    jfieldID fieldID, jboolean value);	/* 105 */
    383   void (JNICALL *SetByteField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    384 				 jbyte value);	/* 106 */
    385   void (JNICALL *SetCharField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    386 				 jchar value);	/* 107 */
    387   void (JNICALL *SetShortField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    388 				  jshort value);	/* 108 */
    389   void (JNICALL *SetIntField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    390 				jint value);	/* 109 */
    391   void (JNICALL *SetLongField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    392 				 jlong value);	/* 110 */
    393   void (JNICALL *SetFloatField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    394 				  jfloat value);	/* 111 */
    395   void (JNICALL *SetDoubleField) (JNIEnv *env, jobject obj, jfieldID fieldID,
    396 				   jdouble value);	/* 112 */
    397   jmethodID (JNICALL *GetStaticMethodID) (JNIEnv *env, jclass clazz,
    398 					   const char *name, const char *sig);	/* 113 */
    399   jobject (JNICALL *CallStaticObjectMethod) (JNIEnv *env, jclass clazz,
    400 					      jmethodID methodID, ...);	/* 114 */
    401   jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *env, jclass clazz,
    402 					       jmethodID methodID, va_list args);	/* 115 */
    403   jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *env, jclass clazz,
    404 					       jmethodID methodID, jvalue *args);	/* 116 */
    405   jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *env, jclass clazz,
    406 						jmethodID methodID, ...);	/* 117 */
    407   jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *env, jclass clazz,
    408 						 jmethodID methodID, va_list args);	/* 118 */
    409   jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *env, jclass clazz,
    410 						 jmethodID methodID, jvalue *args);	/* 119 */
    411   jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *env, jclass clazz,
    412 					  jmethodID methodID, ...);	/* 120 */
    413   jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *env, jclass clazz,
    414 					   jmethodID methodID, va_list args);	/* 121 */
    415   jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *env, jclass clazz,
    416 					   jmethodID methodID, jvalue *args);	/* 122 */
    417   jchar (JNICALL *CallStaticCharMethod) (JNIEnv *env, jclass clazz,
    418 					  jmethodID methodID, ...);	/* 123 */
    419   jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *env, jclass clazz,
    420 					   jmethodID methodID, va_list args);	/* 124 */
    421   jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *env, jclass clazz,
    422 					   jmethodID methodID, jvalue *args);	/* 125 */
    423   jshort (JNICALL *CallStaticShortMethod) (JNIEnv *env, jclass clazz,
    424 					    jmethodID methodID, ...);	/* 126 */
    425   jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *env, jclass clazz,
    426 					     jmethodID methodID, va_list args);	/* 127 */
    427   jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *env, jclass clazz,
    428 					     jmethodID methodID, jvalue *args);	/* 128 */
    429   jint (JNICALL *CallStaticIntMethod) (JNIEnv *env, jclass clazz,
    430 					jmethodID methodID, ...);	/* 129 */
    431   jint (JNICALL *CallStaticIntMethodV) (JNIEnv *env, jclass clazz,
    432 					 jmethodID methodID, va_list args);	/* 130 */
    433   jint (JNICALL *CallStaticIntMethodA) (JNIEnv *env, jclass clazz,
    434 					 jmethodID methodID, jvalue *args);	/* 131 */
    435   jlong (JNICALL *CallStaticLongMethod) (JNIEnv *env, jclass clazz,
    436 					  jmethodID methodID, ...);	/* 132 */
    437   jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *env, jclass clazz,
    438 					   jmethodID methodID, va_list args);	/* 133 */
    439   jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *env, jclass clazz,
    440 					   jmethodID methodID, jvalue *args);	/* 134 */
    441   jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *env, jclass clazz,
    442 					    jmethodID methodID, ...);	/* 135 */
    443   jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *env, jclass clazz,
    444 					     jmethodID methodID, va_list args);	/* 136 */
    445   jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *env, jclass clazz,
    446 					     jmethodID methodID, jvalue *args);	/* 137 */
    447   jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *env, jclass clazz,
    448 					      jmethodID methodID, ...);	/* 138 */
    449   jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *env, jclass clazz,
    450 					       jmethodID methodID, va_list args);	/* 139 */
    451   jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *env, jclass clazz,
    452 					       jmethodID methodID, jvalue *args);	/* 140 */
    453   void (JNICALL *CallStaticVoidMethod) (JNIEnv *env, jclass clazz,
    454 					 jmethodID methodID, ...);	/* 141 */
    455   void (JNICALL *CallStaticVoidMethodV) (JNIEnv *env, jclass clazz,
    456 					  jmethodID methodID, va_list args);	/* 142 */
    457   void (JNICALL *CallStaticVoidMethodA) (JNIEnv *env, jclass clazz,
    458 					  jmethodID methodID, jvalue *args);	/* 143 */
    459   jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *env, jclass clazz,
    460 					 const char *name, const char *sig);	/* 144 */
    461   jobject (JNICALL *GetStaticObjectField) (JNIEnv *env, jclass clazz,
    462 					    jfieldID fieldID);	/* 145 */
    463   jboolean (JNICALL *GetStaticBooleanField) (JNIEnv *env, jclass clazz,
    464 					      jfieldID fieldID);	/* 146 */
    465   jbyte (JNICALL *GetStaticByteField) (JNIEnv *env, jclass clazz, jfieldID fieldID);	/* 147 */
    466   jchar (JNICALL *GetStaticCharField) (JNIEnv *env, jclass clazz, jfieldID fieldID);	/* 148 */
    467   jshort (JNICALL *GetStaticShortField) (JNIEnv *env, jclass clazz, jfieldID fieldID);	/* 149 */
    468   jint (JNICALL *GetStaticIntField) (JNIEnv *env, jclass clazz, jfieldID fieldID);	/* 150 */
    469   jlong (JNICALL *GetStaticLongField) (JNIEnv *env, jclass clazz, jfieldID fieldID);	/* 151 */
    470   jfloat (JNICALL *GetStaticFloatField) (JNIEnv *env, jclass clazz, jfieldID fieldID);	/* 152 */
    471   jdouble (JNICALL *GetStaticDoubleField) (JNIEnv *env, jclass clazz,
    472 					    jfieldID fieldID);	/* 153 */
    473   void (JNICALL *SetStaticObjectField) (JNIEnv *env, jclass clazz,
    474 					 jfieldID fieldID, jobject value);	/* 154 */
    475   void (JNICALL *SetStaticBooleanField) (JNIEnv *env, jclass clazz,
    476 					  jfieldID fieldID, jboolean value);	/* 155 */
    477   void (JNICALL *SetStaticByteField) (JNIEnv *env, jclass clazz,
    478 				       jfieldID fieldID, jbyte value);	/* 156 */
    479   void (JNICALL *SetStaticCharField) (JNIEnv *env, jclass clazz,
    480 				       jfieldID fieldID, jchar value);	/* 157 */
    481   void (JNICALL *SetStaticShortField) (JNIEnv *env, jclass clazz,
    482 					jfieldID fieldID, jshort value);	/* 158 */
    483   void (JNICALL *SetStaticIntField) (JNIEnv *env, jclass clazz,
    484 				      jfieldID fieldID, jint value);	/* 159 */
    485   void (JNICALL *SetStaticLongField) (JNIEnv *env, jclass clazz,
    486 				       jfieldID fieldID, jlong value);	/* 160 */
    487   void (JNICALL *SetStaticFloatField) (JNIEnv *env, jclass clazz,
    488 					jfieldID fieldID, jfloat value);	/* 161 */
    489   void (JNICALL *SetStaticDoubleField) (JNIEnv *env, jclass clazz,
    490 					 jfieldID fieldID, jdouble value);	/* 162 */
    491   jstring (JNICALL *NewString) (JNIEnv *env, const jchar *uChars, jsize len);	/* 163 */
    492   jsize (JNICALL *GetStringLength) (JNIEnv *env, jstring string);	/* 164 */
    493   const jchar *(JNICALL *GetStringChars) (JNIEnv *env, jstring string,
    494 					   jboolean *isCopy);	/* 165 */
    495   void (JNICALL *ReleaseStringChars) (JNIEnv *env, jstring string,
    496 				       const jchar *chars);	/* 166 */
    497   jstring (JNICALL *NewStringUTF) (JNIEnv *env, const char *bytes);	/* 167 */
    498   jsize (JNICALL *GetStringUTFLength) (JNIEnv *env, jstring string);	/* 168 */
    499   const jbyte *(JNICALL *GetStringUTFChars) (JNIEnv *env, jstring string,
    500 					      jboolean *isCopy);	/* 169 */
    501   void (JNICALL *ReleaseStringUTFChars) (JNIEnv *env, jstring string,
    502 					  const char *utf);	/* 170 */
    503   jsize (JNICALL *GetArrayLength) (JNIEnv *env, jarray array);	/* 171 */
    504   jarray (JNICALL *NewObjectArray) (JNIEnv *env, jsize length,
    505 				     jclass elementType, jobject initialElement);	/* 172 */
    506   jobject (JNICALL *GetObjectArrayElement) (JNIEnv *env, jobjectArray array,
    507 					     jsize index);	/* 173 */
    508   void (JNICALL *SetObjectArrayElement) (JNIEnv *env, jobjectArray array,
    509 					  jsize index, jobject value);	/* 174 */
    510   jbooleanArray (JNICALL *NewBooleanArray) (JNIEnv *env, jsize length);	/* 175 */
    511   jbyteArray (JNICALL *NewByteArray) (JNIEnv *env, jsize length);	/* 176 */
    512   jcharArray (JNICALL *NewCharArray) (JNIEnv *env, jsize length);	/* 177 */
    513   jshortArray (JNICALL *NewShortArray) (JNIEnv *env, jsize length);	/* 178 */
    514   jintArray (JNICALL *NewIntArray) (JNIEnv *env, jsize length);	/* 179 */
    515   jlongArray (JNICALL *NewLongArray) (JNIEnv *env, jsize length);	/* 180 */
    516   jfloatArray (JNICALL *NewFloatArray) (JNIEnv *env, jsize length);	/* 181 */
    517   jdoubleArray (JNICALL *NewDoubleArray) (JNIEnv *env, jsize length);	/* 182 */
    518   jboolean *(JNICALL *GetBooleanArrayElements) (JNIEnv *env,
    519 						jbooleanArray array, jboolean *isCopy);	/* 183 */
    520   jbyte *(JNICALL *GetByteArrayElements) (JNIEnv *env, jbyteArray array,
    521 					  jboolean *isCopy);	/* 184 */
    522   jchar *(JNICALL *GetCharArrayElements) (JNIEnv *env, jcharArray array,
    523 					  jboolean *isCopy);	/* 185 */
    524   jshort *(JNICALL *GetShortArrayElements) (JNIEnv *env, jshortArray array,
    525 					    jboolean *isCopy);	/* 186 */
    526   jint *(JNICALL *GetIntArrayElements) (JNIEnv *env, jintArray array, jboolean *isCopy);	/* 187 */
    527   jlong *(JNICALL *GetLongArrayElements) (JNIEnv *env, jlongArray array,
    528 					  jboolean *isCopy);	/* 188 */
    529   jfloat *(JNICALL *GetFloatArrayElements) (JNIEnv *env, jfloatArray array,
    530 					    jboolean *isCopy);	/* 189 */
    531   jdouble *(JNICALL *GetDoubleArrayElements) (JNIEnv *env, jdoubleArray array,
    532 					      jboolean *isCopy);	/* 190 */
    533   void (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *env,
    534 						jbooleanArray array,
    535 						jboolean *elems, jint mode);	/* 191 */
    536   void (JNICALL *ReleaseByteArrayElements) (JNIEnv *env, jbyteArray array,
    537 					     jbyte *elems, jint mode);	/* 192 */
    538   void (JNICALL *ReleaseCharArrayElements) (JNIEnv *env, jcharArray array,
    539 					     jchar *elems, jint mode);	/* 193 */
    540   void (JNICALL *ReleaseShortArrayElements) (JNIEnv *env, jshortArray array,
    541 					      jshort *elems, jint mode);	/* 194 */
    542   void (JNICALL *ReleaseIntArrayElements) (JNIEnv *env, jintArray array,
    543 					    jint *elems, jint mode);	/* 195 */
    544   void (JNICALL *ReleaseLongArrayElements) (JNIEnv *env, jlongArray array,
    545 					     jlong *elems, jint mode);	/* 196 */
    546   void (JNICALL *ReleaseFloatArrayElements) (JNIEnv *env, jfloatArray array,
    547 					      jfloat *elems, jint mode);	/* 197 */
    548   void (JNICALL *ReleaseDoubleArrayElements) (JNIEnv *env,
    549 					       jdoubleArray array,
    550 					       jdouble *elems, jint mode);	/* 198 */
    551   void (JNICALL *GetBooleanArrayRegion) (JNIEnv *env, jbooleanArray array,
    552 					  jsize start, jsize len, jboolean *buf);	/* 199 */
    553   void (JNICALL *GetByteArrayRegion) (JNIEnv *env, jbyteArray array,
    554 				       jsize start, jsize len, jbyte *buf);	/* 200 */
    555   void (JNICALL *GetCharArrayRegion) (JNIEnv *env, jcharArray array,
    556 				       jsize start, jsize len, jchar *buf);	/* 201 */
    557   void (JNICALL *GetShortArrayRegion) (JNIEnv *env, jshortArray array,
    558 					jsize start, jsize len, jshort *buf);	/* 202 */
    559   void (JNICALL *GetIntArrayRegion) (JNIEnv *env, jintArray array,
    560 				      jsize start, jsize len, jint *buf);	/* 203 */
    561   void (JNICALL *GetLongArrayRegion) (JNIEnv *env, jlongArray array,
    562 				       jsize start, jsize len, jlong *buf);	/* 204 */
    563   void (JNICALL *GetFloatArrayRegion) (JNIEnv *env, jfloatArray array,
    564 					jsize start, jsize len, jfloat *buf);	/* 205 */
    565   void (JNICALL *GetDoubleArrayRegion) (JNIEnv *env, jdoubleArray array,
    566 					 jsize start, jsize len, jdouble *buf);	/* 206 */
    567   void (JNICALL *SetBooleanArrayRegion) (JNIEnv *env, jbooleanArray array,
    568 					  jsize start, jsize len, jboolean *buf);	/* 207 */
    569   void (JNICALL *SetByteArrayRegion) (JNIEnv *env, jbyteArray array,
    570 				       jsize start, jsize len, jbyte *buf);	/* 208 */
    571   void (JNICALL *SetCharArrayRegion) (JNIEnv *env, jcharArray array,
    572 				       jsize start, jsize len, jchar *buf);	/* 209 */
    573   void (JNICALL *SetShortArrayRegion) (JNIEnv *env, jshortArray array,
    574 					jsize start, jsize len, jshort *buf);	/* 210 */
    575   void (JNICALL *SetIntArrayRegion) (JNIEnv *env, jintArray array,
    576 				      jsize start, jsize len, jint *buf);	/* 211 */
    577   void (JNICALL *SetLongArrayRegion) (JNIEnv *env, jlongArray array,
    578 				       jsize start, jsize len, jlong *buf);	/* 212 */
    579   void (JNICALL *SetFloatArrayRegion) (JNIEnv *env, jfloatArray array,
    580 					jsize start, jsize len, jfloat *buf);	/* 213 */
    581   void (JNICALL *SetDoubleArrayRegion) (JNIEnv *env, jdoubleArray array,
    582 					 jsize start, jsize len, jdouble *buf);	/* 214 */
    583   jint (JNICALL *RegisterNatives) (JNIEnv *env, jclass clazz,
    584 				    const JNINativeMethod *methods, jint nMethods);	/* 215 */
    585   jint (JNICALL *UnregisterNatives) (JNIEnv *env, jclass clazz);	/* 216 */
    586   jint (JNICALL *MonitorEnter) (JNIEnv *env, jobject obj);	/* 217 */
    587   jint (JNICALL *MonitorExit) (JNIEnv *env, jobject obj);	/* 218 */
    588   jint (JNICALL *GetJavaVM) (JNIEnv *env, JavaVM **vm);	/* 219 */
    589   void (JNICALL *GetStringRegion) (JNIEnv *env, jstring str, jsize start,
    590 				    jsize len, jchar *buf);	/* 220 */
    591   void (JNICALL *GetStringUTFRegion) (JNIEnv *env, jstring str, jsize start,
    592 				       jsize len, char *buf);	/* 221 */
    593   void *(JNICALL *GetPrimitiveArrayCritical) (JNIEnv *env, jarray array,
    594 					       jboolean *isCopy);	/* 222 */
    595   void (JNICALL *ReleasePrimitiveArrayCritical) (JNIEnv *env, jarray array,
    596 						  void *carray, jint mode);	/* 223 */
    597   const jchar *(JNICALL *GetStringCritical) (JNIEnv *env, jstring string,
    598 					      jboolean *isCopy);	/* 224 */
    599   void (JNICALL *ReleaseStringCritical) (JNIEnv *env, jstring string,
    600 					  const jchar *carray);	/* 225 */
    601   jweak (JNICALL *NewWeakGlobalRef) (JNIEnv *env, jobject obj);	/* 226 */
    602   void (JNICALL *DeleteWeakGlobalRef) (JNIEnv *env, jweak wref);	/* 227 */
    603   jboolean (JNICALL *ExceptionCheck) (JNIEnv *env);	/* 228 */
    604 };
    605 /* *INDENT-ON* */
    606 
    607 /* JNIInvokeInterface types */
    608 
    609 /* *INDENT-OFF* */
    610 struct JNIInvokeInterface
    611 {
    612   void *null_0;
    613   void *null_1;
    614   void *null_2;
    615   jint (JNICALL *DestroyJavaVM) (JavaVM *vm);	/* 3 */
    616   jint (JNICALL *AttachCurrentThread) (JavaVM *vm, void **penv, void *args);	/* 4 */
    617   jint (JNICALL *DetachCurrentThread) (JavaVM *vm);	/* 5 */
    618   jint (JNICALL *GetEnv) (JavaVM *vm, void **penv, jint interface_id);	/* 6 */
    619 };
    620 /* *INDENT-ON* */
    621 
    622 /* invocation API */
    623 
    624   JNIEXPORT jint JNICALL JNI_GetDefaultJavaVMInitArgs (void *vm_args);
    625   JNIEXPORT jint JNICALL JNI_GetCreatedJavaVMs (JavaVM **vmBuf, jsize bufLen,
    626 						jsize *nVMs);
    627   JNIEXPORT jint JNICALL JNI_CreateJavaVM (JavaVM **pvm, void **penv,
    628 					   void *vm_args);
    629 
    630 /* library and version management */
    631 
    632   JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *vm, void *reserved);
    633   JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *vm, void *reserved);
    634 
    635 #ifdef __cplusplus
    636 }
    637 #endif
    638 
    639 #endif				/* NOT SVM_JNI_H */