use glib::{
prelude::*,
signal::{connect_raw, SignalHandlerId},
translate::*,
};
use std::boxed::Box as Box_;
glib::wrapper! {
#[doc(alias = "ALSATimerInstanceStatus")]
pub struct InstanceStatus(Object<ffi::ALSATimerInstanceStatus, ffi::ALSATimerInstanceStatusClass>);
match fn {
type_ => || ffi::alsatimer_instance_status_get_type(),
}
}
impl InstanceStatus {
pub const NONE: Option<&'static InstanceStatus> = None;
#[doc(alias = "alsatimer_instance_status_new")]
pub fn new() -> InstanceStatus {
unsafe { from_glib_full(ffi::alsatimer_instance_status_new()) }
}
}
impl Default for InstanceStatus {
fn default() -> Self {
Self::new()
}
}
mod sealed {
pub trait Sealed {}
impl<T: super::IsA<super::InstanceStatus>> Sealed for T {}
}
pub trait InstanceStatusExt: IsA<InstanceStatus> + sealed::Sealed + 'static {
fn interval(&self) -> u32 {
ObjectExt::property(self.as_ref(), "interval")
}
fn lost(&self) -> u32 {
ObjectExt::property(self.as_ref(), "lost")
}
fn overrun(&self) -> u32 {
ObjectExt::property(self.as_ref(), "overrun")
}
#[doc(alias = "queue-size")]
fn queue_size(&self) -> u32 {
ObjectExt::property(self.as_ref(), "queue-size")
}
#[doc(alias = "interval")]
fn connect_interval_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_interval_trampoline<
P: IsA<InstanceStatus>,
F: Fn(&P) + 'static,
>(
this: *mut ffi::ALSATimerInstanceStatus,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(InstanceStatus::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::interval\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(
notify_interval_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[doc(alias = "lost")]
fn connect_lost_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_lost_trampoline<P: IsA<InstanceStatus>, F: Fn(&P) + 'static>(
this: *mut ffi::ALSATimerInstanceStatus,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(InstanceStatus::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::lost\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(
notify_lost_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[doc(alias = "overrun")]
fn connect_overrun_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_overrun_trampoline<
P: IsA<InstanceStatus>,
F: Fn(&P) + 'static,
>(
this: *mut ffi::ALSATimerInstanceStatus,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(InstanceStatus::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::overrun\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(
notify_overrun_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[doc(alias = "queue-size")]
fn connect_queue_size_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_queue_size_trampoline<
P: IsA<InstanceStatus>,
F: Fn(&P) + 'static,
>(
this: *mut ffi::ALSATimerInstanceStatus,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(InstanceStatus::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::queue-size\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(
notify_queue_size_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}
impl<O: IsA<InstanceStatus>> InstanceStatusExt for O {}