source: trunk/third/gcc/libjava/include/jni.h @ 18474

Revision 18474, 56.1 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18473, which included commits to RCS files with non-trunk default branches.
Line 
1/* Copyright (C) 1998, 1999, 2000, 2001, 2002  Free Software Foundation
2
3   This file is part of libgcj.
4
5This software is copyrighted work licensed under the terms of the
6Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
7details.  */
8
9/* Note: this file must be compilable by the C compiler (for now,
10   assuming GNU C is ok).  This means you must never use `//'
11   comments, and all C++-specific code must be conditional on
12   __cplusplus.  */
13
14#ifndef __GCJ_JNI_H__
15#define __GCJ_JNI_H__
16
17#include <gcj/libgcj-config.h>
18
19/* We include <stdio.h> for compatibility with Sun's <jni.h>.  */
20#include <stdio.h>
21
22#include <stdarg.h>
23#define _Jv_va_list va_list
24
25#ifdef __GCJ_JNI_IMPL__
26
27/* If __GCJ_JNI_IMPL__ is defined, then we assume that we're building
28   libgcj itself, and we include headers which taint the namespace
29   more than is acceptable for the ordinary JNI user.  */
30#include <gcj/javaprims.h>
31#include <gcj/array.h>
32#include <gnu/gcj/runtime/JNIWeakRef.h>
33
34typedef gnu::gcj::runtime::JNIWeakRef *jweak;
35
36typedef struct _Jv_JNIEnv JNIEnv;
37typedef struct _Jv_JavaVM JavaVM;
38
39#define JNI_TRUE true
40#define JNI_FALSE false
41
42#else /* __GCJ_JNI_IMPL__ */
43
44# ifdef __GNUC__
45
46/* If we're using gcc, we can use a platform-independent scheme to get
47   the right integer types.  */
48typedef int    jbyte  __attribute__((__mode__(__QI__)));
49typedef int    jshort __attribute__((__mode__(__HI__)));
50typedef int    jint   __attribute__((__mode__(__SI__)));
51typedef int    jlong  __attribute__((__mode__(__DI__)));
52typedef int    jboolean __attribute__((__mode__(__QI__)));
53typedef unsigned short jchar __attribute__((__mode__(__HI__)));
54typedef float  jfloat;
55typedef double jdouble;
56typedef jint jsize;
57
58# else /* __GNUC__ */
59
60#  ifdef JV_HAVE_INTTYPES_H
61
62/* If <inttypes.h> is available, we use it.  */
63
64#   include <inttypes.h>
65
66typedef int8_t jbyte;
67typedef int16_t jshort;
68typedef int32_t jint;
69typedef int64_t jlong;
70typedef float jfloat;
71typedef double jdouble;
72typedef jint jsize;
73typedef int8_t jboolean;
74typedef uint16_t jchar;
75
76#  else /* JV_HAVE_INTTYPES_H */
77
78/* For now, we require either gcc or <inttypes.h>.  If we did more
79   work at configure time we could get around this, but right now it
80   doesn't seem worth it.  */
81#   error jni.h not ported to this platform
82
83#  endif /* JV_HAVE_INTTYPES_H */
84
85# endif /* __GNUC__ */
86
87# ifdef __cplusplus
88
89/* Define dummy classes and then define the JNI types as pointers.  */
90struct __jobject {};
91struct __jclass : __jobject {};
92struct __jstring : __jobject {};
93struct __jthrowable : __jobject {};
94struct __jweak : __jobject {};
95struct __jarray : __jobject {};
96struct __jobjectArray : __jarray {};
97struct __jbyteArray : __jarray {};
98struct __jshortArray : __jarray {};
99struct __jintArray : __jarray {};
100struct __jlongArray : __jarray {};
101struct __jbooleanArray : __jarray {};
102struct __jcharArray : __jarray {};
103struct __jfloatArray : __jarray {};
104struct __jdoubleArray : __jarray {};
105
106typedef __jobject *jobject;
107typedef __jclass *jclass;
108typedef __jstring *jstring;
109typedef __jthrowable *jthrowable;
110typedef __jweak *jweak;
111typedef __jarray *jarray;
112typedef __jobjectArray *jobjectArray;
113typedef __jbyteArray *jbyteArray;
114typedef __jshortArray *jshortArray;
115typedef __jintArray *jintArray;
116typedef __jlongArray *jlongArray;
117typedef __jbooleanArray *jbooleanArray;
118typedef __jcharArray *jcharArray;
119typedef __jfloatArray *jfloatArray;
120typedef __jdoubleArray *jdoubleArray;
121
122#define JNI_TRUE true
123#define JNI_FALSE false
124
125typedef struct _Jv_JNIEnv JNIEnv;
126typedef struct _Jv_JavaVM JavaVM;
127
128# else /* __cplusplus */
129
130/* For C, simply define the class types as generic pointers.  */
131typedef void *jobject;
132typedef jobject jclass;
133typedef jobject jstring;
134typedef jobject jthrowable;
135typedef jobject jweak;
136typedef jobject jarray;
137typedef jobject jobjectArray;
138typedef jobject jbyteArray;
139typedef jobject jshortArray;
140typedef jobject jintArray;
141typedef jobject jlongArray;
142typedef jobject jbooleanArray;
143typedef jobject jcharArray;
144typedef jobject jfloatArray;
145typedef jobject jdoubleArray;
146
147#define JNI_TRUE  1
148#define JNI_FALSE 0
149
150typedef const struct JNINativeInterface *JNIEnv;
151typedef const struct JNIInvokeInterface *JavaVM;
152
153# endif /* __cplusplus */
154
155/* Dummy defines.  */
156typedef void *jfieldID;
157typedef void *jmethodID;
158
159#endif /* __GCJ_JNI_IMPL__ */
160
161/* Version numbers.  */
162#define JNI_VERSION_1_1 0x00010001
163#define JNI_VERSION_1_2 0x00010002
164
165/* Used when releasing array elements.  */
166#define JNI_COMMIT 1
167#define JNI_ABORT  2
168
169/* Error codes */
170#define JNI_OK            0
171#define JNI_ERR          -1
172#define JNI_EDETACHED    -2
173#define JNI_EVERSION     -3
174
175/* Linkage and calling conventions.  This will need updating when we
176   support Windows DLLs.  */
177#define JNIIMPORT
178#define JNIEXPORT
179#define JNICALL
180
181#ifdef __cplusplus
182extern "C"
183{
184#endif /* __cplusplus */
185
186/* These functions might be defined in libraries which we load; the
187   JNI implementation calls them at the appropriate times.  */
188extern jint JNI_OnLoad (JavaVM *, void *);
189extern void JNI_OnUnload (JavaVM *, void *);
190
191/* These functions are called by user code to start using the
192   invocation API.  */
193extern jint JNI_GetDefaultJavaVMInitArgs (void *);
194extern jint JNI_CreateJavaVM (JavaVM **, void **, void *);
195extern jint JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
196
197#ifdef __cplusplus
198};
199#endif /* __cplusplus */
200
201typedef union jvalue
202{
203  jboolean z;
204  jbyte    b;
205  jchar    c;
206  jshort   s;
207  jint     i;
208  jlong    j;
209  jfloat   f;
210  jdouble  d;
211  jobject  l;
212} jvalue;
213
214#ifdef __cplusplus
215typedef void * (*_Jv_func) (...);
216#else
217typedef void * (*_Jv_func) ();
218#endif
219
220/* This structure is used when registering native methods.  */
221typedef struct
222{
223  char *name;
224  char *signature;
225  void *fnPtr;                  /* Sigh.  */
226} JNINativeMethod;
227
228struct JNINativeInterface
229{
230  _Jv_func reserved0;
231  _Jv_func reserved1;
232  _Jv_func reserved2;
233  _Jv_func reserved3;
234
235  jint     (*GetVersion)                   (JNIEnv *);
236  jclass   (*DefineClass)                  (JNIEnv *, jobject,
237                                            const jbyte *, jsize);
238  jclass   (*FindClass)                    (JNIEnv *, const char *);
239
240  jmethodID (*FromReflectedMethod)         (JNIEnv *, jobject);
241  jfieldID  (*FromReflectedField)          (JNIEnv *, jobject);
242  jobject   (*ToReflectedMethod)           (JNIEnv *, jclass, jmethodID,
243                                            jboolean);
244
245  jclass   (*GetSuperclass)                (JNIEnv *, jclass);
246  jboolean (*IsAssignableFrom)             (JNIEnv *, jclass, jclass);
247
248  jobject  (*ToReflectedField)             (JNIEnv *, jclass, jfieldID,
249                                            jboolean);
250
251  jint     (*Throw)                        (JNIEnv *, jthrowable);
252  jint     (*ThrowNew)                     (JNIEnv *, jclass, const char *);
253  jthrowable (*ExceptionOccurred)          (JNIEnv *);
254  void     (*ExceptionDescribe)            (JNIEnv *);
255  void     (*ExceptionClear)               (JNIEnv *);
256  void     (*FatalError)                   (JNIEnv *, const char *);
257
258  jint     (*PushLocalFrame)               (JNIEnv *, jint);
259  jobject  (*PopLocalFrame)                (JNIEnv *, jobject);
260
261  jobject  (*NewGlobalRef)                 (JNIEnv *, jobject);
262  void     (*DeleteGlobalRef)              (JNIEnv *, jobject);
263  void     (*DeleteLocalRef)               (JNIEnv *, jobject);
264  jboolean (*IsSameObject)                 (JNIEnv *, jobject, jobject);
265
266  jobject  (*NewLocalRef)                  (JNIEnv *, jobject);
267  jint     (*EnsureLocalCapacity)          (JNIEnv *, jint);
268
269  jobject  (*AllocObject)                  (JNIEnv *, jclass);
270  jobject (*NewObject)                     (JNIEnv *, jclass, jmethodID, ...);
271  jobject (*NewObjectV)                    (JNIEnv *, jclass, jmethodID,
272                                            _Jv_va_list);
273  jobject (*NewObjectA)                    (JNIEnv *, jclass, jmethodID,
274                                            jvalue *);
275
276  jclass   (*GetObjectClass)               (JNIEnv *, jobject);
277  jboolean (*IsInstanceOf)                 (JNIEnv *, jobject, jclass);
278  jmethodID (*GetMethodID)                 (JNIEnv *, jclass, const char *,
279                                            const char *);
280
281  jobject       (*CallObjectMethod)        (JNIEnv *, jobject, jmethodID,
282                                            ...);
283  jobject       (*CallObjectMethodV)       (JNIEnv *, jobject, jmethodID,
284                                            _Jv_va_list);
285  jobject       (*CallObjectMethodA)       (JNIEnv *, jobject, jmethodID,
286                                            jvalue *);
287  jboolean      (*CallBooleanMethod)       (JNIEnv *, jobject, jmethodID,
288                                            ...);
289  jboolean      (*CallBooleanMethodV)      (JNIEnv *, jobject, jmethodID,
290                                            _Jv_va_list);
291  jboolean      (*CallBooleanMethodA)      (JNIEnv *, jobject, jmethodID,
292                                            jvalue *);
293  jbyte         (*CallByteMethod)          (JNIEnv *, jobject, jmethodID,
294                                            ...);
295  jbyte         (*CallByteMethodV)         (JNIEnv *, jobject, jmethodID,
296                                            _Jv_va_list);
297  jbyte         (*CallByteMethodA)         (JNIEnv *, jobject, jmethodID,
298                                            jvalue *);
299  jchar         (*CallCharMethod)          (JNIEnv *, jobject, jmethodID,
300                                            ...);
301  jchar         (*CallCharMethodV)         (JNIEnv *, jobject, jmethodID,
302                                            _Jv_va_list);
303  jchar         (*CallCharMethodA)         (JNIEnv *, jobject, jmethodID,
304                                            jvalue *);
305  jshort        (*CallShortMethod)         (JNIEnv *, jobject, jmethodID,
306                                            ...);
307  jshort        (*CallShortMethodV)        (JNIEnv *, jobject, jmethodID,
308                                            _Jv_va_list);
309  jshort        (*CallShortMethodA)        (JNIEnv *, jobject, jmethodID,
310                                            jvalue *);
311  jint          (*CallIntMethod)           (JNIEnv *, jobject, jmethodID,
312                                            ...);
313  jint          (*CallIntMethodV)          (JNIEnv *, jobject, jmethodID,
314                                            _Jv_va_list);
315  jint          (*CallIntMethodA)          (JNIEnv *, jobject, jmethodID,
316                                            jvalue *);
317  jlong         (*CallLongMethod)          (JNIEnv *, jobject, jmethodID,
318                                            ...);
319  jlong         (*CallLongMethodV)         (JNIEnv *, jobject, jmethodID,
320                                            _Jv_va_list);
321  jlong         (*CallLongMethodA)         (JNIEnv *, jobject, jmethodID,
322                                            jvalue *);
323  jfloat        (*CallFloatMethod)         (JNIEnv *, jobject, jmethodID,
324                                            ...);
325  jfloat        (*CallFloatMethodV)        (JNIEnv *, jobject, jmethodID,
326                                            _Jv_va_list);
327  jfloat        (*CallFloatMethodA)        (JNIEnv *, jobject, jmethodID,
328                                            jvalue *);
329  jdouble       (*CallDoubleMethod)        (JNIEnv *, jobject, jmethodID,
330                                            ...);
331  jdouble       (*CallDoubleMethodV)       (JNIEnv *, jobject, jmethodID,
332                                            _Jv_va_list);
333  jdouble       (*CallDoubleMethodA)       (JNIEnv *, jobject, jmethodID,
334                                            jvalue *);
335  void          (*CallVoidMethod)          (JNIEnv *, jobject, jmethodID,
336                                            ...);
337  void          (*CallVoidMethodV)         (JNIEnv *, jobject, jmethodID,
338                                            _Jv_va_list);
339  void          (*CallVoidMethodA)         (JNIEnv *, jobject, jmethodID,
340                                            jvalue *);
341
342  jobject   (*CallNonvirtualObjectMethod)  (JNIEnv *, jobject, jclass,
343                                            jmethodID, ...);
344  jobject   (*CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
345                                            jmethodID, _Jv_va_list);
346  jobject   (*CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
347                                            jmethodID, jvalue *);
348  jboolean  (*CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
349                                            jmethodID, ...);
350  jboolean  (*CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
351                                             jmethodID, _Jv_va_list);
352  jboolean  (*CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
353                                             jmethodID, jvalue *);
354  jbyte     (*CallNonvirtualByteMethod)    (JNIEnv *, jobject, jclass,
355                                            jmethodID, ...);
356  jbyte     (*CallNonvirtualByteMethodV)   (JNIEnv *, jobject, jclass,
357                                            jmethodID, _Jv_va_list);
358  jbyte     (*CallNonvirtualByteMethodA)   (JNIEnv *, jobject, jclass,
359                                            jmethodID, jvalue *);
360  jchar     (*CallNonvirtualCharMethod)    (JNIEnv *, jobject, jclass,
361                                            jmethodID, ...);
362  jchar     (*CallNonvirtualCharMethodV)   (JNIEnv *, jobject, jclass,
363                                            jmethodID, _Jv_va_list);
364  jchar     (*CallNonvirtualCharMethodA)   (JNIEnv *, jobject, jclass,
365                                            jmethodID, jvalue *);
366  jshort    (*CallNonvirtualShortMethod)   (JNIEnv *, jobject, jclass,
367                                            jmethodID, ...);
368  jshort    (*CallNonvirtualShortMethodV)  (JNIEnv *, jobject, jclass,
369                                            jmethodID, _Jv_va_list);
370  jshort    (*CallNonvirtualShortMethodA)  (JNIEnv *, jobject, jclass,
371                                            jmethodID, jvalue *);
372  jint      (*CallNonvirtualIntMethod)     (JNIEnv *, jobject, jclass,
373                                            jmethodID, ...);
374  jint      (*CallNonvirtualIntMethodV)    (JNIEnv *, jobject, jclass,
375                                            jmethodID, _Jv_va_list);
376  jint      (*CallNonvirtualIntMethodA)    (JNIEnv *, jobject, jclass,
377                                            jmethodID, jvalue *);
378  jlong     (*CallNonvirtualLongMethod)    (JNIEnv *, jobject, jclass,
379                                            jmethodID, ...);
380  jlong     (*CallNonvirtualLongMethodV)   (JNIEnv *, jobject, jclass,
381                                            jmethodID, _Jv_va_list);
382  jlong     (*CallNonvirtualLongMethodA)   (JNIEnv *, jobject, jclass,
383                                            jmethodID, jvalue *);
384  jfloat    (*CallNonvirtualFloatMethod)   (JNIEnv *, jobject, jclass,
385                                            jmethodID, ...);
386  jfloat    (*CallNonvirtualFloatMethodV)  (JNIEnv *, jobject, jclass,
387                                            jmethodID, _Jv_va_list);
388  jfloat    (*CallNonvirtualFloatMethodA)  (JNIEnv *, jobject, jclass,
389                                            jmethodID, jvalue *);
390  jdouble   (*CallNonvirtualDoubleMethod)  (JNIEnv *, jobject, jclass,
391                                            jmethodID, ...);
392  jdouble   (*CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
393                                            jmethodID, _Jv_va_list);
394  jdouble   (*CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
395                                            jmethodID, jvalue *);
396  void      (*CallNonvirtualVoidMethod)    (JNIEnv *, jobject, jclass,
397                                            jmethodID, ...);
398  void      (*CallNonvirtualVoidMethodV)   (JNIEnv *, jobject, jclass,
399                                            jmethodID, _Jv_va_list);
400  void      (*CallNonvirtualVoidMethodA)   (JNIEnv *, jobject, jclass,
401                                            jmethodID, jvalue *);
402
403  jfieldID      (*GetFieldID)              (JNIEnv *, jclass, const char *,
404                                            const char *);
405
406  jobject  (*GetObjectField)               (JNIEnv *, jobject, jfieldID);
407  jboolean (*GetBooleanField)              (JNIEnv *, jobject, jfieldID);
408  jbyte    (*GetByteField)                 (JNIEnv *, jobject, jfieldID);
409  jchar    (*GetCharField)                 (JNIEnv *, jobject, jfieldID);
410  jshort   (*GetShortField)                (JNIEnv *, jobject, jfieldID);
411  jint     (*GetIntField)                  (JNIEnv *, jobject, jfieldID);
412  jlong    (*GetLongField)                 (JNIEnv *, jobject, jfieldID);
413  jfloat   (*GetFloatField)                (JNIEnv *, jobject, jfieldID);
414  jdouble  (*GetDoubleField)               (JNIEnv *, jobject, jfieldID);
415
416  void          (*SetObjectField)          (JNIEnv *, jobject,
417                                            jfieldID, jobject);
418  void          (*SetBooleanField)         (JNIEnv *, jobject,
419                                            jfieldID, jboolean);
420  void          (*SetByteField)            (JNIEnv *, jobject,
421                                            jfieldID, jbyte);
422  void          (*SetCharField)            (JNIEnv *, jobject,
423                                            jfieldID, jchar);
424  void          (*SetShortField)           (JNIEnv *, jobject,
425                                            jfieldID, jshort);
426  void          (*SetIntField)             (JNIEnv *, jobject,
427                                            jfieldID, jint);
428  void          (*SetLongField)            (JNIEnv *, jobject,
429                                            jfieldID, jlong);
430  void          (*SetFloatField)           (JNIEnv *, jobject,
431                                            jfieldID, jfloat);
432  void          (*SetDoubleField)          (JNIEnv *, jobject,
433                                            jfieldID, jdouble);
434
435  jmethodID (*GetStaticMethodID)           (JNIEnv *, jclass, const char *,
436                                            const char *);
437
438  jobject       (*CallStaticObjectMethod)  (JNIEnv *, jclass, jmethodID,
439                                            ...);
440  jobject       (*CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
441                                            _Jv_va_list);
442  jobject       (*CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
443                                            jvalue *);
444  jboolean      (*CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
445                                            ...);
446  jboolean      (*CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
447                                             _Jv_va_list);
448  jboolean      (*CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
449                                             jvalue *);
450  jbyte         (*CallStaticByteMethod)    (JNIEnv *, jclass, jmethodID,
451                                            ...);
452  jbyte         (*CallStaticByteMethodV)   (JNIEnv *, jclass, jmethodID,
453                                            _Jv_va_list);
454  jbyte         (*CallStaticByteMethodA)   (JNIEnv *, jclass, jmethodID,
455                                            jvalue *);
456  jchar         (*CallStaticCharMethod)    (JNIEnv *, jclass, jmethodID,
457                                            ...);
458  jchar         (*CallStaticCharMethodV)   (JNIEnv *, jclass, jmethodID,
459                                            _Jv_va_list);
460  jchar         (*CallStaticCharMethodA)   (JNIEnv *, jclass, jmethodID,
461                                            jvalue *);
462  jshort        (*CallStaticShortMethod)   (JNIEnv *, jclass, jmethodID,
463                                            ...);
464  jshort        (*CallStaticShortMethodV)  (JNIEnv *, jclass, jmethodID,
465                                            _Jv_va_list);
466  jshort        (*CallStaticShortMethodA)  (JNIEnv *, jclass, jmethodID,
467                                            jvalue *);
468  jint          (*CallStaticIntMethod)     (JNIEnv *, jclass, jmethodID,
469                                            ...);
470  jint          (*CallStaticIntMethodV)    (JNIEnv *, jclass, jmethodID,
471                                            _Jv_va_list);
472  jint          (*CallStaticIntMethodA)    (JNIEnv *, jclass, jmethodID,
473                                            jvalue *);
474  jlong         (*CallStaticLongMethod)    (JNIEnv *, jclass, jmethodID,
475                                            ...);
476  jlong         (*CallStaticLongMethodV)   (JNIEnv *, jclass, jmethodID,
477                                            _Jv_va_list);
478  jlong         (*CallStaticLongMethodA)   (JNIEnv *, jclass, jmethodID,
479                                            jvalue *);
480  jfloat        (*CallStaticFloatMethod)   (JNIEnv *, jclass, jmethodID,
481                                            ...);
482  jfloat        (*CallStaticFloatMethodV)  (JNIEnv *, jclass, jmethodID,
483                                            _Jv_va_list);
484  jfloat        (*CallStaticFloatMethodA)  (JNIEnv *, jclass, jmethodID,
485                                            jvalue *);
486  jdouble       (*CallStaticDoubleMethod)  (JNIEnv *, jclass, jmethodID,
487                                            ...);
488  jdouble       (*CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
489                                            _Jv_va_list);
490  jdouble       (*CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
491                                            jvalue *);
492  void          (*CallStaticVoidMethod)    (JNIEnv *, jclass, jmethodID,
493                                            ...);
494  void          (*CallStaticVoidMethodV)   (JNIEnv *, jclass, jmethodID,
495                                            _Jv_va_list);
496  void          (*CallStaticVoidMethodA)   (JNIEnv *, jclass, jmethodID,
497                                            jvalue *);
498
499  jfieldID      (*GetStaticFieldID)        (JNIEnv *, jclass, const char *,
500                                            const char *);
501
502  jobject       (*GetStaticObjectField)    (JNIEnv *, jclass, jfieldID);
503  jboolean      (*GetStaticBooleanField)   (JNIEnv *, jclass, jfieldID);
504  jbyte         (*GetStaticByteField)      (JNIEnv *, jclass, jfieldID);
505  jchar         (*GetStaticCharField)      (JNIEnv *, jclass, jfieldID);
506  jshort        (*GetStaticShortField)     (JNIEnv *, jclass, jfieldID);
507  jint          (*GetStaticIntField)       (JNIEnv *, jclass, jfieldID);
508  jlong         (*GetStaticLongField)      (JNIEnv *, jclass, jfieldID);
509  jfloat        (*GetStaticFloatField)     (JNIEnv *, jclass, jfieldID);
510  jdouble       (*GetStaticDoubleField)    (JNIEnv *, jclass, jfieldID);
511
512  void          (*SetStaticObjectField)    (JNIEnv *, jclass,
513                                            jfieldID, jobject);
514  void          (*SetStaticBooleanField)   (JNIEnv *, jclass,
515                                            jfieldID, jboolean);
516  void          (*SetStaticByteField)      (JNIEnv *, jclass,
517                                            jfieldID, jbyte);
518  void          (*SetStaticCharField)      (JNIEnv *, jclass,
519                                            jfieldID, jchar);
520  void          (*SetStaticShortField)     (JNIEnv *, jclass,
521                                            jfieldID, jshort);
522  void          (*SetStaticIntField)       (JNIEnv *, jclass,
523                                            jfieldID, jint);
524  void          (*SetStaticLongField)      (JNIEnv *, jclass,
525                                            jfieldID, jlong);
526  void          (*SetStaticFloatField)     (JNIEnv *, jclass,
527                                            jfieldID, jfloat);
528  void          (*SetStaticDoubleField)    (JNIEnv *, jclass,
529                                            jfieldID, jdouble);
530
531  jstring  (*NewString)                    (JNIEnv *, const jchar *, jsize);
532  jsize    (*GetStringLength)              (JNIEnv *, jstring);
533  const jchar * (*GetStringChars)          (JNIEnv *, jstring, jboolean *);
534  void     (*ReleaseStringChars)           (JNIEnv *, jstring, const jchar *);
535  jstring  (*NewStringUTF)                 (JNIEnv *, const char *);
536  jsize    (*GetStringUTFLength)           (JNIEnv *, jstring);
537  const char * (*GetStringUTFChars)        (JNIEnv *, jstring, jboolean *);
538  void     (*ReleaseStringUTFChars)        (JNIEnv *, jstring, const char *);
539  jsize    (*GetArrayLength)               (JNIEnv *, jarray);
540  jarray   (*NewObjectArray)               (JNIEnv *, jsize, jclass, jobject);
541  jobject  (*GetObjectArrayElement)        (JNIEnv *, jobjectArray, jsize);
542  void     (*SetObjectArrayElement)        (JNIEnv *, jobjectArray, jsize,
543                                            jobject);
544
545  jbooleanArray (*NewBooleanArray)         (JNIEnv *, jsize);
546  jbyteArray    (*NewByteArray)            (JNIEnv *, jsize);
547  jcharArray    (*NewCharArray)            (JNIEnv *, jsize);
548  jshortArray   (*NewShortArray)           (JNIEnv *, jsize);
549  jintArray     (*NewIntArray)             (JNIEnv *, jsize);
550  jlongArray    (*NewLongArray)            (JNIEnv *, jsize);
551  jfloatArray   (*NewFloatArray)           (JNIEnv *, jsize);
552  jdoubleArray  (*NewDoubleArray)          (JNIEnv *, jsize);
553
554  jboolean *    (*GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
555                                            jboolean *);
556  jbyte *       (*GetByteArrayElements)    (JNIEnv *, jbyteArray,
557                                            jboolean *);
558  jchar *       (*GetCharArrayElements)    (JNIEnv *, jcharArray,
559                                            jboolean *);
560  jshort *      (*GetShortArrayElements)   (JNIEnv *, jshortArray,
561                                            jboolean *);
562  jint *        (*GetIntArrayElements)     (JNIEnv *, jintArray,
563                                            jboolean *);
564  jlong *       (*GetLongArrayElements)    (JNIEnv *, jlongArray,
565                                            jboolean *);
566  jfloat *      (*GetFloatArrayElements)   (JNIEnv *, jfloatArray,
567                                            jboolean *);
568  jdouble *     (*GetDoubleArrayElements)  (JNIEnv *, jdoubleArray,
569                                            jboolean *);
570
571  void          (*ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
572                                                jboolean *, jint);
573  void          (*ReleaseByteArrayElements)    (JNIEnv *, jbyteArray,
574                                                jbyte *, jint);
575  void          (*ReleaseCharArrayElements)    (JNIEnv *, jcharArray,
576                                                jchar *, jint);
577  void          (*ReleaseShortArrayElements)   (JNIEnv *, jshortArray,
578                                                jshort *, jint);
579  void          (*ReleaseIntArrayElements)     (JNIEnv *, jintArray,
580                                                jint *, jint);
581  void          (*ReleaseLongArrayElements)    (JNIEnv *, jlongArray,
582                                                jlong *, jint);
583  void          (*ReleaseFloatArrayElements)   (JNIEnv *, jfloatArray,
584                                                jfloat *, jint);
585  void          (*ReleaseDoubleArrayElements)  (JNIEnv *, jdoubleArray,
586                                                jdouble *, jint);
587
588  void          (*GetBooleanArrayRegion)   (JNIEnv *, jbooleanArray,
589                                            jsize, jsize, jboolean *);
590  void          (*GetByteArrayRegion)      (JNIEnv *, jbyteArray,
591                                            jsize, jsize, jbyte *);
592  void          (*GetCharArrayRegion)      (JNIEnv *, jcharArray,
593                                            jsize, jsize, jchar *);
594  void          (*GetShortArrayRegion)     (JNIEnv *, jshortArray,
595                                            jsize, jsize, jshort *);
596  void          (*GetIntArrayRegion)       (JNIEnv *, jintArray,
597                                            jsize, jsize, jint *);
598  void          (*GetLongArrayRegion)      (JNIEnv *, jlongArray,
599                                            jsize, jsize, jlong *);
600  void          (*GetFloatArrayRegion)     (JNIEnv *, jfloatArray,
601                                            jsize, jsize, jfloat *);
602  void          (*GetDoubleArrayRegion)    (JNIEnv *, jdoubleArray,
603                                            jsize, jsize, jdouble *);
604
605  void          (*SetBooleanArrayRegion)   (JNIEnv *, jbooleanArray,
606                                            jsize, jsize, jboolean *);
607  void          (*SetByteArrayRegion)      (JNIEnv *, jbyteArray,
608                                            jsize, jsize, jbyte *);
609  void          (*SetCharArrayRegion)      (JNIEnv *, jcharArray,
610                                            jsize, jsize, jchar *);
611  void          (*SetShortArrayRegion)     (JNIEnv *, jshortArray,
612                                            jsize, jsize, jshort *);
613  void          (*SetIntArrayRegion)       (JNIEnv *, jintArray,
614                                            jsize, jsize, jint *);
615  void          (*SetLongArrayRegion)      (JNIEnv *, jlongArray,
616                                            jsize, jsize, jlong *);
617  void          (*SetFloatArrayRegion)     (JNIEnv *, jfloatArray,
618                                            jsize, jsize, jfloat *);
619  void          (*SetDoubleArrayRegion)    (JNIEnv *, jdoubleArray,
620                                            jsize, jsize, jdouble *);
621
622  jint     (*RegisterNatives)              (JNIEnv *, jclass,
623                                            const JNINativeMethod *, jint);
624  jint     (*UnregisterNatives)            (JNIEnv *, jclass);
625  jint     (*MonitorEnter)                 (JNIEnv *, jobject);
626  jint     (*MonitorExit)                  (JNIEnv *, jobject);
627  jint     (*GetJavaVM)                    (JNIEnv *, JavaVM **);
628
629  void     (*GetStringRegion)              (JNIEnv *, jstring, jsize,
630                                            jsize, jchar *);
631  void     (*GetStringUTFRegion)           (JNIEnv *, jstring, jsize,
632                                            jsize, char *);
633
634  void * (*GetPrimitiveArrayCritical)      (JNIEnv *, jarray, jboolean *);
635  void   (*ReleasePrimitiveArrayCritical)  (JNIEnv *, jarray, void *, jint);
636
637  const jchar * (*GetStringCritical)       (JNIEnv *, jstring, jboolean *);
638  void          (*ReleaseStringCritical)   (JNIEnv *, jstring, const jchar *);
639
640  jweak  (*NewWeakGlobalRef)               (JNIEnv *, jobject);
641  void   (*DeleteWeakGlobalRef)            (JNIEnv *, jweak);
642
643  jboolean      (*ExceptionCheck)          (JNIEnv *);
644};
645
646#ifdef __cplusplus
647
648class _Jv_JNIEnv
649{
650public:
651  /* The method table.  */
652  struct JNINativeInterface *p;
653
654  /* This is ugly, but we must live with it.  */
655#ifndef __GCJ_JNI_IMPL__
656private:
657#endif
658  /* The current exception.  */
659  jthrowable ex;
660
661  /* The class of the current native method.  */
662  jclass klass;
663
664  /* The chain of local frames.  */
665  struct _Jv_JNI_LocalFrame *locals;
666
667public:
668  jint GetVersion ()
669  { return p->GetVersion (this); }
670
671  jclass DefineClass (jobject obj0, const jbyte * val1, jsize val2)
672  { return p->DefineClass (this, obj0, val1, val2); }
673
674  jclass FindClass (const char * val0)
675  { return p->FindClass (this, val0); }
676
677  jmethodID FromReflectedMethod (jobject obj0)
678  { return p->FromReflectedMethod (this, obj0); }
679
680  jfieldID FromReflectedField (jobject obj0)
681  { return p->FromReflectedField (this, obj0); }
682
683  jobject ToReflectedMethod (jclass cl0, jmethodID meth1, jboolean val2)
684  { return p->ToReflectedMethod (this, cl0, meth1, val2); }
685
686  jclass GetSuperclass (jclass cl0)
687  { return p->GetSuperclass (this, cl0); }
688
689  jboolean IsAssignableFrom (jclass cl0, jclass cl1)
690  { return p->IsAssignableFrom (this, cl0, cl1); }
691
692  jobject ToReflectedField (jclass cl0, jfieldID fld1, jboolean val2)
693  { return p->ToReflectedField (this, cl0, fld1, val2); }
694
695  jint Throw (jthrowable val0)
696  { return p->Throw (this, val0); }
697
698  jint ThrowNew (jclass cl0, const char * val1)
699  { return p->ThrowNew (this, cl0, val1); }
700
701  jthrowable ExceptionOccurred ()
702  { return p->ExceptionOccurred (this); }
703
704  void ExceptionDescribe ()
705  { p->ExceptionDescribe (this); }
706
707  void ExceptionClear ()
708  { p->ExceptionClear (this); }
709
710  void FatalError (const char * val0)
711  { p->FatalError (this, val0); }
712
713  jint PushLocalFrame (jint val0)
714  { return p->PushLocalFrame (this, val0); }
715
716  jobject PopLocalFrame (jobject obj0)
717  { return p->PopLocalFrame (this, obj0); }
718
719  jobject NewGlobalRef (jobject obj0)
720  { return p->NewGlobalRef (this, obj0); }
721
722  void DeleteGlobalRef (jobject obj0)
723  { p->DeleteGlobalRef (this, obj0); }
724
725  void DeleteLocalRef (jobject obj0)
726  { p->DeleteLocalRef (this, obj0); }
727
728  jboolean IsSameObject (jobject obj0, jobject obj1)
729  { return p->IsSameObject (this, obj0, obj1); }
730
731  jobject NewLocalRef (jobject obj0)
732  { return p->NewLocalRef (this, obj0); }
733
734  jint EnsureLocalCapacity (jint val0)
735  { return p->EnsureLocalCapacity (this, val0); }
736
737  jobject AllocObject (jclass cl0)
738  { return p->AllocObject (this, cl0); }
739
740  jobject NewObject (jclass cl0, jmethodID meth1, ...)
741  {
742    _Jv_va_list args;
743    va_start (args, meth1);
744    jobject result = p->NewObjectV (this, cl0, meth1, args);
745    va_end (args);
746    return result;
747  }
748
749  jobject NewObjectV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
750  { return p->NewObjectV (this, cl0, meth1, val2); }
751
752  jobject NewObjectA (jclass cl0, jmethodID meth1, jvalue * val2)
753  { return p->NewObjectA (this, cl0, meth1, val2); }
754
755  jclass GetObjectClass (jobject obj0)
756  { return p->GetObjectClass (this, obj0); }
757
758  jboolean IsInstanceOf (jobject obj0, jclass cl1)
759  { return p->IsInstanceOf (this, obj0, cl1); }
760
761  jmethodID GetMethodID (jclass cl0, const char * val1, const char * val2)
762  { return p->GetMethodID (this, cl0, val1, val2); }
763
764  jobject CallObjectMethod (jobject obj0, jmethodID meth1, ...)
765  {
766    _Jv_va_list args;
767    va_start (args, meth1);
768    jobject result = p->CallObjectMethodV (this, obj0, meth1, args);
769    va_end (args);
770    return result;
771  }
772
773  jobject CallObjectMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
774  { return p->CallObjectMethodV (this, obj0, meth1, val2); }
775
776  jobject CallObjectMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
777  { return p->CallObjectMethodA (this, obj0, meth1, val2); }
778
779  jboolean CallBooleanMethod (jobject obj0, jmethodID meth1, ...)
780  {
781    _Jv_va_list args;
782    va_start (args, meth1);
783    jboolean result = p->CallBooleanMethodV (this, obj0, meth1, args);
784    va_end (args);
785    return result;
786  }
787
788  jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
789  { return p->CallBooleanMethodV (this, obj0, meth1, val2); }
790
791  jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
792  { return p->CallBooleanMethodA (this, obj0, meth1, val2); }
793
794  jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
795  {
796    _Jv_va_list args;
797    va_start (args, meth1);
798    jbyte result = p->CallByteMethodV (this, obj0, meth1, args);
799    va_end (args);
800    return result;
801  }
802
803  jbyte CallByteMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
804  { return p->CallByteMethodV (this, obj0, meth1, val2); }
805
806  jbyte CallByteMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
807  { return p->CallByteMethodA (this, obj0, meth1, val2); }
808
809  jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
810  {
811    _Jv_va_list args;
812    va_start (args, meth1);
813    jchar result = p->CallCharMethodV (this, obj0, meth1, args);
814    va_end (args);
815    return result;
816  }
817
818  jchar CallCharMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
819  { return p->CallCharMethodV (this, obj0, meth1, val2); }
820
821  jchar CallCharMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
822  { return p->CallCharMethodA (this, obj0, meth1, val2); }
823
824  jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
825  {
826    _Jv_va_list args;
827    va_start (args, meth1);
828    jshort result = p->CallShortMethodV (this, obj0, meth1, args);
829    va_end (args);
830    return result;
831  }
832
833  jshort CallShortMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
834  { return p->CallShortMethodV (this, obj0, meth1, val2); }
835
836  jshort CallShortMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
837  { return p->CallShortMethodA (this, obj0, meth1, val2); }
838
839  jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
840  {
841    _Jv_va_list args;
842    va_start (args, meth1);
843    jint result = p->CallIntMethodV (this, obj0, meth1, args);
844    va_end (args);
845    return result;
846  }
847
848  jint CallIntMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
849  { return p->CallIntMethodV (this, obj0, meth1, val2); }
850
851  jint CallIntMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
852  { return p->CallIntMethodA (this, obj0, meth1, val2); }
853
854  jlong CallLongMethod (jobject obj0, jmethodID meth1, ...)
855  {
856    _Jv_va_list args;
857    va_start (args, meth1);
858    jlong result = p->CallLongMethodV (this, obj0, meth1, args);
859    va_end (args);
860    return result;
861  }
862
863  jlong CallLongMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
864  { return p->CallLongMethodV (this, obj0, meth1, val2); }
865
866  jlong CallLongMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
867  { return p->CallLongMethodA (this, obj0, meth1, val2); }
868
869  jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
870  {
871    _Jv_va_list args;
872    va_start (args, meth1);
873    jfloat result = p->CallFloatMethodV (this, obj0, meth1, args);
874    va_end (args);
875    return result;
876  }
877
878  jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
879  { return p->CallFloatMethodV (this, obj0, meth1, val2); }
880
881  jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
882  { return p->CallFloatMethodA (this, obj0, meth1, val2); }
883
884  jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
885  {
886    _Jv_va_list args;
887    va_start (args, meth1);
888    jdouble result = p->CallDoubleMethodV (this, obj0, meth1, args);
889    va_end (args);
890    return result;
891  }
892
893  jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
894  { return p->CallDoubleMethodV (this, obj0, meth1, val2); }
895
896  jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
897  { return p->CallDoubleMethodA (this, obj0, meth1, val2); }
898
899  void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
900  {
901    _Jv_va_list args;
902    va_start (args, meth1);
903    p->CallVoidMethodV (this, obj0, meth1, args);
904    va_end (args);
905  }
906
907  void CallVoidMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
908  { p->CallVoidMethodV (this, obj0, meth1, val2); }
909
910  void CallVoidMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
911  { p->CallVoidMethodA (this, obj0, meth1, val2); }
912
913  jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
914  {
915    _Jv_va_list args;
916    va_start (args, meth2);
917    jobject result = p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, args);
918    va_end (args);
919    return result;
920  }
921
922  jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
923  { return p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
924
925  jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
926  { return p->CallNonvirtualObjectMethodA (this, obj0, cl1, meth2, val3); }
927
928  jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
929  {
930    _Jv_va_list args;
931    va_start (args, meth2);
932    jboolean result = p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, args);
933    va_end (args);
934    return result;
935  }
936
937  jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
938  { return p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
939
940  jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
941  { return p->CallNonvirtualBooleanMethodA (this, obj0, cl1, meth2, val3); }
942
943  jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
944  {
945    _Jv_va_list args;
946    va_start (args, meth2);
947    jbyte result = p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, args);
948    va_end (args);
949    return result;
950  }
951
952  jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
953  { return p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
954
955  jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
956  { return p->CallNonvirtualByteMethodA (this, obj0, cl1, meth2, val3); }
957
958  jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
959  {
960    _Jv_va_list args;
961    va_start (args, meth2);
962    jchar result = p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, args);
963    va_end (args);
964    return result;
965  }
966
967  jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
968  { return p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
969
970  jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
971  { return p->CallNonvirtualCharMethodA (this, obj0, cl1, meth2, val3); }
972
973  jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
974  {
975    _Jv_va_list args;
976    va_start (args, meth2);
977    jshort result = p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, args);
978    va_end (args);
979    return result;
980  }
981
982  jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
983  { return p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
984
985  jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
986  { return p->CallNonvirtualShortMethodA (this, obj0, cl1, meth2, val3); }
987
988  jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
989  {
990    _Jv_va_list args;
991    va_start (args, meth2);
992    jint result = p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, args);
993    va_end (args);
994    return result;
995  }
996
997  jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
998  { return p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
999
1000  jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1001  { return p->CallNonvirtualIntMethodA (this, obj0, cl1, meth2, val3); }
1002
1003  jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1004  {
1005    _Jv_va_list args;
1006    va_start (args, meth2);
1007    jlong result = p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, args);
1008    va_end (args);
1009    return result;
1010  }
1011
1012  jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
1013  { return p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
1014
1015  jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1016  { return p->CallNonvirtualLongMethodA (this, obj0, cl1, meth2, val3); }
1017
1018  jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1019  {
1020    _Jv_va_list args;
1021    va_start (args, meth2);
1022    jfloat result = p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, args);
1023    va_end (args);
1024    return result;
1025  }
1026
1027  jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
1028  { return p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
1029
1030  jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1031  { return p->CallNonvirtualFloatMethodA (this, obj0, cl1, meth2, val3); }
1032
1033  jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1034  {
1035    _Jv_va_list args;
1036    va_start (args, meth2);
1037    jdouble result = p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, args);
1038    va_end (args);
1039    return result;
1040  }
1041
1042  jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
1043  { return p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
1044
1045  jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1046  { return p->CallNonvirtualDoubleMethodA (this, obj0, cl1, meth2, val3); }
1047
1048  void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
1049  {
1050    _Jv_va_list args;
1051    va_start (args, meth2);
1052    p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, args);
1053    va_end (args);
1054  }
1055
1056  void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
1057  { p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
1058
1059  void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
1060  { p->CallNonvirtualVoidMethodA (this, obj0, cl1, meth2, val3); }
1061
1062  jfieldID GetFieldID (jclass cl0, const char * val1, const char * val2)
1063  { return p->GetFieldID (this, cl0, val1, val2); }
1064
1065  jobject GetObjectField (jobject obj0, jfieldID fld1)
1066  { return p->GetObjectField (this, obj0, fld1); }
1067
1068  jboolean GetBooleanField (jobject obj0, jfieldID fld1)
1069  { return p->GetBooleanField (this, obj0, fld1); }
1070
1071  jbyte GetByteField (jobject obj0, jfieldID fld1)
1072  { return p->GetByteField (this, obj0, fld1); }
1073
1074  jchar GetCharField (jobject obj0, jfieldID fld1)
1075  { return p->GetCharField (this, obj0, fld1); }
1076
1077  jshort GetShortField (jobject obj0, jfieldID fld1)
1078  { return p->GetShortField (this, obj0, fld1); }
1079
1080  jint GetIntField (jobject obj0, jfieldID fld1)
1081  { return p->GetIntField (this, obj0, fld1); }
1082
1083  jlong GetLongField (jobject obj0, jfieldID fld1)
1084  { return p->GetLongField (this, obj0, fld1); }
1085
1086  jfloat GetFloatField (jobject obj0, jfieldID fld1)
1087  { return p->GetFloatField (this, obj0, fld1); }
1088
1089  jdouble GetDoubleField (jobject obj0, jfieldID fld1)
1090  { return p->GetDoubleField (this, obj0, fld1); }
1091
1092  void SetObjectField (jobject obj0, jfieldID fld1, jobject obj2)
1093  { p->SetObjectField (this, obj0, fld1, obj2); }
1094
1095  void SetBooleanField (jobject obj0, jfieldID fld1, jboolean val2)
1096  { p->SetBooleanField (this, obj0, fld1, val2); }
1097
1098  void SetByteField (jobject obj0, jfieldID fld1, jbyte val2)
1099  { p->SetByteField (this, obj0, fld1, val2); }
1100
1101  void SetCharField (jobject obj0, jfieldID fld1, jchar val2)
1102  { p->SetCharField (this, obj0, fld1, val2); }
1103
1104  void SetShortField (jobject obj0, jfieldID fld1, jshort val2)
1105  { p->SetShortField (this, obj0, fld1, val2); }
1106
1107  void SetIntField (jobject obj0, jfieldID fld1, jint val2)
1108  { p->SetIntField (this, obj0, fld1, val2); }
1109
1110  void SetLongField (jobject obj0, jfieldID fld1, jlong val2)
1111  { p->SetLongField (this, obj0, fld1, val2); }
1112
1113  void SetFloatField (jobject obj0, jfieldID fld1, jfloat val2)
1114  { p->SetFloatField (this, obj0, fld1, val2); }
1115
1116  void SetDoubleField (jobject obj0, jfieldID fld1, jdouble val2)
1117  { p->SetDoubleField (this, obj0, fld1, val2); }
1118
1119  jmethodID GetStaticMethodID (jclass cl0, const char * val1, const char * val2)
1120  { return p->GetStaticMethodID (this, cl0, val1, val2); }
1121
1122  jobject CallStaticObjectMethod (jclass cl0, jmethodID meth1, ...)
1123  {
1124    _Jv_va_list args;
1125    va_start (args, meth1);
1126    jobject result = p->CallStaticObjectMethodV (this, cl0, meth1, args);
1127    va_end (args);
1128    return result;
1129  }
1130
1131  jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1132  { return p->CallStaticObjectMethodV (this, cl0, meth1, val2); }
1133
1134  jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1135  { return p->CallStaticObjectMethodA (this, cl0, meth1, val2); }
1136
1137  jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
1138  {
1139    _Jv_va_list args;
1140    va_start (args, meth1);
1141    jboolean result = p->CallStaticBooleanMethodV (this, cl0, meth1, args);
1142    va_end (args);
1143    return result;
1144  }
1145
1146  jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1147  { return p->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
1148
1149  jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1150  { return p->CallStaticBooleanMethodA (this, cl0, meth1, val2); }
1151
1152  jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
1153  {
1154    _Jv_va_list args;
1155    va_start (args, meth1);
1156    jbyte result = p->CallStaticByteMethodV (this, cl0, meth1, args);
1157    va_end (args);
1158    return result;
1159  }
1160
1161  jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1162  { return p->CallStaticByteMethodV (this, cl0, meth1, val2); }
1163
1164  jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1165  { return p->CallStaticByteMethodA (this, cl0, meth1, val2); }
1166
1167  jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
1168  {
1169    _Jv_va_list args;
1170    va_start (args, meth1);
1171    jchar result = p->CallStaticCharMethodV (this, cl0, meth1, args);
1172    va_end (args);
1173    return result;
1174  }
1175
1176  jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1177  { return p->CallStaticCharMethodV (this, cl0, meth1, val2); }
1178
1179  jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1180  { return p->CallStaticCharMethodA (this, cl0, meth1, val2); }
1181
1182  jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
1183  {
1184    _Jv_va_list args;
1185    va_start (args, meth1);
1186    jshort result = p->CallStaticShortMethodV (this, cl0, meth1, args);
1187    va_end (args);
1188    return result;
1189  }
1190
1191  jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1192  { return p->CallStaticShortMethodV (this, cl0, meth1, val2); }
1193
1194  jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1195  { return p->CallStaticShortMethodA (this, cl0, meth1, val2); }
1196
1197  jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
1198  {
1199    _Jv_va_list args;
1200    va_start (args, meth1);
1201    jint result = p->CallStaticIntMethodV (this, cl0, meth1, args);
1202    va_end (args);
1203    return result;
1204  }
1205
1206  jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1207  { return p->CallStaticIntMethodV (this, cl0, meth1, val2); }
1208
1209  jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1210  { return p->CallStaticIntMethodA (this, cl0, meth1, val2); }
1211
1212  jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
1213  {
1214    _Jv_va_list args;
1215    va_start (args, meth1);
1216    jlong result = p->CallStaticLongMethodV (this, cl0, meth1, args);
1217    va_end (args);
1218    return result;
1219  }
1220
1221  jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1222  { return p->CallStaticLongMethodV (this, cl0, meth1, val2); }
1223
1224  jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1225  { return p->CallStaticLongMethodA (this, cl0, meth1, val2); }
1226
1227  jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
1228  {
1229    _Jv_va_list args;
1230    va_start (args, meth1);
1231    jfloat result = p->CallStaticFloatMethodV (this, cl0, meth1, args);
1232    va_end (args);
1233    return result;
1234  }
1235
1236  jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1237  { return p->CallStaticFloatMethodV (this, cl0, meth1, val2); }
1238
1239  jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1240  { return p->CallStaticFloatMethodA (this, cl0, meth1, val2); }
1241
1242  jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
1243  {
1244    _Jv_va_list args;
1245    va_start (args, meth1);
1246    jdouble result = p->CallStaticDoubleMethodV (this, cl0, meth1, args);
1247    va_end (args);
1248    return result;
1249  }
1250
1251  jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1252  { return p->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
1253
1254  jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1255  { return p->CallStaticDoubleMethodA (this, cl0, meth1, val2); }
1256
1257  void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
1258  {
1259    _Jv_va_list args;
1260    va_start (args, meth1);
1261    p->CallStaticVoidMethodV (this, cl0, meth1, args);
1262    va_end (args);
1263  }
1264
1265  void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1266  { p->CallStaticVoidMethodV (this, cl0, meth1, val2); }
1267
1268  void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1269  { p->CallStaticVoidMethodA (this, cl0, meth1, val2); }
1270
1271  jfieldID GetStaticFieldID (jclass cl0, const char * val1, const char * val2)
1272  { return p->GetStaticFieldID (this, cl0, val1, val2); }
1273
1274  jobject GetStaticObjectField (jclass cl0, jfieldID fld1)
1275  { return p->GetStaticObjectField (this, cl0, fld1); }
1276
1277  jboolean GetStaticBooleanField (jclass cl0, jfieldID fld1)
1278  { return p->GetStaticBooleanField (this, cl0, fld1); }
1279
1280  jbyte GetStaticByteField (jclass cl0, jfieldID fld1)
1281  { return p->GetStaticByteField (this, cl0, fld1); }
1282
1283  jchar GetStaticCharField (jclass cl0, jfieldID fld1)
1284  { return p->GetStaticCharField (this, cl0, fld1); }
1285
1286  jshort GetStaticShortField (jclass cl0, jfieldID fld1)
1287  { return p->GetStaticShortField (this, cl0, fld1); }
1288
1289  jint GetStaticIntField (jclass cl0, jfieldID fld1)
1290  { return p->GetStaticIntField (this, cl0, fld1); }
1291
1292  jlong GetStaticLongField (jclass cl0, jfieldID fld1)
1293  { return p->GetStaticLongField (this, cl0, fld1); }
1294
1295  jfloat GetStaticFloatField (jclass cl0, jfieldID fld1)
1296  { return p->GetStaticFloatField (this, cl0, fld1); }
1297
1298  jdouble GetStaticDoubleField (jclass cl0, jfieldID fld1)
1299  { return p->GetStaticDoubleField (this, cl0, fld1); }
1300
1301  void SetStaticObjectField (jclass cl0, jfieldID fld1, jobject obj2)
1302  { p->SetStaticObjectField (this, cl0, fld1, obj2); }
1303
1304  void SetStaticBooleanField (jclass cl0, jfieldID fld1, jboolean val2)
1305  { p->SetStaticBooleanField (this, cl0, fld1, val2); }
1306
1307  void SetStaticByteField (jclass cl0, jfieldID fld1, jbyte val2)
1308  { p->SetStaticByteField (this, cl0, fld1, val2); }
1309
1310  void SetStaticCharField (jclass cl0, jfieldID fld1, jchar val2)
1311  { p->SetStaticCharField (this, cl0, fld1, val2); }
1312
1313  void SetStaticShortField (jclass cl0, jfieldID fld1, jshort val2)
1314  { p->SetStaticShortField (this, cl0, fld1, val2); }
1315
1316  void SetStaticIntField (jclass cl0, jfieldID fld1, jint val2)
1317  { p->SetStaticIntField (this, cl0, fld1, val2); }
1318
1319  void SetStaticLongField (jclass cl0, jfieldID fld1, jlong val2)
1320  { p->SetStaticLongField (this, cl0, fld1, val2); }
1321
1322  void SetStaticFloatField (jclass cl0, jfieldID fld1, jfloat val2)
1323  { p->SetStaticFloatField (this, cl0, fld1, val2); }
1324
1325  void SetStaticDoubleField (jclass cl0, jfieldID fld1, jdouble val2)
1326  { p->SetStaticDoubleField (this, cl0, fld1, val2); }
1327
1328  jstring NewString (const jchar * val0, jsize val1)
1329  { return p->NewString (this, val0, val1); }
1330
1331  jint GetStringLength (jstring val0)
1332  { return p->GetStringLength (this, val0); }
1333
1334  const jchar * GetStringChars (jstring val0, jboolean * val1)
1335  { return p->GetStringChars (this, val0, val1); }
1336
1337  void ReleaseStringChars (jstring val0, const jchar * val1)
1338  { p->ReleaseStringChars (this, val0, val1); }
1339
1340  jstring NewStringUTF (const char * val0)
1341  { return p->NewStringUTF (this, val0); }
1342
1343  jsize GetStringUTFLength (jstring val0)
1344  { return p->GetStringUTFLength (this, val0); }
1345
1346  const char * GetStringUTFChars (jstring val0, jboolean * val1)
1347  { return p->GetStringUTFChars (this, val0, val1); }
1348
1349  void ReleaseStringUTFChars (jstring val0, const char * val1)
1350  { p->ReleaseStringUTFChars (this, val0, val1); }
1351
1352  jsize GetArrayLength (jarray val0)
1353  { return p->GetArrayLength (this, val0); }
1354
1355  jarray NewObjectArray (jsize val0, jclass cl1, jobject obj2)
1356  { return p->NewObjectArray (this, val0, cl1, obj2); }
1357
1358  jobject GetObjectArrayElement (jobjectArray val0, jsize val1)
1359  { return p->GetObjectArrayElement (this, val0, val1); }
1360
1361  void SetObjectArrayElement (jobjectArray val0, jsize val1, jobject obj2)
1362  { p->SetObjectArrayElement (this, val0, val1, obj2); }
1363
1364  jbooleanArray NewBooleanArray (jsize val0)
1365  { return p->NewBooleanArray (this, val0); }
1366
1367  jbyteArray NewByteArray (jsize val0)
1368  { return p->NewByteArray (this, val0); }
1369
1370  jcharArray NewCharArray (jsize val0)
1371  { return p->NewCharArray (this, val0); }
1372
1373  jshortArray NewShortArray (jsize val0)
1374  { return p->NewShortArray (this, val0); }
1375
1376  jintArray NewIntArray (jsize val0)
1377  { return p->NewIntArray (this, val0); }
1378
1379  jlongArray NewLongArray (jsize val0)
1380  { return p->NewLongArray (this, val0); }
1381
1382  jfloatArray NewFloatArray (jsize val0)
1383  { return p->NewFloatArray (this, val0); }
1384
1385  jdoubleArray NewDoubleArray (jsize val0)
1386  { return p->NewDoubleArray (this, val0); }
1387
1388  jboolean * GetBooleanArrayElements (jbooleanArray val0, jboolean * val1)
1389  { return p->GetBooleanArrayElements (this, val0, val1); }
1390
1391  jbyte * GetByteArrayElements (jbyteArray val0, jboolean * val1)
1392  { return p->GetByteArrayElements (this, val0, val1); }
1393
1394  jchar * GetCharArrayElements (jcharArray val0, jboolean * val1)
1395  { return p->GetCharArrayElements (this, val0, val1); }
1396
1397  jshort * GetShortArrayElements (jshortArray val0, jboolean * val1)
1398  { return p->GetShortArrayElements (this, val0, val1); }
1399
1400  jint * GetIntArrayElements (jintArray val0, jboolean * val1)
1401  { return p->GetIntArrayElements (this, val0, val1); }
1402
1403  jlong * GetLongArrayElements (jlongArray val0, jboolean * val1)
1404  { return p->GetLongArrayElements (this, val0, val1); }
1405
1406  jfloat * GetFloatArrayElements (jfloatArray val0, jboolean * val1)
1407  { return p->GetFloatArrayElements (this, val0, val1); }
1408
1409  jdouble * GetDoubleArrayElements (jdoubleArray val0, jboolean * val1)
1410  { return p->GetDoubleArrayElements (this, val0, val1); }
1411
1412  void ReleaseBooleanArrayElements (jbooleanArray val0, jboolean * val1, jint val2)
1413  { p->ReleaseBooleanArrayElements (this, val0, val1, val2); }
1414
1415  void ReleaseByteArrayElements (jbyteArray val0, jbyte * val1, jint val2)
1416  { p->ReleaseByteArrayElements (this, val0, val1, val2); }
1417
1418  void ReleaseCharArrayElements (jcharArray val0, jchar * val1, jint val2)
1419  { p->ReleaseCharArrayElements (this, val0, val1, val2); }
1420
1421  void ReleaseShortArrayElements (jshortArray val0, jshort * val1, jint val2)
1422  { p->ReleaseShortArrayElements (this, val0, val1, val2); }
1423
1424  void ReleaseIntArrayElements (jintArray val0, jint * val1, jint val2)
1425  { p->ReleaseIntArrayElements (this, val0, val1, val2); }
1426
1427  void ReleaseLongArrayElements (jlongArray val0, jlong * val1, jint val2)
1428  { p->ReleaseLongArrayElements (this, val0, val1, val2); }
1429
1430  void ReleaseFloatArrayElements (jfloatArray val0, jfloat * val1, jint val2)
1431  { p->ReleaseFloatArrayElements (this, val0, val1, val2); }
1432
1433  void ReleaseDoubleArrayElements (jdoubleArray val0, jdouble * val1, jint val2)
1434  { p->ReleaseDoubleArrayElements (this, val0, val1, val2); }
1435
1436  void GetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1437  { p->GetBooleanArrayRegion (this, val0, val1, val2, val3); }
1438
1439  void GetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
1440  { p->GetByteArrayRegion (this, val0, val1, val2, val3); }
1441
1442  void GetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
1443  { p->GetCharArrayRegion (this, val0, val1, val2, val3); }
1444
1445  void GetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
1446  { p->GetShortArrayRegion (this, val0, val1, val2, val3); }
1447
1448  void GetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
1449  { p->GetIntArrayRegion (this, val0, val1, val2, val3); }
1450
1451  void GetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
1452  { p->GetLongArrayRegion (this, val0, val1, val2, val3); }
1453
1454  void GetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
1455  { p->GetFloatArrayRegion (this, val0, val1, val2, val3); }
1456
1457  void GetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
1458  { p->GetDoubleArrayRegion (this, val0, val1, val2, val3); }
1459
1460  void SetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1461  { p->SetBooleanArrayRegion (this, val0, val1, val2, val3); }
1462
1463  void SetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
1464  { p->SetByteArrayRegion (this, val0, val1, val2, val3); }
1465
1466  void SetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
1467  { p->SetCharArrayRegion (this, val0, val1, val2, val3); }
1468
1469  void SetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
1470  { p->SetShortArrayRegion (this, val0, val1, val2, val3); }
1471
1472  void SetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
1473  { p->SetIntArrayRegion (this, val0, val1, val2, val3); }
1474
1475  void SetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
1476  { p->SetLongArrayRegion (this, val0, val1, val2, val3); }
1477
1478  void SetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
1479  { p->SetFloatArrayRegion (this, val0, val1, val2, val3); }
1480
1481  void SetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
1482  { p->SetDoubleArrayRegion (this, val0, val1, val2, val3); }
1483
1484  jint RegisterNatives (jclass cl0, const JNINativeMethod * val1, jint val2)
1485  { return p->RegisterNatives (this, cl0, val1, val2); }
1486
1487  jint UnregisterNatives (jclass cl0)
1488  { return p->UnregisterNatives (this, cl0); }
1489
1490  jint MonitorEnter (jobject obj0)
1491  { return p->MonitorEnter (this, obj0); }
1492
1493  jint MonitorExit (jobject obj0)
1494  { return p->MonitorExit (this, obj0); }
1495
1496  jint GetJavaVM (JavaVM ** val0)
1497  { return p->GetJavaVM (this, val0); }
1498
1499  void GetStringRegion (jstring val0, jsize val1, jsize val2, jchar * val3)
1500  { p->GetStringRegion (this, val0, val1, val2, val3); }
1501
1502  void GetStringUTFRegion (jstring val0, jsize val1, jsize val2, char * val3)
1503  { p->GetStringUTFRegion (this, val0, val1, val2, val3); }
1504
1505  void * GetPrimitiveArrayCritical (jarray val0, jboolean * val1)
1506  { return p->GetPrimitiveArrayCritical (this, val0, val1); }
1507
1508  void ReleasePrimitiveArrayCritical (jarray val0, void * val1, jint val2)
1509  { p->ReleasePrimitiveArrayCritical (this, val0, val1, val2); }
1510
1511  const jchar * GetStringCritical (jstring val0, jboolean * val1)
1512  { return p->GetStringCritical (this, val0, val1); }
1513
1514  void ReleaseStringCritical (jstring val0, const jchar * val1)
1515  { p->ReleaseStringCritical (this, val0, val1); }
1516
1517  jweak NewWeakGlobalRef (jobject obj0)
1518  { return p->NewWeakGlobalRef (this, obj0); }
1519
1520  void DeleteWeakGlobalRef (jweak val0)
1521  { p->DeleteWeakGlobalRef (this, val0); }
1522
1523  jboolean ExceptionCheck ()
1524  { return p->ExceptionCheck (this); }
1525};
1526#endif /* __cplusplus */
1527
1528/*
1529 * Invocation API.
1530 */
1531
1532struct JNIInvokeInterface
1533{
1534  _Jv_func reserved0;
1535  _Jv_func reserved1;
1536  _Jv_func reserved2;
1537
1538  jint (*DestroyJavaVM)         (JavaVM *);
1539  jint (*AttachCurrentThread)   (JavaVM *, void **, void *);
1540  jint (*DetachCurrentThread)   (JavaVM *);
1541  jint (*GetEnv)                (JavaVM *, void **, jint);
1542};
1543
1544#ifdef __cplusplus
1545
1546class _Jv_JavaVM
1547{
1548public:
1549  const struct JNIInvokeInterface *functions;
1550
1551private:
1552  /* FIXME: other fields.  */
1553
1554public:
1555  jint DestroyJavaVM ()
1556  { return functions->DestroyJavaVM (this); }
1557
1558  jint AttachCurrentThread (void **penv, void *args)
1559  { return functions->AttachCurrentThread (this, penv, args); }
1560
1561  jint DetachCurrentThread ()
1562  { return functions->DetachCurrentThread (this); }
1563
1564  jint GetEnv (void **penv, jint version)
1565  { return functions->GetEnv (this, penv, version); }
1566};
1567#endif /* __cplusplus */
1568
1569typedef struct JavaVMAttachArgs
1570{
1571  jint version;                 /* Must be JNI_VERSION_1_2.  */
1572  char *name;                   /* The name of the thread (or NULL).  */
1573  jobject group;                /* Global ref of a ThreadGroup object
1574                                   (or NULL).  */
1575} JavaVMAttachArgs;
1576
1577typedef struct JavaVMOption
1578{
1579  char *optionString;
1580  void *extraInfo;
1581} JavaVMOption;
1582
1583typedef struct JavaVMInitArgs
1584{
1585  /* Must be JNI_VERSION_1_2.  */
1586  jint version;
1587
1588  /* Number of options.  */
1589  jint nOptions;
1590
1591  /* Options to the VM.  */
1592  JavaVMOption *options;
1593
1594  /* Whether we should ignore unrecognized options.  */
1595  jboolean ignoreUnrecognized;
1596} JavaVMInitArgs;
1597
1598#endif /* __GCJ_JNI_H__ */
Note: See TracBrowser for help on using the repository browser.