// 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 glib::object::Cast; use glib::object::IsA; use glib::signal::connect_raw; use glib::signal::SignalHandlerId; use glib::translate::*; use std::boxed::Box as Box_; use std::mem::transmute; glib::wrapper! { #[doc(alias = "GstChildProxy")] pub struct ChildProxy(Interface); match fn { type_ => || ffi::gst_child_proxy_get_type(), } } impl ChildProxy { pub const NONE: Option<&'static ChildProxy> = None; } unsafe impl Send for ChildProxy {} unsafe impl Sync for ChildProxy {} pub trait ChildProxyExt: 'static { #[doc(alias = "gst_child_proxy_child_added")] fn child_added(&self, child: &impl IsA, name: &str); #[doc(alias = "gst_child_proxy_child_removed")] fn child_removed(&self, child: &impl IsA, name: &str); //#[doc(alias = "gst_child_proxy_get")] //fn get(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Basic: VarArgs); #[doc(alias = "gst_child_proxy_get_child_by_index")] #[doc(alias = "get_child_by_index")] fn child_by_index(&self, index: u32) -> Option; #[doc(alias = "gst_child_proxy_get_child_by_name")] #[doc(alias = "get_child_by_name")] fn child_by_name(&self, name: &str) -> Option; #[cfg(any(feature = "v1_22", feature = "dox"))] #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_22")))] #[doc(alias = "gst_child_proxy_get_child_by_name_recurse")] #[doc(alias = "get_child_by_name_recurse")] fn child_by_name_recurse(&self, name: &str) -> Option; #[doc(alias = "gst_child_proxy_get_children_count")] #[doc(alias = "get_children_count")] fn children_count(&self) -> u32; //#[doc(alias = "gst_child_proxy_get_valist")] //#[doc(alias = "get_valist")] //fn valist(&self, first_property_name: &str, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported); //#[doc(alias = "gst_child_proxy_set")] //fn set(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Basic: VarArgs); //#[doc(alias = "gst_child_proxy_set_valist")] //fn set_valist(&self, first_property_name: &str, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported); #[doc(alias = "child-added")] fn connect_child_added( &self, f: F, ) -> SignalHandlerId; #[doc(alias = "child-removed")] fn connect_child_removed( &self, f: F, ) -> SignalHandlerId; } impl> ChildProxyExt for O { fn child_added(&self, child: &impl IsA, name: &str) { unsafe { ffi::gst_child_proxy_child_added( self.as_ref().to_glib_none().0, child.as_ref().to_glib_none().0, name.to_glib_none().0, ); } } fn child_removed(&self, child: &impl IsA, name: &str) { unsafe { ffi::gst_child_proxy_child_removed( self.as_ref().to_glib_none().0, child.as_ref().to_glib_none().0, name.to_glib_none().0, ); } } //fn get(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Basic: VarArgs) { // unsafe { TODO: call ffi:gst_child_proxy_get() } //} fn child_by_index(&self, index: u32) -> Option { unsafe { from_glib_full(ffi::gst_child_proxy_get_child_by_index( self.as_ref().to_glib_none().0, index, )) } } fn child_by_name(&self, name: &str) -> Option { unsafe { from_glib_full(ffi::gst_child_proxy_get_child_by_name( self.as_ref().to_glib_none().0, name.to_glib_none().0, )) } } #[cfg(any(feature = "v1_22", feature = "dox"))] #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_22")))] fn child_by_name_recurse(&self, name: &str) -> Option { unsafe { from_glib_full(ffi::gst_child_proxy_get_child_by_name_recurse( self.as_ref().to_glib_none().0, name.to_glib_none().0, )) } } fn children_count(&self) -> u32 { unsafe { ffi::gst_child_proxy_get_children_count(self.as_ref().to_glib_none().0) } } //fn valist(&self, first_property_name: &str, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported) { // unsafe { TODO: call ffi:gst_child_proxy_get_valist() } //} //fn set(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Basic: VarArgs) { // unsafe { TODO: call ffi:gst_child_proxy_set() } //} //fn set_valist(&self, first_property_name: &str, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported) { // unsafe { TODO: call ffi:gst_child_proxy_set_valist() } //} fn connect_child_added( &self, f: F, ) -> SignalHandlerId { unsafe extern "C" fn child_added_trampoline< P: IsA, F: Fn(&P, &glib::Object, &str) + Send + Sync + 'static, >( this: *mut ffi::GstChildProxy, object: *mut glib::gobject_ffi::GObject, name: *mut libc::c_char, f: glib::ffi::gpointer, ) { let f: &F = &*(f as *const F); f( ChildProxy::from_glib_borrow(this).unsafe_cast_ref(), &from_glib_borrow(object), &glib::GString::from_glib_borrow(name), ) } unsafe { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, b"child-added\0".as_ptr() as *const _, Some(transmute::<_, unsafe extern "C" fn()>( child_added_trampoline:: as *const (), )), Box_::into_raw(f), ) } } fn connect_child_removed( &self, f: F, ) -> SignalHandlerId { unsafe extern "C" fn child_removed_trampoline< P: IsA, F: Fn(&P, &glib::Object, &str) + Send + Sync + 'static, >( this: *mut ffi::GstChildProxy, object: *mut glib::gobject_ffi::GObject, name: *mut libc::c_char, f: glib::ffi::gpointer, ) { let f: &F = &*(f as *const F); f( ChildProxy::from_glib_borrow(this).unsafe_cast_ref(), &from_glib_borrow(object), &glib::GString::from_glib_borrow(name), ) } unsafe { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, b"child-removed\0".as_ptr() as *const _, Some(transmute::<_, unsafe extern "C" fn()>( child_removed_trampoline:: as *const (), )), Box_::into_raw(f), ) } } }