gstreamer_validate/
enums.rs
1use crate::ffi;
2use glib::translate::*;
3
4#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
5#[repr(i32)]
6pub enum ActionSuccess {
7 Ok = ffi::GST_VALIDATE_EXECUTE_ACTION_OK,
8 Async = ffi::GST_VALIDATE_EXECUTE_ACTION_ASYNC,
9 NonBlocking = ffi::GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING,
10 InProgress = ffi::GST_VALIDATE_EXECUTE_ACTION_IN_PROGRESS,
11 Done = ffi::GST_VALIDATE_EXECUTE_ACTION_DONE,
12}
13
14impl ActionSuccess {
15 pub fn from_value(value: impl Into<i32>) -> Option<Self> {
16 skip_assert_initialized!();
17 Some(match value.into() {
18 ffi::GST_VALIDATE_EXECUTE_ACTION_OK => ActionSuccess::Ok,
19 ffi::GST_VALIDATE_EXECUTE_ACTION_ASYNC => ActionSuccess::Async,
20 ffi::GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING => ActionSuccess::NonBlocking,
21 ffi::GST_VALIDATE_EXECUTE_ACTION_IN_PROGRESS => ActionSuccess::InProgress,
22 ffi::GST_VALIDATE_EXECUTE_ACTION_DONE => ActionSuccess::Done,
23 _ => return None,
24 })
25 }
26}
27
28impl IntoGlib for ActionSuccess {
29 type GlibType = ffi::GstValidateActionReturn;
30
31 #[inline]
32 fn into_glib(self) -> ffi::GstValidateActionReturn {
33 skip_assert_initialized!();
34 self as ffi::GstValidateActionReturn
35 }
36}
37
38#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
39#[repr(i32)]
40pub enum ActionError {
41 Error = ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR,
42 ErrorReported = ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED,
43 None = ffi::GST_VALIDATE_EXECUTE_ACTION_NONE,
44}
45
46impl ActionError {
47 pub fn from_value(value: impl Into<i32>) -> Self {
48 skip_assert_initialized!();
49 match value.into() {
50 ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR => ActionError::Error,
51 ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED => ActionError::ErrorReported,
52 ffi::GST_VALIDATE_EXECUTE_ACTION_NONE => ActionError::None,
53 _ => ActionError::Error,
54 }
55 }
56}
57
58impl IntoGlib for ActionError {
59 type GlibType = ffi::GstValidateActionReturn;
60
61 #[inline]
62 fn into_glib(self) -> ffi::GstValidateActionReturn {
63 self as ffi::GstValidateActionReturn
64 }
65}
66
67#[must_use]
68#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
69#[doc(alias = "GstValidateActionReturn")]
70#[repr(i32)]
71pub enum ActionReturn {
72 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_ERROR")]
73 Error = ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR,
74 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_OK")]
75 Ok = ffi::GST_VALIDATE_EXECUTE_ACTION_OK,
76 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_ASYNC")]
77 Async = ffi::GST_VALIDATE_EXECUTE_ACTION_ASYNC,
78 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING")]
79 NonBlocking = ffi::GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING,
80 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED")]
81 ErrorReported = ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED,
82 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_IN_PROGRESS")]
83 InProgress = ffi::GST_VALIDATE_EXECUTE_ACTION_IN_PROGRESS,
84 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_NONE")]
85 None = ffi::GST_VALIDATE_EXECUTE_ACTION_NONE,
86 #[doc(alias = "GST_VALIDATE_EXECUTE_ACTION_DONE")]
87 Done = ffi::GST_VALIDATE_EXECUTE_ACTION_DONE,
88}
89
90#[doc(hidden)]
91impl IntoGlib for ActionReturn {
92 type GlibType = ffi::GstValidateActionReturn;
93
94 #[inline]
95 fn into_glib(self) -> ffi::GstValidateActionReturn {
96 self as ffi::GstValidateActionReturn
97 }
98}
99
100#[doc(hidden)]
101impl FromGlib<ffi::GstValidateActionReturn> for ActionReturn {
102 #[inline]
103 unsafe fn from_glib(value: ffi::GstValidateActionReturn) -> Self {
104 skip_assert_initialized!();
105
106 if !(ffi::GST_VALIDATE_EXECUTE_ACTION_ERROR..=ffi::GST_VALIDATE_EXECUTE_ACTION_DONE)
107 .contains(&value)
108 {
109 ActionReturn::Error
110 } else {
111 std::mem::transmute::<i32, ActionReturn>(value)
112 }
113 }
114}
115
116impl TryFromGlib<ffi::GstValidateActionReturn> for ActionSuccess {
117 type Error = ActionError;
118
119 #[inline]
120 unsafe fn try_from_glib(
121 val: ffi::GstValidateActionReturn,
122 ) -> Result<ActionSuccess, ActionError> {
123 skip_assert_initialized!();
124 ActionReturn::from_glib(val).into_result()
125 }
126}
127
128impl ActionReturn {
129 #[inline]
130 pub fn into_result(self) -> Result<ActionSuccess, ActionError> {
131 match self {
132 Self::Error | Self::ErrorReported | Self::None => {
133 Err(unsafe { std::mem::transmute::<ActionReturn, ActionError>(self) })
134 }
135 _ => Ok(unsafe { std::mem::transmute::<ActionReturn, ActionSuccess>(self) }),
136 }
137 }
138
139 #[inline]
140 pub fn from_error(v: ActionError) -> Self {
141 skip_assert_initialized!();
142 unsafe { std::mem::transmute::<ActionError, ActionReturn>(v) }
143 }
144
145 #[inline]
146 pub fn from_ok(v: ActionSuccess) -> Self {
147 skip_assert_initialized!();
148 unsafe { std::mem::transmute::<ActionSuccess, ActionReturn>(v) }
149 }
150}