Mon Jun 1 00:39:13 CEST 2009 Tobias Rautenkranz * QList diff -rN -u old-qt.gui/src/list.lisp new-qt.gui/src/list.lisp --- old-qt.gui/src/list.lisp 2014-10-30 07:48:13.000000000 +0100 +++ new-qt.gui/src/list.lisp 2014-10-30 07:48:13.000000000 +0100 @@ -27,10 +27,13 @@ (define-parse-method ,list-type () (make-instance ',list-type)) (eval-when (:load-toplevel :execute) - (smoke::add-type ,(format nil "const QList<~A>&" type-name) - ',list-type) - (smoke::add-type ,(format nil "QList<~A>" type-name) ',list-type)) - (defmethod translate-from-foreign (list (type ,list-type)) + ,@(loop for type-name in (ensure-list type-name) collect + `(smoke::add-type ,(format nil "const QList<~A>&" type-name) + ',list-type)) + ,@(loop for type-name in (ensure-list type-name) collect + `(smoke::add-type ,(format nil "QList<~A>" type-name) ',list-type))) + ,@(loop for type-name in (ensure-list type-name) collect + `(defmethod translate-from-foreign (list (type ,list-type)) (let ((vector (make-array (,(symbolicate 'qt-smoke-list- type '-size) list)))) @@ -42,7 +45,7 @@ (,(symbolicate 'qt-smoke-list- type '-at) list index) - (smoke::make-smoke-type *qt-smoke* ,type-name)))))) + (smoke::make-smoke-type *qt-smoke* ,type-name))))))) (defmethod free-translated-object (pointer (type ,list-type) param) (declare (ignore param)) (,(symbolicate 'qt-smoke-free-list- type) @@ -55,11 +58,12 @@ (smoke::make-cleanup-pointer qlist (function ,(symbolicate 'qt-smoke-free-list- type))))) - (define-from-lisp-translation (,(format nil "const QList<~A>&" type-name) + ,@(loop for type-name in (ensure-list type-name) collect + `(define-from-lisp-translation (,(format nil "const QList<~A>&" type-name) ,(format nil "QLIst<~A>" type-name)) list ;; FIXME allow seqence and define element type - ,(symbolicate 'coerce- list-type))))) + ,(symbolicate 'coerce- list-type)))))) (define-qlist-wrapper "QVariant") -(define-qlist-wrapper "QObject*" "void") +(define-qlist-wrapper ("QObject*" "QWidget*") "void") (define-qlist-wrapper "QByteArray")