glib/gobject/
type_module.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use crate::{
4    enums::{EnumValues, FlagsValues},
5    gobject_ffi,
6    prelude::*,
7    translate::*,
8    InterfaceInfo, TypeFlags, TypeInfo, TypePlugin,
9};
10
11crate::wrapper! {
12    #[doc(alias = "GTypeModule")]
13    pub struct TypeModule(Object<gobject_ffi::GTypeModule, gobject_ffi::GTypeModuleClass>) @implements TypePlugin;
14
15    match fn {
16        type_ => || gobject_ffi::g_type_module_get_type(),
17    }
18}
19
20impl TypeModule {
21    pub const NONE: Option<&'static TypeModule> = None;
22}
23
24mod sealed {
25    pub trait Sealed {}
26    impl<T: super::IsA<super::TypeModule>> Sealed for T {}
27}
28
29pub trait TypeModuleExt: IsA<TypeModule> + sealed::Sealed + 'static {
30    #[doc(alias = "g_type_module_add_interface")]
31    fn add_interface(
32        &self,
33        instance_type: crate::types::Type,
34        interface_type: crate::types::Type,
35        interface_info: &InterfaceInfo,
36    ) {
37        unsafe {
38            gobject_ffi::g_type_module_add_interface(
39                self.as_ref().to_glib_none().0,
40                instance_type.into_glib(),
41                interface_type.into_glib(),
42                interface_info.as_ptr(),
43            );
44        }
45    }
46
47    #[doc(alias = "g_type_module_register_enum")]
48    fn register_enum(
49        &self,
50        name: &str,
51        const_static_values: &'static EnumValues,
52    ) -> crate::types::Type {
53        unsafe {
54            from_glib(gobject_ffi::g_type_module_register_enum(
55                self.as_ref().to_glib_none().0,
56                name.to_glib_none().0,
57                const_static_values.to_glib_none().0,
58            ))
59        }
60    }
61
62    #[doc(alias = "g_type_module_register_flags")]
63    fn register_flags(
64        &self,
65        name: &str,
66        const_static_values: &'static FlagsValues,
67    ) -> crate::types::Type {
68        unsafe {
69            from_glib(gobject_ffi::g_type_module_register_flags(
70                self.as_ref().to_glib_none().0,
71                name.to_glib_none().0,
72                const_static_values.to_glib_none().0,
73            ))
74        }
75    }
76
77    #[doc(alias = "g_type_module_register_type")]
78    fn register_type(
79        &self,
80        parent_type: crate::types::Type,
81        type_name: &str,
82        type_info: &TypeInfo,
83        flags: TypeFlags,
84    ) -> crate::types::Type {
85        unsafe {
86            from_glib(gobject_ffi::g_type_module_register_type(
87                self.as_ref().to_glib_none().0,
88                parent_type.into_glib(),
89                type_name.to_glib_none().0,
90                type_info.as_ptr(),
91                flags.into_glib(),
92            ))
93        }
94    }
95
96    #[doc(alias = "g_type_module_set_name")]
97    fn set_name(&self, name: &str) {
98        unsafe {
99            gobject_ffi::g_type_module_set_name(
100                self.as_ref().to_glib_none().0,
101                name.to_glib_none().0,
102            );
103        }
104    }
105
106    #[doc(alias = "g_type_module_unuse")]
107    fn unuse(&self) {
108        unsafe {
109            gobject_ffi::g_type_module_unuse(self.as_ref().to_glib_none().0);
110        }
111    }
112
113    #[doc(alias = "g_type_module_use")]
114    #[doc(alias = "use")]
115    fn use_(&self) -> bool {
116        unsafe {
117            from_glib(gobject_ffi::g_type_module_use(
118                self.as_ref().to_glib_none().0,
119            ))
120        }
121    }
122}
123
124impl<O: IsA<TypeModule>> TypeModuleExt for O {}