macro_rules! symbol_fn {
() => { ... };
(
($($tt:tt)*) $vis:vis $(extern $cc:literal)? fn $name:ident($($arg:ident : $argtype:ty),*) $(-> $ret:ty)?;
$($tta:tt)*
) => { ... };
(
($($tt:tt)*) $vis:vis unsafe $(extern $cc:literal)? fn $name:ident($($arg:ident : $argtype:ty),*) $(-> $ret:ty)?;
$($tta:tt)*
) => { ... };
(
($($tt:tt)*) $vis:vis $(extern $cc:literal)? fn Self::$name:ident($($arg:ident : $argtype:ty),*) $(-> $ret:ty)?;
$($tta:tt)*
) => { ... };
(
($($tt:tt)*) $vis:vis unsafe $(extern $cc:literal)? fn Self::$name:ident($($arg:ident : $argtype:ty),*) $(-> $ret:ty)?;
$($tta:tt)*
) => { ... };
(
($($tt:tt)*) $vis:vis $(extern $cc:literal)? fn Self::$name:ident([$($self:tt)+] $($arg:ident : $argtype:ty),*) $(-> $ret:ty)?;
$($tta:tt)*
) => { ... };
(
($($tt:tt)*) $vis:vis unsafe $(extern $cc:literal)? fn Self::$name:ident([$($self:tt)+] $($arg:ident : $argtype:ty),*) $(-> $ret:ty)?;
$($tta:tt)*
) => { ... };
}