jni-callmethod.c

来自「基于LWVCL开发的库」· C语言 代码 · 共 1,882 行 · 第 1/3 页

C
1,882
字号
  return (retval.d);}/* ------------------------------------------------------------------------------ * Non-virtual method calls returning void * ------------------------------------------------------------------------------ */voidKaffeJNI_CallNonvirtualVoidMethodV(JNIEnv* env UNUSED, jobject obj, jclass cls UNUSED, jmethodID meth, va_list args){  Method* m = (Method*)meth;  jobject obj_local;  BEGIN_EXCEPTION_HANDLING_VOID();  if (METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  obj_local = unveil(obj);  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), obj_local, args, NULL);  END_EXCEPTION_HANDLING();}voidKaffeJNI_CallNonvirtualVoidMethod(JNIEnv* env, jobject obj, jclass cls, jmethodID meth, ...){  va_list args;  BEGIN_EXCEPTION_HANDLING_VOID();  va_start(args, meth);  KaffeJNI_CallNonvirtualVoidMethodV(env, obj, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();}voidKaffeJNI_CallNonvirtualVoidMethodA(JNIEnv* env UNUSED, jobject obj, jclass cls UNUSED, jmethodID meth, jvalue* args){  Method* m = (Method*)meth;  jobject obj_local;  BEGIN_EXCEPTION_HANDLING_VOID();  if (METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  obj_local = unveil(obj);  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), obj_local, args, NULL, 0);  END_EXCEPTION_HANDLING();}/* ------------------------------------------------------------------------------ * Static method calls returning Object * ------------------------------------------------------------------------------ */jobjectKaffeJNI_CallStaticObjectMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(NULL);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  ADD_REF(retval.l);  END_EXCEPTION_HANDLING();  return (retval.l);}jobjectKaffeJNI_CallStaticObjectMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jobject r;  BEGIN_EXCEPTION_HANDLING(NULL);  va_start(args, meth);  r = KaffeJNI_CallStaticObjectMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jobjectKaffeJNI_CallStaticObjectMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(NULL);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  ADD_REF(retval.l);  END_EXCEPTION_HANDLING();  return (retval.l);}/* ------------------------------------------------------------------------------ * Static method calls returning boolean * ------------------------------------------------------------------------------ */jbooleanKaffeJNI_CallStaticBooleanMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return ((jboolean) retval.i);}jbooleanKaffeJNI_CallStaticBooleanMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jboolean r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticBooleanMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jbooleanKaffeJNI_CallStaticBooleanMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return ((jboolean) retval.i);}/* ------------------------------------------------------------------------------ * Static method calls returning byte * ------------------------------------------------------------------------------ */jbyteKaffeJNI_CallStaticByteMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return ((jbyte) retval.i);}jbyteKaffeJNI_CallStaticByteMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jbyte r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticByteMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jbyteKaffeJNI_CallStaticByteMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return ((jbyte) retval.i);}/* ------------------------------------------------------------------------------ * Static method calls returning char * ------------------------------------------------------------------------------ */jcharKaffeJNI_CallStaticCharMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return ((jchar) retval.i);}jcharKaffeJNI_CallStaticCharMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jchar r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticCharMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jcharKaffeJNI_CallStaticCharMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return ((jchar) retval.i);}/* ------------------------------------------------------------------------------ * Static method calls returning short * ------------------------------------------------------------------------------ */jshortKaffeJNI_CallStaticShortMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return ((jshort) retval.i);}jshortKaffeJNI_CallStaticShortMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jshort r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticShortMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jshortKaffeJNI_CallStaticShortMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return ((jshort) retval.i);}/* ------------------------------------------------------------------------------ * Static method calls returning int * ------------------------------------------------------------------------------ */jintKaffeJNI_CallStaticIntMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return (retval.i);}jintKaffeJNI_CallStaticIntMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jint r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticIntMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jintKaffeJNI_CallStaticIntMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return (retval.i);}/* ------------------------------------------------------------------------------ * Static method calls returning long * ------------------------------------------------------------------------------ */jlongKaffeJNI_CallStaticLongMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return (retval.j);}jlongKaffeJNI_CallStaticLongMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jlong r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticLongMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jlongKaffeJNI_CallStaticLongMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return (retval.j);}/* ------------------------------------------------------------------------------ * Static method calls returning float * ------------------------------------------------------------------------------ */jfloatKaffeJNI_CallStaticFloatMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return (retval.f);}jfloatKaffeJNI_CallStaticFloatMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jfloat r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticFloatMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jfloatKaffeJNI_CallStaticFloatMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return (retval.f);}/* ------------------------------------------------------------------------------ * Static method calls returning double * ------------------------------------------------------------------------------ */jdoubleKaffeJNI_CallStaticDoubleMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();  return (retval.d);}jdoubleKaffeJNI_CallStaticDoubleMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  jdouble r;  BEGIN_EXCEPTION_HANDLING(0);  va_start(args, meth);  r = KaffeJNI_CallStaticDoubleMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();  return (r);}jdoubleKaffeJNI_CallStaticDoubleMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING(0);  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, &retval, 0);  END_EXCEPTION_HANDLING();  return (retval.d);}/* ------------------------------------------------------------------------------ * Static method calls returning void * ------------------------------------------------------------------------------ */voidKaffeJNI_CallStaticVoidMethodV(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, va_list args){  jvalue retval;  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING_VOID();  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodV(m, METHOD_NATIVECODE(m), NULL, args, &retval);  END_EXCEPTION_HANDLING();}voidKaffeJNI_CallStaticVoidMethod(JNIEnv* env, jclass cls, jmethodID meth, ...){  va_list args;  BEGIN_EXCEPTION_HANDLING_VOID();  va_start(args, meth);  KaffeJNI_CallStaticVoidMethodV(env, cls, meth, args);  va_end(args);  END_EXCEPTION_HANDLING();}voidKaffeJNI_CallStaticVoidMethodA(JNIEnv* env UNUSED, jclass cls UNUSED, jmethodID meth, jvalue* args){  Method* m = (Method*)meth;  BEGIN_EXCEPTION_HANDLING_VOID();  if (!METHOD_IS_STATIC(m)) {    throwException(NoSuchMethodError(m->name->data));  }  KaffeVM_callMethodA(m, METHOD_NATIVECODE(m), NULL, args, NULL, 0);  END_EXCEPTION_HANDLING();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?