[cffi-devel] Re: translate-type-from-foreign
Luis Oliveira
luismbo at gmail.com
Thu Apr 12 16:40:28 UTC 2007
Sean <rosssd at gmail.com> writes:
> I've been specialising translate-to-foreign to automatically convert c
> structures to their equivalent lisp counterparts but without these lines
> this obviously no longer works.
>
> Was this removal deliberate and if so what is the preferred way to
> accomplish this?
Hmm. I tried to track this alleged removal, unsuccessfully. :-) Are you
sure you didn't add that code yourself? I can't find this code in
either 0.9.0 or 0.9.1.
In any case, you bring up a good point, which I've mentioned before too:
<http://article.gmane.org/gmane.lisp.cffi.devel/1033>
Using the cffi-newtypes branch (which I hope to merge soon, since there
haven't been any complaints, unless James has any objections), you could
do something like this:
(defcstruct %my-struct ...)
(define-foreign-type my-struct-type ()
()
(:actual-type %my-struct)
(:simple-parser my-struct))
(defmethod translate-from-foreign (value (type my-struct-type)) ...)
(defmethod translate-to-foreign (value (type my-struct-type)) ...)
(defmethod free-translated-object (value (type my-struct-type) param) ...)
Now, perhaps defcstruct could take an option to define a type class thus
avoiding the need to define a wrapper type. Perhaps something like
this?
(defcstruct (my-struct :class my-struct-type)
...)
Any comments?
--
Luís Oliveira
http://student.dei.uc.pt/~lmoliv/
More information about the cffi-devel
mailing list