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);
 | |
| }
 | |
| 
 |