diff options
author | Tom Tromey <tromey@redhat.com> | 2001-01-26 22:41:41 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-01-26 22:41:41 +0000 |
commit | d0815622ea10a9a0f8c8a31a72660ecd7e483527 (patch) | |
tree | 17bd19053cde7d6de4e9c446d110697f23276823 /libjava/testsuite/libjava.jni/martin.c | |
parent | 66cce54da0e53c27e2b59ebb416c95e54191e9fc (diff) | |
download | gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.zip gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.tar.gz gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.tar.bz2 |
martin.out: New file.
* libjava.jni/martin.out: New file.
* libjava.jni/martin.c: New file.
* libjava.jni/martin.java: New file.
From-SVN: r39286
Diffstat (limited to 'libjava/testsuite/libjava.jni/martin.c')
-rw-r--r-- | libjava/testsuite/libjava.jni/martin.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.jni/martin.c b/libjava/testsuite/libjava.jni/martin.c new file mode 100644 index 0000000..31f53e1 --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.c @@ -0,0 +1,41 @@ +#include <jni.h> +#include "martin.h" +#include <stdio.h> + +void Java_martin_myNative(JNIEnv* env, jobject this, jstring s) +{ + jclass cls; + jfieldID fid; + jobject obj; + jmethodID mid; + + printf("From C\n"); + + 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); +} + |