void Callable::callMethod<void>(JNIEnv* env, Signature* signature, ...) { Method* method = this->getMethodDescriptor(env, signature); if (method != 0) { va_list arguments_list; va_start(arguments_list, signature); jobject object = this->getJavaObject(env); env->CallVoidMethodV(object, method->getMethodID(), arguments_list); env->DeleteLocalRef(object); va_end(arguments_list); } }
Object::Object(JNIEnv* env, Name* className, Signature* signature, ...) { this->classObject = Class::getClass(className, env); if (this->classObject != 0) { jclass clazz = this->classObject->getClassObject(env); if (clazz != 0) { Method* method = this->classObject->getMethod(env, signature); if (method != 0) { va_list arguments_list; va_start(arguments_list, signature); this->setJavaObject(env->NewObjectV(clazz, method->getMethodID(), arguments_list)); va_end(arguments_list); } } else { this->classObject = 0; } } }
jbyte Callable::callMethod<jbyte>(JNIEnv* env, Signature* signature, ...) { Method* method = this->getMethodDescriptor(env, signature); if (method != 0) { va_list arguments_list; va_start(arguments_list, signature); jobject object = this->getJavaObject(env); jbyte value; if (object != 0) { value = env->CallByteMethodV(object, method->getMethodID(), arguments_list); } else { return 0; } env->DeleteLocalRef(object); va_end(arguments_list); return value; } return 0; }
inline ::fr::Planquart::JNI::Object Callable::callObjectMethodV(JNIEnv* env, Signature* signature, va_list arguments_list) { Method* method = this->getMethodDescriptor(env, signature); if (method != 0) { jobject object = this->getJavaObject(env); jobject value; if (object != 0) { value = env->CallObjectMethodV(object, method->getMethodID(), arguments_list); } else { return Object(); } env->DeleteLocalRef(object); return Object(Class::getClass(JVM::class_Object, env), value); } return Object(); }