alsactl-sys 0.4.0

FFI binding for alsactl library
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

#![doc = include_str!("../README.md")]
#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
#![allow(
    clippy::approx_constant,
    clippy::type_complexity,
    clippy::unreadable_literal,
    clippy::upper_case_acronyms
)]
#![cfg_attr(feature = "dox", feature(doc_cfg))]

#[allow(unused_imports)]
use libc::{
    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
    intptr_t, size_t, ssize_t, uintptr_t, FILE,
};

#[allow(unused_imports)]
use glib::{gboolean, gconstpointer, gpointer, GType};

// Enums
pub type ALSACtlCardError = c_int;
pub const ALSACTL_CARD_ERROR_FAILED: ALSACtlCardError = 0;
pub const ALSACTL_CARD_ERROR_DISCONNECTED: ALSACtlCardError = 1;
pub const ALSACTL_CARD_ERROR_ELEM_NOT_FOUND: ALSACtlCardError = 2;
pub const ALSACTL_CARD_ERROR_ELEM_NOT_SUPPORTED: ALSACtlCardError = 3;
pub const ALSACTL_CARD_ERROR_ELEM_OWNED: ALSACtlCardError = 4;
pub const ALSACTL_CARD_ERROR_ELEM_EXIST: ALSACtlCardError = 5;

pub type ALSACtlElemIfaceType = c_int;
pub const ALSACTL_ELEM_IFACE_TYPE_CARD: ALSACtlElemIfaceType = 0;
pub const ALSACTL_ELEM_IFACE_TYPE_HWDEP: ALSACtlElemIfaceType = 1;
pub const ALSACTL_ELEM_IFACE_TYPE_MIXER: ALSACtlElemIfaceType = 2;
pub const ALSACTL_ELEM_IFACE_TYPE_PCM: ALSACtlElemIfaceType = 3;
pub const ALSACTL_ELEM_IFACE_TYPE_RAWMIDI: ALSACtlElemIfaceType = 4;
pub const ALSACTL_ELEM_IFACE_TYPE_TIMER: ALSACtlElemIfaceType = 5;
pub const ALSACTL_ELEM_IFACE_TYPE_SEQUENCER: ALSACtlElemIfaceType = 6;

pub type ALSACtlElemType = c_int;
pub const ALSACTL_ELEM_TYPE_NONE: ALSACtlElemType = 0;
pub const ALSACTL_ELEM_TYPE_BOOLEAN: ALSACtlElemType = 1;
pub const ALSACTL_ELEM_TYPE_INTEGER: ALSACtlElemType = 2;
pub const ALSACTL_ELEM_TYPE_ENUMERATED: ALSACtlElemType = 3;
pub const ALSACTL_ELEM_TYPE_BYTES: ALSACtlElemType = 4;
pub const ALSACTL_ELEM_TYPE_IEC60958: ALSACtlElemType = 5;
pub const ALSACTL_ELEM_TYPE_INTEGER64: ALSACtlElemType = 6;

pub type ALSACtlEventType = c_int;
pub const ALSACTL_EVENT_TYPE_ELEM: ALSACtlEventType = 0;

// Flags
pub type ALSACtlElemAccessFlag = c_uint;
pub const ALSACTL_ELEM_ACCESS_FLAG_READ: ALSACtlElemAccessFlag = 1;
pub const ALSACTL_ELEM_ACCESS_FLAG_WRITE: ALSACtlElemAccessFlag = 2;
pub const ALSACTL_ELEM_ACCESS_FLAG_VOLATILE: ALSACtlElemAccessFlag = 4;
pub const ALSACTL_ELEM_ACCESS_FLAG_TLV_READ: ALSACtlElemAccessFlag = 16;
pub const ALSACTL_ELEM_ACCESS_FLAG_TLV_WRITE: ALSACtlElemAccessFlag = 32;
pub const ALSACTL_ELEM_ACCESS_FLAG_TLV_COMMAND: ALSACtlElemAccessFlag = 64;
pub const ALSACTL_ELEM_ACCESS_FLAG_INACTIVE: ALSACtlElemAccessFlag = 256;
pub const ALSACTL_ELEM_ACCESS_FLAG_LOCK: ALSACtlElemAccessFlag = 512;
pub const ALSACTL_ELEM_ACCESS_FLAG_OWNER: ALSACtlElemAccessFlag = 1024;
pub const ALSACTL_ELEM_ACCESS_FLAG_TLV_CALLBACK: ALSACtlElemAccessFlag = 268435456;
pub const ALSACTL_ELEM_ACCESS_FLAG_USER: ALSACtlElemAccessFlag = 536870912;

pub type ALSACtlElemEventMask = c_uint;
pub const ALSACTL_ELEM_EVENT_MASK_VALUE: ALSACtlElemEventMask = 1;
pub const ALSACTL_ELEM_EVENT_MASK_INFO: ALSACtlElemEventMask = 2;
pub const ALSACTL_ELEM_EVENT_MASK_ADD: ALSACtlElemEventMask = 4;
pub const ALSACTL_ELEM_EVENT_MASK_TLV: ALSACtlElemEventMask = 8;
pub const ALSACTL_ELEM_EVENT_MASK_REMOVE: ALSACtlElemEventMask = 16;

// Records
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlCardClass {
    pub parent_class: gobject::GObjectClass,
    pub handle_elem_event:
        Option<unsafe extern "C" fn(*mut ALSACtlCard, *const ALSACtlElemId, ALSACtlElemEventMask)>,
    pub handle_disconnection: Option<unsafe extern "C" fn(*mut ALSACtlCard)>,
}

impl ::std::fmt::Debug for ALSACtlCardClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlCardClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("handle_elem_event", &self.handle_elem_event)
            .field("handle_disconnection", &self.handle_disconnection)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlCardInfoClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlCardInfoClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlCardInfoClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct ALSACtlElemId {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for ALSACtlElemId {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemId @ {:p}", self))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoBooleanClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemInfoBooleanClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoBooleanClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoBytesClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemInfoBytesClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoBytesClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoCommonInterface {
    pub parent_iface: gobject::GTypeInterface,
}

impl ::std::fmt::Debug for ALSACtlElemInfoCommonInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoCommonInterface @ {:p}", self))
            .field("parent_iface", &self.parent_iface)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoEnumeratedClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemInfoEnumeratedClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoEnumeratedClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoIec60958Class {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemInfoIec60958Class {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoIec60958Class @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoInteger64Class {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemInfoInteger64Class {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoInteger64Class @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoIntegerClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemInfoIntegerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoIntegerClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoSingleArrayInterface {
    pub parent_iface: gobject::GTypeInterface,
}

impl ::std::fmt::Debug for ALSACtlElemInfoSingleArrayInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoSingleArrayInterface @ {:p}", self))
            .field("parent_iface", &self.parent_iface)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemValueClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for ALSACtlElemValueClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemValueClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

// Classes
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlCard {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlCard {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlCard @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlCardInfo {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlCardInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlCardInfo @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoBoolean {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemInfoBoolean {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoBoolean @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoBytes {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemInfoBytes {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoBytes @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoEnumerated {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemInfoEnumerated {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoEnumerated @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoIec60958 {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemInfoIec60958 {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoIec60958 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoInteger {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemInfoInteger {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoInteger @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemInfoInteger64 {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemInfoInteger64 {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemInfoInteger64 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct ALSACtlElemValue {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for ALSACtlElemValue {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("ALSACtlElemValue @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

// Interfaces
#[repr(C)]
pub struct ALSACtlElemInfoCommon {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for ALSACtlElemInfoCommon {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "ALSACtlElemInfoCommon @ {:p}", self)
    }
}

#[repr(C)]
pub struct ALSACtlElemInfoSingleArray {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for ALSACtlElemInfoSingleArray {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "ALSACtlElemInfoSingleArray @ {:p}", self)
    }
}

#[link(name = "alsactl")]
extern "C" {

    //=========================================================================
    // ALSACtlCardError
    //=========================================================================
    pub fn alsactl_card_error_get_type() -> GType;
    pub fn alsactl_card_error_quark() -> glib::GQuark;

    //=========================================================================
    // ALSACtlElemIfaceType
    //=========================================================================
    pub fn alsactl_elem_iface_type_get_type() -> GType;

    //=========================================================================
    // ALSACtlElemType
    //=========================================================================
    pub fn alsactl_elem_type_get_type() -> GType;

    //=========================================================================
    // ALSACtlEventType
    //=========================================================================
    pub fn alsactl_event_type_get_type() -> GType;

    //=========================================================================
    // ALSACtlElemAccessFlag
    //=========================================================================
    pub fn alsactl_elem_access_flag_get_type() -> GType;

    //=========================================================================
    // ALSACtlElemEventMask
    //=========================================================================
    pub fn alsactl_elem_event_mask_get_type() -> GType;

    //=========================================================================
    // ALSACtlElemId
    //=========================================================================
    pub fn alsactl_elem_id_get_type() -> GType;
    pub fn alsactl_elem_id_new_by_name(
        iface: ALSACtlElemIfaceType,
        device_id: c_uint,
        subdevice_id: c_uint,
        name: *const c_char,
        index: c_uint,
    ) -> *mut ALSACtlElemId;
    pub fn alsactl_elem_id_new_by_numid(numid: c_uint) -> *mut ALSACtlElemId;
    pub fn alsactl_elem_id_equal(
        self_: *const ALSACtlElemId,
        target: *const ALSACtlElemId,
    ) -> gboolean;
    pub fn alsactl_elem_id_get_device_id(self_: *const ALSACtlElemId, device_id: *mut c_uint);
    pub fn alsactl_elem_id_get_iface(self_: *const ALSACtlElemId, iface: *mut ALSACtlElemIfaceType);
    pub fn alsactl_elem_id_get_index(self_: *const ALSACtlElemId, index: *mut c_uint);
    pub fn alsactl_elem_id_get_name(self_: *const ALSACtlElemId, name: *mut *const c_char);
    pub fn alsactl_elem_id_get_numid(self_: *const ALSACtlElemId, numid: *mut c_uint);
    pub fn alsactl_elem_id_get_subdevice_id(self_: *const ALSACtlElemId, subdevice_id: *mut c_uint);

    //=========================================================================
    // ALSACtlCard
    //=========================================================================
    pub fn alsactl_card_get_type() -> GType;
    pub fn alsactl_card_new() -> *mut ALSACtlCard;
    pub fn alsactl_card_add_elems(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        elem_count: c_uint,
        elem_info: *mut ALSACtlElemInfoCommon,
        entries: *mut *mut glib::GList,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_command_elem_tlv(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        container: *const *mut u32,
        container_count: *mut size_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_create_source(
        self_: *mut ALSACtlCard,
        gsrc: *mut *mut glib::GSource,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_get_elem_id_list(
        self_: *mut ALSACtlCard,
        entries: *mut *mut glib::GList,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_get_elem_info(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        elem_info: *mut *mut ALSACtlElemInfoCommon,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_get_info(
        self_: *mut ALSACtlCard,
        card_info: *mut *mut ALSACtlCardInfo,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_get_protocol_version(
        self_: *mut ALSACtlCard,
        proto_ver_triplet: *mut *const [u16; 3],
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_lock_elem(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        lock: gboolean,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_open(
        self_: *mut ALSACtlCard,
        card_id: c_uint,
        open_flag: c_int,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_read_elem_tlv(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        container: *const *mut u32,
        container_count: *mut size_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_read_elem_value(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        elem_value: *const *mut ALSACtlElemValue,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_remove_elems(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_replace_elems(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        elem_count: c_uint,
        elem_info: *mut ALSACtlElemInfoCommon,
        entries: *mut *mut glib::GList,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_write_elem_tlv(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        container: *const u32,
        container_count: size_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_card_write_elem_value(
        self_: *mut ALSACtlCard,
        elem_id: *const ALSACtlElemId,
        elem_value: *const ALSACtlElemValue,
        error: *mut *mut glib::GError,
    ) -> gboolean;

    //=========================================================================
    // ALSACtlCardInfo
    //=========================================================================
    pub fn alsactl_card_info_get_type() -> GType;

    //=========================================================================
    // ALSACtlElemInfoBoolean
    //=========================================================================
    pub fn alsactl_elem_info_boolean_get_type() -> GType;
    pub fn alsactl_elem_info_boolean_new() -> *mut ALSACtlElemInfoBoolean;

    //=========================================================================
    // ALSACtlElemInfoBytes
    //=========================================================================
    pub fn alsactl_elem_info_bytes_get_type() -> GType;
    pub fn alsactl_elem_info_bytes_new() -> *mut ALSACtlElemInfoBytes;

    //=========================================================================
    // ALSACtlElemInfoEnumerated
    //=========================================================================
    pub fn alsactl_elem_info_enumerated_get_type() -> GType;
    pub fn alsactl_elem_info_enumerated_new() -> *mut ALSACtlElemInfoEnumerated;

    //=========================================================================
    // ALSACtlElemInfoIec60958
    //=========================================================================
    pub fn alsactl_elem_info_iec60958_get_type() -> GType;
    pub fn alsactl_elem_info_iec60958_new() -> *mut ALSACtlElemInfoIec60958;

    //=========================================================================
    // ALSACtlElemInfoInteger
    //=========================================================================
    pub fn alsactl_elem_info_integer_get_type() -> GType;
    pub fn alsactl_elem_info_integer_new() -> *mut ALSACtlElemInfoInteger;

    //=========================================================================
    // ALSACtlElemInfoInteger64
    //=========================================================================
    pub fn alsactl_elem_info_integer64_get_type() -> GType;
    pub fn alsactl_elem_info_integer64_new() -> *mut ALSACtlElemInfoInteger64;

    //=========================================================================
    // ALSACtlElemValue
    //=========================================================================
    pub fn alsactl_elem_value_get_type() -> GType;
    pub fn alsactl_elem_value_new() -> *mut ALSACtlElemValue;
    pub fn alsactl_elem_value_equal(
        self_: *const ALSACtlElemValue,
        target: *const ALSACtlElemValue,
    ) -> gboolean;
    pub fn alsactl_elem_value_get_bool(
        self_: *mut ALSACtlElemValue,
        values: *mut *const [gboolean; 128],
    );
    pub fn alsactl_elem_value_get_bytes(
        self_: *mut ALSACtlElemValue,
        values: *mut *const [u8; 512],
    );
    pub fn alsactl_elem_value_get_enum(
        self_: *mut ALSACtlElemValue,
        values: *mut *const [u32; 128],
    );
    pub fn alsactl_elem_value_get_iec60958_channel_status(
        self_: *mut ALSACtlElemValue,
        status: *mut *const [u8; 24],
    );
    pub fn alsactl_elem_value_get_iec60958_user_data(
        self_: *mut ALSACtlElemValue,
        data: *mut *const [u8; 147],
    );
    pub fn alsactl_elem_value_get_int(self_: *mut ALSACtlElemValue, values: *mut *const [i32; 128]);
    pub fn alsactl_elem_value_get_int64(
        self_: *mut ALSACtlElemValue,
        values: *mut *const [i64; 64],
    );
    pub fn alsactl_elem_value_set_bool(
        self_: *mut ALSACtlElemValue,
        values: *const gboolean,
        value_count: size_t,
    );
    pub fn alsactl_elem_value_set_bytes(
        self_: *mut ALSACtlElemValue,
        values: *const u8,
        value_count: size_t,
    );
    pub fn alsactl_elem_value_set_enum(
        self_: *mut ALSACtlElemValue,
        values: *const u32,
        value_count: size_t,
    );
    pub fn alsactl_elem_value_set_iec60958_channel_status(
        self_: *mut ALSACtlElemValue,
        status: *const u8,
        length: size_t,
    );
    pub fn alsactl_elem_value_set_iec60958_user_data(
        self_: *mut ALSACtlElemValue,
        data: *const u8,
        length: size_t,
    );
    pub fn alsactl_elem_value_set_int(
        self_: *mut ALSACtlElemValue,
        values: *const i32,
        value_count: size_t,
    );
    pub fn alsactl_elem_value_set_int64(
        self_: *mut ALSACtlElemValue,
        values: *const i64,
        value_count: size_t,
    );

    //=========================================================================
    // ALSACtlElemInfoCommon
    //=========================================================================
    pub fn alsactl_elem_info_common_get_type() -> GType;

    //=========================================================================
    // ALSACtlElemInfoSingleArray
    //=========================================================================
    pub fn alsactl_elem_info_single_array_get_type() -> GType;

    //=========================================================================
    // Other functions
    //=========================================================================
    pub fn alsactl_get_card_id_list(
        entries: *mut *mut c_uint,
        entry_count: *mut size_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_get_card_sysname(
        card_id: c_uint,
        sysname: *mut *mut c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_get_control_devnode(
        card_id: c_uint,
        devnode: *mut *mut c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_get_control_sysname(
        card_id: c_uint,
        sysname: *mut *mut c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn alsactl_sigs_marshal_VOID__BOXED_FLAGS(
        closure: *mut gobject::GClosure,
        return_value: *mut gobject::GValue,
        n_param_values: c_uint,
        param_values: *const gobject::GValue,
        invocation_hint: gpointer,
        marshal_data: gpointer,
    );

}