mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			44 lines
		
	
	
		
			1001 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1001 B
		
	
	
	
		
			C
		
	
	
	
#include <jni.h>
 | 
						|
#include "martin.h"
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
JNIEXPORT void JNICALL
 | 
						|
Java_martin_myNative(JNIEnv* env, jobject this, jstring s)
 | 
						|
{
 | 
						|
  jclass cls;
 | 
						|
  jfieldID fid;
 | 
						|
  jobject obj;
 | 
						|
  jmethodID mid;
 | 
						|
 | 
						|
  printf("From C\n");
 | 
						|
  fflush(stdout);
 | 
						|
 | 
						|
  cls = (*env)->FindClass(env, "java/lang/System");
 | 
						|
  if (cls == 0) {
 | 
						|
    printf("java/lang/System lookup failed\n");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava/io/PrintStream;");
 | 
						|
  if (fid == 0) {
 | 
						|
    printf("java/lang/System::out lookup failed\n");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  obj = (*env)->GetStaticObjectField(env, cls, fid);
 | 
						|
  if (obj == 0) {
 | 
						|
    printf("GetStaticObjectField call failed\n");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  cls = (*env)->GetObjectClass(env, obj);
 | 
						|
  if (cls == 0) {
 | 
						|
    printf("GetObjectClass(out) failed\n");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  mid = (*env)->GetMethodID(env, cls, "println", "(Ljava/lang/String;)V");
 | 
						|
  if (mid == 0) {
 | 
						|
    printf("println method lookup failed\n");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  (*env)->CallVoidMethod(env, obj, mid, s);
 | 
						|
}
 | 
						|
 |