Luís Oliveira wrote:
On 2006-jul-14, at 02:38, Stuart Sierra wrote:
But POINTER-ADDRESS is not setf-able, is it?

Right. AFAICT, some of the Lisps supported by CFFI don't have mutable pointers.

I suspected as much.  I couldn't find it in SBCL's FFI, at least.

(setf *stack-pointer* (inc-pointer *stack-pointer* 1)) should work.
> You can abstract that with a simple macro:

  (defmacro incf-pointer (place &optional (offset 1))
    `(setf ,place (inc-pointer ,place ,offset)))

But won't that set the value that *STACK-POINTER* points to? In my example, *STACK-POINTER* is not a Lisp object but a foreign global variable accessed by name with DEFCVAR. As I understand CFFI's :POINTER type, the above macro will modify the memory location that PLACE points to but will not modify PLACE itself.

-Stuart
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to