glib/gobject/
type_module.rs1use 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 {}