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 {}