// This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT use crate::AllocationParams; use crate::Memory; use crate::Object; use glib::object::IsA; use glib::translate::*; glib::wrapper! { pub struct Allocator(Object) @extends Object; match fn { type_ => || ffi::gst_allocator_get_type(), } } impl Allocator { #[doc(alias = "gst_allocator_find")] pub fn find(name: Option<&str>) -> Option { assert_initialized_main_thread!(); unsafe { from_glib_full(ffi::gst_allocator_find(name.to_glib_none().0)) } } #[doc(alias = "gst_allocator_register")] pub fn register>(name: &str, allocator: &P) { skip_assert_initialized!(); unsafe { ffi::gst_allocator_register(name.to_glib_none().0, allocator.as_ref().to_glib_full()); } } } unsafe impl Send for Allocator {} unsafe impl Sync for Allocator {} pub const NONE_ALLOCATOR: Option<&Allocator> = None; pub trait AllocatorExt: 'static { #[doc(alias = "gst_allocator_alloc")] fn alloc( &self, size: usize, params: Option<&AllocationParams>, ) -> Result; #[doc(alias = "gst_allocator_set_default")] fn set_default(&self); } impl> AllocatorExt for O { fn alloc( &self, size: usize, params: Option<&AllocationParams>, ) -> Result { unsafe { Option::<_>::from_glib_full(ffi::gst_allocator_alloc( self.as_ref().to_glib_none().0, size, mut_override(params.to_glib_none().0), )) .ok_or_else(|| glib::bool_error!("Failed to allocate memory")) } } fn set_default(&self) { unsafe { ffi::gst_allocator_set_default(self.as_ref().to_glib_full()); } } }