When manipulating raw C data, consider that all pointers are pointing
to an array. When you only want one C value, such as a single
struct
, this array only has one such value. It is worthwhile
to remember that everything is an array, though, because this is also
the semantic that C imposes natively.
C values are accessed as the setf
-able places defined by
mem-aref
and mem-ref
. Given a pointer and a CFFI
type (see Foreign Types), either of these will dereference the
pointer, translate the C data there back to Lisp, and return the
result of said translation, performing the reverse operation when
setf
-ing. To decide which one to use, consider whether you
would use the array index operator [
n]
or the pointer
dereference *
in C; use mem-aref
for array indexing and
mem-ref
for pointer dereferencing.