1.Dd February 15, 2008
2.Dt ffi_prep_cif 3
3.Sh NAME
4.Nm ffi_prep_cif
5.Nd Prepare a
6.Nm ffi_cif
7structure for use with
8.Nm ffi_call
9.
10.Sh SYNOPSIS
11.In ffi.h
12.Ft ffi_status
13.Fo ffi_prep_cif
14.Fa "ffi_cif *cif"
15.Fa "ffi_abi abi"
16.Fa "unsigned int nargs"
17.Fa "ffi_type *rtype"
18.Fa "ffi_type **atypes"
19.Fc
20.Sh DESCRIPTION
21The
22.Nm ffi_prep_cif
23function prepares a
24.Nm ffi_cif
25structure for use with
26.Nm ffi_call
27.
28.Fa abi
29specifies a set of calling conventions to use.
30.Fa atypes
31is an array of
32.Fa nargs
33pointers to
34.Nm ffi_type
35structs that describe the data type, size and alignment of each argument.
36.Fa rtype
37points to an
38.Nm ffi_type
39that describes the data type, size and alignment of the
40return value. Note that to call a variadic function
41.Nm ffi_prep_cif_var
42must be used instead.
43.Sh RETURN VALUES
44Upon successful completion,
45.Nm ffi_prep_cif
46returns
47.Nm FFI_OK .
48It will return
49.Nm FFI_BAD_TYPEDEF
50if
51.Fa cif
52is
53.Nm NULL
54or
55.Fa atypes
56or
57.Fa rtype
58is malformed. If
59.Fa abi
60does not refer to a valid ABI,
61.Nm FFI_BAD_ABI
62will be returned. Available ABIs are
63defined in
64.Nm <ffitarget.h> .
65.Sh SEE ALSO
66.Xr ffi 3 ,
67.Xr ffi_call 3 ,
68.Xr ffi_prep_cif_var 3
69