The function incf-pointer
increases the address held by the pointer. If delta is not given the address is increased by the size of the type pointed to by the pointer. The address can be increased by a multiple of the size of the type by specifying a delta.
The function incf-pointer
is often used to move a pointer through an array of values.
In the following example an array with 10 entries is defined. A copy of the pointer to the array is made, and is incremented and decremented.
(setq array-obj
(fli:allocate-foreign-object :type :int
:nelems 10
:initial-contents '(0 1 2 3 4 5 6 7 8 9)))
(setq point1 (fli:copy-pointer array-obj))
(dotimes (x 9)
(fli:incf-pointer point1)
(print (fli:dereference point1)))
(dotimes (x 9)
(fli:decf-pointer point1)
(print (fli:dereference point1)))
LispWorks Foreign Language Interface User Guide and Reference Manual - 16 Feb 2015