Any FLI type which is made up of other FLI types. This can be either an array of instances of a given FLI type, or a structured object.
Arrays, string, structure, and unions are all aggregate types. Pointers are not aggregates.
A Lisp function, defined with the FLI macro define-foreign-callable
, which can be called from a foreign language.
A coerced pointer is a pointer that is dereferenced with the :type
key in order to return the value pointed to as a different type than specified by the pointer type. For example, a pointer to a byte can be coerced to return a boolean on dereferencing.
The Foreign Language Interface, which consists of the macros, functions, types and variables defined in the fli
package.
Code written in Lisp using the functions, macros and types in the fli
package.
A function in the fli
package used to interface Lisp with a foreign language.
A data type specifier in the fli
package used to define data objects that interface between Lisp and the foreign language. For example, a C long
might be passed to LispWorks through an instance of the FLI type :long
, from which it is transferred to a Lisp integer
.
A Lisp function, defined using the FLI macro define-foreign-function
, which calls a function written in a foreign language. A foreign function contains no body, consisting only of a name and a list of arguments. The function in the foreign language provides the body of the foreign function.
A language to which Lisp can be interfaced using the FLI. Currently the FLI interfaces to C, and therefore also the Win32 API functions.
A FLI type consisting of an address and a type specification. A pointer normally points to the memory location of an instance of the type specified, although there might not actually be an allocated instance of the type at the pointer location.
A pointer is a boxed foreign object because it contains type information about the type it is pointing to (so that we can dereference it). In 'C' a pointer can be represented by a single register.
A FLI type that is not an aggregate type. The FLI type maps directly to a single foreign type such as integer, floating point, enumeration and pointer.
A description of the :wrapper
FLI type which "wraps" around an object, allowing data to be passed to or obtained from the object as though it was of a different type. A wrapper can be viewed as a set of conversion functions defined on the object which are automatically invoked when the wrapped object is accessed.
LispWorks Foreign Language Interface User Guide and Reference Manual - 16 Feb 2015