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