FLI type descriptor
union
type.
fli
:union &rest slots
slots ::= {symbol | (symbol type)}*
A sequence of one or more slots making up the union.
A symbol naming the slot.
The slot type. If no type is given, it defaults to an:int
.
:union
type is an aggregate type, and converts between a Lisp object and a Cunion
type. The FLI union consists of a collection of one or more slots, only one of which can be active at any one time. The size of the whole union structure is therefore equal to the size of the largest slot. Each slot has a name and a type. foreign-slot-names
, foreign-slot-type
, and foreign-slot-value
functions can be used to access and change the slots of the union. The convenience FLI function define-c-union
is provided to simplify the definition of unions. (fli:define-c-union my-number (small :byte) (large :int))
length
. (setq length (fli:allocate-foreign-object :type 'my-number))
small
slot of the union is set equal to24
. (setf (fli:foreign-slot-value length 'small))