source: main/trunk/greenstone2/common-src/indexers/java-windows-include/jni.h@ 32632

Last change on this file since 32632 was 26676, checked in by davidb, 11 years ago

The Java Windows JNI header files. Needed when cross-compiling on a Linux host (using mingw) to produce native Windows JNI dlls

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