gstreamer/auto/
object.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6use crate::{ClockTime, ControlBinding, ffi};
7use glib::{
8    prelude::*,
9    signal::{SignalHandlerId, connect_raw},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    #[doc(alias = "GstObject")]
16    pub struct Object(Object<ffi::GstObject, ffi::GstObjectClass>);
17
18    match fn {
19        type_ => || ffi::gst_object_get_type(),
20    }
21}
22
23impl Object {
24    pub const NONE: Option<&'static Object> = None;
25
26    #[doc(alias = "gst_object_check_uniqueness")]
27    pub fn check_uniqueness(list: &[Object], name: &str) -> bool {
28        assert_initialized_main_thread!();
29        unsafe {
30            from_glib(ffi::gst_object_check_uniqueness(
31                list.to_glib_none().0,
32                name.to_glib_none().0,
33            ))
34        }
35    }
36
37    //#[doc(alias = "gst_object_default_deep_notify")]
38    //pub fn default_deep_notify(object: &impl IsA<glib::Object>, orig: &impl IsA<Object>, pspec: /*Ignored*/&glib::ParamSpec, excluded_props: &[&str]) {
39    //    unsafe { TODO: call ffi:gst_object_default_deep_notify() }
40    //}
41
42    //#[doc(alias = "gst_object_replace")]
43    //pub fn replace(oldobj: Option<impl IsA<Object>>, newobj: Option<&impl IsA<Object>>) -> bool {
44    //    unsafe { TODO: call ffi:gst_object_replace() }
45    //}
46}
47
48impl std::fmt::Display for Object {
49    #[inline]
50    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
51        f.write_str(&GstObjectExt::name(self))
52    }
53}
54
55unsafe impl Send for Object {}
56unsafe impl Sync for Object {}
57
58pub trait GstObjectExt: IsA<Object> + 'static {
59    #[doc(alias = "gst_object_add_control_binding")]
60    fn add_control_binding(
61        &self,
62        binding: &impl IsA<ControlBinding>,
63    ) -> Result<(), glib::error::BoolError> {
64        unsafe {
65            glib::result_from_gboolean!(
66                ffi::gst_object_add_control_binding(
67                    self.as_ref().to_glib_none().0,
68                    binding.as_ref().to_glib_none().0
69                ),
70                "Failed to add control binding"
71            )
72        }
73    }
74
75    #[doc(alias = "gst_object_default_error")]
76    fn default_error(&self, error: &glib::Error, debug: Option<&str>) {
77        unsafe {
78            ffi::gst_object_default_error(
79                self.as_ref().to_glib_none().0,
80                error.to_glib_none().0,
81                debug.to_glib_none().0,
82            );
83        }
84    }
85
86    #[doc(alias = "gst_object_get_control_binding")]
87    #[doc(alias = "get_control_binding")]
88    fn control_binding(&self, property_name: &str) -> Option<ControlBinding> {
89        unsafe {
90            from_glib_full(ffi::gst_object_get_control_binding(
91                self.as_ref().to_glib_none().0,
92                property_name.to_glib_none().0,
93            ))
94        }
95    }
96
97    #[doc(alias = "gst_object_get_control_rate")]
98    #[doc(alias = "get_control_rate")]
99    fn control_rate(&self) -> Option<ClockTime> {
100        unsafe {
101            from_glib(ffi::gst_object_get_control_rate(
102                self.as_ref().to_glib_none().0,
103            ))
104        }
105    }
106
107    #[doc(alias = "gst_object_get_name")]
108    #[doc(alias = "get_name")]
109    fn name(&self) -> glib::GString {
110        unsafe { from_glib_full(ffi::gst_object_get_name(self.as_ref().to_glib_none().0)) }
111    }
112
113    #[doc(alias = "gst_object_get_parent")]
114    #[doc(alias = "get_parent")]
115    #[must_use]
116    fn parent(&self) -> Option<Object> {
117        unsafe { from_glib_full(ffi::gst_object_get_parent(self.as_ref().to_glib_none().0)) }
118    }
119
120    #[doc(alias = "gst_object_get_path_string")]
121    #[doc(alias = "get_path_string")]
122    fn path_string(&self) -> glib::GString {
123        unsafe {
124            from_glib_full(ffi::gst_object_get_path_string(
125                self.as_ref().to_glib_none().0,
126            ))
127        }
128    }
129
130    #[cfg(feature = "v1_28")]
131    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
132    #[doc(alias = "gst_object_get_toplevel")]
133    #[doc(alias = "get_toplevel")]
134    #[must_use]
135    fn toplevel(&self) -> Object {
136        unsafe { from_glib_full(ffi::gst_object_get_toplevel(self.as_ref().to_glib_none().0)) }
137    }
138
139    #[doc(alias = "gst_object_get_value")]
140    #[doc(alias = "get_value")]
141    fn value(
142        &self,
143        property_name: &str,
144        timestamp: impl Into<Option<ClockTime>>,
145    ) -> Option<glib::Value> {
146        unsafe {
147            from_glib_full(ffi::gst_object_get_value(
148                self.as_ref().to_glib_none().0,
149                property_name.to_glib_none().0,
150                timestamp.into().into_glib(),
151            ))
152        }
153    }
154
155    //#[doc(alias = "gst_object_get_value_array")]
156    //#[doc(alias = "get_value_array")]
157    //fn is_value_array(&self, property_name: &str, timestamp: impl Into<Option<ClockTime>>, interval: impl Into<Option<ClockTime>>, values: /*Unimplemented*/&[&Basic: Pointer]) -> bool {
158    //    unsafe { TODO: call ffi:gst_object_get_value_array() }
159    //}
160
161    #[doc(alias = "gst_object_has_active_control_bindings")]
162    fn has_active_control_bindings(&self) -> bool {
163        unsafe {
164            from_glib(ffi::gst_object_has_active_control_bindings(
165                self.as_ref().to_glib_none().0,
166            ))
167        }
168    }
169
170    #[doc(alias = "gst_object_has_ancestor")]
171    fn has_ancestor(&self, ancestor: &impl IsA<Object>) -> bool {
172        unsafe {
173            from_glib(ffi::gst_object_has_ancestor(
174                self.as_ref().to_glib_none().0,
175                ancestor.as_ref().to_glib_none().0,
176            ))
177        }
178    }
179
180    #[doc(alias = "gst_object_has_as_ancestor")]
181    fn has_as_ancestor(&self, ancestor: &impl IsA<Object>) -> bool {
182        unsafe {
183            from_glib(ffi::gst_object_has_as_ancestor(
184                self.as_ref().to_glib_none().0,
185                ancestor.as_ref().to_glib_none().0,
186            ))
187        }
188    }
189
190    #[doc(alias = "gst_object_has_as_parent")]
191    fn has_as_parent(&self, parent: &impl IsA<Object>) -> bool {
192        unsafe {
193            from_glib(ffi::gst_object_has_as_parent(
194                self.as_ref().to_glib_none().0,
195                parent.as_ref().to_glib_none().0,
196            ))
197        }
198    }
199
200    #[doc(alias = "gst_object_remove_control_binding")]
201    fn remove_control_binding(&self, binding: &impl IsA<ControlBinding>) -> bool {
202        unsafe {
203            from_glib(ffi::gst_object_remove_control_binding(
204                self.as_ref().to_glib_none().0,
205                binding.as_ref().to_glib_none().0,
206            ))
207        }
208    }
209
210    #[doc(alias = "gst_object_set_control_binding_disabled")]
211    fn set_control_binding_disabled(&self, property_name: &str, disabled: bool) {
212        unsafe {
213            ffi::gst_object_set_control_binding_disabled(
214                self.as_ref().to_glib_none().0,
215                property_name.to_glib_none().0,
216                disabled.into_glib(),
217            );
218        }
219    }
220
221    #[doc(alias = "gst_object_set_control_bindings_disabled")]
222    fn set_control_bindings_disabled(&self, disabled: bool) {
223        unsafe {
224            ffi::gst_object_set_control_bindings_disabled(
225                self.as_ref().to_glib_none().0,
226                disabled.into_glib(),
227            );
228        }
229    }
230
231    #[doc(alias = "gst_object_set_control_rate")]
232    fn set_control_rate(&self, control_rate: impl Into<Option<ClockTime>>) {
233        unsafe {
234            ffi::gst_object_set_control_rate(
235                self.as_ref().to_glib_none().0,
236                control_rate.into().into_glib(),
237            );
238        }
239    }
240
241    #[doc(alias = "gst_object_suggest_next_sync")]
242    fn suggest_next_sync(&self) -> Option<ClockTime> {
243        unsafe {
244            from_glib(ffi::gst_object_suggest_next_sync(
245                self.as_ref().to_glib_none().0,
246            ))
247        }
248    }
249
250    #[doc(alias = "gst_object_sync_values")]
251    fn sync_values(&self, timestamp: ClockTime) -> Result<(), glib::error::BoolError> {
252        unsafe {
253            glib::result_from_gboolean!(
254                ffi::gst_object_sync_values(self.as_ref().to_glib_none().0, timestamp.into_glib()),
255                "Failed to sync values"
256            )
257        }
258    }
259
260    #[doc(alias = "gst_object_unparent")]
261    fn unparent(&self) {
262        unsafe {
263            ffi::gst_object_unparent(self.as_ref().to_glib_none().0);
264        }
265    }
266
267    //#[doc(alias = "deep-notify")]
268    //fn connect_deep_notify<Unsupported or ignored types>(&self, detail: Option<&str>, f: F) -> SignalHandlerId {
269    //    Ignored prop: GObject.ParamSpec
270    //}
271
272    #[doc(alias = "parent")]
273    fn connect_parent_notify<F: Fn(&Self) + Send + Sync + 'static>(&self, f: F) -> SignalHandlerId {
274        unsafe extern "C" fn notify_parent_trampoline<
275            P: IsA<Object>,
276            F: Fn(&P) + Send + Sync + 'static,
277        >(
278            this: *mut ffi::GstObject,
279            _param_spec: glib::ffi::gpointer,
280            f: glib::ffi::gpointer,
281        ) {
282            unsafe {
283                let f: &F = &*(f as *const F);
284                f(Object::from_glib_borrow(this).unsafe_cast_ref())
285            }
286        }
287        unsafe {
288            let f: Box_<F> = Box_::new(f);
289            connect_raw(
290                self.as_ptr() as *mut _,
291                c"notify::parent".as_ptr(),
292                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
293                    notify_parent_trampoline::<Self, F> as *const (),
294                )),
295                Box_::into_raw(f),
296            )
297        }
298    }
299}
300
301impl<O: IsA<Object>> GstObjectExt for O {}