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 */