* diagnostic.h (set_internal_error_function): Renamed.
[official-gcc.git] / libjava / include / jni.h
blobf25679afa699d9845401d9293cead312c2d72d18
1 /* Copyright (C) 1998, 1999, 2000 Free Software Foundation
3 This file is part of libgcj.
5 This software is copyrighted work licensed under the terms of the
6 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
7 details. */
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. */
14 #ifndef __GCJ_JNI_H__
15 #define __GCJ_JNI_H__
17 #include <stdarg.h>
18 #define _Jv_va_list va_list
20 #ifdef __cplusplus
22 /* This is wrong, because it pollutes the name-space too much! */
23 #include <gcj/javaprims.h>
24 #include <gcj/array.h>
26 typedef struct _Jv_JNIEnv JNIEnv;
27 typedef struct _Jv_JavaVM JavaVM;
29 #define JNI_TRUE true
30 #define JNI_FALSE false
32 #else /* __cplusplus */
34 typedef int jbyte __attribute__((__mode__(__QI__)));
35 typedef int jshort __attribute__((__mode__(__HI__)));
36 typedef int jint __attribute__((__mode__(__SI__)));
37 typedef int jlong __attribute__((__mode__(__DI__)));
38 typedef int jboolean __attribute__((__mode__(__QI__)));
39 typedef unsigned short jchar __attribute__((__mode__(__HI__)));
40 typedef float jfloat;
41 typedef double jdouble;
42 typedef jint jsize;
44 typedef void *jobject;
45 typedef jobject jclass;
46 typedef jobject jstring;
47 typedef jobject jarray;
48 typedef jobject jthrowable;
49 typedef jobject jobjectArray;
50 typedef jobject jbyteArray;
51 typedef jobject jshortArray;
52 typedef jobject jintArray;
53 typedef jobject jlongArray;
54 typedef jobject jbooleanArray;
55 typedef jobject jcharArray;
56 typedef jobject jfloatArray;
57 typedef jobject jdoubleArray;
59 /* Dummy defines. */
60 typedef void *jfieldID;
61 typedef void *jmethodID;
63 typedef const struct JNINativeInterface *JNIEnv;
64 typedef const struct JNIInvokeInterface *JavaVM;
66 #define JNI_TRUE 1
67 #define JNI_FALSE 0
69 #endif /* __cplusplus */
71 /* FIXME: this is wrong. */
72 typedef jobject jweak;
74 /* Version numbers. */
75 #define JNI_VERSION_1_1 0x00010001
76 #define JNI_VERSION_1_2 0x00010002
78 /* Used when releasing array elements. */
79 #define JNI_COMMIT 1
80 #define JNI_ABORT 2
82 /* Error codes */
83 #define JNI_OK 0
84 #define JNI_ERR -1
85 #define JNI_EDETACHED -2
86 #define JNI_EVERSION -3
88 #ifdef __cplusplus
89 extern "C"
91 #endif /* __cplusplus */
93 /* These functions might be defined in libraries which we load; the
94 JNI implementation calls them at the appropriate times. */
95 extern jint JNI_OnLoad (JavaVM *, void *);
96 extern void JNI_OnUnload (JavaVM *, void *);
98 /* These functions are called by user code to start using the
99 invocation API. */
100 extern jint JNI_GetDefaultJavaVMInitArgs (void *);
101 extern jint JNI_CreateJavaVM (JavaVM **, void **, void *);
102 extern jint JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
104 #ifdef __cplusplus
106 #endif /* __cplusplus */
108 typedef union jvalue
110 jboolean z;
111 jbyte b;
112 jchar c;
113 jshort s;
114 jint i;
115 jlong j;
116 jfloat f;
117 jdouble d;
118 jobject l;
119 } jvalue;
121 #ifdef __cplusplus
122 typedef void * (*_Jv_func) (...);
123 #else
124 typedef void * (*_Jv_func) ();
125 #endif
127 /* This structure is used when registering native methods. */
128 typedef struct
130 char *name;
131 char *signature;
132 void *fnPtr; /* Sigh. */
133 } JNINativeMethod;
135 struct JNINativeInterface
137 _Jv_func reserved0;
138 _Jv_func reserved1;
139 _Jv_func reserved2;
140 _Jv_func reserved3;
142 jint (*GetVersion) (JNIEnv *);
143 jclass (*DefineClass) (JNIEnv *, jobject,
144 const jbyte *, jsize);
145 jclass (*FindClass) (JNIEnv *, const char *);
147 jmethodID (*FromReflectedMethod) (JNIEnv *, jobject);
148 jfieldID (*FromReflectedField) (JNIEnv *, jobject);
149 jobject (*ToReflectedMethod) (JNIEnv *, jclass, jmethodID,
150 jboolean);
152 jclass (*GetSuperclass) (JNIEnv *, jclass);
153 jboolean (*IsAssignableFrom) (JNIEnv *, jclass, jclass);
155 jobject (*ToReflectedField) (JNIEnv *, jclass, jfieldID,
156 jboolean);
158 jint (*Throw) (JNIEnv *, jthrowable);
159 jint (*ThrowNew) (JNIEnv *, jclass, const char *);
160 jthrowable (*ExceptionOccurred) (JNIEnv *);
161 void (*ExceptionDescribe) (JNIEnv *);
162 void (*ExceptionClear) (JNIEnv *);
163 void (*FatalError) (JNIEnv *, const char *);
165 jint (*PushLocalFrame) (JNIEnv *, jint);
166 jobject (*PopLocalFrame) (JNIEnv *, jobject);
168 jobject (*NewGlobalRef) (JNIEnv *, jobject);
169 void (*DeleteGlobalRef) (JNIEnv *, jobject);
170 void (*DeleteLocalRef) (JNIEnv *, jobject);;
171 jboolean (*IsSameObject) (JNIEnv *, jobject, jobject);
173 jobject (*NewLocalRef) (JNIEnv *, jobject);
174 jint (*EnsureLocalCapacity) (JNIEnv *, jint);
176 jobject (*AllocObject) (JNIEnv *, jclass);
177 jobject (*NewObject) (JNIEnv *, jclass, jmethodID, ...);
178 jobject (*NewObjectV) (JNIEnv *, jclass, jmethodID,
179 _Jv_va_list);
180 jobject (*NewObjectA) (JNIEnv *, jclass, jmethodID,
181 jvalue *);
183 jclass (*GetObjectClass) (JNIEnv *, jobject);
184 jboolean (*IsInstanceOf) (JNIEnv *, jobject, jclass);
185 jmethodID (*GetMethodID) (JNIEnv *, jclass, const char *,
186 const char *);
188 jobject (*CallObjectMethod) (JNIEnv *, jobject, jmethodID,
189 ...);
190 jobject (*CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
191 _Jv_va_list);
192 jobject (*CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
193 jvalue *);
194 jboolean (*CallBooleanMethod) (JNIEnv *, jobject, jmethodID,
195 ...);
196 jboolean (*CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
197 _Jv_va_list);
198 jboolean (*CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
199 jvalue *);
200 jbyte (*CallByteMethod) (JNIEnv *, jobject, jmethodID,
201 ...);
202 jbyte (*CallByteMethodV) (JNIEnv *, jobject, jmethodID,
203 _Jv_va_list);
204 jbyte (*CallByteMethodA) (JNIEnv *, jobject, jmethodID,
205 jvalue *);
206 jchar (*CallCharMethod) (JNIEnv *, jobject, jmethodID,
207 ...);
208 jchar (*CallCharMethodV) (JNIEnv *, jobject, jmethodID,
209 _Jv_va_list);
210 jchar (*CallCharMethodA) (JNIEnv *, jobject, jmethodID,
211 jvalue *);
212 jshort (*CallShortMethod) (JNIEnv *, jobject, jmethodID,
213 ...);
214 jshort (*CallShortMethodV) (JNIEnv *, jobject, jmethodID,
215 _Jv_va_list);
216 jshort (*CallShortMethodA) (JNIEnv *, jobject, jmethodID,
217 jvalue *);
218 jint (*CallIntMethod) (JNIEnv *, jobject, jmethodID,
219 ...);
220 jint (*CallIntMethodV) (JNIEnv *, jobject, jmethodID,
221 _Jv_va_list);
222 jint (*CallIntMethodA) (JNIEnv *, jobject, jmethodID,
223 jvalue *);
224 jlong (*CallLongMethod) (JNIEnv *, jobject, jmethodID,
225 ...);
226 jlong (*CallLongMethodV) (JNIEnv *, jobject, jmethodID,
227 _Jv_va_list);
228 jlong (*CallLongMethodA) (JNIEnv *, jobject, jmethodID,
229 jvalue *);
230 jfloat (*CallFloatMethod) (JNIEnv *, jobject, jmethodID,
231 ...);
232 jfloat (*CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
233 _Jv_va_list);
234 jfloat (*CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
235 jvalue *);
236 jdouble (*CallDoubleMethod) (JNIEnv *, jobject, jmethodID,
237 ...);
238 jdouble (*CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
239 _Jv_va_list);
240 jdouble (*CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
241 jvalue *);
242 void (*CallVoidMethod) (JNIEnv *, jobject, jmethodID,
243 ...);
244 void (*CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
245 _Jv_va_list);
246 void (*CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
247 jvalue *);
249 jobject (*CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
250 jmethodID, ...);
251 jobject (*CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
252 jmethodID, _Jv_va_list);
253 jobject (*CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
254 jmethodID, jvalue *);
255 jboolean (*CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
256 jmethodID, ...);
257 jboolean (*CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
258 jmethodID, _Jv_va_list);
259 jboolean (*CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
260 jmethodID, jvalue *);
261 jbyte (*CallNonvirtualByteMethod) (JNIEnv *, jobject, jclass,
262 jmethodID, ...);
263 jbyte (*CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
264 jmethodID, _Jv_va_list);
265 jbyte (*CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
266 jmethodID, jvalue *);
267 jchar (*CallNonvirtualCharMethod) (JNIEnv *, jobject, jclass,
268 jmethodID, ...);
269 jchar (*CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
270 jmethodID, _Jv_va_list);
271 jchar (*CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
272 jmethodID, jvalue *);
273 jshort (*CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
274 jmethodID, ...);
275 jshort (*CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
276 jmethodID, _Jv_va_list);
277 jshort (*CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
278 jmethodID, jvalue *);
279 jint (*CallNonvirtualIntMethod) (JNIEnv *, jobject, jclass,
280 jmethodID, ...);
281 jint (*CallNonvirtualIntMethodV) (JNIEnv *, jobject, jclass,
282 jmethodID, _Jv_va_list);
283 jint (*CallNonvirtualIntMethodA) (JNIEnv *, jobject, jclass,
284 jmethodID, jvalue *);
285 jlong (*CallNonvirtualLongMethod) (JNIEnv *, jobject, jclass,
286 jmethodID, ...);
287 jlong (*CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
288 jmethodID, _Jv_va_list);
289 jlong (*CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
290 jmethodID, jvalue *);
291 jfloat (*CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
292 jmethodID, ...);
293 jfloat (*CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
294 jmethodID, _Jv_va_list);
295 jfloat (*CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
296 jmethodID, jvalue *);
297 jdouble (*CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
298 jmethodID, ...);
299 jdouble (*CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
300 jmethodID, _Jv_va_list);
301 jdouble (*CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
302 jmethodID, jvalue *);
303 void (*CallNonvirtualVoidMethod) (JNIEnv *, jobject, jclass,
304 jmethodID, ...);
305 void (*CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
306 jmethodID, _Jv_va_list);
307 void (*CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
308 jmethodID, jvalue *);
310 jfieldID (*GetFieldID) (JNIEnv *, jclass, const char *,
311 const char *);
313 jobject (*GetObjectField) (JNIEnv *, jobject, jfieldID);
314 jboolean (*GetBooleanField) (JNIEnv *, jobject, jfieldID);
315 jbyte (*GetByteField) (JNIEnv *, jobject, jfieldID);
316 jchar (*GetCharField) (JNIEnv *, jobject, jfieldID);
317 jshort (*GetShortField) (JNIEnv *, jobject, jfieldID);
318 jint (*GetIntField) (JNIEnv *, jobject, jfieldID);
319 jlong (*GetLongField) (JNIEnv *, jobject, jfieldID);
320 jfloat (*GetFloatField) (JNIEnv *, jobject, jfieldID);
321 jdouble (*GetDoubleField) (JNIEnv *, jobject, jfieldID);
323 void (*SetObjectField) (JNIEnv *, jobject,
324 jfieldID, jobject);
325 void (*SetBooleanField) (JNIEnv *, jobject,
326 jfieldID, jboolean);
327 void (*SetByteField) (JNIEnv *, jobject,
328 jfieldID, jbyte);
329 void (*SetCharField) (JNIEnv *, jobject,
330 jfieldID, jchar);
331 void (*SetShortField) (JNIEnv *, jobject,
332 jfieldID, jshort);
333 void (*SetIntField) (JNIEnv *, jobject,
334 jfieldID, jint);
335 void (*SetLongField) (JNIEnv *, jobject,
336 jfieldID, jlong);
337 void (*SetFloatField) (JNIEnv *, jobject,
338 jfieldID, jfloat);
339 void (*SetDoubleField) (JNIEnv *, jobject,
340 jfieldID, jdouble);
342 jmethodID (*GetStaticMethodID) (JNIEnv *, jclass, const char *,
343 const char *);
345 jobject (*CallStaticObjectMethod) (JNIEnv *, jclass, jmethodID,
346 ...);
347 jobject (*CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
348 _Jv_va_list);
349 jobject (*CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
350 jvalue *);
351 jboolean (*CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
352 ...);
353 jboolean (*CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
354 _Jv_va_list);
355 jboolean (*CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
356 jvalue *);
357 jbyte (*CallStaticByteMethod) (JNIEnv *, jclass, jmethodID,
358 ...);
359 jbyte (*CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
360 _Jv_va_list);
361 jbyte (*CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
362 jvalue *);
363 jchar (*CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
364 ...);
365 jchar (*CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
366 _Jv_va_list);
367 jchar (*CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
368 jvalue *);
369 jshort (*CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
370 ...);
371 jshort (*CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
372 _Jv_va_list);
373 jshort (*CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
374 jvalue *);
375 jint (*CallStaticIntMethod) (JNIEnv *, jclass, jmethodID,
376 ...);
377 jint (*CallStaticIntMethodV) (JNIEnv *, jclass, jmethodID,
378 _Jv_va_list);
379 jint (*CallStaticIntMethodA) (JNIEnv *, jclass, jmethodID,
380 jvalue *);
381 jlong (*CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
382 ...);
383 jlong (*CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
384 _Jv_va_list);
385 jlong (*CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
386 jvalue *);
387 jfloat (*CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
388 ...);
389 jfloat (*CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
390 _Jv_va_list);
391 jfloat (*CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
392 jvalue *);
393 jdouble (*CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
394 ...);
395 jdouble (*CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
396 _Jv_va_list);
397 jdouble (*CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
398 jvalue *);
399 void (*CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
400 ...);
401 void (*CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
402 _Jv_va_list);
403 void (*CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
404 jvalue *);
406 jfieldID (*GetStaticFieldID) (JNIEnv *, jclass, const char *,
407 const char *);
409 jobject (*GetStaticObjectField) (JNIEnv *, jclass, jfieldID);
410 jboolean (*GetStaticBooleanField) (JNIEnv *, jclass, jfieldID);
411 jbyte (*GetStaticByteField) (JNIEnv *, jclass, jfieldID);
412 jchar (*GetStaticCharField) (JNIEnv *, jclass, jfieldID);
413 jshort (*GetStaticShortField) (JNIEnv *, jclass, jfieldID);
414 jint (*GetStaticIntField) (JNIEnv *, jclass, jfieldID);
415 jlong (*GetStaticLongField) (JNIEnv *, jclass, jfieldID);
416 jfloat (*GetStaticFloatField) (JNIEnv *, jclass, jfieldID);
417 jdouble (*GetStaticDoubleField) (JNIEnv *, jclass, jfieldID);
419 void (*SetStaticObjectField) (JNIEnv *, jclass,
420 jfieldID, jobject);
421 void (*SetStaticBooleanField) (JNIEnv *, jclass,
422 jfieldID, jboolean);
423 void (*SetStaticByteField) (JNIEnv *, jclass,
424 jfieldID, jbyte);
425 void (*SetStaticCharField) (JNIEnv *, jclass,
426 jfieldID, jchar);
427 void (*SetStaticShortField) (JNIEnv *, jclass,
428 jfieldID, jshort);
429 void (*SetStaticIntField) (JNIEnv *, jclass,
430 jfieldID, jint);
431 void (*SetStaticLongField) (JNIEnv *, jclass,
432 jfieldID, jlong);
433 void (*SetStaticFloatField) (JNIEnv *, jclass,
434 jfieldID, jfloat);
435 void (*SetStaticDoubleField) (JNIEnv *, jclass,
436 jfieldID, jdouble);
438 jstring (*NewString) (JNIEnv *, const jchar *, jsize);
439 jint (*GetStringLength) (JNIEnv *, jstring);
440 const jchar * (*GetStringChars) (JNIEnv *, jstring, jboolean *);
441 void (*ReleaseStringChars) (JNIEnv *, jstring, const jchar *);
442 jstring (*NewStringUTF) (JNIEnv *, const char *);
443 jsize (*GetStringUTFLength) (JNIEnv *, jstring);
444 const char * (*GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
445 void (*ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
446 jsize (*GetArrayLength) (JNIEnv *, jarray);
447 jarray (*NewObjectArray) (JNIEnv *, jsize, jclass, jobject);
448 jobject (*GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
449 void (*SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
450 jobject);
452 jbooleanArray (*NewBooleanArray) (JNIEnv *, jsize);
453 jbyteArray (*NewByteArray) (JNIEnv *, jsize);
454 jcharArray (*NewCharArray) (JNIEnv *, jsize);
455 jshortArray (*NewShortArray) (JNIEnv *, jsize);
456 jintArray (*NewIntArray) (JNIEnv *, jsize);
457 jlongArray (*NewLongArray) (JNIEnv *, jsize);
458 jfloatArray (*NewFloatArray) (JNIEnv *, jsize);
459 jdoubleArray (*NewDoubleArray) (JNIEnv *, jsize);
461 jboolean * (*GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
462 jboolean *);
463 jbyte * (*GetByteArrayElements) (JNIEnv *, jbyteArray,
464 jboolean *);
465 jchar * (*GetCharArrayElements) (JNIEnv *, jcharArray,
466 jboolean *);
467 jshort * (*GetShortArrayElements) (JNIEnv *, jshortArray,
468 jboolean *);
469 jint * (*GetIntArrayElements) (JNIEnv *, jintArray,
470 jboolean *);
471 jlong * (*GetLongArrayElements) (JNIEnv *, jlongArray,
472 jboolean *);
473 jfloat * (*GetFloatArrayElements) (JNIEnv *, jfloatArray,
474 jboolean *);
475 jdouble * (*GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
476 jboolean *);
478 void (*ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
479 jboolean *, jint);
480 void (*ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
481 jbyte *, jint);
482 void (*ReleaseCharArrayElements) (JNIEnv *, jcharArray,
483 jchar *, jint);
484 void (*ReleaseShortArrayElements) (JNIEnv *, jshortArray,
485 jshort *, jint);
486 void (*ReleaseIntArrayElements) (JNIEnv *, jintArray,
487 jint *, jint);
488 void (*ReleaseLongArrayElements) (JNIEnv *, jlongArray,
489 jlong *, jint);
490 void (*ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
491 jfloat *, jint);
492 void (*ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
493 jdouble *, jint);
495 void (*GetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
496 jsize, jsize, jboolean *);
497 void (*GetByteArrayRegion) (JNIEnv *, jbooleanArray,
498 jsize, jsize, jboolean *);
499 void (*GetCharArrayRegion) (JNIEnv *, jbooleanArray,
500 jsize, jsize, jboolean *);
501 void (*GetShortArrayRegion) (JNIEnv *, jbooleanArray,
502 jsize, jsize, jboolean *);
503 void (*GetIntArrayRegion) (JNIEnv *, jbooleanArray,
504 jsize, jsize, jboolean *);
505 void (*GetLongArrayRegion) (JNIEnv *, jbooleanArray,
506 jsize, jsize, jboolean *);
507 void (*GetFloatArrayRegion) (JNIEnv *, jbooleanArray,
508 jsize, jsize, jboolean *);
509 void (*GetDoubleArrayRegion) (JNIEnv *, jbooleanArray,
510 jsize, jsize, jboolean *);
512 void (*SetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
513 jsize, jsize, jboolean *);
514 void (*SetByteArrayRegion) (JNIEnv *, jbooleanArray,
515 jsize, jsize, jboolean *);
516 void (*SetCharArrayRegion) (JNIEnv *, jbooleanArray,
517 jsize, jsize, jboolean *);
518 void (*SetShortArrayRegion) (JNIEnv *, jbooleanArray,
519 jsize, jsize, jboolean *);
520 void (*SetIntArrayRegion) (JNIEnv *, jbooleanArray,
521 jsize, jsize, jboolean *);
522 void (*SetLongArrayRegion) (JNIEnv *, jbooleanArray,
523 jsize, jsize, jboolean *);
524 void (*SetFloatArrayRegion) (JNIEnv *, jbooleanArray,
525 jsize, jsize, jboolean *);
526 void (*SetDoubleArrayRegion) (JNIEnv *, jbooleanArray,
527 jsize, jsize, jboolean *);
529 jint (*RegisterNatives) (JNIEnv *, jclass,
530 const JNINativeMethod *, jint);
531 jint (*UnregisterNatives) (JNIEnv *, jclass);
532 jint (*MonitorEnter) (JNIEnv *, jobject);
533 jint (*MonitorExit) (JNIEnv *, jobject);
534 jint (*GetJavaVM) (JNIEnv *, JavaVM **);
536 void (*GetStringRegion) (JNIEnv *, jstring, jsize,
537 jsize, jchar *);
538 void (*GetStringUTFRegion) (JNIEnv *, jstring, jsize,
539 jsize, char *);
541 void * (*GetPrimitiveArrayCritical) (JNIEnv *, jarray, jboolean *);
542 void (*ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *, jint);
544 const jchar * (*GetStringCritical) (JNIEnv *, jstring, jboolean *);
545 void (*ReleaseStringCritical) (JNIEnv *, jstring, const jchar *);
547 jweak (*NewWeakGlobalRef) (JNIEnv *, jobject);
548 void (*DeleteWeakGlobalRef) (JNIEnv *, jweak);
550 jboolean (*ExceptionCheck) (JNIEnv *);
553 #ifdef __cplusplus
555 class _Jv_JNIEnv
557 public:
558 /* The method table. */
559 struct JNINativeInterface *p;
561 /* FIXME: this is really ugly. */
562 #ifndef __GCJ_JNI_IMPL__
563 private:
564 #endif
565 /* The current exception. */
566 jthrowable ex;
568 /* The class of the current native method. */
569 jclass klass;
571 /* The chain of local frames. */
572 struct _Jv_JNI_LocalFrame *locals;
574 public:
575 jint GetVersion ()
576 { return p->GetVersion (this); }
578 jclass DefineClass (jobject obj0, const jbyte * val1, jsize val2)
579 { return p->DefineClass (this, obj0, val1, val2); }
581 jclass FindClass (const char * val0)
582 { return p->FindClass (this, val0); }
584 jmethodID FromReflectedMethod (jobject obj0)
585 { return p->FromReflectedMethod (this, obj0); }
587 jfieldID FromReflectedField (jobject obj0)
588 { return p->FromReflectedField (this, obj0); }
590 jobject ToReflectedMethod (jclass cl0, jmethodID meth1, jboolean val2)
591 { return p->ToReflectedMethod (this, cl0, meth1, val2); }
593 jclass GetSuperclass (jclass cl0)
594 { return p->GetSuperclass (this, cl0); }
596 jboolean IsAssignableFrom (jclass cl0, jclass cl1)
597 { return p->IsAssignableFrom (this, cl0, cl1); }
599 jobject ToReflectedField (jclass cl0, jfieldID fld1, jboolean val2)
600 { return p->ToReflectedField (this, cl0, fld1, val2); }
602 jint Throw (jthrowable val0)
603 { return p->Throw (this, val0); }
605 jint ThrowNew (jclass cl0, const char * val1)
606 { return p->ThrowNew (this, cl0, val1); }
608 jthrowable ExceptionOccurred ()
609 { return p->ExceptionOccurred (this); }
611 void ExceptionDescribe ()
612 { p->ExceptionDescribe (this); }
614 void ExceptionClear ()
615 { p->ExceptionClear (this); }
617 void FatalError (const char * val0)
618 { p->FatalError (this, val0); }
620 jint PushLocalFrame (jint val0)
621 { return p->PushLocalFrame (this, val0); }
623 jobject PopLocalFrame (jobject obj0)
624 { return p->PopLocalFrame (this, obj0); }
626 jobject NewGlobalRef (jobject obj0)
627 { return p->NewGlobalRef (this, obj0); }
629 void DeleteGlobalRef (jobject obj0)
630 { p->DeleteGlobalRef (this, obj0); }
632 void DeleteLocalRef (jobject obj0)
633 { p->DeleteLocalRef (this, obj0); }
635 jboolean IsSameObject (jobject obj0, jobject obj1)
636 { return p->IsSameObject (this, obj0, obj1); }
638 jobject NewLocalRef (jobject obj0)
639 { return p->NewLocalRef (this, obj0); }
641 jint EnsureLocalCapacity (jint val0)
642 { return p->EnsureLocalCapacity (this, val0); }
644 jobject AllocObject (jclass cl0)
645 { return p->AllocObject (this, cl0); }
647 jobject NewObject (jclass cl0, jmethodID meth1, ...)
649 _Jv_va_list args;
650 va_start (args, meth1);
651 jobject result = p->NewObjectV (this, cl0, meth1, args);
652 va_end (args);
653 return result;
656 jobject NewObjectV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
657 { return p->NewObjectV (this, cl0, meth1, val2); }
659 jobject NewObjectA (jclass cl0, jmethodID meth1, jvalue * val2)
660 { return p->NewObjectA (this, cl0, meth1, val2); }
662 jclass GetObjectClass (jobject obj0)
663 { return p->GetObjectClass (this, obj0); }
665 jboolean IsInstanceOf (jobject obj0, jclass cl1)
666 { return p->IsInstanceOf (this, obj0, cl1); }
668 jmethodID GetMethodID (jclass cl0, const char * val1, const char * val2)
669 { return p->GetMethodID (this, cl0, val1, val2); }
671 jobject CallObjectMethod (jobject obj0, jmethodID meth1, ...)
673 _Jv_va_list args;
674 va_start (args, meth1);
675 jobject result = p->CallObjectMethodV (this, obj0, meth1, args);
676 va_end (args);
677 return result;
680 jobject CallObjectMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
681 { return p->CallObjectMethodV (this, obj0, meth1, val2); }
683 jobject CallObjectMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
684 { return p->CallObjectMethodA (this, obj0, meth1, val2); }
686 jboolean CallBooleanMethod (jobject obj0, jmethodID meth1, ...)
688 _Jv_va_list args;
689 va_start (args, meth1);
690 jboolean result = p->CallBooleanMethodV (this, obj0, meth1, args);
691 va_end (args);
692 return result;
695 jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
696 { return p->CallBooleanMethodV (this, obj0, meth1, val2); }
698 jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
699 { return p->CallBooleanMethodA (this, obj0, meth1, val2); }
701 jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
703 _Jv_va_list args;
704 va_start (args, meth1);
705 jbyte result = p->CallByteMethodV (this, obj0, meth1, args);
706 va_end (args);
707 return result;
710 jbyte CallByteMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
711 { return p->CallByteMethodV (this, obj0, meth1, val2); }
713 jbyte CallByteMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
714 { return p->CallByteMethodA (this, obj0, meth1, val2); }
716 jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
718 _Jv_va_list args;
719 va_start (args, meth1);
720 jchar result = p->CallCharMethodV (this, obj0, meth1, args);
721 va_end (args);
722 return result;
725 jchar CallCharMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
726 { return p->CallCharMethodV (this, obj0, meth1, val2); }
728 jchar CallCharMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
729 { return p->CallCharMethodA (this, obj0, meth1, val2); }
731 jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
733 _Jv_va_list args;
734 va_start (args, meth1);
735 jshort result = p->CallShortMethodV (this, obj0, meth1, args);
736 va_end (args);
737 return result;
740 jshort CallShortMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
741 { return p->CallShortMethodV (this, obj0, meth1, val2); }
743 jshort CallShortMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
744 { return p->CallShortMethodA (this, obj0, meth1, val2); }
746 jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
748 _Jv_va_list args;
749 va_start (args, meth1);
750 jint result = p->CallIntMethodV (this, obj0, meth1, args);
751 va_end (args);
752 return result;
755 jint CallIntMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
756 { return p->CallIntMethodV (this, obj0, meth1, val2); }
758 jint CallIntMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
759 { return p->CallIntMethodA (this, obj0, meth1, val2); }
761 jlong CallLongMethod (jobject obj0, jmethodID meth1, ...)
763 _Jv_va_list args;
764 va_start (args, meth1);
765 jlong result = p->CallLongMethodV (this, obj0, meth1, args);
766 va_end (args);
767 return result;
770 jlong CallLongMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
771 { return p->CallLongMethodV (this, obj0, meth1, val2); }
773 jlong CallLongMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
774 { return p->CallLongMethodA (this, obj0, meth1, val2); }
776 jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
778 _Jv_va_list args;
779 va_start (args, meth1);
780 jfloat result = p->CallFloatMethodV (this, obj0, meth1, args);
781 va_end (args);
782 return result;
785 jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
786 { return p->CallFloatMethodV (this, obj0, meth1, val2); }
788 jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
789 { return p->CallFloatMethodA (this, obj0, meth1, val2); }
791 jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
793 _Jv_va_list args;
794 va_start (args, meth1);
795 jdouble result = p->CallDoubleMethodV (this, obj0, meth1, args);
796 va_end (args);
797 return result;
800 jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
801 { return p->CallDoubleMethodV (this, obj0, meth1, val2); }
803 jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
804 { return p->CallDoubleMethodA (this, obj0, meth1, val2); }
806 void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
808 _Jv_va_list args;
809 va_start (args, meth1);
810 p->CallVoidMethodV (this, obj0, meth1, args);
811 va_end (args);
814 void CallVoidMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
815 { p->CallVoidMethodV (this, obj0, meth1, val2); }
817 void CallVoidMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
818 { p->CallVoidMethodA (this, obj0, meth1, val2); }
820 jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
822 _Jv_va_list args;
823 va_start (args, meth2);
824 jobject result = p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, args);
825 va_end (args);
826 return result;
829 jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
830 { return p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
832 jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
833 { return p->CallNonvirtualObjectMethodA (this, obj0, cl1, meth2, val3); }
835 jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
837 _Jv_va_list args;
838 va_start (args, meth2);
839 jboolean result = p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, args);
840 va_end (args);
841 return result;
844 jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
845 { return p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
847 jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
848 { return p->CallNonvirtualBooleanMethodA (this, obj0, cl1, meth2, val3); }
850 jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
852 _Jv_va_list args;
853 va_start (args, meth2);
854 jbyte result = p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, args);
855 va_end (args);
856 return result;
859 jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
860 { return p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
862 jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
863 { return p->CallNonvirtualByteMethodA (this, obj0, cl1, meth2, val3); }
865 jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
867 _Jv_va_list args;
868 va_start (args, meth2);
869 jchar result = p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, args);
870 va_end (args);
871 return result;
874 jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
875 { return p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
877 jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
878 { return p->CallNonvirtualCharMethodA (this, obj0, cl1, meth2, val3); }
880 jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
882 _Jv_va_list args;
883 va_start (args, meth2);
884 jshort result = p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, args);
885 va_end (args);
886 return result;
889 jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
890 { return p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
892 jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
893 { return p->CallNonvirtualShortMethodA (this, obj0, cl1, meth2, val3); }
895 jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
897 _Jv_va_list args;
898 va_start (args, meth2);
899 jint result = p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, args);
900 va_end (args);
901 return result;
904 jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
905 { return p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
907 jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
908 { return p->CallNonvirtualIntMethodA (this, obj0, cl1, meth2, val3); }
910 jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
912 _Jv_va_list args;
913 va_start (args, meth2);
914 jlong result = p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, args);
915 va_end (args);
916 return result;
919 jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
920 { return p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
922 jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
923 { return p->CallNonvirtualLongMethodA (this, obj0, cl1, meth2, val3); }
925 jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
927 _Jv_va_list args;
928 va_start (args, meth2);
929 jfloat result = p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, args);
930 va_end (args);
931 return result;
934 jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
935 { return p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
937 jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
938 { return p->CallNonvirtualFloatMethodA (this, obj0, cl1, meth2, val3); }
940 jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
942 _Jv_va_list args;
943 va_start (args, meth2);
944 jdouble result = p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, args);
945 va_end (args);
946 return result;
949 jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
950 { return p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
952 jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
953 { return p->CallNonvirtualDoubleMethodA (this, obj0, cl1, meth2, val3); }
955 void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
957 _Jv_va_list args;
958 va_start (args, meth2);
959 p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, args);
960 va_end (args);
963 void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2, _Jv_va_list val3)
964 { p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
966 void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
967 { p->CallNonvirtualVoidMethodA (this, obj0, cl1, meth2, val3); }
969 jfieldID GetFieldID (jclass cl0, const char * val1, const char * val2)
970 { return p->GetFieldID (this, cl0, val1, val2); }
972 jobject GetObjectField (jobject obj0, jfieldID fld1)
973 { return p->GetObjectField (this, obj0, fld1); }
975 jboolean GetBooleanField (jobject obj0, jfieldID fld1)
976 { return p->GetBooleanField (this, obj0, fld1); }
978 jbyte GetByteField (jobject obj0, jfieldID fld1)
979 { return p->GetByteField (this, obj0, fld1); }
981 jchar GetCharField (jobject obj0, jfieldID fld1)
982 { return p->GetCharField (this, obj0, fld1); }
984 jshort GetShortField (jobject obj0, jfieldID fld1)
985 { return p->GetShortField (this, obj0, fld1); }
987 jint GetIntField (jobject obj0, jfieldID fld1)
988 { return p->GetIntField (this, obj0, fld1); }
990 jlong GetLongField (jobject obj0, jfieldID fld1)
991 { return p->GetLongField (this, obj0, fld1); }
993 jfloat GetFloatField (jobject obj0, jfieldID fld1)
994 { return p->GetFloatField (this, obj0, fld1); }
996 jdouble GetDoubleField (jobject obj0, jfieldID fld1)
997 { return p->GetDoubleField (this, obj0, fld1); }
999 void SetObjectField (jobject obj0, jfieldID fld1, jobject obj2)
1000 { p->SetObjectField (this, obj0, fld1, obj2); }
1002 void SetBooleanField (jobject obj0, jfieldID fld1, jboolean val2)
1003 { p->SetBooleanField (this, obj0, fld1, val2); }
1005 void SetByteField (jobject obj0, jfieldID fld1, jbyte val2)
1006 { p->SetByteField (this, obj0, fld1, val2); }
1008 void SetCharField (jobject obj0, jfieldID fld1, jchar val2)
1009 { p->SetCharField (this, obj0, fld1, val2); }
1011 void SetShortField (jobject obj0, jfieldID fld1, jshort val2)
1012 { p->SetShortField (this, obj0, fld1, val2); }
1014 void SetIntField (jobject obj0, jfieldID fld1, jint val2)
1015 { p->SetIntField (this, obj0, fld1, val2); }
1017 void SetLongField (jobject obj0, jfieldID fld1, jlong val2)
1018 { p->SetLongField (this, obj0, fld1, val2); }
1020 void SetFloatField (jobject obj0, jfieldID fld1, jfloat val2)
1021 { p->SetFloatField (this, obj0, fld1, val2); }
1023 void SetDoubleField (jobject obj0, jfieldID fld1, jdouble val2)
1024 { p->SetDoubleField (this, obj0, fld1, val2); }
1026 jmethodID GetStaticMethodID (jclass cl0, const char * val1, const char * val2)
1027 { return p->GetStaticMethodID (this, cl0, val1, val2); }
1029 jobject CallStaticObjectMethod (jclass cl0, jmethodID meth1, ...)
1031 _Jv_va_list args;
1032 va_start (args, meth1);
1033 jobject result = p->CallStaticObjectMethodV (this, cl0, meth1, args);
1034 va_end (args);
1035 return result;
1038 jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1039 { return p->CallStaticObjectMethodV (this, cl0, meth1, val2); }
1041 jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1042 { return p->CallStaticObjectMethodA (this, cl0, meth1, val2); }
1044 jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
1046 _Jv_va_list args;
1047 va_start (args, meth1);
1048 jboolean result = p->CallStaticBooleanMethodV (this, cl0, meth1, args);
1049 va_end (args);
1050 return result;
1053 jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1054 { return p->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
1056 jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1057 { return p->CallStaticBooleanMethodA (this, cl0, meth1, val2); }
1059 jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
1061 _Jv_va_list args;
1062 va_start (args, meth1);
1063 jbyte result = p->CallStaticByteMethodV (this, cl0, meth1, args);
1064 va_end (args);
1065 return result;
1068 jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1069 { return p->CallStaticByteMethodV (this, cl0, meth1, val2); }
1071 jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1072 { return p->CallStaticByteMethodA (this, cl0, meth1, val2); }
1074 jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
1076 _Jv_va_list args;
1077 va_start (args, meth1);
1078 jchar result = p->CallStaticCharMethodV (this, cl0, meth1, args);
1079 va_end (args);
1080 return result;
1083 jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1084 { return p->CallStaticCharMethodV (this, cl0, meth1, val2); }
1086 jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1087 { return p->CallStaticCharMethodA (this, cl0, meth1, val2); }
1089 jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
1091 _Jv_va_list args;
1092 va_start (args, meth1);
1093 jshort result = p->CallStaticShortMethodV (this, cl0, meth1, args);
1094 va_end (args);
1095 return result;
1098 jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1099 { return p->CallStaticShortMethodV (this, cl0, meth1, val2); }
1101 jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1102 { return p->CallStaticShortMethodA (this, cl0, meth1, val2); }
1104 jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
1106 _Jv_va_list args;
1107 va_start (args, meth1);
1108 jint result = p->CallStaticIntMethodV (this, cl0, meth1, args);
1109 va_end (args);
1110 return result;
1113 jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1114 { return p->CallStaticIntMethodV (this, cl0, meth1, val2); }
1116 jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1117 { return p->CallStaticIntMethodA (this, cl0, meth1, val2); }
1119 jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
1121 _Jv_va_list args;
1122 va_start (args, meth1);
1123 jlong result = p->CallStaticLongMethodV (this, cl0, meth1, args);
1124 va_end (args);
1125 return result;
1128 jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1129 { return p->CallStaticLongMethodV (this, cl0, meth1, val2); }
1131 jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1132 { return p->CallStaticLongMethodA (this, cl0, meth1, val2); }
1134 jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
1136 _Jv_va_list args;
1137 va_start (args, meth1);
1138 jfloat result = p->CallStaticFloatMethodV (this, cl0, meth1, args);
1139 va_end (args);
1140 return result;
1143 jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1144 { return p->CallStaticFloatMethodV (this, cl0, meth1, val2); }
1146 jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1147 { return p->CallStaticFloatMethodA (this, cl0, meth1, val2); }
1149 jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
1151 _Jv_va_list args;
1152 va_start (args, meth1);
1153 jdouble result = p->CallStaticDoubleMethodV (this, cl0, meth1, args);
1154 va_end (args);
1155 return result;
1158 jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1159 { return p->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
1161 jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1162 { return p->CallStaticDoubleMethodA (this, cl0, meth1, val2); }
1164 void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
1166 _Jv_va_list args;
1167 va_start (args, meth1);
1168 p->CallStaticVoidMethodV (this, cl0, meth1, args);
1169 va_end (args);
1172 void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
1173 { p->CallStaticVoidMethodV (this, cl0, meth1, val2); }
1175 void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
1176 { p->CallStaticVoidMethodA (this, cl0, meth1, val2); }
1178 jfieldID GetStaticFieldID (jclass cl0, const char * val1, const char * val2)
1179 { return p->GetStaticFieldID (this, cl0, val1, val2); }
1181 jobject GetStaticObjectField (jclass cl0, jfieldID fld1)
1182 { return p->GetStaticObjectField (this, cl0, fld1); }
1184 jboolean GetStaticBooleanField (jclass cl0, jfieldID fld1)
1185 { return p->GetStaticBooleanField (this, cl0, fld1); }
1187 jbyte GetStaticByteField (jclass cl0, jfieldID fld1)
1188 { return p->GetStaticByteField (this, cl0, fld1); }
1190 jchar GetStaticCharField (jclass cl0, jfieldID fld1)
1191 { return p->GetStaticCharField (this, cl0, fld1); }
1193 jshort GetStaticShortField (jclass cl0, jfieldID fld1)
1194 { return p->GetStaticShortField (this, cl0, fld1); }
1196 jint GetStaticIntField (jclass cl0, jfieldID fld1)
1197 { return p->GetStaticIntField (this, cl0, fld1); }
1199 jlong GetStaticLongField (jclass cl0, jfieldID fld1)
1200 { return p->GetStaticLongField (this, cl0, fld1); }
1202 jfloat GetStaticFloatField (jclass cl0, jfieldID fld1)
1203 { return p->GetStaticFloatField (this, cl0, fld1); }
1205 jdouble GetStaticDoubleField (jclass cl0, jfieldID fld1)
1206 { return p->GetStaticDoubleField (this, cl0, fld1); }
1208 void SetStaticObjectField (jclass cl0, jfieldID fld1, jobject obj2)
1209 { p->SetStaticObjectField (this, cl0, fld1, obj2); }
1211 void SetStaticBooleanField (jclass cl0, jfieldID fld1, jboolean val2)
1212 { p->SetStaticBooleanField (this, cl0, fld1, val2); }
1214 void SetStaticByteField (jclass cl0, jfieldID fld1, jbyte val2)
1215 { p->SetStaticByteField (this, cl0, fld1, val2); }
1217 void SetStaticCharField (jclass cl0, jfieldID fld1, jchar val2)
1218 { p->SetStaticCharField (this, cl0, fld1, val2); }
1220 void SetStaticShortField (jclass cl0, jfieldID fld1, jshort val2)
1221 { p->SetStaticShortField (this, cl0, fld1, val2); }
1223 void SetStaticIntField (jclass cl0, jfieldID fld1, jint val2)
1224 { p->SetStaticIntField (this, cl0, fld1, val2); }
1226 void SetStaticLongField (jclass cl0, jfieldID fld1, jlong val2)
1227 { p->SetStaticLongField (this, cl0, fld1, val2); }
1229 void SetStaticFloatField (jclass cl0, jfieldID fld1, jfloat val2)
1230 { p->SetStaticFloatField (this, cl0, fld1, val2); }
1232 void SetStaticDoubleField (jclass cl0, jfieldID fld1, jdouble val2)
1233 { p->SetStaticDoubleField (this, cl0, fld1, val2); }
1235 jstring NewString (const jchar * val0, jsize val1)
1236 { return p->NewString (this, val0, val1); }
1238 jint GetStringLength (jstring val0)
1239 { return p->GetStringLength (this, val0); }
1241 const jchar * GetStringChars (jstring val0, jboolean * val1)
1242 { return p->GetStringChars (this, val0, val1); }
1244 void ReleaseStringChars (jstring val0, const jchar * val1)
1245 { p->ReleaseStringChars (this, val0, val1); }
1247 jstring NewStringUTF (const char * val0)
1248 { return p->NewStringUTF (this, val0); }
1250 jsize GetStringUTFLength (jstring val0)
1251 { return p->GetStringUTFLength (this, val0); }
1253 const char * GetStringUTFChars (jstring val0, jboolean * val1)
1254 { return p->GetStringUTFChars (this, val0, val1); }
1256 void ReleaseStringUTFChars (jstring val0, const char * val1)
1257 { p->ReleaseStringUTFChars (this, val0, val1); }
1259 jsize GetArrayLength (jarray val0)
1260 { return p->GetArrayLength (this, val0); }
1262 jarray NewObjectArray (jsize val0, jclass cl1, jobject obj2)
1263 { return p->NewObjectArray (this, val0, cl1, obj2); }
1265 jobject GetObjectArrayElement (jobjectArray val0, jsize val1)
1266 { return p->GetObjectArrayElement (this, val0, val1); }
1268 void SetObjectArrayElement (jobjectArray val0, jsize val1, jobject obj2)
1269 { p->SetObjectArrayElement (this, val0, val1, obj2); }
1271 jbooleanArray NewBooleanArray (jsize val0)
1272 { return p->NewBooleanArray (this, val0); }
1274 jbyteArray NewByteArray (jsize val0)
1275 { return p->NewByteArray (this, val0); }
1277 jcharArray NewCharArray (jsize val0)
1278 { return p->NewCharArray (this, val0); }
1280 jshortArray NewShortArray (jsize val0)
1281 { return p->NewShortArray (this, val0); }
1283 jintArray NewIntArray (jsize val0)
1284 { return p->NewIntArray (this, val0); }
1286 jlongArray NewLongArray (jsize val0)
1287 { return p->NewLongArray (this, val0); }
1289 jfloatArray NewFloatArray (jsize val0)
1290 { return p->NewFloatArray (this, val0); }
1292 jdoubleArray NewDoubleArray (jsize val0)
1293 { return p->NewDoubleArray (this, val0); }
1295 jboolean * GetBooleanArrayElements (jbooleanArray val0, jboolean * val1)
1296 { return p->GetBooleanArrayElements (this, val0, val1); }
1298 jbyte * GetByteArrayElements (jbyteArray val0, jboolean * val1)
1299 { return p->GetByteArrayElements (this, val0, val1); }
1301 jchar * GetCharArrayElements (jcharArray val0, jboolean * val1)
1302 { return p->GetCharArrayElements (this, val0, val1); }
1304 jshort * GetShortArrayElements (jshortArray val0, jboolean * val1)
1305 { return p->GetShortArrayElements (this, val0, val1); }
1307 jint * GetIntArrayElements (jintArray val0, jboolean * val1)
1308 { return p->GetIntArrayElements (this, val0, val1); }
1310 jlong * GetLongArrayElements (jlongArray val0, jboolean * val1)
1311 { return p->GetLongArrayElements (this, val0, val1); }
1313 jfloat * GetFloatArrayElements (jfloatArray val0, jboolean * val1)
1314 { return p->GetFloatArrayElements (this, val0, val1); }
1316 jdouble * GetDoubleArrayElements (jdoubleArray val0, jboolean * val1)
1317 { return p->GetDoubleArrayElements (this, val0, val1); }
1319 void ReleaseBooleanArrayElements (jbooleanArray val0, jboolean * val1, jint val2)
1320 { p->ReleaseBooleanArrayElements (this, val0, val1, val2); }
1322 void ReleaseByteArrayElements (jbyteArray val0, jbyte * val1, jint val2)
1323 { p->ReleaseByteArrayElements (this, val0, val1, val2); }
1325 void ReleaseCharArrayElements (jcharArray val0, jchar * val1, jint val2)
1326 { p->ReleaseCharArrayElements (this, val0, val1, val2); }
1328 void ReleaseShortArrayElements (jshortArray val0, jshort * val1, jint val2)
1329 { p->ReleaseShortArrayElements (this, val0, val1, val2); }
1331 void ReleaseIntArrayElements (jintArray val0, jint * val1, jint val2)
1332 { p->ReleaseIntArrayElements (this, val0, val1, val2); }
1334 void ReleaseLongArrayElements (jlongArray val0, jlong * val1, jint val2)
1335 { p->ReleaseLongArrayElements (this, val0, val1, val2); }
1337 void ReleaseFloatArrayElements (jfloatArray val0, jfloat * val1, jint val2)
1338 { p->ReleaseFloatArrayElements (this, val0, val1, val2); }
1340 void ReleaseDoubleArrayElements (jdoubleArray val0, jdouble * val1, jint val2)
1341 { p->ReleaseDoubleArrayElements (this, val0, val1, val2); }
1343 void GetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1344 { p->GetBooleanArrayRegion (this, val0, val1, val2, val3); }
1346 void GetByteArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1347 { p->GetByteArrayRegion (this, val0, val1, val2, val3); }
1349 void GetCharArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1350 { p->GetCharArrayRegion (this, val0, val1, val2, val3); }
1352 void GetShortArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1353 { p->GetShortArrayRegion (this, val0, val1, val2, val3); }
1355 void GetIntArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1356 { p->GetIntArrayRegion (this, val0, val1, val2, val3); }
1358 void GetLongArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1359 { p->GetLongArrayRegion (this, val0, val1, val2, val3); }
1361 void GetFloatArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1362 { p->GetFloatArrayRegion (this, val0, val1, val2, val3); }
1364 void GetDoubleArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1365 { p->GetDoubleArrayRegion (this, val0, val1, val2, val3); }
1367 void SetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1368 { p->SetBooleanArrayRegion (this, val0, val1, val2, val3); }
1370 void SetByteArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1371 { p->SetByteArrayRegion (this, val0, val1, val2, val3); }
1373 void SetCharArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1374 { p->SetCharArrayRegion (this, val0, val1, val2, val3); }
1376 void SetShortArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1377 { p->SetShortArrayRegion (this, val0, val1, val2, val3); }
1379 void SetIntArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1380 { p->SetIntArrayRegion (this, val0, val1, val2, val3); }
1382 void SetLongArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1383 { p->SetLongArrayRegion (this, val0, val1, val2, val3); }
1385 void SetFloatArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1386 { p->SetFloatArrayRegion (this, val0, val1, val2, val3); }
1388 void SetDoubleArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
1389 { p->SetDoubleArrayRegion (this, val0, val1, val2, val3); }
1391 jint RegisterNatives (jclass cl0, const JNINativeMethod * val1, jint val2)
1392 { return p->RegisterNatives (this, cl0, val1, val2); }
1394 jint UnregisterNatives (jclass cl0)
1395 { return p->UnregisterNatives (this, cl0); }
1397 jint MonitorEnter (jobject obj0)
1398 { return p->MonitorEnter (this, obj0); }
1400 jint MonitorExit (jobject obj0)
1401 { return p->MonitorExit (this, obj0); }
1403 jint GetJavaVM (JavaVM ** val0)
1404 { return p->GetJavaVM (this, val0); }
1406 void GetStringRegion (jstring val0, jsize val1, jsize val2, jchar * val3)
1407 { p->GetStringRegion (this, val0, val1, val2, val3); }
1409 void GetStringUTFRegion (jstring val0, jsize val1, jsize val2, char * val3)
1410 { p->GetStringUTFRegion (this, val0, val1, val2, val3); }
1412 void * GetPrimitiveArrayCritical (jarray val0, jboolean * val1)
1413 { return p->GetPrimitiveArrayCritical (this, val0, val1); }
1415 void ReleasePrimitiveArrayCritical (jarray val0, void * val1, jint val2)
1416 { p->ReleasePrimitiveArrayCritical (this, val0, val1, val2); }
1418 const jchar * GetStringCritical (jstring val0, jboolean * val1)
1419 { return p->GetStringCritical (this, val0, val1); }
1421 void ReleaseStringCritical (jstring val0, const jchar * val1)
1422 { p->ReleaseStringCritical (this, val0, val1); }
1424 jweak NewWeakGlobalRef (jobject obj0)
1425 { return p->NewWeakGlobalRef (this, obj0); }
1427 void DeleteWeakGlobalRef (jweak val0)
1428 { p->DeleteWeakGlobalRef (this, val0); }
1430 jboolean ExceptionCheck ()
1431 { return p->ExceptionCheck (this); }
1433 #endif /* __cplusplus */
1436 * Invocation API.
1439 struct JNIInvokeInterface
1441 _Jv_func reserved0;
1442 _Jv_func reserved1;
1443 _Jv_func reserved2;
1445 jint (*DestroyJavaVM) (JavaVM *);
1446 jint (*AttachCurrentThread) (JavaVM *, void **, void *);
1447 jint (*DetachCurrentThread) (JavaVM *);
1448 jint (*GetEnv) (JavaVM *, void **, jint);
1451 #ifdef __cplusplus
1453 class _Jv_JavaVM
1455 public:
1456 const struct JNIInvokeInterface *functions;
1458 private:
1459 /* FIXME: other fields. */
1461 public:
1462 jint DestroyJavaVM ()
1463 { return functions->DestroyJavaVM (this); }
1465 jint AttachCurrentThread (void **penv, void *args)
1466 { return functions->AttachCurrentThread (this, penv, args); }
1468 jint DetachCurrentThread ()
1469 { return functions->DetachCurrentThread (this); }
1471 jint GetEnv (void **penv, jint version)
1472 { return functions->GetEnv (this, penv, version); }
1474 #endif /* __cplusplus */
1476 typedef struct JavaVMAttachArgs
1478 jint version; /* Must be JNI_VERSION_1_2. */
1479 char *name; /* The name of the thread (or NULL). */
1480 jobject group; /* Global ref of a ThreadGroup object
1481 (or NULL). */
1482 } JavaVMAttachArgs;
1484 typedef struct JavaVMOption
1486 char *optionString;
1487 void *extraInfo;
1488 } JavaVMOption;
1490 typedef struct JavaVMInitArgs
1492 /* Must be JNI_VERSION_1_2. */
1493 jint version;
1495 /* Number of options. */
1496 jint nOptions;
1498 /* Options to the VM. */
1499 JavaVMOption *options;
1501 /* Whether we should ignore unrecognized options. */
1502 jboolean ignoreUnrecognized;
1503 } JavaVMInitArgs;
1505 #endif /* __GCJ_JNI_H__ */