1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Generated by gir (https://github.com/gtk-rs/gir @ 0e476ab5c1de)
// from /usr/share/gir-1.0 (@ ???)
// DO NOT EDIT
use crate::Identity;
use glib::{
prelude::*,
signal::{connect_raw, SignalHandlerId},
translate::*,
};
use std::boxed::Box as Box_;
glib::wrapper! {
/// An object representing a group identity on a UNIX system.
///
/// ## Properties
///
///
/// #### `gid`
/// The UNIX group id.
///
/// Readable | Writeable | Construct
///
/// # Implements
///
/// [`trait@glib::ObjectExt`], [`IdentityExt`][trait@crate::prelude::IdentityExt]
#[doc(alias = "PolkitUnixGroup")]
pub struct UnixGroup(Object<ffi::PolkitUnixGroup, ffi::PolkitUnixGroupClass>) @implements Identity;
match fn {
type_ => || ffi::polkit_unix_group_get_type(),
}
}
impl UnixGroup {
/// Gets the UNIX group id for `self`.
///
/// # Returns
///
/// A UNIX group id.
#[doc(alias = "polkit_unix_group_get_gid")]
#[doc(alias = "get_gid")]
pub fn gid(&self) -> i32 {
unsafe { ffi::polkit_unix_group_get_gid(self.to_glib_none().0) }
}
/// Sets `gid` for `self`.
/// ## `gid`
/// A UNIX group id.
#[doc(alias = "polkit_unix_group_set_gid")]
pub fn set_gid(&self, gid: i32) {
unsafe {
ffi::polkit_unix_group_set_gid(self.to_glib_none().0, gid);
}
}
/// Creates a new [`UnixGroup`][crate::UnixGroup] object for `gid`.
/// ## `gid`
/// A UNIX group id.
///
/// # Returns
///
/// A [`UnixGroup`][crate::UnixGroup] object. Free with `g_object_unref()`.
#[doc(alias = "polkit_unix_group_new")]
pub fn new(gid: i32) -> Identity {
unsafe { from_glib_full(ffi::polkit_unix_group_new(gid)) }
}
/// Creates a new [`UnixGroup`][crate::UnixGroup] object for a group with the group name
/// `name`.
/// ## `name`
/// A UNIX group name.
///
/// # Returns
///
/// (allow-none): A [`UnixGroup`][crate::UnixGroup] object or [`None`] if `error`
/// is set.
#[doc(alias = "polkit_unix_group_new_for_name")]
pub fn new_for_name(name: &str) -> Result<Identity, glib::Error> {
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::polkit_unix_group_new_for_name(name.to_glib_none().0, &mut error);
if error.is_null() {
Ok(from_glib_full(ret))
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "gid")]
pub fn connect_gid_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_gid_trampoline<F: Fn(&UnixGroup) + 'static>(
this: *mut ffi::PolkitUnixGroup,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::gid\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(
notify_gid_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}