src/share/vm/prims/jni.h

Wed, 27 Apr 2016 01:25:04 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:25:04 +0800
changeset 0
f90c822e73f8
child 6876
710a3c8b516e
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/
changeset: 6782:28b50d07f6f8
tag: jdk8u25-b17

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

mercurial