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