;; 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: glib.lisp,v 1.16 2004/11/06 21:39:58 espen Exp $
+;; $Id: glib.lisp,v 1.17 2004/11/07 01:23:38 espen Exp $
(in-package "GLIB")
(funcall (cdr user-data) (car user-data))))
(remhash id *user-data*))
+(defmacro def-callback-marshal (name (return-type &rest args))
+ (let ((names (loop
+ for arg in args
+ collect (if (atom arg) (gensym) (first arg))))
+ (types (loop
+ for arg in args
+ collect (if (atom arg) arg (second arg)))))
+ `(defcallback ,name (,return-type ,@(mapcar #'list names types)
+ (callback-id unsigned-int))
+ (invoke-callback callback-id ',return-type ,@names))))
;;;; Quarks
`(make-glist ',element-type ,list)))
(defmethod to-alien-function ((type (eql 'glist)) &rest args)
- (declare (ignore type args))
+ (declare (ignore type))
(destructuring-bind (element-type) args
#'(lambda (list)
(make-glist element-type list))))
`(make-sglist ',element-type ,list)))
(defmethod to-alien-function ((type (eql 'gslist)) &rest args)
- (declare (ignore type args))
+ (declare (ignore type))
(destructuring-bind (element-type) args
#'(lambda (list)
(make-gslist element-type list))))