home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jsamples.z / NativeExampleImpl.c < prev    next >
C/C++ Source or Header  |  1997-07-17  |  2KB  |  66 lines

  1. /*
  2.  * This file contains the implementation of the native methods, that
  3.  * are declared in class NativeExample.
  4.  */
  5. #include "jni.h"
  6. #include <stdio.h>
  7. /*
  8.  * Display a Java string on the console
  9.  */
  10. #pragma argsused
  11. void JNICALL JNIEXPORT Java_NativeExample_Display(
  12.     JNIEnv     *env,
  13.     jclass    cl,
  14.     jstring     str)
  15. {
  16.     const char *buf = (*env)->GetStringUTFChars(env, str, 0);
  17.     printf(buf);
  18.     (*env)->ReleaseStringUTFChars(env, str, buf);
  19.     return;
  20. }
  21.  
  22. /*
  23.  * A simple calculation, using the long integer macros
  24.  */
  25. #pragma argsused
  26. jlong JNICALL JNIEXPORT Java_NativeExample_Sub(
  27.     JNIEnv    *env,
  28.     jclass    cl,
  29.     jlong    a,
  30.     jlong    b)
  31. {
  32.     return ll_sub(a, b);
  33. }
  34.  
  35. /*
  36.  * This method shows how to call a Java method from native
  37.  * code. Method int Fib(int) is defined in class Fibonacci.
  38.  */
  39. #pragma argsused
  40. void JNICALL JNIEXPORT Java_NativeExample_Fibonacci(
  41.     JNIEnv    *env,
  42.     jclass    cl,
  43.     jint    fib_arg)
  44. {
  45.     jclass    fib_cl;
  46.     jmethodID    fib_id;
  47.     jint    fib_result;
  48.  
  49.     /* lookup the Fibonacci class */
  50.     fib_cl = (*env)->FindClass(env, "Fibonacci");
  51.     if (fib_cl)
  52.     {
  53.     fib_id = (*env)->GetStaticMethodID(env, fib_cl, "Fib", "(I)I");
  54.     if(fib_id)
  55.     {
  56.         /* call a java method from native code */
  57.         fib_result = (*env)->CallStaticIntMethod(env, fib_cl, fib_id, fib_arg);
  58.         printf("Fib(%d)=%d\n", fib_arg, fib_result);
  59.     }
  60.     else
  61.         printf("In class Fibonacci: int Fib(int) not defined\n");
  62.     }
  63.     else
  64.         printf("class not found\n");
  65. }
  66.