define-foreign-type name-and-options lambda-list &body forms => name
A symbol naming the new FLI type
A string specifying the foreign name of the type
A lambda list which is the argument list of the new FLI type
One or more Lisp forms which provide a definition of the new type
The macro
define-foreign-type
defines a new FLI type called
name
. The
forms
in the definition can be used to determine the behavior of the type, depending on the arguments supplied to the
lambda-list
.
In the following example an integer array type specifier is defined. Note that the type takes a list as its argument, and uses this to determine the size of the array.
(fli:define-foreign-type :int-array (dimensions)
`(:c-array :int ,@dimensions))
(setq number-array (fli:allocate-foreign-object
:type '(:int-array (2 2))))
In the next example a boolean type, called
:bool
, with the same size as an integer is defined.
(fli:define-foreign-type :bool () `(:boolean :int))
(fli:size-of :bool)
define-c-typedef
define-foreign-converter
define-foreign-forward-reference-type
foreign-type-equal-p