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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
extern crate alsa_sys as alsa;
extern crate libc;
#[macro_use]
extern crate bitflags;
#[macro_use]
extern crate nix;
macro_rules! alsa_enum {
($(#[$attr:meta])+ $name:ident, $static_name:ident [$count:expr], $( $a:ident = $b:ident),* ,) =>
{
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
$(#[$attr])*
pub enum $name {
$(
$a = alsa::$b as isize,
)*
}
static $static_name: [$name; $count] =
[ $( $name::$a, )* ];
impl $name {
pub fn all() -> &'static [$name] { &$static_name[..] }
#[allow(dead_code)]
fn from_c_int(c: ::libc::c_int, s: &'static str) -> Result<$name> {
Self::all().iter().find(|&&x| c == x as ::libc::c_int).map(|&x| x)
.ok_or_else(|| Error::unsupported(s))
}
}
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum Direction {
Playback,
Capture
}
impl Direction {
#[inline]
pub fn input() -> Direction { Direction::Capture }
#[inline]
pub fn output() -> Direction { Direction::Playback }
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum ValueOr {
Less = -1,
Nearest = 0,
Greater = 1,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum Round {
Floor = 0,
Ceil = 1,
}
mod error;
pub use crate::error::{Error, Result};
pub mod card;
pub use crate::card::Card as Card;
mod ctl_int;
pub mod ctl {
pub use super::ctl_int::{Ctl, CardInfo, ElemIface, ElemId, ElemType, ElemValue, ElemInfo};
}
pub use crate::ctl::Ctl as Ctl;
pub mod hctl;
pub use crate::hctl::HCtl as HCtl;
pub mod pcm;
pub use crate::pcm::PCM as PCM;
pub mod rawmidi;
pub use crate::rawmidi::Rawmidi as Rawmidi;
pub mod device_name;
pub mod poll;
pub use crate::poll::Descriptors as PollDescriptors;
pub mod mixer;
pub use crate::mixer::Mixer as Mixer;
pub mod seq;
pub use crate::seq::Seq as Seq;
mod io;
pub use crate::io::Output;
mod chmap;
pub mod direct;