binding/src/macros.rs

32 lines
639 B
Rust
Raw Normal View History

#[macro_export]
macro_rules! external_library
{
{
$name: ident : $link: expr =>
{
$(statics:
$($sname: ident: $stype: ty),+;
)|*
$(functions:
2019-06-24 22:23:59 -04:00
$($fname: ident($($farg: ident : $fargt: ty),*) -> $fret:ty),+;
)|*
$(varargs:
$($vname: ident($($vargs: ty),+) -> $vret: ty),+;
)|*
}
} =>
{
#[link(name=$link)]
extern "C"
{
$($(pub static $sname: $stype;)+)*
2019-06-24 22:23:59 -04:00
$($(pub fn $fname($($farg: $fargt),*) -> $fret;)+)*
$($(pub fn $vname($(_: $vargs),+ , ...) -> $vret;)+)*
}
}
}