Macro dlib::ffi_dispatch[][src]

macro_rules! ffi_dispatch {
    (feature = $feature : expr, $handle : ident, $func : ident, $($arg : expr), *) => { ... };
    ($handle : ident, $func : ident, $($arg : expr), *) => { ... };
}
Expand description

Macro for generically invoking a FFI function

The expected arguments are, in order:

  • (Optional) The name of the cargo feature conditionning the usage of dlopen, in the form feature="feature-name". If ommited, the feature "dlopen" will be used.
  • A value of the handle generated by the macro external_library! when the dlopen-controlling feature is enabled
  • The name of the function to invoke
  • The arguments to be passed to the function

The macro invocation evaluates to the return value of the FFI function.

Example

Assuming an FFI function of signature fn(u32, u32) -> u32:

let sum = unsafe { ffi_dispatch!(feature="dlopen", LIBRARY_HANDLE, sum, 2, 2) };