pyjnius/jnius/jni.pxi

401 lines
21 KiB
Cython
Raw Normal View History

2012-08-14 01:42:43 +00:00
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 char const_char "const_char"
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"
2012-08-14 01:42:43 +00:00
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 JNINativeInterface* JNIEnv
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, ...)
jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...)
jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...)
jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...)
jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...)
jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...)
jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...)
jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...)
jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...)
jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list)
jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...)
void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list)
void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*)
jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass,
jmethodID, ...)
void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass,
jmethodID, va_list)
void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass,
jmethodID, jvalue*)
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*)
jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...)
jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...)
jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID,
va_list)
jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID,
jvalue*)
jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...)
jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...)
jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...)
jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...)
jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...)
jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...)
jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...)
jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list)
jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...)
void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list)
void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*)
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)
2012-08-14 01:42:43 +00:00
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 JavaVM:
pass