nm_rs/auto/ip_address.rs
1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir
3// from gtk-girs (https://github.com/gtk-rs/gir-files)
4// DO NOT EDIT
5
6use crate::{ffi};
7#[cfg(feature = "v1_22")]
8#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9use crate::{IPAddressCmpFlags};
10use glib::{translate::*};
11
12glib::wrapper! {
13 #[derive(Debug, PartialOrd, Ord, Hash)]
14 pub struct IPAddress(Shared<ffi::NMIPAddress>);
15
16 match fn {
17 ref => |ptr| ffi::nm_ip_address_ref(ptr),
18 unref => |ptr| ffi::nm_ip_address_unref(ptr),
19 type_ => || ffi::nm_ip_address_get_type(),
20 }
21}
22
23impl IPAddress {
24 /// Creates a new #NMIPAddress object.
25 /// ## `family`
26 /// the IP address family (<literal>AF_INET</literal> or
27 /// <literal>AF_INET6</literal>)
28 /// ## `addr`
29 /// the IP address
30 /// ## `prefix`
31 /// the address prefix length
32 ///
33 /// # Returns
34 ///
35 /// the new #NMIPAddress object, or [`None`] on error
36 #[doc(alias = "nm_ip_address_new")]
37 pub fn new(family: i32, addr: &str, prefix: u32) -> Result<IPAddress, glib::Error> {
38 assert_initialized_main_thread!();
39 unsafe {
40 let mut error = std::ptr::null_mut();
41 let ret = ffi::nm_ip_address_new(family, addr.to_glib_none().0, prefix, &mut error);
42 if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
43 }
44 }
45
46 //#[doc(alias = "nm_ip_address_new_binary")]
47 //pub fn new_binary(family: i32, addr: /*Unimplemented*/Option<Basic: Pointer>, prefix: u32) -> Result<IPAddress, glib::Error> {
48 // unsafe { TODO: call ffi:nm_ip_address_new_binary() }
49 //}
50
51 /// Note that with @cmp_flags #NM_IP_ADDRESS_CMP_FLAGS_WITH_ATTRS, there
52 /// is no total order for comparing GVariant. That means, if the two addresses
53 /// only differ by their attributes, the sort order is undefined and the return
54 /// value only indicates equality.
55 /// ## `b`
56 /// the #NMIPAddress to compare @address to.
57 /// ## `cmp_flags`
58 /// the #NMIPAddressCmpFlags that indicate what to compare.
59 ///
60 /// # Returns
61 ///
62 /// 0 if the two objects have the same values (according to their flags)
63 /// or a integer indicating the compare order.
64 #[cfg(feature = "v1_22")]
65 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
66 #[doc(alias = "nm_ip_address_cmp_full")]
67 pub fn cmp_full(&self, b: &IPAddress, cmp_flags: IPAddressCmpFlags) -> i32 {
68 unsafe {
69 ffi::nm_ip_address_cmp_full(self.to_glib_none().0, b.to_glib_none().0, cmp_flags.into_glib())
70 }
71 }
72
73 /// Creates a copy of @self
74 ///
75 /// # Returns
76 ///
77 /// a copy of @self
78 ///
79 /// This API was part of public headers before 1.32.0 but
80 /// was erroneously not exported in the ABI. It is thus only
81 /// usable since 1.32.0.
82 #[cfg(feature = "v1_32")]
83 #[cfg_attr(docsrs, doc(cfg(feature = "v1_32")))]
84 #[doc(alias = "nm_ip_address_dup")]
85#[must_use]
86 pub fn dup(&self) -> IPAddress {
87 unsafe {
88 from_glib_full(ffi::nm_ip_address_dup(self.to_glib_none().0))
89 }
90 }
91
92 #[doc(alias = "nm_ip_address_equal")]
93 fn equal(&self, other: &IPAddress) -> bool {
94 unsafe {
95 from_glib(ffi::nm_ip_address_equal(self.to_glib_none().0, other.to_glib_none().0))
96 }
97 }
98
99 /// Gets the IP address property of this address object.
100 ///
101 /// # Returns
102 ///
103 /// the IP address
104 #[doc(alias = "nm_ip_address_get_address")]
105 #[doc(alias = "get_address")]
106 pub fn address(&self) -> glib::GString {
107 unsafe {
108 from_glib_none(ffi::nm_ip_address_get_address(self.to_glib_none().0))
109 }
110 }
111
112 //#[doc(alias = "nm_ip_address_get_address_binary")]
113 //#[doc(alias = "get_address_binary")]
114 //pub fn address_binary(&self, addr: /*Unimplemented*/Option<Basic: Pointer>) {
115 // unsafe { TODO: call ffi:nm_ip_address_get_address_binary() }
116 //}
117
118 //#[doc(alias = "nm_ip_address_get_attribute")]
119 //#[doc(alias = "get_attribute")]
120 //pub fn attribute(&self, name: &str) -> /*Ignored*/glib::Variant {
121 // unsafe { TODO: call ffi:nm_ip_address_get_attribute() }
122 //}
123
124 /// Gets an array of attribute names defined on @self.
125 ///
126 /// # Returns
127 ///
128 /// a [`None`]-terminated array of attribute names,
129 #[doc(alias = "nm_ip_address_get_attribute_names")]
130 #[doc(alias = "get_attribute_names")]
131 pub fn attribute_names(&self) -> Vec<glib::GString> {
132 unsafe {
133 FromGlibPtrContainer::from_glib_full(ffi::nm_ip_address_get_attribute_names(self.to_glib_none().0))
134 }
135 }
136
137 /// Gets the IP address family (eg, AF_INET) property of this address
138 /// object.
139 ///
140 /// # Returns
141 ///
142 /// the IP address family
143 #[doc(alias = "nm_ip_address_get_family")]
144 #[doc(alias = "get_family")]
145 pub fn family(&self) -> i32 {
146 unsafe {
147 ffi::nm_ip_address_get_family(self.to_glib_none().0)
148 }
149 }
150
151 /// Gets the IP address prefix (ie "24" or "30" etc) property of this address
152 /// object.
153 ///
154 /// # Returns
155 ///
156 /// the IP address prefix
157 #[doc(alias = "nm_ip_address_get_prefix")]
158 #[doc(alias = "get_prefix")]
159 pub fn prefix(&self) -> u32 {
160 unsafe {
161 ffi::nm_ip_address_get_prefix(self.to_glib_none().0)
162 }
163 }
164
165 /// Sets the IP address property of this address object.
166 ///
167 /// @addr must be a valid address of @self's family. If you aren't sure you
168 /// have a valid address, use nm_utils_ipaddr_valid() to check it.
169 /// ## `addr`
170 /// the IP address, as a string
171 #[doc(alias = "nm_ip_address_set_address")]
172 pub fn set_address(&self, addr: &str) {
173 unsafe {
174 ffi::nm_ip_address_set_address(self.to_glib_none().0, addr.to_glib_none().0);
175 }
176 }
177
178 //#[doc(alias = "nm_ip_address_set_address_binary")]
179 //pub fn set_address_binary(&self, addr: /*Unimplemented*/Option<Basic: Pointer>) {
180 // unsafe { TODO: call ffi:nm_ip_address_set_address_binary() }
181 //}
182
183 //#[doc(alias = "nm_ip_address_set_attribute")]
184 //pub fn set_attribute(&self, name: &str, value: /*Ignored*/Option<&glib::Variant>) {
185 // unsafe { TODO: call ffi:nm_ip_address_set_attribute() }
186 //}
187
188 /// Sets the IP address prefix property of this address object.
189 /// ## `prefix`
190 /// the IP address prefix
191 #[doc(alias = "nm_ip_address_set_prefix")]
192 pub fn set_prefix(&self, prefix: u32) {
193 unsafe {
194 ffi::nm_ip_address_set_prefix(self.to_glib_none().0, prefix);
195 }
196 }
197}
198
199impl PartialEq for IPAddress {
200 #[inline]
201 fn eq(&self, other: &Self) -> bool {
202 self.equal(other)
203 }
204}
205
206impl Eq for IPAddress {}