X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/aee2ecd4464d6fa16896c5eb987f4da34db29bdb..7e29d6b19cbf0c04adde1c688b9392a1387e958e:/glib/ffi.lisp diff --git a/glib/ffi.lisp b/glib/ffi.lisp index aa95293..385a7c4 100644 --- a/glib/ffi.lisp +++ b/glib/ffi.lisp @@ -15,7 +15,7 @@ ;; License along with this library; if not, write to the Free Software ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -;; $Id: ffi.lisp,v 1.17 2005-02-25 23:55:06 espen Exp $ +;; $Id: ffi.lisp,v 1.18 2005-03-13 18:06:51 espen Exp $ (in-package "GLIB") @@ -207,10 +207,14 @@ (defmacro defcallback (name (return-type &rest args) &body body) `(,name ,(alien-type type)))) args)) ,(to-alien-form - `(let (,@(mapcar #'(lambda (arg) - (destructuring-bind (name type) arg - `(,name ,(from-alien-form name type)))) - args)) + `(let (,@(delete nil + (mapcar #'(lambda (arg) + (destructuring-bind (name type) arg + (let ((from-alien + (from-alien-form name type))) + (unless (eq name from-alien) + `(,name ,from-alien))))) + args))) ,@body) return-type)))) @@ -218,6 +222,8 @@ (defmacro defcallback (name (return-type &rest args) &body body) (defun callback (af) (sb-alien:alien-function-sap af)) +#+sbcl +(deftype callback () 'sb-alien:alien-function) ;;;; Definitons and translations of fundamental types