[Cffi-devel] defcstruct &key size
Hello, Apparently SIZE is not evaluated at macro expansion time. I basically want to pass the name of a foreign function as SIZE and have it evaluated. What would be the best way to do that? Currently I'm doing this: (eval-when (:compile-toplevel :load-toplevel :execute) (cffi:define-foreign-library libfoo (:unix "libfoo.so")) (cffi:load-foreign-library 'libfoo) (cffi:defctype size :uint) (cffi:defcfun ("foo_size" foo-size) size)) (macrolet ((m () `(cffi:defcstruct (foo-struct :size ,(eval-when (:compile-toplevel :load-toplevel :execute) (foo-size))) (data :pointer)))) (m))
On Sat, Nov 1, 2014 at 9:09 PM, FAU <fau@riseup.net> wrote:
Apparently SIZE is not evaluated at macro expansion time.
I basically want to pass the name of a foreign function as SIZE and have it evaluated. [...] (macrolet ((m () `(cffi:defcstruct (foo-struct :size ,(eval-when (:compile-toplevel :load-toplevel :execute) (foo-size))) (data :pointer)))) (m))
Do you really need to define a struct type? Can you get away with something like (with-foreign-object (p :char size) ...)? -- Luís Oliveira http://kerno.org/~luis/
participants (2)
-
FAU
-
Luís Oliveira