use crate::ReferenceType;
use jni_sys::jobject;
use std::{marker::PhantomData, ptr::null_mut};
#[repr(transparent)]
pub struct Return<'env, T: ReferenceType> {
object: jobject,
_class: PhantomData<&'env T>,
}
impl<'env, T: ReferenceType> Return<'env, T> {
pub unsafe fn from_raw(object: jobject) -> Self {
Self {
object,
_class: PhantomData,
}
}
pub fn null() -> Self {
Self {
object: null_mut(),
_class: PhantomData,
}
}
pub fn as_raw(&self) -> jobject {
self.object
}
}
impl<'env, T: ReferenceType> Default for Return<'env, T> {
fn default() -> Self {
Self::null()
}
}