1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #include <stdlib.h>
- #include <stdio.h>
- #include <iface.h>
- void check (JNIEnv *);
- void check(JNIEnv *env)
- {
- if ((*env)->ExceptionCheck(env) != JNI_FALSE)
- {
- fprintf(stderr, "UNEXPECTED EXCEPTION\n");
- exit(-1);
- }
- }
- void
- Java_iface_doCalls (JNIEnv *env, jobject self, jobject other)
- {
- jclass iface_class, comparable_class;
- jmethodID iface_meth, comparable_meth;
- jvalue args[1];
- iface_class = (*env)->FindClass(env, "iface");
- check (env);
- comparable_class = (*env)->FindClass (env, "mycomp");
- check (env);
- iface_meth = (*env)->GetMethodID (env, iface_class, "compareTo",
- "(Ljava/lang/Object;)I");
- check (env);
- comparable_meth = (*env)->GetMethodID (env, comparable_class, "compareTo",
- "(Ljava/lang/Object;)I");
- check (env);
- args[0].l = other;
- (*env)->CallObjectMethodA (env, self, iface_meth, args);
- check (env);
- (*env)->CallObjectMethodA (env, self, comparable_meth, args);
- check (env);
- }
|