Merge with trank @ 137446
[official-gcc.git] / libjava / classpath / include / jni.h
blob707edd612637d01782ead75e4ac34391444d6080
1 /* jni.h
2 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
39 /* Note: this file must be compilable by the C compiler (for now,
40 assuming GNU C is ok). This means you must never use `//'
41 comments, and all C++-specific code must be conditional on
42 __cplusplus. */
44 #ifndef _CLASSPATH_JNI_H
45 #define _CLASSPATH_JNI_H
47 /* We include <stdio.h> for compatibility with Sun's <jni.h>. */
48 #include <stdio.h>
50 #include <stdarg.h>
52 #include "jni_md.h"
54 /* The VM might define jobject and friends. */
55 #ifndef _CLASSPATH_VM_JNI_TYPES_DEFINED
57 # ifdef __cplusplus
59 /* Define dummy classes and then define the JNI types as pointers. */
60 struct __jobject {};
61 struct __jclass : __jobject {};
62 struct __jstring : __jobject {};
63 struct __jthrowable : __jobject {};
64 struct __jweak : __jobject {};
65 struct __jarray : __jobject {};
66 struct __jobjectArray : __jarray {};
67 struct __jbyteArray : __jarray {};
68 struct __jshortArray : __jarray {};
69 struct __jintArray : __jarray {};
70 struct __jlongArray : __jarray {};
71 struct __jbooleanArray : __jarray {};
72 struct __jcharArray : __jarray {};
73 struct __jfloatArray : __jarray {};
74 struct __jdoubleArray : __jarray {};
76 typedef __jobject *jobject;
77 typedef __jclass *jclass;
78 typedef __jstring *jstring;
79 typedef __jthrowable *jthrowable;
80 typedef __jweak *jweak;
81 typedef __jarray *jarray;
82 typedef __jobjectArray *jobjectArray;
83 typedef __jbyteArray *jbyteArray;
84 typedef __jshortArray *jshortArray;
85 typedef __jintArray *jintArray;
86 typedef __jlongArray *jlongArray;
87 typedef __jbooleanArray *jbooleanArray;
88 typedef __jcharArray *jcharArray;
89 typedef __jfloatArray *jfloatArray;
90 typedef __jdoubleArray *jdoubleArray;
92 #define JNI_TRUE true
93 #define JNI_FALSE false
95 typedef struct _Jv_JNIEnv JNIEnv;
96 typedef struct _Jv_JavaVM JavaVM;
98 # else /* __cplusplus */
100 /* For C, simply define the class types as generic pointers. */
101 typedef void *jobject;
102 typedef jobject jclass;
103 typedef jobject jstring;
104 typedef jobject jthrowable;
105 typedef jobject jweak;
106 typedef jobject jarray;
107 typedef jobject jobjectArray;
108 typedef jobject jbyteArray;
109 typedef jobject jshortArray;
110 typedef jobject jintArray;
111 typedef jobject jlongArray;
112 typedef jobject jbooleanArray;
113 typedef jobject jcharArray;
114 typedef jobject jfloatArray;
115 typedef jobject jdoubleArray;
117 #define JNI_TRUE 1
118 #define JNI_FALSE 0
120 typedef const struct JNINativeInterface_ *JNIEnv;
121 typedef const struct JNIInvokeInterface_ *JavaVM;
123 # endif /* __cplusplus */
125 #endif /* _CLASSPATH_VM_JNI_TYPES_DEFINED */
128 * Before jni.h is #included within a typical JVM, the source code should
129 * #define _JNI_VM_INTERNAL_TYPES_DEFINED and provide the real declarations
130 * for 'jobject', 'jfieldID', 'jmethodID' and other implementation types.
131 * If _JNI_VM_INTERNAL_TYPES_DEFINED is not defined, the following
132 * declares the old versions of the types.
134 #ifndef _CLASSPATH_VM_INTERNAL_TYPES_DEFINED
135 struct _jfieldID;
136 struct _jmethodID;
137 typedef struct _jfieldID *jfieldID;
138 typedef struct _jmethodID *jmethodID;
140 enum _jobjectRefType
142 JNIInvalidRefType = 0,
143 JNILocalRefType = 1,
144 JNIGlobalRefType = 2,
145 JNIWeakGlobalRefType = 3
148 typedef enum _jobjectRefType jobjectRefType;
149 #endif
151 /* Version numbers. */
152 #define JNI_VERSION_1_1 0x00010001
153 #define JNI_VERSION_1_2 0x00010002
154 #define JNI_VERSION_1_4 0x00010004
155 #define JNI_VERSION_1_6 0x00010006
157 /* Used when releasing array elements. */
158 #define JNI_COMMIT 1
159 #define JNI_ABORT 2
161 /* Error codes */
162 #define JNI_OK 0
163 #define JNI_ERR (-1)
164 #define JNI_EDETACHED (-2)
165 #define JNI_EVERSION (-3)
168 #ifdef __cplusplus
169 extern "C"
171 #endif /* __cplusplus */
173 /* These functions might be defined in libraries which we load; the
174 JNI implementation calls them at the appropriate times. */
175 extern JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *, void *);
176 extern JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *, void *);
178 /* This can be defined as JNIIMPORT or JNIEXPORT by the md file,
179 depending on whether this is the implementation or a user. */
180 #ifndef _CLASSPATH_JNIIMPEXP
181 #define _CLASSPATH_JNIIMPEXP JNIIMPORT
182 #endif
184 /* These functions are called by user code to start using the
185 invocation API. */
186 extern _CLASSPATH_JNIIMPEXP jint JNICALL
187 JNI_GetDefaultJavaVMInitArgs (void *);
189 extern _CLASSPATH_JNIIMPEXP jint JNICALL
190 JNI_CreateJavaVM (JavaVM **, void **, void *);
192 extern _CLASSPATH_JNIIMPEXP jint JNICALL
193 JNI_GetCreatedJavaVMs (JavaVM **, jsize, jsize *);
195 #ifdef __cplusplus
197 #endif /* __cplusplus */
199 typedef union jvalue
201 jboolean z;
202 jbyte b;
203 jchar c;
204 jshort s;
205 jint i;
206 jlong j;
207 jfloat f;
208 jdouble d;
209 jobject l;
210 } jvalue;
212 /* This structure is used when registering native methods. */
213 typedef struct
215 char *name;
216 char *signature;
217 void *fnPtr; /* Sigh. */
218 } JNINativeMethod;
220 struct JNINativeInterface_
222 void *reserved0;
223 void *reserved1;
224 void *reserved2;
225 void *reserved3;
227 jint (JNICALL *GetVersion) (JNIEnv *);
228 jclass (JNICALL *DefineClass) (JNIEnv *, const char *,
229 jobject, const jbyte *,
230 jsize);
231 jclass (JNICALL *FindClass) (JNIEnv *, const char *);
233 jmethodID (JNICALL *FromReflectedMethod) (JNIEnv *, jobject);
234 jfieldID (JNICALL *FromReflectedField) (JNIEnv *, jobject);
235 jobject (JNICALL *ToReflectedMethod) (JNIEnv *, jclass,
236 jmethodID, jboolean);
238 jclass (JNICALL *GetSuperclass) (JNIEnv *, jclass);
239 jboolean (JNICALL *IsAssignableFrom) (JNIEnv *, jclass, jclass);
241 jobject (JNICALL *ToReflectedField) (JNIEnv *, jclass, jfieldID,
242 jboolean);
244 jint (JNICALL *Throw) (JNIEnv *, jthrowable);
245 jint (JNICALL *ThrowNew) (JNIEnv *, jclass,
246 const char *);
247 jthrowable (JNICALL *ExceptionOccurred) (JNIEnv *);
248 void (JNICALL *ExceptionDescribe) (JNIEnv *);
249 void (JNICALL *ExceptionClear) (JNIEnv *);
250 void (JNICALL *FatalError) (JNIEnv *, const char *);
252 jint (JNICALL *PushLocalFrame) (JNIEnv *, jint);
253 jobject (JNICALL *PopLocalFrame) (JNIEnv *, jobject);
255 jobject (JNICALL *NewGlobalRef) (JNIEnv *, jobject);
256 void (JNICALL *DeleteGlobalRef) (JNIEnv *, jobject);
257 void (JNICALL *DeleteLocalRef) (JNIEnv *, jobject);
258 jboolean (JNICALL *IsSameObject) (JNIEnv *, jobject,
259 jobject);
261 jobject (JNICALL *NewLocalRef) (JNIEnv *, jobject);
262 jint (JNICALL *EnsureLocalCapacity) (JNIEnv *, jint);
264 jobject (JNICALL *AllocObject) (JNIEnv *, jclass);
265 jobject (JNICALL *NewObject) (JNIEnv *, jclass,
266 jmethodID, ...);
267 jobject (JNICALL *NewObjectV) (JNIEnv *, jclass,
268 jmethodID, va_list);
269 jobject (JNICALL *NewObjectA) (JNIEnv *, jclass,
270 jmethodID, const jvalue *);
272 jclass (JNICALL *GetObjectClass) (JNIEnv *, jobject);
273 jboolean (JNICALL *IsInstanceOf) (JNIEnv *, jobject, jclass);
274 jmethodID (JNICALL *GetMethodID) (JNIEnv *, jclass,
275 const char *, const char *);
277 jobject (JNICALL *CallObjectMethod) (JNIEnv *, jobject, jmethodID, ...);
278 jobject (JNICALL *CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
279 va_list);
280 jobject (JNICALL *CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
281 const jvalue *);
282 jboolean (JNICALL *CallBooleanMethod) (JNIEnv *, jobject, jmethodID,
283 ...);
284 jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
285 va_list);
286 jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
287 const jvalue *);
288 jbyte (JNICALL *CallByteMethod) (JNIEnv *, jobject, jmethodID, ...);
289 jbyte (JNICALL *CallByteMethodV) (JNIEnv *, jobject, jmethodID,
290 va_list);
291 jbyte (JNICALL *CallByteMethodA) (JNIEnv *, jobject, jmethodID,
292 const jvalue *);
293 jchar (JNICALL *CallCharMethod) (JNIEnv *, jobject, jmethodID, ...);
294 jchar (JNICALL *CallCharMethodV) (JNIEnv *, jobject, jmethodID,
295 va_list);
296 jchar (JNICALL *CallCharMethodA) (JNIEnv *, jobject, jmethodID,
297 const jvalue *);
298 jshort (JNICALL *CallShortMethod) (JNIEnv *, jobject, jmethodID, ...);
299 jshort (JNICALL *CallShortMethodV) (JNIEnv *, jobject, jmethodID,
300 va_list);
301 jshort (JNICALL *CallShortMethodA) (JNIEnv *, jobject, jmethodID,
302 const jvalue *);
303 jint (JNICALL *CallIntMethod) (JNIEnv *, jobject, jmethodID, ...);
304 jint (JNICALL *CallIntMethodV) (JNIEnv *, jobject, jmethodID,
305 va_list);
306 jint (JNICALL *CallIntMethodA) (JNIEnv *, jobject, jmethodID,
307 const jvalue *);
308 jlong (JNICALL *CallLongMethod) (JNIEnv *, jobject, jmethodID, ...);
309 jlong (JNICALL *CallLongMethodV) (JNIEnv *, jobject, jmethodID,
310 va_list);
311 jlong (JNICALL *CallLongMethodA) (JNIEnv *, jobject, jmethodID,
312 const jvalue *);
313 jfloat (JNICALL *CallFloatMethod) (JNIEnv *, jobject, jmethodID, ...);
314 jfloat (JNICALL *CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
315 va_list);
316 jfloat (JNICALL *CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
317 const jvalue *);
318 jdouble (JNICALL *CallDoubleMethod) (JNIEnv *, jobject, jmethodID, ...);
319 jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
320 va_list);
321 jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
322 const jvalue *);
323 void (JNICALL *CallVoidMethod) (JNIEnv *, jobject, jmethodID, ...);
324 void (JNICALL *CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
325 va_list);
326 void (JNICALL *CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
327 const jvalue *);
329 jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
330 jmethodID, ...);
331 jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
332 jmethodID, va_list);
333 jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
334 jmethodID, const jvalue *);
335 jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
336 jmethodID, ...);
337 jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
338 jmethodID, va_list);
339 jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
340 jmethodID, const jvalue *);
341 jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *, jobject, jclass,
342 jmethodID, ...);
343 jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
344 jmethodID, va_list);
345 jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
346 jmethodID, const jvalue *);
347 jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *, jobject, jclass,
348 jmethodID, ...);
349 jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
350 jmethodID, va_list);
351 jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
352 jmethodID, const jvalue *);
353 jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
354 jmethodID, ...);
355 jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
356 jmethodID, va_list);
357 jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
358 jmethodID, const jvalue *);
359 jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *, jobject, jclass,
360 jmethodID, ...);
361 jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *, jobject, jclass,
362 jmethodID, va_list);
363 jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *, jobject, jclass,
364 jmethodID, const jvalue *);
365 jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *, jobject, jclass,
366 jmethodID, ...);
367 jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
368 jmethodID, va_list);
369 jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
370 jmethodID, const jvalue *);
371 jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
372 jmethodID, ...);
373 jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
374 jmethodID, va_list);
375 jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
376 jmethodID, const jvalue *);
377 jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
378 jmethodID, ...);
379 jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
380 jmethodID, va_list);
381 jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
382 jmethodID, const jvalue *);
383 void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *, jobject, jclass,
384 jmethodID, ...);
385 void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
386 jmethodID, va_list);
387 void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
388 jmethodID, const jvalue *);
390 jfieldID (JNICALL *GetFieldID) (JNIEnv *, jclass, const char *,
391 const char *);
393 jobject (JNICALL *GetObjectField) (JNIEnv *, jobject, jfieldID);
394 jboolean (JNICALL *GetBooleanField) (JNIEnv *, jobject, jfieldID);
395 jbyte (JNICALL *GetByteField) (JNIEnv *, jobject, jfieldID);
396 jchar (JNICALL *GetCharField) (JNIEnv *, jobject, jfieldID);
397 jshort (JNICALL *GetShortField) (JNIEnv *, jobject, jfieldID);
398 jint (JNICALL *GetIntField) (JNIEnv *, jobject, jfieldID);
399 jlong (JNICALL *GetLongField) (JNIEnv *, jobject, jfieldID);
400 jfloat (JNICALL *GetFloatField) (JNIEnv *, jobject, jfieldID);
401 jdouble (JNICALL *GetDoubleField) (JNIEnv *, jobject, jfieldID);
403 void (JNICALL *SetObjectField) (JNIEnv *, jobject,
404 jfieldID, jobject);
405 void (JNICALL *SetBooleanField) (JNIEnv *, jobject,
406 jfieldID, jboolean);
407 void (JNICALL *SetByteField) (JNIEnv *, jobject,
408 jfieldID, jbyte);
409 void (JNICALL *SetCharField) (JNIEnv *, jobject,
410 jfieldID, jchar);
411 void (JNICALL *SetShortField) (JNIEnv *, jobject,
412 jfieldID, jshort);
413 void (JNICALL *SetIntField) (JNIEnv *, jobject,
414 jfieldID, jint);
415 void (JNICALL *SetLongField) (JNIEnv *, jobject,
416 jfieldID, jlong);
417 void (JNICALL *SetFloatField) (JNIEnv *, jobject,
418 jfieldID, jfloat);
419 void (JNICALL *SetDoubleField) (JNIEnv *, jobject,
420 jfieldID, jdouble);
422 jmethodID (JNICALL *GetStaticMethodID) (JNIEnv *, jclass, const char *,
423 const char *);
425 jobject (JNICALL *CallStaticObjectMethod) (JNIEnv *, jclass, jmethodID,
426 ...);
427 jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
428 va_list);
429 jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
430 const jvalue *);
431 jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
432 ...);
433 jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
434 va_list);
435 jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
436 const jvalue *);
437 jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *, jclass, jmethodID,
438 ...);
439 jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
440 va_list);
441 jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
442 const jvalue *);
443 jchar (JNICALL *CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
444 ...);
445 jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
446 va_list);
447 jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
448 const jvalue *);
449 jshort (JNICALL *CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
450 ...);
451 jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
452 va_list);
453 jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
454 const jvalue *);
455 jint (JNICALL *CallStaticIntMethod) (JNIEnv *, jclass, jmethodID,
456 ...);
457 jint (JNICALL *CallStaticIntMethodV) (JNIEnv *, jclass, jmethodID,
458 va_list);
459 jint (JNICALL *CallStaticIntMethodA) (JNIEnv *, jclass, jmethodID,
460 const jvalue *);
461 jlong (JNICALL *CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
462 ...);
463 jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
464 va_list);
465 jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
466 const jvalue *);
467 jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
468 ...);
469 jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
470 va_list);
471 jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
472 const jvalue *);
473 jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
474 ...);
475 jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
476 va_list);
477 jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
478 const jvalue *);
479 void (JNICALL *CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
480 ...);
481 void (JNICALL *CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
482 va_list);
483 void (JNICALL *CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
484 const jvalue *);
486 jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *, jclass, const char *,
487 const char *);
489 jobject (JNICALL *GetStaticObjectField) (JNIEnv *, jclass, jfieldID);
490 jboolean (JNICALL *GetStaticBooleanField) (JNIEnv *, jclass, jfieldID);
491 jbyte (JNICALL *GetStaticByteField) (JNIEnv *, jclass, jfieldID);
492 jchar (JNICALL *GetStaticCharField) (JNIEnv *, jclass, jfieldID);
493 jshort (JNICALL *GetStaticShortField) (JNIEnv *, jclass, jfieldID);
494 jint (JNICALL *GetStaticIntField) (JNIEnv *, jclass, jfieldID);
495 jlong (JNICALL *GetStaticLongField) (JNIEnv *, jclass, jfieldID);
496 jfloat (JNICALL *GetStaticFloatField) (JNIEnv *, jclass, jfieldID);
497 jdouble (JNICALL *GetStaticDoubleField) (JNIEnv *, jclass, jfieldID);
499 void (JNICALL *SetStaticObjectField) (JNIEnv *, jclass,
500 jfieldID, jobject);
501 void (JNICALL *SetStaticBooleanField) (JNIEnv *, jclass,
502 jfieldID, jboolean);
503 void (JNICALL *SetStaticByteField) (JNIEnv *, jclass,
504 jfieldID, jbyte);
505 void (JNICALL *SetStaticCharField) (JNIEnv *, jclass,
506 jfieldID, jchar);
507 void (JNICALL *SetStaticShortField) (JNIEnv *, jclass,
508 jfieldID, jshort);
509 void (JNICALL *SetStaticIntField) (JNIEnv *, jclass,
510 jfieldID, jint);
511 void (JNICALL *SetStaticLongField) (JNIEnv *, jclass,
512 jfieldID, jlong);
513 void (JNICALL *SetStaticFloatField) (JNIEnv *, jclass,
514 jfieldID, jfloat);
515 void (JNICALL *SetStaticDoubleField) (JNIEnv *, jclass,
516 jfieldID, jdouble);
518 jstring (JNICALL *NewString) (JNIEnv *, const jchar *, jsize);
519 jsize (JNICALL *GetStringLength) (JNIEnv *, jstring);
520 const jchar * (JNICALL *GetStringChars) (JNIEnv *, jstring, jboolean *);
521 void (JNICALL *ReleaseStringChars) (JNIEnv *, jstring, const jchar *);
522 jstring (JNICALL *NewStringUTF) (JNIEnv *, const char *);
523 jsize (JNICALL *GetStringUTFLength) (JNIEnv *, jstring);
524 const char * (JNICALL *GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
525 void (JNICALL *ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
526 jsize (JNICALL *GetArrayLength) (JNIEnv *, jarray);
527 jobjectArray (JNICALL *NewObjectArray) (JNIEnv *, jsize, jclass, jobject);
528 jobject (JNICALL *GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
529 void (JNICALL *SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
530 jobject);
532 jbooleanArray (JNICALL *NewBooleanArray) (JNIEnv *, jsize);
533 jbyteArray (JNICALL *NewByteArray) (JNIEnv *, jsize);
534 jcharArray (JNICALL *NewCharArray) (JNIEnv *, jsize);
535 jshortArray (JNICALL *NewShortArray) (JNIEnv *, jsize);
536 jintArray (JNICALL *NewIntArray) (JNIEnv *, jsize);
537 jlongArray (JNICALL *NewLongArray) (JNIEnv *, jsize);
538 jfloatArray (JNICALL *NewFloatArray) (JNIEnv *, jsize);
539 jdoubleArray (JNICALL *NewDoubleArray) (JNIEnv *, jsize);
541 jboolean * (JNICALL *GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
542 jboolean *);
543 jbyte * (JNICALL *GetByteArrayElements) (JNIEnv *, jbyteArray,
544 jboolean *);
545 jchar * (JNICALL *GetCharArrayElements) (JNIEnv *, jcharArray,
546 jboolean *);
547 jshort * (JNICALL *GetShortArrayElements) (JNIEnv *, jshortArray,
548 jboolean *);
549 jint * (JNICALL *GetIntArrayElements) (JNIEnv *, jintArray,
550 jboolean *);
551 jlong * (JNICALL *GetLongArrayElements) (JNIEnv *, jlongArray,
552 jboolean *);
553 jfloat * (JNICALL *GetFloatArrayElements) (JNIEnv *, jfloatArray,
554 jboolean *);
555 jdouble * (JNICALL *GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
556 jboolean *);
558 void (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
559 jboolean *, jint);
560 void (JNICALL *ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
561 jbyte *, jint);
562 void (JNICALL *ReleaseCharArrayElements) (JNIEnv *, jcharArray,
563 jchar *, jint);
564 void (JNICALL *ReleaseShortArrayElements) (JNIEnv *, jshortArray,
565 jshort *, jint);
566 void (JNICALL *ReleaseIntArrayElements) (JNIEnv *, jintArray,
567 jint *, jint);
568 void (JNICALL *ReleaseLongArrayElements) (JNIEnv *, jlongArray,
569 jlong *, jint);
570 void (JNICALL *ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
571 jfloat *, jint);
572 void (JNICALL *ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
573 jdouble *, jint);
575 void (JNICALL *GetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
576 jsize, jsize, jboolean *);
577 void (JNICALL *GetByteArrayRegion) (JNIEnv *, jbyteArray,
578 jsize, jsize, jbyte *);
579 void (JNICALL *GetCharArrayRegion) (JNIEnv *, jcharArray,
580 jsize, jsize, jchar *);
581 void (JNICALL *GetShortArrayRegion) (JNIEnv *, jshortArray,
582 jsize, jsize, jshort *);
583 void (JNICALL *GetIntArrayRegion) (JNIEnv *, jintArray,
584 jsize, jsize, jint *);
585 void (JNICALL *GetLongArrayRegion) (JNIEnv *, jlongArray,
586 jsize, jsize, jlong *);
587 void (JNICALL *GetFloatArrayRegion) (JNIEnv *, jfloatArray,
588 jsize, jsize, jfloat *);
589 void (JNICALL *GetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
590 jsize, jsize, jdouble *);
592 void (JNICALL *SetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
593 jsize, jsize,
594 const jboolean *);
595 void (JNICALL *SetByteArrayRegion) (JNIEnv *, jbyteArray,
596 jsize, jsize,
597 const jbyte *);
598 void (JNICALL *SetCharArrayRegion) (JNIEnv *, jcharArray,
599 jsize, jsize,
600 const jchar *);
601 void (JNICALL *SetShortArrayRegion) (JNIEnv *, jshortArray,
602 jsize, jsize,
603 const jshort *);
604 void (JNICALL *SetIntArrayRegion) (JNIEnv *, jintArray,
605 jsize, jsize,
606 const jint *);
607 void (JNICALL *SetLongArrayRegion) (JNIEnv *, jlongArray,
608 jsize, jsize,
609 const jlong *);
610 void (JNICALL *SetFloatArrayRegion) (JNIEnv *, jfloatArray,
611 jsize, jsize,
612 const jfloat *);
613 void (JNICALL *SetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
614 jsize, jsize,
615 const jdouble *);
617 jint (JNICALL *RegisterNatives) (JNIEnv *, jclass,
618 const JNINativeMethod *,
619 jint);
620 jint (JNICALL *UnregisterNatives) (JNIEnv *, jclass);
621 jint (JNICALL *MonitorEnter) (JNIEnv *, jobject);
622 jint (JNICALL *MonitorExit) (JNIEnv *, jobject);
623 jint (JNICALL *GetJavaVM) (JNIEnv *, JavaVM **);
625 /* ---- JNI 1.2 functions ---- */
627 void (JNICALL *GetStringRegion) (JNIEnv *, jstring, jsize,
628 jsize, jchar *);
629 void (JNICALL *GetStringUTFRegion) (JNIEnv *, jstring, jsize,
630 jsize, char *);
632 void * (JNICALL *GetPrimitiveArrayCritical) (JNIEnv *, jarray,
633 jboolean *);
634 void (JNICALL *ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *,
635 jint);
637 const jchar * (JNICALL *GetStringCritical) (JNIEnv *, jstring,
638 jboolean *);
639 void (JNICALL *ReleaseStringCritical) (JNIEnv *, jstring,
640 const jchar *);
642 jweak (JNICALL *NewWeakGlobalRef) (JNIEnv *, jobject);
643 void (JNICALL *DeleteWeakGlobalRef) (JNIEnv *, jweak);
645 jboolean (JNICALL *ExceptionCheck) (JNIEnv *);
647 /* ---- JNI 1.4 functions ---- */
649 jobject (JNICALL *NewDirectByteBuffer) (JNIEnv *, void *, jlong);
650 void * (JNICALL *GetDirectBufferAddress) (JNIEnv *, jobject);
651 jlong (JNICALL *GetDirectBufferCapacity) (JNIEnv *, jobject);
653 /* ---- JNI 1.6 functions ---- */
655 jobjectRefType (JNICALL *GetObjectRefType) (JNIEnv *, jobject);
658 #ifdef __cplusplus
660 class _Jv_JNIEnv
662 public:
663 /* The method table. */
664 struct JNINativeInterface_ *p;
666 #ifdef _CLASSPATH_JNIENV_CONTENTS
667 _CLASSPATH_JNIENV_CONTENTS
668 #endif
670 jint GetVersion ()
671 { return p->GetVersion (this); }
673 jclass DefineClass (const char *name, jobject obj0, const jbyte * val1,
674 jsize val2)
675 { return p->DefineClass (this, name, obj0, val1, val2); }
677 jclass FindClass (const char * val0)
678 { return p->FindClass (this, val0); }
680 jmethodID FromReflectedMethod (jobject obj0)
681 { return p->FromReflectedMethod (this, obj0); }
683 jfieldID FromReflectedField (jobject obj0)
684 { return p->FromReflectedField (this, obj0); }
686 jobject ToReflectedMethod (jclass cl0, jmethodID meth1, jboolean val2)
687 { return p->ToReflectedMethod (this, cl0, meth1, val2); }
689 jclass GetSuperclass (jclass cl0)
690 { return p->GetSuperclass (this, cl0); }
692 jboolean IsAssignableFrom (jclass cl0, jclass cl1)
693 { return p->IsAssignableFrom (this, cl0, cl1); }
695 jobject ToReflectedField (jclass cl0, jfieldID fld1, jboolean val2)
696 { return p->ToReflectedField (this, cl0, fld1, val2); }
698 jint Throw (jthrowable val0)
699 { return p->Throw (this, val0); }
701 jint ThrowNew (jclass cl0, const char * val1)
702 { return p->ThrowNew (this, cl0, val1); }
704 jthrowable ExceptionOccurred ()
705 { return p->ExceptionOccurred (this); }
707 void ExceptionDescribe ()
708 { p->ExceptionDescribe (this); }
710 void ExceptionClear ()
711 { p->ExceptionClear (this); }
713 void FatalError (const char * val0)
714 { p->FatalError (this, val0); }
716 jint PushLocalFrame (jint val0)
717 { return p->PushLocalFrame (this, val0); }
719 jobject PopLocalFrame (jobject obj0)
720 { return p->PopLocalFrame (this, obj0); }
722 jobject NewGlobalRef (jobject obj0)
723 { return p->NewGlobalRef (this, obj0); }
725 void DeleteGlobalRef (jobject obj0)
726 { p->DeleteGlobalRef (this, obj0); }
728 void DeleteLocalRef (jobject obj0)
729 { p->DeleteLocalRef (this, obj0); }
731 jboolean IsSameObject (jobject obj0, jobject obj1)
732 { return p->IsSameObject (this, obj0, obj1); }
734 jobject NewLocalRef (jobject obj0)
735 { return p->NewLocalRef (this, obj0); }
737 jint EnsureLocalCapacity (jint val0)
738 { return p->EnsureLocalCapacity (this, val0); }
740 jobject AllocObject (jclass cl0)
741 { return p->AllocObject (this, cl0); }
743 jobject NewObject (jclass cl0, jmethodID meth1, ...)
745 va_list args;
746 va_start (args, meth1);
747 jobject result = p->NewObjectV (this, cl0, meth1, args);
748 va_end (args);
749 return result;
752 jobject NewObjectV (jclass cl0, jmethodID meth1, va_list val2)
753 { return p->NewObjectV (this, cl0, meth1, val2); }
755 jobject NewObjectA (jclass cl0, jmethodID meth1, jvalue * val2)
756 { return p->NewObjectA (this, cl0, meth1, val2); }
758 jclass GetObjectClass (jobject obj0)
759 { return p->GetObjectClass (this, obj0); }
761 jboolean IsInstanceOf (jobject obj0, jclass cl1)
762 { return p->IsInstanceOf (this, obj0, cl1); }
764 jmethodID GetMethodID (jclass cl0, const char * val1, const char * val2)
765 { return p->GetMethodID (this, cl0, val1, val2); }
767 jobject CallObjectMethod (jobject obj0, jmethodID meth1, ...)
769 va_list args;
770 va_start (args, meth1);
771 jobject result = p->CallObjectMethodV (this, obj0, meth1, args);
772 va_end (args);
773 return result;
776 jobject CallObjectMethodV (jobject obj0, jmethodID meth1, va_list val2)
777 { return p->CallObjectMethodV (this, obj0, meth1, val2); }
779 jobject CallObjectMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
780 { return p->CallObjectMethodA (this, obj0, meth1, val2); }
782 jboolean CallBooleanMethod (jobject obj0, jmethodID meth1, ...)
784 va_list args;
785 va_start (args, meth1);
786 jboolean result = p->CallBooleanMethodV (this, obj0, meth1, args);
787 va_end (args);
788 return result;
791 jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, va_list val2)
792 { return p->CallBooleanMethodV (this, obj0, meth1, val2); }
794 jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1,
795 const jvalue * val2)
796 { return p->CallBooleanMethodA (this, obj0, meth1, val2); }
798 jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
800 va_list args;
801 va_start (args, meth1);
802 jbyte result = p->CallByteMethodV (this, obj0, meth1, args);
803 va_end (args);
804 return result;
807 jbyte CallByteMethodV (jobject obj0, jmethodID meth1, va_list val2)
808 { return p->CallByteMethodV (this, obj0, meth1, val2); }
810 jbyte CallByteMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
811 { return p->CallByteMethodA (this, obj0, meth1, val2); }
813 jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
815 va_list args;
816 va_start (args, meth1);
817 jchar result = p->CallCharMethodV (this, obj0, meth1, args);
818 va_end (args);
819 return result;
822 jchar CallCharMethodV (jobject obj0, jmethodID meth1, va_list val2)
823 { return p->CallCharMethodV (this, obj0, meth1, val2); }
825 jchar CallCharMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
826 { return p->CallCharMethodA (this, obj0, meth1, val2); }
828 jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
830 va_list args;
831 va_start (args, meth1);
832 jshort result = p->CallShortMethodV (this, obj0, meth1, args);
833 va_end (args);
834 return result;
837 jshort CallShortMethodV (jobject obj0, jmethodID meth1, va_list val2)
838 { return p->CallShortMethodV (this, obj0, meth1, val2); }
840 jshort CallShortMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
841 { return p->CallShortMethodA (this, obj0, meth1, val2); }
843 jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
845 va_list args;
846 va_start (args, meth1);
847 jint result = p->CallIntMethodV (this, obj0, meth1, args);
848 va_end (args);
849 return result;
852 jint CallIntMethodV (jobject obj0, jmethodID meth1, va_list val2)
853 { return p->CallIntMethodV (this, obj0, meth1, val2); }
855 jint CallIntMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
856 { return p->CallIntMethodA (this, obj0, meth1, val2); }
858 jlong CallLongMethod (jobject obj0, jmethodID meth1, ...)
860 va_list args;
861 va_start (args, meth1);
862 jlong result = p->CallLongMethodV (this, obj0, meth1, args);
863 va_end (args);
864 return result;
867 jlong CallLongMethodV (jobject obj0, jmethodID meth1, va_list val2)
868 { return p->CallLongMethodV (this, obj0, meth1, val2); }
870 jlong CallLongMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
871 { return p->CallLongMethodA (this, obj0, meth1, val2); }
873 jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
875 va_list args;
876 va_start (args, meth1);
877 jfloat result = p->CallFloatMethodV (this, obj0, meth1, args);
878 va_end (args);
879 return result;
882 jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, va_list val2)
883 { return p->CallFloatMethodV (this, obj0, meth1, val2); }
885 jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
886 { return p->CallFloatMethodA (this, obj0, meth1, val2); }
888 jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
890 va_list args;
891 va_start (args, meth1);
892 jdouble result = p->CallDoubleMethodV (this, obj0, meth1, args);
893 va_end (args);
894 return result;
897 jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, va_list val2)
898 { return p->CallDoubleMethodV (this, obj0, meth1, val2); }
900 jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
901 { return p->CallDoubleMethodA (this, obj0, meth1, val2); }
903 void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
905 va_list args;
906 va_start (args, meth1);
907 p->CallVoidMethodV (this, obj0, meth1, args);
908 va_end (args);
911 void CallVoidMethodV (jobject obj0, jmethodID meth1, va_list val2)
912 { p->CallVoidMethodV (this, obj0, meth1, val2); }
914 void CallVoidMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
915 { p->CallVoidMethodA (this, obj0, meth1, val2); }
917 jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
919 va_list args;
920 va_start (args, meth2);
921 jobject result = p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, args);
922 va_end (args);
923 return result;
926 jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
927 { return p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
929 jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
930 { return p->CallNonvirtualObjectMethodA (this, obj0, cl1, meth2, val3); }
932 jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
934 va_list args;
935 va_start (args, meth2);
936 jboolean result = p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, args);
937 va_end (args);
938 return result;
941 jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
942 { return p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
944 jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
945 { return p->CallNonvirtualBooleanMethodA (this, obj0, cl1, meth2, val3); }
947 jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
949 va_list args;
950 va_start (args, meth2);
951 jbyte result = p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, args);
952 va_end (args);
953 return result;
956 jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
957 { return p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
959 jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
960 { return p->CallNonvirtualByteMethodA (this, obj0, cl1, meth2, val3); }
962 jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
964 va_list args;
965 va_start (args, meth2);
966 jchar result = p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, args);
967 va_end (args);
968 return result;
971 jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
972 { return p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
974 jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
975 { return p->CallNonvirtualCharMethodA (this, obj0, cl1, meth2, val3); }
977 jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
979 va_list args;
980 va_start (args, meth2);
981 jshort result = p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, args);
982 va_end (args);
983 return result;
986 jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
987 { return p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
989 jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
990 { return p->CallNonvirtualShortMethodA (this, obj0, cl1, meth2, val3); }
992 jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
994 va_list args;
995 va_start (args, meth2);
996 jint result = p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, args);
997 va_end (args);
998 return result;
1001 jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1002 { return p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
1004 jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
1005 { return p->CallNonvirtualIntMethodA (this, obj0, cl1, meth2, val3); }
1007 jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1009 va_list args;
1010 va_start (args, meth2);
1011 jlong result = p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, args);
1012 va_end (args);
1013 return result;
1016 jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1017 { return p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
1019 jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
1020 { return p->CallNonvirtualLongMethodA (this, obj0, cl1, meth2, val3); }
1022 jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1024 va_list args;
1025 va_start (args, meth2);
1026 jfloat result = p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, args);
1027 va_end (args);
1028 return result;
1031 jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1032 { return p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
1034 jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
1035 { return p->CallNonvirtualFloatMethodA (this, obj0, cl1, meth2, val3); }
1037 jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1039 va_list args;
1040 va_start (args, meth2);
1041 jdouble result = p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, args);
1042 va_end (args);
1043 return result;
1046 jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1047 { return p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
1049 jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
1050 { return p->CallNonvirtualDoubleMethodA (this, obj0, cl1, meth2, val3); }
1052 void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1054 va_list args;
1055 va_start (args, meth2);
1056 p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, args);
1057 va_end (args);
1060 void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1061 { p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
1063 void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
1064 { p->CallNonvirtualVoidMethodA (this, obj0, cl1, meth2, val3); }
1066 jfieldID GetFieldID (jclass cl0, const char * val1, const char * val2)
1067 { return p->GetFieldID (this, cl0, val1, val2); }
1069 jobject GetObjectField (jobject obj0, jfieldID fld1)
1070 { return p->GetObjectField (this, obj0, fld1); }
1072 jboolean GetBooleanField (jobject obj0, jfieldID fld1)
1073 { return p->GetBooleanField (this, obj0, fld1); }
1075 jbyte GetByteField (jobject obj0, jfieldID fld1)
1076 { return p->GetByteField (this, obj0, fld1); }
1078 jchar GetCharField (jobject obj0, jfieldID fld1)
1079 { return p->GetCharField (this, obj0, fld1); }
1081 jshort GetShortField (jobject obj0, jfieldID fld1)
1082 { return p->GetShortField (this, obj0, fld1); }
1084 jint GetIntField (jobject obj0, jfieldID fld1)
1085 { return p->GetIntField (this, obj0, fld1); }
1087 jlong GetLongField (jobject obj0, jfieldID fld1)
1088 { return p->GetLongField (this, obj0, fld1); }
1090 jfloat GetFloatField (jobject obj0, jfieldID fld1)
1091 { return p->GetFloatField (this, obj0, fld1); }
1093 jdouble GetDoubleField (jobject obj0, jfieldID fld1)
1094 { return p->GetDoubleField (this, obj0, fld1); }
1096 void SetObjectField (jobject obj0, jfieldID fld1, jobject obj2)
1097 { p->SetObjectField (this, obj0, fld1, obj2); }
1099 void SetBooleanField (jobject obj0, jfieldID fld1, jboolean val2)
1100 { p->SetBooleanField (this, obj0, fld1, val2); }
1102 void SetByteField (jobject obj0, jfieldID fld1, jbyte val2)
1103 { p->SetByteField (this, obj0, fld1, val2); }
1105 void SetCharField (jobject obj0, jfieldID fld1, jchar val2)
1106 { p->SetCharField (this, obj0, fld1, val2); }
1108 void SetShortField (jobject obj0, jfieldID fld1, jshort val2)
1109 { p->SetShortField (this, obj0, fld1, val2); }
1111 void SetIntField (jobject obj0, jfieldID fld1, jint val2)
1112 { p->SetIntField (this, obj0, fld1, val2); }
1114 void SetLongField (jobject obj0, jfieldID fld1, jlong val2)
1115 { p->SetLongField (this, obj0, fld1, val2); }
1117 void SetFloatField (jobject obj0, jfieldID fld1, jfloat val2)
1118 { p->SetFloatField (this, obj0, fld1, val2); }
1120 void SetDoubleField (jobject obj0, jfieldID fld1, jdouble val2)
1121 { p->SetDoubleField (this, obj0, fld1, val2); }
1123 jmethodID GetStaticMethodID (jclass cl0, const char * val1, const char * val2)
1124 { return p->GetStaticMethodID (this, cl0, val1, val2); }
1126 jobject CallStaticObjectMethod (jclass cl0, jmethodID meth1, ...)
1128 va_list args;
1129 va_start (args, meth1);
1130 jobject result = p->CallStaticObjectMethodV (this, cl0, meth1, args);
1131 va_end (args);
1132 return result;
1135 jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, va_list val2)
1136 { return p->CallStaticObjectMethodV (this, cl0, meth1, val2); }
1138 jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1,
1139 const jvalue * val2)
1140 { return p->CallStaticObjectMethodA (this, cl0, meth1, val2); }
1142 jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
1144 va_list args;
1145 va_start (args, meth1);
1146 jboolean result = p->CallStaticBooleanMethodV (this, cl0, meth1, args);
1147 va_end (args);
1148 return result;
1151 jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, va_list val2)
1152 { return p->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
1154 jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1,
1155 const jvalue * val2)
1156 { return p->CallStaticBooleanMethodA (this, cl0, meth1, val2); }
1158 jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
1160 va_list args;
1161 va_start (args, meth1);
1162 jbyte result = p->CallStaticByteMethodV (this, cl0, meth1, args);
1163 va_end (args);
1164 return result;
1167 jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, va_list val2)
1168 { return p->CallStaticByteMethodV (this, cl0, meth1, val2); }
1170 jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
1171 { return p->CallStaticByteMethodA (this, cl0, meth1, val2); }
1173 jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
1175 va_list args;
1176 va_start (args, meth1);
1177 jchar result = p->CallStaticCharMethodV (this, cl0, meth1, args);
1178 va_end (args);
1179 return result;
1182 jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, va_list val2)
1183 { return p->CallStaticCharMethodV (this, cl0, meth1, val2); }
1185 jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
1186 { return p->CallStaticCharMethodA (this, cl0, meth1, val2); }
1188 jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
1190 va_list args;
1191 va_start (args, meth1);
1192 jshort result = p->CallStaticShortMethodV (this, cl0, meth1, args);
1193 va_end (args);
1194 return result;
1197 jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, va_list val2)
1198 { return p->CallStaticShortMethodV (this, cl0, meth1, val2); }
1200 jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1,
1201 const jvalue * val2)
1202 { return p->CallStaticShortMethodA (this, cl0, meth1, val2); }
1204 jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
1206 va_list args;
1207 va_start (args, meth1);
1208 jint result = p->CallStaticIntMethodV (this, cl0, meth1, args);
1209 va_end (args);
1210 return result;
1213 jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, va_list val2)
1214 { return p->CallStaticIntMethodV (this, cl0, meth1, val2); }
1216 jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
1217 { return p->CallStaticIntMethodA (this, cl0, meth1, val2); }
1219 jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
1221 va_list args;
1222 va_start (args, meth1);
1223 jlong result = p->CallStaticLongMethodV (this, cl0, meth1, args);
1224 va_end (args);
1225 return result;
1228 jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, va_list val2)
1229 { return p->CallStaticLongMethodV (this, cl0, meth1, val2); }
1231 jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
1232 { return p->CallStaticLongMethodA (this, cl0, meth1, val2); }
1234 jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
1236 va_list args;
1237 va_start (args, meth1);
1238 jfloat result = p->CallStaticFloatMethodV (this, cl0, meth1, args);
1239 va_end (args);
1240 return result;
1243 jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, va_list val2)
1244 { return p->CallStaticFloatMethodV (this, cl0, meth1, val2); }
1246 jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1,
1247 const jvalue * val2)
1248 { return p->CallStaticFloatMethodA (this, cl0, meth1, val2); }
1250 jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
1252 va_list args;
1253 va_start (args, meth1);
1254 jdouble result = p->CallStaticDoubleMethodV (this, cl0, meth1, args);
1255 va_end (args);
1256 return result;
1259 jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, va_list val2)
1260 { return p->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
1262 jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1,
1263 const jvalue * val2)
1264 { return p->CallStaticDoubleMethodA (this, cl0, meth1, val2); }
1266 void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
1268 va_list args;
1269 va_start (args, meth1);
1270 p->CallStaticVoidMethodV (this, cl0, meth1, args);
1271 va_end (args);
1274 void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, va_list val2)
1275 { p->CallStaticVoidMethodV (this, cl0, meth1, val2); }
1277 void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
1278 { p->CallStaticVoidMethodA (this, cl0, meth1, val2); }
1280 jfieldID GetStaticFieldID (jclass cl0, const char * val1, const char * val2)
1281 { return p->GetStaticFieldID (this, cl0, val1, val2); }
1283 jobject GetStaticObjectField (jclass cl0, jfieldID fld1)
1284 { return p->GetStaticObjectField (this, cl0, fld1); }
1286 jboolean GetStaticBooleanField (jclass cl0, jfieldID fld1)
1287 { return p->GetStaticBooleanField (this, cl0, fld1); }
1289 jbyte GetStaticByteField (jclass cl0, jfieldID fld1)
1290 { return p->GetStaticByteField (this, cl0, fld1); }
1292 jchar GetStaticCharField (jclass cl0, jfieldID fld1)
1293 { return p->GetStaticCharField (this, cl0, fld1); }
1295 jshort GetStaticShortField (jclass cl0, jfieldID fld1)
1296 { return p->GetStaticShortField (this, cl0, fld1); }
1298 jint GetStaticIntField (jclass cl0, jfieldID fld1)
1299 { return p->GetStaticIntField (this, cl0, fld1); }
1301 jlong GetStaticLongField (jclass cl0, jfieldID fld1)
1302 { return p->GetStaticLongField (this, cl0, fld1); }
1304 jfloat GetStaticFloatField (jclass cl0, jfieldID fld1)
1305 { return p->GetStaticFloatField (this, cl0, fld1); }
1307 jdouble GetStaticDoubleField (jclass cl0, jfieldID fld1)
1308 { return p->GetStaticDoubleField (this, cl0, fld1); }
1310 void SetStaticObjectField (jclass cl0, jfieldID fld1, jobject obj2)
1311 { p->SetStaticObjectField (this, cl0, fld1, obj2); }
1313 void SetStaticBooleanField (jclass cl0, jfieldID fld1, jboolean val2)
1314 { p->SetStaticBooleanField (this, cl0, fld1, val2); }
1316 void SetStaticByteField (jclass cl0, jfieldID fld1, jbyte val2)
1317 { p->SetStaticByteField (this, cl0, fld1, val2); }
1319 void SetStaticCharField (jclass cl0, jfieldID fld1, jchar val2)
1320 { p->SetStaticCharField (this, cl0, fld1, val2); }
1322 void SetStaticShortField (jclass cl0, jfieldID fld1, jshort val2)
1323 { p->SetStaticShortField (this, cl0, fld1, val2); }
1325 void SetStaticIntField (jclass cl0, jfieldID fld1, jint val2)
1326 { p->SetStaticIntField (this, cl0, fld1, val2); }
1328 void SetStaticLongField (jclass cl0, jfieldID fld1, jlong val2)
1329 { p->SetStaticLongField (this, cl0, fld1, val2); }
1331 void SetStaticFloatField (jclass cl0, jfieldID fld1, jfloat val2)
1332 { p->SetStaticFloatField (this, cl0, fld1, val2); }
1334 void SetStaticDoubleField (jclass cl0, jfieldID fld1, jdouble val2)
1335 { p->SetStaticDoubleField (this, cl0, fld1, val2); }
1337 jstring NewString (const jchar * val0, jsize val1)
1338 { return p->NewString (this, val0, val1); }
1340 jint GetStringLength (jstring val0)
1341 { return p->GetStringLength (this, val0); }
1343 const jchar * GetStringChars (jstring val0, jboolean * val1)
1344 { return p->GetStringChars (this, val0, val1); }
1346 void ReleaseStringChars (jstring val0, const jchar * val1)
1347 { p->ReleaseStringChars (this, val0, val1); }
1349 jstring NewStringUTF (const char * val0)
1350 { return p->NewStringUTF (this, val0); }
1352 jsize GetStringUTFLength (jstring val0)
1353 { return p->GetStringUTFLength (this, val0); }
1355 const char * GetStringUTFChars (jstring val0, jboolean * val1)
1356 { return p->GetStringUTFChars (this, val0, val1); }
1358 void ReleaseStringUTFChars (jstring val0, const char * val1)
1359 { p->ReleaseStringUTFChars (this, val0, val1); }
1361 jsize GetArrayLength (jarray val0)
1362 { return p->GetArrayLength (this, val0); }
1364 jobjectArray NewObjectArray (jsize val0, jclass cl1, jobject obj2)
1365 { return p->NewObjectArray (this, val0, cl1, obj2); }
1367 jobject GetObjectArrayElement (jobjectArray val0, jsize val1)
1368 { return p->GetObjectArrayElement (this, val0, val1); }
1370 void SetObjectArrayElement (jobjectArray val0, jsize val1, jobject obj2)
1371 { p->SetObjectArrayElement (this, val0, val1, obj2); }
1373 jbooleanArray NewBooleanArray (jsize val0)
1374 { return p->NewBooleanArray (this, val0); }
1376 jbyteArray NewByteArray (jsize val0)
1377 { return p->NewByteArray (this, val0); }
1379 jcharArray NewCharArray (jsize val0)
1380 { return p->NewCharArray (this, val0); }
1382 jshortArray NewShortArray (jsize val0)
1383 { return p->NewShortArray (this, val0); }
1385 jintArray NewIntArray (jsize val0)
1386 { return p->NewIntArray (this, val0); }
1388 jlongArray NewLongArray (jsize val0)
1389 { return p->NewLongArray (this, val0); }
1391 jfloatArray NewFloatArray (jsize val0)
1392 { return p->NewFloatArray (this, val0); }
1394 jdoubleArray NewDoubleArray (jsize val0)
1395 { return p->NewDoubleArray (this, val0); }
1397 jboolean * GetBooleanArrayElements (jbooleanArray val0, jboolean * val1)
1398 { return p->GetBooleanArrayElements (this, val0, val1); }
1400 jbyte * GetByteArrayElements (jbyteArray val0, jboolean * val1)
1401 { return p->GetByteArrayElements (this, val0, val1); }
1403 jchar * GetCharArrayElements (jcharArray val0, jboolean * val1)
1404 { return p->GetCharArrayElements (this, val0, val1); }
1406 jshort * GetShortArrayElements (jshortArray val0, jboolean * val1)
1407 { return p->GetShortArrayElements (this, val0, val1); }
1409 jint * GetIntArrayElements (jintArray val0, jboolean * val1)
1410 { return p->GetIntArrayElements (this, val0, val1); }
1412 jlong * GetLongArrayElements (jlongArray val0, jboolean * val1)
1413 { return p->GetLongArrayElements (this, val0, val1); }
1415 jfloat * GetFloatArrayElements (jfloatArray val0, jboolean * val1)
1416 { return p->GetFloatArrayElements (this, val0, val1); }
1418 jdouble * GetDoubleArrayElements (jdoubleArray val0, jboolean * val1)
1419 { return p->GetDoubleArrayElements (this, val0, val1); }
1421 void ReleaseBooleanArrayElements (jbooleanArray val0, jboolean * val1, jint val2)
1422 { p->ReleaseBooleanArrayElements (this, val0, val1, val2); }
1424 void ReleaseByteArrayElements (jbyteArray val0, jbyte * val1, jint val2)
1425 { p->ReleaseByteArrayElements (this, val0, val1, val2); }
1427 void ReleaseCharArrayElements (jcharArray val0, jchar * val1, jint val2)
1428 { p->ReleaseCharArrayElements (this, val0, val1, val2); }
1430 void ReleaseShortArrayElements (jshortArray val0, jshort * val1, jint val2)
1431 { p->ReleaseShortArrayElements (this, val0, val1, val2); }
1433 void ReleaseIntArrayElements (jintArray val0, jint * val1, jint val2)
1434 { p->ReleaseIntArrayElements (this, val0, val1, val2); }
1436 void ReleaseLongArrayElements (jlongArray val0, jlong * val1, jint val2)
1437 { p->ReleaseLongArrayElements (this, val0, val1, val2); }
1439 void ReleaseFloatArrayElements (jfloatArray val0, jfloat * val1, jint val2)
1440 { p->ReleaseFloatArrayElements (this, val0, val1, val2); }
1442 void ReleaseDoubleArrayElements (jdoubleArray val0, jdouble * val1, jint val2)
1443 { p->ReleaseDoubleArrayElements (this, val0, val1, val2); }
1445 void GetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1446 { p->GetBooleanArrayRegion (this, val0, val1, val2, val3); }
1448 void GetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
1449 { p->GetByteArrayRegion (this, val0, val1, val2, val3); }
1451 void GetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
1452 { p->GetCharArrayRegion (this, val0, val1, val2, val3); }
1454 void GetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
1455 { p->GetShortArrayRegion (this, val0, val1, val2, val3); }
1457 void GetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
1458 { p->GetIntArrayRegion (this, val0, val1, val2, val3); }
1460 void GetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
1461 { p->GetLongArrayRegion (this, val0, val1, val2, val3); }
1463 void GetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
1464 { p->GetFloatArrayRegion (this, val0, val1, val2, val3); }
1466 void GetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
1467 { p->GetDoubleArrayRegion (this, val0, val1, val2, val3); }
1469 void SetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1470 { p->SetBooleanArrayRegion (this, val0, val1, val2, val3); }
1472 void SetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
1473 { p->SetByteArrayRegion (this, val0, val1, val2, val3); }
1475 void SetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
1476 { p->SetCharArrayRegion (this, val0, val1, val2, val3); }
1478 void SetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
1479 { p->SetShortArrayRegion (this, val0, val1, val2, val3); }
1481 void SetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
1482 { p->SetIntArrayRegion (this, val0, val1, val2, val3); }
1484 void SetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
1485 { p->SetLongArrayRegion (this, val0, val1, val2, val3); }
1487 void SetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
1488 { p->SetFloatArrayRegion (this, val0, val1, val2, val3); }
1490 void SetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
1491 { p->SetDoubleArrayRegion (this, val0, val1, val2, val3); }
1493 jint RegisterNatives (jclass cl0, const JNINativeMethod * val1, jint val2)
1494 { return p->RegisterNatives (this, cl0, val1, val2); }
1496 jint UnregisterNatives (jclass cl0)
1497 { return p->UnregisterNatives (this, cl0); }
1499 jint MonitorEnter (jobject obj0)
1500 { return p->MonitorEnter (this, obj0); }
1502 jint MonitorExit (jobject obj0)
1503 { return p->MonitorExit (this, obj0); }
1505 jint GetJavaVM (JavaVM ** val0)
1506 { return p->GetJavaVM (this, val0); }
1508 /* ---- JNI 1.2 functions ---- */
1510 void GetStringRegion (jstring val0, jsize val1, jsize val2, jchar * val3)
1511 { p->GetStringRegion (this, val0, val1, val2, val3); }
1513 void GetStringUTFRegion (jstring val0, jsize val1, jsize val2, char * val3)
1514 { p->GetStringUTFRegion (this, val0, val1, val2, val3); }
1516 void * GetPrimitiveArrayCritical (jarray val0, jboolean * val1)
1517 { return p->GetPrimitiveArrayCritical (this, val0, val1); }
1519 void ReleasePrimitiveArrayCritical (jarray val0, void * val1, jint val2)
1520 { p->ReleasePrimitiveArrayCritical (this, val0, val1, val2); }
1522 const jchar * GetStringCritical (jstring val0, jboolean * val1)
1523 { return p->GetStringCritical (this, val0, val1); }
1525 void ReleaseStringCritical (jstring val0, const jchar * val1)
1526 { p->ReleaseStringCritical (this, val0, val1); }
1528 jweak NewWeakGlobalRef (jobject obj0)
1529 { return p->NewWeakGlobalRef (this, obj0); }
1531 void DeleteWeakGlobalRef (jweak val0)
1532 { p->DeleteWeakGlobalRef (this, val0); }
1534 jboolean ExceptionCheck ()
1535 { return p->ExceptionCheck (this); }
1537 /* ---- JNI 1.4 functions ---- */
1539 jobject NewDirectByteBuffer (void *addr, jlong capacity)
1540 { return p->NewDirectByteBuffer (this, addr, capacity); }
1542 void *GetDirectBufferAddress (jobject buf)
1543 { return p->GetDirectBufferAddress (this, buf); }
1545 jlong GetDirectBufferCapacity (jobject buf)
1546 { return p->GetDirectBufferCapacity (this, buf); }
1548 /* ---- JNI 1.6 functions ---- */
1550 jobjectRefType GetObjectRefType (jobject obj)
1551 { return p->GetObjectRefType (this, obj); }
1554 #endif /* __cplusplus */
1557 * Invocation API.
1560 struct JNIInvokeInterface_
1562 void *reserved0;
1563 void *reserved1;
1564 void *reserved2;
1566 jint (JNICALL *DestroyJavaVM) (JavaVM *);
1567 jint (JNICALL *AttachCurrentThread) (JavaVM *, void **, void *);
1568 jint (JNICALL *DetachCurrentThread) (JavaVM *);
1569 jint (JNICALL *GetEnv) (JavaVM *, void **, jint);
1570 jint (JNICALL *AttachCurrentThreadAsDaemon) (JavaVM *, void **, void *);
1573 #ifdef __cplusplus
1575 class _Jv_JavaVM
1577 public:
1578 const struct JNIInvokeInterface_ *functions;
1580 jint DestroyJavaVM ()
1581 { return functions->DestroyJavaVM (this); }
1583 jint AttachCurrentThread (void **penv, void *args)
1584 { return functions->AttachCurrentThread (this, penv, args); }
1586 jint DetachCurrentThread ()
1587 { return functions->DetachCurrentThread (this); }
1589 jint GetEnv (void **penv, jint version)
1590 { return functions->GetEnv (this, penv, version); }
1592 jint AttachCurrentThreadAsDaemon (void **penv, void *args)
1593 { return functions->AttachCurrentThreadAsDaemon (this, penv, args); }
1596 #endif /* __cplusplus */
1598 typedef struct JavaVMAttachArgs
1600 jint version; /* Must be JNI_VERSION_1_2. */
1601 char *name; /* The name of the thread (or NULL). */
1602 jobject group; /* Global ref of a ThreadGroup object
1603 (or NULL). */
1604 } JavaVMAttachArgs;
1606 typedef struct JavaVMOption
1608 char *optionString;
1609 void *extraInfo;
1610 } JavaVMOption;
1612 typedef struct JavaVMInitArgs
1614 /* Must be JNI_VERSION_1_2. */
1615 jint version;
1617 /* Number of options. */
1618 jint nOptions;
1620 /* Options to the VM. */
1621 JavaVMOption *options;
1623 /* Whether we should ignore unrecognized options. */
1624 jboolean ignoreUnrecognized;
1625 } JavaVMInitArgs;
1627 typedef struct JDK1_1InitArgs
1629 /* VM version. Should be JNI_VERSION_1_1. Note that before JDK
1630 1.1.2, this field was named 'reserved0'. (I don't know what the
1631 current 'reserved0' field was named then.) */
1632 jint version;
1634 /* A null-terminated array of environment strings, each of the form
1635 "KEY=VALUE". This is used to set system properties. Note that
1636 before JDK 1.1.2, this field was named 'reserved1'. */
1637 char **properties;
1639 jint checkSource;
1640 jint nativeStackSize;
1641 jint javaStackSize;
1642 jint minHeapSize;
1643 jint maxHeapSize;
1644 jint verifyMode;
1645 const char *classpath;
1647 jint (JNICALL *vfprintf) (FILE *file, const char *fmt, va_list args);
1648 void (JNICALL *exit) (jint value);
1649 void (JNICALL *abort) (void);
1651 jint enableClassGC;
1652 jint enableVerboseGC;
1653 jint disableAsyncGC;
1655 jint reserved0;
1656 jint reserved1;
1657 jint reserved2;
1658 } JDK1_1InitArgs;
1660 typedef struct JDK1_1AttachArgs
1662 /* Dummy field since C cannot have empty structs. The name and type
1663 are chosen to comply with the spec. */
1664 void *__padding;
1665 } JDK1_1AttachArgs;
1668 /* Keep c-font-lock-extra-types in alphabetical order. */
1670 Local Variables:
1671 c-font-lock-extra-types: ("\\sw+_t" \
1672 "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray" \
1673 "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray" \
1674 "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray" \
1675 "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" \
1676 "jstring" "jthrowable" "jvalue" "jweak")
1677 End:
1680 #endif /* _CLASSPATH_JNI_H */