aboutsummaryrefslogtreecommitdiffstats
path: root/CNativeCode/GLUCallbackJNI.c
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2000-11-18 06:43:49 +0000
committerSven Gothel <[email protected]>2000-11-18 06:43:49 +0000
commit880653d31a8f1ff8384fdbc75b84934bceecfdb8 (patch)
treebdafb71416f176d2a4b73bf716c9dc3f13685a8b /CNativeCode/GLUCallbackJNI.c
Initial revision
Diffstat (limited to 'CNativeCode/GLUCallbackJNI.c')
-rw-r--r--CNativeCode/GLUCallbackJNI.c639
1 files changed, 639 insertions, 0 deletions
diff --git a/CNativeCode/GLUCallbackJNI.c b/CNativeCode/GLUCallbackJNI.c
new file mode 100644
index 0000000..ef2da51
--- /dev/null
+++ b/CNativeCode/GLUCallbackJNI.c
@@ -0,0 +1,639 @@
+
+#include "GLCallbackHelperJNI.h"
+#include "GLUCallbackJNI.h"
+#include "jnitools.h"
+
+void LIBAPIENTRY cbf_GLU_TESS_BEGIN (GLenum type)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ CallbackEntry * cbe = NULL;
+
+ cbe = FindCallbackEntry(GLU_TESS_BEGIN, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ {
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ }
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ (*env)->CallVoidMethod(env, obj, id, (jint)type);
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_BEGIN_DATA (GLenum type, void *udata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt=0;
+ jarray arr=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_BEGIN_DATA, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<2)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ jbt = jnitoolsGetJavaBasicType(env,cbe->signature, 1, cbe->methodName);
+ arr = jnitoolsNativeArray2JavaArray (env, jbt, udata, cbe->arrayLen1, cbe->methodName, 2);
+
+ if(arr!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, (jint)type, arr);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr, jbt,
+ udata, cbe->arrayLen1, cbe->methodName, 2);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_EDGE_FLAG (GLboolean flag)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_EDGE_FLAG, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ (*env)->CallVoidMethod(env, obj, id, (jboolean)flag);
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_EDGE_FLAG_DATA (GLboolean flag, void *udata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt=0;
+ jarray arr=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_EDGE_FLAG_DATA, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<2)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ jbt = jnitoolsGetJavaBasicType(env,cbe->signature, 1, cbe->methodName);
+ arr = jnitoolsNativeArray2JavaArray (env, jbt, udata, cbe->arrayLen1, cbe->methodName, 2);
+
+ if(arr!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, (jboolean)flag, arr);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr, jbt,
+ udata, cbe->arrayLen1, cbe->methodName, 2);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_VERTEX (void * vdata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt=0;
+ jarray arr=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_VERTEX, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<1)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ jbt = jnitoolsGetJavaBasicType(env,cbe->signature, 0, cbe->methodName);
+ arr = jnitoolsNativeArray2JavaArray (env, jbt, vdata, cbe->arrayLen1, cbe->methodName, 1);
+
+ if(arr!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, arr);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr, jbt,
+ vdata, cbe->arrayLen1, cbe->methodName, 1);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_VERTEX_DATA (void * vdata, void * udata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt0=0;
+ jarray arr0=0;
+ JavaBasicType jbt1=0;
+ jarray arr1=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_VERTEX_DATA, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<2)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ jbt0 = jnitoolsGetJavaBasicType(env,cbe->signature, 0, cbe->methodName);
+ arr0 = jnitoolsNativeArray2JavaArray (env, jbt0, vdata, cbe->arrayLen1, cbe->methodName, 1);
+ jbt1 = jnitoolsGetJavaBasicType(env,cbe->signature, 1, cbe->methodName);
+ arr1 = jnitoolsNativeArray2JavaArray (env, jbt1, udata, cbe->arrayLen2, cbe->methodName, 2);
+
+ if(arr0!=0 && arr1!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, arr0, arr1);
+
+ jnitoolsReleaseJavaArray2NativeArray (env, arr0, jbt0,
+ udata, cbe->arrayLen1, cbe->methodName, 1);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr1, jbt1,
+ udata, cbe->arrayLen2, cbe->methodName, 2);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_END (void)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_END, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ (*env)->CallVoidMethod(env, obj, id);
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_END_DATA (void * udata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt=0;
+ jarray arr=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_END_DATA, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<1)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ jbt = jnitoolsGetJavaBasicType(env,cbe->signature, 0, cbe->methodName);
+ arr = jnitoolsNativeArray2JavaArray (env, jbt, udata, cbe->arrayLen1, cbe->methodName, 1);
+
+ if(arr!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, arr);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr, jbt,
+ udata, cbe->arrayLen1, cbe->methodName, 1);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_ERROR (GLenum errno)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_ERROR, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ (*env)->CallVoidMethod(env, obj, id, (jint)errno);
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_ERROR_DATA (GLenum errno, void * udata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt=0;
+ jarray arr=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_ERROR_DATA, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<2)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ jbt = jnitoolsGetJavaBasicType(env,cbe->signature, 1, cbe->methodName);
+ arr = jnitoolsNativeArray2JavaArray (env, jbt, udata, cbe->arrayLen1, cbe->methodName, 2);
+
+ if(arr!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, (jint)errno, arr);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr, jbt,
+ udata, cbe->arrayLen1, cbe->methodName, 2);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_COMBINE (GLdouble coords[3], void *vdata[4],
+ GLfloat weight[4], void **outdata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt0=0;
+ jarray arr0=0;
+ JavaBasicType jbt1=0;
+ jarray arr1=0;
+ JavaBasicType jbt2=0;
+ jarray arr2=0;
+ JavaBasicType jbt3=0;
+ jarray arr3=0;
+ void * combdata = NULL;
+ CallbackEntry * cbe = NULL;
+
+ cbe = FindCallbackEntry(GLU_TESS_COMBINE, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<4)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ if(cbe->arrayLen1>3)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "First Array of GLU_TESS_COMBINE cannot exceed 3 elements !");
+ return;
+ }
+ if(cbe->arrayLen2%4!=0)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "Secound Array of GLU_TESS_COMBINE must be a multiple of 4 !");
+ return;
+ }
+ if(cbe->arrayLen3>4)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "First Array of GLU_TESS_COMBINE cannot exceed 4 elements !");
+ return;
+ }
+ jbt0 = jnitoolsGetJavaBasicType(env,cbe->signature, 0, cbe->methodName);
+ arr0 = jnitoolsNativeArray2JavaArray (env, jbt0, coords, cbe->arrayLen1, cbe->methodName, 1);
+ jbt1 = jnitoolsGetJavaBasicType(env,cbe->signature, 1, cbe->methodName);
+ arr1 = jnitoolsNativePtrArray2JavaArray (env, jbt1, vdata, 4, cbe->arrayLen2, cbe->methodName, 2);
+ jbt2 = jnitoolsGetJavaBasicType(env,cbe->signature, 2, cbe->methodName);
+ arr2 = jnitoolsNativeArray2JavaArray (env, jbt2, weight, cbe->arrayLen3, cbe->methodName, 3);
+
+ jbt3 = jnitoolsGetJavaBasicType(env,cbe->signature, 3, cbe->methodName);
+ combdata = jnitoolsCreateNativeArray (jbt3, cbe->arrayLen4, cbe->methodName);
+ arr3 = jnitoolsNativeArray2JavaArray (env, jbt3, combdata, cbe->arrayLen4, cbe->methodName, 4);
+
+ if(arr0!=0 && arr1!=0 && arr2!=0 && arr3!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, arr0, arr1, arr2, arr3);
+
+ jnitoolsReleaseJavaArray2NativeArray (env, arr0, jbt0, coords,
+ cbe->arrayLen1, cbe->methodName, 1);
+ jnitoolsReleaseJavaArray2NativeArrayPtr(env, arr1, jbt1, vdata,
+ 4, cbe->arrayLen2, cbe->methodName, 2);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr2, jbt2, weight,
+ cbe->arrayLen3, cbe->methodName, 3);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr3, jbt3, combdata,
+ cbe->arrayLen4, cbe->methodName, 4);
+ *outdata=combdata;
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_TESS_COMBINE_DATA (GLdouble coords[3], void *vdata[4],
+ GLfloat weight[4], void **outdata,
+ void *udata)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+ JavaBasicType jbt0=0;
+ jarray arr0=0;
+ JavaBasicType jbt1=0;
+ jarray arr1=0;
+ JavaBasicType jbt2=0;
+ jarray arr2=0;
+ JavaBasicType jbt3=0;
+ jarray arr3=0;
+ JavaBasicType jbt4=0;
+ jarray arr4=0;
+ void * combdata = NULL;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_TESS_COMBINE_DATA, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ if(cbe->argListNumber<5)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "too few arguments in registered callback function");
+ return;
+ }
+ if(cbe->arrayLen1>3)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "First Array of GLU_TESS_COMBINE_DATA cannot exceed 3 elements !");
+ return;
+ }
+ if(cbe->arrayLen2%4!=0)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "Secound Array of GLU_TESS_COMBINE_DATA must be a multiple of 4 !");
+ return;
+ }
+ if(cbe->arrayLen3>4)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "First Array of GLU_TESS_COMBINE_DATA cannot exceed 4 elements !");
+ return;
+ }
+ jbt0 = jnitoolsGetJavaBasicType(env,cbe->signature, 0, cbe->methodName);
+ arr0 = jnitoolsNativeArray2JavaArray (env, jbt0, coords, cbe->arrayLen1, cbe->methodName, 1);
+ jbt1 = jnitoolsGetJavaBasicType(env,cbe->signature, 1, cbe->methodName);
+ arr1 = jnitoolsNativePtrArray2JavaArray (env, jbt1, vdata, 4, cbe->arrayLen2, cbe->methodName, 2);
+ jbt2 = jnitoolsGetJavaBasicType(env,cbe->signature, 2, cbe->methodName);
+ arr2 = jnitoolsNativeArray2JavaArray (env, jbt2, weight, cbe->arrayLen3, cbe->methodName, 3);
+
+ jbt3 = jnitoolsGetJavaBasicType(env,cbe->signature, 3, cbe->methodName);
+ combdata = jnitoolsCreateNativeArray (jbt3, cbe->arrayLen2, cbe->methodName);
+ arr3 = jnitoolsNativeArray2JavaArray (env, jbt3, combdata, cbe->arrayLen4, cbe->methodName, 4);
+ jbt4 = jnitoolsGetJavaBasicType(env,cbe->signature, 4, cbe->methodName);
+ arr4 = jnitoolsNativeArray2JavaArray (env, jbt4, udata, cbe->arrayLen5, cbe->methodName, 5);
+
+ if(arr0!=0 && arr1!=0 && arr2!=0 && arr3!=0 && arr4!=0)
+ {
+ (*env)->CallVoidMethod(env, obj, id, arr0, arr1, arr2, arr3);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr0, jbt0, coords,
+ cbe->arrayLen1, cbe->methodName, 1);
+ jnitoolsReleaseJavaArray2NativeArrayPtr(env, arr1, jbt1, vdata,
+ 4, cbe->arrayLen2, cbe->methodName, 2);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr2, jbt2, weight,
+ cbe->arrayLen3, cbe->methodName, 3);
+ jnitoolsReleaseJavaArray2NativeArray (env, arr3, jbt3, combdata,
+ cbe->arrayLen4, cbe->methodName, 4);
+ *outdata=combdata;
+ jnitoolsReleaseJavaArray2NativeArray (env, arr4, jbt4, udata,
+ cbe->arrayLen5, cbe->methodName, 5);
+ }
+}
+
+void LIBAPIENTRY cbf_GLU_ERROR (GLenum errno)
+{
+ JNIEnv * env = NULL;
+ jobject obj = 0;
+ jclass oclass=0;
+ jmethodID id=0;
+
+ CallbackEntry * cbe = FindCallbackEntry(GLU_ERROR, GetCurrentGLContext());
+
+ if(cbe==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback entry");
+ return;
+ }
+ env = cbe->env;
+ obj = cbe->jobj;
+ oclass = (jclass) (*env)->GetObjectClass(env, obj);
+ if(oclass!=0)
+ id = (*env)->GetMethodID(env,oclass,cbe->methodName,cbe->signature) ;
+ if(id==NULL)
+ {
+ jnitoolsThrowByName(env, "java/lang/IllegalArgumentException",
+ "could not find the java callback method: %s %s",
+ cbe->methodName, cbe->signature);
+ return;
+ }
+
+ (*env)->CallVoidMethod(env, obj, id, (jint)errno);
+}
+
+