Finally nailed down the syntax of the external_library macro.
This commit is contained in:
parent
4028c5c618
commit
95361a80e2
@ -16,6 +16,9 @@ extern crate core as std;
|
||||
|
||||
|
||||
|
||||
// Macros to help create bindings to FFI libraries.
|
||||
mod macros;
|
||||
|
||||
// Basic C type macro modules.
|
||||
mod c_enum;
|
||||
mod c_flags;
|
||||
@ -24,15 +27,13 @@ mod c_types;
|
||||
// Raw platform data retrieval.
|
||||
mod raw;
|
||||
|
||||
// Macros to help create bindings to FFI libraries.
|
||||
mod macros;
|
||||
|
||||
|
||||
#[cfg(feature="use_std")]
|
||||
pub use self::c_types::{CStr, CString, NullByteError};
|
||||
|
||||
pub use self::c_types::{CChar, CUChar};
|
||||
pub use self::c_types::{CShort, CUShort, CInt, CUInt, CLong, CULong};
|
||||
pub use self::c_types::{CLongLong, CULongLong, CFloat, CDouble};
|
||||
pub use self::c_types::{CVoid, CReturnVoid};
|
||||
#[cfg(feature="use_std")]
|
||||
pub use self::c_types::{CStr, CString, NullByteError};
|
||||
pub use self::raw::{AsRaw, AsRawMut, AsRawPtr, AsRawMutPtr, FromRaw, IntoRaw};
|
||||
|
@ -5,27 +5,33 @@ macro_rules! external_library
|
||||
$name: ident: $link: expr =>
|
||||
{
|
||||
$(statics:
|
||||
$($sname: ident: $stype: ty);+;
|
||||
)|*
|
||||
{
|
||||
$($sname: ident: $stype: ty);+;
|
||||
}
|
||||
)?
|
||||
|
||||
$(functions:
|
||||
$($fname: ident($($farg: ident: $fargt: ty),*) -> $fret:ty);+;
|
||||
)|*
|
||||
{
|
||||
$($fname: ident($($farg: ident: $fargt: ty),*) -> $fret:ty);+;
|
||||
}
|
||||
)?
|
||||
|
||||
$(varargs:
|
||||
$($vname: ident($($vargs: ident: $vargst: ty),+) -> $vret: ty);+;
|
||||
)|*
|
||||
{
|
||||
$($vname: ident($($vargs: ident: $vargst: ty),+) -> $vret:ty);+;
|
||||
}
|
||||
)?
|
||||
}
|
||||
} =>
|
||||
{
|
||||
#[link(name=$link)]
|
||||
extern "C"
|
||||
{
|
||||
$($(pub static $sname: $stype;)+)*
|
||||
$($(pub static $sname: $stype;)+)?
|
||||
|
||||
$($(pub fn $fname($($farg: $fargt),*) -> $fret;)+)*
|
||||
$($(pub fn $fname($($farg: $fargt),*) -> $fret;)+)?
|
||||
|
||||
$($(pub fn $vname($(vargs: $vargst),+ , ...) -> $vret;)+)*
|
||||
$($(pub fn $vname($(vargs: $vargst),+ , ...) -> $vret;)+)?
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user