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