gio/
socket_msg_flags.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use crate::ffi;
4use glib::{bitflags, prelude::*, translate::*, Type};
5
6bitflags::bitflags! {
7    #[doc(alias = "GSocketMsgFlags")]
8    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
9    pub struct SocketMsgFlags: ffi::GSocketMsgFlags {
10        #[doc(alias = "G_SOCKET_MSG_NONE")]
11        const NONE = ffi::G_SOCKET_MSG_NONE as _;
12        #[doc(alias = "G_SOCKET_MSG_OOB")]
13        const OOB = ffi::G_SOCKET_MSG_OOB as _;
14        #[doc(alias = "G_SOCKET_MSG_PEEK")]
15        const PEEK = ffi::G_SOCKET_MSG_PEEK as _;
16        #[doc(alias = "G_SOCKET_MSG_DONTROUTE")]
17        const DONTROUTE = ffi::G_SOCKET_MSG_DONTROUTE as _;
18    }
19}
20
21#[doc(hidden)]
22impl IntoGlib for SocketMsgFlags {
23    type GlibType = ffi::GSocketMsgFlags;
24
25    #[inline]
26    fn into_glib(self) -> ffi::GSocketMsgFlags {
27        self.bits()
28    }
29}
30
31#[doc(hidden)]
32impl FromGlib<ffi::GSocketMsgFlags> for SocketMsgFlags {
33    #[inline]
34    unsafe fn from_glib(value: ffi::GSocketMsgFlags) -> Self {
35        Self::from_bits_truncate(value)
36    }
37}
38
39impl StaticType for SocketMsgFlags {
40    #[inline]
41    fn static_type() -> Type {
42        unsafe { from_glib(ffi::g_socket_msg_flags_get_type()) }
43    }
44}
45
46impl glib::value::ValueType for SocketMsgFlags {
47    type Type = Self;
48}
49
50unsafe impl<'a> glib::value::FromValue<'a> for SocketMsgFlags {
51    type Checker = glib::value::GenericValueTypeChecker<Self>;
52
53    unsafe fn from_value(value: &'a glib::Value) -> Self {
54        from_glib(glib::gobject_ffi::g_value_get_flags(value.to_glib_none().0) as i32)
55    }
56}
57
58impl ToValue for SocketMsgFlags {
59    fn to_value(&self) -> glib::Value {
60        let mut value = glib::Value::for_value_type::<Self>();
61        unsafe {
62            glib::gobject_ffi::g_value_set_flags(
63                value.to_glib_none_mut().0,
64                self.into_glib() as u32,
65            );
66        }
67        value
68    }
69
70    fn value_type(&self) -> glib::Type {
71        Self::static_type()
72    }
73}