use crate::ffi;
use glib::{bitflags::bitflags, prelude::*, translate::*};
bitflags! {
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[doc(alias = "ALSACtlElemAccessFlag")]
pub struct ElemAccessFlag: u32 {
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_READ")]
const READ = ffi::ALSACTL_ELEM_ACCESS_FLAG_READ as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_WRITE")]
const WRITE = ffi::ALSACTL_ELEM_ACCESS_FLAG_WRITE as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_VOLATILE")]
const VOLATILE = ffi::ALSACTL_ELEM_ACCESS_FLAG_VOLATILE as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_TLV_READ")]
const TLV_READ = ffi::ALSACTL_ELEM_ACCESS_FLAG_TLV_READ as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_TLV_WRITE")]
const TLV_WRITE = ffi::ALSACTL_ELEM_ACCESS_FLAG_TLV_WRITE as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_TLV_COMMAND")]
const TLV_COMMAND = ffi::ALSACTL_ELEM_ACCESS_FLAG_TLV_COMMAND as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_INACTIVE")]
const INACTIVE = ffi::ALSACTL_ELEM_ACCESS_FLAG_INACTIVE as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_LOCK")]
const LOCK = ffi::ALSACTL_ELEM_ACCESS_FLAG_LOCK as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_OWNER")]
const OWNER = ffi::ALSACTL_ELEM_ACCESS_FLAG_OWNER as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_TLV_CALLBACK")]
const TLV_CALLBACK = ffi::ALSACTL_ELEM_ACCESS_FLAG_TLV_CALLBACK as _;
#[doc(alias = "ALSACTL_ELEM_ACCESS_FLAG_USER")]
const USER = ffi::ALSACTL_ELEM_ACCESS_FLAG_USER as _;
}
}
#[doc(hidden)]
impl IntoGlib for ElemAccessFlag {
type GlibType = ffi::ALSACtlElemAccessFlag;
#[inline]
fn into_glib(self) -> ffi::ALSACtlElemAccessFlag {
self.bits()
}
}
#[doc(hidden)]
impl FromGlib<ffi::ALSACtlElemAccessFlag> for ElemAccessFlag {
#[inline]
unsafe fn from_glib(value: ffi::ALSACtlElemAccessFlag) -> Self {
Self::from_bits_truncate(value)
}
}
impl StaticType for ElemAccessFlag {
#[inline]
#[doc(alias = "alsactl_elem_access_flag_get_type")]
fn static_type() -> glib::Type {
unsafe { from_glib(ffi::alsactl_elem_access_flag_get_type()) }
}
}
impl glib::HasParamSpec for ElemAccessFlag {
type ParamSpec = glib::ParamSpecFlags;
type SetValue = Self;
type BuilderFn = fn(&str) -> glib::ParamSpecFlagsBuilder<Self>;
fn param_spec_builder() -> Self::BuilderFn {
Self::ParamSpec::builder
}
}
impl glib::value::ValueType for ElemAccessFlag {
type Type = Self;
}
unsafe impl<'a> glib::value::FromValue<'a> for ElemAccessFlag {
type Checker = glib::value::GenericValueTypeChecker<Self>;
#[inline]
unsafe fn from_value(value: &'a glib::Value) -> Self {
from_glib(glib::gobject_ffi::g_value_get_flags(value.to_glib_none().0))
}
}
impl ToValue for ElemAccessFlag {
#[inline]
fn to_value(&self) -> glib::Value {
let mut value = glib::Value::for_value_type::<Self>();
unsafe {
glib::gobject_ffi::g_value_set_flags(value.to_glib_none_mut().0, self.into_glib());
}
value
}
#[inline]
fn value_type(&self) -> glib::Type {
Self::static_type()
}
}
impl From<ElemAccessFlag> for glib::Value {
#[inline]
fn from(v: ElemAccessFlag) -> Self {
ToValue::to_value(&v)
}
}
bitflags! {
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[doc(alias = "ALSACtlElemEventMask")]
pub struct ElemEventMask: u32 {
#[doc(alias = "ALSACTL_ELEM_EVENT_MASK_VALUE")]
const VALUE = ffi::ALSACTL_ELEM_EVENT_MASK_VALUE as _;
#[doc(alias = "ALSACTL_ELEM_EVENT_MASK_INFO")]
const INFO = ffi::ALSACTL_ELEM_EVENT_MASK_INFO as _;
#[doc(alias = "ALSACTL_ELEM_EVENT_MASK_ADD")]
const ADD = ffi::ALSACTL_ELEM_EVENT_MASK_ADD as _;
#[doc(alias = "ALSACTL_ELEM_EVENT_MASK_TLV")]
const TLV = ffi::ALSACTL_ELEM_EVENT_MASK_TLV as _;
#[doc(alias = "ALSACTL_ELEM_EVENT_MASK_REMOVE")]
const REMOVE = ffi::ALSACTL_ELEM_EVENT_MASK_REMOVE as _;
}
}
#[doc(hidden)]
impl IntoGlib for ElemEventMask {
type GlibType = ffi::ALSACtlElemEventMask;
#[inline]
fn into_glib(self) -> ffi::ALSACtlElemEventMask {
self.bits()
}
}
#[doc(hidden)]
impl FromGlib<ffi::ALSACtlElemEventMask> for ElemEventMask {
#[inline]
unsafe fn from_glib(value: ffi::ALSACtlElemEventMask) -> Self {
Self::from_bits_truncate(value)
}
}
impl StaticType for ElemEventMask {
#[inline]
#[doc(alias = "alsactl_elem_event_mask_get_type")]
fn static_type() -> glib::Type {
unsafe { from_glib(ffi::alsactl_elem_event_mask_get_type()) }
}
}
impl glib::HasParamSpec for ElemEventMask {
type ParamSpec = glib::ParamSpecFlags;
type SetValue = Self;
type BuilderFn = fn(&str) -> glib::ParamSpecFlagsBuilder<Self>;
fn param_spec_builder() -> Self::BuilderFn {
Self::ParamSpec::builder
}
}
impl glib::value::ValueType for ElemEventMask {
type Type = Self;
}
unsafe impl<'a> glib::value::FromValue<'a> for ElemEventMask {
type Checker = glib::value::GenericValueTypeChecker<Self>;
#[inline]
unsafe fn from_value(value: &'a glib::Value) -> Self {
from_glib(glib::gobject_ffi::g_value_get_flags(value.to_glib_none().0))
}
}
impl ToValue for ElemEventMask {
#[inline]
fn to_value(&self) -> glib::Value {
let mut value = glib::Value::for_value_type::<Self>();
unsafe {
glib::gobject_ffi::g_value_set_flags(value.to_glib_none_mut().0, self.into_glib());
}
value
}
#[inline]
fn value_type(&self) -> glib::Type {
Self::static_type()
}
}
impl From<ElemEventMask> for glib::Value {
#[inline]
fn from(v: ElemEventMask) -> Self {
ToValue::to_value(&v)
}
}