1 /* 2 * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 /* 27 * We used part of Netscape's Java Runtime Interface (JRI) as the starting 28 * point of our design and implementation. 29 */ 30 31 /****************************************************************************** 32 * Java Runtime Interface 33 * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. 34 *****************************************************************************/ 35 36 #ifndef _JAVASOFT_JNI_H_ 37 #define _JAVASOFT_JNI_H_ 38 39 #include <stdio.h> 40 #include <stdarg.h> 41 42 /* jni_md.h contains the machine-dependent typedefs for jbyte, jint 43 and jlong */ 44 45 #include "jni_md.h" 46 47 #ifdef __cplusplus 48 extern "C" { 49 #endif 50 51 /* 52 * JNI Types 53 */ 54 55 #ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H 56 57 typedef unsigned char jboolean; 58 typedef unsigned short jchar; 59 typedef short jshort; 60 typedef float jfloat; 61 typedef double jdouble; 62 63 typedef jint jsize; 64 65 #ifdef __cplusplus 66 67 class _jvaluetype {}; 68 class _jobject {}; 69 class _jclass : public _jobject {}; 70 class _jthrowable : public _jobject {}; 71 class _jstring : public _jobject {}; 72 class _jarray : public _jobject {}; 73 class _jbooleanArray : public _jarray {}; 74 class _jbyteArray : public _jarray {}; 75 class _jcharArray : public _jarray {}; 76 class _jshortArray : public _jarray {}; 77 class _jintArray : public _jarray {}; 78 class _jlongArray : public _jarray {}; 79 class _jfloatArray : public _jarray {}; 80 class _jdoubleArray : public _jarray {}; 81 class _jobjectArray : public _jarray {}; 82 83 typedef _jvaluetype *jvaluetype; 84 typedef _jobject *jobject; 85 typedef _jclass *jclass; 86 typedef _jthrowable *jthrowable; 87 typedef _jstring *jstring; 88 typedef _jarray *jarray; 89 typedef _jbooleanArray *jbooleanArray; 90 typedef _jbyteArray *jbyteArray; 91 typedef _jcharArray *jcharArray; 92 typedef _jshortArray *jshortArray; 93 typedef _jintArray *jintArray; 94 typedef _jlongArray *jlongArray; 95 typedef _jfloatArray *jfloatArray; 96 typedef _jdoubleArray *jdoubleArray; 97 typedef _jobjectArray *jobjectArray; 98 99 #else 100 101 struct _jvaluetype; 102 struct _jobject; 103 104 typedef struct _jvaluetype *jvaluetype; 105 typedef struct _jobject *jobject; 106 typedef jobject jclass; 107 typedef jobject jthrowable; 108 typedef jobject jstring; 109 typedef jobject jarray; 110 typedef jarray jbooleanArray; 111 typedef jarray jbyteArray; 112 typedef jarray jcharArray; 113 typedef jarray jshortArray; 114 typedef jarray jintArray; 115 typedef jarray jlongArray; 116 typedef jarray jfloatArray; 117 typedef jarray jdoubleArray; 118 typedef jarray jobjectArray; 119 120 #endif 121 122 typedef jobject jweak; 123 124 typedef union jvalue { 125 jboolean z; 126 jbyte b; 127 jchar c; 128 jshort s; 129 jint i; 130 jlong j; 131 jfloat f; 132 jdouble d; 133 jobject l; 134 jvaluetype q; 135 } jvalue; 136 137 struct _jfieldID; 138 typedef struct _jfieldID *jfieldID; 139 140 struct _jmethodID; 141 typedef struct _jmethodID *jmethodID; 142 143 /* Return values from jobjectRefType */ 144 typedef enum _jobjectType { 145 JNIInvalidRefType = 0, 146 JNILocalRefType = 1, 147 JNIGlobalRefType = 2, 148 JNIWeakGlobalRefType = 3 149 } jobjectRefType; 150 151 152 #endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ 153 154 /* 155 * jboolean constants 156 */ 157 158 #define JNI_FALSE 0 159 #define JNI_TRUE 1 160 161 /* 162 * possible return values for JNI functions. 163 */ 164 165 #define JNI_OK 0 /* success */ 166 #define JNI_ERR (-1) /* unknown error */ 167 #define JNI_EDETACHED (-2) /* thread detached from the VM */ 168 #define JNI_EVERSION (-3) /* JNI version error */ 169 #define JNI_ENOMEM (-4) /* not enough memory */ 170 #define JNI_EEXIST (-5) /* VM already created */ 171 #define JNI_EINVAL (-6) /* invalid arguments */ 172 173 /* 174 * used in ReleaseScalarArrayElements 175 */ 176 177 #define JNI_COMMIT 1 178 #define JNI_ABORT 2 179 180 /* 181 * used in RegisterNatives to describe native method name, signature, 182 * and function pointer. 183 */ 184 185 typedef struct { 186 char *name; 187 char *signature; 188 void *fnPtr; 189 } JNINativeMethod; 190 191 /* 192 * JNI Native Method Interface. 193 */ 194 195 struct JNINativeInterface_; 196 197 struct JNIEnv_; 198 199 #ifdef __cplusplus 200 typedef JNIEnv_ JNIEnv; 201 #else 202 typedef const struct JNINativeInterface_ *JNIEnv; 203 #endif 204 205 /* 206 * JNI Invocation Interface. 207 */ 208 209 struct JNIInvokeInterface_; 210 211 struct JavaVM_; 212 213 #ifdef __cplusplus 214 typedef JavaVM_ JavaVM; 215 #else 216 typedef const struct JNIInvokeInterface_ *JavaVM; 217 #endif 218 219 struct JNINativeInterface_ { 220 void *reserved0; 221 void *reserved1; 222 void *reserved2; 223 224 void *reserved3; 225 jint (JNICALL *GetVersion)(JNIEnv *env); 226 227 jclass (JNICALL *DefineClass) 228 (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, 229 jsize len); 230 jclass (JNICALL *FindClass) 231 (JNIEnv *env, const char *name); 232 233 jmethodID (JNICALL *FromReflectedMethod) 234 (JNIEnv *env, jobject method); 235 jfieldID (JNICALL *FromReflectedField) 236 (JNIEnv *env, jobject field); 237 238 jobject (JNICALL *ToReflectedMethod) 239 (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); 240 241 jclass (JNICALL *GetSuperclass) 242 (JNIEnv *env, jclass sub); 243 jboolean (JNICALL *IsAssignableFrom) 244 (JNIEnv *env, jclass sub, jclass sup); 245 246 jobject (JNICALL *ToReflectedField) 247 (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); 248 249 jint (JNICALL *Throw) 250 (JNIEnv *env, jthrowable obj); 251 jint (JNICALL *ThrowNew) 252 (JNIEnv *env, jclass clazz, const char *msg); 253 jthrowable (JNICALL *ExceptionOccurred) 254 (JNIEnv *env); 255 void (JNICALL *ExceptionDescribe) 256 (JNIEnv *env); 257 void (JNICALL *ExceptionClear) 258 (JNIEnv *env); 259 void (JNICALL *FatalError) 260 (JNIEnv *env, const char *msg); 261 262 jint (JNICALL *PushLocalFrame) 263 (JNIEnv *env, jint capacity); 264 jobject (JNICALL *PopLocalFrame) 265 (JNIEnv *env, jobject result); 266 267 jobject (JNICALL *NewGlobalRef) 268 (JNIEnv *env, jobject lobj); 269 void (JNICALL *DeleteGlobalRef) 270 (JNIEnv *env, jobject gref); 271 void (JNICALL *DeleteLocalRef) 272 (JNIEnv *env, jobject obj); 273 jboolean (JNICALL *IsSameObject) 274 (JNIEnv *env, jobject obj1, jobject obj2); 275 jobject (JNICALL *NewLocalRef) 276 (JNIEnv *env, jobject ref); 277 jint (JNICALL *EnsureLocalCapacity) 278 (JNIEnv *env, jint capacity); 279 280 jobject (JNICALL *AllocObject) 281 (JNIEnv *env, jclass clazz); 282 jobject (JNICALL *NewObject) 283 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 284 jobject (JNICALL *NewObjectV) 285 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 286 jobject (JNICALL *NewObjectA) 287 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 288 289 jclass (JNICALL *GetObjectClass) 290 (JNIEnv *env, jobject obj); 291 jboolean (JNICALL *IsInstanceOf) 292 (JNIEnv *env, jobject obj, jclass clazz); 293 294 jmethodID (JNICALL *GetMethodID) 295 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 296 297 jobject (JNICALL *CallObjectMethod) 298 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 299 jobject (JNICALL *CallObjectMethodV) 300 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 301 jobject (JNICALL *CallObjectMethodA) 302 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); 303 304 jboolean (JNICALL *CallBooleanMethod) 305 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 306 jboolean (JNICALL *CallBooleanMethodV) 307 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 308 jboolean (JNICALL *CallBooleanMethodA) 309 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); 310 311 jbyte (JNICALL *CallByteMethod) 312 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 313 jbyte (JNICALL *CallByteMethodV) 314 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 315 jbyte (JNICALL *CallByteMethodA) 316 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 317 318 jchar (JNICALL *CallCharMethod) 319 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 320 jchar (JNICALL *CallCharMethodV) 321 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 322 jchar (JNICALL *CallCharMethodA) 323 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 324 325 jshort (JNICALL *CallShortMethod) 326 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 327 jshort (JNICALL *CallShortMethodV) 328 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 329 jshort (JNICALL *CallShortMethodA) 330 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 331 332 jint (JNICALL *CallIntMethod) 333 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 334 jint (JNICALL *CallIntMethodV) 335 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 336 jint (JNICALL *CallIntMethodA) 337 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 338 339 jlong (JNICALL *CallLongMethod) 340 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 341 jlong (JNICALL *CallLongMethodV) 342 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 343 jlong (JNICALL *CallLongMethodA) 344 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 345 346 jfloat (JNICALL *CallFloatMethod) 347 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 348 jfloat (JNICALL *CallFloatMethodV) 349 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 350 jfloat (JNICALL *CallFloatMethodA) 351 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 352 353 jdouble (JNICALL *CallDoubleMethod) 354 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 355 jdouble (JNICALL *CallDoubleMethodV) 356 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 357 jdouble (JNICALL *CallDoubleMethodA) 358 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 359 360 void (JNICALL *CallVoidMethod) 361 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 362 void (JNICALL *CallVoidMethodV) 363 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 364 void (JNICALL *CallVoidMethodA) 365 (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); 366 367 jobject (JNICALL *CallNonvirtualObjectMethod) 368 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 369 jobject (JNICALL *CallNonvirtualObjectMethodV) 370 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 371 va_list args); 372 jobject (JNICALL *CallNonvirtualObjectMethodA) 373 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 374 const jvalue * args); 375 376 jboolean (JNICALL *CallNonvirtualBooleanMethod) 377 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 378 jboolean (JNICALL *CallNonvirtualBooleanMethodV) 379 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 380 va_list args); 381 jboolean (JNICALL *CallNonvirtualBooleanMethodA) 382 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 383 const jvalue * args); 384 385 jbyte (JNICALL *CallNonvirtualByteMethod) 386 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 387 jbyte (JNICALL *CallNonvirtualByteMethodV) 388 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 389 va_list args); 390 jbyte (JNICALL *CallNonvirtualByteMethodA) 391 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 392 const jvalue *args); 393 394 jchar (JNICALL *CallNonvirtualCharMethod) 395 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 396 jchar (JNICALL *CallNonvirtualCharMethodV) 397 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 398 va_list args); 399 jchar (JNICALL *CallNonvirtualCharMethodA) 400 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 401 const jvalue *args); 402 403 jshort (JNICALL *CallNonvirtualShortMethod) 404 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 405 jshort (JNICALL *CallNonvirtualShortMethodV) 406 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 407 va_list args); 408 jshort (JNICALL *CallNonvirtualShortMethodA) 409 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 410 const jvalue *args); 411 412 jint (JNICALL *CallNonvirtualIntMethod) 413 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 414 jint (JNICALL *CallNonvirtualIntMethodV) 415 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 416 va_list args); 417 jint (JNICALL *CallNonvirtualIntMethodA) 418 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 419 const jvalue *args); 420 421 jlong (JNICALL *CallNonvirtualLongMethod) 422 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 423 jlong (JNICALL *CallNonvirtualLongMethodV) 424 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 425 va_list args); 426 jlong (JNICALL *CallNonvirtualLongMethodA) 427 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 428 const jvalue *args); 429 430 jfloat (JNICALL *CallNonvirtualFloatMethod) 431 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 432 jfloat (JNICALL *CallNonvirtualFloatMethodV) 433 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 434 va_list args); 435 jfloat (JNICALL *CallNonvirtualFloatMethodA) 436 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 437 const jvalue *args); 438 439 jdouble (JNICALL *CallNonvirtualDoubleMethod) 440 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 441 jdouble (JNICALL *CallNonvirtualDoubleMethodV) 442 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 443 va_list args); 444 jdouble (JNICALL *CallNonvirtualDoubleMethodA) 445 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 446 const jvalue *args); 447 448 void (JNICALL *CallNonvirtualVoidMethod) 449 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 450 void (JNICALL *CallNonvirtualVoidMethodV) 451 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 452 va_list args); 453 void (JNICALL *CallNonvirtualVoidMethodA) 454 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 455 const jvalue * args); 456 457 jfieldID (JNICALL *GetFieldID) 458 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 459 460 jobject (JNICALL *GetObjectField) 461 (JNIEnv *env, jobject obj, jfieldID fieldID); 462 jboolean (JNICALL *GetBooleanField) 463 (JNIEnv *env, jobject obj, jfieldID fieldID); 464 jbyte (JNICALL *GetByteField) 465 (JNIEnv *env, jobject obj, jfieldID fieldID); 466 jchar (JNICALL *GetCharField) 467 (JNIEnv *env, jobject obj, jfieldID fieldID); 468 jshort (JNICALL *GetShortField) 469 (JNIEnv *env, jobject obj, jfieldID fieldID); 470 jint (JNICALL *GetIntField) 471 (JNIEnv *env, jobject obj, jfieldID fieldID); 472 jlong (JNICALL *GetLongField) 473 (JNIEnv *env, jobject obj, jfieldID fieldID); 474 jfloat (JNICALL *GetFloatField) 475 (JNIEnv *env, jobject obj, jfieldID fieldID); 476 jdouble (JNICALL *GetDoubleField) 477 (JNIEnv *env, jobject obj, jfieldID fieldID); 478 479 void (JNICALL *SetObjectField) 480 (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); 481 void (JNICALL *SetBooleanField) 482 (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); 483 void (JNICALL *SetByteField) 484 (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); 485 void (JNICALL *SetCharField) 486 (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); 487 void (JNICALL *SetShortField) 488 (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); 489 void (JNICALL *SetIntField) 490 (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); 491 void (JNICALL *SetLongField) 492 (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); 493 void (JNICALL *SetFloatField) 494 (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); 495 void (JNICALL *SetDoubleField) 496 (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); 497 498 jmethodID (JNICALL *GetStaticMethodID) 499 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 500 501 jobject (JNICALL *CallStaticObjectMethod) 502 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 503 jobject (JNICALL *CallStaticObjectMethodV) 504 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 505 jobject (JNICALL *CallStaticObjectMethodA) 506 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 507 508 jboolean (JNICALL *CallStaticBooleanMethod) 509 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 510 jboolean (JNICALL *CallStaticBooleanMethodV) 511 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 512 jboolean (JNICALL *CallStaticBooleanMethodA) 513 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 514 515 jbyte (JNICALL *CallStaticByteMethod) 516 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 517 jbyte (JNICALL *CallStaticByteMethodV) 518 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 519 jbyte (JNICALL *CallStaticByteMethodA) 520 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 521 522 jchar (JNICALL *CallStaticCharMethod) 523 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 524 jchar (JNICALL *CallStaticCharMethodV) 525 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 526 jchar (JNICALL *CallStaticCharMethodA) 527 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 528 529 jshort (JNICALL *CallStaticShortMethod) 530 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 531 jshort (JNICALL *CallStaticShortMethodV) 532 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 533 jshort (JNICALL *CallStaticShortMethodA) 534 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 535 536 jint (JNICALL *CallStaticIntMethod) 537 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 538 jint (JNICALL *CallStaticIntMethodV) 539 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 540 jint (JNICALL *CallStaticIntMethodA) 541 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 542 543 jlong (JNICALL *CallStaticLongMethod) 544 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 545 jlong (JNICALL *CallStaticLongMethodV) 546 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 547 jlong (JNICALL *CallStaticLongMethodA) 548 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 549 550 jfloat (JNICALL *CallStaticFloatMethod) 551 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 552 jfloat (JNICALL *CallStaticFloatMethodV) 553 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 554 jfloat (JNICALL *CallStaticFloatMethodA) 555 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 556 557 jdouble (JNICALL *CallStaticDoubleMethod) 558 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 559 jdouble (JNICALL *CallStaticDoubleMethodV) 560 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 561 jdouble (JNICALL *CallStaticDoubleMethodA) 562 (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 563 564 void (JNICALL *CallStaticVoidMethod) 565 (JNIEnv *env, jclass cls, jmethodID methodID, ...); 566 void (JNICALL *CallStaticVoidMethodV) 567 (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); 568 void (JNICALL *CallStaticVoidMethodA) 569 (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); 570 571 jfieldID (JNICALL *GetStaticFieldID) 572 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 573 jobject (JNICALL *GetStaticObjectField) 574 (JNIEnv *env, jclass clazz, jfieldID fieldID); 575 jboolean (JNICALL *GetStaticBooleanField) 576 (JNIEnv *env, jclass clazz, jfieldID fieldID); 577 jbyte (JNICALL *GetStaticByteField) 578 (JNIEnv *env, jclass clazz, jfieldID fieldID); 579 jchar (JNICALL *GetStaticCharField) 580 (JNIEnv *env, jclass clazz, jfieldID fieldID); 581 jshort (JNICALL *GetStaticShortField) 582 (JNIEnv *env, jclass clazz, jfieldID fieldID); 583 jint (JNICALL *GetStaticIntField) 584 (JNIEnv *env, jclass clazz, jfieldID fieldID); 585 jlong (JNICALL *GetStaticLongField) 586 (JNIEnv *env, jclass clazz, jfieldID fieldID); 587 jfloat (JNICALL *GetStaticFloatField) 588 (JNIEnv *env, jclass clazz, jfieldID fieldID); 589 jdouble (JNICALL *GetStaticDoubleField) 590 (JNIEnv *env, jclass clazz, jfieldID fieldID); 591 592 void (JNICALL *SetStaticObjectField) 593 (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); 594 void (JNICALL *SetStaticBooleanField) 595 (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); 596 void (JNICALL *SetStaticByteField) 597 (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); 598 void (JNICALL *SetStaticCharField) 599 (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); 600 void (JNICALL *SetStaticShortField) 601 (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); 602 void (JNICALL *SetStaticIntField) 603 (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); 604 void (JNICALL *SetStaticLongField) 605 (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); 606 void (JNICALL *SetStaticFloatField) 607 (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); 608 void (JNICALL *SetStaticDoubleField) 609 (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); 610 611 jstring (JNICALL *NewString) 612 (JNIEnv *env, const jchar *unicode, jsize len); 613 jsize (JNICALL *GetStringLength) 614 (JNIEnv *env, jstring str); 615 const jchar *(JNICALL *GetStringChars) 616 (JNIEnv *env, jstring str, jboolean *isCopy); 617 void (JNICALL *ReleaseStringChars) 618 (JNIEnv *env, jstring str, const jchar *chars); 619 620 jstring (JNICALL *NewStringUTF) 621 (JNIEnv *env, const char *utf); 622 jsize (JNICALL *GetStringUTFLength) 623 (JNIEnv *env, jstring str); 624 const char* (JNICALL *GetStringUTFChars) 625 (JNIEnv *env, jstring str, jboolean *isCopy); 626 void (JNICALL *ReleaseStringUTFChars) 627 (JNIEnv *env, jstring str, const char* chars); 628 629 630 jsize (JNICALL *GetArrayLength) 631 (JNIEnv *env, jarray array); 632 633 jobjectArray (JNICALL *NewObjectArray) 634 (JNIEnv *env, jsize len, jclass clazz, jobject init); 635 jobject (JNICALL *GetObjectArrayElement) 636 (JNIEnv *env, jobjectArray array, jsize index); 637 void (JNICALL *SetObjectArrayElement) 638 (JNIEnv *env, jobjectArray array, jsize index, jobject val); 639 640 jbooleanArray (JNICALL *NewBooleanArray) 641 (JNIEnv *env, jsize len); 642 jbyteArray (JNICALL *NewByteArray) 643 (JNIEnv *env, jsize len); 644 jcharArray (JNICALL *NewCharArray) 645 (JNIEnv *env, jsize len); 646 jshortArray (JNICALL *NewShortArray) 647 (JNIEnv *env, jsize len); 648 jintArray (JNICALL *NewIntArray) 649 (JNIEnv *env, jsize len); 650 jlongArray (JNICALL *NewLongArray) 651 (JNIEnv *env, jsize len); 652 jfloatArray (JNICALL *NewFloatArray) 653 (JNIEnv *env, jsize len); 654 jdoubleArray (JNICALL *NewDoubleArray) 655 (JNIEnv *env, jsize len); 656 657 jboolean * (JNICALL *GetBooleanArrayElements) 658 (JNIEnv *env, jbooleanArray array, jboolean *isCopy); 659 jbyte * (JNICALL *GetByteArrayElements) 660 (JNIEnv *env, jbyteArray array, jboolean *isCopy); 661 jchar * (JNICALL *GetCharArrayElements) 662 (JNIEnv *env, jcharArray array, jboolean *isCopy); 663 jshort * (JNICALL *GetShortArrayElements) 664 (JNIEnv *env, jshortArray array, jboolean *isCopy); 665 jint * (JNICALL *GetIntArrayElements) 666 (JNIEnv *env, jintArray array, jboolean *isCopy); 667 jlong * (JNICALL *GetLongArrayElements) 668 (JNIEnv *env, jlongArray array, jboolean *isCopy); 669 jfloat * (JNICALL *GetFloatArrayElements) 670 (JNIEnv *env, jfloatArray array, jboolean *isCopy); 671 jdouble * (JNICALL *GetDoubleArrayElements) 672 (JNIEnv *env, jdoubleArray array, jboolean *isCopy); 673 674 void (JNICALL *ReleaseBooleanArrayElements) 675 (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); 676 void (JNICALL *ReleaseByteArrayElements) 677 (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); 678 void (JNICALL *ReleaseCharArrayElements) 679 (JNIEnv *env, jcharArray array, jchar *elems, jint mode); 680 void (JNICALL *ReleaseShortArrayElements) 681 (JNIEnv *env, jshortArray array, jshort *elems, jint mode); 682 void (JNICALL *ReleaseIntArrayElements) 683 (JNIEnv *env, jintArray array, jint *elems, jint mode); 684 void (JNICALL *ReleaseLongArrayElements) 685 (JNIEnv *env, jlongArray array, jlong *elems, jint mode); 686 void (JNICALL *ReleaseFloatArrayElements) 687 (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); 688 void (JNICALL *ReleaseDoubleArrayElements) 689 (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); 690 691 void (JNICALL *GetBooleanArrayRegion) 692 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 693 void (JNICALL *GetByteArrayRegion) 694 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 695 void (JNICALL *GetCharArrayRegion) 696 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 697 void (JNICALL *GetShortArrayRegion) 698 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 699 void (JNICALL *GetIntArrayRegion) 700 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 701 void (JNICALL *GetLongArrayRegion) 702 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 703 void (JNICALL *GetFloatArrayRegion) 704 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 705 void (JNICALL *GetDoubleArrayRegion) 706 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 707 708 void (JNICALL *SetBooleanArrayRegion) 709 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); 710 void (JNICALL *SetByteArrayRegion) 711 (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); 712 void (JNICALL *SetCharArrayRegion) 713 (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); 714 void (JNICALL *SetShortArrayRegion) 715 (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); 716 void (JNICALL *SetIntArrayRegion) 717 (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); 718 void (JNICALL *SetLongArrayRegion) 719 (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); 720 void (JNICALL *SetFloatArrayRegion) 721 (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); 722 void (JNICALL *SetDoubleArrayRegion) 723 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); 724 725 jint (JNICALL *RegisterNatives) 726 (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, 727 jint nMethods); 728 jint (JNICALL *UnregisterNatives) 729 (JNIEnv *env, jclass clazz); 730 731 jint (JNICALL *MonitorEnter) 732 (JNIEnv *env, jobject obj); 733 jint (JNICALL *MonitorExit) 734 (JNIEnv *env, jobject obj); 735 736 jint (JNICALL *GetJavaVM) 737 (JNIEnv *env, JavaVM **vm); 738 739 void (JNICALL *GetStringRegion) 740 (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); 741 void (JNICALL *GetStringUTFRegion) 742 (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); 743 744 void * (JNICALL *GetPrimitiveArrayCritical) 745 (JNIEnv *env, jarray array, jboolean *isCopy); 746 void (JNICALL *ReleasePrimitiveArrayCritical) 747 (JNIEnv *env, jarray array, void *carray, jint mode); 748 749 const jchar * (JNICALL *GetStringCritical) 750 (JNIEnv *env, jstring string, jboolean *isCopy); 751 void (JNICALL *ReleaseStringCritical) 752 (JNIEnv *env, jstring string, const jchar *cstring); 753 754 jweak (JNICALL *NewWeakGlobalRef) 755 (JNIEnv *env, jobject obj); 756 void (JNICALL *DeleteWeakGlobalRef) 757 (JNIEnv *env, jweak ref); 758 759 jboolean (JNICALL *ExceptionCheck) 760 (JNIEnv *env); 761 762 jobject (JNICALL *NewDirectByteBuffer) 763 (JNIEnv* env, void* address, jlong capacity); 764 void* (JNICALL *GetDirectBufferAddress) 765 (JNIEnv* env, jobject buf); 766 jlong (JNICALL *GetDirectBufferCapacity) 767 (JNIEnv* env, jobject buf); 768 769 /* New JNI 1.6 Features */ 770 771 jobjectRefType (JNICALL *GetObjectRefType) 772 (JNIEnv* env, jobject obj); 773 774 /* Module Features */ 775 776 jobject (JNICALL *GetModule) 777 (JNIEnv* env, jclass clazz); 778 779 /* Flattened arrays Features */ 780 void* (JNICALL *GetFlattenedArrayElements) 781 (JNIEnv* env, jarray array , jboolean *isCopy); 782 void (JNICALL *ReleaseFlattenedArrayElements) 783 (JNIEnv* env, jarray, void* elem, jint mode); 784 jclass (JNICALL *GetFlattenedArrayElementClass) 785 (JNIEnv* env, jarray array); 786 jsize (JNICALL *GetFlattenedArrayElementSize) 787 (JNIEnv* env, jarray array); 788 jsize (JNICALL *GetFieldOffsetInFlattenedLayout) 789 (JNIEnv* env, jclass clazz, const char *name, const char *signature, jboolean* isFlattened); 790 791 jobject (JNICALL *CreateSubElementSelector) 792 (JNIEnv* env, jarray array); 793 jobject (JNICALL *GetSubElementSelector) 794 (JNIEnv* env, jobject selector, jfieldID fieldID); 795 796 jobject (JNICALL *GetObjectSubElement) 797 (JNIEnv* env, jarray array, jobject selector, int index); 798 void (JNICALL *SetObjectSubElement) 799 (JNIEnv* env, jarray array, jobject selector, int index, jobject value); 800 801 jboolean (JNICALL *GetBooleanSubElement) 802 (JNIEnv* env, jarray array, jobject selector, int index); 803 jbyte (JNICALL *GetByteSubElement) 804 (JNIEnv* env, jarray array, jobject selector, int index); 805 jshort (JNICALL *GetShortSubElement) 806 (JNIEnv* env, jarray array, jobject selector, int index); 807 jchar (JNICALL *GetCharSubElement) 808 (JNIEnv* env, jarray array, jobject selector, int index); 809 jint (JNICALL *GetIntSubElement) 810 (JNIEnv* env, jarray array, jobject selector, int index); 811 jlong (JNICALL *GetLongSubElement) 812 (JNIEnv* env, jarray array, jobject selector, int index); 813 jfloat (JNICALL *GetFloatSubElement) 814 (JNIEnv* env, jarray array, jobject selector, int index); 815 jdouble (JNICALL *GetDoubleSubElement) 816 (JNIEnv* env, jarray array, jobject selector, int index); 817 818 void (JNICALL *SetBooleanSubElement) 819 (JNIEnv* env, jarray array, jobject selector, int index, jboolean value); 820 void (JNICALL *SetByteSubElement) 821 (JNIEnv* env, jarray array, jobject selector, int index, jbyte value); 822 void (JNICALL *SetShortSubElement) 823 (JNIEnv* env, jarray array, jobject selector, int index, jshort value); 824 void (JNICALL *SetCharSubElement) 825 (JNIEnv* env, jarray array, jobject selector, int index, jchar value); 826 void (JNICALL *SetIntSubElement) 827 (JNIEnv* env, jarray array, jobject selector, int index, jint value); 828 void (JNICALL *SetLongSubElement) 829 (JNIEnv* env, jarray array, jobject selector, int index, jlong value); 830 void (JNICALL *SetFloatSubElement) 831 (JNIEnv* env, jarray array, jobject selector, int index, jfloat value); 832 void (JNICALL *SetDoubleSubElement) 833 (JNIEnv* env, jarray array, jobject selector, int index, jdouble value); 834 }; 835 836 /* 837 * We use inlined functions for C++ so that programmers can write: 838 * 839 * env->FindClass("java/lang/String") 840 * 841 * in C++ rather than: 842 * 843 * (*env)->FindClass(env, "java/lang/String") 844 * 845 * in C. 846 */ 847 848 struct JNIEnv_ { 849 const struct JNINativeInterface_ *functions; 850 #ifdef __cplusplus 851 852 jint GetVersion() { 853 return functions->GetVersion(this); 854 } 855 jclass DefineClass(const char *name, jobject loader, const jbyte *buf, 856 jsize len) { 857 return functions->DefineClass(this, name, loader, buf, len); 858 } 859 jclass FindClass(const char *name) { 860 return functions->FindClass(this, name); 861 } 862 jmethodID FromReflectedMethod(jobject method) { 863 return functions->FromReflectedMethod(this,method); 864 } 865 jfieldID FromReflectedField(jobject field) { 866 return functions->FromReflectedField(this,field); 867 } 868 869 jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { 870 return functions->ToReflectedMethod(this, cls, methodID, isStatic); 871 } 872 873 jclass GetSuperclass(jclass sub) { 874 return functions->GetSuperclass(this, sub); 875 } 876 jboolean IsAssignableFrom(jclass sub, jclass sup) { 877 return functions->IsAssignableFrom(this, sub, sup); 878 } 879 880 jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { 881 return functions->ToReflectedField(this,cls,fieldID,isStatic); 882 } 883 884 jint Throw(jthrowable obj) { 885 return functions->Throw(this, obj); 886 } 887 jint ThrowNew(jclass clazz, const char *msg) { 888 return functions->ThrowNew(this, clazz, msg); 889 } 890 jthrowable ExceptionOccurred() { 891 return functions->ExceptionOccurred(this); 892 } 893 void ExceptionDescribe() { 894 functions->ExceptionDescribe(this); 895 } 896 void ExceptionClear() { 897 functions->ExceptionClear(this); 898 } 899 void FatalError(const char *msg) { 900 functions->FatalError(this, msg); 901 } 902 903 jint PushLocalFrame(jint capacity) { 904 return functions->PushLocalFrame(this,capacity); 905 } 906 jobject PopLocalFrame(jobject result) { 907 return functions->PopLocalFrame(this,result); 908 } 909 910 jobject NewGlobalRef(jobject lobj) { 911 return functions->NewGlobalRef(this,lobj); 912 } 913 void DeleteGlobalRef(jobject gref) { 914 functions->DeleteGlobalRef(this,gref); 915 } 916 void DeleteLocalRef(jobject obj) { 917 functions->DeleteLocalRef(this, obj); 918 } 919 920 jboolean IsSameObject(jobject obj1, jobject obj2) { 921 return functions->IsSameObject(this,obj1,obj2); 922 } 923 924 jobject NewLocalRef(jobject ref) { 925 return functions->NewLocalRef(this,ref); 926 } 927 jint EnsureLocalCapacity(jint capacity) { 928 return functions->EnsureLocalCapacity(this,capacity); 929 } 930 931 jobject AllocObject(jclass clazz) { 932 return functions->AllocObject(this,clazz); 933 } 934 jobject NewObject(jclass clazz, jmethodID methodID, ...) { 935 va_list args; 936 jobject result; 937 va_start(args, methodID); 938 result = functions->NewObjectV(this,clazz,methodID,args); 939 va_end(args); 940 return result; 941 } 942 jobject NewObjectV(jclass clazz, jmethodID methodID, 943 va_list args) { 944 return functions->NewObjectV(this,clazz,methodID,args); 945 } 946 jobject NewObjectA(jclass clazz, jmethodID methodID, 947 const jvalue *args) { 948 return functions->NewObjectA(this,clazz,methodID,args); 949 } 950 951 jclass GetObjectClass(jobject obj) { 952 return functions->GetObjectClass(this,obj); 953 } 954 jboolean IsInstanceOf(jobject obj, jclass clazz) { 955 return functions->IsInstanceOf(this,obj,clazz); 956 } 957 958 jmethodID GetMethodID(jclass clazz, const char *name, 959 const char *sig) { 960 return functions->GetMethodID(this,clazz,name,sig); 961 } 962 963 jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { 964 va_list args; 965 jobject result; 966 va_start(args,methodID); 967 result = functions->CallObjectMethodV(this,obj,methodID,args); 968 va_end(args); 969 return result; 970 } 971 jobject CallObjectMethodV(jobject obj, jmethodID methodID, 972 va_list args) { 973 return functions->CallObjectMethodV(this,obj,methodID,args); 974 } 975 jobject CallObjectMethodA(jobject obj, jmethodID methodID, 976 const jvalue * args) { 977 return functions->CallObjectMethodA(this,obj,methodID,args); 978 } 979 980 jboolean CallBooleanMethod(jobject obj, 981 jmethodID methodID, ...) { 982 va_list args; 983 jboolean result; 984 va_start(args,methodID); 985 result = functions->CallBooleanMethodV(this,obj,methodID,args); 986 va_end(args); 987 return result; 988 } 989 jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, 990 va_list args) { 991 return functions->CallBooleanMethodV(this,obj,methodID,args); 992 } 993 jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, 994 const jvalue * args) { 995 return functions->CallBooleanMethodA(this,obj,methodID, args); 996 } 997 998 jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { 999 va_list args; 1000 jbyte result; 1001 va_start(args,methodID); 1002 result = functions->CallByteMethodV(this,obj,methodID,args); 1003 va_end(args); 1004 return result; 1005 } 1006 jbyte CallByteMethodV(jobject obj, jmethodID methodID, 1007 va_list args) { 1008 return functions->CallByteMethodV(this,obj,methodID,args); 1009 } 1010 jbyte CallByteMethodA(jobject obj, jmethodID methodID, 1011 const jvalue * args) { 1012 return functions->CallByteMethodA(this,obj,methodID,args); 1013 } 1014 1015 jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { 1016 va_list args; 1017 jchar result; 1018 va_start(args,methodID); 1019 result = functions->CallCharMethodV(this,obj,methodID,args); 1020 va_end(args); 1021 return result; 1022 } 1023 jchar CallCharMethodV(jobject obj, jmethodID methodID, 1024 va_list args) { 1025 return functions->CallCharMethodV(this,obj,methodID,args); 1026 } 1027 jchar CallCharMethodA(jobject obj, jmethodID methodID, 1028 const jvalue * args) { 1029 return functions->CallCharMethodA(this,obj,methodID,args); 1030 } 1031 1032 jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { 1033 va_list args; 1034 jshort result; 1035 va_start(args,methodID); 1036 result = functions->CallShortMethodV(this,obj,methodID,args); 1037 va_end(args); 1038 return result; 1039 } 1040 jshort CallShortMethodV(jobject obj, jmethodID methodID, 1041 va_list args) { 1042 return functions->CallShortMethodV(this,obj,methodID,args); 1043 } 1044 jshort CallShortMethodA(jobject obj, jmethodID methodID, 1045 const jvalue * args) { 1046 return functions->CallShortMethodA(this,obj,methodID,args); 1047 } 1048 1049 jint CallIntMethod(jobject obj, jmethodID methodID, ...) { 1050 va_list args; 1051 jint result; 1052 va_start(args,methodID); 1053 result = functions->CallIntMethodV(this,obj,methodID,args); 1054 va_end(args); 1055 return result; 1056 } 1057 jint CallIntMethodV(jobject obj, jmethodID methodID, 1058 va_list args) { 1059 return functions->CallIntMethodV(this,obj,methodID,args); 1060 } 1061 jint CallIntMethodA(jobject obj, jmethodID methodID, 1062 const jvalue * args) { 1063 return functions->CallIntMethodA(this,obj,methodID,args); 1064 } 1065 1066 jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { 1067 va_list args; 1068 jlong result; 1069 va_start(args,methodID); 1070 result = functions->CallLongMethodV(this,obj,methodID,args); 1071 va_end(args); 1072 return result; 1073 } 1074 jlong CallLongMethodV(jobject obj, jmethodID methodID, 1075 va_list args) { 1076 return functions->CallLongMethodV(this,obj,methodID,args); 1077 } 1078 jlong CallLongMethodA(jobject obj, jmethodID methodID, 1079 const jvalue * args) { 1080 return functions->CallLongMethodA(this,obj,methodID,args); 1081 } 1082 1083 jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { 1084 va_list args; 1085 jfloat result; 1086 va_start(args,methodID); 1087 result = functions->CallFloatMethodV(this,obj,methodID,args); 1088 va_end(args); 1089 return result; 1090 } 1091 jfloat CallFloatMethodV(jobject obj, jmethodID methodID, 1092 va_list args) { 1093 return functions->CallFloatMethodV(this,obj,methodID,args); 1094 } 1095 jfloat CallFloatMethodA(jobject obj, jmethodID methodID, 1096 const jvalue * args) { 1097 return functions->CallFloatMethodA(this,obj,methodID,args); 1098 } 1099 1100 jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { 1101 va_list args; 1102 jdouble result; 1103 va_start(args,methodID); 1104 result = functions->CallDoubleMethodV(this,obj,methodID,args); 1105 va_end(args); 1106 return result; 1107 } 1108 jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, 1109 va_list args) { 1110 return functions->CallDoubleMethodV(this,obj,methodID,args); 1111 } 1112 jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, 1113 const jvalue * args) { 1114 return functions->CallDoubleMethodA(this,obj,methodID,args); 1115 } 1116 1117 void CallVoidMethod(jobject obj, jmethodID methodID, ...) { 1118 va_list args; 1119 va_start(args,methodID); 1120 functions->CallVoidMethodV(this,obj,methodID,args); 1121 va_end(args); 1122 } 1123 void CallVoidMethodV(jobject obj, jmethodID methodID, 1124 va_list args) { 1125 functions->CallVoidMethodV(this,obj,methodID,args); 1126 } 1127 void CallVoidMethodA(jobject obj, jmethodID methodID, 1128 const jvalue * args) { 1129 functions->CallVoidMethodA(this,obj,methodID,args); 1130 } 1131 1132 jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, 1133 jmethodID methodID, ...) { 1134 va_list args; 1135 jobject result; 1136 va_start(args,methodID); 1137 result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1138 methodID,args); 1139 va_end(args); 1140 return result; 1141 } 1142 jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, 1143 jmethodID methodID, va_list args) { 1144 return functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1145 methodID,args); 1146 } 1147 jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, 1148 jmethodID methodID, const jvalue * args) { 1149 return functions->CallNonvirtualObjectMethodA(this,obj,clazz, 1150 methodID,args); 1151 } 1152 1153 jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, 1154 jmethodID methodID, ...) { 1155 va_list args; 1156 jboolean result; 1157 va_start(args,methodID); 1158 result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1159 methodID,args); 1160 va_end(args); 1161 return result; 1162 } 1163 jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, 1164 jmethodID methodID, va_list args) { 1165 return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1166 methodID,args); 1167 } 1168 jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, 1169 jmethodID methodID, const jvalue * args) { 1170 return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, 1171 methodID, args); 1172 } 1173 1174 jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, 1175 jmethodID methodID, ...) { 1176 va_list args; 1177 jbyte result; 1178 va_start(args,methodID); 1179 result = functions->CallNonvirtualByteMethodV(this,obj,clazz, 1180 methodID,args); 1181 va_end(args); 1182 return result; 1183 } 1184 jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, 1185 jmethodID methodID, va_list args) { 1186 return functions->CallNonvirtualByteMethodV(this,obj,clazz, 1187 methodID,args); 1188 } 1189 jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, 1190 jmethodID methodID, const jvalue * args) { 1191 return functions->CallNonvirtualByteMethodA(this,obj,clazz, 1192 methodID,args); 1193 } 1194 1195 jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, 1196 jmethodID methodID, ...) { 1197 va_list args; 1198 jchar result; 1199 va_start(args,methodID); 1200 result = functions->CallNonvirtualCharMethodV(this,obj,clazz, 1201 methodID,args); 1202 va_end(args); 1203 return result; 1204 } 1205 jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, 1206 jmethodID methodID, va_list args) { 1207 return functions->CallNonvirtualCharMethodV(this,obj,clazz, 1208 methodID,args); 1209 } 1210 jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, 1211 jmethodID methodID, const jvalue * args) { 1212 return functions->CallNonvirtualCharMethodA(this,obj,clazz, 1213 methodID,args); 1214 } 1215 1216 jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, 1217 jmethodID methodID, ...) { 1218 va_list args; 1219 jshort result; 1220 va_start(args,methodID); 1221 result = functions->CallNonvirtualShortMethodV(this,obj,clazz, 1222 methodID,args); 1223 va_end(args); 1224 return result; 1225 } 1226 jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, 1227 jmethodID methodID, va_list args) { 1228 return functions->CallNonvirtualShortMethodV(this,obj,clazz, 1229 methodID,args); 1230 } 1231 jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, 1232 jmethodID methodID, const jvalue * args) { 1233 return functions->CallNonvirtualShortMethodA(this,obj,clazz, 1234 methodID,args); 1235 } 1236 1237 jint CallNonvirtualIntMethod(jobject obj, jclass clazz, 1238 jmethodID methodID, ...) { 1239 va_list args; 1240 jint result; 1241 va_start(args,methodID); 1242 result = functions->CallNonvirtualIntMethodV(this,obj,clazz, 1243 methodID,args); 1244 va_end(args); 1245 return result; 1246 } 1247 jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, 1248 jmethodID methodID, va_list args) { 1249 return functions->CallNonvirtualIntMethodV(this,obj,clazz, 1250 methodID,args); 1251 } 1252 jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, 1253 jmethodID methodID, const jvalue * args) { 1254 return functions->CallNonvirtualIntMethodA(this,obj,clazz, 1255 methodID,args); 1256 } 1257 1258 jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, 1259 jmethodID methodID, ...) { 1260 va_list args; 1261 jlong result; 1262 va_start(args,methodID); 1263 result = functions->CallNonvirtualLongMethodV(this,obj,clazz, 1264 methodID,args); 1265 va_end(args); 1266 return result; 1267 } 1268 jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, 1269 jmethodID methodID, va_list args) { 1270 return functions->CallNonvirtualLongMethodV(this,obj,clazz, 1271 methodID,args); 1272 } 1273 jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, 1274 jmethodID methodID, const jvalue * args) { 1275 return functions->CallNonvirtualLongMethodA(this,obj,clazz, 1276 methodID,args); 1277 } 1278 1279 jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, 1280 jmethodID methodID, ...) { 1281 va_list args; 1282 jfloat result; 1283 va_start(args,methodID); 1284 result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1285 methodID,args); 1286 va_end(args); 1287 return result; 1288 } 1289 jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, 1290 jmethodID methodID, 1291 va_list args) { 1292 return functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1293 methodID,args); 1294 } 1295 jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, 1296 jmethodID methodID, 1297 const jvalue * args) { 1298 return functions->CallNonvirtualFloatMethodA(this,obj,clazz, 1299 methodID,args); 1300 } 1301 1302 jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, 1303 jmethodID methodID, ...) { 1304 va_list args; 1305 jdouble result; 1306 va_start(args,methodID); 1307 result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1308 methodID,args); 1309 va_end(args); 1310 return result; 1311 } 1312 jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, 1313 jmethodID methodID, 1314 va_list args) { 1315 return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1316 methodID,args); 1317 } 1318 jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, 1319 jmethodID methodID, 1320 const jvalue * args) { 1321 return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, 1322 methodID,args); 1323 } 1324 1325 void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 1326 jmethodID methodID, ...) { 1327 va_list args; 1328 va_start(args,methodID); 1329 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1330 va_end(args); 1331 } 1332 void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 1333 jmethodID methodID, 1334 va_list args) { 1335 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1336 } 1337 void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 1338 jmethodID methodID, 1339 const jvalue * args) { 1340 functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); 1341 } 1342 1343 jfieldID GetFieldID(jclass clazz, const char *name, 1344 const char *sig) { 1345 return functions->GetFieldID(this,clazz,name,sig); 1346 } 1347 1348 jobject GetObjectField(jobject obj, jfieldID fieldID) { 1349 return functions->GetObjectField(this,obj,fieldID); 1350 } 1351 jboolean GetBooleanField(jobject obj, jfieldID fieldID) { 1352 return functions->GetBooleanField(this,obj,fieldID); 1353 } 1354 jbyte GetByteField(jobject obj, jfieldID fieldID) { 1355 return functions->GetByteField(this,obj,fieldID); 1356 } 1357 jchar GetCharField(jobject obj, jfieldID fieldID) { 1358 return functions->GetCharField(this,obj,fieldID); 1359 } 1360 jshort GetShortField(jobject obj, jfieldID fieldID) { 1361 return functions->GetShortField(this,obj,fieldID); 1362 } 1363 jint GetIntField(jobject obj, jfieldID fieldID) { 1364 return functions->GetIntField(this,obj,fieldID); 1365 } 1366 jlong GetLongField(jobject obj, jfieldID fieldID) { 1367 return functions->GetLongField(this,obj,fieldID); 1368 } 1369 jfloat GetFloatField(jobject obj, jfieldID fieldID) { 1370 return functions->GetFloatField(this,obj,fieldID); 1371 } 1372 jdouble GetDoubleField(jobject obj, jfieldID fieldID) { 1373 return functions->GetDoubleField(this,obj,fieldID); 1374 } 1375 1376 void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { 1377 functions->SetObjectField(this,obj,fieldID,val); 1378 } 1379 void SetBooleanField(jobject obj, jfieldID fieldID, 1380 jboolean val) { 1381 functions->SetBooleanField(this,obj,fieldID,val); 1382 } 1383 void SetByteField(jobject obj, jfieldID fieldID, 1384 jbyte val) { 1385 functions->SetByteField(this,obj,fieldID,val); 1386 } 1387 void SetCharField(jobject obj, jfieldID fieldID, 1388 jchar val) { 1389 functions->SetCharField(this,obj,fieldID,val); 1390 } 1391 void SetShortField(jobject obj, jfieldID fieldID, 1392 jshort val) { 1393 functions->SetShortField(this,obj,fieldID,val); 1394 } 1395 void SetIntField(jobject obj, jfieldID fieldID, 1396 jint val) { 1397 functions->SetIntField(this,obj,fieldID,val); 1398 } 1399 void SetLongField(jobject obj, jfieldID fieldID, 1400 jlong val) { 1401 functions->SetLongField(this,obj,fieldID,val); 1402 } 1403 void SetFloatField(jobject obj, jfieldID fieldID, 1404 jfloat val) { 1405 functions->SetFloatField(this,obj,fieldID,val); 1406 } 1407 void SetDoubleField(jobject obj, jfieldID fieldID, 1408 jdouble val) { 1409 functions->SetDoubleField(this,obj,fieldID,val); 1410 } 1411 1412 jmethodID GetStaticMethodID(jclass clazz, const char *name, 1413 const char *sig) { 1414 return functions->GetStaticMethodID(this,clazz,name,sig); 1415 } 1416 1417 jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, 1418 ...) { 1419 va_list args; 1420 jobject result; 1421 va_start(args,methodID); 1422 result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1423 va_end(args); 1424 return result; 1425 } 1426 jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, 1427 va_list args) { 1428 return functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1429 } 1430 jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, 1431 const jvalue *args) { 1432 return functions->CallStaticObjectMethodA(this,clazz,methodID,args); 1433 } 1434 1435 jboolean CallStaticBooleanMethod(jclass clazz, 1436 jmethodID methodID, ...) { 1437 va_list args; 1438 jboolean result; 1439 va_start(args,methodID); 1440 result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1441 va_end(args); 1442 return result; 1443 } 1444 jboolean CallStaticBooleanMethodV(jclass clazz, 1445 jmethodID methodID, va_list args) { 1446 return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1447 } 1448 jboolean CallStaticBooleanMethodA(jclass clazz, 1449 jmethodID methodID, const jvalue *args) { 1450 return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); 1451 } 1452 1453 jbyte CallStaticByteMethod(jclass clazz, 1454 jmethodID methodID, ...) { 1455 va_list args; 1456 jbyte result; 1457 va_start(args,methodID); 1458 result = functions->CallStaticByteMethodV(this,clazz,methodID,args); 1459 va_end(args); 1460 return result; 1461 } 1462 jbyte CallStaticByteMethodV(jclass clazz, 1463 jmethodID methodID, va_list args) { 1464 return functions->CallStaticByteMethodV(this,clazz,methodID,args); 1465 } 1466 jbyte CallStaticByteMethodA(jclass clazz, 1467 jmethodID methodID, const jvalue *args) { 1468 return functions->CallStaticByteMethodA(this,clazz,methodID,args); 1469 } 1470 1471 jchar CallStaticCharMethod(jclass clazz, 1472 jmethodID methodID, ...) { 1473 va_list args; 1474 jchar result; 1475 va_start(args,methodID); 1476 result = functions->CallStaticCharMethodV(this,clazz,methodID,args); 1477 va_end(args); 1478 return result; 1479 } 1480 jchar CallStaticCharMethodV(jclass clazz, 1481 jmethodID methodID, va_list args) { 1482 return functions->CallStaticCharMethodV(this,clazz,methodID,args); 1483 } 1484 jchar CallStaticCharMethodA(jclass clazz, 1485 jmethodID methodID, const jvalue *args) { 1486 return functions->CallStaticCharMethodA(this,clazz,methodID,args); 1487 } 1488 1489 jshort CallStaticShortMethod(jclass clazz, 1490 jmethodID methodID, ...) { 1491 va_list args; 1492 jshort result; 1493 va_start(args,methodID); 1494 result = functions->CallStaticShortMethodV(this,clazz,methodID,args); 1495 va_end(args); 1496 return result; 1497 } 1498 jshort CallStaticShortMethodV(jclass clazz, 1499 jmethodID methodID, va_list args) { 1500 return functions->CallStaticShortMethodV(this,clazz,methodID,args); 1501 } 1502 jshort CallStaticShortMethodA(jclass clazz, 1503 jmethodID methodID, const jvalue *args) { 1504 return functions->CallStaticShortMethodA(this,clazz,methodID,args); 1505 } 1506 1507 jint CallStaticIntMethod(jclass clazz, 1508 jmethodID methodID, ...) { 1509 va_list args; 1510 jint result; 1511 va_start(args,methodID); 1512 result = functions->CallStaticIntMethodV(this,clazz,methodID,args); 1513 va_end(args); 1514 return result; 1515 } 1516 jint CallStaticIntMethodV(jclass clazz, 1517 jmethodID methodID, va_list args) { 1518 return functions->CallStaticIntMethodV(this,clazz,methodID,args); 1519 } 1520 jint CallStaticIntMethodA(jclass clazz, 1521 jmethodID methodID, const jvalue *args) { 1522 return functions->CallStaticIntMethodA(this,clazz,methodID,args); 1523 } 1524 1525 jlong CallStaticLongMethod(jclass clazz, 1526 jmethodID methodID, ...) { 1527 va_list args; 1528 jlong result; 1529 va_start(args,methodID); 1530 result = functions->CallStaticLongMethodV(this,clazz,methodID,args); 1531 va_end(args); 1532 return result; 1533 } 1534 jlong CallStaticLongMethodV(jclass clazz, 1535 jmethodID methodID, va_list args) { 1536 return functions->CallStaticLongMethodV(this,clazz,methodID,args); 1537 } 1538 jlong CallStaticLongMethodA(jclass clazz, 1539 jmethodID methodID, const jvalue *args) { 1540 return functions->CallStaticLongMethodA(this,clazz,methodID,args); 1541 } 1542 1543 jfloat CallStaticFloatMethod(jclass clazz, 1544 jmethodID methodID, ...) { 1545 va_list args; 1546 jfloat result; 1547 va_start(args,methodID); 1548 result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1549 va_end(args); 1550 return result; 1551 } 1552 jfloat CallStaticFloatMethodV(jclass clazz, 1553 jmethodID methodID, va_list args) { 1554 return functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1555 } 1556 jfloat CallStaticFloatMethodA(jclass clazz, 1557 jmethodID methodID, const jvalue *args) { 1558 return functions->CallStaticFloatMethodA(this,clazz,methodID,args); 1559 } 1560 1561 jdouble CallStaticDoubleMethod(jclass clazz, 1562 jmethodID methodID, ...) { 1563 va_list args; 1564 jdouble result; 1565 va_start(args,methodID); 1566 result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1567 va_end(args); 1568 return result; 1569 } 1570 jdouble CallStaticDoubleMethodV(jclass clazz, 1571 jmethodID methodID, va_list args) { 1572 return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1573 } 1574 jdouble CallStaticDoubleMethodA(jclass clazz, 1575 jmethodID methodID, const jvalue *args) { 1576 return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); 1577 } 1578 1579 void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { 1580 va_list args; 1581 va_start(args,methodID); 1582 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1583 va_end(args); 1584 } 1585 void CallStaticVoidMethodV(jclass cls, jmethodID methodID, 1586 va_list args) { 1587 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1588 } 1589 void CallStaticVoidMethodA(jclass cls, jmethodID methodID, 1590 const jvalue * args) { 1591 functions->CallStaticVoidMethodA(this,cls,methodID,args); 1592 } 1593 1594 jfieldID GetStaticFieldID(jclass clazz, const char *name, 1595 const char *sig) { 1596 return functions->GetStaticFieldID(this,clazz,name,sig); 1597 } 1598 jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { 1599 return functions->GetStaticObjectField(this,clazz,fieldID); 1600 } 1601 jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { 1602 return functions->GetStaticBooleanField(this,clazz,fieldID); 1603 } 1604 jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { 1605 return functions->GetStaticByteField(this,clazz,fieldID); 1606 } 1607 jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { 1608 return functions->GetStaticCharField(this,clazz,fieldID); 1609 } 1610 jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { 1611 return functions->GetStaticShortField(this,clazz,fieldID); 1612 } 1613 jint GetStaticIntField(jclass clazz, jfieldID fieldID) { 1614 return functions->GetStaticIntField(this,clazz,fieldID); 1615 } 1616 jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { 1617 return functions->GetStaticLongField(this,clazz,fieldID); 1618 } 1619 jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { 1620 return functions->GetStaticFloatField(this,clazz,fieldID); 1621 } 1622 jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { 1623 return functions->GetStaticDoubleField(this,clazz,fieldID); 1624 } 1625 1626 void SetStaticObjectField(jclass clazz, jfieldID fieldID, 1627 jobject value) { 1628 functions->SetStaticObjectField(this,clazz,fieldID,value); 1629 } 1630 void SetStaticBooleanField(jclass clazz, jfieldID fieldID, 1631 jboolean value) { 1632 functions->SetStaticBooleanField(this,clazz,fieldID,value); 1633 } 1634 void SetStaticByteField(jclass clazz, jfieldID fieldID, 1635 jbyte value) { 1636 functions->SetStaticByteField(this,clazz,fieldID,value); 1637 } 1638 void SetStaticCharField(jclass clazz, jfieldID fieldID, 1639 jchar value) { 1640 functions->SetStaticCharField(this,clazz,fieldID,value); 1641 } 1642 void SetStaticShortField(jclass clazz, jfieldID fieldID, 1643 jshort value) { 1644 functions->SetStaticShortField(this,clazz,fieldID,value); 1645 } 1646 void SetStaticIntField(jclass clazz, jfieldID fieldID, 1647 jint value) { 1648 functions->SetStaticIntField(this,clazz,fieldID,value); 1649 } 1650 void SetStaticLongField(jclass clazz, jfieldID fieldID, 1651 jlong value) { 1652 functions->SetStaticLongField(this,clazz,fieldID,value); 1653 } 1654 void SetStaticFloatField(jclass clazz, jfieldID fieldID, 1655 jfloat value) { 1656 functions->SetStaticFloatField(this,clazz,fieldID,value); 1657 } 1658 void SetStaticDoubleField(jclass clazz, jfieldID fieldID, 1659 jdouble value) { 1660 functions->SetStaticDoubleField(this,clazz,fieldID,value); 1661 } 1662 1663 jstring NewString(const jchar *unicode, jsize len) { 1664 return functions->NewString(this,unicode,len); 1665 } 1666 jsize GetStringLength(jstring str) { 1667 return functions->GetStringLength(this,str); 1668 } 1669 const jchar *GetStringChars(jstring str, jboolean *isCopy) { 1670 return functions->GetStringChars(this,str,isCopy); 1671 } 1672 void ReleaseStringChars(jstring str, const jchar *chars) { 1673 functions->ReleaseStringChars(this,str,chars); 1674 } 1675 1676 jstring NewStringUTF(const char *utf) { 1677 return functions->NewStringUTF(this,utf); 1678 } 1679 jsize GetStringUTFLength(jstring str) { 1680 return functions->GetStringUTFLength(this,str); 1681 } 1682 const char* GetStringUTFChars(jstring str, jboolean *isCopy) { 1683 return functions->GetStringUTFChars(this,str,isCopy); 1684 } 1685 void ReleaseStringUTFChars(jstring str, const char* chars) { 1686 functions->ReleaseStringUTFChars(this,str,chars); 1687 } 1688 1689 jsize GetArrayLength(jarray array) { 1690 return functions->GetArrayLength(this,array); 1691 } 1692 1693 jobjectArray NewObjectArray(jsize len, jclass clazz, 1694 jobject init) { 1695 return functions->NewObjectArray(this,len,clazz,init); 1696 } 1697 jobject GetObjectArrayElement(jobjectArray array, jsize index) { 1698 return functions->GetObjectArrayElement(this,array,index); 1699 } 1700 void SetObjectArrayElement(jobjectArray array, jsize index, 1701 jobject val) { 1702 functions->SetObjectArrayElement(this,array,index,val); 1703 } 1704 1705 jbooleanArray NewBooleanArray(jsize len) { 1706 return functions->NewBooleanArray(this,len); 1707 } 1708 jbyteArray NewByteArray(jsize len) { 1709 return functions->NewByteArray(this,len); 1710 } 1711 jcharArray NewCharArray(jsize len) { 1712 return functions->NewCharArray(this,len); 1713 } 1714 jshortArray NewShortArray(jsize len) { 1715 return functions->NewShortArray(this,len); 1716 } 1717 jintArray NewIntArray(jsize len) { 1718 return functions->NewIntArray(this,len); 1719 } 1720 jlongArray NewLongArray(jsize len) { 1721 return functions->NewLongArray(this,len); 1722 } 1723 jfloatArray NewFloatArray(jsize len) { 1724 return functions->NewFloatArray(this,len); 1725 } 1726 jdoubleArray NewDoubleArray(jsize len) { 1727 return functions->NewDoubleArray(this,len); 1728 } 1729 1730 jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { 1731 return functions->GetBooleanArrayElements(this,array,isCopy); 1732 } 1733 jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { 1734 return functions->GetByteArrayElements(this,array,isCopy); 1735 } 1736 jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { 1737 return functions->GetCharArrayElements(this,array,isCopy); 1738 } 1739 jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { 1740 return functions->GetShortArrayElements(this,array,isCopy); 1741 } 1742 jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { 1743 return functions->GetIntArrayElements(this,array,isCopy); 1744 } 1745 jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { 1746 return functions->GetLongArrayElements(this,array,isCopy); 1747 } 1748 jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { 1749 return functions->GetFloatArrayElements(this,array,isCopy); 1750 } 1751 jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { 1752 return functions->GetDoubleArrayElements(this,array,isCopy); 1753 } 1754 1755 void ReleaseBooleanArrayElements(jbooleanArray array, 1756 jboolean *elems, 1757 jint mode) { 1758 functions->ReleaseBooleanArrayElements(this,array,elems,mode); 1759 } 1760 void ReleaseByteArrayElements(jbyteArray array, 1761 jbyte *elems, 1762 jint mode) { 1763 functions->ReleaseByteArrayElements(this,array,elems,mode); 1764 } 1765 void ReleaseCharArrayElements(jcharArray array, 1766 jchar *elems, 1767 jint mode) { 1768 functions->ReleaseCharArrayElements(this,array,elems,mode); 1769 } 1770 void ReleaseShortArrayElements(jshortArray array, 1771 jshort *elems, 1772 jint mode) { 1773 functions->ReleaseShortArrayElements(this,array,elems,mode); 1774 } 1775 void ReleaseIntArrayElements(jintArray array, 1776 jint *elems, 1777 jint mode) { 1778 functions->ReleaseIntArrayElements(this,array,elems,mode); 1779 } 1780 void ReleaseLongArrayElements(jlongArray array, 1781 jlong *elems, 1782 jint mode) { 1783 functions->ReleaseLongArrayElements(this,array,elems,mode); 1784 } 1785 void ReleaseFloatArrayElements(jfloatArray array, 1786 jfloat *elems, 1787 jint mode) { 1788 functions->ReleaseFloatArrayElements(this,array,elems,mode); 1789 } 1790 void ReleaseDoubleArrayElements(jdoubleArray array, 1791 jdouble *elems, 1792 jint mode) { 1793 functions->ReleaseDoubleArrayElements(this,array,elems,mode); 1794 } 1795 1796 void GetBooleanArrayRegion(jbooleanArray array, 1797 jsize start, jsize len, jboolean *buf) { 1798 functions->GetBooleanArrayRegion(this,array,start,len,buf); 1799 } 1800 void GetByteArrayRegion(jbyteArray array, 1801 jsize start, jsize len, jbyte *buf) { 1802 functions->GetByteArrayRegion(this,array,start,len,buf); 1803 } 1804 void GetCharArrayRegion(jcharArray array, 1805 jsize start, jsize len, jchar *buf) { 1806 functions->GetCharArrayRegion(this,array,start,len,buf); 1807 } 1808 void GetShortArrayRegion(jshortArray array, 1809 jsize start, jsize len, jshort *buf) { 1810 functions->GetShortArrayRegion(this,array,start,len,buf); 1811 } 1812 void GetIntArrayRegion(jintArray array, 1813 jsize start, jsize len, jint *buf) { 1814 functions->GetIntArrayRegion(this,array,start,len,buf); 1815 } 1816 void GetLongArrayRegion(jlongArray array, 1817 jsize start, jsize len, jlong *buf) { 1818 functions->GetLongArrayRegion(this,array,start,len,buf); 1819 } 1820 void GetFloatArrayRegion(jfloatArray array, 1821 jsize start, jsize len, jfloat *buf) { 1822 functions->GetFloatArrayRegion(this,array,start,len,buf); 1823 } 1824 void GetDoubleArrayRegion(jdoubleArray array, 1825 jsize start, jsize len, jdouble *buf) { 1826 functions->GetDoubleArrayRegion(this,array,start,len,buf); 1827 } 1828 1829 void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 1830 const jboolean *buf) { 1831 functions->SetBooleanArrayRegion(this,array,start,len,buf); 1832 } 1833 void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 1834 const jbyte *buf) { 1835 functions->SetByteArrayRegion(this,array,start,len,buf); 1836 } 1837 void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 1838 const jchar *buf) { 1839 functions->SetCharArrayRegion(this,array,start,len,buf); 1840 } 1841 void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 1842 const jshort *buf) { 1843 functions->SetShortArrayRegion(this,array,start,len,buf); 1844 } 1845 void SetIntArrayRegion(jintArray array, jsize start, jsize len, 1846 const jint *buf) { 1847 functions->SetIntArrayRegion(this,array,start,len,buf); 1848 } 1849 void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 1850 const jlong *buf) { 1851 functions->SetLongArrayRegion(this,array,start,len,buf); 1852 } 1853 void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 1854 const jfloat *buf) { 1855 functions->SetFloatArrayRegion(this,array,start,len,buf); 1856 } 1857 void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 1858 const jdouble *buf) { 1859 functions->SetDoubleArrayRegion(this,array,start,len,buf); 1860 } 1861 1862 jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, 1863 jint nMethods) { 1864 return functions->RegisterNatives(this,clazz,methods,nMethods); 1865 } 1866 jint UnregisterNatives(jclass clazz) { 1867 return functions->UnregisterNatives(this,clazz); 1868 } 1869 1870 jint MonitorEnter(jobject obj) { 1871 return functions->MonitorEnter(this,obj); 1872 } 1873 jint MonitorExit(jobject obj) { 1874 return functions->MonitorExit(this,obj); 1875 } 1876 1877 jint GetJavaVM(JavaVM **vm) { 1878 return functions->GetJavaVM(this,vm); 1879 } 1880 1881 void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { 1882 functions->GetStringRegion(this,str,start,len,buf); 1883 } 1884 void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { 1885 functions->GetStringUTFRegion(this,str,start,len,buf); 1886 } 1887 1888 void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { 1889 return functions->GetPrimitiveArrayCritical(this,array,isCopy); 1890 } 1891 void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { 1892 functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); 1893 } 1894 1895 const jchar * GetStringCritical(jstring string, jboolean *isCopy) { 1896 return functions->GetStringCritical(this,string,isCopy); 1897 } 1898 void ReleaseStringCritical(jstring string, const jchar *cstring) { 1899 functions->ReleaseStringCritical(this,string,cstring); 1900 } 1901 1902 jweak NewWeakGlobalRef(jobject obj) { 1903 return functions->NewWeakGlobalRef(this,obj); 1904 } 1905 void DeleteWeakGlobalRef(jweak ref) { 1906 functions->DeleteWeakGlobalRef(this,ref); 1907 } 1908 1909 jboolean ExceptionCheck() { 1910 return functions->ExceptionCheck(this); 1911 } 1912 1913 jobject NewDirectByteBuffer(void* address, jlong capacity) { 1914 return functions->NewDirectByteBuffer(this, address, capacity); 1915 } 1916 void* GetDirectBufferAddress(jobject buf) { 1917 return functions->GetDirectBufferAddress(this, buf); 1918 } 1919 jlong GetDirectBufferCapacity(jobject buf) { 1920 return functions->GetDirectBufferCapacity(this, buf); 1921 } 1922 jobjectRefType GetObjectRefType(jobject obj) { 1923 return functions->GetObjectRefType(this, obj); 1924 } 1925 1926 /* Module Features */ 1927 1928 jobject GetModule(jclass clazz) { 1929 return functions->GetModule(this, clazz); 1930 } 1931 1932 /* Flattened arrays Features */ 1933 void* GetFlattenedArrayElements(jarray array , jboolean *isCopy) { 1934 return functions->GetFlattenedArrayElements(this, array, isCopy); 1935 } 1936 1937 void ReleaseFlattenedArrayElements(jarray array, void* elem, jint mode) { 1938 return functions->ReleaseFlattenedArrayElements(this, array, elem, mode); 1939 } 1940 1941 jclass GetFlattenedArrayElementClass(jarray array) { 1942 return functions->GetFlattenedArrayElementClass(this, array); 1943 } 1944 1945 jsize GetFlattenedArrayElementSize(jarray array) { 1946 return functions->GetFlattenedArrayElementSize(this, array); 1947 } 1948 1949 jsize GetFieldOffsetInFlattenedLayout(jclass clazz, const char *name, const char *signature, jboolean* isFlattened) { 1950 return functions->GetFieldOffsetInFlattenedLayout(this, clazz, name, signature, isFlattened); 1951 } 1952 1953 jobject CreateSubElementSelector(jarray array) { 1954 return functions->CreateSubElementSelector(this, array); 1955 } 1956 jobject GetSubElementSelector(jobject selector, jfieldID fieldID) { 1957 return functions->GetSubElementSelector(this, selector, fieldID); 1958 } 1959 1960 jobject GetObjectSubElement(jarray array, jobject selector, int index) { 1961 return functions->GetObjectSubElement(this, array, selector, index); 1962 } 1963 void SetObjectSubElement(jarray array, jobject selector, int index, jobject value) { 1964 functions->SetObjectSubElement(this, array, selector, index, value); 1965 } 1966 1967 jboolean GetBooleanSubElement(jarray array, jobject selector, int index) { 1968 return functions->GetBooleanSubElement(this, array, selector, index); 1969 } 1970 jbyte GetByteSubElement(jarray array, jobject selector, int index) { 1971 return functions->GetByteSubElement(this, array, selector, index); 1972 } 1973 jshort GetShortSubElement(jarray array, jobject selector, int index) { 1974 return functions->GetShortSubElement(this, array, selector, index); 1975 } 1976 jchar GetCharSubElement(jarray array, jobject selector, int index) { 1977 return functions->GetCharSubElement(this, array, selector, index); 1978 } 1979 jint GetIntSubElement(jarray array, jobject selector, int index) { 1980 return functions->GetIntSubElement(this, array, selector, index); 1981 } 1982 jlong GetLongSubElement(jarray array, jobject selector, int index) { 1983 return functions->GetLongSubElement(this, array, selector, index); 1984 } 1985 jfloat GetFloatSubElement(jarray array, jobject selector, int index) { 1986 return functions->GetFloatSubElement(this, array, selector, index); 1987 } 1988 jdouble GetDoubleSubElement(jarray array, jobject selector, int index) { 1989 return functions->GetDoubleSubElement(this, array, selector, index); 1990 } 1991 1992 void SetBooleanSubElement(jarray array, jobject selector, int index, jboolean value) { 1993 return functions->SetBooleanSubElement(this, array, selector, index, value); 1994 } 1995 void SetByteSubElement(jarray array, jobject selector, int index, jbyte value) { 1996 return functions->SetByteSubElement(this, array, selector, index, value); 1997 } 1998 void SetShortSubElement(jarray array, jobject selector, int index, jshort value) { 1999 return functions->SetShortSubElement(this, array, selector, index, value); 2000 } 2001 void SetCharSubElement(jarray array, jobject selector, int index, jchar value) { 2002 return functions->SetCharSubElement(this, array, selector, index, value); 2003 } 2004 void SetIntSubElement(jarray array, jobject selector, int index, jint value) { 2005 return functions->SetIntSubElement(this, array, selector, index, value); 2006 } 2007 void SetLongSubElement(jarray array, jobject selector, int index, jlong value) { 2008 return functions->SetLongSubElement(this, array, selector, index, value); 2009 } 2010 void SetFloatSubElement(jarray array, jobject selector, int index, jfloat value) { 2011 return functions->SetFloatSubElement(this, array, selector, index, value); 2012 } 2013 void SetDoubleSubElement(jarray array, jobject selector, int index, jdouble value) { 2014 return functions->SetDoubleSubElement(this, array, selector, index, value); 2015 } 2016 2017 #endif /* __cplusplus */ 2018 }; 2019 2020 /* 2021 * optionString may be any option accepted by the JVM, or one of the 2022 * following: 2023 * 2024 * -D<name>=<value> Set a system property. 2025 * -verbose[:class|gc|jni] Enable verbose output, comma-separated. E.g. 2026 * "-verbose:class" or "-verbose:gc,class" 2027 * Standard names include: gc, class, and jni. 2028 * All nonstandard (VM-specific) names must begin 2029 * with "X". 2030 * vfprintf extraInfo is a pointer to the vfprintf hook. 2031 * exit extraInfo is a pointer to the exit hook. 2032 * abort extraInfo is a pointer to the abort hook. 2033 */ 2034 typedef struct JavaVMOption { 2035 char *optionString; 2036 void *extraInfo; 2037 } JavaVMOption; 2038 2039 typedef struct JavaVMInitArgs { 2040 jint version; 2041 2042 jint nOptions; 2043 JavaVMOption *options; 2044 jboolean ignoreUnrecognized; 2045 } JavaVMInitArgs; 2046 2047 typedef struct JavaVMAttachArgs { 2048 jint version; 2049 2050 char *name; 2051 jobject group; 2052 } JavaVMAttachArgs; 2053 2054 /* These will be VM-specific. */ 2055 2056 #define JDK1_2 2057 #define JDK1_4 2058 2059 /* End VM-specific. */ 2060 2061 struct JNIInvokeInterface_ { 2062 void *reserved0; 2063 void *reserved1; 2064 void *reserved2; 2065 2066 jint (JNICALL *DestroyJavaVM)(JavaVM *vm); 2067 2068 jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); 2069 2070 jint (JNICALL *DetachCurrentThread)(JavaVM *vm); 2071 2072 jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); 2073 2074 jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); 2075 }; 2076 2077 struct JavaVM_ { 2078 const struct JNIInvokeInterface_ *functions; 2079 #ifdef __cplusplus 2080 2081 jint DestroyJavaVM() { 2082 return functions->DestroyJavaVM(this); 2083 } 2084 jint AttachCurrentThread(void **penv, void *args) { 2085 return functions->AttachCurrentThread(this, penv, args); 2086 } 2087 jint DetachCurrentThread() { 2088 return functions->DetachCurrentThread(this); 2089 } 2090 2091 jint GetEnv(void **penv, jint version) { 2092 return functions->GetEnv(this, penv, version); 2093 } 2094 jint AttachCurrentThreadAsDaemon(void **penv, void *args) { 2095 return functions->AttachCurrentThreadAsDaemon(this, penv, args); 2096 } 2097 #endif 2098 }; 2099 2100 #ifdef _JNI_IMPLEMENTATION_ 2101 #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT 2102 #else 2103 #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT 2104 #endif 2105 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 2106 JNI_GetDefaultJavaVMInitArgs(void *args); 2107 2108 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 2109 JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); 2110 2111 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 2112 JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); 2113 2114 /* Defined by native libraries. */ 2115 JNIEXPORT jint JNICALL 2116 JNI_OnLoad(JavaVM *vm, void *reserved); 2117 2118 JNIEXPORT void JNICALL 2119 JNI_OnUnload(JavaVM *vm, void *reserved); 2120 2121 #define JNI_VERSION_1_1 0x00010001 2122 #define JNI_VERSION_1_2 0x00010002 2123 #define JNI_VERSION_1_4 0x00010004 2124 #define JNI_VERSION_1_6 0x00010006 2125 #define JNI_VERSION_1_8 0x00010008 2126 #define JNI_VERSION_9 0x00090000 2127 #define JNI_VERSION_10 0x000a0000 2128 2129 #ifdef __cplusplus 2130 } /* extern "C" */ 2131 #endif /* __cplusplus */ 2132 2133 #endif /* !_JAVASOFT_JNI_H_ */