All Manuals > LispWorks Foreign Language Interface User Guide and Reference Manual > 8 Type Reference

NextPrevUpTopContentsIndex

:foreign-array

FLI type descriptor
Summary

Converts between a FLI array and a foreign array type.

Syntax

:foreign-array type dimensions

Arguments

type

The type of the elements of the array.

dimensions

A list containing the dimensions of the array.

Description

The FLI :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.

The :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.

Notes

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.

Example

The following code defines a 3 by 4 foreign array with elements of type :byte.

(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[3][4];
See also

:c-array
foreign-aref
foreign-array-pointer
Arrays


LispWorks Foreign Language Interface User Guide and Reference Manual - 16 Feb 2015

NextPrevUpTopContentsIndex