2006-08-13 Matthias Klose <doko@debian.org>
[official-gcc.git] / libjava / classpath / include / jni.h
blob8ebf3f7f7e92e8b7fe2a6d67c2f08bc4ec267acd
1 /* jni.h
2 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 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;
139 #endif
141 /* Version numbers. */
142 #define JNI_VERSION_1_1 0x00010001
143 #define JNI_VERSION_1_2 0x00010002
144 #define JNI_VERSION_1_4 0x00010004
146 /* Used when releasing array elements. */
147 #define JNI_COMMIT 1
148 #define JNI_ABORT 2
150 /* Error codes */
151 #define JNI_OK 0
152 #define JNI_ERR (-1)
153 #define JNI_EDETACHED (-2)
154 #define JNI_EVERSION (-3)
157 #ifdef __cplusplus
158 extern "C"
160 #endif /* __cplusplus */
162 /* These functions might be defined in libraries which we load; the
163 JNI implementation calls them at the appropriate times. */
164 extern JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *, void *);
165 extern JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *, void *);
167 /* This can be defined as JNIIMPORT or JNIEXPORT by the md file,
168 depending on whether this is the implementation or a user. */
169 #ifndef _CLASSPATH_JNIIMPEXP
170 #define _CLASSPATH_JNIIMPEXP JNIIMPORT
171 #endif
173 /* These functions are called by user code to start using the
174 invocation API. */
175 extern _CLASSPATH_JNIIMPEXP jint JNICALL
176 JNI_GetDefaultJavaVMInitArgs (void *);
178 extern _CLASSPATH_JNIIMPEXP jint JNICALL
179 JNI_CreateJavaVM (JavaVM **, void **, void *);
181 extern _CLASSPATH_JNIIMPEXP jint JNICALL
182 JNI_GetCreatedJavaVMs (JavaVM **, jsize, jsize *);
184 #ifdef __cplusplus
186 #endif /* __cplusplus */
188 typedef union jvalue
190 jboolean z;
191 jbyte b;
192 jchar c;
193 jshort s;
194 jint i;
195 jlong j;
196 jfloat f;
197 jdouble d;
198 jobject l;
199 } jvalue;
201 /* This structure is used when registering native methods. */
202 typedef struct
204 char *name;
205 char *signature;
206 void *fnPtr; /* Sigh. */
207 } JNINativeMethod;
209 struct JNINativeInterface
211 void *reserved0;
212 void *reserved1;
213 void *reserved2;
214 void *reserved3;
216 jint (JNICALL *GetVersion) (JNIEnv *);
217 jclass (JNICALL *DefineClass) (JNIEnv *, const char *,
218 jobject, const jbyte *,
219 jsize);
220 jclass (JNICALL *FindClass) (JNIEnv *, const char *);
222 jmethodID (JNICALL *FromReflectedMethod) (JNIEnv *, jobject);
223 jfieldID (JNICALL *FromReflectedField) (JNIEnv *, jobject);
224 jobject (JNICALL *ToReflectedMethod) (JNIEnv *, jclass,
225 jmethodID, jboolean);
227 jclass (JNICALL *GetSuperclass) (JNIEnv *, jclass);
228 jboolean (JNICALL *IsAssignableFrom) (JNIEnv *, jclass, jclass);
230 jobject (JNICALL *ToReflectedField) (JNIEnv *, jclass, jfieldID,
231 jboolean);
233 jint (JNICALL *Throw) (JNIEnv *, jthrowable);
234 jint (JNICALL *ThrowNew) (JNIEnv *, jclass,
235 const char *);
236 jthrowable (JNICALL *ExceptionOccurred) (JNIEnv *);
237 void (JNICALL *ExceptionDescribe) (JNIEnv *);
238 void (JNICALL *ExceptionClear) (JNIEnv *);
239 void (JNICALL *FatalError) (JNIEnv *, const char *);
241 jint (JNICALL *PushLocalFrame) (JNIEnv *, jint);
242 jobject (JNICALL *PopLocalFrame) (JNIEnv *, jobject);
244 jobject (JNICALL *NewGlobalRef) (JNIEnv *, jobject);
245 void (JNICALL *DeleteGlobalRef) (JNIEnv *, jobject);
246 void (JNICALL *DeleteLocalRef) (JNIEnv *, jobject);
247 jboolean (JNICALL *IsSameObject) (JNIEnv *, jobject,
248 jobject);
250 jobject (JNICALL *NewLocalRef) (JNIEnv *, jobject);
251 jint (JNICALL *EnsureLocalCapacity) (JNIEnv *, jint);
253 jobject (JNICALL *AllocObject) (JNIEnv *, jclass);
254 jobject (JNICALL *NewObject) (JNIEnv *, jclass,
255 jmethodID, ...);
256 jobject (JNICALL *NewObjectV) (JNIEnv *, jclass,
257 jmethodID, va_list);
258 jobject (JNICALL *NewObjectA) (JNIEnv *, jclass,
259 jmethodID, jvalue *);
261 jclass (JNICALL *GetObjectClass) (JNIEnv *, jobject);
262 jboolean (JNICALL *IsInstanceOf) (JNIEnv *, jobject, jclass);
263 jmethodID (JNICALL *GetMethodID) (JNIEnv *, jclass,
264 const char *, const char *);
266 jobject (JNICALL *CallObjectMethod) (JNIEnv *, jobject, jmethodID, ...);
267 jobject (JNICALL *CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
268 va_list);
269 jobject (JNICALL *CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
270 jvalue *);
271 jboolean (JNICALL *CallBooleanMethod) (JNIEnv *, jobject, jmethodID,
272 ...);
273 jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
274 va_list);
275 jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
276 jvalue *);
277 jbyte (JNICALL *CallByteMethod) (JNIEnv *, jobject, jmethodID, ...);
278 jbyte (JNICALL *CallByteMethodV) (JNIEnv *, jobject, jmethodID,
279 va_list);
280 jbyte (JNICALL *CallByteMethodA) (JNIEnv *, jobject, jmethodID,
281 jvalue *);
282 jchar (JNICALL *CallCharMethod) (JNIEnv *, jobject, jmethodID, ...);
283 jchar (JNICALL *CallCharMethodV) (JNIEnv *, jobject, jmethodID,
284 va_list);
285 jchar (JNICALL *CallCharMethodA) (JNIEnv *, jobject, jmethodID,
286 jvalue *);
287 jshort (JNICALL *CallShortMethod) (JNIEnv *, jobject, jmethodID, ...);
288 jshort (JNICALL *CallShortMethodV) (JNIEnv *, jobject, jmethodID,
289 va_list);
290 jshort (JNICALL *CallShortMethodA) (JNIEnv *, jobject, jmethodID,
291 jvalue *);
292 jint (JNICALL *CallIntMethod) (JNIEnv *, jobject, jmethodID, ...);
293 jint (JNICALL *CallIntMethodV) (JNIEnv *, jobject, jmethodID,
294 va_list);
295 jint (JNICALL *CallIntMethodA) (JNIEnv *, jobject, jmethodID,
296 jvalue *);
297 jlong (JNICALL *CallLongMethod) (JNIEnv *, jobject, jmethodID, ...);
298 jlong (JNICALL *CallLongMethodV) (JNIEnv *, jobject, jmethodID,
299 va_list);
300 jlong (JNICALL *CallLongMethodA) (JNIEnv *, jobject, jmethodID,
301 jvalue *);
302 jfloat (JNICALL *CallFloatMethod) (JNIEnv *, jobject, jmethodID, ...);
303 jfloat (JNICALL *CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
304 va_list);
305 jfloat (JNICALL *CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
306 jvalue *);
307 jdouble (JNICALL *CallDoubleMethod) (JNIEnv *, jobject, jmethodID, ...);
308 jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
309 va_list);
310 jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
311 jvalue *);
312 void (JNICALL *CallVoidMethod) (JNIEnv *, jobject, jmethodID, ...);
313 void (JNICALL *CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
314 va_list);
315 void (JNICALL *CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
316 jvalue *);
318 jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
319 jmethodID, ...);
320 jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
321 jmethodID, va_list);
322 jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
323 jmethodID, jvalue *);
324 jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
325 jmethodID, ...);
326 jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
327 jmethodID, va_list);
328 jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
329 jmethodID, jvalue *);
330 jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *, jobject, jclass,
331 jmethodID, ...);
332 jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
333 jmethodID, va_list);
334 jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
335 jmethodID, jvalue *);
336 jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *, jobject, jclass,
337 jmethodID, ...);
338 jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
339 jmethodID, va_list);
340 jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
341 jmethodID, jvalue *);
342 jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
343 jmethodID, ...);
344 jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
345 jmethodID, va_list);
346 jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
347 jmethodID, jvalue *);
348 jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *, jobject, jclass,
349 jmethodID, ...);
350 jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *, jobject, jclass,
351 jmethodID, va_list);
352 jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *, jobject, jclass,
353 jmethodID, jvalue *);
354 jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *, jobject, jclass,
355 jmethodID, ...);
356 jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
357 jmethodID, va_list);
358 jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
359 jmethodID, jvalue *);
360 jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
361 jmethodID, ...);
362 jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
363 jmethodID, va_list);
364 jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
365 jmethodID, jvalue *);
366 jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
367 jmethodID, ...);
368 jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
369 jmethodID, va_list);
370 jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
371 jmethodID, jvalue *);
372 void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *, jobject, jclass,
373 jmethodID, ...);
374 void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
375 jmethodID, va_list);
376 void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
377 jmethodID, jvalue *);
379 jfieldID (JNICALL *GetFieldID) (JNIEnv *, jclass, const char *,
380 const char *);
382 jobject (JNICALL *GetObjectField) (JNIEnv *, jobject, jfieldID);
383 jboolean (JNICALL *GetBooleanField) (JNIEnv *, jobject, jfieldID);
384 jbyte (JNICALL *GetByteField) (JNIEnv *, jobject, jfieldID);
385 jchar (JNICALL *GetCharField) (JNIEnv *, jobject, jfieldID);
386 jshort (JNICALL *GetShortField) (JNIEnv *, jobject, jfieldID);
387 jint (JNICALL *GetIntField) (JNIEnv *, jobject, jfieldID);
388 jlong (JNICALL *GetLongField) (JNIEnv *, jobject, jfieldID);
389 jfloat (JNICALL *GetFloatField) (JNIEnv *, jobject, jfieldID);
390 jdouble (JNICALL *GetDoubleField) (JNIEnv *, jobject, jfieldID);
392 void (JNICALL *SetObjectField) (JNIEnv *, jobject,
393 jfieldID, jobject);
394 void (JNICALL *SetBooleanField) (JNIEnv *, jobject,
395 jfieldID, jboolean);
396 void (JNICALL *SetByteField) (JNIEnv *, jobject,
397 jfieldID, jbyte);
398 void (JNICALL *SetCharField) (JNIEnv *, jobject,
399 jfieldID, jchar);
400 void (JNICALL *SetShortField) (JNIEnv *, jobject,
401 jfieldID, jshort);
402 void (JNICALL *SetIntField) (JNIEnv *, jobject,
403 jfieldID, jint);
404 void (JNICALL *SetLongField) (JNIEnv *, jobject,
405 jfieldID, jlong);
406 void (JNICALL *SetFloatField) (JNIEnv *, jobject,
407 jfieldID, jfloat);
408 void (JNICALL *SetDoubleField) (JNIEnv *, jobject,
409 jfieldID, jdouble);
411 jmethodID (JNICALL *GetStaticMethodID) (JNIEnv *, jclass, const char *,
412 const char *);
414 jobject (JNICALL *CallStaticObjectMethod) (JNIEnv *, jclass, jmethodID,
415 ...);
416 jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
417 va_list);
418 jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
419 jvalue *);
420 jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
421 ...);
422 jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
423 va_list);
424 jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
425 jvalue *);
426 jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *, jclass, jmethodID,
427 ...);
428 jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
429 va_list);
430 jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
431 jvalue *);
432 jchar (JNICALL *CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
433 ...);
434 jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
435 va_list);
436 jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
437 jvalue *);
438 jshort (JNICALL *CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
439 ...);
440 jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
441 va_list);
442 jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
443 jvalue *);
444 jint (JNICALL *CallStaticIntMethod) (JNIEnv *, jclass, jmethodID,
445 ...);
446 jint (JNICALL *CallStaticIntMethodV) (JNIEnv *, jclass, jmethodID,
447 va_list);
448 jint (JNICALL *CallStaticIntMethodA) (JNIEnv *, jclass, jmethodID,
449 jvalue *);
450 jlong (JNICALL *CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
451 ...);
452 jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
453 va_list);
454 jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
455 jvalue *);
456 jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
457 ...);
458 jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
459 va_list);
460 jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
461 jvalue *);
462 jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
463 ...);
464 jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
465 va_list);
466 jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
467 jvalue *);
468 void (JNICALL *CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
469 ...);
470 void (JNICALL *CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
471 va_list);
472 void (JNICALL *CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
473 jvalue *);
475 jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *, jclass, const char *,
476 const char *);
478 jobject (JNICALL *GetStaticObjectField) (JNIEnv *, jclass, jfieldID);
479 jboolean (JNICALL *GetStaticBooleanField) (JNIEnv *, jclass, jfieldID);
480 jbyte (JNICALL *GetStaticByteField) (JNIEnv *, jclass, jfieldID);
481 jchar (JNICALL *GetStaticCharField) (JNIEnv *, jclass, jfieldID);
482 jshort (JNICALL *GetStaticShortField) (JNIEnv *, jclass, jfieldID);
483 jint (JNICALL *GetStaticIntField) (JNIEnv *, jclass, jfieldID);
484 jlong (JNICALL *GetStaticLongField) (JNIEnv *, jclass, jfieldID);
485 jfloat (JNICALL *GetStaticFloatField) (JNIEnv *, jclass, jfieldID);
486 jdouble (JNICALL *GetStaticDoubleField) (JNIEnv *, jclass, jfieldID);
488 void (JNICALL *SetStaticObjectField) (JNIEnv *, jclass,
489 jfieldID, jobject);
490 void (JNICALL *SetStaticBooleanField) (JNIEnv *, jclass,
491 jfieldID, jboolean);
492 void (JNICALL *SetStaticByteField) (JNIEnv *, jclass,
493 jfieldID, jbyte);
494 void (JNICALL *SetStaticCharField) (JNIEnv *, jclass,
495 jfieldID, jchar);
496 void (JNICALL *SetStaticShortField) (JNIEnv *, jclass,
497 jfieldID, jshort);
498 void (JNICALL *SetStaticIntField) (JNIEnv *, jclass,
499 jfieldID, jint);
500 void (JNICALL *SetStaticLongField) (JNIEnv *, jclass,
501 jfieldID, jlong);
502 void (JNICALL *SetStaticFloatField) (JNIEnv *, jclass,
503 jfieldID, jfloat);
504 void (JNICALL *SetStaticDoubleField) (JNIEnv *, jclass,
505 jfieldID, jdouble);
507 jstring (JNICALL *NewString) (JNIEnv *, const jchar *, jsize);
508 jsize (JNICALL *GetStringLength) (JNIEnv *, jstring);
509 const jchar * (JNICALL *GetStringChars) (JNIEnv *, jstring, jboolean *);
510 void (JNICALL *ReleaseStringChars) (JNIEnv *, jstring, const jchar *);
511 jstring (JNICALL *NewStringUTF) (JNIEnv *, const char *);
512 jsize (JNICALL *GetStringUTFLength) (JNIEnv *, jstring);
513 const char * (JNICALL *GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
514 void (JNICALL *ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
515 jsize (JNICALL *GetArrayLength) (JNIEnv *, jarray);
516 jobjectArray (JNICALL *NewObjectArray) (JNIEnv *, jsize, jclass, jobject);
517 jobject (JNICALL *GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
518 void (JNICALL *SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
519 jobject);
521 jbooleanArray (JNICALL *NewBooleanArray) (JNIEnv *, jsize);
522 jbyteArray (JNICALL *NewByteArray) (JNIEnv *, jsize);
523 jcharArray (JNICALL *NewCharArray) (JNIEnv *, jsize);
524 jshortArray (JNICALL *NewShortArray) (JNIEnv *, jsize);
525 jintArray (JNICALL *NewIntArray) (JNIEnv *, jsize);
526 jlongArray (JNICALL *NewLongArray) (JNIEnv *, jsize);
527 jfloatArray (JNICALL *NewFloatArray) (JNIEnv *, jsize);
528 jdoubleArray (JNICALL *NewDoubleArray) (JNIEnv *, jsize);
530 jboolean * (JNICALL *GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
531 jboolean *);
532 jbyte * (JNICALL *GetByteArrayElements) (JNIEnv *, jbyteArray,
533 jboolean *);
534 jchar * (JNICALL *GetCharArrayElements) (JNIEnv *, jcharArray,
535 jboolean *);
536 jshort * (JNICALL *GetShortArrayElements) (JNIEnv *, jshortArray,
537 jboolean *);
538 jint * (JNICALL *GetIntArrayElements) (JNIEnv *, jintArray,
539 jboolean *);
540 jlong * (JNICALL *GetLongArrayElements) (JNIEnv *, jlongArray,
541 jboolean *);
542 jfloat * (JNICALL *GetFloatArrayElements) (JNIEnv *, jfloatArray,
543 jboolean *);
544 jdouble * (JNICALL *GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
545 jboolean *);
547 void (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
548 jboolean *, jint);
549 void (JNICALL *ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
550 jbyte *, jint);
551 void (JNICALL *ReleaseCharArrayElements) (JNIEnv *, jcharArray,
552 jchar *, jint);
553 void (JNICALL *ReleaseShortArrayElements) (JNIEnv *, jshortArray,
554 jshort *, jint);
555 void (JNICALL *ReleaseIntArrayElements) (JNIEnv *, jintArray,
556 jint *, jint);
557 void (JNICALL *ReleaseLongArrayElements) (JNIEnv *, jlongArray,
558 jlong *, jint);
559 void (JNICALL *ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
560 jfloat *, jint);
561 void (JNICALL *ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
562 jdouble *, jint);
564 void (JNICALL *GetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
565 jsize, jsize, jboolean *);
566 void (JNICALL *GetByteArrayRegion) (JNIEnv *, jbyteArray,
567 jsize, jsize, jbyte *);
568 void (JNICALL *GetCharArrayRegion) (JNIEnv *, jcharArray,
569 jsize, jsize, jchar *);
570 void (JNICALL *GetShortArrayRegion) (JNIEnv *, jshortArray,
571 jsize, jsize, jshort *);
572 void (JNICALL *GetIntArrayRegion) (JNIEnv *, jintArray,
573 jsize, jsize, jint *);
574 void (JNICALL *GetLongArrayRegion) (JNIEnv *, jlongArray,
575 jsize, jsize, jlong *);
576 void (JNICALL *GetFloatArrayRegion) (JNIEnv *, jfloatArray,
577 jsize, jsize, jfloat *);
578 void (JNICALL *GetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
579 jsize, jsize, jdouble *);
581 void (JNICALL *SetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
582 jsize, jsize, jboolean *);
583 void (JNICALL *SetByteArrayRegion) (JNIEnv *, jbyteArray,
584 jsize, jsize, jbyte *);
585 void (JNICALL *SetCharArrayRegion) (JNIEnv *, jcharArray,
586 jsize, jsize, jchar *);
587 void (JNICALL *SetShortArrayRegion) (JNIEnv *, jshortArray,
588 jsize, jsize, jshort *);
589 void (JNICALL *SetIntArrayRegion) (JNIEnv *, jintArray,
590 jsize, jsize, jint *);
591 void (JNICALL *SetLongArrayRegion) (JNIEnv *, jlongArray,
592 jsize, jsize, jlong *);
593 void (JNICALL *SetFloatArrayRegion) (JNIEnv *, jfloatArray,
594 jsize, jsize, jfloat *);
595 void (JNICALL *SetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
596 jsize, jsize, jdouble *);
598 jint (JNICALL *RegisterNatives) (JNIEnv *, jclass,
599 const JNINativeMethod *,
600 jint);
601 jint (JNICALL *UnregisterNatives) (JNIEnv *, jclass);
602 jint (JNICALL *MonitorEnter) (JNIEnv *, jobject);
603 jint (JNICALL *MonitorExit) (JNIEnv *, jobject);
604 jint (JNICALL *GetJavaVM) (JNIEnv *, JavaVM **);
606 /* ---- JNI 1.2 functions ---- */
607 void (JNICALL *GetStringRegion) (JNIEnv *, jstring, jsize,
608 jsize, jchar *);
609 void (JNICALL *GetStringUTFRegion) (JNIEnv *, jstring, jsize,
610 jsize, char *);
612 void * (JNICALL *GetPrimitiveArrayCritical) (JNIEnv *, jarray,
613 jboolean *);
614 void (JNICALL *ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *,
615 jint);
617 const jchar * (JNICALL *GetStringCritical) (JNIEnv *, jstring,
618 jboolean *);
619 void (JNICALL *ReleaseStringCritical) (JNIEnv *, jstring,
620 const jchar *);
622 jweak (JNICALL *NewWeakGlobalRef) (JNIEnv *, jobject);
623 void (JNICALL *DeleteWeakGlobalRef) (JNIEnv *, jweak);
625 jboolean (JNICALL *ExceptionCheck) (JNIEnv *);
627 /* ---- JNI 1.4 functions ---- */
628 jobject (JNICALL *NewDirectByteBuffer) (JNIEnv *, void *, jlong);
629 void * (JNICALL *GetDirectBufferAddress) (JNIEnv *, jobject);
630 jlong (JNICALL *GetDirectBufferCapacity) (JNIEnv *, jobject);
633 #ifdef __cplusplus
635 class _Jv_JNIEnv
637 public:
638 /* The method table. */
639 struct JNINativeInterface *p;
641 #ifdef _CLASSPATH_JNIENV_CONTENTS
642 _CLASSPATH_JNIENV_CONTENTS
643 #endif
645 jint GetVersion ()
646 { return p->GetVersion (this); }
648 jclass DefineClass (const char *name, jobject obj0, const jbyte * val1,
649 jsize val2)
650 { return p->DefineClass (this, name, obj0, val1, val2); }
652 jclass FindClass (const char * val0)
653 { return p->FindClass (this, val0); }
655 jmethodID FromReflectedMethod (jobject obj0)
656 { return p->FromReflectedMethod (this, obj0); }
658 jfieldID FromReflectedField (jobject obj0)
659 { return p->FromReflectedField (this, obj0); }
661 jobject ToReflectedMethod (jclass cl0, jmethodID meth1, jboolean val2)
662 { return p->ToReflectedMethod (this, cl0, meth1, val2); }
664 jclass GetSuperclass (jclass cl0)
665 { return p->GetSuperclass (this, cl0); }
667 jboolean IsAssignableFrom (jclass cl0, jclass cl1)
668 { return p->IsAssignableFrom (this, cl0, cl1); }
670 jobject ToReflectedField (jclass cl0, jfieldID fld1, jboolean val2)
671 { return p->ToReflectedField (this, cl0, fld1, val2); }
673 jint Throw (jthrowable val0)
674 { return p->Throw (this, val0); }
676 jint ThrowNew (jclass cl0, const char * val1)
677 { return p->ThrowNew (this, cl0, val1); }
679 jthrowable ExceptionOccurred ()
680 { return p->ExceptionOccurred (this); }
682 void ExceptionDescribe ()
683 { p->ExceptionDescribe (this); }
685 void ExceptionClear ()
686 { p->ExceptionClear (this); }
688 void FatalError (const char * val0)
689 { p->FatalError (this, val0); }
691 jint PushLocalFrame (jint val0)
692 { return p->PushLocalFrame (this, val0); }
694 jobject PopLocalFrame (jobject obj0)
695 { return p->PopLocalFrame (this, obj0); }
697 jobject NewGlobalRef (jobject obj0)
698 { return p->NewGlobalRef (this, obj0); }
700 void DeleteGlobalRef (jobject obj0)
701 { p->DeleteGlobalRef (this, obj0); }
703 void DeleteLocalRef (jobject obj0)
704 { p->DeleteLocalRef (this, obj0); }
706 jboolean IsSameObject (jobject obj0, jobject obj1)
707 { return p->IsSameObject (this, obj0, obj1); }
709 jobject NewLocalRef (jobject obj0)
710 { return p->NewLocalRef (this, obj0); }
712 jint EnsureLocalCapacity (jint val0)
713 { return p->EnsureLocalCapacity (this, val0); }
715 jobject AllocObject (jclass cl0)
716 { return p->AllocObject (this, cl0); }
718 jobject NewObject (jclass cl0, jmethodID meth1, ...)
720 va_list args;
721 va_start (args, meth1);
722 jobject result = p->NewObjectV (this, cl0, meth1, args);
723 va_end (args);
724 return result;
727 jobject NewObjectV (jclass cl0, jmethodID meth1, va_list val2)
728 { return p->NewObjectV (this, cl0, meth1, val2); }
730 jobject NewObjectA (jclass cl0, jmethodID meth1, jvalue * val2)
731 { return p->NewObjectA (this, cl0, meth1, val2); }
733 jclass GetObjectClass (jobject obj0)
734 { return p->GetObjectClass (this, obj0); }
736 jboolean IsInstanceOf (jobject obj0, jclass cl1)
737 { return p->IsInstanceOf (this, obj0, cl1); }
739 jmethodID GetMethodID (jclass cl0, const char * val1, const char * val2)
740 { return p->GetMethodID (this, cl0, val1, val2); }
742 jobject CallObjectMethod (jobject obj0, jmethodID meth1, ...)
744 va_list args;
745 va_start (args, meth1);
746 jobject result = p->CallObjectMethodV (this, obj0, meth1, args);
747 va_end (args);
748 return result;
751 jobject CallObjectMethodV (jobject obj0, jmethodID meth1, va_list val2)
752 { return p->CallObjectMethodV (this, obj0, meth1, val2); }
754 jobject CallObjectMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
755 { return p->CallObjectMethodA (this, obj0, meth1, val2); }
757 jboolean CallBooleanMethod (jobject obj0, jmethodID meth1, ...)
759 va_list args;
760 va_start (args, meth1);
761 jboolean result = p->CallBooleanMethodV (this, obj0, meth1, args);
762 va_end (args);
763 return result;
766 jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, va_list val2)
767 { return p->CallBooleanMethodV (this, obj0, meth1, val2); }
769 jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
770 { return p->CallBooleanMethodA (this, obj0, meth1, val2); }
772 jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
774 va_list args;
775 va_start (args, meth1);
776 jbyte result = p->CallByteMethodV (this, obj0, meth1, args);
777 va_end (args);
778 return result;
781 jbyte CallByteMethodV (jobject obj0, jmethodID meth1, va_list val2)
782 { return p->CallByteMethodV (this, obj0, meth1, val2); }
784 jbyte CallByteMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
785 { return p->CallByteMethodA (this, obj0, meth1, val2); }
787 jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
789 va_list args;
790 va_start (args, meth1);
791 jchar result = p->CallCharMethodV (this, obj0, meth1, args);
792 va_end (args);
793 return result;
796 jchar CallCharMethodV (jobject obj0, jmethodID meth1, va_list val2)
797 { return p->CallCharMethodV (this, obj0, meth1, val2); }
799 jchar CallCharMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
800 { return p->CallCharMethodA (this, obj0, meth1, val2); }
802 jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
804 va_list args;
805 va_start (args, meth1);
806 jshort result = p->CallShortMethodV (this, obj0, meth1, args);
807 va_end (args);
808 return result;
811 jshort CallShortMethodV (jobject obj0, jmethodID meth1, va_list val2)
812 { return p->CallShortMethodV (this, obj0, meth1, val2); }
814 jshort CallShortMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
815 { return p->CallShortMethodA (this, obj0, meth1, val2); }
817 jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
819 va_list args;
820 va_start (args, meth1);
821 jint result = p->CallIntMethodV (this, obj0, meth1, args);
822 va_end (args);
823 return result;
826 jint CallIntMethodV (jobject obj0, jmethodID meth1, va_list val2)
827 { return p->CallIntMethodV (this, obj0, meth1, val2); }
829 jint CallIntMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
830 { return p->CallIntMethodA (this, obj0, meth1, val2); }
832 jlong CallLongMethod (jobject obj0, jmethodID meth1, ...)
834 va_list args;
835 va_start (args, meth1);
836 jlong result = p->CallLongMethodV (this, obj0, meth1, args);
837 va_end (args);
838 return result;
841 jlong CallLongMethodV (jobject obj0, jmethodID meth1, va_list val2)
842 { return p->CallLongMethodV (this, obj0, meth1, val2); }
844 jlong CallLongMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
845 { return p->CallLongMethodA (this, obj0, meth1, val2); }
847 jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
849 va_list args;
850 va_start (args, meth1);
851 jfloat result = p->CallFloatMethodV (this, obj0, meth1, args);
852 va_end (args);
853 return result;
856 jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, va_list val2)
857 { return p->CallFloatMethodV (this, obj0, meth1, val2); }
859 jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
860 { return p->CallFloatMethodA (this, obj0, meth1, val2); }
862 jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
864 va_list args;
865 va_start (args, meth1);
866 jdouble result = p->CallDoubleMethodV (this, obj0, meth1, args);
867 va_end (args);
868 return result;
871 jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, va_list val2)
872 { return p->CallDoubleMethodV (this, obj0, meth1, val2); }
874 jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
875 { return p->CallDoubleMethodA (this, obj0, meth1, val2); }
877 void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
879 va_list args;
880 va_start (args, meth1);
881 p->CallVoidMethodV (this, obj0, meth1, args);
882 va_end (args);
885 void CallVoidMethodV (jobject obj0, jmethodID meth1, va_list val2)
886 { p->CallVoidMethodV (this, obj0, meth1, val2); }
888 void CallVoidMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
889 { p->CallVoidMethodA (this, obj0, meth1, val2); }
891 jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
893 va_list args;
894 va_start (args, meth2);
895 jobject result = p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, args);
896 va_end (args);
897 return result;
900 jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
901 { return p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
903 jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
904 { return p->CallNonvirtualObjectMethodA (this, obj0, cl1, meth2, val3); }
906 jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
908 va_list args;
909 va_start (args, meth2);
910 jboolean result = p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, args);
911 va_end (args);
912 return result;
915 jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
916 { return p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
918 jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
919 { return p->CallNonvirtualBooleanMethodA (this, obj0, cl1, meth2, val3); }
921 jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
923 va_list args;
924 va_start (args, meth2);
925 jbyte result = p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, args);
926 va_end (args);
927 return result;
930 jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
931 { return p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
933 jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
934 { return p->CallNonvirtualByteMethodA (this, obj0, cl1, meth2, val3); }
936 jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
938 va_list args;
939 va_start (args, meth2);
940 jchar result = p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, args);
941 va_end (args);
942 return result;
945 jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
946 { return p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
948 jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
949 { return p->CallNonvirtualCharMethodA (this, obj0, cl1, meth2, val3); }
951 jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
953 va_list args;
954 va_start (args, meth2);
955 jshort result = p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, args);
956 va_end (args);
957 return result;
960 jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
961 { return p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
963 jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
964 { return p->CallNonvirtualShortMethodA (this, obj0, cl1, meth2, val3); }
966 jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
968 va_list args;
969 va_start (args, meth2);
970 jint result = p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, args);
971 va_end (args);
972 return result;
975 jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
976 { return p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
978 jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
979 { return p->CallNonvirtualIntMethodA (this, obj0, cl1, meth2, val3); }
981 jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
983 va_list args;
984 va_start (args, meth2);
985 jlong result = p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, args);
986 va_end (args);
987 return result;
990 jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
991 { return p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
993 jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
994 { return p->CallNonvirtualLongMethodA (this, obj0, cl1, meth2, val3); }
996 jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
998 va_list args;
999 va_start (args, meth2);
1000 jfloat result = p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, args);
1001 va_end (args);
1002 return result;
1005 jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1006 { return p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
1008 jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1009 { return p->CallNonvirtualFloatMethodA (this, obj0, cl1, meth2, val3); }
1011 jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1013 va_list args;
1014 va_start (args, meth2);
1015 jdouble result = p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, args);
1016 va_end (args);
1017 return result;
1020 jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1021 { return p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
1023 jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1024 { return p->CallNonvirtualDoubleMethodA (this, obj0, cl1, meth2, val3); }
1026 void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1028 va_list args;
1029 va_start (args, meth2);
1030 p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, args);
1031 va_end (args);
1034 void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
1035 { p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
1037 void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1038 { p->CallNonvirtualVoidMethodA (this, obj0, cl1, meth2, val3); }
1040 jfieldID GetFieldID (jclass cl0, const char * val1, const char * val2)
1041 { return p->GetFieldID (this, cl0, val1, val2); }
1043 jobject GetObjectField (jobject obj0, jfieldID fld1)
1044 { return p->GetObjectField (this, obj0, fld1); }
1046 jboolean GetBooleanField (jobject obj0, jfieldID fld1)
1047 { return p->GetBooleanField (this, obj0, fld1); }
1049 jbyte GetByteField (jobject obj0, jfieldID fld1)
1050 { return p->GetByteField (this, obj0, fld1); }
1052 jchar GetCharField (jobject obj0, jfieldID fld1)
1053 { return p->GetCharField (this, obj0, fld1); }
1055 jshort GetShortField (jobject obj0, jfieldID fld1)
1056 { return p->GetShortField (this, obj0, fld1); }
1058 jint GetIntField (jobject obj0, jfieldID fld1)
1059 { return p->GetIntField (this, obj0, fld1); }
1061 jlong GetLongField (jobject obj0, jfieldID fld1)
1062 { return p->GetLongField (this, obj0, fld1); }
1064 jfloat GetFloatField (jobject obj0, jfieldID fld1)
1065 { return p->GetFloatField (this, obj0, fld1); }
1067 jdouble GetDoubleField (jobject obj0, jfieldID fld1)
1068 { return p->GetDoubleField (this, obj0, fld1); }
1070 void SetObjectField (jobject obj0, jfieldID fld1, jobject obj2)
1071 { p->SetObjectField (this, obj0, fld1, obj2); }
1073 void SetBooleanField (jobject obj0, jfieldID fld1, jboolean val2)
1074 { p->SetBooleanField (this, obj0, fld1, val2); }
1076 void SetByteField (jobject obj0, jfieldID fld1, jbyte val2)
1077 { p->SetByteField (this, obj0, fld1, val2); }
1079 void SetCharField (jobject obj0, jfieldID fld1, jchar val2)
1080 { p->SetCharField (this, obj0, fld1, val2); }
1082 void SetShortField (jobject obj0, jfieldID fld1, jshort val2)
1083 { p->SetShortField (this, obj0, fld1, val2); }
1085 void SetIntField (jobject obj0, jfieldID fld1, jint val2)
1086 { p->SetIntField (this, obj0, fld1, val2); }
1088 void SetLongField (jobject obj0, jfieldID fld1, jlong val2)
1089 { p->SetLongField (this, obj0, fld1, val2); }
1091 void SetFloatField (jobject obj0, jfieldID fld1, jfloat val2)
1092 { p->SetFloatField (this, obj0, fld1, val2); }
1094 void SetDoubleField (jobject obj0, jfieldID fld1, jdouble val2)
1095 { p->SetDoubleField (this, obj0, fld1, val2); }
1097 jmethodID GetStaticMethodID (jclass cl0, const char * val1, const char * val2)
1098 { return p->GetStaticMethodID (this, cl0, val1, val2); }
1100 jobject CallStaticObjectMethod (jclass cl0, jmethodID meth1, ...)
1102 va_list args;
1103 va_start (args, meth1);
1104 jobject result = p->CallStaticObjectMethodV (this, cl0, meth1, args);
1105 va_end (args);
1106 return result;
1109 jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, va_list val2)
1110 { return p->CallStaticObjectMethodV (this, cl0, meth1, val2); }
1112 jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1113 { return p->CallStaticObjectMethodA (this, cl0, meth1, val2); }
1115 jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
1117 va_list args;
1118 va_start (args, meth1);
1119 jboolean result = p->CallStaticBooleanMethodV (this, cl0, meth1, args);
1120 va_end (args);
1121 return result;
1124 jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, va_list val2)
1125 { return p->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
1127 jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1128 { return p->CallStaticBooleanMethodA (this, cl0, meth1, val2); }
1130 jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
1132 va_list args;
1133 va_start (args, meth1);
1134 jbyte result = p->CallStaticByteMethodV (this, cl0, meth1, args);
1135 va_end (args);
1136 return result;
1139 jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, va_list val2)
1140 { return p->CallStaticByteMethodV (this, cl0, meth1, val2); }
1142 jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1143 { return p->CallStaticByteMethodA (this, cl0, meth1, val2); }
1145 jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
1147 va_list args;
1148 va_start (args, meth1);
1149 jchar result = p->CallStaticCharMethodV (this, cl0, meth1, args);
1150 va_end (args);
1151 return result;
1154 jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, va_list val2)
1155 { return p->CallStaticCharMethodV (this, cl0, meth1, val2); }
1157 jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1158 { return p->CallStaticCharMethodA (this, cl0, meth1, val2); }
1160 jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
1162 va_list args;
1163 va_start (args, meth1);
1164 jshort result = p->CallStaticShortMethodV (this, cl0, meth1, args);
1165 va_end (args);
1166 return result;
1169 jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, va_list val2)
1170 { return p->CallStaticShortMethodV (this, cl0, meth1, val2); }
1172 jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1173 { return p->CallStaticShortMethodA (this, cl0, meth1, val2); }
1175 jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
1177 va_list args;
1178 va_start (args, meth1);
1179 jint result = p->CallStaticIntMethodV (this, cl0, meth1, args);
1180 va_end (args);
1181 return result;
1184 jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, va_list val2)
1185 { return p->CallStaticIntMethodV (this, cl0, meth1, val2); }
1187 jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1188 { return p->CallStaticIntMethodA (this, cl0, meth1, val2); }
1190 jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
1192 va_list args;
1193 va_start (args, meth1);
1194 jlong result = p->CallStaticLongMethodV (this, cl0, meth1, args);
1195 va_end (args);
1196 return result;
1199 jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, va_list val2)
1200 { return p->CallStaticLongMethodV (this, cl0, meth1, val2); }
1202 jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1203 { return p->CallStaticLongMethodA (this, cl0, meth1, val2); }
1205 jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
1207 va_list args;
1208 va_start (args, meth1);
1209 jfloat result = p->CallStaticFloatMethodV (this, cl0, meth1, args);
1210 va_end (args);
1211 return result;
1214 jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, va_list val2)
1215 { return p->CallStaticFloatMethodV (this, cl0, meth1, val2); }
1217 jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1218 { return p->CallStaticFloatMethodA (this, cl0, meth1, val2); }
1220 jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
1222 va_list args;
1223 va_start (args, meth1);
1224 jdouble result = p->CallStaticDoubleMethodV (this, cl0, meth1, args);
1225 va_end (args);
1226 return result;
1229 jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, va_list val2)
1230 { return p->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
1232 jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1233 { return p->CallStaticDoubleMethodA (this, cl0, meth1, val2); }
1235 void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
1237 va_list args;
1238 va_start (args, meth1);
1239 p->CallStaticVoidMethodV (this, cl0, meth1, args);
1240 va_end (args);
1243 void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, va_list val2)
1244 { p->CallStaticVoidMethodV (this, cl0, meth1, val2); }
1246 void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1247 { p->CallStaticVoidMethodA (this, cl0, meth1, val2); }
1249 jfieldID GetStaticFieldID (jclass cl0, const char * val1, const char * val2)
1250 { return p->GetStaticFieldID (this, cl0, val1, val2); }
1252 jobject GetStaticObjectField (jclass cl0, jfieldID fld1)
1253 { return p->GetStaticObjectField (this, cl0, fld1); }
1255 jboolean GetStaticBooleanField (jclass cl0, jfieldID fld1)
1256 { return p->GetStaticBooleanField (this, cl0, fld1); }
1258 jbyte GetStaticByteField (jclass cl0, jfieldID fld1)
1259 { return p->GetStaticByteField (this, cl0, fld1); }
1261 jchar GetStaticCharField (jclass cl0, jfieldID fld1)
1262 { return p->GetStaticCharField (this, cl0, fld1); }
1264 jshort GetStaticShortField (jclass cl0, jfieldID fld1)
1265 { return p->GetStaticShortField (this, cl0, fld1); }
1267 jint GetStaticIntField (jclass cl0, jfieldID fld1)
1268 { return p->GetStaticIntField (this, cl0, fld1); }
1270 jlong GetStaticLongField (jclass cl0, jfieldID fld1)
1271 { return p->GetStaticLongField (this, cl0, fld1); }
1273 jfloat GetStaticFloatField (jclass cl0, jfieldID fld1)
1274 { return p->GetStaticFloatField (this, cl0, fld1); }
1276 jdouble GetStaticDoubleField (jclass cl0, jfieldID fld1)
1277 { return p->GetStaticDoubleField (this, cl0, fld1); }
1279 void SetStaticObjectField (jclass cl0, jfieldID fld1, jobject obj2)
1280 { p->SetStaticObjectField (this, cl0, fld1, obj2); }
1282 void SetStaticBooleanField (jclass cl0, jfieldID fld1, jboolean val2)
1283 { p->SetStaticBooleanField (this, cl0, fld1, val2); }
1285 void SetStaticByteField (jclass cl0, jfieldID fld1, jbyte val2)
1286 { p->SetStaticByteField (this, cl0, fld1, val2); }
1288 void SetStaticCharField (jclass cl0, jfieldID fld1, jchar val2)
1289 { p->SetStaticCharField (this, cl0, fld1, val2); }
1291 void SetStaticShortField (jclass cl0, jfieldID fld1, jshort val2)
1292 { p->SetStaticShortField (this, cl0, fld1, val2); }
1294 void SetStaticIntField (jclass cl0, jfieldID fld1, jint val2)
1295 { p->SetStaticIntField (this, cl0, fld1, val2); }
1297 void SetStaticLongField (jclass cl0, jfieldID fld1, jlong val2)
1298 { p->SetStaticLongField (this, cl0, fld1, val2); }
1300 void SetStaticFloatField (jclass cl0, jfieldID fld1, jfloat val2)
1301 { p->SetStaticFloatField (this, cl0, fld1, val2); }
1303 void SetStaticDoubleField (jclass cl0, jfieldID fld1, jdouble val2)
1304 { p->SetStaticDoubleField (this, cl0, fld1, val2); }
1306 jstring NewString (const jchar * val0, jsize val1)
1307 { return p->NewString (this, val0, val1); }
1309 jint GetStringLength (jstring val0)
1310 { return p->GetStringLength (this, val0); }
1312 const jchar * GetStringChars (jstring val0, jboolean * val1)
1313 { return p->GetStringChars (this, val0, val1); }
1315 void ReleaseStringChars (jstring val0, const jchar * val1)
1316 { p->ReleaseStringChars (this, val0, val1); }
1318 jstring NewStringUTF (const char * val0)
1319 { return p->NewStringUTF (this, val0); }
1321 jsize GetStringUTFLength (jstring val0)
1322 { return p->GetStringUTFLength (this, val0); }
1324 const char * GetStringUTFChars (jstring val0, jboolean * val1)
1325 { return p->GetStringUTFChars (this, val0, val1); }
1327 void ReleaseStringUTFChars (jstring val0, const char * val1)
1328 { p->ReleaseStringUTFChars (this, val0, val1); }
1330 jsize GetArrayLength (jarray val0)
1331 { return p->GetArrayLength (this, val0); }
1333 jobjectArray NewObjectArray (jsize val0, jclass cl1, jobject obj2)
1334 { return p->NewObjectArray (this, val0, cl1, obj2); }
1336 jobject GetObjectArrayElement (jobjectArray val0, jsize val1)
1337 { return p->GetObjectArrayElement (this, val0, val1); }
1339 void SetObjectArrayElement (jobjectArray val0, jsize val1, jobject obj2)
1340 { p->SetObjectArrayElement (this, val0, val1, obj2); }
1342 jbooleanArray NewBooleanArray (jsize val0)
1343 { return p->NewBooleanArray (this, val0); }
1345 jbyteArray NewByteArray (jsize val0)
1346 { return p->NewByteArray (this, val0); }
1348 jcharArray NewCharArray (jsize val0)
1349 { return p->NewCharArray (this, val0); }
1351 jshortArray NewShortArray (jsize val0)
1352 { return p->NewShortArray (this, val0); }
1354 jintArray NewIntArray (jsize val0)
1355 { return p->NewIntArray (this, val0); }
1357 jlongArray NewLongArray (jsize val0)
1358 { return p->NewLongArray (this, val0); }
1360 jfloatArray NewFloatArray (jsize val0)
1361 { return p->NewFloatArray (this, val0); }
1363 jdoubleArray NewDoubleArray (jsize val0)
1364 { return p->NewDoubleArray (this, val0); }
1366 jboolean * GetBooleanArrayElements (jbooleanArray val0, jboolean * val1)
1367 { return p->GetBooleanArrayElements (this, val0, val1); }
1369 jbyte * GetByteArrayElements (jbyteArray val0, jboolean * val1)
1370 { return p->GetByteArrayElements (this, val0, val1); }
1372 jchar * GetCharArrayElements (jcharArray val0, jboolean * val1)
1373 { return p->GetCharArrayElements (this, val0, val1); }
1375 jshort * GetShortArrayElements (jshortArray val0, jboolean * val1)
1376 { return p->GetShortArrayElements (this, val0, val1); }
1378 jint * GetIntArrayElements (jintArray val0, jboolean * val1)
1379 { return p->GetIntArrayElements (this, val0, val1); }
1381 jlong * GetLongArrayElements (jlongArray val0, jboolean * val1)
1382 { return p->GetLongArrayElements (this, val0, val1); }
1384 jfloat * GetFloatArrayElements (jfloatArray val0, jboolean * val1)
1385 { return p->GetFloatArrayElements (this, val0, val1); }
1387 jdouble * GetDoubleArrayElements (jdoubleArray val0, jboolean * val1)
1388 { return p->GetDoubleArrayElements (this, val0, val1); }
1390 void ReleaseBooleanArrayElements (jbooleanArray val0, jboolean * val1, jint val2)
1391 { p->ReleaseBooleanArrayElements (this, val0, val1, val2); }
1393 void ReleaseByteArrayElements (jbyteArray val0, jbyte * val1, jint val2)
1394 { p->ReleaseByteArrayElements (this, val0, val1, val2); }
1396 void ReleaseCharArrayElements (jcharArray val0, jchar * val1, jint val2)
1397 { p->ReleaseCharArrayElements (this, val0, val1, val2); }
1399 void ReleaseShortArrayElements (jshortArray val0, jshort * val1, jint val2)
1400 { p->ReleaseShortArrayElements (this, val0, val1, val2); }
1402 void ReleaseIntArrayElements (jintArray val0, jint * val1, jint val2)
1403 { p->ReleaseIntArrayElements (this, val0, val1, val2); }
1405 void ReleaseLongArrayElements (jlongArray val0, jlong * val1, jint val2)
1406 { p->ReleaseLongArrayElements (this, val0, val1, val2); }
1408 void ReleaseFloatArrayElements (jfloatArray val0, jfloat * val1, jint val2)
1409 { p->ReleaseFloatArrayElements (this, val0, val1, val2); }
1411 void ReleaseDoubleArrayElements (jdoubleArray val0, jdouble * val1, jint val2)
1412 { p->ReleaseDoubleArrayElements (this, val0, val1, val2); }
1414 void GetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1415 { p->GetBooleanArrayRegion (this, val0, val1, val2, val3); }
1417 void GetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
1418 { p->GetByteArrayRegion (this, val0, val1, val2, val3); }
1420 void GetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
1421 { p->GetCharArrayRegion (this, val0, val1, val2, val3); }
1423 void GetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
1424 { p->GetShortArrayRegion (this, val0, val1, val2, val3); }
1426 void GetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
1427 { p->GetIntArrayRegion (this, val0, val1, val2, val3); }
1429 void GetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
1430 { p->GetLongArrayRegion (this, val0, val1, val2, val3); }
1432 void GetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
1433 { p->GetFloatArrayRegion (this, val0, val1, val2, val3); }
1435 void GetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
1436 { p->GetDoubleArrayRegion (this, val0, val1, val2, val3); }
1438 void SetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1439 { p->SetBooleanArrayRegion (this, val0, val1, val2, val3); }
1441 void SetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
1442 { p->SetByteArrayRegion (this, val0, val1, val2, val3); }
1444 void SetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
1445 { p->SetCharArrayRegion (this, val0, val1, val2, val3); }
1447 void SetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
1448 { p->SetShortArrayRegion (this, val0, val1, val2, val3); }
1450 void SetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
1451 { p->SetIntArrayRegion (this, val0, val1, val2, val3); }
1453 void SetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
1454 { p->SetLongArrayRegion (this, val0, val1, val2, val3); }
1456 void SetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
1457 { p->SetFloatArrayRegion (this, val0, val1, val2, val3); }
1459 void SetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
1460 { p->SetDoubleArrayRegion (this, val0, val1, val2, val3); }
1462 jint RegisterNatives (jclass cl0, const JNINativeMethod * val1, jint val2)
1463 { return p->RegisterNatives (this, cl0, val1, val2); }
1465 jint UnregisterNatives (jclass cl0)
1466 { return p->UnregisterNatives (this, cl0); }
1468 jint MonitorEnter (jobject obj0)
1469 { return p->MonitorEnter (this, obj0); }
1471 jint MonitorExit (jobject obj0)
1472 { return p->MonitorExit (this, obj0); }
1474 jint GetJavaVM (JavaVM ** val0)
1475 { return p->GetJavaVM (this, val0); }
1477 void GetStringRegion (jstring val0, jsize val1, jsize val2, jchar * val3)
1478 { p->GetStringRegion (this, val0, val1, val2, val3); }
1480 void GetStringUTFRegion (jstring val0, jsize val1, jsize val2, char * val3)
1481 { p->GetStringUTFRegion (this, val0, val1, val2, val3); }
1483 void * GetPrimitiveArrayCritical (jarray val0, jboolean * val1)
1484 { return p->GetPrimitiveArrayCritical (this, val0, val1); }
1486 void ReleasePrimitiveArrayCritical (jarray val0, void * val1, jint val2)
1487 { p->ReleasePrimitiveArrayCritical (this, val0, val1, val2); }
1489 const jchar * GetStringCritical (jstring val0, jboolean * val1)
1490 { return p->GetStringCritical (this, val0, val1); }
1492 void ReleaseStringCritical (jstring val0, const jchar * val1)
1493 { p->ReleaseStringCritical (this, val0, val1); }
1495 jweak NewWeakGlobalRef (jobject obj0)
1496 { return p->NewWeakGlobalRef (this, obj0); }
1498 void DeleteWeakGlobalRef (jweak val0)
1499 { p->DeleteWeakGlobalRef (this, val0); }
1501 jboolean ExceptionCheck ()
1502 { return p->ExceptionCheck (this); }
1504 jobject NewDirectByteBuffer (void *addr, jlong capacity)
1505 { return p->NewDirectByteBuffer (this, addr, capacity); }
1507 void *GetDirectBufferAddress (jobject buf)
1508 { return p->GetDirectBufferAddress (this, buf); }
1510 jlong GetDirectBufferCapacity (jobject buf)
1511 { return p->GetDirectBufferCapacity (this, buf); }
1514 #endif /* __cplusplus */
1517 * Invocation API.
1520 struct JNIInvokeInterface
1522 void *reserved0;
1523 void *reserved1;
1524 void *reserved2;
1526 jint (JNICALL *DestroyJavaVM) (JavaVM *);
1527 jint (JNICALL *AttachCurrentThread) (JavaVM *, void **, void *);
1528 jint (JNICALL *DetachCurrentThread) (JavaVM *);
1529 jint (JNICALL *GetEnv) (JavaVM *, void **, jint);
1530 jint (JNICALL *AttachCurrentThreadAsDaemon) (JavaVM *, void **, void *);
1533 #ifdef __cplusplus
1535 class _Jv_JavaVM
1537 public:
1538 const struct JNIInvokeInterface *functions;
1540 jint DestroyJavaVM ()
1541 { return functions->DestroyJavaVM (this); }
1543 jint AttachCurrentThread (void **penv, void *args)
1544 { return functions->AttachCurrentThread (this, penv, args); }
1546 jint DetachCurrentThread ()
1547 { return functions->DetachCurrentThread (this); }
1549 jint GetEnv (void **penv, jint version)
1550 { return functions->GetEnv (this, penv, version); }
1552 jint AttachCurrentThreadAsDaemon (void **penv, void *args)
1553 { return functions->AttachCurrentThreadAsDaemon (this, penv, args); }
1556 #endif /* __cplusplus */
1558 typedef struct JavaVMAttachArgs
1560 jint version; /* Must be JNI_VERSION_1_2. */
1561 char *name; /* The name of the thread (or NULL). */
1562 jobject group; /* Global ref of a ThreadGroup object
1563 (or NULL). */
1564 } JavaVMAttachArgs;
1566 typedef struct JavaVMOption
1568 char *optionString;
1569 void *extraInfo;
1570 } JavaVMOption;
1572 typedef struct JavaVMInitArgs
1574 /* Must be JNI_VERSION_1_2. */
1575 jint version;
1577 /* Number of options. */
1578 jint nOptions;
1580 /* Options to the VM. */
1581 JavaVMOption *options;
1583 /* Whether we should ignore unrecognized options. */
1584 jboolean ignoreUnrecognized;
1585 } JavaVMInitArgs;
1589 /* Keep c-font-lock-extra-types in alphabetical order. */
1590 /* Local Variables: */
1591 /* c-font-lock-extra-types: ("\\sw+_t"
1592 "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray"
1593 "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray"
1594 "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray"
1595 "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring" "jthrowable"
1596 "jvalue" "jweak") */
1597 /* End: */
1599 #endif /* _CLASSPATH_JNI_H */