From 7e29d6b19cbf0c04adde1c688b9392a1387e958e Mon Sep 17 00:00:00 2001 Message-Id: <7e29d6b19cbf0c04adde1c688b9392a1387e958e.1714767241.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sun, 13 Mar 2005 18:06:51 +0000 Subject: [PATCH] Modified DEFCALLBACK to avoid unnecessary variable bindings. Organization: Straylight/Edgeware From: espen --- glib/ffi.lisp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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 -- [mdw]