macro_rules! shared_library {
($struct_name:ident, pub $($rest:tt)+) => { ... };
($struct_name:ident, fn $($rest:tt)+) => { ... };
($struct_name:ident, static $($rest:tt)+) => { ... };
($struct_name:ident, $def_path:expr, $($rest:tt)+) => { ... };
(__impl $struct_name:ident
[$($p1:tt)*] [$($p2:tt)*] [$($p3:tt)*]
, $($rest:tt)*
) => { ... };
(__impl $struct_name:ident
[$($p1:tt)*] [$($p2:tt)*] [$($p3:tt)*]
pub $($rest:tt)*
) => { ... };
(__impl $struct_name:ident
[$($p1:tt)*] [$($p2:tt)*] [$($p3:tt)*]
fn $name:ident($($p:ident:$ty:ty),*) -> $ret:ty, $($rest:tt)*
) => { ... };
(__impl $struct_name:ident
[$($p1:tt)*] [$($p2:tt)*] [$($p3:tt)*]
static $name:ident:$ty:ty, $($rest:tt)*
) => { ... };
(__impl $struct_name:ident
[$($p1:tt)*] [$($p2:tt)*] [$($p3:tt)*]
fn $name:ident($($p:ident:$ty:ty),*), $($rest:tt)*
) => { ... };
(__impl $struct_name:ident [$(,$mem_n:ident:$mem_t:ty)+] [$($p2:tt)*] [$($p3:tt)*]) => { ... };
(__write_static_fns $struct_name:ident [$($p1:tt)*] [] [$($p3:tt)*]) => { ... };
(__write_static_fns $struct_name:ident [$($p1:tt)*] [$defpath:expr] [$($standalones:item)+]) => { ... };
}