Converts between a FLI array and a foreign array type.
:foreign-array type dimensions
The type of the elements of the array.
A list containing the dimensions of the array.
:foreign-array converts between FLI arrays and the foreign array type. It creates an array with the dimensions specified in dimensions, of elements of the type specified by type.
:foreign-array type is an aggregate type. In particular,
:foreign-array with more than one dimension is an array containing embedded arrays, not an array of pointers.
Only use the
:foreign-array type when the corresponding foreign code uses an array with a constant declared size. If you need a dynamically sized array, then use a pointer type, allocate the array using the nelems argument to allocate-foreign-object or with-dynamic-foreign-objects and use dereference to access the elements. The pointer type is more efficient than making
:foreign-array types dynamically with different dimensions because the FLI caches information about every different FLI type descriptor that is used.
The following code defines a 3 by 4 foreign array with elements of type
(setq farray (fli:allocate-foreign-object
:type '(:foreign-array :byte (3 4))))
The type of this is equivalent to the C declaration
signed char array2;
LispWorks Foreign Language Interface User Guide and Reference Manual - 16 Feb 2015