1 /* jni.h - JNI types and data structures
3 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
4 R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser,
5 M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck,
6 P. Tomsich, J. Wenninger
8 This file is part of CACAO.
10 This program is free software; you can redistribute it and/or
11 modify it under the terms of the GNU General Public License as
12 published by the Free Software Foundation; either version 2, or (at
13 your option) any later version.
15 This program is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25 Contact: cacao@complang.tuwien.ac.at
29 $Id: jni.h 557 2003-11-02 22:51:59Z twisti $
44 #define jobject java_objectheader*
45 #define jclass struct classinfo*
46 #define jthrowable jobject
48 #define jarray java_arrayheader*
49 #define jlongArray java_longarray*
50 #define jbooleanArray java_booleanarray*
51 #define jintArray java_intarray*
52 #define jcharArray java_chararray*
53 #define jbyteArray java_bytearray*
54 #define jshortArray java_shortarray*
55 #define jdoubleArray java_doublearray*
56 #define jfloatArray java_floatarray*
57 #define jobjectArray java_objectarray*
58 #define jstring jobject
66 #define jdouble double
68 #define jfieldID fieldinfo*
69 #define jmethodID methodinfo*
71 struct _JavaVM; /* opaque structure */
72 typedef struct _JavaVM* JavaVM;
74 typedef union jvalue {
91 /* native method name, signature and function pointer for use in RegisterNatives */
101 JNI function table, contains functions for the following usages:
106 Global and Local References
108 Accessing Fields of Objects
109 Calling Instance Methods
110 Accessing Static Fields
111 Calling Static Methods
114 Registering Native Methods
119 typedef struct JNI_Table JNIEnv;
123 /* reserverd for future JNI-functions */
129 /* version information */
131 jint (*GetVersion) (JNIEnv*);
133 /* class operations */
135 jclass (*DefineClass) (JNIEnv*, const char *name, jobject loader, const jbyte *buf, jsize len);
136 jclass (*FindClass) (JNIEnv*, const char *name);
138 jmethodID (*FromReflectedMethod) (JNIEnv*, jobject method);
139 jfieldID (*FromReflectedField) (JNIEnv*, jobject field);
141 jobject (*ToReflectedMethod) (JNIEnv*, jclass cls, jmethodID methodID, jboolean isStatic);
143 jclass (*GetSuperclass) (JNIEnv*, jclass sub);
144 jboolean (*IsAssignableForm) (JNIEnv*, jclass sub, jclass sup);
146 jobject (*ToReflectedField) (JNIEnv*, jclass cls, jfieldID fieldID, jboolean isStatic);
150 jint (*Throw) (JNIEnv*, jthrowable obj);
151 jint (*ThrowNew) (JNIEnv*, jclass clazz, const char *msg);
152 jthrowable (*ExceptionOccurred) (JNIEnv*);
153 void (*ExceptionDescribe) (JNIEnv*);
154 void (*ExceptionClear) (JNIEnv*);
155 void (*FatalError) (JNIEnv*, const char *msg);
157 /* global and local references */
159 jint (*PushLocalFrame) (JNIEnv*, jint capacity);
160 jobject (*PopLocalFrame) (JNIEnv*, jobject result);
162 jobject (*NewGlobalRef) (JNIEnv*, jobject lobj);
163 void (*DeleteGlobalRef) (JNIEnv*, jobject gref);
164 void (*DeleteLocalRef) (JNIEnv*, jobject obj);
165 jboolean (*IsSameObject) (JNIEnv*, jobject obj1, jobject obj2);
166 jobject (*NewLocalRef) (JNIEnv*, jobject ref);
167 jint (*EnsureLocalCapacity) (JNIEnv*, jint capacity);
169 /* object operations */
171 jobject (*AllocObject) (JNIEnv*, jclass clazz);
172 jobject (*NewObject) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
173 jobject (*NewObjectV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
174 jobject (*NewObjectA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
176 jclass (*GetObjectClass) (JNIEnv*, jobject obj);
177 jboolean (*IsInstanceOf) (JNIEnv*, jobject obj, jclass clazz);
179 jmethodID (*GetMethodID) (JNIEnv*, jclass clazz, const char *name, const char *sig);
181 /* calling instance methods */
183 jobject (*CallObjectMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
184 jobject (*CallObjectMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
185 jobject (*CallObjectMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue * args);
187 jboolean (*CallBooleanMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
188 jboolean (*CallBooleanMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
189 jboolean (*CallBooleanMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue * args);
191 jbyte (*CallByteMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
192 jbyte (*CallByteMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
193 jbyte (*CallByteMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
195 jchar (*CallCharMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
196 jchar (*CallCharMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
197 jchar (*CallCharMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
199 jshort (*CallShortMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
200 jshort (*CallShortMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
201 jshort (*CallShortMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
203 jint (*CallIntMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
204 jint (*CallIntMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
205 jint (*CallIntMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
207 jlong (*CallLongMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
208 jlong (*CallLongMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
209 jlong (*CallLongMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
211 jfloat (*CallFloatMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
212 jfloat (*CallFloatMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
213 jfloat (*CallFloatMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
215 jdouble (*CallDoubleMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
216 jdouble (*CallDoubleMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
217 jdouble (*CallDoubleMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue *args);
219 void (*CallVoidMethod) (JNIEnv*, jobject obj, jmethodID methodID, ...);
220 void (*CallVoidMethodV) (JNIEnv*, jobject obj, jmethodID methodID, va_list args);
221 void (*CallVoidMethodA) (JNIEnv*, jobject obj, jmethodID methodID, jvalue * args);
223 jobject (*CallNonvirtualObjectMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
224 jobject (*CallNonvirtualObjectMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
225 jobject (*CallNonvirtualObjectMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue * args);
227 jboolean (*CallNonvirtualBooleanMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
228 jboolean (*CallNonvirtualBooleanMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
229 jboolean (*CallNonvirtualBooleanMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue * args);
231 jbyte (*CallNonvirtualByteMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
232 jbyte (*CallNonvirtualByteMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
233 jbyte (*CallNonvirtualByteMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
235 jchar (*CallNonvirtualCharMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
236 jchar (*CallNonvirtualCharMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
237 jchar (*CallNonvirtualCharMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
239 jshort (*CallNonvirtualShortMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
240 jshort (*CallNonvirtualShortMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
241 jshort (*CallNonvirtualShortMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
243 jint (*CallNonvirtualIntMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
244 jint (*CallNonvirtualIntMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
245 jint (*CallNonvirtualIntMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
247 jlong (*CallNonvirtualLongMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
248 jlong (*CallNonvirtualLongMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
249 jlong (*CallNonvirtualLongMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
251 jfloat (*CallNonvirtualFloatMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
252 jfloat (*CallNonvirtualFloatMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
253 jfloat (*CallNonvirtualFloatMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
255 jdouble (*CallNonvirtualDoubleMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
256 jdouble (*CallNonvirtualDoubleMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
257 jdouble (*CallNonvirtualDoubleMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue *args);
259 void (*CallNonvirtualVoidMethod) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, ...);
260 void (*CallNonvirtualVoidMethodV) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, va_list args);
261 void (*CallNonvirtualVoidMethodA) (JNIEnv*, jobject obj, jclass clazz, jmethodID methodID, jvalue * args);
263 /* accessing fields */
265 jfieldID (*GetFieldID) (JNIEnv*, jclass clazz, const char *name, const char *sig);
267 jobject (*GetObjectField) (JNIEnv*, jobject obj, jfieldID fieldID);
268 jboolean (*GetBooleanField) (JNIEnv*, jobject obj, jfieldID fieldID);
269 jbyte (*GetByteField) (JNIEnv*, jobject obj, jfieldID fieldID);
270 jchar (*GetCharField) (JNIEnv*, jobject obj, jfieldID fieldID);
271 jshort (*GetShortField) (JNIEnv*, jobject obj, jfieldID fieldID);
272 jint (*GetIntField) (JNIEnv*, jobject obj, jfieldID fieldID);
273 jlong (*GetLongField) (JNIEnv*, jobject obj, jfieldID fieldID);
274 jfloat (*GetFloatField) (JNIEnv*, jobject obj, jfieldID fieldID);
275 jdouble (*GetDoubleField) (JNIEnv*, jobject obj, jfieldID fieldID);
277 void (*SetObjectField) (JNIEnv*, jobject obj, jfieldID fieldID, jobject val);
278 void (*SetBooleanField) (JNIEnv*, jobject obj, jfieldID fieldID, jboolean val);
279 void (*SetByteField) (JNIEnv*, jobject obj, jfieldID fieldID, jbyte val);
280 void (*SetCharField) (JNIEnv*, jobject obj, jfieldID fieldID, jchar val);
281 void (*SetShortField) (JNIEnv*, jobject obj, jfieldID fieldID, jshort val);
282 void (*SetIntField) (JNIEnv*, jobject obj, jfieldID fieldID, jint val);
283 void (*SetLongField) (JNIEnv*, jobject obj, jfieldID fieldID, jlong val);
284 void (*SetFloatField) (JNIEnv*, jobject obj, jfieldID fieldID, jfloat val);
285 void (*SetDoubleField) (JNIEnv*, jobject obj, jfieldID fieldID, jdouble val);
287 /* calling static methods */
289 jmethodID (*GetStaticMethodID) (JNIEnv*, jclass clazz, const char *name, const char *sig);
291 jobject (*CallStaticObjectMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
292 jobject (*CallStaticObjectMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
293 jobject (*CallStaticObjectMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
295 jboolean (*CallStaticBooleanMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
296 jboolean (*CallStaticBooleanMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
297 jboolean (*CallStaticBooleanMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
299 jbyte (*CallStaticByteMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
300 jbyte (*CallStaticByteMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
301 jbyte (*CallStaticByteMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
303 jchar (*CallStaticCharMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
304 jchar (*CallStaticCharMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
305 jchar (*CallStaticCharMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
307 jshort (*CallStaticShortMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
308 jshort (*CallStaticShortMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
309 jshort (*CallStaticShortMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
311 jint (*CallStaticIntMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
312 jint (*CallStaticIntMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
313 jint (*CallStaticIntMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
315 jlong (*CallStaticLongMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
316 jlong (*CallStaticLongMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
317 jlong (*CallStaticLongMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
319 jfloat (*CallStaticFloatMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
320 jfloat (*CallStaticFloatMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
321 jfloat (*CallStaticFloatMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
323 jdouble (*CallStaticDoubleMethod) (JNIEnv*, jclass clazz, jmethodID methodID, ...);
324 jdouble (*CallStaticDoubleMethodV) (JNIEnv*, jclass clazz, jmethodID methodID, va_list args);
325 jdouble (*CallStaticDoubleMethodA) (JNIEnv*, jclass clazz, jmethodID methodID, jvalue *args);
327 void (*CallStaticVoidMethod) (JNIEnv*, jclass cls, jmethodID methodID, ...);
328 void (*CallStaticVoidMethodV) (JNIEnv*, jclass cls, jmethodID methodID, va_list args);
329 void (*CallStaticVoidMethodA) (JNIEnv*, jclass cls, jmethodID methodID, jvalue * args);
331 /* accessing static fields */
333 jfieldID (*GetStaticFieldID) (JNIEnv*, jclass clazz, const char *name, const char *sig);
334 jobject (*GetStaticObjectField) (JNIEnv*, jclass clazz, jfieldID fieldID);
335 jboolean (*GetStaticBooleanField) (JNIEnv*, jclass clazz, jfieldID fieldID);
336 jbyte (*GetStaticByteField) (JNIEnv*, jclass clazz, jfieldID fieldID);
337 jchar (*GetStaticCharField) (JNIEnv*, jclass clazz, jfieldID fieldID);
338 jshort (*GetStaticShortField) (JNIEnv*, jclass clazz, jfieldID fieldID);
339 jint (*GetStaticIntField) (JNIEnv*, jclass clazz, jfieldID fieldID);
340 jlong (*GetStaticLongField) (JNIEnv*, jclass clazz, jfieldID fieldID);
341 jfloat (*GetStaticFloatField) (JNIEnv*, jclass clazz, jfieldID fieldID);
342 jdouble (*GetStaticDoubleField) (JNIEnv*, jclass clazz, jfieldID fieldID);
344 void (*SetStaticObjectField) (JNIEnv*, jclass clazz, jfieldID fieldID, jobject value);
345 void (*SetStaticBooleanField) (JNIEnv*, jclass clazz, jfieldID fieldID, jboolean value);
346 void (*SetStaticByteField) (JNIEnv*, jclass clazz, jfieldID fieldID, jbyte value);
347 void (*SetStaticCharField) (JNIEnv*, jclass clazz, jfieldID fieldID, jchar value);
348 void (*SetStaticShortField) (JNIEnv*, jclass clazz, jfieldID fieldID, jshort value);
349 void (*SetStaticIntField) (JNIEnv*, jclass clazz, jfieldID fieldID, jint value);
350 void (*SetStaticLongField) (JNIEnv*, jclass clazz, jfieldID fieldID, jlong value);
351 void (*SetStaticFloatField) (JNIEnv*, jclass clazz, jfieldID fieldID, jfloat value);
352 void (*SetStaticDoubleField) (JNIEnv*, jclass clazz, jfieldID fieldID, jdouble value);
354 /* string operations */
356 jstring (*NewString) (JNIEnv*, const jchar *unicode, jsize len);
357 jsize (*GetStringLength) (JNIEnv*, jstring str);
358 const jchar *(*GetStringChars) (JNIEnv*, jstring str, jboolean *isCopy);
359 void (*ReleaseStringChars) (JNIEnv*, jstring str, const jchar *chars);
361 jstring (*NewStringUTF) (JNIEnv*, const char *utf);
362 jsize (*GetStringUTFLength) (JNIEnv*, jstring str);
363 const char* (*GetStringUTFChars) (JNIEnv*, jstring str, jboolean *isCopy);
364 void (*ReleaseStringUTFChars) (JNIEnv*, jstring str, const char* chars);
366 /* array operations */
368 jsize (*GetArrayLength) (JNIEnv*, jarray array);
370 jobjectArray (*NewObjectArray) (JNIEnv*, jsize len, jclass clazz, jobject init);
371 jobject (*GetObjectArrayElement) (JNIEnv*, jobjectArray array, jsize index);
372 void (*SetObjectArrayElement) (JNIEnv*, jobjectArray array, jsize index, jobject val);
374 jbooleanArray (*NewBooleanArray) (JNIEnv*, jsize len);
375 jbyteArray (*NewByteArray) (JNIEnv*, jsize len);
376 jcharArray (*NewCharArray) (JNIEnv*, jsize len);
377 jshortArray (*NewShortArray) (JNIEnv*, jsize len);
378 jintArray (*NewIntArray) (JNIEnv*, jsize len);
379 jlongArray (*NewLongArray) (JNIEnv*, jsize len);
380 jfloatArray (*NewFloatArray) (JNIEnv*, jsize len);
381 jdoubleArray (*NewDoubleArray) (JNIEnv*, jsize len);
383 jboolean * (*GetBooleanArrayElements) (JNIEnv*, jbooleanArray array, jboolean *isCopy);
384 jbyte * (*GetByteArrayElements) (JNIEnv*, jbyteArray array, jboolean *isCopy);
385 jchar * (*GetCharArrayElements) (JNIEnv*, jcharArray array, jboolean *isCopy);
386 jshort * (*GetShortArrayElements) (JNIEnv*, jshortArray array, jboolean *isCopy);
387 jint * (*GetIntArrayElements) (JNIEnv*, jintArray array, jboolean *isCopy);
388 jlong * (*GetLongArrayElements) (JNIEnv*, jlongArray array, jboolean *isCopy);
389 jfloat * (*GetFloatArrayElements) (JNIEnv*, jfloatArray array, jboolean *isCopy);
390 jdouble * (*GetDoubleArrayElements) (JNIEnv*, jdoubleArray array, jboolean *isCopy);
392 void (*ReleaseBooleanArrayElements) (JNIEnv*, jbooleanArray array, jboolean *elems, jint mode);
393 void (*ReleaseByteArrayElements) (JNIEnv*, jbyteArray array, jbyte *elems, jint mode);
394 void (*ReleaseCharArrayElements) (JNIEnv*, jcharArray array, jchar *elems, jint mode);
395 void (*ReleaseShortArrayElements) (JNIEnv*, jshortArray array, jshort *elems, jint mode);
396 void (*ReleaseIntArrayElements) (JNIEnv*, jintArray array, jint *elems, jint mode);
397 void (*ReleaseLongArrayElements) (JNIEnv*, jlongArray array, jlong *elems, jint mode);
398 void (*ReleaseFloatArrayElements) (JNIEnv*, jfloatArray array, jfloat *elems, jint mode);
399 void (*ReleaseDoubleArrayElements) (JNIEnv*, jdoubleArray array, jdouble *elems, jint mode);
401 void (*GetBooleanArrayRegion) (JNIEnv*, jbooleanArray array, jsize start, jsize l, jboolean *buf);
402 void (*GetByteArrayRegion) (JNIEnv*, jbyteArray array, jsize start, jsize len, jbyte *buf);
403 void (*GetCharArrayRegion) (JNIEnv*, jcharArray array, jsize start, jsize len, jchar *buf);
404 void (*GetShortArrayRegion) (JNIEnv*, jshortArray array, jsize start, jsize len, jshort *buf);
405 void (*GetIntArrayRegion) (JNIEnv*, jintArray array, jsize start, jsize len, jint *buf);
406 void (*GetLongArrayRegion) (JNIEnv*, jlongArray array, jsize start, jsize len, jlong *buf);
407 void (*GetFloatArrayRegion) (JNIEnv*, jfloatArray array, jsize start, jsize len, jfloat *buf);
408 void (*GetDoubleArrayRegion) (JNIEnv*, jdoubleArray array, jsize start, jsize len, jdouble *buf);
410 void (*SetBooleanArrayRegion) (JNIEnv*, jbooleanArray array, jsize start, jsize l, jboolean *buf);
411 void (*SetByteArrayRegion) (JNIEnv*, jbyteArray array, jsize start, jsize len, jbyte *buf);
412 void (*SetCharArrayRegion) (JNIEnv*, jcharArray array, jsize start, jsize len, jchar *buf);
413 void (*SetShortArrayRegion) (JNIEnv*, jshortArray array, jsize start, jsize len, jshort *buf);
414 void (*SetIntArrayRegion) (JNIEnv*, jintArray array, jsize start, jsize len, jint *buf);
415 void (*SetLongArrayRegion) (JNIEnv*, jlongArray array, jsize start, jsize len, jlong *buf);
416 void (*SetFloatArrayRegion) (JNIEnv*, jfloatArray array, jsize start, jsize len, jfloat *buf);
417 void (*SetDoubleArrayRegion) (JNIEnv*, jdoubleArray array, jsize start, jsize len, jdouble *buf);
419 /* registering native methods */
421 jint (*RegisterNatives) (JNIEnv*, jclass clazz, const JNINativeMethod *methods, jint nMethods);
422 jint (*UnregisterNatives) (JNIEnv*, jclass clazz);
424 /* monitor operations */
426 jint (*MonitorEnter) (JNIEnv*, jobject obj);
427 jint (*MonitorExit) (JNIEnv*, jobject obj);
429 /* JavaVM interface */
431 jint (*GetJavaVM) (JNIEnv*, JavaVM **vm);
433 void (*GetStringRegion) (JNIEnv*, jstring str, jsize start, jsize len, jchar *buf);
434 void (*GetStringUTFRegion) (JNIEnv*, jstring str, jsize start, jsize len, char *buf);
436 void * (*GetPrimitiveArrayCritical) (JNIEnv*, jarray array, jboolean *isCopy);
437 void (*ReleasePrimitiveArrayCritical) (JNIEnv*, jarray array, void *carray, jint mode);
439 const jchar * (*GetStringCritical) (JNIEnv*, jstring string, jboolean *isCopy);
440 void (*ReleaseStringCritical) (JNIEnv*, jstring string, const jchar *cstring);
442 jweak (*NewWeakGlobalRef) (JNIEnv*, jobject obj);
443 void (*DeleteWeakGlobalRef) (JNIEnv*, jweak ref);
445 jboolean (*ExceptionCheck) (JNIEnv*);
449 /* the active JNI function table */
457 * These are local overrides for various environment variables in Emacs.
458 * Please do not remove this and leave it at the end of the file, where
459 * Emacs will automagically detect them.
460 * ---------------------------------------------------------------------
463 * indent-tabs-mode: t