macro_rules! object_reference {
($reference_name:ident: $owned_name:ident) => {
pub struct $reference_name {
inner: bindgen_prelude::ObjectRef,
}
impl $reference_name {
pub fn get_inner<'env>(
&self,
env: &'env napi::Env,
) -> Result<$owned_name<'env>, napi::Error> {
let inner = self.inner.get_value(env)?;
Ok($owned_name { inner })
}
}
impl<'env> $owned_name<'env> {
pub fn create_ref(&self) -> Result<$reference_name, napi::Error> {
let inner = self.inner.create_ref()?;
Ok($reference_name { inner })
}
}
};
}
pub(crate) use object_reference;