macro_rules! ffi {
() => { ... };
(#[repr($($r:tt)*)] pub struct $name:ident { $(pub $field:ident: $ty:ty,)* } $($rest:tt)*) => { ... };
(@test_fields $a:ident $b:ident FltSave $ty:ty) => { ... };
(@test_fields $a:ident $b:ident D $ty:ty) => { ... };
(@test_fields $a:ident $b:ident s $ty:ty) => { ... };
(@test_fields $a:ident $b:ident $field:ident $ty:ty) => { ... };
(pub type $name:ident = $ty:ty; $($rest:tt)*) => { ... };
(pub const $name:ident: $ty:ty = $val:expr; $($rest:tt)*) => { ... };
($(#[$meta:meta])* extern "system" { $(pub fn $name:ident($($args:tt)*) -> $ret:ty;)* } $($rest:tt)*) => { ... };
(impl $name:ident { $($i:tt)* } $($rest:tt)*) => { ... };
}