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
24pub trait TypeModuleExt: IsA<TypeModule> + 'static {
25    #[doc(alias = "g_type_module_add_interface")]
26    fn add_interface(
27        &self,
28        instance_type: crate::types::Type,
29        interface_type: crate::types::Type,
30        interface_info: &InterfaceInfo,
31    ) {
32        unsafe {
33            gobject_ffi::g_type_module_add_interface(
34                self.as_ref().to_glib_none().0,
35                instance_type.into_glib(),
36                interface_type.into_glib(),
37                interface_info.as_ptr(),
38            );
39        }
40    }
41
42    #[doc(alias = "g_type_module_register_enum")]
43    fn register_enum(
44        &self,
45        name: &str,
46        const_static_values: &'static EnumValues,
47    ) -> crate::types::Type {
48        unsafe {
49            from_glib(gobject_ffi::g_type_module_register_enum(
50                self.as_ref().to_glib_none().0,
51                name.to_glib_none().0,
52                const_static_values.to_glib_none().0,
53            ))
54        }
55    }
56
57    #[doc(alias = "g_type_module_register_flags")]
58    fn register_flags(
59        &self,
60        name: &str,
61        const_static_values: &'static FlagsValues,
62    ) -> crate::types::Type {
63        unsafe {
64            from_glib(gobject_ffi::g_type_module_register_flags(
65                self.as_ref().to_glib_none().0,
66                name.to_glib_none().0,
67                const_static_values.to_glib_none().0,
68            ))
69        }
70    }
71
72    #[doc(alias = "g_type_module_register_type")]
73    fn register_type(
74        &self,
75        parent_type: crate::types::Type,
76        type_name: &str,
77        type_info: &TypeInfo,
78        flags: TypeFlags,
79    ) -> crate::types::Type {
80        unsafe {
81            from_glib(gobject_ffi::g_type_module_register_type(
82                self.as_ref().to_glib_none().0,
83                parent_type.into_glib(),
84                type_name.to_glib_none().0,
85                type_info.as_ptr(),
86                flags.into_glib(),
87            ))
88        }
89    }
90
91    #[doc(alias = "g_type_module_set_name")]
92    fn set_name(&self, name: &str) {
93        unsafe {
94            gobject_ffi::g_type_module_set_name(
95                self.as_ref().to_glib_none().0,
96                name.to_glib_none().0,
97            );
98        }
99    }
100
101    #[doc(alias = "g_type_module_unuse")]
102    fn unuse(&self) {
103        unsafe {
104            gobject_ffi::g_type_module_unuse(self.as_ref().to_glib_none().0);
105        }
106    }
107
108    #[doc(alias = "g_type_module_use")]
109    #[doc(alias = "use")]
110    fn use_(&self) -> bool {
111        unsafe {
112            from_glib(gobject_ffi::g_type_module_use(
113                self.as_ref().to_glib_none().0,
114            ))
115        }
116    }
117}
118
119impl<O: IsA<TypeModule>> TypeModuleExt for O {}