(:struct name)for the structure by value, and
(:pointer (:struct name))for the structure by reference. The bare structure form is still accepted, with a style warning.
mem-arefreturns an element of the array, an object; since we now can translate foreign structures, that includes structures. If the type is designated as
(:struct name), that means a CL representation of the structure will be returned. By default (with no
translate-from-foreignmethod defined), that is a plist. If you want a pointer instead, use the new function
mem-aptr. As a special case, using the bare structure type specification,
mem-arefstill returns a pointer, but if you use the new form, you need to call
mem-aptrto get the pointer instead of the object translated into CL.
(Rationale for the new function is here.)
If this isn't working as described, please post to cffi-devel.