"Luís Oliveira" <[EMAIL PROTECTED]> writes:

> On 9/25/06, Lars Brinkhoff <[EMAIL PROTECTED]> 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."

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

Reply via email to