mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
#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);
 | 
						|
}
 |