pyjnius/jnius/jni.pxi

404 lines
22 KiB
Cython

cdef extern from "jni.h":
ctypedef unsigned char jboolean
ctypedef signed char jbyte
ctypedef unsigned short jchar
ctypedef short jshort
ctypedef int jint
ctypedef long long jlong
ctypedef float jfloat
ctypedef double jdouble
ctypedef void* jobject
ctypedef jobject jclass
ctypedef jobject jstring
ctypedef jobject jarray
ctypedef jarray jobjectArray
ctypedef jarray jbooleanArray
ctypedef jarray jbyteArray
ctypedef jarray jcharArray
ctypedef jarray jshortArray
ctypedef jarray jintArray
ctypedef jarray jlongArray
ctypedef jarray jfloatArray
ctypedef jarray jdoubleArray
ctypedef jobject jthrowable
ctypedef jobject jweak
ctypedef jint jsize
ctypedef jchar const_jchar "const jchar"
ctypedef jbyte const_jbyte "const jbyte"
ctypedef jbyte const_jint "const jint"
ctypedef jboolean const_jboolean "const jboolean"
ctypedef jshort const_jshort "const jshort"
ctypedef jlong const_jlong "const jlong"
ctypedef jfloat const_jfloat "const jfloat"
ctypedef jdouble const_jdouble "const jdouble"
ctypedef struct JNINativeMethod:
const char* name
const char* signature
void* fnPtr
ctypedef JNINativeMethod const_JNINativeMethod "const JNINativeMethod"
ctypedef union jvalue:
jboolean z
jbyte b
jchar c
jshort s
jint i
jlong j
jfloat f
jdouble d
jobject l
ctypedef enum jobjectRefType:
JNIInvalidRefType = 0,
JNILocalRefType = 1,
JNIGlobalRefType = 2,
JNIWeakGlobalRefType = 3
# some opaque definitions
ctypedef void *jmethodID
ctypedef void *jfieldID
ctypedef struct JNINativeInterface
ctypedef struct JNIInvokeInterface
ctypedef JNINativeInterface* JNIEnv
ctypedef JNIInvokeInterface* JavaVM
ctypedef struct JNINativeInterface:
jint *GetVersion(JNIEnv *)
jclass (*DefineClass)(JNIEnv*, const char*, jobject, const_jbyte*,
jsize)
jclass (*FindClass)(JNIEnv*, char*)
jmethodID (*FromReflectedMethod)(JNIEnv*, jobject)
jfieldID (*FromReflectedField)(JNIEnv*, jobject)
# spec doesn't show jboolean parameter
jobject (*ToReflectedMethod)(JNIEnv*, jclass, jmethodID, jboolean)
jclass (*GetSuperclass)(JNIEnv*, jclass)
jboolean (*IsAssignableFrom)(JNIEnv*, jclass, jclass)
# spec doesn't show jboolean parameter
jobject (*ToReflectedField)(JNIEnv*, jclass, jfieldID, jboolean)
jint (*Throw)(JNIEnv*, jthrowable)
jint (*ThrowNew)(JNIEnv *, jclass, const char *)
jthrowable (*ExceptionOccurred)(JNIEnv*)
void (*ExceptionDescribe)(JNIEnv*)
void (*ExceptionClear)(JNIEnv*)
void (*FatalError)(JNIEnv*, const char*)
jint (*PushLocalFrame)(JNIEnv*, jint)
jobject (*PopLocalFrame)(JNIEnv*, jobject)
jobject (*NewGlobalRef)(JNIEnv*, jobject)
void (*DeleteGlobalRef)(JNIEnv*, jobject)
void (*DeleteLocalRef)(JNIEnv*, jobject)
jboolean (*IsSameObject)(JNIEnv*, jobject, jobject)
jobject (*NewLocalRef)(JNIEnv*, jobject)
jint (*EnsureLocalCapacity)(JNIEnv*, jint)
jobject (*AllocObject)(JNIEnv*, jclass)
jobject (*NewObject)(JNIEnv*, jclass, jmethodID, ...)
jobject (*NewObjectV)(JNIEnv*, jclass, jmethodID, va_list)
jobject (*NewObjectA)(JNIEnv*, jclass, jmethodID, jvalue*)
jclass (*GetObjectClass)(JNIEnv*, jobject)
jboolean (*IsInstanceOf)(JNIEnv*, jobject, jclass)
jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*)
jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...) nogil
void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list) nogil
void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*) nogil
jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...) nogil
void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list) nogil
void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*) nogil
jfieldID (*GetFieldID)(JNIEnv*, jclass, const char*, const char*)
jobject (*GetObjectField)(JNIEnv*, jobject, jfieldID)
jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID)
jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID)
jchar (*GetCharField)(JNIEnv*, jobject, jfieldID)
jshort (*GetShortField)(JNIEnv*, jobject, jfieldID)
jint (*GetIntField)(JNIEnv*, jobject, jfieldID)
jlong (*GetLongField)(JNIEnv*, jobject, jfieldID)
jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID)
jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID)
void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject)
void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean)
void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte)
void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar)
void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort)
void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint)
void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong)
void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat)
void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble)
jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*,
const char*) nogil
jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID,
va_list) nogil
jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID,
jvalue*) nogil
jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...) nogil
void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list) nogil
void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*) nogil
jfieldID (*GetStaticFieldID)(JNIEnv*, jclass, const char*,
const char*)
jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID)
jboolean (*GetStaticBooleanField)(JNIEnv*, jclass, jfieldID)
jbyte (*GetStaticByteField)(JNIEnv*, jclass, jfieldID)
jchar (*GetStaticCharField)(JNIEnv*, jclass, jfieldID)
jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID)
jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID)
jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID)
jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID)
jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID)
void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject)
void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean)
void (*SetStaticByteField)(JNIEnv*, jclass, jfieldID, jbyte)
void (*SetStaticCharField)(JNIEnv*, jclass, jfieldID, jchar)
void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort)
void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint)
void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong)
void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat)
void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble)
jstring (*NewString)(JNIEnv*, const_jchar*, jsize)
jsize (*GetStringLength)(JNIEnv*, jstring)
const_jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*)
void (*ReleaseStringChars)(JNIEnv*, jstring, const_jchar*)
jstring (*NewStringUTF)(JNIEnv*, char*)
jsize (*GetStringUTFLength)(JNIEnv*, jstring)
# JNI spec says this returns const_jbyte*, but that's inconsistent
const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*)
void (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*)
jsize (*GetArrayLength)(JNIEnv*, jarray)
jobjectArray (*NewObjectArray)(JNIEnv*, jsize, jclass, jobject)
jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize)
void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject)
jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize)
jbyteArray (*NewByteArray)(JNIEnv*, jsize)
jcharArray (*NewCharArray)(JNIEnv*, jsize)
jshortArray (*NewShortArray)(JNIEnv*, jsize)
jintArray (*NewIntArray)(JNIEnv*, jsize)
jlongArray (*NewLongArray)(JNIEnv*, jsize)
jfloatArray (*NewFloatArray)(JNIEnv*, jsize)
jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize)
jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*)
jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*)
jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*)
jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*)
jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*)
jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*)
jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*)
jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*)
void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray,
jboolean*, jint)
void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray,
jbyte*, jint)
void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray,
jchar*, jint)
void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray,
jshort*, jint)
void (*ReleaseIntArrayElements)(JNIEnv*, jintArray,
jint*, jint)
void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray,
jlong*, jint)
void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray,
jfloat*, jint)
void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray,
jdouble*, jint)
void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray,
jsize, jsize, jboolean*)
void (*GetByteArrayRegion)(JNIEnv*, jbyteArray,
jsize, jsize, jbyte*)
void (*GetCharArrayRegion)(JNIEnv*, jcharArray,
jsize, jsize, jchar*)
void (*GetShortArrayRegion)(JNIEnv*, jshortArray,
jsize, jsize, jshort*)
void (*GetIntArrayRegion)(JNIEnv*, jintArray,
jsize, jsize, jint*)
void (*GetLongArrayRegion)(JNIEnv*, jlongArray,
jsize, jsize, jlong*)
void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray,
jsize, jsize, jfloat*)
void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray,
jsize, jsize, jdouble*)
# spec shows these without const some jni.h do, some don't
void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray,
jsize, jsize, const_jboolean*)
void (*SetByteArrayRegion)(JNIEnv*, jbyteArray,
jsize, jsize, const_jbyte*)
void (*SetCharArrayRegion)(JNIEnv*, jcharArray,
jsize, jsize, const_jchar*)
void (*SetShortArrayRegion)(JNIEnv*, jshortArray,
jsize, jsize, const_jshort*)
void (*SetIntArrayRegion)(JNIEnv*, jintArray,
jsize, jsize, const_jint*)
void (*SetLongArrayRegion)(JNIEnv*, jlongArray,
jsize, jsize, const_jlong*)
void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray,
jsize, jsize, const_jfloat*)
void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray,
jsize, jsize, const_jdouble*)
#XXX not working with cython?
jint (*RegisterNatives)(JNIEnv*, jclass, const_JNINativeMethod*, jint)
jint (*UnregisterNatives)(JNIEnv*, jclass)
jint (*MonitorEnter)(JNIEnv*, jobject)
jint (*MonitorExit)(JNIEnv*, jobject)
jint (*GetJavaVM)(JNIEnv*, JavaVM**)
void (*GetStringRegion)(JNIEnv*, jstring, jsize, jsize, jchar*)
void (*GetStringUTFRegion)(JNIEnv*, jstring, jsize, jsize, char*)
void* (*GetPrimitiveArrayCritical)(JNIEnv*, jarray, jboolean*)
void (*ReleasePrimitiveArrayCritical)(JNIEnv*, jarray, void*, jint)
const_jchar* (*GetStringCritical)(JNIEnv*, jstring, jboolean*)
void (*ReleaseStringCritical)(JNIEnv*, jstring, const_jchar*)
jweak (*NewWeakGlobalRef)(JNIEnv*, jobject)
void (*DeleteWeakGlobalRef)(JNIEnv*, jweak)
jboolean (*ExceptionCheck)(JNIEnv*)
jobject (*NewDirectByteBuffer)(JNIEnv*, void*, jlong)
void* (*GetDirectBufferAddress)(JNIEnv*, jobject)
jlong (*GetDirectBufferCapacity)(JNIEnv*, jobject)
jobjectRefType (*GetObjectRefType)(JNIEnv*, jobject)
ctypedef struct JNIInvokeInterface:
jint (*AttachCurrentThread)(JavaVM *, JNIEnv **, void *)
jint (*DetachCurrentThread)(JavaVM *)