Next: , Previous: , Up: Types   [Index]


2.3.2 Structures

libffi’ is perfectly happy passing structures back and forth. You must first describe the structure to ‘libffi’ by creating a new ffi_type object for it.

Data type: ffi_type

The ffi_type has the following members:

size_t size

This is set by libffi; you should initialize it to zero.

unsigned short alignment

This is set by libffi; you should initialize it to zero.

unsigned short type

For a structure, this should be set to FFI_TYPE_STRUCT.

ffi_type **elements

This is a ‘NULL’-terminated array of pointers to ffi_type objects. There is one element per field of the struct.

Note that ‘libffi’ has no special support for bit-fields. You must manage these manually.

The size and alignment fields will be filled in by ffi_prep_cif or ffi_prep_cif_var, as needed.