1macro_rules! cubeb_enum {
7 (pub enum $name:ident { $($variants:tt)* }) => {
8 #[cfg(target_env = "msvc")]
9 pub type $name = i32;
10 #[cfg(not(target_env = "msvc"))]
11 pub type $name = u32;
12 cubeb_enum!(gen, $name, 0, $($variants)*);
13 };
14 (pub enum $name:ident: $t:ty { $($variants:tt)* }) => {
15 pub type $name = $t;
16 cubeb_enum!(gen, $name, 0, $($variants)*);
17 };
18 (gen, $name:ident, $val:expr, $variant:ident, $($rest:tt)*) => {
19 pub const $variant: $name = $val;
20 cubeb_enum!(gen, $name, $val+1, $($rest)*);
21 };
22 (gen, $name:ident, $val:expr, $variant:ident = $e:expr, $($rest:tt)*) => {
23 pub const $variant: $name = $e;
24 cubeb_enum!(gen, $name, $e+1, $($rest)*);
25 };
26 (gen, $name:ident, $val:expr, ) => {}
27}