Пример #1
0
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);
	}
}
Пример #2
0
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;
		}
	}
}
Пример #3
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;
}
Пример #4
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();
}