Max 5 API Reference
00001 /* 00002 * @(#)jni.h 1.53 01/12/03 00003 * 00004 * Copyright 2002 Sun Microsystems, Inc. All rights reserved. 00005 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 00006 */ 00007 00008 /* 00009 * We used part of Netscape's Java Runtime Interface (JRI) as the starting 00010 * point of our design and implementation. 00011 */ 00012 00013 /****************************************************************************** 00014 * Java Runtime Interface 00015 * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. 00016 *****************************************************************************/ 00017 00018 #ifndef _JAVASOFT_JNI_H_ 00019 #define _JAVASOFT_JNI_H_ 00020 00021 #include <stdio.h> 00022 #include <stdarg.h> 00023 00024 /* jni_md.h contains the machine-dependent typedefs for jbyte, jint 00025 and jlong */ 00026 00027 #include "jni_cfm_md.h" 00028 00029 #ifdef __cplusplus 00030 extern "C" { 00031 #endif 00032 00033 /* 00034 * JNI Types 00035 */ 00036 00037 #ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H 00038 00039 typedef unsigned char jboolean; 00040 typedef unsigned short jchar; 00041 typedef short jshort; 00042 typedef float jfloat; 00043 typedef double jdouble; 00044 00045 typedef jint jsize; 00046 00047 #ifdef __cplusplus 00048 00049 class _jobject {}; 00050 class _jclass : public _jobject {}; 00051 class _jthrowable : public _jobject {}; 00052 class _jstring : public _jobject {}; 00053 class _jarray : public _jobject {}; 00054 class _jbooleanArray : public _jarray {}; 00055 class _jbyteArray : public _jarray {}; 00056 class _jcharArray : public _jarray {}; 00057 class _jshortArray : public _jarray {}; 00058 class _jintArray : public _jarray {}; 00059 class _jlongArray : public _jarray {}; 00060 class _jfloatArray : public _jarray {}; 00061 class _jdoubleArray : public _jarray {}; 00062 class _jobjectArray : public _jarray {}; 00063 00064 typedef _jobject *jobject; 00065 typedef _jclass *jclass; 00066 typedef _jthrowable *jthrowable; 00067 typedef _jstring *jstring; 00068 typedef _jarray *jarray; 00069 typedef _jbooleanArray *jbooleanArray; 00070 typedef _jbyteArray *jbyteArray; 00071 typedef _jcharArray *jcharArray; 00072 typedef _jshortArray *jshortArray; 00073 typedef _jintArray *jintArray; 00074 typedef _jlongArray *jlongArray; 00075 typedef _jfloatArray *jfloatArray; 00076 typedef _jdoubleArray *jdoubleArray; 00077 typedef _jobjectArray *jobjectArray; 00078 00079 #else 00080 00081 struct _jobject; 00082 00083 typedef struct _jobject *jobject; 00084 typedef jobject jclass; 00085 typedef jobject jthrowable; 00086 typedef jobject jstring; 00087 typedef jobject jarray; 00088 typedef jarray jbooleanArray; 00089 typedef jarray jbyteArray; 00090 typedef jarray jcharArray; 00091 typedef jarray jshortArray; 00092 typedef jarray jintArray; 00093 typedef jarray jlongArray; 00094 typedef jarray jfloatArray; 00095 typedef jarray jdoubleArray; 00096 typedef jarray jobjectArray; 00097 00098 #endif 00099 00100 typedef jobject jweak; 00101 00102 typedef union jvalue { 00103 jboolean z; 00104 jbyte b; 00105 jchar c; 00106 jshort s; 00107 jint i; 00108 jlong j; 00109 jfloat f; 00110 jdouble d; 00111 jobject l; 00112 } jvalue; 00113 00114 struct _jfieldID; 00115 typedef struct _jfieldID *jfieldID; 00116 00117 struct _jmethodID; 00118 typedef struct _jmethodID *jmethodID; 00119 00120 #endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ 00121 00122 /* 00123 * jboolean constants 00124 */ 00125 00126 #define JNI_FALSE 0 00127 #define JNI_TRUE 1 00128 00129 /* 00130 * possible return values for JNI functions. 00131 */ 00132 00133 #define JNI_OK 0 /* success */ 00134 #define JNI_ERR (-1) /* unknown error */ 00135 #define JNI_EDETACHED (-2) /* thread detached from the VM */ 00136 #define JNI_EVERSION (-3) /* JNI version error */ 00137 #define JNI_ENOMEM (-4) /* not enough memory */ 00138 #define JNI_EEXIST (-5) /* VM already created */ 00139 #define JNI_EINVAL (-6) /* invalid arguments */ 00140 00141 /* 00142 * used in ReleaseScalarArrayElements 00143 */ 00144 00145 #define JNI_COMMIT 1 00146 #define JNI_ABORT 2 00147 00148 /* 00149 * used in RegisterNatives to describe native method name, signature, 00150 * and function pointer. 00151 */ 00152 00153 typedef struct { 00154 char *name; 00155 char *signature; 00156 void *fnPtr; 00157 } JNINativeMethod; 00158 00159 /* 00160 * JNI Native Method Interface. 00161 */ 00162 00163 struct JNINativeInterface_; 00164 00165 struct JNIEnv_; 00166 00167 #ifdef __cplusplus 00168 typedef JNIEnv_ JNIEnv; 00169 #else 00170 typedef const struct JNINativeInterface_ *JNIEnv; 00171 #endif 00172 00173 /* 00174 * JNI Invocation Interface. 00175 */ 00176 00177 struct JNIInvokeInterface_; 00178 00179 struct JavaVM_; 00180 00181 #ifdef __cplusplus 00182 typedef JavaVM_ JavaVM; 00183 #else 00184 typedef const struct JNIInvokeInterface_ *JavaVM; 00185 #endif 00186 00187 struct JNINativeInterface_ { 00188 void *reserved0; 00189 void *reserved1; 00190 void *reserved2; 00191 00192 void *reserved3; 00193 00194 #ifdef MAC_VERSION 00195 #if !TARGET_RT_MAC_CFM 00196 void* cfm_vectors[225]; 00197 #endif /* !TARGET_RT_MAC_CFM */ 00198 #endif 00199 00200 jint (JNICALL *GetVersion)(JNIEnv *env); 00201 00202 jclass (JNICALL *DefineClass) 00203 (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, 00204 jsize len); 00205 jclass (JNICALL *FindClass) 00206 (JNIEnv *env, const char *name); 00207 00208 jmethodID (JNICALL *FromReflectedMethod) 00209 (JNIEnv *env, jobject method); 00210 jfieldID (JNICALL *FromReflectedField) 00211 (JNIEnv *env, jobject field); 00212 00213 jobject (JNICALL *ToReflectedMethod) 00214 (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); 00215 00216 jclass (JNICALL *GetSuperclass) 00217 (JNIEnv *env, jclass sub); 00218 jboolean (JNICALL *IsAssignableFrom) 00219 (JNIEnv *env, jclass sub, jclass sup); 00220 00221 jobject (JNICALL *ToReflectedField) 00222 (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); 00223 00224 jint (JNICALL *Throw) 00225 (JNIEnv *env, jthrowable obj); 00226 jint (JNICALL *ThrowNew) 00227 (JNIEnv *env, jclass clazz, const char *msg); 00228 jthrowable (JNICALL *ExceptionOccurred) 00229 (JNIEnv *env); 00230 void (JNICALL *ExceptionDescribe) 00231 (JNIEnv *env); 00232 void (JNICALL *ExceptionClear) 00233 (JNIEnv *env); 00234 void (JNICALL *FatalError) 00235 (JNIEnv *env, const char *msg); 00236 00237 jint (JNICALL *PushLocalFrame) 00238 (JNIEnv *env, jint capacity); 00239 jobject (JNICALL *PopLocalFrame) 00240 (JNIEnv *env, jobject result); 00241 00242 jobject (JNICALL *NewGlobalRef) 00243 (JNIEnv *env, jobject lobj); 00244 void (JNICALL *DeleteGlobalRef) 00245 (JNIEnv *env, jobject gref); 00246 void (JNICALL *DeleteLocalRef) 00247 (JNIEnv *env, jobject obj); 00248 jboolean (JNICALL *IsSameObject) 00249 (JNIEnv *env, jobject obj1, jobject obj2); 00250 jobject (JNICALL *NewLocalRef) 00251 (JNIEnv *env, jobject ref); 00252 jint (JNICALL *EnsureLocalCapacity) 00253 (JNIEnv *env, jint capacity); 00254 00255 jobject (JNICALL *AllocObject) 00256 (JNIEnv *env, jclass clazz); 00257 jobject (JNICALL *NewObject) 00258 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00259 jobject (JNICALL *NewObjectV) 00260 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00261 jobject (JNICALL *NewObjectA) 00262 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00263 00264 jclass (JNICALL *GetObjectClass) 00265 (JNIEnv *env, jobject obj); 00266 jboolean (JNICALL *IsInstanceOf) 00267 (JNIEnv *env, jobject obj, jclass clazz); 00268 00269 jmethodID (JNICALL *GetMethodID) 00270 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 00271 00272 jobject (JNICALL *CallObjectMethod) 00273 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00274 jobject (JNICALL *CallObjectMethodV) 00275 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00276 jobject (JNICALL *CallObjectMethodA) 00277 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 00278 00279 jboolean (JNICALL *CallBooleanMethod) 00280 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00281 jboolean (JNICALL *CallBooleanMethodV) 00282 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00283 jboolean (JNICALL *CallBooleanMethodA) 00284 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 00285 00286 jbyte (JNICALL *CallByteMethod) 00287 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00288 jbyte (JNICALL *CallByteMethodV) 00289 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00290 jbyte (JNICALL *CallByteMethodA) 00291 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00292 00293 jchar (JNICALL *CallCharMethod) 00294 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00295 jchar (JNICALL *CallCharMethodV) 00296 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00297 jchar (JNICALL *CallCharMethodA) 00298 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00299 00300 jshort (JNICALL *CallShortMethod) 00301 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00302 jshort (JNICALL *CallShortMethodV) 00303 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00304 jshort (JNICALL *CallShortMethodA) 00305 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00306 00307 jint (JNICALL *CallIntMethod) 00308 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00309 jint (JNICALL *CallIntMethodV) 00310 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00311 jint (JNICALL *CallIntMethodA) 00312 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00313 00314 jlong (JNICALL *CallLongMethod) 00315 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00316 jlong (JNICALL *CallLongMethodV) 00317 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00318 jlong (JNICALL *CallLongMethodA) 00319 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00320 00321 jfloat (JNICALL *CallFloatMethod) 00322 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00323 jfloat (JNICALL *CallFloatMethodV) 00324 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00325 jfloat (JNICALL *CallFloatMethodA) 00326 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00327 00328 jdouble (JNICALL *CallDoubleMethod) 00329 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00330 jdouble (JNICALL *CallDoubleMethodV) 00331 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00332 jdouble (JNICALL *CallDoubleMethodA) 00333 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 00334 00335 void (JNICALL *CallVoidMethod) 00336 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 00337 void (JNICALL *CallVoidMethodV) 00338 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 00339 void (JNICALL *CallVoidMethodA) 00340 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 00341 00342 jobject (JNICALL *CallNonvirtualObjectMethod) 00343 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00344 jobject (JNICALL *CallNonvirtualObjectMethodV) 00345 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00346 va_list args); 00347 jobject (JNICALL *CallNonvirtualObjectMethodA) 00348 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00349 jvalue * args); 00350 00351 jboolean (JNICALL *CallNonvirtualBooleanMethod) 00352 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00353 jboolean (JNICALL *CallNonvirtualBooleanMethodV) 00354 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00355 va_list args); 00356 jboolean (JNICALL *CallNonvirtualBooleanMethodA) 00357 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00358 jvalue * args); 00359 00360 jbyte (JNICALL *CallNonvirtualByteMethod) 00361 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00362 jbyte (JNICALL *CallNonvirtualByteMethodV) 00363 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00364 va_list args); 00365 jbyte (JNICALL *CallNonvirtualByteMethodA) 00366 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00367 jvalue *args); 00368 00369 jchar (JNICALL *CallNonvirtualCharMethod) 00370 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00371 jchar (JNICALL *CallNonvirtualCharMethodV) 00372 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00373 va_list args); 00374 jchar (JNICALL *CallNonvirtualCharMethodA) 00375 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00376 jvalue *args); 00377 00378 jshort (JNICALL *CallNonvirtualShortMethod) 00379 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00380 jshort (JNICALL *CallNonvirtualShortMethodV) 00381 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00382 va_list args); 00383 jshort (JNICALL *CallNonvirtualShortMethodA) 00384 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00385 jvalue *args); 00386 00387 jint (JNICALL *CallNonvirtualIntMethod) 00388 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00389 jint (JNICALL *CallNonvirtualIntMethodV) 00390 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00391 va_list args); 00392 jint (JNICALL *CallNonvirtualIntMethodA) 00393 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00394 jvalue *args); 00395 00396 jlong (JNICALL *CallNonvirtualLongMethod) 00397 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00398 jlong (JNICALL *CallNonvirtualLongMethodV) 00399 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00400 va_list args); 00401 jlong (JNICALL *CallNonvirtualLongMethodA) 00402 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00403 jvalue *args); 00404 00405 jfloat (JNICALL *CallNonvirtualFloatMethod) 00406 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00407 jfloat (JNICALL *CallNonvirtualFloatMethodV) 00408 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00409 va_list args); 00410 jfloat (JNICALL *CallNonvirtualFloatMethodA) 00411 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00412 jvalue *args); 00413 00414 jdouble (JNICALL *CallNonvirtualDoubleMethod) 00415 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00416 jdouble (JNICALL *CallNonvirtualDoubleMethodV) 00417 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00418 va_list args); 00419 jdouble (JNICALL *CallNonvirtualDoubleMethodA) 00420 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00421 jvalue *args); 00422 00423 void (JNICALL *CallNonvirtualVoidMethod) 00424 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 00425 void (JNICALL *CallNonvirtualVoidMethodV) 00426 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00427 va_list args); 00428 void (JNICALL *CallNonvirtualVoidMethodA) 00429 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 00430 jvalue * args); 00431 00432 jfieldID (JNICALL *GetFieldID) 00433 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 00434 00435 jobject (JNICALL *GetObjectField) 00436 (JNIEnv *env, jobject obj, jfieldID fieldID); 00437 jboolean (JNICALL *GetBooleanField) 00438 (JNIEnv *env, jobject obj, jfieldID fieldID); 00439 jbyte (JNICALL *GetByteField) 00440 (JNIEnv *env, jobject obj, jfieldID fieldID); 00441 jchar (JNICALL *GetCharField) 00442 (JNIEnv *env, jobject obj, jfieldID fieldID); 00443 jshort (JNICALL *GetShortField) 00444 (JNIEnv *env, jobject obj, jfieldID fieldID); 00445 jint (JNICALL *GetIntField) 00446 (JNIEnv *env, jobject obj, jfieldID fieldID); 00447 jlong (JNICALL *GetLongField) 00448 (JNIEnv *env, jobject obj, jfieldID fieldID); 00449 jfloat (JNICALL *GetFloatField) 00450 (JNIEnv *env, jobject obj, jfieldID fieldID); 00451 jdouble (JNICALL *GetDoubleField) 00452 (JNIEnv *env, jobject obj, jfieldID fieldID); 00453 00454 void (JNICALL *SetObjectField) 00455 (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); 00456 void (JNICALL *SetBooleanField) 00457 (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); 00458 void (JNICALL *SetByteField) 00459 (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); 00460 void (JNICALL *SetCharField) 00461 (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); 00462 void (JNICALL *SetShortField) 00463 (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); 00464 void (JNICALL *SetIntField) 00465 (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); 00466 void (JNICALL *SetLongField) 00467 (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); 00468 void (JNICALL *SetFloatField) 00469 (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); 00470 void (JNICALL *SetDoubleField) 00471 (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); 00472 00473 jmethodID (JNICALL *GetStaticMethodID) 00474 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 00475 00476 jobject (JNICALL *CallStaticObjectMethod) 00477 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00478 jobject (JNICALL *CallStaticObjectMethodV) 00479 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00480 jobject (JNICALL *CallStaticObjectMethodA) 00481 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00482 00483 jboolean (JNICALL *CallStaticBooleanMethod) 00484 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00485 jboolean (JNICALL *CallStaticBooleanMethodV) 00486 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00487 jboolean (JNICALL *CallStaticBooleanMethodA) 00488 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00489 00490 jbyte (JNICALL *CallStaticByteMethod) 00491 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00492 jbyte (JNICALL *CallStaticByteMethodV) 00493 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00494 jbyte (JNICALL *CallStaticByteMethodA) 00495 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00496 00497 jchar (JNICALL *CallStaticCharMethod) 00498 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00499 jchar (JNICALL *CallStaticCharMethodV) 00500 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00501 jchar (JNICALL *CallStaticCharMethodA) 00502 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00503 00504 jshort (JNICALL *CallStaticShortMethod) 00505 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00506 jshort (JNICALL *CallStaticShortMethodV) 00507 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00508 jshort (JNICALL *CallStaticShortMethodA) 00509 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00510 00511 jint (JNICALL *CallStaticIntMethod) 00512 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00513 jint (JNICALL *CallStaticIntMethodV) 00514 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00515 jint (JNICALL *CallStaticIntMethodA) 00516 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00517 00518 jlong (JNICALL *CallStaticLongMethod) 00519 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00520 jlong (JNICALL *CallStaticLongMethodV) 00521 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00522 jlong (JNICALL *CallStaticLongMethodA) 00523 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00524 00525 jfloat (JNICALL *CallStaticFloatMethod) 00526 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00527 jfloat (JNICALL *CallStaticFloatMethodV) 00528 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00529 jfloat (JNICALL *CallStaticFloatMethodA) 00530 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00531 00532 jdouble (JNICALL *CallStaticDoubleMethod) 00533 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 00534 jdouble (JNICALL *CallStaticDoubleMethodV) 00535 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 00536 jdouble (JNICALL *CallStaticDoubleMethodA) 00537 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 00538 00539 void (JNICALL *CallStaticVoidMethod) 00540 (JNIEnv *env, jclass cls, jmethodID methodID, ...); 00541 void (JNICALL *CallStaticVoidMethodV) 00542 (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); 00543 void (JNICALL *CallStaticVoidMethodA) 00544 (JNIEnv *env, jclass cls, jmethodID methodID, jvalue * args); 00545 00546 jfieldID (JNICALL *GetStaticFieldID) 00547 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 00548 jobject (JNICALL *GetStaticObjectField) 00549 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00550 jboolean (JNICALL *GetStaticBooleanField) 00551 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00552 jbyte (JNICALL *GetStaticByteField) 00553 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00554 jchar (JNICALL *GetStaticCharField) 00555 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00556 jshort (JNICALL *GetStaticShortField) 00557 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00558 jint (JNICALL *GetStaticIntField) 00559 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00560 jlong (JNICALL *GetStaticLongField) 00561 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00562 jfloat (JNICALL *GetStaticFloatField) 00563 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00564 jdouble (JNICALL *GetStaticDoubleField) 00565 (JNIEnv *env, jclass clazz, jfieldID fieldID); 00566 00567 void (JNICALL *SetStaticObjectField) 00568 (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); 00569 void (JNICALL *SetStaticBooleanField) 00570 (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); 00571 void (JNICALL *SetStaticByteField) 00572 (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); 00573 void (JNICALL *SetStaticCharField) 00574 (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); 00575 void (JNICALL *SetStaticShortField) 00576 (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); 00577 void (JNICALL *SetStaticIntField) 00578 (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); 00579 void (JNICALL *SetStaticLongField) 00580 (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); 00581 void (JNICALL *SetStaticFloatField) 00582 (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); 00583 void (JNICALL *SetStaticDoubleField) 00584 (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); 00585 00586 jstring (JNICALL *NewString) 00587 (JNIEnv *env, const jchar *unicode, jsize len); 00588 jsize (JNICALL *GetStringLength) 00589 (JNIEnv *env, jstring str); 00590 const jchar *(JNICALL *GetStringChars) 00591 (JNIEnv *env, jstring str, jboolean *isCopy); 00592 void (JNICALL *ReleaseStringChars) 00593 (JNIEnv *env, jstring str, const jchar *chars); 00594 00595 jstring (JNICALL *NewStringUTF) 00596 (JNIEnv *env, const char *utf); 00597 jsize (JNICALL *GetStringUTFLength) 00598 (JNIEnv *env, jstring str); 00599 const char* (JNICALL *GetStringUTFChars) 00600 (JNIEnv *env, jstring str, jboolean *isCopy); 00601 void (JNICALL *ReleaseStringUTFChars) 00602 (JNIEnv *env, jstring str, const char* chars); 00603 00604 00605 jsize (JNICALL *GetArrayLength) 00606 (JNIEnv *env, jarray array); 00607 00608 jobjectArray (JNICALL *NewObjectArray) 00609 (JNIEnv *env, jsize len, jclass clazz, jobject init); 00610 jobject (JNICALL *GetObjectArrayElement) 00611 (JNIEnv *env, jobjectArray array, jsize index); 00612 void (JNICALL *SetObjectArrayElement) 00613 (JNIEnv *env, jobjectArray array, jsize index, jobject val); 00614 00615 jbooleanArray (JNICALL *NewBooleanArray) 00616 (JNIEnv *env, jsize len); 00617 jbyteArray (JNICALL *NewByteArray) 00618 (JNIEnv *env, jsize len); 00619 jcharArray (JNICALL *NewCharArray) 00620 (JNIEnv *env, jsize len); 00621 jshortArray (JNICALL *NewShortArray) 00622 (JNIEnv *env, jsize len); 00623 jintArray (JNICALL *NewIntArray) 00624 (JNIEnv *env, jsize len); 00625 jlongArray (JNICALL *NewLongArray) 00626 (JNIEnv *env, jsize len); 00627 jfloatArray (JNICALL *NewFloatArray) 00628 (JNIEnv *env, jsize len); 00629 jdoubleArray (JNICALL *NewDoubleArray) 00630 (JNIEnv *env, jsize len); 00631 00632 jboolean * (JNICALL *GetBooleanArrayElements) 00633 (JNIEnv *env, jbooleanArray array, jboolean *isCopy); 00634 jbyte * (JNICALL *GetByteArrayElements) 00635 (JNIEnv *env, jbyteArray array, jboolean *isCopy); 00636 jchar * (JNICALL *GetCharArrayElements) 00637 (JNIEnv *env, jcharArray array, jboolean *isCopy); 00638 jshort * (JNICALL *GetShortArrayElements) 00639 (JNIEnv *env, jshortArray array, jboolean *isCopy); 00640 jint * (JNICALL *GetIntArrayElements) 00641 (JNIEnv *env, jintArray array, jboolean *isCopy); 00642 jlong * (JNICALL *GetLongArrayElements) 00643 (JNIEnv *env, jlongArray array, jboolean *isCopy); 00644 jfloat * (JNICALL *GetFloatArrayElements) 00645 (JNIEnv *env, jfloatArray array, jboolean *isCopy); 00646 jdouble * (JNICALL *GetDoubleArrayElements) 00647 (JNIEnv *env, jdoubleArray array, jboolean *isCopy); 00648 00649 void (JNICALL *ReleaseBooleanArrayElements) 00650 (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); 00651 void (JNICALL *ReleaseByteArrayElements) 00652 (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); 00653 void (JNICALL *ReleaseCharArrayElements) 00654 (JNIEnv *env, jcharArray array, jchar *elems, jint mode); 00655 void (JNICALL *ReleaseShortArrayElements) 00656 (JNIEnv *env, jshortArray array, jshort *elems, jint mode); 00657 void (JNICALL *ReleaseIntArrayElements) 00658 (JNIEnv *env, jintArray array, jint *elems, jint mode); 00659 void (JNICALL *ReleaseLongArrayElements) 00660 (JNIEnv *env, jlongArray array, jlong *elems, jint mode); 00661 void (JNICALL *ReleaseFloatArrayElements) 00662 (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); 00663 void (JNICALL *ReleaseDoubleArrayElements) 00664 (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); 00665 00666 void (JNICALL *GetBooleanArrayRegion) 00667 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 00668 void (JNICALL *GetByteArrayRegion) 00669 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 00670 void (JNICALL *GetCharArrayRegion) 00671 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 00672 void (JNICALL *GetShortArrayRegion) 00673 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 00674 void (JNICALL *GetIntArrayRegion) 00675 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 00676 void (JNICALL *GetLongArrayRegion) 00677 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 00678 void (JNICALL *GetFloatArrayRegion) 00679 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 00680 void (JNICALL *GetDoubleArrayRegion) 00681 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 00682 00683 void (JNICALL *SetBooleanArrayRegion) 00684 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 00685 void (JNICALL *SetByteArrayRegion) 00686 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 00687 void (JNICALL *SetCharArrayRegion) 00688 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 00689 void (JNICALL *SetShortArrayRegion) 00690 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 00691 void (JNICALL *SetIntArrayRegion) 00692 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 00693 void (JNICALL *SetLongArrayRegion) 00694 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 00695 void (JNICALL *SetFloatArrayRegion) 00696 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 00697 void (JNICALL *SetDoubleArrayRegion) 00698 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 00699 00700 jint (JNICALL *RegisterNatives) 00701 (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, 00702 jint nMethods); 00703 jint (JNICALL *UnregisterNatives) 00704 (JNIEnv *env, jclass clazz); 00705 00706 jint (JNICALL *MonitorEnter) 00707 (JNIEnv *env, jobject obj); 00708 jint (JNICALL *MonitorExit) 00709 (JNIEnv *env, jobject obj); 00710 00711 jint (JNICALL *GetJavaVM) 00712 (JNIEnv *env, JavaVM **vm); 00713 00714 void (JNICALL *GetStringRegion) 00715 (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); 00716 void (JNICALL *GetStringUTFRegion) 00717 (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); 00718 00719 void * (JNICALL *GetPrimitiveArrayCritical) 00720 (JNIEnv *env, jarray array, jboolean *isCopy); 00721 void (JNICALL *ReleasePrimitiveArrayCritical) 00722 (JNIEnv *env, jarray array, void *carray, jint mode); 00723 00724 const jchar * (JNICALL *GetStringCritical) 00725 (JNIEnv *env, jstring string, jboolean *isCopy); 00726 void (JNICALL *ReleaseStringCritical) 00727 (JNIEnv *env, jstring string, const jchar *cstring); 00728 00729 jweak (JNICALL *NewWeakGlobalRef) 00730 (JNIEnv *env, jobject obj); 00731 void (JNICALL *DeleteWeakGlobalRef) 00732 (JNIEnv *env, jweak ref); 00733 00734 jboolean (JNICALL *ExceptionCheck) 00735 (JNIEnv *env); 00736 00737 jobject (JNICALL *NewDirectByteBuffer) 00738 (JNIEnv* env, void* address, jlong capacity); 00739 void* (JNICALL *GetDirectBufferAddress) 00740 (JNIEnv* env, jobject buf); 00741 jlong (JNICALL *GetDirectBufferCapacity) 00742 (JNIEnv* env, jobject buf); 00743 00744 #if TARGET_RT_MAC_CFM 00745 void* real_functions[228]; 00746 #endif /* TARGET_RT_MAC_CFM */ 00747 00748 }; 00749 00750 /* 00751 * We use inlined functions for C++ so that programmers can write: 00752 * 00753 * env->FindClass("java/lang/String") 00754 * 00755 * in C++ rather than: 00756 * 00757 * (*env)->FindClass(env, "java/lang/String") 00758 * 00759 * in C. 00760 */ 00761 00762 struct JNIEnv_ { 00763 const struct JNINativeInterface_ *functions; 00764 #ifdef __cplusplus 00765 00766 jint GetVersion() { 00767 return functions->GetVersion(this); 00768 } 00769 jclass DefineClass(const char *name, jobject loader, const jbyte *buf, 00770 jsize len) { 00771 return functions->DefineClass(this, name, loader, buf, len); 00772 } 00773 jclass FindClass(const char *name) { 00774 return functions->FindClass(this, name); 00775 } 00776 jmethodID FromReflectedMethod(jobject method) { 00777 return functions->FromReflectedMethod(this,method); 00778 } 00779 jfieldID FromReflectedField(jobject field) { 00780 return functions->FromReflectedField(this,field); 00781 } 00782 00783 jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { 00784 return functions->ToReflectedMethod(this, cls, methodID, isStatic); 00785 } 00786 00787 jclass GetSuperclass(jclass sub) { 00788 return functions->GetSuperclass(this, sub); 00789 } 00790 jboolean IsAssignableFrom(jclass sub, jclass sup) { 00791 return functions->IsAssignableFrom(this, sub, sup); 00792 } 00793 00794 jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { 00795 return functions->ToReflectedField(this,cls,fieldID,isStatic); 00796 } 00797 00798 jint Throw(jthrowable obj) { 00799 return functions->Throw(this, obj); 00800 } 00801 jint ThrowNew(jclass clazz, const char *msg) { 00802 return functions->ThrowNew(this, clazz, msg); 00803 } 00804 jthrowable ExceptionOccurred() { 00805 return functions->ExceptionOccurred(this); 00806 } 00807 void ExceptionDescribe() { 00808 functions->ExceptionDescribe(this); 00809 } 00810 void ExceptionClear() { 00811 functions->ExceptionClear(this); 00812 } 00813 void FatalError(const char *msg) { 00814 functions->FatalError(this, msg); 00815 } 00816 00817 jint PushLocalFrame(jint capacity) { 00818 return functions->PushLocalFrame(this,capacity); 00819 } 00820 jobject PopLocalFrame(jobject result) { 00821 return functions->PopLocalFrame(this,result); 00822 } 00823 00824 jobject NewGlobalRef(jobject lobj) { 00825 return functions->NewGlobalRef(this,lobj); 00826 } 00827 void DeleteGlobalRef(jobject gref) { 00828 functions->DeleteGlobalRef(this,gref); 00829 } 00830 void DeleteLocalRef(jobject obj) { 00831 functions->DeleteLocalRef(this, obj); 00832 } 00833 00834 jboolean IsSameObject(jobject obj1, jobject obj2) { 00835 return functions->IsSameObject(this,obj1,obj2); 00836 } 00837 00838 jobject NewLocalRef(jobject ref) { 00839 return functions->NewLocalRef(this,ref); 00840 } 00841 jint EnsureLocalCapacity(jint capacity) { 00842 return functions->EnsureLocalCapacity(this,capacity); 00843 } 00844 00845 jobject AllocObject(jclass clazz) { 00846 return functions->AllocObject(this,clazz); 00847 } 00848 jobject NewObject(jclass clazz, jmethodID methodID, ...) { 00849 va_list args; 00850 jobject result; 00851 va_start(args, methodID); 00852 result = functions->NewObjectV(this,clazz,methodID,args); 00853 va_end(args); 00854 return result; 00855 } 00856 jobject NewObjectV(jclass clazz, jmethodID methodID, 00857 va_list args) { 00858 return functions->NewObjectV(this,clazz,methodID,args); 00859 } 00860 jobject NewObjectA(jclass clazz, jmethodID methodID, 00861 jvalue *args) { 00862 return functions->NewObjectA(this,clazz,methodID,args); 00863 } 00864 00865 jclass GetObjectClass(jobject obj) { 00866 return functions->GetObjectClass(this,obj); 00867 } 00868 jboolean IsInstanceOf(jobject obj, jclass clazz) { 00869 return functions->IsInstanceOf(this,obj,clazz); 00870 } 00871 00872 jmethodID GetMethodID(jclass clazz, const char *name, 00873 const char *sig) { 00874 return functions->GetMethodID(this,clazz,name,sig); 00875 } 00876 00877 jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { 00878 va_list args; 00879 jobject result; 00880 va_start(args,methodID); 00881 result = functions->CallObjectMethodV(this,obj,methodID,args); 00882 va_end(args); 00883 return result; 00884 } 00885 jobject CallObjectMethodV(jobject obj, jmethodID methodID, 00886 va_list args) { 00887 return functions->CallObjectMethodV(this,obj,methodID,args); 00888 } 00889 jobject CallObjectMethodA(jobject obj, jmethodID methodID, 00890 jvalue * args) { 00891 return functions->CallObjectMethodA(this,obj,methodID,args); 00892 } 00893 00894 jboolean CallBooleanMethod(jobject obj, 00895 jmethodID methodID, ...) { 00896 va_list args; 00897 jboolean result; 00898 va_start(args,methodID); 00899 result = functions->CallBooleanMethodV(this,obj,methodID,args); 00900 va_end(args); 00901 return result; 00902 } 00903 jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, 00904 va_list args) { 00905 return functions->CallBooleanMethodV(this,obj,methodID,args); 00906 } 00907 jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, 00908 jvalue * args) { 00909 return functions->CallBooleanMethodA(this,obj,methodID, args); 00910 } 00911 00912 jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { 00913 va_list args; 00914 jbyte result; 00915 va_start(args,methodID); 00916 result = functions->CallByteMethodV(this,obj,methodID,args); 00917 va_end(args); 00918 return result; 00919 } 00920 jbyte CallByteMethodV(jobject obj, jmethodID methodID, 00921 va_list args) { 00922 return functions->CallByteMethodV(this,obj,methodID,args); 00923 } 00924 jbyte CallByteMethodA(jobject obj, jmethodID methodID, 00925 jvalue * args) { 00926 return functions->CallByteMethodA(this,obj,methodID,args); 00927 } 00928 00929 jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { 00930 va_list args; 00931 jchar result; 00932 va_start(args,methodID); 00933 result = functions->CallCharMethodV(this,obj,methodID,args); 00934 va_end(args); 00935 return result; 00936 } 00937 jchar CallCharMethodV(jobject obj, jmethodID methodID, 00938 va_list args) { 00939 return functions->CallCharMethodV(this,obj,methodID,args); 00940 } 00941 jchar CallCharMethodA(jobject obj, jmethodID methodID, 00942 jvalue * args) { 00943 return functions->CallCharMethodA(this,obj,methodID,args); 00944 } 00945 00946 jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { 00947 va_list args; 00948 jshort result; 00949 va_start(args,methodID); 00950 result = functions->CallShortMethodV(this,obj,methodID,args); 00951 va_end(args); 00952 return result; 00953 } 00954 jshort CallShortMethodV(jobject obj, jmethodID methodID, 00955 va_list args) { 00956 return functions->CallShortMethodV(this,obj,methodID,args); 00957 } 00958 jshort CallShortMethodA(jobject obj, jmethodID methodID, 00959 jvalue * args) { 00960 return functions->CallShortMethodA(this,obj,methodID,args); 00961 } 00962 00963 jint CallIntMethod(jobject obj, jmethodID methodID, ...) { 00964 va_list args; 00965 jint result; 00966 va_start(args,methodID); 00967 result = functions->CallIntMethodV(this,obj,methodID,args); 00968 va_end(args); 00969 return result; 00970 } 00971 jint CallIntMethodV(jobject obj, jmethodID methodID, 00972 va_list args) { 00973 return functions->CallIntMethodV(this,obj,methodID,args); 00974 } 00975 jint CallIntMethodA(jobject obj, jmethodID methodID, 00976 jvalue * args) { 00977 return functions->CallIntMethodA(this,obj,methodID,args); 00978 } 00979 00980 jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { 00981 va_list args; 00982 jlong result; 00983 va_start(args,methodID); 00984 result = functions->CallLongMethodV(this,obj,methodID,args); 00985 va_end(args); 00986 return result; 00987 } 00988 jlong CallLongMethodV(jobject obj, jmethodID methodID, 00989 va_list args) { 00990 return functions->CallLongMethodV(this,obj,methodID,args); 00991 } 00992 jlong CallLongMethodA(jobject obj, jmethodID methodID, 00993 jvalue * args) { 00994 return functions->CallLongMethodA(this,obj,methodID,args); 00995 } 00996 00997 jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { 00998 va_list args; 00999 jfloat result; 01000 va_start(args,methodID); 01001 result = functions->CallFloatMethodV(this,obj,methodID,args); 01002 va_end(args); 01003 return result; 01004 } 01005 jfloat CallFloatMethodV(jobject obj, jmethodID methodID, 01006 va_list args) { 01007 return functions->CallFloatMethodV(this,obj,methodID,args); 01008 } 01009 jfloat CallFloatMethodA(jobject obj, jmethodID methodID, 01010 jvalue * args) { 01011 return functions->CallFloatMethodA(this,obj,methodID,args); 01012 } 01013 01014 jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { 01015 va_list args; 01016 jdouble result; 01017 va_start(args,methodID); 01018 result = functions->CallDoubleMethodV(this,obj,methodID,args); 01019 va_end(args); 01020 return result; 01021 } 01022 jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, 01023 va_list args) { 01024 return functions->CallDoubleMethodV(this,obj,methodID,args); 01025 } 01026 jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, 01027 jvalue * args) { 01028 return functions->CallDoubleMethodA(this,obj,methodID,args); 01029 } 01030 01031 void CallVoidMethod(jobject obj, jmethodID methodID, ...) { 01032 va_list args; 01033 va_start(args,methodID); 01034 functions->CallVoidMethodV(this,obj,methodID,args); 01035 va_end(args); 01036 } 01037 void CallVoidMethodV(jobject obj, jmethodID methodID, 01038 va_list args) { 01039 functions->CallVoidMethodV(this,obj,methodID,args); 01040 } 01041 void CallVoidMethodA(jobject obj, jmethodID methodID, 01042 jvalue * args) { 01043 functions->CallVoidMethodA(this,obj,methodID,args); 01044 } 01045 01046 jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, 01047 jmethodID methodID, ...) { 01048 va_list args; 01049 jobject result; 01050 va_start(args,methodID); 01051 result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, 01052 methodID,args); 01053 va_end(args); 01054 return result; 01055 } 01056 jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, 01057 jmethodID methodID, va_list args) { 01058 return functions->CallNonvirtualObjectMethodV(this,obj,clazz, 01059 methodID,args); 01060 } 01061 jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, 01062 jmethodID methodID, jvalue * args) { 01063 return functions->CallNonvirtualObjectMethodA(this,obj,clazz, 01064 methodID,args); 01065 } 01066 01067 jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, 01068 jmethodID methodID, ...) { 01069 va_list args; 01070 jboolean result; 01071 va_start(args,methodID); 01072 result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 01073 methodID,args); 01074 va_end(args); 01075 return result; 01076 } 01077 jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, 01078 jmethodID methodID, va_list args) { 01079 return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 01080 methodID,args); 01081 } 01082 jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, 01083 jmethodID methodID, jvalue * args) { 01084 return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, 01085 methodID, args); 01086 } 01087 01088 jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, 01089 jmethodID methodID, ...) { 01090 va_list args; 01091 jbyte result; 01092 va_start(args,methodID); 01093 result = functions->CallNonvirtualByteMethodV(this,obj,clazz, 01094 methodID,args); 01095 va_end(args); 01096 return result; 01097 } 01098 jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, 01099 jmethodID methodID, va_list args) { 01100 return functions->CallNonvirtualByteMethodV(this,obj,clazz, 01101 methodID,args); 01102 } 01103 jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, 01104 jmethodID methodID, jvalue * args) { 01105 return functions->CallNonvirtualByteMethodA(this,obj,clazz, 01106 methodID,args); 01107 } 01108 01109 jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, 01110 jmethodID methodID, ...) { 01111 va_list args; 01112 jchar result; 01113 va_start(args,methodID); 01114 result = functions->CallNonvirtualCharMethodV(this,obj,clazz, 01115 methodID,args); 01116 va_end(args); 01117 return result; 01118 } 01119 jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, 01120 jmethodID methodID, va_list args) { 01121 return functions->CallNonvirtualCharMethodV(this,obj,clazz, 01122 methodID,args); 01123 } 01124 jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, 01125 jmethodID methodID, jvalue * args) { 01126 return functions->CallNonvirtualCharMethodA(this,obj,clazz, 01127 methodID,args); 01128 } 01129 01130 jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, 01131 jmethodID methodID, ...) { 01132 va_list args; 01133 jshort result; 01134 va_start(args,methodID); 01135 result = functions->CallNonvirtualShortMethodV(this,obj,clazz, 01136 methodID,args); 01137 va_end(args); 01138 return result; 01139 } 01140 jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, 01141 jmethodID methodID, va_list args) { 01142 return functions->CallNonvirtualShortMethodV(this,obj,clazz, 01143 methodID,args); 01144 } 01145 jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, 01146 jmethodID methodID, jvalue * args) { 01147 return functions->CallNonvirtualShortMethodA(this,obj,clazz, 01148 methodID,args); 01149 } 01150 01151 jint CallNonvirtualIntMethod(jobject obj, jclass clazz, 01152 jmethodID methodID, ...) { 01153 va_list args; 01154 jint result; 01155 va_start(args,methodID); 01156 result = functions->CallNonvirtualIntMethodV(this,obj,clazz, 01157 methodID,args); 01158 va_end(args); 01159 return result; 01160 } 01161 jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, 01162 jmethodID methodID, va_list args) { 01163 return functions->CallNonvirtualIntMethodV(this,obj,clazz, 01164 methodID,args); 01165 } 01166 jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, 01167 jmethodID methodID, jvalue * args) { 01168 return functions->CallNonvirtualIntMethodA(this,obj,clazz, 01169 methodID,args); 01170 } 01171 01172 jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, 01173 jmethodID methodID, ...) { 01174 va_list args; 01175 jlong result; 01176 va_start(args,methodID); 01177 result = functions->CallNonvirtualLongMethodV(this,obj,clazz, 01178 methodID,args); 01179 va_end(args); 01180 return result; 01181 } 01182 jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, 01183 jmethodID methodID, va_list args) { 01184 return functions->CallNonvirtualLongMethodV(this,obj,clazz, 01185 methodID,args); 01186 } 01187 jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, 01188 jmethodID methodID, jvalue * args) { 01189 return functions->CallNonvirtualLongMethodA(this,obj,clazz, 01190 methodID,args); 01191 } 01192 01193 jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, 01194 jmethodID methodID, ...) { 01195 va_list args; 01196 jfloat result; 01197 va_start(args,methodID); 01198 result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, 01199 methodID,args); 01200 va_end(args); 01201 return result; 01202 } 01203 jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, 01204 jmethodID methodID, 01205 va_list args) { 01206 return functions->CallNonvirtualFloatMethodV(this,obj,clazz, 01207 methodID,args); 01208 } 01209 jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, 01210 jmethodID methodID, 01211 jvalue * args) { 01212 return functions->CallNonvirtualFloatMethodA(this,obj,clazz, 01213 methodID,args); 01214 } 01215 01216 jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, 01217 jmethodID methodID, ...) { 01218 va_list args; 01219 jdouble result; 01220 va_start(args,methodID); 01221 result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 01222 methodID,args); 01223 va_end(args); 01224 return result; 01225 } 01226 jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, 01227 jmethodID methodID, 01228 va_list args) { 01229 return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 01230 methodID,args); 01231 } 01232 jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, 01233 jmethodID methodID, 01234 jvalue * args) { 01235 return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, 01236 methodID,args); 01237 } 01238 01239 void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 01240 jmethodID methodID, ...) { 01241 va_list args; 01242 va_start(args,methodID); 01243 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 01244 va_end(args); 01245 } 01246 void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 01247 jmethodID methodID, 01248 va_list args) { 01249 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 01250 } 01251 void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 01252 jmethodID methodID, 01253 jvalue * args) { 01254 functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); 01255 } 01256 01257 jfieldID GetFieldID(jclass clazz, const char *name, 01258 const char *sig) { 01259 return functions->GetFieldID(this,clazz,name,sig); 01260 } 01261 01262 jobject GetObjectField(jobject obj, jfieldID fieldID) { 01263 return functions->GetObjectField(this,obj,fieldID); 01264 } 01265 jboolean GetBooleanField(jobject obj, jfieldID fieldID) { 01266 return functions->GetBooleanField(this,obj,fieldID); 01267 } 01268 jbyte GetByteField(jobject obj, jfieldID fieldID) { 01269 return functions->GetByteField(this,obj,fieldID); 01270 } 01271 jchar GetCharField(jobject obj, jfieldID fieldID) { 01272 return functions->GetCharField(this,obj,fieldID); 01273 } 01274 jshort GetShortField(jobject obj, jfieldID fieldID) { 01275 return functions->GetShortField(this,obj,fieldID); 01276 } 01277 jint GetIntField(jobject obj, jfieldID fieldID) { 01278 return functions->GetIntField(this,obj,fieldID); 01279 } 01280 jlong GetLongField(jobject obj, jfieldID fieldID) { 01281 return functions->GetLongField(this,obj,fieldID); 01282 } 01283 jfloat GetFloatField(jobject obj, jfieldID fieldID) { 01284 return functions->GetFloatField(this,obj,fieldID); 01285 } 01286 jdouble GetDoubleField(jobject obj, jfieldID fieldID) { 01287 return functions->GetDoubleField(this,obj,fieldID); 01288 } 01289 01290 void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { 01291 functions->SetObjectField(this,obj,fieldID,val); 01292 } 01293 void SetBooleanField(jobject obj, jfieldID fieldID, 01294 jboolean val) { 01295 functions->SetBooleanField(this,obj,fieldID,val); 01296 } 01297 void SetByteField(jobject obj, jfieldID fieldID, 01298 jbyte val) { 01299 functions->SetByteField(this,obj,fieldID,val); 01300 } 01301 void SetCharField(jobject obj, jfieldID fieldID, 01302 jchar val) { 01303 functions->SetCharField(this,obj,fieldID,val); 01304 } 01305 void SetShortField(jobject obj, jfieldID fieldID, 01306 jshort val) { 01307 functions->SetShortField(this,obj,fieldID,val); 01308 } 01309 void SetIntField(jobject obj, jfieldID fieldID, 01310 jint val) { 01311 functions->SetIntField(this,obj,fieldID,val); 01312 } 01313 void SetLongField(jobject obj, jfieldID fieldID, 01314 jlong val) { 01315 functions->SetLongField(this,obj,fieldID,val); 01316 } 01317 void SetFloatField(jobject obj, jfieldID fieldID, 01318 jfloat val) { 01319 functions->SetFloatField(this,obj,fieldID,val); 01320 } 01321 void SetDoubleField(jobject obj, jfieldID fieldID, 01322 jdouble val) { 01323 functions->SetDoubleField(this,obj,fieldID,val); 01324 } 01325 01326 jmethodID GetStaticMethodID(jclass clazz, const char *name, 01327 const char *sig) { 01328 return functions->GetStaticMethodID(this,clazz,name,sig); 01329 } 01330 01331 jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, 01332 ...) { 01333 va_list args; 01334 jobject result; 01335 va_start(args,methodID); 01336 result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); 01337 va_end(args); 01338 return result; 01339 } 01340 jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, 01341 va_list args) { 01342 return functions->CallStaticObjectMethodV(this,clazz,methodID,args); 01343 } 01344 jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, 01345 jvalue *args) { 01346 return functions->CallStaticObjectMethodA(this,clazz,methodID,args); 01347 } 01348 01349 jboolean CallStaticBooleanMethod(jclass clazz, 01350 jmethodID methodID, ...) { 01351 va_list args; 01352 jboolean result; 01353 va_start(args,methodID); 01354 result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 01355 va_end(args); 01356 return result; 01357 } 01358 jboolean CallStaticBooleanMethodV(jclass clazz, 01359 jmethodID methodID, va_list args) { 01360 return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 01361 } 01362 jboolean CallStaticBooleanMethodA(jclass clazz, 01363 jmethodID methodID, jvalue *args) { 01364 return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); 01365 } 01366 01367 jbyte CallStaticByteMethod(jclass clazz, 01368 jmethodID methodID, ...) { 01369 va_list args; 01370 jbyte result; 01371 va_start(args,methodID); 01372 result = functions->CallStaticByteMethodV(this,clazz,methodID,args); 01373 va_end(args); 01374 return result; 01375 } 01376 jbyte CallStaticByteMethodV(jclass clazz, 01377 jmethodID methodID, va_list args) { 01378 return functions->CallStaticByteMethodV(this,clazz,methodID,args); 01379 } 01380 jbyte CallStaticByteMethodA(jclass clazz, 01381 jmethodID methodID, jvalue *args) { 01382 return functions->CallStaticByteMethodA(this,clazz,methodID,args); 01383 } 01384 01385 jchar CallStaticCharMethod(jclass clazz, 01386 jmethodID methodID, ...) { 01387 va_list args; 01388 jchar result; 01389 va_start(args,methodID); 01390 result = functions->CallStaticCharMethodV(this,clazz,methodID,args); 01391 va_end(args); 01392 return result; 01393 } 01394 jchar CallStaticCharMethodV(jclass clazz, 01395 jmethodID methodID, va_list args) { 01396 return functions->CallStaticCharMethodV(this,clazz,methodID,args); 01397 } 01398 jchar CallStaticCharMethodA(jclass clazz, 01399 jmethodID methodID, jvalue *args) { 01400 return functions->CallStaticCharMethodA(this,clazz,methodID,args); 01401 } 01402 01403 jshort CallStaticShortMethod(jclass clazz, 01404 jmethodID methodID, ...) { 01405 va_list args; 01406 jshort result; 01407 va_start(args,methodID); 01408 result = functions->CallStaticShortMethodV(this,clazz,methodID,args); 01409 va_end(args); 01410 return result; 01411 } 01412 jshort CallStaticShortMethodV(jclass clazz, 01413 jmethodID methodID, va_list args) { 01414 return functions->CallStaticShortMethodV(this,clazz,methodID,args); 01415 } 01416 jshort CallStaticShortMethodA(jclass clazz, 01417 jmethodID methodID, jvalue *args) { 01418 return functions->CallStaticShortMethodA(this,clazz,methodID,args); 01419 } 01420 01421 jint CallStaticIntMethod(jclass clazz, 01422 jmethodID methodID, ...) { 01423 va_list args; 01424 jint result; 01425 va_start(args,methodID); 01426 result = functions->CallStaticIntMethodV(this,clazz,methodID,args); 01427 va_end(args); 01428 return result; 01429 } 01430 jint CallStaticIntMethodV(jclass clazz, 01431 jmethodID methodID, va_list args) { 01432 return functions->CallStaticIntMethodV(this,clazz,methodID,args); 01433 } 01434 jint CallStaticIntMethodA(jclass clazz, 01435 jmethodID methodID, jvalue *args) { 01436 return functions->CallStaticIntMethodA(this,clazz,methodID,args); 01437 } 01438 01439 jlong CallStaticLongMethod(jclass clazz, 01440 jmethodID methodID, ...) { 01441 va_list args; 01442 jlong result; 01443 va_start(args,methodID); 01444 result = functions->CallStaticLongMethodV(this,clazz,methodID,args); 01445 va_end(args); 01446 return result; 01447 } 01448 jlong CallStaticLongMethodV(jclass clazz, 01449 jmethodID methodID, va_list args) { 01450 return functions->CallStaticLongMethodV(this,clazz,methodID,args); 01451 } 01452 jlong CallStaticLongMethodA(jclass clazz, 01453 jmethodID methodID, jvalue *args) { 01454 return functions->CallStaticLongMethodA(this,clazz,methodID,args); 01455 } 01456 01457 jfloat CallStaticFloatMethod(jclass clazz, 01458 jmethodID methodID, ...) { 01459 va_list args; 01460 jfloat result; 01461 va_start(args,methodID); 01462 result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); 01463 va_end(args); 01464 return result; 01465 } 01466 jfloat CallStaticFloatMethodV(jclass clazz, 01467 jmethodID methodID, va_list args) { 01468 return functions->CallStaticFloatMethodV(this,clazz,methodID,args); 01469 } 01470 jfloat CallStaticFloatMethodA(jclass clazz, 01471 jmethodID methodID, jvalue *args) { 01472 return functions->CallStaticFloatMethodA(this,clazz,methodID,args); 01473 } 01474 01475 jdouble CallStaticDoubleMethod(jclass clazz, 01476 jmethodID methodID, ...) { 01477 va_list args; 01478 jdouble result; 01479 va_start(args,methodID); 01480 result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 01481 va_end(args); 01482 return result; 01483 } 01484 jdouble CallStaticDoubleMethodV(jclass clazz, 01485 jmethodID methodID, va_list args) { 01486 return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 01487 } 01488 jdouble CallStaticDoubleMethodA(jclass clazz, 01489 jmethodID methodID, jvalue *args) { 01490 return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); 01491 } 01492 01493 void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { 01494 va_list args; 01495 va_start(args,methodID); 01496 functions->CallStaticVoidMethodV(this,cls,methodID,args); 01497 va_end(args); 01498 } 01499 void CallStaticVoidMethodV(jclass cls, jmethodID methodID, 01500 va_list args) { 01501 functions->CallStaticVoidMethodV(this,cls,methodID,args); 01502 } 01503 void CallStaticVoidMethodA(jclass cls, jmethodID methodID, 01504 jvalue * args) { 01505 functions->CallStaticVoidMethodA(this,cls,methodID,args); 01506 } 01507 01508 jfieldID GetStaticFieldID(jclass clazz, const char *name, 01509 const char *sig) { 01510 return functions->GetStaticFieldID(this,clazz,name,sig); 01511 } 01512 jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { 01513 return functions->GetStaticObjectField(this,clazz,fieldID); 01514 } 01515 jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { 01516 return functions->GetStaticBooleanField(this,clazz,fieldID); 01517 } 01518 jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { 01519 return functions->GetStaticByteField(this,clazz,fieldID); 01520 } 01521 jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { 01522 return functions->GetStaticCharField(this,clazz,fieldID); 01523 } 01524 jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { 01525 return functions->GetStaticShortField(this,clazz,fieldID); 01526 } 01527 jint GetStaticIntField(jclass clazz, jfieldID fieldID) { 01528 return functions->GetStaticIntField(this,clazz,fieldID); 01529 } 01530 jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { 01531 return functions->GetStaticLongField(this,clazz,fieldID); 01532 } 01533 jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { 01534 return functions->GetStaticFloatField(this,clazz,fieldID); 01535 } 01536 jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { 01537 return functions->GetStaticDoubleField(this,clazz,fieldID); 01538 } 01539 01540 void SetStaticObjectField(jclass clazz, jfieldID fieldID, 01541 jobject value) { 01542 functions->SetStaticObjectField(this,clazz,fieldID,value); 01543 } 01544 void SetStaticBooleanField(jclass clazz, jfieldID fieldID, 01545 jboolean value) { 01546 functions->SetStaticBooleanField(this,clazz,fieldID,value); 01547 } 01548 void SetStaticByteField(jclass clazz, jfieldID fieldID, 01549 jbyte value) { 01550 functions->SetStaticByteField(this,clazz,fieldID,value); 01551 } 01552 void SetStaticCharField(jclass clazz, jfieldID fieldID, 01553 jchar value) { 01554 functions->SetStaticCharField(this,clazz,fieldID,value); 01555 } 01556 void SetStaticShortField(jclass clazz, jfieldID fieldID, 01557 jshort value) { 01558 functions->SetStaticShortField(this,clazz,fieldID,value); 01559 } 01560 void SetStaticIntField(jclass clazz, jfieldID fieldID, 01561 jint value) { 01562 functions->SetStaticIntField(this,clazz,fieldID,value); 01563 } 01564 void SetStaticLongField(jclass clazz, jfieldID fieldID, 01565 jlong value) { 01566 functions->SetStaticLongField(this,clazz,fieldID,value); 01567 } 01568 void SetStaticFloatField(jclass clazz, jfieldID fieldID, 01569 jfloat value) { 01570 functions->SetStaticFloatField(this,clazz,fieldID,value); 01571 } 01572 void SetStaticDoubleField(jclass clazz, jfieldID fieldID, 01573 jdouble value) { 01574 functions->SetStaticDoubleField(this,clazz,fieldID,value); 01575 } 01576 01577 jstring NewString(const jchar *unicode, jsize len) { 01578 return functions->NewString(this,unicode,len); 01579 } 01580 jsize GetStringLength(jstring str) { 01581 return functions->GetStringLength(this,str); 01582 } 01583 const jchar *GetStringChars(jstring str, jboolean *isCopy) { 01584 return functions->GetStringChars(this,str,isCopy); 01585 } 01586 void ReleaseStringChars(jstring str, const jchar *chars) { 01587 functions->ReleaseStringChars(this,str,chars); 01588 } 01589 01590 jstring NewStringUTF(const char *utf) { 01591 return functions->NewStringUTF(this,utf); 01592 } 01593 jsize GetStringUTFLength(jstring str) { 01594 return functions->GetStringUTFLength(this,str); 01595 } 01596 const char* GetStringUTFChars(jstring str, jboolean *isCopy) { 01597 return functions->GetStringUTFChars(this,str,isCopy); 01598 } 01599 void ReleaseStringUTFChars(jstring str, const char* chars) { 01600 functions->ReleaseStringUTFChars(this,str,chars); 01601 } 01602 01603 jsize GetArrayLength(jarray array) { 01604 return functions->GetArrayLength(this,array); 01605 } 01606 01607 jobjectArray NewObjectArray(jsize len, jclass clazz, 01608 jobject init) { 01609 return functions->NewObjectArray(this,len,clazz,init); 01610 } 01611 jobject GetObjectArrayElement(jobjectArray array, jsize index) { 01612 return functions->GetObjectArrayElement(this,array,index); 01613 } 01614 void SetObjectArrayElement(jobjectArray array, jsize index, 01615 jobject val) { 01616 functions->SetObjectArrayElement(this,array,index,val); 01617 } 01618 01619 jbooleanArray NewBooleanArray(jsize len) { 01620 return functions->NewBooleanArray(this,len); 01621 } 01622 jbyteArray NewByteArray(jsize len) { 01623 return functions->NewByteArray(this,len); 01624 } 01625 jcharArray NewCharArray(jsize len) { 01626 return functions->NewCharArray(this,len); 01627 } 01628 jshortArray NewShortArray(jsize len) { 01629 return functions->NewShortArray(this,len); 01630 } 01631 jintArray NewIntArray(jsize len) { 01632 return functions->NewIntArray(this,len); 01633 } 01634 jlongArray NewLongArray(jsize len) { 01635 return functions->NewLongArray(this,len); 01636 } 01637 jfloatArray NewFloatArray(jsize len) { 01638 return functions->NewFloatArray(this,len); 01639 } 01640 jdoubleArray NewDoubleArray(jsize len) { 01641 return functions->NewDoubleArray(this,len); 01642 } 01643 01644 jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { 01645 return functions->GetBooleanArrayElements(this,array,isCopy); 01646 } 01647 jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { 01648 return functions->GetByteArrayElements(this,array,isCopy); 01649 } 01650 jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { 01651 return functions->GetCharArrayElements(this,array,isCopy); 01652 } 01653 jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { 01654 return functions->GetShortArrayElements(this,array,isCopy); 01655 } 01656 jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { 01657 return functions->GetIntArrayElements(this,array,isCopy); 01658 } 01659 jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { 01660 return functions->GetLongArrayElements(this,array,isCopy); 01661 } 01662 jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { 01663 return functions->GetFloatArrayElements(this,array,isCopy); 01664 } 01665 jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { 01666 return functions->GetDoubleArrayElements(this,array,isCopy); 01667 } 01668 01669 void ReleaseBooleanArrayElements(jbooleanArray array, 01670 jboolean *elems, 01671 jint mode) { 01672 functions->ReleaseBooleanArrayElements(this,array,elems,mode); 01673 } 01674 void ReleaseByteArrayElements(jbyteArray array, 01675 jbyte *elems, 01676 jint mode) { 01677 functions->ReleaseByteArrayElements(this,array,elems,mode); 01678 } 01679 void ReleaseCharArrayElements(jcharArray array, 01680 jchar *elems, 01681 jint mode) { 01682 functions->ReleaseCharArrayElements(this,array,elems,mode); 01683 } 01684 void ReleaseShortArrayElements(jshortArray array, 01685 jshort *elems, 01686 jint mode) { 01687 functions->ReleaseShortArrayElements(this,array,elems,mode); 01688 } 01689 void ReleaseIntArrayElements(jintArray array, 01690 jint *elems, 01691 jint mode) { 01692 functions->ReleaseIntArrayElements(this,array,elems,mode); 01693 } 01694 void ReleaseLongArrayElements(jlongArray array, 01695 jlong *elems, 01696 jint mode) { 01697 functions->ReleaseLongArrayElements(this,array,elems,mode); 01698 } 01699 void ReleaseFloatArrayElements(jfloatArray array, 01700 jfloat *elems, 01701 jint mode) { 01702 functions->ReleaseFloatArrayElements(this,array,elems,mode); 01703 } 01704 void ReleaseDoubleArrayElements(jdoubleArray array, 01705 jdouble *elems, 01706 jint mode) { 01707 functions->ReleaseDoubleArrayElements(this,array,elems,mode); 01708 } 01709 01710 void GetBooleanArrayRegion(jbooleanArray array, 01711 jsize start, jsize len, jboolean *buf) { 01712 functions->GetBooleanArrayRegion(this,array,start,len,buf); 01713 } 01714 void GetByteArrayRegion(jbyteArray array, 01715 jsize start, jsize len, jbyte *buf) { 01716 functions->GetByteArrayRegion(this,array,start,len,buf); 01717 } 01718 void GetCharArrayRegion(jcharArray array, 01719 jsize start, jsize len, jchar *buf) { 01720 functions->GetCharArrayRegion(this,array,start,len,buf); 01721 } 01722 void GetShortArrayRegion(jshortArray array, 01723 jsize start, jsize len, jshort *buf) { 01724 functions->GetShortArrayRegion(this,array,start,len,buf); 01725 } 01726 void GetIntArrayRegion(jintArray array, 01727 jsize start, jsize len, jint *buf) { 01728 functions->GetIntArrayRegion(this,array,start,len,buf); 01729 } 01730 void GetLongArrayRegion(jlongArray array, 01731 jsize start, jsize len, jlong *buf) { 01732 functions->GetLongArrayRegion(this,array,start,len,buf); 01733 } 01734 void GetFloatArrayRegion(jfloatArray array, 01735 jsize start, jsize len, jfloat *buf) { 01736 functions->GetFloatArrayRegion(this,array,start,len,buf); 01737 } 01738 void GetDoubleArrayRegion(jdoubleArray array, 01739 jsize start, jsize len, jdouble *buf) { 01740 functions->GetDoubleArrayRegion(this,array,start,len,buf); 01741 } 01742 01743 void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 01744 jboolean *buf) { 01745 functions->SetBooleanArrayRegion(this,array,start,len,buf); 01746 } 01747 void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 01748 jbyte *buf) { 01749 functions->SetByteArrayRegion(this,array,start,len,buf); 01750 } 01751 void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 01752 jchar *buf) { 01753 functions->SetCharArrayRegion(this,array,start,len,buf); 01754 } 01755 void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 01756 jshort *buf) { 01757 functions->SetShortArrayRegion(this,array,start,len,buf); 01758 } 01759 void SetIntArrayRegion(jintArray array, jsize start, jsize len, 01760 jint *buf) { 01761 functions->SetIntArrayRegion(this,array,start,len,buf); 01762 } 01763 void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 01764 jlong *buf) { 01765 functions->SetLongArrayRegion(this,array,start,len,buf); 01766 } 01767 void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 01768 jfloat *buf) { 01769 functions->SetFloatArrayRegion(this,array,start,len,buf); 01770 } 01771 void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 01772 jdouble *buf) { 01773 functions->SetDoubleArrayRegion(this,array,start,len,buf); 01774 } 01775 01776 jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, 01777 jint nMethods) { 01778 return functions->RegisterNatives(this,clazz,methods,nMethods); 01779 } 01780 jint UnregisterNatives(jclass clazz) { 01781 return functions->UnregisterNatives(this,clazz); 01782 } 01783 01784 jint MonitorEnter(jobject obj) { 01785 return functions->MonitorEnter(this,obj); 01786 } 01787 jint MonitorExit(jobject obj) { 01788 return functions->MonitorExit(this,obj); 01789 } 01790 01791 jint GetJavaVM(JavaVM **vm) { 01792 return functions->GetJavaVM(this,vm); 01793 } 01794 01795 void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { 01796 functions->GetStringRegion(this,str,start,len,buf); 01797 } 01798 void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { 01799 functions->GetStringUTFRegion(this,str,start,len,buf); 01800 } 01801 01802 void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { 01803 return functions->GetPrimitiveArrayCritical(this,array,isCopy); 01804 } 01805 void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { 01806 functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); 01807 } 01808 01809 const jchar * GetStringCritical(jstring string, jboolean *isCopy) { 01810 return functions->GetStringCritical(this,string,isCopy); 01811 } 01812 void ReleaseStringCritical(jstring string, const jchar *cstring) { 01813 functions->ReleaseStringCritical(this,string,cstring); 01814 } 01815 01816 jweak NewWeakGlobalRef(jobject obj) { 01817 return functions->NewWeakGlobalRef(this,obj); 01818 } 01819 void DeleteWeakGlobalRef(jweak ref) { 01820 functions->DeleteWeakGlobalRef(this,ref); 01821 } 01822 01823 jboolean ExceptionCheck() { 01824 return functions->ExceptionCheck(this); 01825 } 01826 01827 jobject NewDirectByteBuffer(void* address, jlong capacity) { 01828 return functions->NewDirectByteBuffer(this, address, capacity); 01829 } 01830 void* GetDirectBufferAddress(jobject buf) { 01831 return functions->GetDirectBufferAddress(this, buf); 01832 } 01833 jlong GetDirectBufferCapacity(jobject buf) { 01834 return functions->GetDirectBufferCapacity(this, buf); 01835 } 01836 01837 #endif /* __cplusplus */ 01838 }; 01839 01840 typedef struct JavaVMOption { 01841 char *optionString; 01842 void *extraInfo; 01843 } JavaVMOption; 01844 01845 typedef struct JavaVMInitArgs { 01846 jint version; 01847 01848 jint nOptions; 01849 JavaVMOption *options; 01850 jboolean ignoreUnrecognized; 01851 } JavaVMInitArgs; 01852 01853 typedef struct JavaVMAttachArgs { 01854 jint version; 01855 01856 char *name; 01857 jobject group; 01858 } JavaVMAttachArgs; 01859 01860 /* These structures will be VM-specific. */ 01861 01862 typedef struct JDK1_1InitArgs { 01863 jint version; 01864 01865 char **properties; 01866 jint checkSource; 01867 jint nativeStackSize; 01868 jint javaStackSize; 01869 jint minHeapSize; 01870 jint maxHeapSize; 01871 jint verifyMode; 01872 char *classpath; 01873 01874 jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args); 01875 void (JNICALL *exit)(jint code); 01876 void (JNICALL *abort)(void); 01877 01878 jint enableClassGC; 01879 jint enableVerboseGC; 01880 jint disableAsyncGC; 01881 jint verbose; 01882 jboolean debugging; 01883 jint debugPort; 01884 } JDK1_1InitArgs; 01885 01886 typedef struct JDK1_1AttachArgs { 01887 void * __padding; /* C compilers don't allow empty structures. */ 01888 } JDK1_1AttachArgs; 01889 01890 #define JDK1_2 01891 #define JDK1_4 01892 01893 /* End VM-specific. */ 01894 01895 struct JNIInvokeInterface_ { 01896 void *reserved0; 01897 void *reserved1; 01898 void *reserved2; 01899 01900 #ifdef MAC_VERSION 01901 #if !TARGET_RT_MAC_CFM 01902 void* cfm_vectors[4]; 01903 #endif /* !TARGET_RT_MAC_CFM */ 01904 #endif 01905 01906 jint (JNICALL *DestroyJavaVM)(JavaVM *vm); 01907 01908 jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); 01909 01910 jint (JNICALL *DetachCurrentThread)(JavaVM *vm); 01911 01912 jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); 01913 01914 jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); 01915 01916 #if TARGET_RT_MAC_CFM 01917 void* real_functions[5]; 01918 #endif /* TARGET_RT_MAC_CFM */ 01919 }; 01920 01921 struct JavaVM_ { 01922 const struct JNIInvokeInterface_ *functions; 01923 #ifdef __cplusplus 01924 01925 jint DestroyJavaVM() { 01926 return functions->DestroyJavaVM(this); 01927 } 01928 jint AttachCurrentThread(void **penv, void *args) { 01929 return functions->AttachCurrentThread(this, penv, args); 01930 } 01931 jint DetachCurrentThread() { 01932 return functions->DetachCurrentThread(this); 01933 } 01934 01935 jint GetEnv(void **penv, jint version) { 01936 return functions->GetEnv(this, penv, version); 01937 } 01938 jint AttachCurrentThreadAsDaemon(void **penv, void *args) { 01939 return functions->AttachCurrentThreadAsDaemon(this, penv, args); 01940 } 01941 #endif 01942 }; 01943 01944 #ifdef _JNI_IMPLEMENTATION_ 01945 #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT 01946 #else 01947 #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT 01948 #endif 01949 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 01950 JNI_GetDefaultJavaVMInitArgs(void *args); 01951 01952 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 01953 JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); 01954 01955 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 01956 JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); 01957 01958 /* Defined by native libraries. */ 01959 JNIEXPORT jint JNICALL 01960 JNI_OnLoad(JavaVM *vm, void *reserved); 01961 01962 JNIEXPORT void JNICALL 01963 JNI_OnUnload(JavaVM *vm, void *reserved); 01964 01965 #define JNI_VERSION_1_1 0x00010001 01966 #define JNI_VERSION_1_2 0x00010002 01967 #define JNI_VERSION_1_4 0x00010004 01968 01969 #ifdef __cplusplus 01970 } /* extern "C" */ 01971 #endif /* __cplusplus */ 01972 01973 #endif /* !_JAVASOFT_JNI_H_ */
Copyright © 2008, Cycling '74