#![allow(deprecated)]
use blackboxmc_general::JNIInstantiatable;
use blackboxmc_general::JNIRaw;
use color_eyre::eyre::Result;
#[repr(C)]
pub struct JavaIntSupplier<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntSupplier<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntSupplier<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaIntSupplier from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntSupplier")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntSupplier object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntSupplier<'mc> {
pub fn as_int(&self) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("()I");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "getAsInt", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleToLongFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleToLongFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleToLongFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaDoubleToLongFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleToLongFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleToLongFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleToLongFunction<'mc> {
pub fn apply_as_long(&self, arg0: f64) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("(D)J");
let val_1 = jni::objects::JValueGen::Double(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsLong",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntUnaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntUnaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntUnaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaIntUnaryOperator from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntUnaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntUnaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntUnaryOperator<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaIntUnaryOperator<'mc>>,
) -> Result<crate::util::function::JavaIntUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/IntUnaryOperator;)Ljava/util/function/IntUnaryOperator;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaIntUnaryOperator::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn compose(
&self,
arg0: impl Into<crate::util::function::JavaIntUnaryOperator<'mc>>,
) -> Result<crate::util::function::JavaIntUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/IntUnaryOperator;)Ljava/util/function/IntUnaryOperator;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"compose",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaIntUnaryOperator::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn identity(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
) -> Result<crate::util::function::JavaIntUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/IntUnaryOperator;");
let cls = jni.find_class("java/util/function/IntUnaryOperator");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(cls, "identity", sig.as_str(), vec![]);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaIntUnaryOperator::from_raw(&jni, obj)
}
pub fn apply_as_int(&self, arg0: i32) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("(I)I");
let val_1 = jni::objects::JValueGen::Int(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsInt",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntToDoubleFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntToDoubleFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntToDoubleFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaIntToDoubleFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntToDoubleFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntToDoubleFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntToDoubleFunction<'mc> {
pub fn apply_as_double(&self, arg0: i32) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("(I)D");
let val_1 = jni::objects::JValueGen::Int(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsDouble",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaObjDoubleConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaObjDoubleConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaObjDoubleConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaObjDoubleConsumer from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ObjDoubleConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaObjDoubleConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaObjDoubleConsumer<'mc> {
pub fn accept(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: f64,
) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;D)V");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Double(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaPredicate<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaPredicate<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaPredicate<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!("Tried to instantiate JavaPredicate from null object.").into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/Predicate")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaPredicate object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaPredicate<'mc> {
pub fn or(
&self,
arg0: impl Into<crate::util::function::JavaPredicate<'mc>>,
) -> Result<crate::util::function::JavaPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"or",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn is_equal(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
arg0: jni::objects::JObject<'mc>,
) -> Result<crate::util::function::JavaPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)Ljava/util/function/Predicate;");
let val_1 = jni::objects::JValueGen::Object(arg0);
let cls = jni.find_class("java/util/function/Predicate");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(
cls,
"isEqual",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaPredicate::from_raw(&jni, obj)
}
pub fn negate(
&self,
) -> Result<crate::util::function::JavaPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/Predicate;");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "negate", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn and(
&self,
arg0: impl Into<crate::util::function::JavaPredicate<'mc>>,
) -> Result<crate::util::function::JavaPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"and",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn not(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
arg0: impl Into<crate::util::function::JavaPredicate<'mc>>,
) -> Result<crate::util::function::JavaPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let cls = jni.find_class("java/util/function/Predicate");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(
cls,
"not",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaPredicate::from_raw(&jni, obj)
}
pub fn test(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<bool, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)Z");
let val_1 = jni::objects::JValueGen::Object(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"test",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.z()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!("Tried to instantiate JavaFunction from null object.").into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/Function")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaFunction<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaFunction<'mc>>,
) -> Result<crate::util::function::JavaFunction<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Function;)Ljava/util/function/Function;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaFunction::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn compose(
&self,
arg0: impl Into<crate::util::function::JavaFunction<'mc>>,
) -> Result<crate::util::function::JavaFunction<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Function;)Ljava/util/function/Function;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"compose",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaFunction::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn apply(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)Ljava/lang/Object;");
let val_1 = jni::objects::JValueGen::Object(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"apply",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.l()?)
}
pub fn identity(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
) -> Result<crate::util::function::JavaFunction<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/Function;");
let cls = jni.find_class("java/util/function/Function");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(cls, "identity", sig.as_str(), vec![]);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaFunction::from_raw(&jni, obj)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaToLongFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaToLongFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaToLongFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaToLongFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ToLongFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaToLongFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaToLongFunction<'mc> {
pub fn apply_as_long(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)J");
let val_1 = jni::objects::JValueGen::Object(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsLong",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!("Tried to instantiate JavaConsumer from null object.").into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/Consumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaConsumer<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaConsumer<'mc>>,
) -> Result<crate::util::function::JavaConsumer<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaConsumer::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn accept(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)V");
let val_1 = jni::objects::JValueGen::Object(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaToIntBiFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaToIntBiFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaToIntBiFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaToIntBiFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ToIntBiFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaToIntBiFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaToIntBiFunction<'mc> {
pub fn apply_as_int(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;Ljava/lang/Object;)I");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Object(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsInt",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaObjLongConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaObjLongConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaObjLongConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaObjLongConsumer from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ObjLongConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaObjLongConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaObjLongConsumer<'mc> {
pub fn accept(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: i64,
) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;J)V");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Long(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongToIntFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongToIntFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongToIntFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaLongToIntFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongToIntFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongToIntFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongToIntFunction<'mc> {
pub fn apply_as_int(&self, arg0: i64) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("(J)I");
let val_1 = jni::objects::JValueGen::Long(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsInt",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaSupplier<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaSupplier<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaSupplier<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!("Tried to instantiate JavaSupplier from null object.").into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/Supplier")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaSupplier object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaSupplier<'mc> {
pub fn get(&self) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/lang/Object;");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "get", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
Ok(res.l()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaUnaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaUnaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaUnaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaUnaryOperator from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/UnaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaUnaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaUnaryOperator<'mc> {
pub fn identity(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
) -> Result<crate::util::function::JavaUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/UnaryOperator;");
let cls = jni.find_class("java/util/function/UnaryOperator");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(cls, "identity", sig.as_str(), vec![]);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaUnaryOperator::from_raw(&jni, obj)
}
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaFunction<'mc>>,
) -> Result<crate::util::function::JavaFunction<'mc>, Box<dyn std::error::Error>> {
let temp_clone = JavaUnaryOperator::from_raw(&self.0, unsafe {
jni::objects::JObject::from_raw(self.1.clone())
})?;
let real: crate::util::function::JavaFunction = temp_clone.into();
real.and_then(arg0)
}
pub fn compose(
&self,
arg0: impl Into<crate::util::function::JavaFunction<'mc>>,
) -> Result<crate::util::function::JavaFunction<'mc>, Box<dyn std::error::Error>> {
let temp_clone = JavaUnaryOperator::from_raw(&self.0, unsafe {
jni::objects::JObject::from_raw(self.1.clone())
})?;
let real: crate::util::function::JavaFunction = temp_clone.into();
real.compose(arg0)
}
pub fn apply(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let temp_clone = JavaUnaryOperator::from_raw(&self.0, unsafe {
jni::objects::JObject::from_raw(self.1.clone())
})?;
let real: crate::util::function::JavaFunction = temp_clone.into();
real.apply(arg0)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
impl<'mc> Into<crate::util::function::JavaFunction<'mc>> for JavaUnaryOperator<'mc> {
fn into(self) -> crate::util::function::JavaFunction<'mc> {
crate::util::function::JavaFunction::from_raw(&self.jni_ref(), self.1)
.expect("Error converting JavaUnaryOperator into crate::util::function::JavaFunction")
}
}
#[repr(C)]
pub struct JavaObjIntConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaObjIntConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaObjIntConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaObjIntConsumer from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ObjIntConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaObjIntConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaObjIntConsumer<'mc> {
pub fn accept(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: i32,
) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;I)V");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Int(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaBinaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaBinaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaBinaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaBinaryOperator from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/BinaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaBinaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaBinaryOperator<'mc> {
pub fn max_by(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
arg0: impl Into<crate::util::JavaComparator<'mc>>,
) -> Result<crate::util::function::JavaBinaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/Comparator;)Ljava/util/function/BinaryOperator;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let cls = jni.find_class("java/util/function/BinaryOperator");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(
cls,
"maxBy",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaBinaryOperator::from_raw(&jni, obj)
}
pub fn min_by(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
arg0: impl Into<crate::util::JavaComparator<'mc>>,
) -> Result<crate::util::function::JavaBinaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/Comparator;)Ljava/util/function/BinaryOperator;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let cls = jni.find_class("java/util/function/BinaryOperator");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(
cls,
"minBy",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaBinaryOperator::from_raw(&jni, obj)
}
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaFunction<'mc>>,
) -> Result<crate::util::function::JavaBiFunction<'mc>, Box<dyn std::error::Error>> {
let temp_clone = JavaBinaryOperator::from_raw(&self.0, unsafe {
jni::objects::JObject::from_raw(self.1.clone())
})?;
let real: crate::util::function::JavaBiFunction = temp_clone.into();
real.and_then(arg0)
}
pub fn apply(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let temp_clone = JavaBinaryOperator::from_raw(&self.0, unsafe {
jni::objects::JObject::from_raw(self.1.clone())
})?;
let real: crate::util::function::JavaBiFunction = temp_clone.into();
real.apply(arg0, arg1)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
impl<'mc> Into<crate::util::function::JavaBiFunction<'mc>> for JavaBinaryOperator<'mc> {
fn into(self) -> crate::util::function::JavaBiFunction<'mc> {
crate::util::function::JavaBiFunction::from_raw(&self.jni_ref(), self.1).expect(
"Error converting JavaBinaryOperator into crate::util::function::JavaBiFunction",
)
}
}
#[repr(C)]
pub struct JavaBooleanSupplier<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaBooleanSupplier<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaBooleanSupplier<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaBooleanSupplier from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/BooleanSupplier")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaBooleanSupplier object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaBooleanSupplier<'mc> {
pub fn as_boolean(&self) -> Result<bool, Box<dyn std::error::Error>> {
let sig = String::from("()Z");
let res =
self.jni_ref()
.call_method(&self.jni_object(), "getAsBoolean", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
Ok(res.z()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaToDoubleFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaToDoubleFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaToDoubleFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaToDoubleFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ToDoubleFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaToDoubleFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaToDoubleFunction<'mc> {
pub fn apply_as_double(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)D");
let val_1 = jni::objects::JValueGen::Object(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsDouble",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleUnaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleUnaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleUnaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaDoubleUnaryOperator from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleUnaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleUnaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleUnaryOperator<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaDoubleUnaryOperator<'mc>>,
) -> Result<crate::util::function::JavaDoubleUnaryOperator<'mc>, Box<dyn std::error::Error>>
{
let sig = String::from(
"(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaDoubleUnaryOperator::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn compose(
&self,
arg0: impl Into<crate::util::function::JavaDoubleUnaryOperator<'mc>>,
) -> Result<crate::util::function::JavaDoubleUnaryOperator<'mc>, Box<dyn std::error::Error>>
{
let sig = String::from(
"(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"compose",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaDoubleUnaryOperator::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn identity(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
) -> Result<crate::util::function::JavaDoubleUnaryOperator<'mc>, Box<dyn std::error::Error>>
{
let sig = String::from("()Ljava/util/function/DoubleUnaryOperator;");
let cls = jni.find_class("java/util/function/DoubleUnaryOperator");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(cls, "identity", sig.as_str(), vec![]);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaDoubleUnaryOperator::from_raw(&jni, obj)
}
pub fn apply_as_double(&self, arg0: f64) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("(D)D");
let val_1 = jni::objects::JValueGen::Double(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsDouble",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongBinaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongBinaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongBinaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaLongBinaryOperator from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongBinaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongBinaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongBinaryOperator<'mc> {
pub fn apply_as_long(&self, arg0: i64, arg1: i64) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("(JJ)J");
let val_1 = jni::objects::JValueGen::Long(arg0);
let val_2 = jni::objects::JValueGen::Long(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsLong",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntPredicate<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntPredicate<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntPredicate<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaIntPredicate from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntPredicate")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntPredicate object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntPredicate<'mc> {
pub fn or(
&self,
arg0: impl Into<crate::util::function::JavaIntPredicate<'mc>>,
) -> Result<crate::util::function::JavaIntPredicate<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/IntPredicate;)Ljava/util/function/IntPredicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"or",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaIntPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn negate(
&self,
) -> Result<crate::util::function::JavaIntPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/IntPredicate;");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "negate", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaIntPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn and(
&self,
arg0: impl Into<crate::util::function::JavaIntPredicate<'mc>>,
) -> Result<crate::util::function::JavaIntPredicate<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/IntPredicate;)Ljava/util/function/IntPredicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"and",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaIntPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn test(&self, arg0: i32) -> Result<bool, Box<dyn std::error::Error>> {
let sig = String::from("(I)Z");
let val_1 = jni::objects::JValueGen::Int(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"test",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.z()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoublePredicate<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoublePredicate<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoublePredicate<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaDoublePredicate from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoublePredicate")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoublePredicate object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoublePredicate<'mc> {
pub fn or(
&self,
arg0: impl Into<crate::util::function::JavaDoublePredicate<'mc>>,
) -> Result<crate::util::function::JavaDoublePredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/DoublePredicate;)Ljava/util/function/DoublePredicate;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"or",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaDoublePredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn negate(
&self,
) -> Result<crate::util::function::JavaDoublePredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/DoublePredicate;");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "negate", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaDoublePredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn and(
&self,
arg0: impl Into<crate::util::function::JavaDoublePredicate<'mc>>,
) -> Result<crate::util::function::JavaDoublePredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/DoublePredicate;)Ljava/util/function/DoublePredicate;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"and",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaDoublePredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn test(&self, arg0: f64) -> Result<bool, Box<dyn std::error::Error>> {
let sig = String::from("(D)Z");
let val_1 = jni::objects::JValueGen::Double(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"test",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.z()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaToDoubleBiFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaToDoubleBiFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaToDoubleBiFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaToDoubleBiFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ToDoubleBiFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaToDoubleBiFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaToDoubleBiFunction<'mc> {
pub fn apply_as_double(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;Ljava/lang/Object;)D");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Object(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsDouble",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongPredicate<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongPredicate<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongPredicate<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaLongPredicate from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongPredicate")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongPredicate object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongPredicate<'mc> {
pub fn or(
&self,
arg0: impl Into<crate::util::function::JavaLongPredicate<'mc>>,
) -> Result<crate::util::function::JavaLongPredicate<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/LongPredicate;)Ljava/util/function/LongPredicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"or",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaLongPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn negate(
&self,
) -> Result<crate::util::function::JavaLongPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/LongPredicate;");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "negate", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaLongPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn and(
&self,
arg0: impl Into<crate::util::function::JavaLongPredicate<'mc>>,
) -> Result<crate::util::function::JavaLongPredicate<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/LongPredicate;)Ljava/util/function/LongPredicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"and",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaLongPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn test(&self, arg0: i64) -> Result<bool, Box<dyn std::error::Error>> {
let sig = String::from("(J)Z");
let val_1 = jni::objects::JValueGen::Long(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"test",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.z()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaIntConsumer from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntConsumer<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaIntConsumer<'mc>>,
) -> Result<crate::util::function::JavaIntConsumer<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/IntConsumer;)Ljava/util/function/IntConsumer;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaIntConsumer::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn accept(&self, arg0: i32) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(I)V");
let val_1 = jni::objects::JValueGen::Int(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongToDoubleFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongToDoubleFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongToDoubleFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaLongToDoubleFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongToDoubleFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongToDoubleFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongToDoubleFunction<'mc> {
pub fn apply_as_double(&self, arg0: i64) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("(J)D");
let val_1 = jni::objects::JValueGen::Long(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsDouble",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaDoubleFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleFunction<'mc> {
pub fn apply(
&self,
arg0: f64,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(D)Ljava/lang/Object;");
let val_1 = jni::objects::JValueGen::Double(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"apply",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.l()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaLongConsumer from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongConsumer<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaLongConsumer<'mc>>,
) -> Result<crate::util::function::JavaLongConsumer<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/LongConsumer;)Ljava/util/function/LongConsumer;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaLongConsumer::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn accept(&self, arg0: i64) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(J)V");
let val_1 = jni::objects::JValueGen::Long(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaDoubleConsumer from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleConsumer<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaDoubleConsumer<'mc>>,
) -> Result<crate::util::function::JavaDoubleConsumer<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/DoubleConsumer;)Ljava/util/function/DoubleConsumer;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaDoubleConsumer::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn accept(&self, arg0: f64) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(D)V");
let val_1 = jni::objects::JValueGen::Double(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleBinaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleBinaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleBinaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaDoubleBinaryOperator from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleBinaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleBinaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleBinaryOperator<'mc> {
pub fn apply_as_double(&self, arg0: f64, arg1: f64) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("(DD)D");
let val_1 = jni::objects::JValueGen::Double(arg0);
let val_2 = jni::objects::JValueGen::Double(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsDouble",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaLongFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongFunction<'mc> {
pub fn apply(
&self,
arg0: i64,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(J)Ljava/lang/Object;");
let val_1 = jni::objects::JValueGen::Long(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"apply",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.l()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaBiFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaBiFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaBiFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaBiFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/BiFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaBiFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaBiFunction<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaFunction<'mc>>,
) -> Result<crate::util::function::JavaBiFunction<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/Function;)Ljava/util/function/BiFunction;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaBiFunction::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn apply(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Object(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"apply",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.l()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleSupplier<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleSupplier<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleSupplier<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaDoubleSupplier from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleSupplier")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleSupplier object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleSupplier<'mc> {
pub fn as_double(&self) -> Result<f64, Box<dyn std::error::Error>> {
let sig = String::from("()D");
let res =
self.jni_ref()
.call_method(&self.jni_object(), "getAsDouble", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
Ok(res.d()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaIntFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntFunction<'mc> {
pub fn apply(
&self,
arg0: i32,
) -> Result<jni::objects::JObject<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(I)Ljava/lang/Object;");
let val_1 = jni::objects::JValueGen::Int(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"apply",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.l()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntBinaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntBinaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntBinaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaIntBinaryOperator from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntBinaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntBinaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntBinaryOperator<'mc> {
pub fn apply_as_int(&self, arg0: i32, arg1: i32) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("(II)I");
let val_1 = jni::objects::JValueGen::Int(arg0);
let val_2 = jni::objects::JValueGen::Int(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsInt",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongUnaryOperator<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongUnaryOperator<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongUnaryOperator<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaLongUnaryOperator from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongUnaryOperator")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongUnaryOperator object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongUnaryOperator<'mc> {
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaLongUnaryOperator<'mc>>,
) -> Result<crate::util::function::JavaLongUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/LongUnaryOperator;)Ljava/util/function/LongUnaryOperator;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaLongUnaryOperator::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn compose(
&self,
arg0: impl Into<crate::util::function::JavaLongUnaryOperator<'mc>>,
) -> Result<crate::util::function::JavaLongUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from(
"(Ljava/util/function/LongUnaryOperator;)Ljava/util/function/LongUnaryOperator;",
);
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"compose",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaLongUnaryOperator::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn identity(
jni: &blackboxmc_general::SharedJNIEnv<'mc>,
) -> Result<crate::util::function::JavaLongUnaryOperator<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/LongUnaryOperator;");
let cls = jni.find_class("java/util/function/LongUnaryOperator");
let cls = jni.translate_error_with_class(cls)?;
let res = jni.call_static_method(cls, "identity", sig.as_str(), vec![]);
let res = jni.translate_error(res)?;
let obj = res.l()?;
crate::util::function::JavaLongUnaryOperator::from_raw(&jni, obj)
}
pub fn apply_as_long(&self, arg0: i64) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("(J)J");
let val_1 = jni::objects::JValueGen::Long(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsLong",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaIntToLongFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaIntToLongFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaIntToLongFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaIntToLongFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/IntToLongFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaIntToLongFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaIntToLongFunction<'mc> {
pub fn apply_as_long(&self, arg0: i32) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("(I)J");
let val_1 = jni::objects::JValueGen::Int(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsLong",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaToIntFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaToIntFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaToIntFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaToIntFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ToIntFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaToIntFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaToIntFunction<'mc> {
pub fn apply_as_int(
&self,
arg0: jni::objects::JObject<'mc>,
) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;)I");
let val_1 = jni::objects::JValueGen::Object(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsInt",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaLongSupplier<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaLongSupplier<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaLongSupplier<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaLongSupplier from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/LongSupplier")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaLongSupplier object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaLongSupplier<'mc> {
pub fn as_long(&self) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("()J");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "getAsLong", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaToLongBiFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaToLongBiFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaToLongBiFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaToLongBiFunction from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/ToLongBiFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaToLongBiFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaToLongBiFunction<'mc> {
pub fn apply_as_long(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<i64, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;Ljava/lang/Object;)J");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Object(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsLong",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.j()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaBiConsumer<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaBiConsumer<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaBiConsumer<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaBiConsumer from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/BiConsumer")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaBiConsumer object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaBiConsumer<'mc> {
#[cfg(not(target_arch = "wasm32"))]
pub fn from_rust_fn<'mc2, A, B, C>(
env: &'mc2 blackboxmc_general::SharedJNIEnv<'mc>,
f: A,
) -> Result<Self, Box<dyn std::error::Error>>
where
A: Fn(&'mc2 blackboxmc_general::SharedJNIEnv<'mc>, B, C),
B: blackboxmc_general::JNIInstantiatable<'mc>,
C: blackboxmc_general::JNIInstantiatable<'mc>,
{
let closure: &_ = Box::leak(Box::new(
move |a: *mut jni::sys::_jobject, b: *mut jni::sys::_jobject| unsafe {
f(
env,
B::from_raw(&env, jni::objects::JObject::from_raw(a)).unwrap(),
C::from_raw(&env, jni::objects::JObject::from_raw(b)).unwrap(),
);
},
));
let callback = libffi::high::Closure2::new(closure);
let &code = callback.code_ptr();
let ptr: unsafe extern "C" fn(*const jni::sys::jobject) =
unsafe { std::mem::transmute(code) };
std::mem::forget(callback);
let obj = env.new_object(
"net/ioixd/blackbox/BiConsumerLink",
"(J)V",
vec![(ptr as i64).into()],
);
let obj = env.translate_error_no_gen(obj)?;
Self::from_raw(&env, obj)
}
pub fn and_then(
&self,
arg0: impl Into<crate::util::function::JavaBiConsumer<'mc>>,
) -> Result<crate::util::function::JavaBiConsumer<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/util/function/BiConsumer;)Ljava/util/function/BiConsumer;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"andThen",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaBiConsumer::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn accept(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<(), Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;Ljava/lang/Object;)V");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Object(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"accept",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
self.jni_ref().translate_error(res)?;
Ok(())
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaBiPredicate<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaBiPredicate<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaBiPredicate<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(
eyre::eyre!("Tried to instantiate JavaBiPredicate from null object.").into(),
);
}
let (valid, name) = env.validate_name(&obj, "java/util/function/BiPredicate")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaBiPredicate object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaBiPredicate<'mc> {
pub fn or(
&self,
arg0: impl Into<crate::util::function::JavaBiPredicate<'mc>>,
) -> Result<crate::util::function::JavaBiPredicate<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/BiPredicate;)Ljava/util/function/BiPredicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"or",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaBiPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn negate(
&self,
) -> Result<crate::util::function::JavaBiPredicate<'mc>, Box<dyn std::error::Error>> {
let sig = String::from("()Ljava/util/function/BiPredicate;");
let res = self
.jni_ref()
.call_method(&self.jni_object(), "negate", sig.as_str(), vec![]);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaBiPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn and(
&self,
arg0: impl Into<crate::util::function::JavaBiPredicate<'mc>>,
) -> Result<crate::util::function::JavaBiPredicate<'mc>, Box<dyn std::error::Error>> {
let sig =
String::from("(Ljava/util/function/BiPredicate;)Ljava/util/function/BiPredicate;");
let val_1 = jni::objects::JValueGen::Object(unsafe {
jni::objects::JObject::from_raw(arg0.into().jni_object().clone())
});
let res = self.jni_ref().call_method(
&self.jni_object(),
"and",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
crate::util::function::JavaBiPredicate::from_raw(&self.jni_ref(), unsafe {
jni::objects::JObject::from_raw(res.l()?.clone())
})
}
pub fn test(
&self,
arg0: jni::objects::JObject<'mc>,
arg1: jni::objects::JObject<'mc>,
) -> Result<bool, Box<dyn std::error::Error>> {
let sig = String::from("(Ljava/lang/Object;Ljava/lang/Object;)Z");
let val_1 = jni::objects::JValueGen::Object(arg0);
let val_2 = jni::objects::JValueGen::Object(arg1);
let res = self.jni_ref().call_method(
&self.jni_object(),
"test",
sig.as_str(),
vec![
jni::objects::JValueGen::from(val_1),
jni::objects::JValueGen::from(val_2),
],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.z()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}
#[repr(C)]
pub struct JavaDoubleToIntFunction<'mc>(
pub(crate) blackboxmc_general::SharedJNIEnv<'mc>,
pub(crate) jni::objects::JObject<'mc>,
);
impl<'mc> JNIRaw<'mc> for JavaDoubleToIntFunction<'mc> {
fn jni_ref(&self) -> blackboxmc_general::SharedJNIEnv<'mc> {
self.0.clone()
}
fn jni_object(&self) -> jni::objects::JObject<'mc> {
unsafe { jni::objects::JObject::from_raw(self.1.clone()) }
}
}
impl<'mc> JNIInstantiatable<'mc> for JavaDoubleToIntFunction<'mc> {
fn from_raw(
env: &blackboxmc_general::SharedJNIEnv<'mc>,
obj: jni::objects::JObject<'mc>,
) -> Result<Self, Box<dyn std::error::Error>> {
if obj.is_null() {
return Err(eyre::eyre!(
"Tried to instantiate JavaDoubleToIntFunction from null object."
)
.into());
}
let (valid, name) = env.validate_name(&obj, "java/util/function/DoubleToIntFunction")?;
if !valid {
Err(eyre::eyre!(
"Invalid argument passed. Expected a JavaDoubleToIntFunction object, got {}",
name
)
.into())
} else {
Ok(Self(env.clone(), obj))
}
}
}
impl<'mc> JavaDoubleToIntFunction<'mc> {
pub fn apply_as_int(&self, arg0: f64) -> Result<i32, Box<dyn std::error::Error>> {
let sig = String::from("(D)I");
let val_1 = jni::objects::JValueGen::Double(arg0);
let res = self.jni_ref().call_method(
&self.jni_object(),
"applyAsInt",
sig.as_str(),
vec![jni::objects::JValueGen::from(val_1)],
);
let res = self.jni_ref().translate_error(res)?;
Ok(res.i()?)
}
pub fn instance_of(&self, other: impl Into<String>) -> Result<bool, jni::errors::Error> {
let cls = &self.jni_ref().find_class(other.into().as_str())?;
self.jni_ref().is_instance_of(&self.jni_object(), cls)
}
}