define-c-union name-and-options &rest slot-descriptions => list
name-and-options ::= name | ( name option *)
option ::= (:foreign-name string )
slot-descriptions
::= {
slot-name
| (
slot-name
slot-type
)}*
A symbol naming the new union type descriptor
A string specifying the foreign name of the type
A sequence of symbols, possibly with type descriptions, naming the slots of the union.
A symbol naming the slot.
The FLI type of the slot.
The macro
define-c-union
is used to define a FLI union type specifier, which corresponds to the C
union
type. It is a convenience function, as a union type could also be defined using define-foreign-type.
A union is an aggregate type, or collection, of other FLI types. The types contained in a union are referred to as slots, and can be accessed using the foreign-slot-type and foreign-slot-value functions.
In the following example a union is defined using
define-c-union
, and the corresponding C code is given.
(fli:define-c-union a-point (x :int)
(color :byte)
(ident :char))
union a-point {
int x;
byte color;
char ident;
};
LispWorks Foreign Language Interface User Guide and Reference Manual - 7 Dec 2011