![](https://secure.gravatar.com/avatar/326b108ffcc42f27628703b0c11ed239.jpg?s=120&d=mm&r=g)
On 2005-dec-09, at 13:55, Hoehle, Joerg-Cyril wrote:
I had a short glance at the CLISP implementation and it immediately struck me that CFFI dislikes CLISP's consistent use of NIL for a NULL FFI pointer. Why?
I'm not sure I dislike it. What I don't like is that CLISP doesn't offer a type that *doesn't* translate between NIL and a FFI pointer. It's just that it's easy to come up with a type that does the NIL <-> NULL translation out of a raw pointer type. (defctype :ptr :pointer) (define-type-translator :ptr :to-c (type value) `(or ,type (null-pointer)) (define-type-translator :ptr :from-c (type value) (with-unique-names (pointer) `(let ((,pointer ,value)) (if (null-pointer-p ,pointer) nil ,pointer)))) IIRC, James deliberately doesn't want to translate between NIL and the NULL pointer because NIL shows up often in error situations. I suppose we could put this alternate type in CFFI for those who like it anyway? -- Luís Oliveira http://student.dei.uc.pt/~lmoliv/ Equipa Portuguesa do Translation Project http://www.iro.umontreal.ca/translation/registry.cgi?team=pt