use crate::*;
use winapi::ctypes::c_void;
use core::marker::PhantomData;
#[repr(transparent)] pub struct Owned(HANDLENN);
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[repr(transparent)] pub struct Borrowed<'a>(HANDLENN, PhantomData<&'a HANDLENN>);
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[repr(transparent)] pub struct Psuedo<'a>(HANDLENN, PhantomData<&'a HANDLENN>);
handles!(unsafe impl *LocalHandleNN<c_void> for handle::{Owned, Borrowed<'_>, Psuedo<'_>});
handles!(unsafe impl AsRef<Self> for handle::{Owned, Borrowed<'_>, Psuedo<'_>});
handles!(unsafe impl {AsRef, From} for handle::{Owned, Borrowed<'_>, Psuedo<'_>});
handles!(impl Debug for handle::{Owned, Borrowed<'_>, Psuedo<'_>});
impl Drop for Owned { fn drop(&mut self) { unsafe { drop_close_handle_nn(self) } } }