|  | .Dd January 25, 2011 | 
|  | .Dt ffi_prep_cif_var 3 | 
|  | .Sh NAME | 
|  | .Nm ffi_prep_cif_var | 
|  | .Nd Prepare a | 
|  | .Nm ffi_cif | 
|  | structure for use with | 
|  | .Nm ffi_call | 
|  | for variadic functions. | 
|  | .Sh SYNOPSIS | 
|  | .In ffi.h | 
|  | .Ft ffi_status | 
|  | .Fo ffi_prep_cif_var | 
|  | .Fa "ffi_cif *cif" | 
|  | .Fa "ffi_abi abi" | 
|  | .Fa "unsigned int nfixedargs" | 
|  | .Fa "unsigned int ntotalargs" | 
|  | .Fa "ffi_type *rtype" | 
|  | .Fa "ffi_type **atypes" | 
|  | .Fc | 
|  | .Sh DESCRIPTION | 
|  | The | 
|  | .Nm ffi_prep_cif_var | 
|  | function prepares a | 
|  | .Nm ffi_cif | 
|  | structure for use with | 
|  | .Nm ffi_call | 
|  | for variadic functions. | 
|  | .Fa abi | 
|  | specifies a set of calling conventions to use. | 
|  | .Fa atypes | 
|  | is an array of | 
|  | .Fa ntotalargs | 
|  | pointers to | 
|  | .Nm ffi_type | 
|  | structs that describe the data type, size and alignment of each argument. | 
|  | .Fa rtype | 
|  | points to an | 
|  | .Nm ffi_type | 
|  | that describes the data type, size and alignment of the | 
|  | return value. | 
|  | .Fa nfixedargs | 
|  | must contain the number of fixed (non-variadic) arguments. | 
|  | Note that to call a non-variadic function | 
|  | .Nm ffi_prep_cif | 
|  | must be used. | 
|  | .Sh RETURN VALUES | 
|  | Upon successful completion, | 
|  | .Nm ffi_prep_cif_var | 
|  | returns | 
|  | .Nm FFI_OK . | 
|  | It will return | 
|  | .Nm FFI_BAD_TYPEDEF | 
|  | if | 
|  | .Fa cif | 
|  | is | 
|  | .Nm NULL | 
|  | or | 
|  | .Fa atypes | 
|  | or | 
|  | .Fa rtype | 
|  | is malformed. If | 
|  | .Fa abi | 
|  | does not refer to a valid ABI, | 
|  | .Nm FFI_BAD_ABI | 
|  | will be returned. Available ABIs are | 
|  | defined in | 
|  | .Nm <ffitarget.h> | 
|  | . | 
|  | .Sh SEE ALSO | 
|  | .Xr ffi 3 , | 
|  | .Xr ffi_call 3 , | 
|  | .Xr ffi_prep_cif 3 |