2.3.6 Complex Types
‘libffi’ supports the complex types defined by the C99
standard (_Complex float, _Complex double and
_Complex long double with the built-in type descriptors
ffi_type_complex_float, ffi_type_complex_double and
ffi_type_complex_longdouble.
Custom complex types like _Complex int can also be used.
An ffi_type object has to be defined to describe the
complex type to ‘libffi’.
- Data type: ffi_type ¶
size_t size
This must be manually set to the size of the complex type.
unsigned short alignment
This must be manually set to the alignment of the complex type.
unsigned short type
For a complex type, this must be set to FFI_TYPE_COMPLEX.
ffi_type **elements
-
This is a ‘NULL’-terminated array of pointers to
ffi_type objects. The first element is set to the
ffi_type of the complex’s base type. The second element
must be set to NULL.
The section Complex Type Example shows a way to determine
the size and alignment members in a platform
independent way.
For platforms that have no complex support in libffi yet,
the functions ffi_prep_cif and ffi_prep_args abort
the program if they encounter a complex type.