Struct libffi::middle::Cif  
                   
                       [−]
                   
               [src]
pub struct Cif { /* fields omitted */ }Describes the calling convention and types for calling a function.
This is the middle layer’s wrapping of the low and raw layers’
ffi_cif. An initialized CIF contains
references to an array of argument types and a result type, each of
which may be allocated on the heap. Cif manages the memory of
those referenced objects.
Construct with Cif::new or
Cif::from_type_array.
Examples
extern "C" fn add(x: f64, y: &f64) -> f64 { return x + y; } use libffi::middle::*; let args = vec![Type::f64(), Type::pointer()]; let cif = Cif::new(args.into_iter(), Type::f64()); let n = unsafe { cif.call(CodePtr(add as *mut _), &[arg(&5), arg(&&6)]) }; assert_eq!(11, n);
Methods
impl Cif[src]
pub fn new<I>(args: I, result: Type) -> Self where
    I: IntoIterator<Item = Type>,
    I::IntoIter: ExactSizeIterator<Item = Type>, [src]
I: IntoIterator<Item = Type>,
I::IntoIter: ExactSizeIterator<Item = Type>,
Creates a new CIF for the given argument and result types.
Takes ownership of the argument and result
Types, because the resulting
Cif retains references to them.
Defaults to the platform’s default calling convention; this
can be adjusted using set_abi.
pub unsafe fn call<R>(&self, fun: CodePtr, args: &[Arg]) -> R[src]
Calls a function with the given arguments.
In particular, this method invokes function fun passing it
arguments args, and returns the result.
Safety
There is no checking that the calling convention and types
in the Cif match the actual calling convention and types of
fun, nor that they match the types of args.
pub fn set_abi(&mut self, abi: FfiAbi)[src]
Sets the CIF to use the given calling convention.
pub fn as_raw_ptr(&self) -> *mut ffi_cif[src]
Trait Implementations
impl Debug for Cif[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result[src]
Formats the value using the given formatter. Read more