use std::marker::PhantomData;
use uika_ffi::UObjectHandle;
use crate::traits::UeStruct;
pub struct UStructRef<T: UeStruct> {
ptr: *mut u8,
_marker: PhantomData<T>,
}
impl<T: UeStruct> UStructRef<T> {
#[inline]
pub unsafe fn from_raw(ptr: *mut u8) -> Self {
UStructRef {
ptr,
_marker: PhantomData,
}
}
#[inline]
pub fn as_ptr(&self) -> UObjectHandle {
UObjectHandle(self.ptr as *mut std::ffi::c_void)
}
}
impl<T: UeStruct> std::fmt::Debug for UStructRef<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("UStructRef")
.field("ptr", &self.ptr)
.finish()
}
}