Defines a new FLI pointer type.
fli
define-foreign-pointer name-and-options points-to-type &rest slots => type-name
name-and-options ::= type-name | (type-name (option*))
option ::= (option-name option-value)
| points-to-type⇩ |
A foreign type. |
| slots⇩ |
Slots of the new type. |
| type-name⇩ |
A symbol naming the new FLI type. |
| option-name⇩ | :allow-null or a defstruct option. |
| option-value⇩ |
A symbol. |
| type-name |
The name of the new FLI pointer type. |
The macro define-foreign-pointer defines two things:
The option :allow-null takes an option-value of either t or nil, defaulting to nil. It controls whether the type type-name accepts nil.
The other allowed values for option-name are the defstruct options :conc-name, :constructor, :predicate, :print-object, :print-function. In each case the symbol supplied as option-value provides the corresponding option for type-name.
slots is a list of defstruct slot-descriptions which become slots in type-name.
When LispWorks makes a foreign pointer of type type-name, then an object of Lisp type type-name is made instead of a foreign pointer object. This is useful if you want to associate extra Lisp data with the foreign pointer object, using slots.
Foreign Language Interface User Guide and Reference Manual - 01 Dec 2021 19:34:58