A sequence of one or more slots making up the structure.
A symbol naming the slot.
The slot type. If no type is given it defaults to an
:int
.
An integer type. Only
:int
,
(:unsigned :int)
and
(:signed :int)
are guaranteed to work on all platforms.
An integer specifying a number of bits for the field.
The FLI
:struct
type is an aggregate type, and converts between a FLI structure and a C
struct
type. The FLI structure consists of a collection of one or more slots. Each slot has a name and a type. A structure can also contain bit fields, which are integers with a specified number of bits.
The foreign-slot-names, foreign-slot-type, and foreign-slot-value functions can be used to access and change the slots of the structure. The convenience FLI function define-c-struct is provided to simplify the definition of structures.
In the following example a structure for passing coordinates to Windows functions is defined.
(fli:define-c-struct tagPOINT (x :long) (y :long))
An instance of the structure is allocated and bound to the Lisp variable
place
.
(setq place
(fli:allocate-foreign-object :type 'tagPOINT))
Finally, the
x
slot of
place
is set to be
4
using
fli:foreign-slot-value
.
(seft (fli:foreign-slot-value place 'x) 4)
define-c-struct
foreign-slot-names
foreign-slot-offset
foreign-slot-pointer
foreign-slot-type
foreign-slot-value