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
// Take a look at the license at the top of the repository in the LICENSE file.

use crate::{prelude::*, Breakpoint};
use glib::translate::*;

impl Breakpoint {
    /// Adds @n_setters setters to @self.
    ///
    /// This is a convenience function for adding multiple setters at once.
    ///
    /// See [`add_setter()`][Self::add_setter()].
    ///
    /// This function is meant to be used by language bindings.
    /// ## `objects`
    /// setter target object
    /// ## `names`
    /// setter target properties
    /// ## `values`
    /// setter values
    #[doc(alias = "adw_breakpoint_add_settersv")]
    #[doc(alias = "add_settersv")]
    pub fn add_setters(&self, additions: &[(&impl IsA<glib::Object>, &str, impl ToValue)]) {
        let n_setters = additions.len() as _;
        let objects = additions
            .iter()
            .map(|(o, _n, _v)| (*o).clone().upcast::<glib::Object>())
            .collect::<Vec<_>>();
        let names = additions.iter().map(|(_o, n, _v)| *n).collect::<Vec<_>>();
        let values = additions
            .iter()
            .map(|(_o, _n, v)| v.to_value())
            .collect::<Vec<_>>();

        unsafe {
            ffi::adw_breakpoint_add_settersv(
                self.to_glib_none().0,
                n_setters,
                objects.as_slice().to_glib_none().0,
                names.as_slice().to_glib_none().0,
                values.as_slice().to_glib_none().0,
            );
        }
    }
}