"Luís Oliveira" loliveira@common-lisp.net writes:
On 9/25/06, Lars Brinkhoff lars@nocrew.org wrote:
Can CFFI defcallbacks be closures, e.g.
(let ((x 42)) (defcallback foo :int ((y :int)) (+ x y)))
Unfortunately, last time I checked, not all Lisps support non top-level DEFCALLBACKs. See: http://common-lisp.net/project/cffi/manual/html_node/defcallback.html
...and in even those that do (like SBCL), you should be aware that whereas a call like (some-foreign-function callback) is likely to be decently efficient, each call like (let ((x 0)) (some-foreign-function (alien-lambda () (frob x)))) is likely to be a _lot_ more expensive, as each call needs to generate a new callback.
Cheers,
-- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."