The features of the Java Native Interface are available through the include file jni.h.
/***********************************************************************\ * * aicas GmbH, Karlsruhe * * $Source: /CVSROOT/Jamaica/src/doc/html/jni-h.html,v $ * $Revision: 1.6.6.1 $ * $Author: rupp $ * Contents: The jamaica virtual machine JNI interface * Systems : all * \***********************************************************************/ #ifndef __JNI__ #define __JNI__ #ifdef __cplusplus extern "C" #endif /****************************** Includes *******************************/ #include <stdlib.h> #include <stdarg.h> /* NOTE: To use internal functions of JamaicaVM, you need to include * jamaica_vm.h _BEFORE_ jni.h. */ #ifndef __JAMAICA_VM__ #include "jamaica.h" #endif /****************** Conditional compilation switches *******************/ /* ??? */ #define JNIEXPORT #define JNICALL /***************************** Constants *******************************/ /* ??? */ #define JNI_FALSE 0 #define JNI_TRUE 1 /* ??? */ #define JNI_COMMIT 1 #define JNI_ABORT 2 /* version numbers */ #define JNI_VERSION_1_1 0x00010001 #define JNI_VERSION_1_2 0x00010002 /* error codes */ #define JNI_EDETACHED (-2) /* thread detached from the VM */ #define JNI_EVERSION (-3) /* JNI version error */ /* special constants */ #define JNI_JLONG_CONST_0 JAMAICA_INT64_CONST_0 #define JNI_JLONG_CONST_MINUS_1 JAMAICA_INT32_TO_INT64(-1) /***************************** Datatypes *******************************/ typedef jamaica_uint8 jboolean; typedef jamaica_int8 jbyte; typedef jamaica_uint16 jchar; typedef jamaica_int16 jshort; typedef jamaica_int32 jint; #ifndef jlong typedef jamaica_int64 jlong; #endif typedef jamaica_float jfloat; typedef jamaica_double jdouble; typedef jint jsize; typedef void FAR_REFERENCE *jobject; typedef jobject jclass; typedef jobject jstring; typedef jobject jarray; typedef jobject jobjectArray; typedef jobject jbooleanArray; typedef jobject jbyteArray; typedef jobject jcharArray; typedef jobject jshortArray; typedef jobject jintArray; typedef jobject jlongArray; typedef jobject jfloatArray; typedef jobject jdoubleArray; typedef jobject jthrowable; typedef jobject jweak; struct _jfieldID; /* opaque structure */ typedef struct _jfieldID *jfieldID; /* field IDs */ struct _jmethodID; /* opaque structure */ typedef struct _jmethodID *jmethodID; /* method IDs */ typedef union jvalue { jboolean z; jbyte b; jchar c; jshort s; jint i; jlong j; jfloat f; jdouble d; jobject l; } jvalue; typedef const struct JNINativeInterface *JNIEnv; //jchar *GetCharArrayElements (JNIEnv *env, jcharArray array, jboolean *isCopy); typedef struct JavaVM { //??? leer? int xxx; } JavaVM; typedef struct JavaVMAttachArgs { jint version; char *name; jobject group; } JavaVMAttachArgs; typedef struct JNINativeInterface { void * reserved0; void * reserved1; void * reserved2; void * reserved3; jint (* GetVersion ) (JNIEnv *env); jclass (* DefineClass ) (JNIEnv *env, jobject loader, const jbyte *buf, jsize bufLen); jclass (* FindClass ) (JNIEnv *env, const char *name); void * reserved7; void * reserved8; void * reserved9; jclass (* GetSuperclass ) (JNIEnv *env, jclass clazz); jboolean (* IsAssignableFrom ) (JNIEnv *env, jclass clazz1, jclass clazz2); void * reserved12; jint (* Throw ) (JNIEnv *env, jthrowable obj); jint (* ThrowNew ) (JNIEnv *env, jclass clazz, const char *message); jthrowable (* ExceptionOccurred ) (JNIEnv *env); void (* ExceptionDescribe ) (JNIEnv *env); void (* ExceptionClear ) (JNIEnv *env); void (* FatalError ) (JNIEnv *env, const char *msg); void * reserved19; void * reserved20; jobject (* NewGlobalRef ) (JNIEnv *env, jobject obj); void (* DeleteGlobalRef ) (JNIEnv *env, jobject globalRef); void (* DeleteLocalRef ) (JNIEnv *env, jobject localRef); jboolean (* IsSameObject ) (JNIEnv *env, jobject ref1, jobject ref2); void * reserved25; void * reserved26; jobject (* AllocObject ) (JNIEnv *env, jclass clazz); jobject (* NewObject ) (JNIEnv *env, jclass clazz, jmethodID, ... ); jobject (* NewObjectV ) (JNIEnv *env, jclass clazz, jmethodID, va_list args); jobject (* NewObjectA ) (JNIEnv *env, jclass clazz, jmethodID, jvalue *args); jclass (* GetObjectClass ) (JNIEnv *env, jobject obj); jboolean (* IsInstanceOf ) (JNIEnv *env, jobject obj, jclass clazz); jmethodID (* GetMethodID ) (JNIEnv *env, jclass clazz, const char *name, const char *sig); jobject (* CallObjectMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jobject (* CallObjectMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jobject (* CallObjectMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jboolean (* CallBooleanMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jboolean (* CallBooleanMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jboolean (* CallBooleanMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jbyte (* CallByteMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jbyte (* CallByteMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jbyte (* CallByteMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jchar (* CallCharMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jchar (* CallCharMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jchar (* CallCharMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jshort (* CallShortMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jshort (* CallShortMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jshort (* CallShortMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jint (* CallIntMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jint (* CallIntMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jint (* CallIntMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jlong (* CallLongMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jlong (* CallLongMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jlong (* CallLongMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jfloat (* CallFloatMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jfloat (* CallFloatMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jfloat (* CallFloatMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jdouble (* CallDoubleMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); jdouble (* CallDoubleMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); jdouble (* CallDoubleMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); void (* CallVoidMethod ) (JNIEnv *env, jobject obj, jmethodID methodID, ... ); void (* CallVoidMethodV ) (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); void (* CallVoidMethodA ) (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args); jobject (* CallNonvirtualObjectMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jobject (* CallNonvirtualObjectMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jobject (* CallNonvirtualObjectMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jboolean (* CallNonvirtualBooleanMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jboolean (* CallNonvirtualBooleanMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jboolean (* CallNonvirtualBooleanMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jbyte (* CallNonvirtualByteMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jbyte (* CallNonvirtualByteMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jbyte (* CallNonvirtualByteMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jchar (* CallNonvirtualCharMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jchar (* CallNonvirtualCharMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jchar (* CallNonvirtualCharMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jshort (* CallNonvirtualShortMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jshort (* CallNonvirtualShortMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jshort (* CallNonvirtualShortMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jint (* CallNonvirtualIntMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jint (* CallNonvirtualIntMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jint (* CallNonvirtualIntMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jlong (* CallNonvirtualLongMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jlong (* CallNonvirtualLongMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jlong (* CallNonvirtualLongMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jfloat (* CallNonvirtualFloatMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jfloat (* CallNonvirtualFloatMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jfloat (* CallNonvirtualFloatMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jdouble (* CallNonvirtualDoubleMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); jdouble (* CallNonvirtualDoubleMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); jdouble (* CallNonvirtualDoubleMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); void (* CallNonvirtualVoidMethod ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, ... ); void (* CallNonvirtualVoidMethodV ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, va_list args); void (* CallNonvirtualVoidMethodA ) (JNIEnv *env, jobject obj, jclass jclazz, jmethodID methodID, jvalue *args); jfieldID (* GetFieldID ) (JNIEnv *env, jclass clazz, const char *name, const char *sig); jobject (* GetObjectField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jboolean (* GetBooleanField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jbyte (* GetByteField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jchar (* GetCharField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jshort (* GetShortField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jint (* GetIntField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jlong (* GetLongField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jfloat (* GetFloatField ) (JNIEnv *env, jobject obj, jfieldID fieldID); jdouble (* GetDoubleField ) (JNIEnv *env, jobject obj, jfieldID fieldID); void (* SetObjectField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jobject value); void (* SetBooleanField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean value); void (* SetByteField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte value); void (* SetCharField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jchar value); void (* SetShortField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jshort value); void (* SetIntField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jint value); void (* SetLongField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jlong value); void (* SetFloatField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat value); void (* SetDoubleField ) (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble value); jmethodID (* GetStaticMethodID ) (JNIEnv *env, jclass clazz, const char *name, const char *sig); jobject (* CallStaticObjectMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jobject (* CallStaticObjectMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jobject (* CallStaticObjectMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jboolean (* CallStaticBooleanMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jboolean (* CallStaticBooleanMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jboolean (* CallStaticBooleanMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jbyte (* CallStaticByteMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jbyte (* CallStaticByteMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jbyte (* CallStaticByteMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jchar (* CallStaticCharMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jchar (* CallStaticCharMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jchar (* CallStaticCharMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jshort (* CallStaticShortMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jshort (* CallStaticShortMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jshort (* CallStaticShortMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jint (* CallStaticIntMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jint (* CallStaticIntMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jint (* CallStaticIntMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jlong (* CallStaticLongMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jlong (* CallStaticLongMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jlong (* CallStaticLongMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jfloat (* CallStaticFloatMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jfloat (* CallStaticFloatMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jfloat (* CallStaticFloatMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jdouble (* CallStaticDoubleMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); jdouble (* CallStaticDoubleMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); jdouble (* CallStaticDoubleMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); void (* CallStaticVoidMethod ) (JNIEnv *env, jclass clazz, jmethodID methodID, ... ); void (* CallStaticVoidMethodV ) (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); void (* CallStaticVoidMethodA ) (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args); jfieldID (* GetStaticFieldID ) (JNIEnv *env, jclass clazz, const char *name, const char *sig); jobject (* GetStaticObjectField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jboolean (* GetStaticBooleanField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jbyte (* GetStaticByteField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jchar (* GetStaticCharField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jshort (* GetStaticShortField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jint (* GetStaticIntField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jlong (* GetStaticLongField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jfloat (* GetStaticFloatField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); jdouble (* GetStaticDoubleField ) (JNIEnv *env, jclass clazz, jfieldID fieldID); void (* SetStaticObjectField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); void (* SetStaticBooleanField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); void (* SetStaticByteField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); void (* SetStaticCharField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); void (* SetStaticShortField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); void (* SetStaticIntField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); void (* SetStaticLongField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); void (* SetStaticFloatField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); void (* SetStaticDoubleField ) (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); jstring (* NewString ) (JNIEnv *env, const jchar *unicodeChars, jsize len); jsize (* GetStringLength ) (JNIEnv *env, jstring string); const jchar *(* GetStringChars ) (JNIEnv *env, jstring string, jboolean *isCopy); void (* ReleaseStringChars ) (JNIEnv *env, jstring string, const jchar *chars); jstring (* NewStringUTF ) (JNIEnv *env, const char *bytes); jsize (* GetStringUTFLength ) (JNIEnv *env, jstring string); const char * (* GetStringUTFChars ) (JNIEnv *env, jstring string, jboolean *isCopy); void (* ReleaseStringUTFChars ) (JNIEnv *env, jstring string, const char *utf); jsize (* GetArrayLength ) (JNIEnv *env, jarray array); jarray (* NewObjectArray ) (JNIEnv *env, jsize length, jclass elementClass, jobject initialElement); jobject (* GetObjectArrayElement ) (JNIEnv *env, jobjectArray array, jsize index); void (* SetObjectArrayElement ) (JNIEnv *env, jobjectArray array, jsize index, jobject value); jbooleanArray(* NewBooleanArray ) (JNIEnv *env, jsize length); jbyteArray (* NewByteArray ) (JNIEnv *env, jsize length); jcharArray (* NewCharArray ) (JNIEnv *env, jsize length); jshortArray (* NewShortArray ) (JNIEnv *env, jsize length); jintArray (* NewIntArray ) (JNIEnv *env, jsize length); jlongArray (* NewLongArray ) (JNIEnv *env, jsize length); jfloatArray (* NewFloatArray ) (JNIEnv *env, jsize length); jdoubleArray (* NewDoubleArray ) (JNIEnv *env, jsize length); jboolean * (* GetBooleanArrayElements ) (JNIEnv *env, jbooleanArray array, jboolean *isCopy); jbyte * (* GetByteArrayElements ) (JNIEnv *env, jbyteArray array, jboolean *isCopy); jchar * (* GetCharArrayElements ) (JNIEnv *env, jcharArray array, jboolean *isCopy); jshort * (* GetShortArrayElements ) (JNIEnv *env, jshortArray array, jboolean *isCopy); jint * (* GetIntArrayElements ) (JNIEnv *env, jintArray array, jboolean *isCopy); jlong * (* GetLongArrayElements ) (JNIEnv *env, jlongArray array, jboolean *isCopy); jfloat * (* GetFloatArrayElements ) (JNIEnv *env, jfloatArray array, jboolean *isCopy); jdouble * (* GetDoubleArrayElements ) (JNIEnv *env, jdoubleArray array, jboolean *isCopy); void (* ReleaseBooleanArrayElements ) (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); void (* ReleaseByteArrayElements ) (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); void (* ReleaseCharArrayElements ) (JNIEnv *env, jcharArray array, jchar *elems, jint mode); void (* ReleaseShortArrayElements ) (JNIEnv *env, jshortArray array, jshort *elems, jint mode); void (* ReleaseIntArrayElements ) (JNIEnv *env, jintArray array, jint *elems, jint mode); void (* ReleaseLongArrayElements ) (JNIEnv *env, jlongArray array, jlong *elems, jint mode); void (* ReleaseFloatArrayElements ) (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); void (* ReleaseDoubleArrayElements ) (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); void (* GetBooleanArrayRegion ) (JNIEnv *env, jbooleanArray array, jsize start, jsize len, jboolean *buf); void (* GetByteArrayRegion ) (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); void (* GetCharArrayRegion ) (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); void (* GetShortArrayRegion ) (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); void (* GetIntArrayRegion ) (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); void (* GetLongArrayRegion ) (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); void (* GetFloatArrayRegion ) (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); void (* GetDoubleArrayRegion ) (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); void (* SetBooleanArrayRegion ) (JNIEnv *env, jbooleanArray array, jsize start, jsize len, jboolean *buf); void (* SetByteArrayRegion ) (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); void (* SetCharArrayRegion ) (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); void (* SetShortArrayRegion ) (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); void (* SetIntArrayRegion ) (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); void (* SetLongArrayRegion ) (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); void (* SetFloatArrayRegion ) (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); void (* SetDoubleArrayRegion ) (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); jint (* RegisterNatives ) (JNIEnv *env, jclass clazz/* NYI , const JNINativeMethod *methods */, jint nMethods); jint (* UnregisterNatives ) (JNIEnv *env, jclass clazz); jint (* MonitorEnter ) (JNIEnv *env, jobject obj); jint (* MonitorExit ) (JNIEnv *env, jobject obj); jint (* GetJavaVM ) (JNIEnv *env, JavaVM **vm); void (* GetStringRegion ) (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); void (* GetStringUTFRegion ) (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); void * (* GetPrimitiveArrayCritical ) (JNIEnv *env, jarray array, jboolean *isCopy); void (* ReleasePrimitiveArrayCritical) (JNIEnv *env, jarray array, void *carray, jint mode); const jchar *(* GetStringCritical ) (JNIEnv *env, jstring string, jboolean *isCopy); void (* ReleaseStringCritical ) (JNIEnv *env, jstring string, const jchar *cstring); jweak (* NewWeakGlobalRef ) (JNIEnv *env, jobject obj); void (* DeleteWeakGlobalRef ) (JNIEnv *env, jweak ref); jboolean (* ExceptionCheck ) (JNIEnv *env); } JNINativeInterface; /***************************** Variables *******************************/ /****************************** Macros *********************************/ #define JNI_INT_TO_LONG(n) JAMAICA_INT32_TO_INT64(n) #define JNI_LONG_TO_INT(n) JAMAICA_INT64_TO_INT32(n) /***************************** Functions *******************************/ #ifdef __cplusplus } #endif #endif /* __JNI__ */ /* end of file */ |