File indexing completed on 2024-04-28 16:07:43
0001 /* ***** BEGIN LICENSE BLOCK ***** 0002 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 0003 * 0004 * The contents of this file are subject to the Mozilla Public License Version 0005 * 1.1 (the "License"); you may not use this file except in compliance with 0006 * the License. You may obtain a copy of the License at 0007 * http://www.mozilla.org/MPL/ 0008 * 0009 * Software distributed under the License is distributed on an "AS IS" basis, 0010 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 0011 * for the specific language governing rights and limitations under the 0012 * License. 0013 * 0014 * The Original Code is the Java Runtime Interface. 0015 * 0016 * The Initial Developer of the Original Code is 0017 * Netscape Communications Corporation and Sun Microsystems, Inc. 0018 * Portions created by the Initial Developer are Copyright (C) 1993-1996 0019 * the Initial Developer. All Rights Reserved. 0020 * 0021 * Contributor(s): 0022 * 0023 * Alternatively, the contents of this file may be used under the terms of 0024 * either the GNU General Public License Version 2 or later (the "GPL"), or 0025 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 0026 * in which case the provisions of the GPL or the LGPL are applicable instead 0027 * of those above. If you wish to allow use of your version of this file only 0028 * under the terms of either the GPL or the LGPL, and not to allow others to 0029 * use your version of this file under the terms of the MPL, indicate your 0030 * decision by deleting the provisions above and replace them with the notice 0031 * and other provisions required by the GPL or the LGPL. If you do not delete 0032 * the provisions above, a recipient may use your version of this file under 0033 * the terms of any one of the MPL, the GPL or the LGPL. 0034 * 0035 * ***** END LICENSE BLOCK ***** */ 0036 0037 #ifndef JNI_H 0038 #define JNI_H 0039 0040 #include <stdio.h> 0041 #include <stdarg.h> 0042 0043 /* jni_md.h contains the machine-dependent typedefs for jbyte, jint 0044 and jlong */ 0045 0046 #include "jni_md.h" 0047 0048 #ifdef __cplusplus 0049 extern "C" { 0050 #endif 0051 0052 /* 0053 * JNI Types 0054 */ 0055 0056 typedef unsigned char jboolean; 0057 typedef unsigned short jchar; 0058 typedef short jshort; 0059 typedef float jfloat; 0060 typedef double jdouble; 0061 0062 typedef jint jsize; 0063 0064 #ifdef __cplusplus 0065 0066 class _jobject {}; 0067 class _jclass : public _jobject {}; 0068 class _jthrowable : public _jobject {}; 0069 class _jstring : public _jobject {}; 0070 class _jarray : public _jobject {}; 0071 class _jbooleanArray : public _jarray {}; 0072 class _jbyteArray : public _jarray {}; 0073 class _jcharArray : public _jarray {}; 0074 class _jshortArray : public _jarray {}; 0075 class _jintArray : public _jarray {}; 0076 class _jlongArray : public _jarray {}; 0077 class _jfloatArray : public _jarray {}; 0078 class _jdoubleArray : public _jarray {}; 0079 class _jobjectArray : public _jarray {}; 0080 0081 typedef _jobject *jobject; 0082 typedef _jclass *jclass; 0083 typedef _jthrowable *jthrowable; 0084 typedef _jstring *jstring; 0085 typedef _jarray *jarray; 0086 typedef _jbooleanArray *jbooleanArray; 0087 typedef _jbyteArray *jbyteArray; 0088 typedef _jcharArray *jcharArray; 0089 typedef _jshortArray *jshortArray; 0090 typedef _jintArray *jintArray; 0091 typedef _jlongArray *jlongArray; 0092 typedef _jfloatArray *jfloatArray; 0093 typedef _jdoubleArray *jdoubleArray; 0094 typedef _jobjectArray *jobjectArray; 0095 0096 #else 0097 0098 struct _jobject; 0099 0100 typedef struct _jobject *jobject; 0101 typedef jobject jclass; 0102 typedef jobject jthrowable; 0103 typedef jobject jstring; 0104 typedef jobject jarray; 0105 typedef jarray jbooleanArray; 0106 typedef jarray jbyteArray; 0107 typedef jarray jcharArray; 0108 typedef jarray jshortArray; 0109 typedef jarray jintArray; 0110 typedef jarray jlongArray; 0111 typedef jarray jfloatArray; 0112 typedef jarray jdoubleArray; 0113 typedef jarray jobjectArray; 0114 0115 #endif 0116 0117 typedef jobject jweak; 0118 0119 #if 0 /* moved to jri_md.h */ 0120 typedef jobject jref; /* For transition---not meant to be part of public 0121 API anymore.*/ 0122 #endif 0123 0124 typedef union jvalue { 0125 jboolean z; 0126 jbyte b; 0127 jchar c; 0128 jshort s; 0129 jint i; 0130 jlong j; 0131 jfloat f; 0132 jdouble d; 0133 jobject l; 0134 } jvalue; 0135 0136 struct _jfieldID; 0137 typedef struct _jfieldID *jfieldID; 0138 0139 struct _jmethodID; 0140 typedef struct _jmethodID *jmethodID; 0141 0142 /* 0143 * jboolean constants 0144 */ 0145 0146 #define JNI_FALSE 0 0147 #define JNI_TRUE 1 0148 0149 /* 0150 * possible return values for JNI functions. 0151 */ 0152 0153 #define JNI_OK 0 /* success */ 0154 #define JNI_ERR (-1) /* unknown error */ 0155 #define JNI_EDETACHED (-2) /* thread detached from the VM */ 0156 #define JNI_EVERSION (-3) /* JNI version error */ 0157 #define JNI_ENOMEM (-4) /* not enough memory */ 0158 #define JNI_EEXIST (-5) /* VM already created */ 0159 #define JNI_EINVAL (-6) /* invalid arguments */ 0160 0161 /* 0162 * used in ReleaseScalarArrayElements 0163 */ 0164 0165 #define JNI_COMMIT 1 0166 #define JNI_ABORT 2 0167 0168 /* 0169 * used in RegisterNatives to describe native method name, signature, 0170 * and function pointer. 0171 */ 0172 0173 typedef struct { 0174 char *name; 0175 char *signature; 0176 void *fnPtr; 0177 } JNINativeMethod; 0178 0179 /* 0180 * JNI Native Method Interface. 0181 */ 0182 0183 struct JNINativeInterface_; 0184 0185 struct JNIEnv_; 0186 0187 #ifdef __cplusplus 0188 typedef JNIEnv_ JNIEnv; 0189 #else 0190 typedef const struct JNINativeInterface_ *JNIEnv; 0191 #endif 0192 0193 /* 0194 * JNI Invocation Interface. 0195 */ 0196 0197 struct JNIInvokeInterface_; 0198 0199 struct JavaVM_; 0200 0201 #ifdef __cplusplus 0202 typedef JavaVM_ JavaVM; 0203 #else 0204 typedef const struct JNIInvokeInterface_ *JavaVM; 0205 #endif 0206 0207 struct JNINativeInterface_ { 0208 void *reserved0; 0209 void *reserved1; 0210 void *reserved2; 0211 0212 void *reserved3; 0213 jint (JNICALL *GetVersion)(JNIEnv *env); 0214 0215 jclass (JNICALL *DefineClass) 0216 (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, 0217 jsize len); 0218 jclass (JNICALL *FindClass) 0219 (JNIEnv *env, const char *name); 0220 0221 jmethodID (JNICALL *FromReflectedMethod) 0222 (JNIEnv *env, jobject method); 0223 jfieldID (JNICALL *FromReflectedField) 0224 (JNIEnv *env, jobject field); 0225 0226 jobject (JNICALL *ToReflectedMethod) 0227 (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); 0228 0229 jclass (JNICALL *GetSuperclass) 0230 (JNIEnv *env, jclass sub); 0231 jboolean (JNICALL *IsAssignableFrom) 0232 (JNIEnv *env, jclass sub, jclass sup); 0233 0234 jobject (JNICALL *ToReflectedField) 0235 (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); 0236 0237 jint (JNICALL *Throw) 0238 (JNIEnv *env, jthrowable obj); 0239 jint (JNICALL *ThrowNew) 0240 (JNIEnv *env, jclass clazz, const char *msg); 0241 jthrowable (JNICALL *ExceptionOccurred) 0242 (JNIEnv *env); 0243 void (JNICALL *ExceptionDescribe) 0244 (JNIEnv *env); 0245 void (JNICALL *ExceptionClear) 0246 (JNIEnv *env); 0247 void (JNICALL *FatalError) 0248 (JNIEnv *env, const char *msg); 0249 0250 jint (JNICALL *PushLocalFrame) 0251 (JNIEnv *env, jint capacity); 0252 jobject (JNICALL *PopLocalFrame) 0253 (JNIEnv *env, jobject result); 0254 0255 jobject (JNICALL *NewGlobalRef) 0256 (JNIEnv *env, jobject lobj); 0257 void (JNICALL *DeleteGlobalRef) 0258 (JNIEnv *env, jobject gref); 0259 void (JNICALL *DeleteLocalRef) 0260 (JNIEnv *env, jobject obj); 0261 jboolean (JNICALL *IsSameObject) 0262 (JNIEnv *env, jobject obj1, jobject obj2); 0263 jobject (JNICALL *NewLocalRef) 0264 (JNIEnv *env, jobject ref); 0265 jint (JNICALL *EnsureLocalCapacity) 0266 (JNIEnv *env, jint capacity); 0267 0268 jobject (JNICALL *AllocObject) 0269 (JNIEnv *env, jclass clazz); 0270 jobject (JNICALL *NewObject) 0271 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0272 jobject (JNICALL *NewObjectV) 0273 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0274 jobject (JNICALL *NewObjectA) 0275 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0276 0277 jclass (JNICALL *GetObjectClass) 0278 (JNIEnv *env, jobject obj); 0279 jboolean (JNICALL *IsInstanceOf) 0280 (JNIEnv *env, jobject obj, jclass clazz); 0281 0282 jmethodID (JNICALL *GetMethodID) 0283 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 0284 0285 jobject (JNICALL *CallObjectMethod) 0286 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0287 jobject (JNICALL *CallObjectMethodV) 0288 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0289 jobject (JNICALL *CallObjectMethodA) 0290 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 0291 0292 jboolean (JNICALL *CallBooleanMethod) 0293 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0294 jboolean (JNICALL *CallBooleanMethodV) 0295 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0296 jboolean (JNICALL *CallBooleanMethodA) 0297 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 0298 0299 jbyte (JNICALL *CallByteMethod) 0300 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0301 jbyte (JNICALL *CallByteMethodV) 0302 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0303 jbyte (JNICALL *CallByteMethodA) 0304 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0305 0306 jchar (JNICALL *CallCharMethod) 0307 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0308 jchar (JNICALL *CallCharMethodV) 0309 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0310 jchar (JNICALL *CallCharMethodA) 0311 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0312 0313 jshort (JNICALL *CallShortMethod) 0314 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0315 jshort (JNICALL *CallShortMethodV) 0316 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0317 jshort (JNICALL *CallShortMethodA) 0318 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0319 0320 jint (JNICALL *CallIntMethod) 0321 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0322 jint (JNICALL *CallIntMethodV) 0323 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0324 jint (JNICALL *CallIntMethodA) 0325 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0326 0327 jlong (JNICALL *CallLongMethod) 0328 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0329 jlong (JNICALL *CallLongMethodV) 0330 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0331 jlong (JNICALL *CallLongMethodA) 0332 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0333 0334 jfloat (JNICALL *CallFloatMethod) 0335 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0336 jfloat (JNICALL *CallFloatMethodV) 0337 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0338 jfloat (JNICALL *CallFloatMethodA) 0339 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0340 0341 jdouble (JNICALL *CallDoubleMethod) 0342 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0343 jdouble (JNICALL *CallDoubleMethodV) 0344 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0345 jdouble (JNICALL *CallDoubleMethodA) 0346 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); 0347 0348 void (JNICALL *CallVoidMethod) 0349 (JNIEnv *env, jobject obj, jmethodID methodID, ...); 0350 void (JNICALL *CallVoidMethodV) 0351 (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 0352 void (JNICALL *CallVoidMethodA) 0353 (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args); 0354 0355 jobject (JNICALL *CallNonvirtualObjectMethod) 0356 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0357 jobject (JNICALL *CallNonvirtualObjectMethodV) 0358 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0359 va_list args); 0360 jobject (JNICALL *CallNonvirtualObjectMethodA) 0361 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0362 jvalue * args); 0363 0364 jboolean (JNICALL *CallNonvirtualBooleanMethod) 0365 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0366 jboolean (JNICALL *CallNonvirtualBooleanMethodV) 0367 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0368 va_list args); 0369 jboolean (JNICALL *CallNonvirtualBooleanMethodA) 0370 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0371 jvalue * args); 0372 0373 jbyte (JNICALL *CallNonvirtualByteMethod) 0374 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0375 jbyte (JNICALL *CallNonvirtualByteMethodV) 0376 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0377 va_list args); 0378 jbyte (JNICALL *CallNonvirtualByteMethodA) 0379 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0380 jvalue *args); 0381 0382 jchar (JNICALL *CallNonvirtualCharMethod) 0383 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0384 jchar (JNICALL *CallNonvirtualCharMethodV) 0385 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0386 va_list args); 0387 jchar (JNICALL *CallNonvirtualCharMethodA) 0388 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0389 jvalue *args); 0390 0391 jshort (JNICALL *CallNonvirtualShortMethod) 0392 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0393 jshort (JNICALL *CallNonvirtualShortMethodV) 0394 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0395 va_list args); 0396 jshort (JNICALL *CallNonvirtualShortMethodA) 0397 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0398 jvalue *args); 0399 0400 jint (JNICALL *CallNonvirtualIntMethod) 0401 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0402 jint (JNICALL *CallNonvirtualIntMethodV) 0403 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0404 va_list args); 0405 jint (JNICALL *CallNonvirtualIntMethodA) 0406 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0407 jvalue *args); 0408 0409 jlong (JNICALL *CallNonvirtualLongMethod) 0410 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0411 jlong (JNICALL *CallNonvirtualLongMethodV) 0412 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0413 va_list args); 0414 jlong (JNICALL *CallNonvirtualLongMethodA) 0415 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0416 jvalue *args); 0417 0418 jfloat (JNICALL *CallNonvirtualFloatMethod) 0419 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0420 jfloat (JNICALL *CallNonvirtualFloatMethodV) 0421 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0422 va_list args); 0423 jfloat (JNICALL *CallNonvirtualFloatMethodA) 0424 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0425 jvalue *args); 0426 0427 jdouble (JNICALL *CallNonvirtualDoubleMethod) 0428 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0429 jdouble (JNICALL *CallNonvirtualDoubleMethodV) 0430 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0431 va_list args); 0432 jdouble (JNICALL *CallNonvirtualDoubleMethodA) 0433 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0434 jvalue *args); 0435 0436 void (JNICALL *CallNonvirtualVoidMethod) 0437 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 0438 void (JNICALL *CallNonvirtualVoidMethodV) 0439 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0440 va_list args); 0441 void (JNICALL *CallNonvirtualVoidMethodA) 0442 (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 0443 jvalue * args); 0444 0445 jfieldID (JNICALL *GetFieldID) 0446 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 0447 0448 jobject (JNICALL *GetObjectField) 0449 (JNIEnv *env, jobject obj, jfieldID fieldID); 0450 jboolean (JNICALL *GetBooleanField) 0451 (JNIEnv *env, jobject obj, jfieldID fieldID); 0452 jbyte (JNICALL *GetByteField) 0453 (JNIEnv *env, jobject obj, jfieldID fieldID); 0454 jchar (JNICALL *GetCharField) 0455 (JNIEnv *env, jobject obj, jfieldID fieldID); 0456 jshort (JNICALL *GetShortField) 0457 (JNIEnv *env, jobject obj, jfieldID fieldID); 0458 jint (JNICALL *GetIntField) 0459 (JNIEnv *env, jobject obj, jfieldID fieldID); 0460 jlong (JNICALL *GetLongField) 0461 (JNIEnv *env, jobject obj, jfieldID fieldID); 0462 jfloat (JNICALL *GetFloatField) 0463 (JNIEnv *env, jobject obj, jfieldID fieldID); 0464 jdouble (JNICALL *GetDoubleField) 0465 (JNIEnv *env, jobject obj, jfieldID fieldID); 0466 0467 void (JNICALL *SetObjectField) 0468 (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); 0469 void (JNICALL *SetBooleanField) 0470 (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); 0471 void (JNICALL *SetByteField) 0472 (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); 0473 void (JNICALL *SetCharField) 0474 (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); 0475 void (JNICALL *SetShortField) 0476 (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); 0477 void (JNICALL *SetIntField) 0478 (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); 0479 void (JNICALL *SetLongField) 0480 (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); 0481 void (JNICALL *SetFloatField) 0482 (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); 0483 void (JNICALL *SetDoubleField) 0484 (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); 0485 0486 jmethodID (JNICALL *GetStaticMethodID) 0487 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 0488 0489 jobject (JNICALL *CallStaticObjectMethod) 0490 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0491 jobject (JNICALL *CallStaticObjectMethodV) 0492 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0493 jobject (JNICALL *CallStaticObjectMethodA) 0494 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0495 0496 jboolean (JNICALL *CallStaticBooleanMethod) 0497 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0498 jboolean (JNICALL *CallStaticBooleanMethodV) 0499 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0500 jboolean (JNICALL *CallStaticBooleanMethodA) 0501 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0502 0503 jbyte (JNICALL *CallStaticByteMethod) 0504 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0505 jbyte (JNICALL *CallStaticByteMethodV) 0506 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0507 jbyte (JNICALL *CallStaticByteMethodA) 0508 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0509 0510 jchar (JNICALL *CallStaticCharMethod) 0511 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0512 jchar (JNICALL *CallStaticCharMethodV) 0513 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0514 jchar (JNICALL *CallStaticCharMethodA) 0515 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0516 0517 jshort (JNICALL *CallStaticShortMethod) 0518 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0519 jshort (JNICALL *CallStaticShortMethodV) 0520 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0521 jshort (JNICALL *CallStaticShortMethodA) 0522 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0523 0524 jint (JNICALL *CallStaticIntMethod) 0525 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0526 jint (JNICALL *CallStaticIntMethodV) 0527 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0528 jint (JNICALL *CallStaticIntMethodA) 0529 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0530 0531 jlong (JNICALL *CallStaticLongMethod) 0532 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0533 jlong (JNICALL *CallStaticLongMethodV) 0534 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0535 jlong (JNICALL *CallStaticLongMethodA) 0536 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0537 0538 jfloat (JNICALL *CallStaticFloatMethod) 0539 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0540 jfloat (JNICALL *CallStaticFloatMethodV) 0541 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0542 jfloat (JNICALL *CallStaticFloatMethodA) 0543 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0544 0545 jdouble (JNICALL *CallStaticDoubleMethod) 0546 (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 0547 jdouble (JNICALL *CallStaticDoubleMethodV) 0548 (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 0549 jdouble (JNICALL *CallStaticDoubleMethodA) 0550 (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); 0551 0552 void (JNICALL *CallStaticVoidMethod) 0553 (JNIEnv *env, jclass cls, jmethodID methodID, ...); 0554 void (JNICALL *CallStaticVoidMethodV) 0555 (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); 0556 void (JNICALL *CallStaticVoidMethodA) 0557 (JNIEnv *env, jclass cls, jmethodID methodID, jvalue * args); 0558 0559 jfieldID (JNICALL *GetStaticFieldID) 0560 (JNIEnv *env, jclass clazz, const char *name, const char *sig); 0561 jobject (JNICALL *GetStaticObjectField) 0562 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0563 jboolean (JNICALL *GetStaticBooleanField) 0564 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0565 jbyte (JNICALL *GetStaticByteField) 0566 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0567 jchar (JNICALL *GetStaticCharField) 0568 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0569 jshort (JNICALL *GetStaticShortField) 0570 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0571 jint (JNICALL *GetStaticIntField) 0572 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0573 jlong (JNICALL *GetStaticLongField) 0574 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0575 jfloat (JNICALL *GetStaticFloatField) 0576 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0577 jdouble (JNICALL *GetStaticDoubleField) 0578 (JNIEnv *env, jclass clazz, jfieldID fieldID); 0579 0580 void (JNICALL *SetStaticObjectField) 0581 (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); 0582 void (JNICALL *SetStaticBooleanField) 0583 (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); 0584 void (JNICALL *SetStaticByteField) 0585 (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); 0586 void (JNICALL *SetStaticCharField) 0587 (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); 0588 void (JNICALL *SetStaticShortField) 0589 (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); 0590 void (JNICALL *SetStaticIntField) 0591 (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); 0592 void (JNICALL *SetStaticLongField) 0593 (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); 0594 void (JNICALL *SetStaticFloatField) 0595 (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); 0596 void (JNICALL *SetStaticDoubleField) 0597 (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); 0598 0599 jstring (JNICALL *NewString) 0600 (JNIEnv *env, const jchar *unicode, jsize len); 0601 jsize (JNICALL *GetStringLength) 0602 (JNIEnv *env, jstring str); 0603 const jchar *(JNICALL *GetStringChars) 0604 (JNIEnv *env, jstring str, jboolean *isCopy); 0605 void (JNICALL *ReleaseStringChars) 0606 (JNIEnv *env, jstring str, const jchar *chars); 0607 0608 jstring (JNICALL *NewStringUTF) 0609 (JNIEnv *env, const char *utf); 0610 jsize (JNICALL *GetStringUTFLength) 0611 (JNIEnv *env, jstring str); 0612 const char* (JNICALL *GetStringUTFChars) 0613 (JNIEnv *env, jstring str, jboolean *isCopy); 0614 void (JNICALL *ReleaseStringUTFChars) 0615 (JNIEnv *env, jstring str, const char* chars); 0616 0617 0618 jsize (JNICALL *GetArrayLength) 0619 (JNIEnv *env, jarray array); 0620 0621 jobjectArray (JNICALL *NewObjectArray) 0622 (JNIEnv *env, jsize len, jclass clazz, jobject init); 0623 jobject (JNICALL *GetObjectArrayElement) 0624 (JNIEnv *env, jobjectArray array, jsize index); 0625 void (JNICALL *SetObjectArrayElement) 0626 (JNIEnv *env, jobjectArray array, jsize index, jobject val); 0627 0628 jbooleanArray (JNICALL *NewBooleanArray) 0629 (JNIEnv *env, jsize len); 0630 jbyteArray (JNICALL *NewByteArray) 0631 (JNIEnv *env, jsize len); 0632 jcharArray (JNICALL *NewCharArray) 0633 (JNIEnv *env, jsize len); 0634 jshortArray (JNICALL *NewShortArray) 0635 (JNIEnv *env, jsize len); 0636 jintArray (JNICALL *NewIntArray) 0637 (JNIEnv *env, jsize len); 0638 jlongArray (JNICALL *NewLongArray) 0639 (JNIEnv *env, jsize len); 0640 jfloatArray (JNICALL *NewFloatArray) 0641 (JNIEnv *env, jsize len); 0642 jdoubleArray (JNICALL *NewDoubleArray) 0643 (JNIEnv *env, jsize len); 0644 0645 jboolean * (JNICALL *GetBooleanArrayElements) 0646 (JNIEnv *env, jbooleanArray array, jboolean *isCopy); 0647 jbyte * (JNICALL *GetByteArrayElements) 0648 (JNIEnv *env, jbyteArray array, jboolean *isCopy); 0649 jchar * (JNICALL *GetCharArrayElements) 0650 (JNIEnv *env, jcharArray array, jboolean *isCopy); 0651 jshort * (JNICALL *GetShortArrayElements) 0652 (JNIEnv *env, jshortArray array, jboolean *isCopy); 0653 jint * (JNICALL *GetIntArrayElements) 0654 (JNIEnv *env, jintArray array, jboolean *isCopy); 0655 jlong * (JNICALL *GetLongArrayElements) 0656 (JNIEnv *env, jlongArray array, jboolean *isCopy); 0657 jfloat * (JNICALL *GetFloatArrayElements) 0658 (JNIEnv *env, jfloatArray array, jboolean *isCopy); 0659 jdouble * (JNICALL *GetDoubleArrayElements) 0660 (JNIEnv *env, jdoubleArray array, jboolean *isCopy); 0661 0662 void (JNICALL *ReleaseBooleanArrayElements) 0663 (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); 0664 void (JNICALL *ReleaseByteArrayElements) 0665 (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); 0666 void (JNICALL *ReleaseCharArrayElements) 0667 (JNIEnv *env, jcharArray array, jchar *elems, jint mode); 0668 void (JNICALL *ReleaseShortArrayElements) 0669 (JNIEnv *env, jshortArray array, jshort *elems, jint mode); 0670 void (JNICALL *ReleaseIntArrayElements) 0671 (JNIEnv *env, jintArray array, jint *elems, jint mode); 0672 void (JNICALL *ReleaseLongArrayElements) 0673 (JNIEnv *env, jlongArray array, jlong *elems, jint mode); 0674 void (JNICALL *ReleaseFloatArrayElements) 0675 (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); 0676 void (JNICALL *ReleaseDoubleArrayElements) 0677 (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); 0678 0679 void (JNICALL *GetBooleanArrayRegion) 0680 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 0681 void (JNICALL *GetByteArrayRegion) 0682 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 0683 void (JNICALL *GetCharArrayRegion) 0684 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 0685 void (JNICALL *GetShortArrayRegion) 0686 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 0687 void (JNICALL *GetIntArrayRegion) 0688 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 0689 void (JNICALL *GetLongArrayRegion) 0690 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 0691 void (JNICALL *GetFloatArrayRegion) 0692 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 0693 void (JNICALL *GetDoubleArrayRegion) 0694 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 0695 0696 void (JNICALL *SetBooleanArrayRegion) 0697 (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 0698 void (JNICALL *SetByteArrayRegion) 0699 (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 0700 void (JNICALL *SetCharArrayRegion) 0701 (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 0702 void (JNICALL *SetShortArrayRegion) 0703 (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 0704 void (JNICALL *SetIntArrayRegion) 0705 (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 0706 void (JNICALL *SetLongArrayRegion) 0707 (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 0708 void (JNICALL *SetFloatArrayRegion) 0709 (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 0710 void (JNICALL *SetDoubleArrayRegion) 0711 (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 0712 0713 jint (JNICALL *RegisterNatives) 0714 (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, 0715 jint nMethods); 0716 jint (JNICALL *UnregisterNatives) 0717 (JNIEnv *env, jclass clazz); 0718 0719 jint (JNICALL *MonitorEnter) 0720 (JNIEnv *env, jobject obj); 0721 jint (JNICALL *MonitorExit) 0722 (JNIEnv *env, jobject obj); 0723 0724 jint (JNICALL *GetJavaVM) 0725 (JNIEnv *env, JavaVM **vm); 0726 0727 void (JNICALL *GetStringRegion) 0728 (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); 0729 void (JNICALL *GetStringUTFRegion) 0730 (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); 0731 0732 void * (JNICALL *GetPrimitiveArrayCritical) 0733 (JNIEnv *env, jarray array, jboolean *isCopy); 0734 void (JNICALL *ReleasePrimitiveArrayCritical) 0735 (JNIEnv *env, jarray array, void *carray, jint mode); 0736 0737 const jchar * (JNICALL *GetStringCritical) 0738 (JNIEnv *env, jstring string, jboolean *isCopy); 0739 void (JNICALL *ReleaseStringCritical) 0740 (JNIEnv *env, jstring string, const jchar *cstring); 0741 0742 jweak (JNICALL *NewWeakGlobalRef) 0743 (JNIEnv *env, jobject obj); 0744 void (JNICALL *DeleteWeakGlobalRef) 0745 (JNIEnv *env, jweak ref); 0746 0747 jboolean (JNICALL *ExceptionCheck) 0748 (JNIEnv *env); 0749 0750 jobject (JNICALL *NewDirectByteBuffer) 0751 (JNIEnv* env, void* address, jlong capacity); 0752 void* (JNICALL *GetDirectBufferAddress) 0753 (JNIEnv* env, jobject buf); 0754 jlong (JNICALL *GetDirectBufferCapacity) 0755 (JNIEnv* env, jobject buf); 0756 }; 0757 0758 /* 0759 * We use inlined functions for C++ so that programmers can write: 0760 * 0761 * env->FindClass("java/lang/String") 0762 * 0763 * in C++ rather than: 0764 * 0765 * (*env)->FindClass(env, "java/lang/String") 0766 * 0767 * in C. 0768 */ 0769 0770 struct JNIEnv_ { 0771 const struct JNINativeInterface_ *functions; 0772 #ifdef __cplusplus 0773 0774 jint GetVersion() { 0775 return functions->GetVersion(this); 0776 } 0777 jclass DefineClass(const char *name, jobject loader, const jbyte *buf, 0778 jsize len) { 0779 return functions->DefineClass(this, name, loader, buf, len); 0780 } 0781 jclass FindClass(const char *name) { 0782 return functions->FindClass(this, name); 0783 } 0784 jmethodID FromReflectedMethod(jobject method) { 0785 return functions->FromReflectedMethod(this,method); 0786 } 0787 jfieldID FromReflectedField(jobject field) { 0788 return functions->FromReflectedField(this,field); 0789 } 0790 0791 jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { 0792 return functions->ToReflectedMethod(this, cls, methodID, isStatic); 0793 } 0794 0795 jclass GetSuperclass(jclass sub) { 0796 return functions->GetSuperclass(this, sub); 0797 } 0798 jboolean IsAssignableFrom(jclass sub, jclass sup) { 0799 return functions->IsAssignableFrom(this, sub, sup); 0800 } 0801 0802 jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { 0803 return functions->ToReflectedField(this,cls,fieldID,isStatic); 0804 } 0805 0806 jint Throw(jthrowable obj) { 0807 return functions->Throw(this, obj); 0808 } 0809 jint ThrowNew(jclass clazz, const char *msg) { 0810 return functions->ThrowNew(this, clazz, msg); 0811 } 0812 jthrowable ExceptionOccurred() { 0813 return functions->ExceptionOccurred(this); 0814 } 0815 void ExceptionDescribe() { 0816 functions->ExceptionDescribe(this); 0817 } 0818 void ExceptionClear() { 0819 functions->ExceptionClear(this); 0820 } 0821 void FatalError(const char *msg) { 0822 functions->FatalError(this, msg); 0823 } 0824 0825 jint PushLocalFrame(jint capacity) { 0826 return functions->PushLocalFrame(this,capacity); 0827 } 0828 jobject PopLocalFrame(jobject result) { 0829 return functions->PopLocalFrame(this,result); 0830 } 0831 0832 jobject NewGlobalRef(jobject lobj) { 0833 return functions->NewGlobalRef(this,lobj); 0834 } 0835 void DeleteGlobalRef(jobject gref) { 0836 functions->DeleteGlobalRef(this,gref); 0837 } 0838 void DeleteLocalRef(jobject obj) { 0839 functions->DeleteLocalRef(this, obj); 0840 } 0841 0842 jboolean IsSameObject(jobject obj1, jobject obj2) { 0843 return functions->IsSameObject(this,obj1,obj2); 0844 } 0845 0846 jobject NewLocalRef(jobject ref) { 0847 return functions->NewLocalRef(this,ref); 0848 } 0849 jint EnsureLocalCapacity(jint capacity) { 0850 return functions->EnsureLocalCapacity(this,capacity); 0851 } 0852 0853 jobject AllocObject(jclass clazz) { 0854 return functions->AllocObject(this,clazz); 0855 } 0856 jobject NewObject(jclass clazz, jmethodID methodID, ...) { 0857 va_list args; 0858 jobject result; 0859 va_start(args, methodID); 0860 result = functions->NewObjectV(this,clazz,methodID,args); 0861 va_end(args); 0862 return result; 0863 } 0864 jobject NewObjectV(jclass clazz, jmethodID methodID, 0865 va_list args) { 0866 return functions->NewObjectV(this,clazz,methodID,args); 0867 } 0868 jobject NewObjectA(jclass clazz, jmethodID methodID, 0869 jvalue *args) { 0870 return functions->NewObjectA(this,clazz,methodID,args); 0871 } 0872 0873 jclass GetObjectClass(jobject obj) { 0874 return functions->GetObjectClass(this,obj); 0875 } 0876 jboolean IsInstanceOf(jobject obj, jclass clazz) { 0877 return functions->IsInstanceOf(this,obj,clazz); 0878 } 0879 0880 jmethodID GetMethodID(jclass clazz, const char *name, 0881 const char *sig) { 0882 return functions->GetMethodID(this,clazz,name,sig); 0883 } 0884 0885 jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { 0886 va_list args; 0887 jobject result; 0888 va_start(args,methodID); 0889 result = functions->CallObjectMethodV(this,obj,methodID,args); 0890 va_end(args); 0891 return result; 0892 } 0893 jobject CallObjectMethodV(jobject obj, jmethodID methodID, 0894 va_list args) { 0895 return functions->CallObjectMethodV(this,obj,methodID,args); 0896 } 0897 jobject CallObjectMethodA(jobject obj, jmethodID methodID, 0898 jvalue * args) { 0899 return functions->CallObjectMethodA(this,obj,methodID,args); 0900 } 0901 0902 jboolean CallBooleanMethod(jobject obj, 0903 jmethodID methodID, ...) { 0904 va_list args; 0905 jboolean result; 0906 va_start(args,methodID); 0907 result = functions->CallBooleanMethodV(this,obj,methodID,args); 0908 va_end(args); 0909 return result; 0910 } 0911 jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, 0912 va_list args) { 0913 return functions->CallBooleanMethodV(this,obj,methodID,args); 0914 } 0915 jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, 0916 jvalue * args) { 0917 return functions->CallBooleanMethodA(this,obj,methodID, args); 0918 } 0919 0920 jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { 0921 va_list args; 0922 jbyte result; 0923 va_start(args,methodID); 0924 result = functions->CallByteMethodV(this,obj,methodID,args); 0925 va_end(args); 0926 return result; 0927 } 0928 jbyte CallByteMethodV(jobject obj, jmethodID methodID, 0929 va_list args) { 0930 return functions->CallByteMethodV(this,obj,methodID,args); 0931 } 0932 jbyte CallByteMethodA(jobject obj, jmethodID methodID, 0933 jvalue * args) { 0934 return functions->CallByteMethodA(this,obj,methodID,args); 0935 } 0936 0937 jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { 0938 va_list args; 0939 jchar result; 0940 va_start(args,methodID); 0941 result = functions->CallCharMethodV(this,obj,methodID,args); 0942 va_end(args); 0943 return result; 0944 } 0945 jchar CallCharMethodV(jobject obj, jmethodID methodID, 0946 va_list args) { 0947 return functions->CallCharMethodV(this,obj,methodID,args); 0948 } 0949 jchar CallCharMethodA(jobject obj, jmethodID methodID, 0950 jvalue * args) { 0951 return functions->CallCharMethodA(this,obj,methodID,args); 0952 } 0953 0954 jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { 0955 va_list args; 0956 jshort result; 0957 va_start(args,methodID); 0958 result = functions->CallShortMethodV(this,obj,methodID,args); 0959 va_end(args); 0960 return result; 0961 } 0962 jshort CallShortMethodV(jobject obj, jmethodID methodID, 0963 va_list args) { 0964 return functions->CallShortMethodV(this,obj,methodID,args); 0965 } 0966 jshort CallShortMethodA(jobject obj, jmethodID methodID, 0967 jvalue * args) { 0968 return functions->CallShortMethodA(this,obj,methodID,args); 0969 } 0970 0971 jint CallIntMethod(jobject obj, jmethodID methodID, ...) { 0972 va_list args; 0973 jint result; 0974 va_start(args,methodID); 0975 result = functions->CallIntMethodV(this,obj,methodID,args); 0976 va_end(args); 0977 return result; 0978 } 0979 jint CallIntMethodV(jobject obj, jmethodID methodID, 0980 va_list args) { 0981 return functions->CallIntMethodV(this,obj,methodID,args); 0982 } 0983 jint CallIntMethodA(jobject obj, jmethodID methodID, 0984 jvalue * args) { 0985 return functions->CallIntMethodA(this,obj,methodID,args); 0986 } 0987 0988 jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { 0989 va_list args; 0990 jlong result; 0991 va_start(args,methodID); 0992 result = functions->CallLongMethodV(this,obj,methodID,args); 0993 va_end(args); 0994 return result; 0995 } 0996 jlong CallLongMethodV(jobject obj, jmethodID methodID, 0997 va_list args) { 0998 return functions->CallLongMethodV(this,obj,methodID,args); 0999 } 1000 jlong CallLongMethodA(jobject obj, jmethodID methodID, 1001 jvalue * args) { 1002 return functions->CallLongMethodA(this,obj,methodID,args); 1003 } 1004 1005 jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { 1006 va_list args; 1007 jfloat result; 1008 va_start(args,methodID); 1009 result = functions->CallFloatMethodV(this,obj,methodID,args); 1010 va_end(args); 1011 return result; 1012 } 1013 jfloat CallFloatMethodV(jobject obj, jmethodID methodID, 1014 va_list args) { 1015 return functions->CallFloatMethodV(this,obj,methodID,args); 1016 } 1017 jfloat CallFloatMethodA(jobject obj, jmethodID methodID, 1018 jvalue * args) { 1019 return functions->CallFloatMethodA(this,obj,methodID,args); 1020 } 1021 1022 jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { 1023 va_list args; 1024 jdouble result; 1025 va_start(args,methodID); 1026 result = functions->CallDoubleMethodV(this,obj,methodID,args); 1027 va_end(args); 1028 return result; 1029 } 1030 jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, 1031 va_list args) { 1032 return functions->CallDoubleMethodV(this,obj,methodID,args); 1033 } 1034 jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, 1035 jvalue * args) { 1036 return functions->CallDoubleMethodA(this,obj,methodID,args); 1037 } 1038 1039 void CallVoidMethod(jobject obj, jmethodID methodID, ...) { 1040 va_list args; 1041 va_start(args,methodID); 1042 functions->CallVoidMethodV(this,obj,methodID,args); 1043 va_end(args); 1044 } 1045 void CallVoidMethodV(jobject obj, jmethodID methodID, 1046 va_list args) { 1047 functions->CallVoidMethodV(this,obj,methodID,args); 1048 } 1049 void CallVoidMethodA(jobject obj, jmethodID methodID, 1050 jvalue * args) { 1051 functions->CallVoidMethodA(this,obj,methodID,args); 1052 } 1053 1054 jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, 1055 jmethodID methodID, ...) { 1056 va_list args; 1057 jobject result; 1058 va_start(args,methodID); 1059 result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1060 methodID,args); 1061 va_end(args); 1062 return result; 1063 } 1064 jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, 1065 jmethodID methodID, va_list args) { 1066 return functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1067 methodID,args); 1068 } 1069 jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, 1070 jmethodID methodID, jvalue * args) { 1071 return functions->CallNonvirtualObjectMethodA(this,obj,clazz, 1072 methodID,args); 1073 } 1074 1075 jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, 1076 jmethodID methodID, ...) { 1077 va_list args; 1078 jboolean result; 1079 va_start(args,methodID); 1080 result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1081 methodID,args); 1082 va_end(args); 1083 return result; 1084 } 1085 jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, 1086 jmethodID methodID, va_list args) { 1087 return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1088 methodID,args); 1089 } 1090 jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, 1091 jmethodID methodID, jvalue * args) { 1092 return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, 1093 methodID, args); 1094 } 1095 1096 jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, 1097 jmethodID methodID, ...) { 1098 va_list args; 1099 jbyte result; 1100 va_start(args,methodID); 1101 result = functions->CallNonvirtualByteMethodV(this,obj,clazz, 1102 methodID,args); 1103 va_end(args); 1104 return result; 1105 } 1106 jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, 1107 jmethodID methodID, va_list args) { 1108 return functions->CallNonvirtualByteMethodV(this,obj,clazz, 1109 methodID,args); 1110 } 1111 jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, 1112 jmethodID methodID, jvalue * args) { 1113 return functions->CallNonvirtualByteMethodA(this,obj,clazz, 1114 methodID,args); 1115 } 1116 1117 jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, 1118 jmethodID methodID, ...) { 1119 va_list args; 1120 jchar result; 1121 va_start(args,methodID); 1122 result = functions->CallNonvirtualCharMethodV(this,obj,clazz, 1123 methodID,args); 1124 va_end(args); 1125 return result; 1126 } 1127 jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, 1128 jmethodID methodID, va_list args) { 1129 return functions->CallNonvirtualCharMethodV(this,obj,clazz, 1130 methodID,args); 1131 } 1132 jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, 1133 jmethodID methodID, jvalue * args) { 1134 return functions->CallNonvirtualCharMethodA(this,obj,clazz, 1135 methodID,args); 1136 } 1137 1138 jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, 1139 jmethodID methodID, ...) { 1140 va_list args; 1141 jshort result; 1142 va_start(args,methodID); 1143 result = functions->CallNonvirtualShortMethodV(this,obj,clazz, 1144 methodID,args); 1145 va_end(args); 1146 return result; 1147 } 1148 jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, 1149 jmethodID methodID, va_list args) { 1150 return functions->CallNonvirtualShortMethodV(this,obj,clazz, 1151 methodID,args); 1152 } 1153 jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, 1154 jmethodID methodID, jvalue * args) { 1155 return functions->CallNonvirtualShortMethodA(this,obj,clazz, 1156 methodID,args); 1157 } 1158 1159 jint CallNonvirtualIntMethod(jobject obj, jclass clazz, 1160 jmethodID methodID, ...) { 1161 va_list args; 1162 jint result; 1163 va_start(args,methodID); 1164 result = functions->CallNonvirtualIntMethodV(this,obj,clazz, 1165 methodID,args); 1166 va_end(args); 1167 return result; 1168 } 1169 jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, 1170 jmethodID methodID, va_list args) { 1171 return functions->CallNonvirtualIntMethodV(this,obj,clazz, 1172 methodID,args); 1173 } 1174 jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, 1175 jmethodID methodID, jvalue * args) { 1176 return functions->CallNonvirtualIntMethodA(this,obj,clazz, 1177 methodID,args); 1178 } 1179 1180 jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, 1181 jmethodID methodID, ...) { 1182 va_list args; 1183 jlong result; 1184 va_start(args,methodID); 1185 result = functions->CallNonvirtualLongMethodV(this,obj,clazz, 1186 methodID,args); 1187 va_end(args); 1188 return result; 1189 } 1190 jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, 1191 jmethodID methodID, va_list args) { 1192 return functions->CallNonvirtualLongMethodV(this,obj,clazz, 1193 methodID,args); 1194 } 1195 jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, 1196 jmethodID methodID, jvalue * args) { 1197 return functions->CallNonvirtualLongMethodA(this,obj,clazz, 1198 methodID,args); 1199 } 1200 1201 jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, 1202 jmethodID methodID, ...) { 1203 va_list args; 1204 jfloat result; 1205 va_start(args,methodID); 1206 result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1207 methodID,args); 1208 va_end(args); 1209 return result; 1210 } 1211 jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, 1212 jmethodID methodID, 1213 va_list args) { 1214 return functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1215 methodID,args); 1216 } 1217 jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, 1218 jmethodID methodID, 1219 jvalue * args) { 1220 return functions->CallNonvirtualFloatMethodA(this,obj,clazz, 1221 methodID,args); 1222 } 1223 1224 jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, 1225 jmethodID methodID, ...) { 1226 va_list args; 1227 jdouble result; 1228 va_start(args,methodID); 1229 result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1230 methodID,args); 1231 va_end(args); 1232 return result; 1233 } 1234 jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, 1235 jmethodID methodID, 1236 va_list args) { 1237 return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1238 methodID,args); 1239 } 1240 jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, 1241 jmethodID methodID, 1242 jvalue * args) { 1243 return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, 1244 methodID,args); 1245 } 1246 1247 void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 1248 jmethodID methodID, ...) { 1249 va_list args; 1250 va_start(args,methodID); 1251 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1252 va_end(args); 1253 } 1254 void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 1255 jmethodID methodID, 1256 va_list args) { 1257 functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1258 } 1259 void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 1260 jmethodID methodID, 1261 jvalue * args) { 1262 functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); 1263 } 1264 1265 jfieldID GetFieldID(jclass clazz, const char *name, 1266 const char *sig) { 1267 return functions->GetFieldID(this,clazz,name,sig); 1268 } 1269 1270 jobject GetObjectField(jobject obj, jfieldID fieldID) { 1271 return functions->GetObjectField(this,obj,fieldID); 1272 } 1273 jboolean GetBooleanField(jobject obj, jfieldID fieldID) { 1274 return functions->GetBooleanField(this,obj,fieldID); 1275 } 1276 jbyte GetByteField(jobject obj, jfieldID fieldID) { 1277 return functions->GetByteField(this,obj,fieldID); 1278 } 1279 jchar GetCharField(jobject obj, jfieldID fieldID) { 1280 return functions->GetCharField(this,obj,fieldID); 1281 } 1282 jshort GetShortField(jobject obj, jfieldID fieldID) { 1283 return functions->GetShortField(this,obj,fieldID); 1284 } 1285 jint GetIntField(jobject obj, jfieldID fieldID) { 1286 return functions->GetIntField(this,obj,fieldID); 1287 } 1288 jlong GetLongField(jobject obj, jfieldID fieldID) { 1289 return functions->GetLongField(this,obj,fieldID); 1290 } 1291 jfloat GetFloatField(jobject obj, jfieldID fieldID) { 1292 return functions->GetFloatField(this,obj,fieldID); 1293 } 1294 jdouble GetDoubleField(jobject obj, jfieldID fieldID) { 1295 return functions->GetDoubleField(this,obj,fieldID); 1296 } 1297 1298 void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { 1299 functions->SetObjectField(this,obj,fieldID,val); 1300 } 1301 void SetBooleanField(jobject obj, jfieldID fieldID, 1302 jboolean val) { 1303 functions->SetBooleanField(this,obj,fieldID,val); 1304 } 1305 void SetByteField(jobject obj, jfieldID fieldID, 1306 jbyte val) { 1307 functions->SetByteField(this,obj,fieldID,val); 1308 } 1309 void SetCharField(jobject obj, jfieldID fieldID, 1310 jchar val) { 1311 functions->SetCharField(this,obj,fieldID,val); 1312 } 1313 void SetShortField(jobject obj, jfieldID fieldID, 1314 jshort val) { 1315 functions->SetShortField(this,obj,fieldID,val); 1316 } 1317 void SetIntField(jobject obj, jfieldID fieldID, 1318 jint val) { 1319 functions->SetIntField(this,obj,fieldID,val); 1320 } 1321 void SetLongField(jobject obj, jfieldID fieldID, 1322 jlong val) { 1323 functions->SetLongField(this,obj,fieldID,val); 1324 } 1325 void SetFloatField(jobject obj, jfieldID fieldID, 1326 jfloat val) { 1327 functions->SetFloatField(this,obj,fieldID,val); 1328 } 1329 void SetDoubleField(jobject obj, jfieldID fieldID, 1330 jdouble val) { 1331 functions->SetDoubleField(this,obj,fieldID,val); 1332 } 1333 1334 jmethodID GetStaticMethodID(jclass clazz, const char *name, 1335 const char *sig) { 1336 return functions->GetStaticMethodID(this,clazz,name,sig); 1337 } 1338 1339 jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, 1340 ...) { 1341 va_list args; 1342 jobject result; 1343 va_start(args,methodID); 1344 result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1345 va_end(args); 1346 return result; 1347 } 1348 jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, 1349 va_list args) { 1350 return functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1351 } 1352 jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, 1353 jvalue *args) { 1354 return functions->CallStaticObjectMethodA(this,clazz,methodID,args); 1355 } 1356 1357 jboolean CallStaticBooleanMethod(jclass clazz, 1358 jmethodID methodID, ...) { 1359 va_list args; 1360 jboolean result; 1361 va_start(args,methodID); 1362 result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1363 va_end(args); 1364 return result; 1365 } 1366 jboolean CallStaticBooleanMethodV(jclass clazz, 1367 jmethodID methodID, va_list args) { 1368 return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1369 } 1370 jboolean CallStaticBooleanMethodA(jclass clazz, 1371 jmethodID methodID, jvalue *args) { 1372 return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); 1373 } 1374 1375 jbyte CallStaticByteMethod(jclass clazz, 1376 jmethodID methodID, ...) { 1377 va_list args; 1378 jbyte result; 1379 va_start(args,methodID); 1380 result = functions->CallStaticByteMethodV(this,clazz,methodID,args); 1381 va_end(args); 1382 return result; 1383 } 1384 jbyte CallStaticByteMethodV(jclass clazz, 1385 jmethodID methodID, va_list args) { 1386 return functions->CallStaticByteMethodV(this,clazz,methodID,args); 1387 } 1388 jbyte CallStaticByteMethodA(jclass clazz, 1389 jmethodID methodID, jvalue *args) { 1390 return functions->CallStaticByteMethodA(this,clazz,methodID,args); 1391 } 1392 1393 jchar CallStaticCharMethod(jclass clazz, 1394 jmethodID methodID, ...) { 1395 va_list args; 1396 jchar result; 1397 va_start(args,methodID); 1398 result = functions->CallStaticCharMethodV(this,clazz,methodID,args); 1399 va_end(args); 1400 return result; 1401 } 1402 jchar CallStaticCharMethodV(jclass clazz, 1403 jmethodID methodID, va_list args) { 1404 return functions->CallStaticCharMethodV(this,clazz,methodID,args); 1405 } 1406 jchar CallStaticCharMethodA(jclass clazz, 1407 jmethodID methodID, jvalue *args) { 1408 return functions->CallStaticCharMethodA(this,clazz,methodID,args); 1409 } 1410 1411 jshort CallStaticShortMethod(jclass clazz, 1412 jmethodID methodID, ...) { 1413 va_list args; 1414 jshort result; 1415 va_start(args,methodID); 1416 result = functions->CallStaticShortMethodV(this,clazz,methodID,args); 1417 va_end(args); 1418 return result; 1419 } 1420 jshort CallStaticShortMethodV(jclass clazz, 1421 jmethodID methodID, va_list args) { 1422 return functions->CallStaticShortMethodV(this,clazz,methodID,args); 1423 } 1424 jshort CallStaticShortMethodA(jclass clazz, 1425 jmethodID methodID, jvalue *args) { 1426 return functions->CallStaticShortMethodA(this,clazz,methodID,args); 1427 } 1428 1429 jint CallStaticIntMethod(jclass clazz, 1430 jmethodID methodID, ...) { 1431 va_list args; 1432 jint result; 1433 va_start(args,methodID); 1434 result = functions->CallStaticIntMethodV(this,clazz,methodID,args); 1435 va_end(args); 1436 return result; 1437 } 1438 jint CallStaticIntMethodV(jclass clazz, 1439 jmethodID methodID, va_list args) { 1440 return functions->CallStaticIntMethodV(this,clazz,methodID,args); 1441 } 1442 jint CallStaticIntMethodA(jclass clazz, 1443 jmethodID methodID, jvalue *args) { 1444 return functions->CallStaticIntMethodA(this,clazz,methodID,args); 1445 } 1446 1447 jlong CallStaticLongMethod(jclass clazz, 1448 jmethodID methodID, ...) { 1449 va_list args; 1450 jlong result; 1451 va_start(args,methodID); 1452 result = functions->CallStaticLongMethodV(this,clazz,methodID,args); 1453 va_end(args); 1454 return result; 1455 } 1456 jlong CallStaticLongMethodV(jclass clazz, 1457 jmethodID methodID, va_list args) { 1458 return functions->CallStaticLongMethodV(this,clazz,methodID,args); 1459 } 1460 jlong CallStaticLongMethodA(jclass clazz, 1461 jmethodID methodID, jvalue *args) { 1462 return functions->CallStaticLongMethodA(this,clazz,methodID,args); 1463 } 1464 1465 jfloat CallStaticFloatMethod(jclass clazz, 1466 jmethodID methodID, ...) { 1467 va_list args; 1468 jfloat result; 1469 va_start(args,methodID); 1470 result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1471 va_end(args); 1472 return result; 1473 } 1474 jfloat CallStaticFloatMethodV(jclass clazz, 1475 jmethodID methodID, va_list args) { 1476 return functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1477 } 1478 jfloat CallStaticFloatMethodA(jclass clazz, 1479 jmethodID methodID, jvalue *args) { 1480 return functions->CallStaticFloatMethodA(this,clazz,methodID,args); 1481 } 1482 1483 jdouble CallStaticDoubleMethod(jclass clazz, 1484 jmethodID methodID, ...) { 1485 va_list args; 1486 jdouble result; 1487 va_start(args,methodID); 1488 result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1489 va_end(args); 1490 return result; 1491 } 1492 jdouble CallStaticDoubleMethodV(jclass clazz, 1493 jmethodID methodID, va_list args) { 1494 return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1495 } 1496 jdouble CallStaticDoubleMethodA(jclass clazz, 1497 jmethodID methodID, jvalue *args) { 1498 return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); 1499 } 1500 1501 void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { 1502 va_list args; 1503 va_start(args,methodID); 1504 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1505 va_end(args); 1506 } 1507 void CallStaticVoidMethodV(jclass cls, jmethodID methodID, 1508 va_list args) { 1509 functions->CallStaticVoidMethodV(this,cls,methodID,args); 1510 } 1511 void CallStaticVoidMethodA(jclass cls, jmethodID methodID, 1512 jvalue * args) { 1513 functions->CallStaticVoidMethodA(this,cls,methodID,args); 1514 } 1515 1516 jfieldID GetStaticFieldID(jclass clazz, const char *name, 1517 const char *sig) { 1518 return functions->GetStaticFieldID(this,clazz,name,sig); 1519 } 1520 jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { 1521 return functions->GetStaticObjectField(this,clazz,fieldID); 1522 } 1523 jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { 1524 return functions->GetStaticBooleanField(this,clazz,fieldID); 1525 } 1526 jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { 1527 return functions->GetStaticByteField(this,clazz,fieldID); 1528 } 1529 jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { 1530 return functions->GetStaticCharField(this,clazz,fieldID); 1531 } 1532 jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { 1533 return functions->GetStaticShortField(this,clazz,fieldID); 1534 } 1535 jint GetStaticIntField(jclass clazz, jfieldID fieldID) { 1536 return functions->GetStaticIntField(this,clazz,fieldID); 1537 } 1538 jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { 1539 return functions->GetStaticLongField(this,clazz,fieldID); 1540 } 1541 jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { 1542 return functions->GetStaticFloatField(this,clazz,fieldID); 1543 } 1544 jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { 1545 return functions->GetStaticDoubleField(this,clazz,fieldID); 1546 } 1547 1548 void SetStaticObjectField(jclass clazz, jfieldID fieldID, 1549 jobject value) { 1550 functions->SetStaticObjectField(this,clazz,fieldID,value); 1551 } 1552 void SetStaticBooleanField(jclass clazz, jfieldID fieldID, 1553 jboolean value) { 1554 functions->SetStaticBooleanField(this,clazz,fieldID,value); 1555 } 1556 void SetStaticByteField(jclass clazz, jfieldID fieldID, 1557 jbyte value) { 1558 functions->SetStaticByteField(this,clazz,fieldID,value); 1559 } 1560 void SetStaticCharField(jclass clazz, jfieldID fieldID, 1561 jchar value) { 1562 functions->SetStaticCharField(this,clazz,fieldID,value); 1563 } 1564 void SetStaticShortField(jclass clazz, jfieldID fieldID, 1565 jshort value) { 1566 functions->SetStaticShortField(this,clazz,fieldID,value); 1567 } 1568 void SetStaticIntField(jclass clazz, jfieldID fieldID, 1569 jint value) { 1570 functions->SetStaticIntField(this,clazz,fieldID,value); 1571 } 1572 void SetStaticLongField(jclass clazz, jfieldID fieldID, 1573 jlong value) { 1574 functions->SetStaticLongField(this,clazz,fieldID,value); 1575 } 1576 void SetStaticFloatField(jclass clazz, jfieldID fieldID, 1577 jfloat value) { 1578 functions->SetStaticFloatField(this,clazz,fieldID,value); 1579 } 1580 void SetStaticDoubleField(jclass clazz, jfieldID fieldID, 1581 jdouble value) { 1582 functions->SetStaticDoubleField(this,clazz,fieldID,value); 1583 } 1584 1585 jstring NewString(const jchar *unicode, jsize len) { 1586 return functions->NewString(this,unicode,len); 1587 } 1588 jsize GetStringLength(jstring str) { 1589 return functions->GetStringLength(this,str); 1590 } 1591 const jchar *GetStringChars(jstring str, jboolean *isCopy) { 1592 return functions->GetStringChars(this,str,isCopy); 1593 } 1594 void ReleaseStringChars(jstring str, const jchar *chars) { 1595 functions->ReleaseStringChars(this,str,chars); 1596 } 1597 1598 jstring NewStringUTF(const char *utf) { 1599 return functions->NewStringUTF(this,utf); 1600 } 1601 jsize GetStringUTFLength(jstring str) { 1602 return functions->GetStringUTFLength(this,str); 1603 } 1604 const char* GetStringUTFChars(jstring str, jboolean *isCopy) { 1605 return functions->GetStringUTFChars(this,str,isCopy); 1606 } 1607 void ReleaseStringUTFChars(jstring str, const char* chars) { 1608 functions->ReleaseStringUTFChars(this,str,chars); 1609 } 1610 1611 jsize GetArrayLength(jarray array) { 1612 return functions->GetArrayLength(this,array); 1613 } 1614 1615 jobjectArray NewObjectArray(jsize len, jclass clazz, 1616 jobject init) { 1617 return functions->NewObjectArray(this,len,clazz,init); 1618 } 1619 jobject GetObjectArrayElement(jobjectArray array, jsize index) { 1620 return functions->GetObjectArrayElement(this,array,index); 1621 } 1622 void SetObjectArrayElement(jobjectArray array, jsize index, 1623 jobject val) { 1624 functions->SetObjectArrayElement(this,array,index,val); 1625 } 1626 1627 jbooleanArray NewBooleanArray(jsize len) { 1628 return functions->NewBooleanArray(this,len); 1629 } 1630 jbyteArray NewByteArray(jsize len) { 1631 return functions->NewByteArray(this,len); 1632 } 1633 jcharArray NewCharArray(jsize len) { 1634 return functions->NewCharArray(this,len); 1635 } 1636 jshortArray NewShortArray(jsize len) { 1637 return functions->NewShortArray(this,len); 1638 } 1639 jintArray NewIntArray(jsize len) { 1640 return functions->NewIntArray(this,len); 1641 } 1642 jlongArray NewLongArray(jsize len) { 1643 return functions->NewLongArray(this,len); 1644 } 1645 jfloatArray NewFloatArray(jsize len) { 1646 return functions->NewFloatArray(this,len); 1647 } 1648 jdoubleArray NewDoubleArray(jsize len) { 1649 return functions->NewDoubleArray(this,len); 1650 } 1651 1652 jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { 1653 return functions->GetBooleanArrayElements(this,array,isCopy); 1654 } 1655 jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { 1656 return functions->GetByteArrayElements(this,array,isCopy); 1657 } 1658 jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { 1659 return functions->GetCharArrayElements(this,array,isCopy); 1660 } 1661 jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { 1662 return functions->GetShortArrayElements(this,array,isCopy); 1663 } 1664 jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { 1665 return functions->GetIntArrayElements(this,array,isCopy); 1666 } 1667 jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { 1668 return functions->GetLongArrayElements(this,array,isCopy); 1669 } 1670 jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { 1671 return functions->GetFloatArrayElements(this,array,isCopy); 1672 } 1673 jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { 1674 return functions->GetDoubleArrayElements(this,array,isCopy); 1675 } 1676 1677 void ReleaseBooleanArrayElements(jbooleanArray array, 1678 jboolean *elems, 1679 jint mode) { 1680 functions->ReleaseBooleanArrayElements(this,array,elems,mode); 1681 } 1682 void ReleaseByteArrayElements(jbyteArray array, 1683 jbyte *elems, 1684 jint mode) { 1685 functions->ReleaseByteArrayElements(this,array,elems,mode); 1686 } 1687 void ReleaseCharArrayElements(jcharArray array, 1688 jchar *elems, 1689 jint mode) { 1690 functions->ReleaseCharArrayElements(this,array,elems,mode); 1691 } 1692 void ReleaseShortArrayElements(jshortArray array, 1693 jshort *elems, 1694 jint mode) { 1695 functions->ReleaseShortArrayElements(this,array,elems,mode); 1696 } 1697 void ReleaseIntArrayElements(jintArray array, 1698 jint *elems, 1699 jint mode) { 1700 functions->ReleaseIntArrayElements(this,array,elems,mode); 1701 } 1702 void ReleaseLongArrayElements(jlongArray array, 1703 jlong *elems, 1704 jint mode) { 1705 functions->ReleaseLongArrayElements(this,array,elems,mode); 1706 } 1707 void ReleaseFloatArrayElements(jfloatArray array, 1708 jfloat *elems, 1709 jint mode) { 1710 functions->ReleaseFloatArrayElements(this,array,elems,mode); 1711 } 1712 void ReleaseDoubleArrayElements(jdoubleArray array, 1713 jdouble *elems, 1714 jint mode) { 1715 functions->ReleaseDoubleArrayElements(this,array,elems,mode); 1716 } 1717 1718 void GetBooleanArrayRegion(jbooleanArray array, 1719 jsize start, jsize len, jboolean *buf) { 1720 functions->GetBooleanArrayRegion(this,array,start,len,buf); 1721 } 1722 void GetByteArrayRegion(jbyteArray array, 1723 jsize start, jsize len, jbyte *buf) { 1724 functions->GetByteArrayRegion(this,array,start,len,buf); 1725 } 1726 void GetCharArrayRegion(jcharArray array, 1727 jsize start, jsize len, jchar *buf) { 1728 functions->GetCharArrayRegion(this,array,start,len,buf); 1729 } 1730 void GetShortArrayRegion(jshortArray array, 1731 jsize start, jsize len, jshort *buf) { 1732 functions->GetShortArrayRegion(this,array,start,len,buf); 1733 } 1734 void GetIntArrayRegion(jintArray array, 1735 jsize start, jsize len, jint *buf) { 1736 functions->GetIntArrayRegion(this,array,start,len,buf); 1737 } 1738 void GetLongArrayRegion(jlongArray array, 1739 jsize start, jsize len, jlong *buf) { 1740 functions->GetLongArrayRegion(this,array,start,len,buf); 1741 } 1742 void GetFloatArrayRegion(jfloatArray array, 1743 jsize start, jsize len, jfloat *buf) { 1744 functions->GetFloatArrayRegion(this,array,start,len,buf); 1745 } 1746 void GetDoubleArrayRegion(jdoubleArray array, 1747 jsize start, jsize len, jdouble *buf) { 1748 functions->GetDoubleArrayRegion(this,array,start,len,buf); 1749 } 1750 1751 void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 1752 jboolean *buf) { 1753 functions->SetBooleanArrayRegion(this,array,start,len,buf); 1754 } 1755 void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 1756 jbyte *buf) { 1757 functions->SetByteArrayRegion(this,array,start,len,buf); 1758 } 1759 void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 1760 jchar *buf) { 1761 functions->SetCharArrayRegion(this,array,start,len,buf); 1762 } 1763 void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 1764 jshort *buf) { 1765 functions->SetShortArrayRegion(this,array,start,len,buf); 1766 } 1767 void SetIntArrayRegion(jintArray array, jsize start, jsize len, 1768 jint *buf) { 1769 functions->SetIntArrayRegion(this,array,start,len,buf); 1770 } 1771 void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 1772 jlong *buf) { 1773 functions->SetLongArrayRegion(this,array,start,len,buf); 1774 } 1775 void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 1776 jfloat *buf) { 1777 functions->SetFloatArrayRegion(this,array,start,len,buf); 1778 } 1779 void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 1780 jdouble *buf) { 1781 functions->SetDoubleArrayRegion(this,array,start,len,buf); 1782 } 1783 1784 jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, 1785 jint nMethods) { 1786 return functions->RegisterNatives(this,clazz,methods,nMethods); 1787 } 1788 jint UnregisterNatives(jclass clazz) { 1789 return functions->UnregisterNatives(this,clazz); 1790 } 1791 1792 jint MonitorEnter(jobject obj) { 1793 return functions->MonitorEnter(this,obj); 1794 } 1795 jint MonitorExit(jobject obj) { 1796 return functions->MonitorExit(this,obj); 1797 } 1798 1799 jint GetJavaVM(JavaVM **vm) { 1800 return functions->GetJavaVM(this,vm); 1801 } 1802 1803 void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { 1804 functions->GetStringRegion(this,str,start,len,buf); 1805 } 1806 void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { 1807 functions->GetStringUTFRegion(this,str,start,len,buf); 1808 } 1809 1810 void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { 1811 return functions->GetPrimitiveArrayCritical(this,array,isCopy); 1812 } 1813 void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { 1814 functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); 1815 } 1816 1817 const jchar * GetStringCritical(jstring string, jboolean *isCopy) { 1818 return functions->GetStringCritical(this,string,isCopy); 1819 } 1820 void ReleaseStringCritical(jstring string, const jchar *cstring) { 1821 functions->ReleaseStringCritical(this,string,cstring); 1822 } 1823 1824 jweak NewWeakGlobalRef(jobject obj) { 1825 return functions->NewWeakGlobalRef(this,obj); 1826 } 1827 void DeleteWeakGlobalRef(jweak ref) { 1828 functions->DeleteWeakGlobalRef(this,ref); 1829 } 1830 1831 jboolean ExceptionCheck() { 1832 return functions->ExceptionCheck(this); 1833 } 1834 1835 jobject NewDirectByteBuffer(void* address, jlong capacity) { 1836 return functions->NewDirectByteBuffer(this, address, capacity); 1837 } 1838 void* GetDirectBufferAddress(jobject buf) { 1839 return functions->GetDirectBufferAddress(this, buf); 1840 } 1841 jlong GetDirectBufferCapacity(jobject buf) { 1842 return functions->GetDirectBufferCapacity(this, buf); 1843 } 1844 1845 #endif /* __cplusplus */ 1846 }; 1847 1848 typedef struct JavaVMOption { 1849 char *optionString; 1850 void *extraInfo; 1851 } JavaVMOption; 1852 1853 typedef struct JavaVMInitArgs { 1854 jint version; 1855 1856 jint nOptions; 1857 JavaVMOption *options; 1858 jboolean ignoreUnrecognized; 1859 } JavaVMInitArgs; 1860 1861 typedef struct JavaVMAttachArgs { 1862 jint version; 1863 1864 char *name; 1865 jobject group; 1866 } JavaVMAttachArgs; 1867 1868 /* These structures will be VM-specific. */ 1869 1870 typedef struct JDK1_1InitArgs { 1871 jint version; 1872 1873 char **properties; 1874 jint checkSource; 1875 jint nativeStackSize; 1876 jint javaStackSize; 1877 jint minHeapSize; 1878 jint maxHeapSize; 1879 jint verifyMode; 1880 char *classpath; 1881 1882 jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args); 1883 void (JNICALL *exit)(jint code); 1884 void (JNICALL *abort)(void); 1885 1886 jint enableClassGC; 1887 jint enableVerboseGC; 1888 jint disableAsyncGC; 1889 jint verbose; 1890 jboolean debugging; 1891 jint debugPort; 1892 } JDK1_1InitArgs; 1893 1894 typedef struct JDK1_1AttachArgs { 1895 void * __padding; /* C compilers don't allow empty structures. */ 1896 } JDK1_1AttachArgs; 1897 1898 #define JDK1_2 1899 #define JDK1_4 1900 1901 /* End VM-specific. */ 1902 1903 struct JNIInvokeInterface_ { 1904 void *reserved0; 1905 void *reserved1; 1906 void *reserved2; 1907 1908 jint (JNICALL *DestroyJavaVM)(JavaVM *vm); 1909 1910 jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); 1911 1912 jint (JNICALL *DetachCurrentThread)(JavaVM *vm); 1913 1914 jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); 1915 1916 jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); 1917 }; 1918 1919 struct JavaVM_ { 1920 const struct JNIInvokeInterface_ *functions; 1921 #ifdef __cplusplus 1922 1923 jint DestroyJavaVM() { 1924 return functions->DestroyJavaVM(this); 1925 } 1926 jint AttachCurrentThread(void **penv, void *args) { 1927 return functions->AttachCurrentThread(this, penv, args); 1928 } 1929 jint DetachCurrentThread() { 1930 return functions->DetachCurrentThread(this); 1931 } 1932 1933 jint GetEnv(void **penv, jint version) { 1934 return functions->GetEnv(this, penv, version); 1935 } 1936 jint AttachCurrentThreadAsDaemon(void **penv, void *args) { 1937 return functions->AttachCurrentThreadAsDaemon(this, penv, args); 1938 } 1939 #endif 1940 }; 1941 1942 #ifdef _JNI_IMPLEMENTATION_ 1943 #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT 1944 #else 1945 #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT 1946 #endif 1947 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1948 JNI_GetDefaultJavaVMInitArgs(void *args); 1949 1950 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1951 JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); 1952 1953 _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1954 JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); 1955 1956 /* Defined by native libraries. */ 1957 JNIEXPORT jint JNICALL 1958 JNI_OnLoad(JavaVM *vm, void *reserved); 1959 1960 JNIEXPORT void JNICALL 1961 JNI_OnUnload(JavaVM *vm, void *reserved); 1962 1963 #define JNI_VERSION_1_1 0x00010001 1964 #define JNI_VERSION_1_2 0x00010002 1965 #define JNI_VERSION_1_4 0x00010004 1966 1967 #ifdef __cplusplus 1968 } /* extern "C" */ 1969 #endif /* __cplusplus */ 1970 1971 #endif /* JNI_H */ 1972 1973