gstreamer/
static_caps.rs
1use std::{fmt, marker::PhantomData, ptr};
4
5use glib::{prelude::*, translate::*};
6
7use crate::{ffi, Caps};
8
9#[doc(alias = "GstStaticCaps")]
13#[derive(Clone, Copy)]
14pub struct StaticCaps(ptr::NonNull<ffi::GstStaticCaps>);
15
16impl StaticCaps {
17 #[doc(alias = "gst_static_caps_get")]
25 #[inline]
26 pub fn get(&self) -> Caps {
27 unsafe { from_glib_full(ffi::gst_static_caps_get(self.0.as_ptr())) }
28 }
29}
30
31unsafe impl Send for StaticCaps {}
32unsafe impl Sync for StaticCaps {}
33
34impl fmt::Debug for StaticCaps {
35 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
36 f.debug_struct("StaticCaps")
37 .field("str", &unsafe {
38 glib::GStr::from_ptr(self.0.as_ref().string)
39 })
40 .finish()
41 }
42}
43
44impl StaticType for StaticCaps {
45 #[inline]
46 fn static_type() -> glib::types::Type {
47 unsafe { glib::translate::from_glib(ffi::gst_static_caps_get_type()) }
48 }
49}
50
51impl glib::value::ValueType for StaticCaps {
52 type Type = Self;
53}
54
55unsafe impl glib::translate::TransparentPtrType for StaticCaps {}
56
57#[doc(hidden)]
58unsafe impl<'a> glib::value::FromValue<'a> for StaticCaps {
59 type Checker = glib::value::GenericValueTypeOrNoneChecker<Self>;
60
61 #[inline]
62 unsafe fn from_value(value: &'a glib::Value) -> Self {
63 skip_assert_initialized!();
64 from_glib_none(
65 glib::gobject_ffi::g_value_get_boxed(value.to_glib_none().0) as *mut ffi::GstStaticCaps
66 )
67 }
68}
69
70#[doc(hidden)]
71impl glib::value::ToValue for StaticCaps {
72 #[inline]
73 fn to_value(&self) -> glib::Value {
74 let mut value = glib::Value::for_value_type::<Self>();
75 unsafe {
76 glib::gobject_ffi::g_value_set_boxed(
77 value.to_glib_none_mut().0,
78 self.to_glib_none().0 as *mut _,
79 )
80 }
81 value
82 }
83
84 #[inline]
85 fn value_type(&self) -> glib::Type {
86 Self::static_type()
87 }
88}
89
90impl From<StaticCaps> for glib::Value {
91 #[inline]
92 fn from(v: StaticCaps) -> glib::Value {
93 skip_assert_initialized!();
94 glib::value::ToValue::to_value(&v)
95 }
96}
97
98#[doc(hidden)]
99impl glib::value::ToValueOptional for StaticCaps {
100 #[inline]
101 fn to_value_optional(s: Option<&Self>) -> glib::Value {
102 skip_assert_initialized!();
103 let mut value = glib::Value::for_value_type::<Self>();
104 unsafe {
105 glib::gobject_ffi::g_value_set_boxed(
106 value.to_glib_none_mut().0,
107 s.to_glib_none().0 as *mut _,
108 )
109 }
110 value
111 }
112}
113
114#[doc(hidden)]
115impl glib::translate::GlibPtrDefault for StaticCaps {
116 type GlibType = *mut ffi::GstStaticCaps;
117}
118
119#[doc(hidden)]
120impl<'a> glib::translate::ToGlibPtr<'a, *const ffi::GstStaticCaps> for StaticCaps {
121 type Storage = PhantomData<&'a StaticCaps>;
122
123 #[inline]
124 fn to_glib_none(&'a self) -> glib::translate::Stash<'a, *const ffi::GstStaticCaps, Self> {
125 glib::translate::Stash(self.0.as_ptr(), PhantomData)
126 }
127
128 fn to_glib_full(&self) -> *const ffi::GstStaticCaps {
129 unimplemented!()
130 }
131}
132
133#[doc(hidden)]
134impl glib::translate::FromGlibPtrNone<*const ffi::GstStaticCaps> for StaticCaps {
135 #[inline]
136 unsafe fn from_glib_none(ptr: *const ffi::GstStaticCaps) -> Self {
137 debug_assert!(!ptr.is_null());
138 StaticCaps(ptr::NonNull::new_unchecked(ptr as *mut _))
139 }
140}
141
142#[doc(hidden)]
143impl glib::translate::FromGlibPtrNone<*mut ffi::GstStaticCaps> for StaticCaps {
144 #[inline]
145 unsafe fn from_glib_none(ptr: *mut ffi::GstStaticCaps) -> Self {
146 debug_assert!(!ptr.is_null());
147 StaticCaps(ptr::NonNull::new_unchecked(ptr))
148 }
149}
150
151#[doc(hidden)]
152impl glib::translate::FromGlibPtrBorrow<*mut ffi::GstStaticCaps> for StaticCaps {
153 #[inline]
154 unsafe fn from_glib_borrow(ptr: *mut ffi::GstStaticCaps) -> Borrowed<Self> {
155 debug_assert!(!ptr.is_null());
156 Borrowed::new(StaticCaps(ptr::NonNull::new_unchecked(ptr)))
157 }
158}
159
160#[doc(hidden)]
161impl glib::translate::FromGlibPtrFull<*mut ffi::GstStaticCaps> for StaticCaps {
162 #[inline]
163 unsafe fn from_glib_full(_ptr: *mut ffi::GstStaticCaps) -> Self {
164 unimplemented!();
165 }
166}