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 780 /* 781 * We use inlined functions for C++ so that programmers can write: 782 * 783 * env->FindClass("java/lang/String") 784 * 785 * in C++ rather than: 786 * 787 * (*env)->FindClass(env, "java/lang/String") 788 * 789 * in C. 790 */ 791 792 struct JNIEnv_ { 793 const struct JNINativeInterface_ *functions; 794 #ifdef __cplusplus 795 796 jint GetVersion() { 797 return functions->GetVersion(this); 798 } 799 jclass DefineClass(const char *name, jobject loader, const jbyte *buf, 800 jsize len) { 801 return functions->DefineClass(this, name, loader, buf, len); 802 } 803 jclass FindClass(const char *name) { 804 return functions->FindClass(this, name); 805 } 806 jmethodID FromReflectedMethod(jobject method) { 807 return functions->FromReflectedMethod(this,method); 808 } 809 jfieldID FromReflectedField(jobject field) { 810 return functions->FromReflectedField(this,field); 811 } 812 813 jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { 814 return functions->ToReflectedMethod(this, cls, methodID, isStatic); 815 } 816 817 jclass GetSuperclass(jclass sub) { 818 return functions->GetSuperclass(this, sub); 819 } 820 jboolean IsAssignableFrom(jclass sub, jclass sup) { 821 return functions->IsAssignableFrom(this, sub, sup); 822 } 823 824 jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { 825 return functions->ToReflectedField(this,cls,fieldID,isStatic); 826 } 827 828 jint Throw(jthrowable obj) { 829 return functions->Throw(this, obj); 830 } 831 jint ThrowNew(jclass clazz, const char *msg) { 832 return functions->ThrowNew(this, clazz, msg); 833 } 834 jthrowable ExceptionOccurred() { 835 return functions->ExceptionOccurred(this); 836 } 837 void ExceptionDescribe() { 838 functions->ExceptionDescribe(this); 839 } 840 void ExceptionClear() { 841 functions->ExceptionClear(this); 842 } 843 void FatalError(const char *msg) { 844 functions->FatalError(this, msg); 845 } 846 847 jint PushLocalFrame(jint capacity) { 848 return functions->PushLocalFrame(this,capacity); 849 } 850 jobject PopLocalFrame(jobject result) { 851 return functions->PopLocalFrame(this,result); 852 } 853 854 jobject NewGlobalRef(jobject lobj) { 855 return functions->NewGlobalRef(this,lobj); 856 } 857 void DeleteGlobalRef(jobject gref) { 858 functions->DeleteGlobalRef(this,gref); 859 } 860 void DeleteLocalRef(jobject obj) { 861 functions->DeleteLocalRef(this, obj); 862 } 863 864 jboolean IsSameObject(jobject obj1, jobject obj2) { 865 return functions->IsSameObject(this,obj1,obj2); 866 } 867 868 jobject NewLocalRef(jobject ref) { 869 return functions->NewLocalRef(this,ref); 870 } 871 jint EnsureLocalCapacity(jint capacity) { 872 return functions->EnsureLocalCapacity(this,capacity); 873 } 874 875 jobject AllocObject(jclass clazz) { 876 return functions->AllocObject(this,clazz); 877 } 878 jobject NewObject(jclass clazz, jmethodID methodID, ...) { 879 va_list args; 880 jobject result; 881 va_start(args, methodID); 882 result = functions->NewObjectV(this,clazz,methodID,args); 883 va_end(args); 884 return result; 885 } 886 jobject NewObjectV(jclass clazz, jmethodID methodID, 887 va_list args) { 888 return functions->NewObjectV(this,clazz,methodID,args); 889 } 890 jobject NewObjectA(jclass clazz, jmethodID methodID, 891 const jvalue *args) { 892 return functions->NewObjectA(this,clazz,methodID,args); 893 } 894 895 jclass GetObjectClass(jobject obj) { 896 return functions->GetObjectClass(this,obj); 897 } 898 jboolean IsInstanceOf(jobject obj, jclass clazz) { 899 return functions->IsInstanceOf(this,obj,clazz); 900 } 901 902 jmethodID GetMethodID(jclass clazz, const char *name, 903 const char *sig) { 904 return functions->GetMethodID(this,clazz,name,sig); 905 } 906 907 jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { 908 va_list args; 909 jobject result; 910 va_start(args,methodID); 911 result = functions->CallObjectMethodV(this,obj,methodID,args); 912 va_end(args); 913 return result; 914 } 915 jobject CallObjectMethodV(jobject obj, jmethodID methodID, 916 va_list args) { 917 return functions->CallObjectMethodV(this,obj,methodID,args); 918 } 919 jobject CallObjectMethodA(jobject obj, jmethodID methodID, 920 const jvalue * args) { 921 return functions->CallObjectMethodA(this,obj,methodID,args); 922 } 923 924 jboolean CallBooleanMethod(jobject obj, 925 jmethodID methodID, ...) { 926 va_list args; 927 jboolean result; 928 va_start(args,methodID); 929 result = functions->CallBooleanMethodV(this,obj,methodID,args); 930 va_end(args); 931 return result; 932 } 933 jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, 934 va_list args) { 935 return functions->CallBooleanMethodV(this,obj,methodID,args); 936 } 937 jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, 938 const jvalue * args) { 939 return functions->CallBooleanMethodA(this,obj,methodID, args); 940 } 941 942 jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { 943 va_list args; 944 jbyte result; 945 va_start(args,methodID); 946 result = functions->CallByteMethodV(this,obj,methodID,args); 947 va_end(args); 948 return result; 949 } 950 jbyte CallByteMethodV(jobject obj, jmethodID methodID, 951 va_list args) { 952 return functions->CallByteMethodV(this,obj,methodID,args); 953 } 954 jbyte CallByteMethodA(jobject obj, jmethodID methodID, 955 const jvalue * args) { 956 return functions->CallByteMethodA(this,obj,methodID,args); 957 } 958 959 jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { 960 va_list args; 961 jchar result; 962 va_start(args,methodID); 963 result = functions->CallCharMethodV(this,obj,methodID,args); 964 va_end(args); 965 return result; 966 } 967 jchar CallCharMethodV(jobject obj, jmethodID methodID, 968 va_list args) { 969 return functions->CallCharMethodV(this,obj,methodID,args); 970 } 971 jchar CallCharMethodA(jobject obj, jmethodID methodID, 972 const jvalue * args) { 973 return functions->CallCharMethodA(this,obj,methodID,args); 974 } 975 976 jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { 977 va_list args; 978 jshort result; 979 va_start(args,methodID); 980 result = functions->CallShortMethodV(this,obj,methodID,args); 981 va_end(args); 982 return result; 983 } 984 jshort CallShortMethodV(jobject obj, jmethodID methodID, 985 va_list args) { 986 return functions->CallShortMethodV(this,obj,methodID,args); 987 } 988 jshort CallShortMethodA(jobject obj, jmethodID methodID, 989 const jvalue * args) { 990 return functions->CallShortMethodA(this,obj,methodID,args); 991 } 992 993 jint CallIntMethod(jobject obj, jmethodID methodID, ...) { 994 va_list args; 995 jint result; 996 va_start(args,methodID); 997 result = functions->CallIntMethodV(this,obj,methodID,args); 998 va_end(args); 999 return result; 1000 } 1001 jint CallIntMethodV(jobject obj, jmethodID methodID, 1002 va_list args) { 1003 return functions->CallIntMethodV(this,obj,methodID,args); 1004 } 1005 jint CallIntMethodA(jobject obj, jmethodID methodID, 1006 const jvalue * args) { 1007 return functions->CallIntMethodA(this,obj,methodID,args); 1008 } 1009 1010 jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { 1011 va_list args; 1012 jlong result; 1013 va_start(args,methodID); 1014 result = functions->CallLongMethodV(this,obj,methodID,args); 1015 va_end(args); 1016 return result; 1017 } 1018 jlong CallLongMethodV(jobject obj, jmethodID methodID, 1019 va_list args) { 1020 return functions->CallLongMethodV(this,obj,methodID,args); 1021 } 1022 jlong CallLongMethodA(jobject obj, jmethodID methodID, 1023 const jvalue * args) { 1024 return functions->CallLongMethodA(this,obj,methodID,args); 1025 } 1026 1027 jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { 1028 va_list args; 1029 jfloat result; 1030 va_start(args,methodID); 1031 result = functions->CallFloatMethodV(this,obj,methodID,args); 1032 va_end(args); 1033 return result; 1034 } 1035 jfloat CallFloatMethodV(jobject obj, jmethodID methodID, 1036 va_list args) { 1037 return functions->CallFloatMethodV(this,obj,methodID,args); 1038 } 1039 jfloat CallFloatMethodA(jobject obj, jmethodID methodID, 1040 const jvalue * args) { 1041 return functions->CallFloatMethodA(this,obj,methodID,args); 1042 } 1043 1044 jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { 1045 va_list args; 1046 jdouble result; 1047 va_start(args,methodID); 1048 result = functions->CallDoubleMethodV(this,obj,methodID,args); 1049 va_end(args); 1050 return result; 1051 } 1052 jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, 1053 va_list args) { 1054 return functions->CallDoubleMethodV(this,obj,methodID,args); 1055 } 1056 jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, 1057 const jvalue * args) { 1058 return functions->CallDoubleMethodA(this,obj,methodID,args); 1059 } 1060 1061 void CallVoidMethod(jobject obj, jmethodID methodID, ...) { 1062 va_list args; 1063 va_start(args,methodID); 1064 functions->CallVoidMethodV(this,obj,methodID,args); 1065 va_end(args); 1066 } 1067 void CallVoidMethodV(jobject obj, jmethodID methodID, 1068 va_list args) { 1069 functions->CallVoidMethodV(this,obj,methodID,args); 1070 } 1071 void CallVoidMethodA(jobject obj, jmethodID methodID, 1072 const jvalue * args) { 1073 functions->CallVoidMethodA(this,obj,methodID,args); 1074 } 1075 1076 jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, 1077 jmethodID methodID, ...) { 1078 va_list args; 1079 jobject result; 1080 va_start(args,methodID); 1081 result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1082 methodID,args); 1083 va_end(args); 1084 return result; 1085 } 1086 jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, 1087 jmethodID methodID, va_list args) { 1088 return functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1089 methodID,args); 1090 } 1091 jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, 1092 jmethodID methodID, const jvalue * args) { 1093 return functions->CallNonvirtualObjectMethodA(this,obj,clazz, 1094 methodID,args); 1095 } 1096 1097 jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, 1098 jmethodID methodID, ...) { 1099 va_list args; 1100 jboolean result; 1101 va_start(args,methodID); 1102 result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1103 methodID,args); 1104 va_end(args); 1105 return result; 1106 } 1107 jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, 1108 jmethodID methodID, va_list args) { 1109 return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1110 methodID,args); 1111 } 1112 jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, 1113 jmethodID methodID, const jvalue * args) { 1114 return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, 1115 methodID, args); 1116 } 1117 1118 jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, 1119 jmethodID methodID, ...) { 1120 va_list args; 1121 jbyte result; 1122 va_start(args,methodID); 1123 result = functions->CallNonvirtualByteMethodV(this,obj,clazz, 1124 methodID,args); 1125 va_end(args); 1126 return result; 1127 } 1128 jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, 1129 jmethodID methodID, va_list args) { 1130 return functions->CallNonvirtualByteMethodV(this,obj,clazz, 1131 methodID,args); 1132 } 1133 jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, 1134 jmethodID methodID, const jvalue * args) { 1135 return functions->CallNonvirtualByteMethodA(this,obj,clazz, 1136 methodID,args); 1137 } 1138 1139 jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, 1140 jmethodID methodID, ...) { 1141 va_list args; 1142 jchar result; 1143 va_start(args,methodID); 1144 result = functions->CallNonvirtualCharMethodV(this,obj,clazz, 1145 methodID,args); 1146 va_end(args); 1147 return result; 1148 } 1149 jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, 1150 jmethodID methodID, va_list args) { 1151 return functions->CallNonvirtualCharMethodV(this,obj,clazz, 1152 methodID,args); 1153 } 1154 jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, 1155 jmethodID methodID, const jvalue * args) { 1156 return functions->CallNonvirtualCharMethodA(this,obj,clazz, 1157 methodID,args); 1158 } 1159 1160 jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, 1161 jmethodID methodID, ...) { 1162 va_list args; 1163 jshort result; 1164 va_start(args,methodID); 1165 result = functions->CallNonvirtualShortMethodV(this,obj,clazz, 1166 methodID,args); 1167 va_end(args); 1168 return result; 1169 } 1170 jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, 1171 jmethodID methodID, va_list args) { 1172 return functions->CallNonvirtualShortMethodV(this,obj,clazz, 1173 methodID,args); 1174 } 1175 jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, 1176 jmethodID methodID, const jvalue * args) { 1177 return functions->CallNonvirtualShortMethodA(this,obj,clazz, 1178 methodID,args); 1179 } 1180 1181 jint CallNonvirtualIntMethod(jobject obj, jclass clazz, 1182 jmethodID methodID, ...) { 1183 va_list args; 1184 jint result; 1185 va_start(args,methodID); 1186 result = functions->CallNonvirtualIntMethodV(this,obj,clazz, 1187 methodID,args); 1188 va_end(args); 1189 return result; 1190 } 1191 jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, 1192 jmethodID methodID, va_list args) { 1193 return functions->CallNonvirtualIntMethodV(this,obj,clazz, 1194 methodID,args); 1195 } 1196 jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, 1197 jmethodID methodID, const jvalue * args) { 1198 return functions->CallNonvirtualIntMethodA(this,obj,clazz, 1199 methodID,args); 1200 } 1201 1202 jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, 1203 jmethodID methodID, ...) { 1204 va_list args; 1205 jlong result; 1206 va_start(args,methodID); 1207 result = functions->CallNonvirtualLongMethodV(this,obj,clazz, 1208 methodID,args); 1209 va_end(args); 1210 return result; 1211 } 1212 jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, 1213 jmethodID methodID, va_list args) { 1214 return functions->CallNonvirtualLongMethodV(this,obj,clazz, 1215 methodID,args); 1216 } 1217 jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, 1218 jmethodID methodID, const jvalue * args) { 1219 return functions->CallNonvirtualLongMethodA(this,obj,clazz, 1220 methodID,args); 1221 } 1222 1223 jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, 1224 jmethodID methodID, ...) { 1225 va_list args; 1226 jfloat result; 1227 va_start(args,methodID); 1228 result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1229 methodID,args); 1230 va_end(args); 1231 return result; 1232 } 1233 jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, 1234 jmethodID methodID, 1235 va_list args) { 1236 return functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1237 methodID,args); 1238 } 1239 jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, 1240 jmethodID methodID, 1241 const jvalue * args) { 1242 return functions->CallNonvirtualFloatMethodA(this,obj,clazz, 1243 methodID,args); 1244 } 1245 1246 jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, 1247 jmethodID methodID, ...) { 1248 va_list args; 1249 jdouble result; 1250 va_start(args,methodID); 1251 result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1252 methodID,args); 1253 va_end(args); 1254 return result; 1255 } 1256 jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, 1257 jmethodID methodID, 1258 va_list args) { 1259 return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1260 methodID,args); 1261 } 1262 jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, 1263 jmethodID methodID, 1264 const jvalue * args) { 1265 return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, 1266 methodID,args); 1267 } 1268 1269 void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 1270 jmethodID methodID, ...) { 1271 va_list args; 1272 va_start(args,methodID); 1273 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1274 va_end(args); 1275 } 1276 void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 1277 jmethodID methodID, 1278 va_list args) { 1279 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1280 } 1281 void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 1282 jmethodID methodID, 1283 const jvalue * args) { 1284 functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); 1285 } 1286 1287 jfieldID GetFieldID(jclass clazz, const char *name, 1288 const char *sig) { 1289 return functions->GetFieldID(this,clazz,name,sig); 1290 } 1291 1292 jobject GetObjectField(jobject obj, jfieldID fieldID) { 1293 return functions->GetObjectField(this,obj,fieldID); 1294 } 1295 jboolean GetBooleanField(jobject obj, jfieldID fieldID) { 1296 return functions->GetBooleanField(this,obj,fieldID); 1297 } 1298 jbyte GetByteField(jobject obj, jfieldID fieldID) { 1299 return functions->GetByteField(this,obj,fieldID); 1300 } 1301 jchar GetCharField(jobject obj, jfieldID fieldID) { 1302 return functions->GetCharField(this,obj,fieldID); 1303 } 1304 jshort GetShortField(jobject obj, jfieldID fieldID) { 1305 return functions->GetShortField(this,obj,fieldID); 1306 } 1307 jint GetIntField(jobject obj, jfieldID fieldID) { 1308 return functions->GetIntField(this,obj,fieldID); 1309 } 1310 jlong GetLongField(jobject obj, jfieldID fieldID) { 1311 return functions->GetLongField(this,obj,fieldID); 1312 } 1313 jfloat GetFloatField(jobject obj, jfieldID fieldID) { 1314 return functions->GetFloatField(this,obj,fieldID); 1315 } 1316 jdouble GetDoubleField(jobject obj, jfieldID fieldID) { 1317 return functions->GetDoubleField(this,obj,fieldID); 1318 } 1319 1320 void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { 1321 functions->SetObjectField(this,obj,fieldID,val); 1322 } 1323 void SetBooleanField(jobject obj, jfieldID fieldID, 1324 jboolean val) { 1325 functions->SetBooleanField(this,obj,fieldID,val); 1326 } 1327 void SetByteField(jobject obj, jfieldID fieldID, 1328 jbyte val) { 1329 functions->SetByteField(this,obj,fieldID,val); 1330 } 1331 void SetCharField(jobject obj, jfieldID fieldID, 1332 jchar val) { 1333 functions->SetCharField(this,obj,fieldID,val); 1334 } 1335 void SetShortField(jobject obj, jfieldID fieldID, 1336 jshort val) { 1337 functions->SetShortField(this,obj,fieldID,val); 1338 } 1339 void SetIntField(jobject obj, jfieldID fieldID, 1340 jint val) { 1341 functions->SetIntField(this,obj,fieldID,val); 1342 } 1343 void SetLongField(jobject obj, jfieldID fieldID, 1344 jlong val) { 1345 functions->SetLongField(this,obj,fieldID,val); 1346 } 1347 void SetFloatField(jobject obj, jfieldID fieldID, 1348 jfloat val) { 1349 functions->SetFloatField(this,obj,fieldID,val); 1350 } 1351 void SetDoubleField(jobject obj, jfieldID fieldID, 1352 jdouble val) { 1353 functions->SetDoubleField(this,obj,fieldID,val); 1354 } 1355 1356 jmethodID GetStaticMethodID(jclass clazz, const char *name, 1357 const char *sig) { 1358 return functions->GetStaticMethodID(this,clazz,name,sig); 1359 } 1360 1361 jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, 1362 ...) { 1363 va_list args; 1364 jobject result; 1365 va_start(args,methodID); 1366 result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1367 va_end(args); 1368 return result; 1369 } 1370 jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, 1371 va_list args) { 1372 return functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1373 } 1374 jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, 1375 const jvalue *args) { 1376 return functions->CallStaticObjectMethodA(this,clazz,methodID,args); 1377 } 1378 1379 jboolean CallStaticBooleanMethod(jclass clazz, 1380 jmethodID methodID, ...) { 1381 va_list args; 1382 jboolean result; 1383 va_start(args,methodID); 1384 result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1385 va_end(args); 1386 return result; 1387 } 1388 jboolean CallStaticBooleanMethodV(jclass clazz, 1389 jmethodID methodID, va_list args) { 1390 return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1391 } 1392 jboolean CallStaticBooleanMethodA(jclass clazz, 1393 jmethodID methodID, const jvalue *args) { 1394 return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); 1395 } 1396 1397 jbyte CallStaticByteMethod(jclass clazz, 1398 jmethodID methodID, ...) { 1399 va_list args; 1400 jbyte result; 1401 va_start(args,methodID); 1402 result = functions->CallStaticByteMethodV(this,clazz,methodID,args); 1403 va_end(args); 1404 return result; 1405 } 1406 jbyte CallStaticByteMethodV(jclass clazz, 1407 jmethodID methodID, va_list args) { 1408 return functions->CallStaticByteMethodV(this,clazz,methodID,args); 1409 } 1410 jbyte CallStaticByteMethodA(jclass clazz, 1411 jmethodID methodID, const jvalue *args) { 1412 return functions->CallStaticByteMethodA(this,clazz,methodID,args); 1413 } 1414 1415 jchar CallStaticCharMethod(jclass clazz, 1416 jmethodID methodID, ...) { 1417 va_list args; 1418 jchar result; 1419 va_start(args,methodID); 1420 result = functions->CallStaticCharMethodV(this,clazz,methodID,args); 1421 va_end(args); 1422 return result; 1423 } 1424 jchar CallStaticCharMethodV(jclass clazz, 1425 jmethodID methodID, va_list args) { 1426 return functions->CallStaticCharMethodV(this,clazz,methodID,args); 1427 } 1428 jchar CallStaticCharMethodA(jclass clazz, 1429 jmethodID methodID, const jvalue *args) { 1430 return functions->CallStaticCharMethodA(this,clazz,methodID,args); 1431 } 1432 1433 jshort CallStaticShortMethod(jclass clazz, 1434 jmethodID methodID, ...) { 1435 va_list args; 1436 jshort result; 1437 va_start(args,methodID); 1438 result = functions->CallStaticShortMethodV(this,clazz,methodID,args); 1439 va_end(args); 1440 return result; 1441 } 1442 jshort CallStaticShortMethodV(jclass clazz, 1443 jmethodID methodID, va_list args) { 1444 return functions->CallStaticShortMethodV(this,clazz,methodID,args); 1445 } 1446 jshort CallStaticShortMethodA(jclass clazz, 1447 jmethodID methodID, const jvalue *args) { 1448 return functions->CallStaticShortMethodA(this,clazz,methodID,args); 1449 } 1450 1451 jint CallStaticIntMethod(jclass clazz, 1452 jmethodID methodID, ...) { 1453 va_list args; 1454 jint result; 1455 va_start(args,methodID); 1456 result = functions->CallStaticIntMethodV(this,clazz,methodID,args); 1457 va_end(args); 1458 return result; 1459 } 1460 jint CallStaticIntMethodV(jclass clazz, 1461 jmethodID methodID, va_list args) { 1462 return functions->CallStaticIntMethodV(this,clazz,methodID,args); 1463 } 1464 jint CallStaticIntMethodA(jclass clazz, 1465 jmethodID methodID, const jvalue *args) { 1466 return functions->CallStaticIntMethodA(this,clazz,methodID,args); 1467 } 1468 1469 jlong CallStaticLongMethod(jclass clazz, 1470 jmethodID methodID, ...) { 1471 va_list args; 1472 jlong result; 1473 va_start(args,methodID); 1474 result = functions->CallStaticLongMethodV(this,clazz,methodID,args); 1475 va_end(args); 1476 return result; 1477 } 1478 jlong CallStaticLongMethodV(jclass clazz, 1479 jmethodID methodID, va_list args) { 1480 return functions->CallStaticLongMethodV(this,clazz,methodID,args); 1481 } 1482 jlong CallStaticLongMethodA(jclass clazz, 1483 jmethodID methodID, const jvalue *args) { 1484 return functions->CallStaticLongMethodA(this,clazz,methodID,args); 1485 } 1486 1487 jfloat CallStaticFloatMethod(jclass clazz, 1488 jmethodID methodID, ...) { 1489 va_list args; 1490 jfloat result; 1491 va_start(args,methodID); 1492 result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1493 va_end(args); 1494 return result; 1495 } 1496 jfloat CallStaticFloatMethodV(jclass clazz, 1497 jmethodID methodID, va_list args) { 1498 return functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1499 } 1500 jfloat CallStaticFloatMethodA(jclass clazz, 1501 jmethodID methodID, const jvalue *args) { 1502 return functions->CallStaticFloatMethodA(this,clazz,methodID,args); 1503 } 1504 1505 jdouble CallStaticDoubleMethod(jclass clazz, 1506 jmethodID methodID, ...) { 1507 va_list args; 1508 jdouble result; 1509 va_start(args,methodID); 1510 result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1511 va_end(args); 1512 return result; 1513 } 1514 jdouble CallStaticDoubleMethodV(jclass clazz, 1515 jmethodID methodID, va_list args) { 1516 return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1517 } 1518 jdouble CallStaticDoubleMethodA(jclass clazz, 1519 jmethodID methodID, const jvalue *args) { 1520 return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); 1521 } 1522 1523 void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { 1524 va_list args; 1525 va_start(args,methodID); 1526 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1527 va_end(args); 1528 } 1529 void CallStaticVoidMethodV(jclass cls, jmethodID methodID, 1530 va_list args) { 1531 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1532 } 1533 void CallStaticVoidMethodA(jclass cls, jmethodID methodID, 1534 const jvalue * args) { 1535 functions->CallStaticVoidMethodA(this,cls,methodID,args); 1536 } 1537 1538 jfieldID GetStaticFieldID(jclass clazz, const char *name, 1539 const char *sig) { 1540 return functions->GetStaticFieldID(this,clazz,name,sig); 1541 } 1542 jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { 1543 return functions->GetStaticObjectField(this,clazz,fieldID); 1544 } 1545 jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { 1546 return functions->GetStaticBooleanField(this,clazz,fieldID); 1547 } 1548 jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { 1549 return functions->GetStaticByteField(this,clazz,fieldID); 1550 } 1551 jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { 1552 return functions->GetStaticCharField(this,clazz,fieldID); 1553 } 1554 jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { 1555 return functions->GetStaticShortField(this,clazz,fieldID); 1556 } 1557 jint GetStaticIntField(jclass clazz, jfieldID fieldID) { 1558 return functions->GetStaticIntField(this,clazz,fieldID); 1559 } 1560 jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { 1561 return functions->GetStaticLongField(this,clazz,fieldID); 1562 } 1563 jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { 1564 return functions->GetStaticFloatField(this,clazz,fieldID); 1565 } 1566 jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { 1567 return functions->GetStaticDoubleField(this,clazz,fieldID); 1568 } 1569 1570 void SetStaticObjectField(jclass clazz, jfieldID fieldID, 1571 jobject value) { 1572 functions->SetStaticObjectField(this,clazz,fieldID,value); 1573 } 1574 void SetStaticBooleanField(jclass clazz, jfieldID fieldID, 1575 jboolean value) { 1576 functions->SetStaticBooleanField(this,clazz,fieldID,value); 1577 } 1578 void SetStaticByteField(jclass clazz, jfieldID fieldID, 1579 jbyte value) { 1580 functions->SetStaticByteField(this,clazz,fieldID,value); 1581 } 1582 void SetStaticCharField(jclass clazz, jfieldID fieldID, 1583 jchar value) { 1584 functions->SetStaticCharField(this,clazz,fieldID,value); 1585 } 1586 void SetStaticShortField(jclass clazz, jfieldID fieldID, 1587 jshort value) { 1588 functions->SetStaticShortField(this,clazz,fieldID,value); 1589 } 1590 void SetStaticIntField(jclass clazz, jfieldID fieldID, 1591 jint value) { 1592 functions->SetStaticIntField(this,clazz,fieldID,value); 1593 } 1594 void SetStaticLongField(jclass clazz, jfieldID fieldID, 1595 jlong value) { 1596 functions->SetStaticLongField(this,clazz,fieldID,value); 1597 } 1598 void SetStaticFloatField(jclass clazz, jfieldID fieldID, 1599 jfloat value) { 1600 functions->SetStaticFloatField(this,clazz,fieldID,value); 1601 } 1602 void SetStaticDoubleField(jclass clazz, jfieldID fieldID, 1603 jdouble value) { 1604 functions->SetStaticDoubleField(this,clazz,fieldID,value); 1605 } 1606 1607 jstring NewString(const jchar *unicode, jsize len) { 1608 return functions->NewString(this,unicode,len); 1609 } 1610 jsize GetStringLength(jstring str) { 1611 return functions->GetStringLength(this,str); 1612 } 1613 const jchar *GetStringChars(jstring str, jboolean *isCopy) { 1614 return functions->GetStringChars(this,str,isCopy); 1615 } 1616 void ReleaseStringChars(jstring str, const jchar *chars) { 1617 functions->ReleaseStringChars(this,str,chars); 1618 } 1619 1620 jstring NewStringUTF(const char *utf) { 1621 return functions->NewStringUTF(this,utf); 1622 } 1623 jsize GetStringUTFLength(jstring str) { 1624 return functions->GetStringUTFLength(this,str); 1625 } 1626 const char* GetStringUTFChars(jstring str, jboolean *isCopy) { 1627 return functions->GetStringUTFChars(this,str,isCopy); 1628 } 1629 void ReleaseStringUTFChars(jstring str, const char* chars) { 1630 functions->ReleaseStringUTFChars(this,str,chars); 1631 } 1632 1633 jsize GetArrayLength(jarray array) { 1634 return functions->GetArrayLength(this,array); 1635 } 1636 1637 jobjectArray NewObjectArray(jsize len, jclass clazz, 1638 jobject init) { 1639 return functions->NewObjectArray(this,len,clazz,init); 1640 } 1641 jobject GetObjectArrayElement(jobjectArray array, jsize index) { 1642 return functions->GetObjectArrayElement(this,array,index); 1643 } 1644 void SetObjectArrayElement(jobjectArray array, jsize index, 1645 jobject val) { 1646 functions->SetObjectArrayElement(this,array,index,val); 1647 } 1648 1649 jbooleanArray NewBooleanArray(jsize len) { 1650 return functions->NewBooleanArray(this,len); 1651 } 1652 jbyteArray NewByteArray(jsize len) { 1653 return functions->NewByteArray(this,len); 1654 } 1655 jcharArray NewCharArray(jsize len) { 1656 return functions->NewCharArray(this,len); 1657 } 1658 jshortArray NewShortArray(jsize len) { 1659 return functions->NewShortArray(this,len); 1660 } 1661 jintArray NewIntArray(jsize len) { 1662 return functions->NewIntArray(this,len); 1663 } 1664 jlongArray NewLongArray(jsize len) { 1665 return functions->NewLongArray(this,len); 1666 } 1667 jfloatArray NewFloatArray(jsize len) { 1668 return functions->NewFloatArray(this,len); 1669 } 1670 jdoubleArray NewDoubleArray(jsize len) { 1671 return functions->NewDoubleArray(this,len); 1672 } 1673 1674 jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { 1675 return functions->GetBooleanArrayElements(this,array,isCopy); 1676 } 1677 jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { 1678 return functions->GetByteArrayElements(this,array,isCopy); 1679 } 1680 jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { 1681 return functions->GetCharArrayElements(this,array,isCopy); 1682 } 1683 jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { 1684 return functions->GetShortArrayElements(this,array,isCopy); 1685 } 1686 jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { 1687 return functions->GetIntArrayElements(this,array,isCopy); 1688 } 1689 jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { 1690 return functions->GetLongArrayElements(this,array,isCopy); 1691 } 1692 jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { 1693 return functions->GetFloatArrayElements(this,array,isCopy); 1694 } 1695 jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { 1696 return functions->GetDoubleArrayElements(this,array,isCopy); 1697 } 1698 1699 void ReleaseBooleanArrayElements(jbooleanArray array, 1700 jboolean *elems, 1701 jint mode) { 1702 functions->ReleaseBooleanArrayElements(this,array,elems,mode); 1703 } 1704 void ReleaseByteArrayElements(jbyteArray array, 1705 jbyte *elems, 1706 jint mode) { 1707 functions->ReleaseByteArrayElements(this,array,elems,mode); 1708 } 1709 void ReleaseCharArrayElements(jcharArray array, 1710 jchar *elems, 1711 jint mode) { 1712 functions->ReleaseCharArrayElements(this,array,elems,mode); 1713 } 1714 void ReleaseShortArrayElements(jshortArray array, 1715 jshort *elems, 1716 jint mode) { 1717 functions->ReleaseShortArrayElements(this,array,elems,mode); 1718 } 1719 void ReleaseIntArrayElements(jintArray array, 1720 jint *elems, 1721 jint mode) { 1722 functions->ReleaseIntArrayElements(this,array,elems,mode); 1723 } 1724 void ReleaseLongArrayElements(jlongArray array, 1725 jlong *elems, 1726 jint mode) { 1727 functions->ReleaseLongArrayElements(this,array,elems,mode); 1728 } 1729 void ReleaseFloatArrayElements(jfloatArray array, 1730 jfloat *elems, 1731 jint mode) { 1732 functions->ReleaseFloatArrayElements(this,array,elems,mode); 1733 } 1734 void ReleaseDoubleArrayElements(jdoubleArray array, 1735 jdouble *elems, 1736 jint mode) { 1737 functions->ReleaseDoubleArrayElements(this,array,elems,mode); 1738 } 1739 1740 void GetBooleanArrayRegion(jbooleanArray array, 1741 jsize start, jsize len, jboolean *buf) { 1742 functions->GetBooleanArrayRegion(this,array,start,len,buf); 1743 } 1744 void GetByteArrayRegion(jbyteArray array, 1745 jsize start, jsize len, jbyte *buf) { 1746 functions->GetByteArrayRegion(this,array,start,len,buf); 1747 } 1748 void GetCharArrayRegion(jcharArray array, 1749 jsize start, jsize len, jchar *buf) { 1750 functions->GetCharArrayRegion(this,array,start,len,buf); 1751 } 1752 void GetShortArrayRegion(jshortArray array, 1753 jsize start, jsize len, jshort *buf) { 1754 functions->GetShortArrayRegion(this,array,start,len,buf); 1755 } 1756 void GetIntArrayRegion(jintArray array, 1757 jsize start, jsize len, jint *buf) { 1758 functions->GetIntArrayRegion(this,array,start,len,buf); 1759 } 1760 void GetLongArrayRegion(jlongArray array, 1761 jsize start, jsize len, jlong *buf) { 1762 functions->GetLongArrayRegion(this,array,start,len,buf); 1763 } 1764 void GetFloatArrayRegion(jfloatArray array, 1765 jsize start, jsize len, jfloat *buf) { 1766 functions->GetFloatArrayRegion(this,array,start,len,buf); 1767 } 1768 void GetDoubleArrayRegion(jdoubleArray array, 1769 jsize start, jsize len, jdouble *buf) { 1770 functions->GetDoubleArrayRegion(this,array,start,len,buf); 1771 } 1772 1773 void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 1774 const jboolean *buf) { 1775 functions->SetBooleanArrayRegion(this,array,start,len,buf); 1776 } 1777 void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 1778 const jbyte *buf) { 1779 functions->SetByteArrayRegion(this,array,start,len,buf); 1780 } 1781 void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 1782 const jchar *buf) { 1783 functions->SetCharArrayRegion(this,array,start,len,buf); 1784 } 1785 void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 1786 const jshort *buf) { 1787 functions->SetShortArrayRegion(this,array,start,len,buf); 1788 } 1789 void SetIntArrayRegion(jintArray array, jsize start, jsize len, 1790 const jint *buf) { 1791 functions->SetIntArrayRegion(this,array,start,len,buf); 1792 } 1793 void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 1794 const jlong *buf) { 1795 functions->SetLongArrayRegion(this,array,start,len,buf); 1796 } 1797 void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 1798 const jfloat *buf) { 1799 functions->SetFloatArrayRegion(this,array,start,len,buf); 1800 } 1801 void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 1802 const jdouble *buf) { 1803 functions->SetDoubleArrayRegion(this,array,start,len,buf); 1804 } 1805 1806 jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, 1807 jint nMethods) { 1808 return functions->RegisterNatives(this,clazz,methods,nMethods); 1809 } 1810 jint UnregisterNatives(jclass clazz) { 1811 return functions->UnregisterNatives(this,clazz); 1812 } 1813 1814 jint MonitorEnter(jobject obj) { 1815 return functions->MonitorEnter(this,obj); 1816 } 1817 jint MonitorExit(jobject obj) { 1818 return functions->MonitorExit(this,obj); 1819 } 1820 1821 jint GetJavaVM(JavaVM **vm) { 1822 return functions->GetJavaVM(this,vm); 1823 } 1824 1825 void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { 1826 functions->GetStringRegion(this,str,start,len,buf); 1827 } 1828 void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { 1829 functions->GetStringUTFRegion(this,str,start,len,buf); 1830 } 1831 1832 void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { 1833 return functions->GetPrimitiveArrayCritical(this,array,isCopy); 1834 } 1835 void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { 1836 functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); 1837 } 1838 1839 const jchar * GetStringCritical(jstring string, jboolean *isCopy) { 1840 return functions->GetStringCritical(this,string,isCopy); 1841 } 1842 void ReleaseStringCritical(jstring string, const jchar *cstring) { 1843 functions->ReleaseStringCritical(this,string,cstring); 1844 } 1845 1846 jweak NewWeakGlobalRef(jobject obj) { 1847 return functions->NewWeakGlobalRef(this,obj); 1848 } 1849 void DeleteWeakGlobalRef(jweak ref) { 1850 functions->DeleteWeakGlobalRef(this,ref); 1851 } 1852 1853 jboolean ExceptionCheck() { 1854 return functions->ExceptionCheck(this); 1855 } 1856 1857 jobject NewDirectByteBuffer(void* address, jlong capacity) { 1858 return functions->NewDirectByteBuffer(this, address, capacity); 1859 } 1860 void* GetDirectBufferAddress(jobject buf) { 1861 return functions->GetDirectBufferAddress(this, buf); 1862 } 1863 jlong GetDirectBufferCapacity(jobject buf) { 1864 return functions->GetDirectBufferCapacity(this, buf); 1865 } 1866 jobjectRefType GetObjectRefType(jobject obj) { 1867 return functions->GetObjectRefType(this, obj); 1868 } 1869 1870 /* Module Features */ 1871 1872 jobject GetModule(jclass clazz) { 1873 return functions->GetModule(this, clazz); 1874 } 1875 1876 #endif /* __cplusplus */ 1877 }; 1878 1879 /* 1880 * optionString may be any option accepted by the JVM, or one of the 1881 * following: 1882 * 1883 * -D<name>=<value> Set a system property. 1884 * -verbose[:class|gc|jni] Enable verbose output, comma-separated. E.g. 1885 * "-verbose:class" or "-verbose:gc,class" 1886 * Standard names include: gc, class, and jni. 1887 * All nonstandard (VM-specific) names must begin 1888 * with "X". 1889 * vfprintf extraInfo is a pointer to the vfprintf hook. 1890 * exit extraInfo is a pointer to the exit hook. 1891 * abort extraInfo is a pointer to the abort hook. 1892 */ 1893 typedef struct JavaVMOption { 1894 char *optionString; 1895 void *extraInfo; 1896 } JavaVMOption; 1897 1898 typedef struct JavaVMInitArgs { 1899 jint version; 1900 1901 jint nOptions; 1902 JavaVMOption *options; 1903 jboolean ignoreUnrecognized; 1904 } JavaVMInitArgs; 1905 1906 typedef struct JavaVMAttachArgs { 1907 jint version; 1908 1909 char *name; 1910 jobject group; 1911 } JavaVMAttachArgs; 1912 1913 /* These will be VM-specific. */ 1914 1915 #define JDK1_2 1916 #define JDK1_4 1917 1918 /* End VM-specific. */ 1919 1920 struct JNIInvokeInterface_ { 1921 void *reserved0; 1922 void *reserved1; 1923 void *reserved2; 1924 1925 jint (JNICALL *DestroyJavaVM)(JavaVM *vm); 1926 1927 jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); 1928 1929 jint (JNICALL *DetachCurrentThread)(JavaVM *vm); 1930 1931 jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); 1932 1933 jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); 1934 }; 1935 1936 struct JavaVM_ { 1937 const struct JNIInvokeInterface_ *functions; 1938 #ifdef __cplusplus 1939 1940 jint DestroyJavaVM() { 1941 return functions->DestroyJavaVM(this); 1942 } 1943 jint AttachCurrentThread(void **penv, void *args) { 1944 return functions->AttachCurrentThread(this, penv, args); 1945 } 1946 jint DetachCurrentThread() { 1947 return functions->DetachCurrentThread(this); 1948 } 1949 1950 jint GetEnv(void **penv, jint version) { 1951 return functions->GetEnv(this, penv, version); 1952 } 1953 jint AttachCurrentThreadAsDaemon(void **penv, void *args) { 1954 return functions->AttachCurrentThreadAsDaemon(this, penv, args); 1955 } 1956 #endif 1957 }; 1958 1959 #ifdef _JNI_IMPLEMENTATION_ 1960 #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT 1961 #else 1962 #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT 1963 #endif 1964 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1965 JNI_GetDefaultJavaVMInitArgs(void *args); 1966 1967 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1968 JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); 1969 1970 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1971 JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); 1972 1973 /* Defined by native libraries. */ 1974 JNIEXPORT jint JNICALL 1975 JNI_OnLoad(JavaVM *vm, void *reserved); 1976 1977 JNIEXPORT void JNICALL 1978 JNI_OnUnload(JavaVM *vm, void *reserved); 1979 1980 #define JNI_VERSION_1_1 0x00010001 1981 #define JNI_VERSION_1_2 0x00010002 1982 #define JNI_VERSION_1_4 0x00010004 1983 #define JNI_VERSION_1_6 0x00010006 1984 #define JNI_VERSION_1_8 0x00010008 1985 #define JNI_VERSION_9 0x00090000 1986 #define JNI_VERSION_10 0x000a0000 1987 1988 #ifdef __cplusplus 1989 } /* extern "C" */ 1990 #endif /* __cplusplus */ 1991 1992 #endif /* !_JAVASOFT_JNI_H_ */