use pipewire_wrapper_proc_macro::RawWrapper;
use crate::spa::buffers;
use crate::wrapper::RawWrapper;
#[derive(RawWrapper, Debug)]
#[repr(transparent)]
pub struct BufferRef {
    #[raw]
    raw: pw_sys::pw_buffer,
}
impl BufferRef {
    pub fn buffer(&self) -> &buffers::BufferRef {
        unsafe { buffers::BufferRef::from_raw_ptr(self.raw.buffer) }
    }
    pub fn buffer_mut(&mut self) -> &mut buffers::BufferRef {
        unsafe { buffers::BufferRef::mut_from_raw_ptr(self.raw.buffer) }
    }
    unsafe fn get_user_data<T>(&self) -> Option<&mut T> {
        (self.raw.user_data as *mut T).as_mut()
    }
    pub fn size(&self) -> u64 {
        self.raw.size
    }
    }