1 /* ***** BEGIN LICENSE BLOCK ***** 2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 3 * 4 * The contents of this file are subject to the Mozilla Public License Version 5 * 1.1 (the "License"); you may not use this file except in compliance with 6 * the License. You may obtain a copy of the License at 7 * http://www.mozilla.org/MPL/ 8 * 9 * Software distributed under the License is distributed on an "AS IS" basis, 10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 11 * for the specific language governing rights and limitations under the 12 * License. 13 * 14 * The Original Code is the Java Runtime Interface. 15 * 16 * The Initial Developer of the Original Code is 17 * Netscape Communications Corporation and Sun Microsystems, Inc. 18 * Portions created by the Initial Developer are Copyright (C) 1993-1996 19 * the Initial Developer. All Rights Reserved. 20 * 21 * Contributor(s): 22 * 23 * Alternatively, the contents of this file may be used under the terms of 24 * either the GNU General Public License Version 2 or later (the "GPL"), or 25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 26 * in which case the provisions of the GPL or the LGPL are applicable instead 27 * of those above. If you wish to allow use of your version of this file only 28 * under the terms of either the GPL or the LGPL, and not to allow others to 29 * use your version of this file under the terms of the MPL, indicate your 30 * decision by deleting the provisions above and replace them with the notice 31 * and other provisions required by the GPL or the LGPL. If you do not delete 32 * the provisions above, a recipient may use your version of this file under 33 * the terms of any one of the MPL, the GPL or the LGPL. 34 * 35 * ***** END LICENSE BLOCK ***** */ 36 37 #ifndef JNI_H 38 #define JNI_H 39 40 #include <stdio.h> 41 #include <stdarg.h> 42 43 /* jni_md.h contains the machine-dependent typedefs for jbyte, jint 44 and jlong */ 45 46 #include "jni_md.h" 47 48 #ifdef __cplusplus 49 extern "C" { 50 #endif 51 52 /* 53 * JNI Types 54 */ 55 56 typedef unsigned char jboolean; 57 typedef unsigned short jchar; 58 typedef short jshort; 59 typedef float jfloat; 60 typedef double jdouble; 61 62 typedef jint jsize; 63 64 #ifdef __cplusplus 65 66 class _jobject {}; 67 class _jclass : public _jobject {}; 68 class _jthrowable : public _jobject {}; 69 class _jstring : public _jobject {}; 70 class _jarray : public _jobject {}; 71 class _jbooleanArray : public _jarray {}; 72 class _jbyteArray : public _jarray {}; 73 class _jcharArray : public _jarray {}; 74 class _jshortArray : public _jarray {}; 75 class _jintArray : public _jarray {}; 76 class _jlongArray : public _jarray {}; 77 class _jfloatArray : public _jarray {}; 78 class _jdoubleArray : public _jarray {}; 79 class _jobjectArray : public _jarray {}; 80 81 typedef _jobject *jobject; 82 typedef _jclass *jclass; 83 typedef _jthrowable *jthrowable; 84 typedef _jstring *jstring; 85 typedef _jarray *jarray; 86 typedef _jbooleanArray *jbooleanArray; 87 typedef _jbyteArray *jbyteArray; 88 typedef _jcharArray *jcharArray; 89 typedef _jshortArray *jshortArray; 90 typedef _jintArray *jintArray; 91 typedef _jlongArray *jlongArray; 92 typedef _jfloatArray *jfloatArray; 93 typedef _jdoubleArray *jdoubleArray; 94 typedef _jobjectArray *jobjectArray; 95 96 #else 97 98 struct _jobject; 99 100 typedef struct _jobject *jobject; 101 typedef jobject jclass; 102 typedef jobject jthrowable; 103 typedef jobject jstring; 104 typedef jobject jarray; 105 typedef jarray jbooleanArray; 106 typedef jarray jbyteArray; 107 typedef jarray jcharArray; 108 typedef jarray jshortArray; 109 typedef jarray jintArray; 110 typedef jarray jlongArray; 111 typedef jarray jfloatArray; 112 typedef jarray jdoubleArray; 113 typedef jarray jobjectArray; 114 115 #endif 116 117 #if 0 /* moved to jri_md.h */ 118 typedef jobject jref; /* For transition---not meant to be part of public 119 API anymore.*/ 120 #endif 121 122 typedef union jvalue { 123 jboolean z; 124 jbyte b; 125 jchar c; 126 jshort s; 127 jint i; 128 jlong j; 129 jfloat f; 130 jdouble d; 131 jobject l; 132 } jvalue; 133 134 struct _jfieldID; 135 typedef struct _jfieldID *jfieldID; 136 137 struct _jmethodID; 138 typedef struct _jmethodID *jmethodID; 139 140 /* 141 * jboolean constants 142 */ 143 144 #define JNI_FALSE 0 145 #define JNI_TRUE 1 146 147 /* 148 * possible return values for JNI functions. 149 */ 150 151 #define JNI_OK 0 152 #define JNI_ERR (-1) 153 154 /* 155 * used in ReleaseScalarArrayElements 156 */ 157 158 #define JNI_COMMIT 1 159 #define JNI_ABORT 2 160 161 /* 162 * used in RegisterNatives to describe native method name, signature, 163 * and function pointer. 164 */ 165 166 typedef struct { 167 char *name; 168 char *signature; 169 void *fnPtr; 170 } JNINativeMethod; 171 172 /* 173 * JNI Native Method Interface. 174 */ 175 176 struct JNINativeInterface_; 177 178 struct JNIEnv_; 179 180 #ifdef __cplusplus 181 typedef JNIEnv_ JNIEnv; 182 #else 183 typedef const struct JNINativeInterface_ *JNIEnv; 184 #endif 185 186 /* 187 * JNI Invocation Interface. 188 */ 189 190 struct JNIInvokeInterface_; 191 192 struct JavaVM_; 193 194 #ifdef __cplusplus 195 typedef JavaVM_ JavaVM; 196 #else 197 typedef const struct JNIInvokeInterface_ *JavaVM; 198 #endif 199 200 struct JNINativeInterface_ { 201 void *reserved0; 202 void *reserved1; 203 void *reserved2; 204 205 void *reserved3; 206 jint (JNICALL *GetVersion)(JNIEnv *env); 207 208 jclass (JNICALL *DefineClass) 209 (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, 210 jsize len); 211 jclass (JNICALL *FindClass) 212 (JNIEnv *env, const char *name); 213 214 void *reserved4; 215 void *reserved5; 216 void *reserved6; 217 218 jclass (JNICALL *GetSuperclass) 219 (JNIEnv *env, jclass sub); 220 jboolean (JNICALL *IsAssignableFrom) 221 (JNIEnv *env, jclass sub, jclass sup); 222 void *reserved7; 223 224 225 jint (JNICALL *Throw) 226 (JNIEnv *env, jthrowable obj); 227 jint (JNICALL *ThrowNew) 228 (JNIEnv *env, jclass clazz, const char *msg); 229 jthrowable (JNICALL *ExceptionOccurred) 230 (JNIEnv *env); 231 void (JNICALL *ExceptionDescribe) 232 (JNIEnv *env); 233 void (JNICALL *ExceptionClear) 234 (JNIEnv *env); 235 void (JNICALL *FatalError) 236 (JNIEnv *env, const char *msg); 237 void *reserved8; 238 void *reserved9; 239 240 jobject (JNICALL *NewGlobalRef) 241 (JNIEnv *env, jobject lobj); 242 void (JNICALL *DeleteGlobalRef) 243 (JNIEnv *env, jobject gref); 244 void (JNICALL *DeleteLocalRef) 245 (JNIEnv *env, jobject obj); 246 jboolean (JNICALL *IsSameObject) 247 (JNIEnv *env, jobject obj1, jobject obj2); 248 void *reserved10; 249 void *reserved11; 250 251 jobject (JNICALL *AllocObject) 252 (JNIEnv *env, jclass clazz); 253 jobject (JNICALL *NewObject) 254 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 255 jobject (JNICALL *NewObjectV) 256 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 257 jobject (JNICALL *NewObjectA) 258 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 259 260 jclass (JNICALL *GetObjectClass) 261 (JNIEnv *env, jobject obj); 262 jboolean (JNICALL *IsInstanceOf) 263 (JNIEnv *env, jobject obj, jclass clazz); 264 265 jmethodID (JNICALL *GetMethodID) 266 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 267 268 jobject (JNICALL *CallObjectMethod) 269 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 270 jobject (JNICALL *CallObjectMethodV) 271 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 272 jobject (JNICALL *CallObjectMethodA) 273 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 274 275 jboolean (JNICALL *CallBooleanMethod) 276 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 277 jboolean (JNICALL *CallBooleanMethodV) 278 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 279 jboolean (JNICALL *CallBooleanMethodA) 280 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 281 282 jbyte (JNICALL *CallByteMethod) 283 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 284 jbyte (JNICALL *CallByteMethodV) 285 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 286 jbyte (JNICALL *CallByteMethodA) 287 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 288 289 jchar (JNICALL *CallCharMethod) 290 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 291 jchar (JNICALL *CallCharMethodV) 292 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 293 jchar (JNICALL *CallCharMethodA) 294 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 295 296 jshort (JNICALL *CallShortMethod) 297 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 298 jshort (JNICALL *CallShortMethodV) 299 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 300 jshort (JNICALL *CallShortMethodA) 301 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 302 303 jint (JNICALL *CallIntMethod) 304 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 305 jint (JNICALL *CallIntMethodV) 306 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 307 jint (JNICALL *CallIntMethodA) 308 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 309 310 jlong (JNICALL *CallLongMethod) 311 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 312 jlong (JNICALL *CallLongMethodV) 313 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 314 jlong (JNICALL *CallLongMethodA) 315 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 316 317 jfloat (JNICALL *CallFloatMethod) 318 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 319 jfloat (JNICALL *CallFloatMethodV) 320 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 321 jfloat (JNICALL *CallFloatMethodA) 322 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 323 324 jdouble (JNICALL *CallDoubleMethod) 325 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 326 jdouble (JNICALL *CallDoubleMethodV) 327 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 328 jdouble (JNICALL *CallDoubleMethodA) 329 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 330 331 void (JNICALL *CallVoidMethod) 332 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 333 void (JNICALL *CallVoidMethodV) 334 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 335 void (JNICALL *CallVoidMethodA) 336 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 337 338 jobject (JNICALL *CallNonvirtualObjectMethod) 339 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 340 jobject (JNICALL *CallNonvirtualObjectMethodV) 341 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 342 va_list args); 343 jobject (JNICALL *CallNonvirtualObjectMethodA) 344 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 345 jvalue * args); 346 347 jboolean (JNICALL *CallNonvirtualBooleanMethod) 348 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 349 jboolean (JNICALL *CallNonvirtualBooleanMethodV) 350 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 351 va_list args); 352 jboolean (JNICALL *CallNonvirtualBooleanMethodA) 353 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 354 jvalue * args); 355 356 jbyte (JNICALL *CallNonvirtualByteMethod) 357 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 358 jbyte (JNICALL *CallNonvirtualByteMethodV) 359 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 360 va_list args); 361 jbyte (JNICALL *CallNonvirtualByteMethodA) 362 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 363 jvalue *args); 364 365 jchar (JNICALL *CallNonvirtualCharMethod) 366 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 367 jchar (JNICALL *CallNonvirtualCharMethodV) 368 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 369 va_list args); 370 jchar (JNICALL *CallNonvirtualCharMethodA) 371 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 372 jvalue *args); 373 374 jshort (JNICALL *CallNonvirtualShortMethod) 375 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 376 jshort (JNICALL *CallNonvirtualShortMethodV) 377 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 378 va_list args); 379 jshort (JNICALL *CallNonvirtualShortMethodA) 380 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 381 jvalue *args); 382 383 jint (JNICALL *CallNonvirtualIntMethod) 384 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 385 jint (JNICALL *CallNonvirtualIntMethodV) 386 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 387 va_list args); 388 jint (JNICALL *CallNonvirtualIntMethodA) 389 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 390 jvalue *args); 391 392 jlong (JNICALL *CallNonvirtualLongMethod) 393 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 394 jlong (JNICALL *CallNonvirtualLongMethodV) 395 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 396 va_list args); 397 jlong (JNICALL *CallNonvirtualLongMethodA) 398 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 399 jvalue *args); 400 401 jfloat (JNICALL *CallNonvirtualFloatMethod) 402 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 403 jfloat (JNICALL *CallNonvirtualFloatMethodV) 404 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 405 va_list args); 406 jfloat (JNICALL *CallNonvirtualFloatMethodA) 407 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 408 jvalue *args); 409 410 jdouble (JNICALL *CallNonvirtualDoubleMethod) 411 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 412 jdouble (JNICALL *CallNonvirtualDoubleMethodV) 413 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 414 va_list args); 415 jdouble (JNICALL *CallNonvirtualDoubleMethodA) 416 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 417 jvalue *args); 418 419 void (JNICALL *CallNonvirtualVoidMethod) 420 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 421 void (JNICALL *CallNonvirtualVoidMethodV) 422 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 423 va_list args); 424 void (JNICALL *CallNonvirtualVoidMethodA) 425 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 426 jvalue * args); 427 428 jfieldID (JNICALL *GetFieldID) 429 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 430 431 jobject (JNICALL *GetObjectField) 432 (JNIEnv *env, jobject obj, jfieldID fieldID); 433 jboolean (JNICALL *GetBooleanField) 434 (JNIEnv *env, jobject obj, jfieldID fieldID); 435 jbyte (JNICALL *GetByteField) 436 (JNIEnv *env, jobject obj, jfieldID fieldID); 437 jchar (JNICALL *GetCharField) 438 (JNIEnv *env, jobject obj, jfieldID fieldID); 439 jshort (JNICALL *GetShortField) 440 (JNIEnv *env, jobject obj, jfieldID fieldID); 441 jint (JNICALL *GetIntField) 442 (JNIEnv *env, jobject obj, jfieldID fieldID); 443 jlong (JNICALL *GetLongField) 444 (JNIEnv *env, jobject obj, jfieldID fieldID); 445 jfloat (JNICALL *GetFloatField) 446 (JNIEnv *env, jobject obj, jfieldID fieldID); 447 jdouble (JNICALL *GetDoubleField) 448 (JNIEnv *env, jobject obj, jfieldID fieldID); 449 450 void (JNICALL *SetObjectField) 451 (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); 452 void (JNICALL *SetBooleanField) 453 (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); 454 void (JNICALL *SetByteField) 455 (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); 456 void (JNICALL *SetCharField) 457 (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); 458 void (JNICALL *SetShortField) 459 (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); 460 void (JNICALL *SetIntField) 461 (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); 462 void (JNICALL *SetLongField) 463 (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); 464 void (JNICALL *SetFloatField) 465 (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); 466 void (JNICALL *SetDoubleField) 467 (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); 468 469 jmethodID (JNICALL *GetStaticMethodID) 470 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 471 472 jobject (JNICALL *CallStaticObjectMethod) 473 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 474 jobject (JNICALL *CallStaticObjectMethodV) 475 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 476 jobject (JNICALL *CallStaticObjectMethodA) 477 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 478 479 jboolean (JNICALL *CallStaticBooleanMethod) 480 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 481 jboolean (JNICALL *CallStaticBooleanMethodV) 482 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 483 jboolean (JNICALL *CallStaticBooleanMethodA) 484 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 485 486 jbyte (JNICALL *CallStaticByteMethod) 487 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 488 jbyte (JNICALL *CallStaticByteMethodV) 489 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 490 jbyte (JNICALL *CallStaticByteMethodA) 491 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 492 493 jchar (JNICALL *CallStaticCharMethod) 494 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 495 jchar (JNICALL *CallStaticCharMethodV) 496 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 497 jchar (JNICALL *CallStaticCharMethodA) 498 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 499 500 jshort (JNICALL *CallStaticShortMethod) 501 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 502 jshort (JNICALL *CallStaticShortMethodV) 503 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 504 jshort (JNICALL *CallStaticShortMethodA) 505 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 506 507 jint (JNICALL *CallStaticIntMethod) 508 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 509 jint (JNICALL *CallStaticIntMethodV) 510 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 511 jint (JNICALL *CallStaticIntMethodA) 512 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 513 514 jlong (JNICALL *CallStaticLongMethod) 515 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 516 jlong (JNICALL *CallStaticLongMethodV) 517 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 518 jlong (JNICALL *CallStaticLongMethodA) 519 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 520 521 jfloat (JNICALL *CallStaticFloatMethod) 522 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 523 jfloat (JNICALL *CallStaticFloatMethodV) 524 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 525 jfloat (JNICALL *CallStaticFloatMethodA) 526 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 527 528 jdouble (JNICALL *CallStaticDoubleMethod) 529 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 530 jdouble (JNICALL *CallStaticDoubleMethodV) 531 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 532 jdouble (JNICALL *CallStaticDoubleMethodA) 533 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 534 535 void (JNICALL *CallStaticVoidMethod) 536 (JNIEnv *env, jclass cls, jmethodID methodID, ...); 537 void (JNICALL *CallStaticVoidMethodV) 538 (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); 539 void (JNICALL *CallStaticVoidMethodA) 540 (JNIEnv *env, jclass cls, jmethodID methodID, jvalue * args); 541 542 jfieldID (JNICALL *GetStaticFieldID) 543 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 544 jobject (JNICALL *GetStaticObjectField) 545 (JNIEnv *env, jclass clazz, jfieldID fieldID); 546 jboolean (JNICALL *GetStaticBooleanField) 547 (JNIEnv *env, jclass clazz, jfieldID fieldID); 548 jbyte (JNICALL *GetStaticByteField) 549 (JNIEnv *env, jclass clazz, jfieldID fieldID); 550 jchar (JNICALL *GetStaticCharField) 551 (JNIEnv *env, jclass clazz, jfieldID fieldID); 552 jshort (JNICALL *GetStaticShortField) 553 (JNIEnv *env, jclass clazz, jfieldID fieldID); 554 jint (JNICALL *GetStaticIntField) 555 (JNIEnv *env, jclass clazz, jfieldID fieldID); 556 jlong (JNICALL *GetStaticLongField) 557 (JNIEnv *env, jclass clazz, jfieldID fieldID); 558 jfloat (JNICALL *GetStaticFloatField) 559 (JNIEnv *env, jclass clazz, jfieldID fieldID); 560 jdouble (JNICALL *GetStaticDoubleField) 561 (JNIEnv *env, jclass clazz, jfieldID fieldID); 562 563 void (JNICALL *SetStaticObjectField) 564 (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); 565 void (JNICALL *SetStaticBooleanField) 566 (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); 567 void (JNICALL *SetStaticByteField) 568 (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); 569 void (JNICALL *SetStaticCharField) 570 (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); 571 void (JNICALL *SetStaticShortField) 572 (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); 573 void (JNICALL *SetStaticIntField) 574 (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); 575 void (JNICALL *SetStaticLongField) 576 (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); 577 void (JNICALL *SetStaticFloatField) 578 (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); 579 void (JNICALL *SetStaticDoubleField) 580 (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); 581 582 jstring (JNICALL *NewString) 583 (JNIEnv *env, const jchar *unicode, jsize len); 584 jsize (JNICALL *GetStringLength) 585 (JNIEnv *env, jstring str); 586 const jchar *(JNICALL *GetStringChars) 587 (JNIEnv *env, jstring str, jboolean *isCopy); 588 void (JNICALL *ReleaseStringChars) 589 (JNIEnv *env, jstring str, const jchar *chars); 590 591 jstring (JNICALL *NewStringUTF) 592 (JNIEnv *env, const char *utf); 593 jsize (JNICALL *GetStringUTFLength) 594 (JNIEnv *env, jstring str); 595 const char* (JNICALL *GetStringUTFChars) 596 (JNIEnv *env, jstring str, jboolean *isCopy); 597 void (JNICALL *ReleaseStringUTFChars) 598 (JNIEnv *env, jstring str, const char* chars); 599 600 601 jsize (JNICALL *GetArrayLength) 602 (JNIEnv *env, jarray array); 603 604 jobjectArray (JNICALL *NewObjectArray) 605 (JNIEnv *env, jsize len, jclass clazz, jobject init); 606 jobject (JNICALL *GetObjectArrayElement) 607 (JNIEnv *env, jobjectArray array, jsize index); 608 void (JNICALL *SetObjectArrayElement) 609 (JNIEnv *env, jobjectArray array, jsize index, jobject val); 610 611 jbooleanArray (JNICALL *NewBooleanArray) 612 (JNIEnv *env, jsize len); 613 jbyteArray (JNICALL *NewByteArray) 614 (JNIEnv *env, jsize len); 615 jcharArray (JNICALL *NewCharArray) 616 (JNIEnv *env, jsize len); 617 jshortArray (JNICALL *NewShortArray) 618 (JNIEnv *env, jsize len); 619 jintArray (JNICALL *NewIntArray) 620 (JNIEnv *env, jsize len); 621 jlongArray (JNICALL *NewLongArray) 622 (JNIEnv *env, jsize len); 623 jfloatArray (JNICALL *NewFloatArray) 624 (JNIEnv *env, jsize len); 625 jdoubleArray (JNICALL *NewDoubleArray) 626 (JNIEnv *env, jsize len); 627 628 jboolean * (JNICALL *GetBooleanArrayElements) 629 (JNIEnv *env, jbooleanArray array, jboolean *isCopy); 630 jbyte * (JNICALL *GetByteArrayElements) 631 (JNIEnv *env, jbyteArray array, jboolean *isCopy); 632 jchar * (JNICALL *GetCharArrayElements) 633 (JNIEnv *env, jcharArray array, jboolean *isCopy); 634 jshort * (JNICALL *GetShortArrayElements) 635 (JNIEnv *env, jshortArray array, jboolean *isCopy); 636 jint * (JNICALL *GetIntArrayElements) 637 (JNIEnv *env, jintArray array, jboolean *isCopy); 638 jlong * (JNICALL *GetLongArrayElements) 639 (JNIEnv *env, jlongArray array, jboolean *isCopy); 640 jfloat * (JNICALL *GetFloatArrayElements) 641 (JNIEnv *env, jfloatArray array, jboolean *isCopy); 642 jdouble * (JNICALL *GetDoubleArrayElements) 643 (JNIEnv *env, jdoubleArray array, jboolean *isCopy); 644 645 void (JNICALL *ReleaseBooleanArrayElements) 646 (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); 647 void (JNICALL *ReleaseByteArrayElements) 648 (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); 649 void (JNICALL *ReleaseCharArrayElements) 650 (JNIEnv *env, jcharArray array, jchar *elems, jint mode); 651 void (JNICALL *ReleaseShortArrayElements) 652 (JNIEnv *env, jshortArray array, jshort *elems, jint mode); 653 void (JNICALL *ReleaseIntArrayElements) 654 (JNIEnv *env, jintArray array, jint *elems, jint mode); 655 void (JNICALL *ReleaseLongArrayElements) 656 (JNIEnv *env, jlongArray array, jlong *elems, jint mode); 657 void (JNICALL *ReleaseFloatArrayElements) 658 (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); 659 void (JNICALL *ReleaseDoubleArrayElements) 660 (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); 661 662 void (JNICALL *GetBooleanArrayRegion) 663 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 664 void (JNICALL *GetByteArrayRegion) 665 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 666 void (JNICALL *GetCharArrayRegion) 667 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 668 void (JNICALL *GetShortArrayRegion) 669 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 670 void (JNICALL *GetIntArrayRegion) 671 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 672 void (JNICALL *GetLongArrayRegion) 673 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 674 void (JNICALL *GetFloatArrayRegion) 675 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 676 void (JNICALL *GetDoubleArrayRegion) 677 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 678 679 void (JNICALL *SetBooleanArrayRegion) 680 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 681 void (JNICALL *SetByteArrayRegion) 682 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 683 void (JNICALL *SetCharArrayRegion) 684 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 685 void (JNICALL *SetShortArrayRegion) 686 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 687 void (JNICALL *SetIntArrayRegion) 688 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 689 void (JNICALL *SetLongArrayRegion) 690 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 691 void (JNICALL *SetFloatArrayRegion) 692 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 693 void (JNICALL *SetDoubleArrayRegion) 694 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 695 696 jint (JNICALL *RegisterNatives) 697 (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, 698 jint nMethods); 699 jint (JNICALL *UnregisterNatives) 700 (JNIEnv *env, jclass clazz); 701 702 jint (JNICALL *MonitorEnter) 703 (JNIEnv *env, jobject obj); 704 jint (JNICALL *MonitorExit) 705 (JNIEnv *env, jobject obj); 706 707 jint (JNICALL *GetJavaVM) 708 (JNIEnv *env, JavaVM **vm); 709 }; 710 711 /* 712 * We use inlined functions for C++ so that programmers can write: 713 * 714 * env->FindClass("java/lang/String") 715 * 716 * in C++ rather than: 717 * 718 * (*env)->FindClass(env, "java/lang/String") 719 * 720 * in C. 721 */ 722 723 struct JNIEnv_ { 724 const struct JNINativeInterface_ *functions; 725 void *reserved0; 726 void *reserved1[6]; 727 #ifdef __cplusplus 728 729 jint GetVersion() { 730 return functions->GetVersion(this); 731 } 732 jclass DefineClass(const char *name, jobject loader, const jbyte *buf, 733 jsize len) { 734 return functions->DefineClass(this, name, loader, buf, len); 735 } 736 jclass FindClass(const char *name) { 737 return functions->FindClass(this, name); 738 } 739 jclass GetSuperclass(jclass sub) { 740 return functions->GetSuperclass(this, sub); 741 } 742 jboolean IsAssignableFrom(jclass sub, jclass sup) { 743 return functions->IsAssignableFrom(this, sub, sup); 744 } 745 746 jint Throw(jthrowable obj) { 747 return functions->Throw(this, obj); 748 } 749 jint ThrowNew(jclass clazz, const char *msg) { 750 return functions->ThrowNew(this, clazz, msg); 751 } 752 jthrowable ExceptionOccurred() { 753 return functions->ExceptionOccurred(this); 754 } 755 void ExceptionDescribe() { 756 functions->ExceptionDescribe(this); 757 } 758 void ExceptionClear() { 759 functions->ExceptionClear(this); 760 } 761 void FatalError(const char *msg) { 762 functions->FatalError(this, msg); 763 } 764 765 jobject NewGlobalRef(jobject lobj) { 766 return functions->NewGlobalRef(this,lobj); 767 } 768 void DeleteGlobalRef(jobject gref) { 769 functions->DeleteGlobalRef(this,gref); 770 } 771 void DeleteLocalRef(jobject obj) { 772 functions->DeleteLocalRef(this, obj); 773 } 774 775 jboolean IsSameObject(jobject obj1, jobject obj2) { 776 return functions->IsSameObject(this,obj1,obj2); 777 } 778 779 jobject AllocObject(jclass clazz) { 780 return functions->AllocObject(this,clazz); 781 } 782 jobject NewObject(jclass clazz, jmethodID methodID, ...) { 783 va_list args; 784 jobject result; 785 va_start(args, methodID); 786 result = functions->NewObjectV(this,clazz,methodID,args); 787 va_end(args); 788 return result; 789 } 790 jobject NewObjectV(jclass clazz, jmethodID methodID, 791 va_list args) { 792 return functions->NewObjectV(this,clazz,methodID,args); 793 } 794 jobject NewObjectA(jclass clazz, jmethodID methodID, 795 jvalue *args) { 796 return functions->NewObjectA(this,clazz,methodID,args); 797 } 798 799 jclass GetObjectClass(jobject obj) { 800 return functions->GetObjectClass(this,obj); 801 } 802 jboolean IsInstanceOf(jobject obj, jclass clazz) { 803 return functions->IsInstanceOf(this,obj,clazz); 804 } 805 806 jmethodID GetMethodID(jclass clazz, const char *name, 807 const char *sig) { 808 return functions->GetMethodID(this,clazz,name,sig); 809 } 810 811 jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { 812 va_list args; 813 jobject result; 814 va_start(args,methodID); 815 result = functions->CallObjectMethodV(this,obj,methodID,args); 816 va_end(args); 817 return result; 818 } 819 jobject CallObjectMethodV(jobject obj, jmethodID methodID, 820 va_list args) { 821 return functions->CallObjectMethodV(this,obj,methodID,args); 822 } 823 jobject CallObjectMethodA(jobject obj, jmethodID methodID, 824 jvalue * args) { 825 return functions->CallObjectMethodA(this,obj,methodID,args); 826 } 827 828 jboolean CallBooleanMethod(jobject obj, 829 jmethodID methodID, ...) { 830 va_list args; 831 jboolean result; 832 va_start(args,methodID); 833 result = functions->CallBooleanMethodV(this,obj,methodID,args); 834 va_end(args); 835 return result; 836 } 837 jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, 838 va_list args) { 839 return functions->CallBooleanMethodV(this,obj,methodID,args); 840 } 841 jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, 842 jvalue * args) { 843 return functions->CallBooleanMethodA(this,obj,methodID, args); 844 } 845 846 jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { 847 va_list args; 848 jbyte result; 849 va_start(args,methodID); 850 result = functions->CallByteMethodV(this,obj,methodID,args); 851 va_end(args); 852 return result; 853 } 854 jbyte CallByteMethodV(jobject obj, jmethodID methodID, 855 va_list args) { 856 return functions->CallByteMethodV(this,obj,methodID,args); 857 } 858 jbyte CallByteMethodA(jobject obj, jmethodID methodID, 859 jvalue * args) { 860 return functions->CallByteMethodA(this,obj,methodID,args); 861 } 862 863 jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { 864 va_list args; 865 jchar result; 866 va_start(args,methodID); 867 result = functions->CallCharMethodV(this,obj,methodID,args); 868 va_end(args); 869 return result; 870 } 871 jchar CallCharMethodV(jobject obj, jmethodID methodID, 872 va_list args) { 873 return functions->CallCharMethodV(this,obj,methodID,args); 874 } 875 jchar CallCharMethodA(jobject obj, jmethodID methodID, 876 jvalue * args) { 877 return functions->CallCharMethodA(this,obj,methodID,args); 878 } 879 880 jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { 881 va_list args; 882 jshort result; 883 va_start(args,methodID); 884 result = functions->CallShortMethodV(this,obj,methodID,args); 885 va_end(args); 886 return result; 887 } 888 jshort CallShortMethodV(jobject obj, jmethodID methodID, 889 va_list args) { 890 return functions->CallShortMethodV(this,obj,methodID,args); 891 } 892 jshort CallShortMethodA(jobject obj, jmethodID methodID, 893 jvalue * args) { 894 return functions->CallShortMethodA(this,obj,methodID,args); 895 } 896 897 jint CallIntMethod(jobject obj, jmethodID methodID, ...) { 898 va_list args; 899 jint result; 900 va_start(args,methodID); 901 result = functions->CallIntMethodV(this,obj,methodID,args); 902 va_end(args); 903 return result; 904 } 905 jint CallIntMethodV(jobject obj, jmethodID methodID, 906 va_list args) { 907 return functions->CallIntMethodV(this,obj,methodID,args); 908 } 909 jint CallIntMethodA(jobject obj, jmethodID methodID, 910 jvalue * args) { 911 return functions->CallIntMethodA(this,obj,methodID,args); 912 } 913 914 jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { 915 va_list args; 916 jlong result; 917 va_start(args,methodID); 918 result = functions->CallLongMethodV(this,obj,methodID,args); 919 va_end(args); 920 return result; 921 } 922 jlong CallLongMethodV(jobject obj, jmethodID methodID, 923 va_list args) { 924 return functions->CallLongMethodV(this,obj,methodID,args); 925 } 926 jlong CallLongMethodA(jobject obj, jmethodID methodID, 927 jvalue * args) { 928 return functions->CallLongMethodA(this,obj,methodID,args); 929 } 930 931 jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { 932 va_list args; 933 jfloat result; 934 va_start(args,methodID); 935 result = functions->CallFloatMethodV(this,obj,methodID,args); 936 va_end(args); 937 return result; 938 } 939 jfloat CallFloatMethodV(jobject obj, jmethodID methodID, 940 va_list args) { 941 return functions->CallFloatMethodV(this,obj,methodID,args); 942 } 943 jfloat CallFloatMethodA(jobject obj, jmethodID methodID, 944 jvalue * args) { 945 return functions->CallFloatMethodA(this,obj,methodID,args); 946 } 947 948 jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { 949 va_list args; 950 jdouble result; 951 va_start(args,methodID); 952 result = functions->CallDoubleMethodV(this,obj,methodID,args); 953 va_end(args); 954 return result; 955 } 956 jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, 957 va_list args) { 958 return functions->CallDoubleMethodV(this,obj,methodID,args); 959 } 960 jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, 961 jvalue * args) { 962 return functions->CallDoubleMethodA(this,obj,methodID,args); 963 } 964 965 void CallVoidMethod(jobject obj, jmethodID methodID, ...) { 966 va_list args; 967 va_start(args,methodID); 968 functions->CallVoidMethodV(this,obj,methodID,args); 969 va_end(args); 970 } 971 void CallVoidMethodV(jobject obj, jmethodID methodID, 972 va_list args) { 973 functions->CallVoidMethodV(this,obj,methodID,args); 974 } 975 void CallVoidMethodA(jobject obj, jmethodID methodID, 976 jvalue * args) { 977 functions->CallVoidMethodA(this,obj,methodID,args); 978 } 979 980 jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, 981 jmethodID methodID, ...) { 982 va_list args; 983 jobject result; 984 va_start(args,methodID); 985 result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, 986 methodID,args); 987 va_end(args); 988 return result; 989 } 990 jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, 991 jmethodID methodID, va_list args) { 992 return functions->CallNonvirtualObjectMethodV(this,obj,clazz, 993 methodID,args); 994 } 995 jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, 996 jmethodID methodID, jvalue * args) { 997 return functions->CallNonvirtualObjectMethodA(this,obj,clazz, 998 methodID,args); 999 } 1000 1001 jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, 1002 jmethodID methodID, ...) { 1003 va_list args; 1004 jboolean result; 1005 va_start(args,methodID); 1006 result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1007 methodID,args); 1008 va_end(args); 1009 return result; 1010 } 1011 jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, 1012 jmethodID methodID, va_list args) { 1013 return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1014 methodID,args); 1015 } 1016 jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, 1017 jmethodID methodID, jvalue * args) { 1018 return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, 1019 methodID, args); 1020 } 1021 1022 jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, 1023 jmethodID methodID, ...) { 1024 va_list args; 1025 jbyte result; 1026 va_start(args,methodID); 1027 result = functions->CallNonvirtualByteMethodV(this,obj,clazz, 1028 methodID,args); 1029 va_end(args); 1030 return result; 1031 } 1032 jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, 1033 jmethodID methodID, va_list args) { 1034 return functions->CallNonvirtualByteMethodV(this,obj,clazz, 1035 methodID,args); 1036 } 1037 jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, 1038 jmethodID methodID, jvalue * args) { 1039 return functions->CallNonvirtualByteMethodA(this,obj,clazz, 1040 methodID,args); 1041 } 1042 1043 jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, 1044 jmethodID methodID, ...) { 1045 va_list args; 1046 jchar result; 1047 va_start(args,methodID); 1048 result = functions->CallNonvirtualCharMethodV(this,obj,clazz, 1049 methodID,args); 1050 va_end(args); 1051 return result; 1052 } 1053 jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, 1054 jmethodID methodID, va_list args) { 1055 return functions->CallNonvirtualCharMethodV(this,obj,clazz, 1056 methodID,args); 1057 } 1058 jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, 1059 jmethodID methodID, jvalue * args) { 1060 return functions->CallNonvirtualCharMethodA(this,obj,clazz, 1061 methodID,args); 1062 } 1063 1064 jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, 1065 jmethodID methodID, ...) { 1066 va_list args; 1067 jshort result; 1068 va_start(args,methodID); 1069 result = functions->CallNonvirtualShortMethodV(this,obj,clazz, 1070 methodID,args); 1071 va_end(args); 1072 return result; 1073 } 1074 jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, 1075 jmethodID methodID, va_list args) { 1076 return functions->CallNonvirtualShortMethodV(this,obj,clazz, 1077 methodID,args); 1078 } 1079 jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, 1080 jmethodID methodID, jvalue * args) { 1081 return functions->CallNonvirtualShortMethodA(this,obj,clazz, 1082 methodID,args); 1083 } 1084 1085 jint CallNonvirtualIntMethod(jobject obj, jclass clazz, 1086 jmethodID methodID, ...) { 1087 va_list args; 1088 jint result; 1089 va_start(args,methodID); 1090 result = functions->CallNonvirtualIntMethodV(this,obj,clazz, 1091 methodID,args); 1092 va_end(args); 1093 return result; 1094 } 1095 jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, 1096 jmethodID methodID, va_list args) { 1097 return functions->CallNonvirtualIntMethodV(this,obj,clazz, 1098 methodID,args); 1099 } 1100 jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, 1101 jmethodID methodID, jvalue * args) { 1102 return functions->CallNonvirtualIntMethodA(this,obj,clazz, 1103 methodID,args); 1104 } 1105 1106 jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, 1107 jmethodID methodID, ...) { 1108 va_list args; 1109 jlong result; 1110 va_start(args,methodID); 1111 result = functions->CallNonvirtualLongMethodV(this,obj,clazz, 1112 methodID,args); 1113 va_end(args); 1114 return result; 1115 } 1116 jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, 1117 jmethodID methodID, va_list args) { 1118 return functions->CallNonvirtualLongMethodV(this,obj,clazz, 1119 methodID,args); 1120 } 1121 jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, 1122 jmethodID methodID, jvalue * args) { 1123 return functions->CallNonvirtualLongMethodA(this,obj,clazz, 1124 methodID,args); 1125 } 1126 1127 jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, 1128 jmethodID methodID, ...) { 1129 va_list args; 1130 jfloat result; 1131 va_start(args,methodID); 1132 result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1133 methodID,args); 1134 va_end(args); 1135 return result; 1136 } 1137 jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, 1138 jmethodID methodID, 1139 va_list args) { 1140 return functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1141 methodID,args); 1142 } 1143 jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, 1144 jmethodID methodID, 1145 jvalue * args) { 1146 return functions->CallNonvirtualFloatMethodA(this,obj,clazz, 1147 methodID,args); 1148 } 1149 1150 jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, 1151 jmethodID methodID, ...) { 1152 va_list args; 1153 jdouble result; 1154 va_start(args,methodID); 1155 result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1156 methodID,args); 1157 va_end(args); 1158 return result; 1159 } 1160 jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, 1161 jmethodID methodID, 1162 va_list args) { 1163 return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1164 methodID,args); 1165 } 1166 jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, 1167 jmethodID methodID, 1168 jvalue * args) { 1169 return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, 1170 methodID,args); 1171 } 1172 1173 void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 1174 jmethodID methodID, ...) { 1175 va_list args; 1176 va_start(args,methodID); 1177 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1178 va_end(args); 1179 } 1180 void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 1181 jmethodID methodID, 1182 va_list args) { 1183 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1184 } 1185 void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 1186 jmethodID methodID, 1187 jvalue * args) { 1188 functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); 1189 } 1190 1191 jfieldID GetFieldID(jclass clazz, const char *name, 1192 const char *sig) { 1193 return functions->GetFieldID(this,clazz,name,sig); 1194 } 1195 1196 jobject GetObjectField(jobject obj, jfieldID fieldID) { 1197 return functions->GetObjectField(this,obj,fieldID); 1198 } 1199 jboolean GetBooleanField(jobject obj, jfieldID fieldID) { 1200 return functions->GetBooleanField(this,obj,fieldID); 1201 } 1202 jbyte GetByteField(jobject obj, jfieldID fieldID) { 1203 return functions->GetByteField(this,obj,fieldID); 1204 } 1205 jchar GetCharField(jobject obj, jfieldID fieldID) { 1206 return functions->GetCharField(this,obj,fieldID); 1207 } 1208 jshort GetShortField(jobject obj, jfieldID fieldID) { 1209 return functions->GetShortField(this,obj,fieldID); 1210 } 1211 jint GetIntField(jobject obj, jfieldID fieldID) { 1212 return functions->GetIntField(this,obj,fieldID); 1213 } 1214 jlong GetLongField(jobject obj, jfieldID fieldID) { 1215 return functions->GetLongField(this,obj,fieldID); 1216 } 1217 jfloat GetFloatField(jobject obj, jfieldID fieldID) { 1218 return functions->GetFloatField(this,obj,fieldID); 1219 } 1220 jdouble GetDoubleField(jobject obj, jfieldID fieldID) { 1221 return functions->GetDoubleField(this,obj,fieldID); 1222 } 1223 1224 void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { 1225 functions->SetObjectField(this,obj,fieldID,val); 1226 } 1227 void SetBooleanField(jobject obj, jfieldID fieldID, 1228 jboolean val) { 1229 functions->SetBooleanField(this,obj,fieldID,val); 1230 } 1231 void SetByteField(jobject obj, jfieldID fieldID, 1232 jbyte val) { 1233 functions->SetByteField(this,obj,fieldID,val); 1234 } 1235 void SetCharField(jobject obj, jfieldID fieldID, 1236 jchar val) { 1237 functions->SetCharField(this,obj,fieldID,val); 1238 } 1239 void SetShortField(jobject obj, jfieldID fieldID, 1240 jshort val) { 1241 functions->SetShortField(this,obj,fieldID,val); 1242 } 1243 void SetIntField(jobject obj, jfieldID fieldID, 1244 jint val) { 1245 functions->SetIntField(this,obj,fieldID,val); 1246 } 1247 void SetLongField(jobject obj, jfieldID fieldID, 1248 jlong val) { 1249 functions->SetLongField(this,obj,fieldID,val); 1250 } 1251 void SetFloatField(jobject obj, jfieldID fieldID, 1252 jfloat val) { 1253 functions->SetFloatField(this,obj,fieldID,val); 1254 } 1255 void SetDoubleField(jobject obj, jfieldID fieldID, 1256 jdouble val) { 1257 functions->SetDoubleField(this,obj,fieldID,val); 1258 } 1259 1260 jmethodID GetStaticMethodID(jclass clazz, const char *name, 1261 const char *sig) { 1262 return functions->GetStaticMethodID(this,clazz,name,sig); 1263 } 1264 1265 jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, 1266 ...) { 1267 va_list args; 1268 jobject result; 1269 va_start(args,methodID); 1270 result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1271 va_end(args); 1272 return result; 1273 } 1274 jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, 1275 va_list args) { 1276 return functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1277 } 1278 jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, 1279 jvalue *args) { 1280 return functions->CallStaticObjectMethodA(this,clazz,methodID,args); 1281 } 1282 1283 jboolean CallStaticBooleanMethod(jclass clazz, 1284 jmethodID methodID, ...) { 1285 va_list args; 1286 jboolean result; 1287 va_start(args,methodID); 1288 result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1289 va_end(args); 1290 return result; 1291 } 1292 jboolean CallStaticBooleanMethodV(jclass clazz, 1293 jmethodID methodID, va_list args) { 1294 return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1295 } 1296 jboolean CallStaticBooleanMethodA(jclass clazz, 1297 jmethodID methodID, jvalue *args) { 1298 return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); 1299 } 1300 1301 jbyte CallStaticByteMethod(jclass clazz, 1302 jmethodID methodID, ...) { 1303 va_list args; 1304 jbyte result; 1305 va_start(args,methodID); 1306 result = functions->CallStaticByteMethodV(this,clazz,methodID,args); 1307 va_end(args); 1308 return result; 1309 } 1310 jbyte CallStaticByteMethodV(jclass clazz, 1311 jmethodID methodID, va_list args) { 1312 return functions->CallStaticByteMethodV(this,clazz,methodID,args); 1313 } 1314 jbyte CallStaticByteMethodA(jclass clazz, 1315 jmethodID methodID, jvalue *args) { 1316 return functions->CallStaticByteMethodA(this,clazz,methodID,args); 1317 } 1318 1319 jchar CallStaticCharMethod(jclass clazz, 1320 jmethodID methodID, ...) { 1321 va_list args; 1322 jchar result; 1323 va_start(args,methodID); 1324 result = functions->CallStaticCharMethodV(this,clazz,methodID,args); 1325 va_end(args); 1326 return result; 1327 } 1328 jchar CallStaticCharMethodV(jclass clazz, 1329 jmethodID methodID, va_list args) { 1330 return functions->CallStaticCharMethodV(this,clazz,methodID,args); 1331 } 1332 jchar CallStaticCharMethodA(jclass clazz, 1333 jmethodID methodID, jvalue *args) { 1334 return functions->CallStaticCharMethodA(this,clazz,methodID,args); 1335 } 1336 1337 jshort CallStaticShortMethod(jclass clazz, 1338 jmethodID methodID, ...) { 1339 va_list args; 1340 jshort result; 1341 va_start(args,methodID); 1342 result = functions->CallStaticShortMethodV(this,clazz,methodID,args); 1343 va_end(args); 1344 return result; 1345 } 1346 jshort CallStaticShortMethodV(jclass clazz, 1347 jmethodID methodID, va_list args) { 1348 return functions->CallStaticShortMethodV(this,clazz,methodID,args); 1349 } 1350 jshort CallStaticShortMethodA(jclass clazz, 1351 jmethodID methodID, jvalue *args) { 1352 return functions->CallStaticShortMethodA(this,clazz,methodID,args); 1353 } 1354 1355 jint CallStaticIntMethod(jclass clazz, 1356 jmethodID methodID, ...) { 1357 va_list args; 1358 jint result; 1359 va_start(args,methodID); 1360 result = functions->CallStaticIntMethodV(this,clazz,methodID,args); 1361 va_end(args); 1362 return result; 1363 } 1364 jint CallStaticIntMethodV(jclass clazz, 1365 jmethodID methodID, va_list args) { 1366 return functions->CallStaticIntMethodV(this,clazz,methodID,args); 1367 } 1368 jint CallStaticIntMethodA(jclass clazz, 1369 jmethodID methodID, jvalue *args) { 1370 return functions->CallStaticIntMethodA(this,clazz,methodID,args); 1371 } 1372 1373 jlong CallStaticLongMethod(jclass clazz, 1374 jmethodID methodID, ...) { 1375 va_list args; 1376 jlong result; 1377 va_start(args,methodID); 1378 result = functions->CallStaticLongMethodV(this,clazz,methodID,args); 1379 va_end(args); 1380 return result; 1381 } 1382 jlong CallStaticLongMethodV(jclass clazz, 1383 jmethodID methodID, va_list args) { 1384 return functions->CallStaticLongMethodV(this,clazz,methodID,args); 1385 } 1386 jlong CallStaticLongMethodA(jclass clazz, 1387 jmethodID methodID, jvalue *args) { 1388 return functions->CallStaticLongMethodA(this,clazz,methodID,args); 1389 } 1390 1391 jfloat CallStaticFloatMethod(jclass clazz, 1392 jmethodID methodID, ...) { 1393 va_list args; 1394 jfloat result; 1395 va_start(args,methodID); 1396 result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1397 va_end(args); 1398 return result; 1399 } 1400 jfloat CallStaticFloatMethodV(jclass clazz, 1401 jmethodID methodID, va_list args) { 1402 return functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1403 } 1404 jfloat CallStaticFloatMethodA(jclass clazz, 1405 jmethodID methodID, jvalue *args) { 1406 return functions->CallStaticFloatMethodA(this,clazz,methodID,args); 1407 } 1408 1409 jdouble CallStaticDoubleMethod(jclass clazz, 1410 jmethodID methodID, ...) { 1411 va_list args; 1412 jdouble result; 1413 va_start(args,methodID); 1414 result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1415 va_end(args); 1416 return result; 1417 } 1418 jdouble CallStaticDoubleMethodV(jclass clazz, 1419 jmethodID methodID, va_list args) { 1420 return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1421 } 1422 jdouble CallStaticDoubleMethodA(jclass clazz, 1423 jmethodID methodID, jvalue *args) { 1424 return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); 1425 } 1426 1427 void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { 1428 va_list args; 1429 va_start(args,methodID); 1430 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1431 va_end(args); 1432 } 1433 void CallStaticVoidMethodV(jclass cls, jmethodID methodID, 1434 va_list args) { 1435 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1436 } 1437 void CallStaticVoidMethodA(jclass cls, jmethodID methodID, 1438 jvalue * args) { 1439 functions->CallStaticVoidMethodA(this,cls,methodID,args); 1440 } 1441 1442 jfieldID GetStaticFieldID(jclass clazz, const char *name, 1443 const char *sig) { 1444 return functions->GetStaticFieldID(this,clazz,name,sig); 1445 } 1446 jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { 1447 return functions->GetStaticObjectField(this,clazz,fieldID); 1448 } 1449 jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { 1450 return functions->GetStaticBooleanField(this,clazz,fieldID); 1451 } 1452 jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { 1453 return functions->GetStaticByteField(this,clazz,fieldID); 1454 } 1455 jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { 1456 return functions->GetStaticCharField(this,clazz,fieldID); 1457 } 1458 jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { 1459 return functions->GetStaticShortField(this,clazz,fieldID); 1460 } 1461 jint GetStaticIntField(jclass clazz, jfieldID fieldID) { 1462 return functions->GetStaticIntField(this,clazz,fieldID); 1463 } 1464 jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { 1465 return functions->GetStaticLongField(this,clazz,fieldID); 1466 } 1467 jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { 1468 return functions->GetStaticFloatField(this,clazz,fieldID); 1469 } 1470 jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { 1471 return functions->GetStaticDoubleField(this,clazz,fieldID); 1472 } 1473 1474 void SetStaticObjectField(jclass clazz, jfieldID fieldID, 1475 jobject value) { 1476 functions->SetStaticObjectField(this,clazz,fieldID,value); 1477 } 1478 void SetStaticBooleanField(jclass clazz, jfieldID fieldID, 1479 jboolean value) { 1480 functions->SetStaticBooleanField(this,clazz,fieldID,value); 1481 } 1482 void SetStaticByteField(jclass clazz, jfieldID fieldID, 1483 jbyte value) { 1484 functions->SetStaticByteField(this,clazz,fieldID,value); 1485 } 1486 void SetStaticCharField(jclass clazz, jfieldID fieldID, 1487 jchar value) { 1488 functions->SetStaticCharField(this,clazz,fieldID,value); 1489 } 1490 void SetStaticShortField(jclass clazz, jfieldID fieldID, 1491 jshort value) { 1492 functions->SetStaticShortField(this,clazz,fieldID,value); 1493 } 1494 void SetStaticIntField(jclass clazz, jfieldID fieldID, 1495 jint value) { 1496 functions->SetStaticIntField(this,clazz,fieldID,value); 1497 } 1498 void SetStaticLongField(jclass clazz, jfieldID fieldID, 1499 jlong value) { 1500 functions->SetStaticLongField(this,clazz,fieldID,value); 1501 } 1502 void SetStaticFloatField(jclass clazz, jfieldID fieldID, 1503 jfloat value) { 1504 functions->SetStaticFloatField(this,clazz,fieldID,value); 1505 } 1506 void SetStaticDoubleField(jclass clazz, jfieldID fieldID, 1507 jdouble value) { 1508 functions->SetStaticDoubleField(this,clazz,fieldID,value); 1509 } 1510 1511 jstring NewString(const jchar *unicode, jsize len) { 1512 return functions->NewString(this,unicode,len); 1513 } 1514 jsize GetStringLength(jstring str) { 1515 return functions->GetStringLength(this,str); 1516 } 1517 const jchar *GetStringChars(jstring str, jboolean *isCopy) { 1518 return functions->GetStringChars(this,str,isCopy); 1519 } 1520 void ReleaseStringChars(jstring str, const jchar *chars) { 1521 functions->ReleaseStringChars(this,str,chars); 1522 } 1523 1524 jstring NewStringUTF(const char *utf) { 1525 return functions->NewStringUTF(this,utf); 1526 } 1527 jsize GetStringUTFLength(jstring str) { 1528 return functions->GetStringUTFLength(this,str); 1529 } 1530 const char* GetStringUTFChars(jstring str, jboolean *isCopy) { 1531 return functions->GetStringUTFChars(this,str,isCopy); 1532 } 1533 void ReleaseStringUTFChars(jstring str, const char* chars) { 1534 functions->ReleaseStringUTFChars(this,str,chars); 1535 } 1536 1537 jsize GetArrayLength(jarray array) { 1538 return functions->GetArrayLength(this,array); 1539 } 1540 1541 jobjectArray NewObjectArray(jsize len, jclass clazz, 1542 jobject init) { 1543 return functions->NewObjectArray(this,len,clazz,init); 1544 } 1545 jobject GetObjectArrayElement(jobjectArray array, jsize index) { 1546 return functions->GetObjectArrayElement(this,array,index); 1547 } 1548 void SetObjectArrayElement(jobjectArray array, jsize index, 1549 jobject val) { 1550 functions->SetObjectArrayElement(this,array,index,val); 1551 } 1552 1553 jbooleanArray NewBooleanArray(jsize len) { 1554 return functions->NewBooleanArray(this,len); 1555 } 1556 jbyteArray NewByteArray(jsize len) { 1557 return functions->NewByteArray(this,len); 1558 } 1559 jcharArray NewCharArray(jsize len) { 1560 return functions->NewCharArray(this,len); 1561 } 1562 jshortArray NewShortArray(jsize len) { 1563 return functions->NewShortArray(this,len); 1564 } 1565 jintArray NewIntArray(jsize len) { 1566 return functions->NewIntArray(this,len); 1567 } 1568 jlongArray NewLongArray(jsize len) { 1569 return functions->NewLongArray(this,len); 1570 } 1571 jfloatArray NewFloatArray(jsize len) { 1572 return functions->NewFloatArray(this,len); 1573 } 1574 jdoubleArray NewDoubleArray(jsize len) { 1575 return functions->NewDoubleArray(this,len); 1576 } 1577 1578 jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { 1579 return functions->GetBooleanArrayElements(this,array,isCopy); 1580 } 1581 jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { 1582 return functions->GetByteArrayElements(this,array,isCopy); 1583 } 1584 jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { 1585 return functions->GetCharArrayElements(this,array,isCopy); 1586 } 1587 jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { 1588 return functions->GetShortArrayElements(this,array,isCopy); 1589 } 1590 jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { 1591 return functions->GetIntArrayElements(this,array,isCopy); 1592 } 1593 jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { 1594 return functions->GetLongArrayElements(this,array,isCopy); 1595 } 1596 jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { 1597 return functions->GetFloatArrayElements(this,array,isCopy); 1598 } 1599 jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { 1600 return functions->GetDoubleArrayElements(this,array,isCopy); 1601 } 1602 1603 void ReleaseBooleanArrayElements(jbooleanArray array, 1604 jboolean *elems, 1605 jint mode) { 1606 functions->ReleaseBooleanArrayElements(this,array,elems,mode); 1607 } 1608 void ReleaseByteArrayElements(jbyteArray array, 1609 jbyte *elems, 1610 jint mode) { 1611 functions->ReleaseByteArrayElements(this,array,elems,mode); 1612 } 1613 void ReleaseCharArrayElements(jcharArray array, 1614 jchar *elems, 1615 jint mode) { 1616 functions->ReleaseCharArrayElements(this,array,elems,mode); 1617 } 1618 void ReleaseShortArrayElements(jshortArray array, 1619 jshort *elems, 1620 jint mode) { 1621 functions->ReleaseShortArrayElements(this,array,elems,mode); 1622 } 1623 void ReleaseIntArrayElements(jintArray array, 1624 jint *elems, 1625 jint mode) { 1626 functions->ReleaseIntArrayElements(this,array,elems,mode); 1627 } 1628 void ReleaseLongArrayElements(jlongArray array, 1629 jlong *elems, 1630 jint mode) { 1631 functions->ReleaseLongArrayElements(this,array,elems,mode); 1632 } 1633 void ReleaseFloatArrayElements(jfloatArray array, 1634 jfloat *elems, 1635 jint mode) { 1636 functions->ReleaseFloatArrayElements(this,array,elems,mode); 1637 } 1638 void ReleaseDoubleArrayElements(jdoubleArray array, 1639 jdouble *elems, 1640 jint mode) { 1641 functions->ReleaseDoubleArrayElements(this,array,elems,mode); 1642 } 1643 1644 void GetBooleanArrayRegion(jbooleanArray array, 1645 jsize start, jsize len, jboolean *buf) { 1646 functions->GetBooleanArrayRegion(this,array,start,len,buf); 1647 } 1648 void GetByteArrayRegion(jbyteArray array, 1649 jsize start, jsize len, jbyte *buf) { 1650 functions->GetByteArrayRegion(this,array,start,len,buf); 1651 } 1652 void GetCharArrayRegion(jcharArray array, 1653 jsize start, jsize len, jchar *buf) { 1654 functions->GetCharArrayRegion(this,array,start,len,buf); 1655 } 1656 void GetShortArrayRegion(jshortArray array, 1657 jsize start, jsize len, jshort *buf) { 1658 functions->GetShortArrayRegion(this,array,start,len,buf); 1659 } 1660 void GetIntArrayRegion(jintArray array, 1661 jsize start, jsize len, jint *buf) { 1662 functions->GetIntArrayRegion(this,array,start,len,buf); 1663 } 1664 void GetLongArrayRegion(jlongArray array, 1665 jsize start, jsize len, jlong *buf) { 1666 functions->GetLongArrayRegion(this,array,start,len,buf); 1667 } 1668 void GetFloatArrayRegion(jfloatArray array, 1669 jsize start, jsize len, jfloat *buf) { 1670 functions->GetFloatArrayRegion(this,array,start,len,buf); 1671 } 1672 void GetDoubleArrayRegion(jdoubleArray array, 1673 jsize start, jsize len, jdouble *buf) { 1674 functions->GetDoubleArrayRegion(this,array,start,len,buf); 1675 } 1676 1677 void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 1678 jboolean *buf) { 1679 functions->SetBooleanArrayRegion(this,array,start,len,buf); 1680 } 1681 void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 1682 jbyte *buf) { 1683 functions->SetByteArrayRegion(this,array,start,len,buf); 1684 } 1685 void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 1686 jchar *buf) { 1687 functions->SetCharArrayRegion(this,array,start,len,buf); 1688 } 1689 void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 1690 jshort *buf) { 1691 functions->SetShortArrayRegion(this,array,start,len,buf); 1692 } 1693 void SetIntArrayRegion(jintArray array, jsize start, jsize len, 1694 jint *buf) { 1695 functions->SetIntArrayRegion(this,array,start,len,buf); 1696 } 1697 void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 1698 jlong *buf) { 1699 functions->SetLongArrayRegion(this,array,start,len,buf); 1700 } 1701 void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 1702 jfloat *buf) { 1703 functions->SetFloatArrayRegion(this,array,start,len,buf); 1704 } 1705 void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 1706 jdouble *buf) { 1707 functions->SetDoubleArrayRegion(this,array,start,len,buf); 1708 } 1709 1710 jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, 1711 jint nMethods) { 1712 return functions->RegisterNatives(this,clazz,methods,nMethods); 1713 } 1714 jint UnregisterNatives(jclass clazz) { 1715 return functions->UnregisterNatives(this,clazz); 1716 } 1717 1718 jint MonitorEnter(jobject obj) { 1719 return functions->MonitorEnter(this,obj); 1720 } 1721 jint MonitorExit(jobject obj) { 1722 return functions->MonitorExit(this,obj); 1723 } 1724 1725 jint GetJavaVM(JavaVM **vm) { 1726 return functions->GetJavaVM(this,vm); 1727 } 1728 1729 #endif /* __cplusplus */ 1730 }; 1731 1732 /* These structures will be VM-specific. */ 1733 1734 typedef struct JDK1_1InitArgs { 1735 jint version; 1736 1737 char **properties; 1738 jint checkSource; 1739 jint nativeStackSize; 1740 jint javaStackSize; 1741 jint minHeapSize; 1742 jint maxHeapSize; 1743 jint verifyMode; 1744 char *classpath; 1745 1746 jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args); 1747 void (JNICALL *exit)(jint code); 1748 void (JNICALL *abort)(); 1749 1750 jint enableClassGC; 1751 jint enableVerboseGC; 1752 jint disableAsyncGC; 1753 jint verbose; 1754 jboolean debugging; 1755 jint debugPort; 1756 } JDK1_1InitArgs; 1757 1758 typedef struct JDK1_1AttachArgs { 1759 void * __padding; /* C compilers don't allow empty structures. */ 1760 } JDK1_1AttachArgs; 1761 1762 /* End VM-specific. */ 1763 1764 struct JNIInvokeInterface_ { 1765 void *reserved0; 1766 void *reserved1; 1767 void *reserved2; 1768 1769 jint (JNICALL *DestroyJavaVM)(JavaVM *vm); 1770 1771 jint (JNICALL *AttachCurrentThread) 1772 (JavaVM *vm, JNIEnv **penv, void *args); 1773 1774 jint (JNICALL *DetachCurrentThread)(JavaVM *vm); 1775 }; 1776 1777 struct JavaVM_ { 1778 const struct JNIInvokeInterface_ *functions; 1779 void *reserved0; 1780 void *reserved1; 1781 void *reserved2; 1782 #ifdef __cplusplus 1783 1784 jint DestroyJavaVM() { 1785 return functions->DestroyJavaVM(this); 1786 } 1787 jint AttachCurrentThread(JNIEnv **penv, void *args) { 1788 return functions->AttachCurrentThread(this, penv, args); 1789 } 1790 jint DetachCurrentThread() { 1791 return functions->DetachCurrentThread(this); 1792 } 1793 1794 #endif 1795 }; 1796 1797 JNI_PUBLIC_API(void) JNI_GetDefaultJavaVMInitArgs(void *); 1798 1799 JNI_PUBLIC_API(jint) JNI_CreateJavaVM(JavaVM **, JNIEnv **, void *); 1800 1801 JNI_PUBLIC_API(jint) JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); 1802 JNI_PUBLIC_API(jref) JNI_MakeLocalRef(JNIEnv *pJNIEnv, void *pHObject); 1803 1804 #ifdef __cplusplus 1805 } /* extern "C" */ 1806 #endif /* __cplusplus */ 1807 1808 #endif /* JNI_H */ 1809 1810 1811