From 56ccd5b731e30f2d195cefc4cbf0b8640fac2c92 Mon Sep 17 00:00:00 2001 From: espen Date: Sun, 19 Feb 2006 19:31:14 +0000 Subject: [PATCH] C callbacks cleaned up and ported to new API --- glib/gcallback.lisp | 87 ++++++++++++++++++++++++++++++--------------------- glib/gerror.lisp | 13 ++++---- glib/gobject.lisp | 21 ++++++------- gtk/gtk.lisp | 51 +++++++++++++++--------------- gtk/gtkcontainer.lisp | 8 ++--- gtk/gtkselection.lisp | 58 +++++++++++++++------------------- gtk/gtktext.lisp | 12 +++---- gtk/gtktree.lisp | 60 +++++++++++++++++------------------ 8 files changed, 157 insertions(+), 153 deletions(-) diff --git a/glib/gcallback.lisp b/glib/gcallback.lisp index 976bc64..0598e44 100644 --- a/glib/gcallback.lisp +++ b/glib/gcallback.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gcallback.lisp,v 1.29 2006-02-08 19:56:25 espen Exp $ +;; $Id: gcallback.lisp,v 1.30 2006-02-19 19:31:14 espen Exp $ (in-package "GLIB") @@ -34,22 +34,17 @@ (register-user-data function)) ;; Callback marshal for regular signal handlers -(defcallback closure-marshal (nil - (gclosure pointer) - (return-value gvalue) - (n-params unsigned-int) - (param-values pointer) - (invocation-hint pointer) - (callback-id unsigned-int)) +(define-callback closure-marshal nil + ((gclosure gclosure) (return-value gvalue) (n-params unsigned-int) + (param-values pointer) (invocation-hint pointer) + (callback-id unsigned-int)) (declare (ignore gclosure invocation-hint)) (callback-trampoline callback-id n-params param-values return-value)) ;; Callback function for emission hooks -(defcallback signal-emission-hook (nil - (invocation-hint pointer) - (n-params unsigned-int) - (param-values pointer) - (callback-id unsigned-int)) +(define-callback signal-emission-hook nil + ((invocation-hint pointer) (n-params unsigned-int) (param-values pointer) + (callback-id unsigned-int)) (callback-trampoline callback-id n-params param-values)) (defun callback-trampoline (callback-id n-params param-values &optional @@ -93,16 +88,16 @@ (defbinding source-remove () boolean (tag unsigned-int)) -(defcallback source-callback-marshal (nil (callback-id unsigned-int)) +(define-callback source-callback-marshal nil ((callback-id unsigned-int)) (callback-trampoline callback-id 0 nil)) (defbinding (timeout-add "g_timeout_add_full") (interval function &optional (priority +priority-default+)) unsigned-int (priority int) (interval unsigned-int) - ((callback source-callback-marshal) pointer) + (source-callback-marshal callback) ((register-callback-function function) unsigned-long) - ((callback user-data-destroy-func) pointer)) + (user-data-destroy-callback callback)) (defun timeout-remove (timeout) (source-remove timeout)) @@ -110,9 +105,9 @@ (defbinding (idle-add "g_idle_add_full") (function &optional (priority +priority-default-idle+)) unsigned-int (priority int) - ((callback source-callback-marshal) pointer) + (source-callback-marshal callback) ((register-callback-function function) unsigned-long) - ((callback user-data-destroy-func) pointer)) + (user-data-destroy-callback callback)) (defun idle-remove (idle) (source-remove idle)) @@ -283,9 +278,9 @@ unsigned-int ((ensure-signal-id-from-type signal type) unsigned-int) (detail quark) - ((callback signal-emission-hook) pointer) + (signal-emission-hook callback) ((register-callback-function function) unsigned-int) - ((callback user-data-destroy-func) pointer)) + (user-data-destroy-callback callback)) (defbinding signal-remove-emission-hook (type signal hook-id) nil ((ensure-signal-id-from-type signal type) unsigned-int) @@ -323,19 +318,17 @@ (handler-id unsigned-int)) (deftype gclosure () 'pointer) -(register-type 'gclosure "GClosure") +(register-type 'gclosure '|g_closure_get_type|) (defbinding (callback-closure-new "clg_callback_closure_new") () gclosure (callback-id unsigned-int) - (callback pointer) - (destroy-notify pointer)) + (callback callback) + (destroy-notify callback)) (defun make-callback-closure (function) (let ((callback-id (register-callback-function function))) (values - (callback-closure-new - callback-id (callback closure-marshal) - (callback user-data-destroy-func)) + (callback-closure-new callback-id closure-marshal user-data-destroy-callback) callback-id))) (defgeneric compute-signal-function (gobject signal function object)) @@ -449,19 +442,41 @@ once." ;;;; Convenient macros -(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)))) +(defmacro define-callback-marshal (name return-type args &key (callback-id :last)) + (let* ((ignore ()) + (params ()) + (names (loop + for arg in args + collect (if (or + (eq arg :ignore) + (and (consp arg) (eq (first arg) :ignore))) + (let ((name (gensym "IGNORE"))) + (push name ignore) + name) + (let ((name (if (atom arg) + (gensym (string arg)) + (first arg)))) + (push name params) + name)))) + (types (loop + for arg in args + collect (cond + ((eq arg :ignore) 'pointer) + ((atom arg) arg) + (t (second arg)))))) + `(define-callback ,name ,return-type + ,(ecase callback-id + (:first `((callback-id unsigned-int) ,@(mapcar #'list names types))) + (:last `(,@(mapcar #'list names types) (callback-id unsigned-int)))) + (declare (ignore ,@ignore)) + (invoke-callback callback-id ',return-type ,@params)))) (defmacro with-callback-function ((id function) &body body) `(let ((,id (register-callback-function ,function))) (unwind-protect (progn ,@body) (destroy-user-data ,id)))) + +;; For backward compatibility +(defmacro def-callback-marshal (name (return-type &rest args)) + `(define-callback-marshal ,name ,return-type ,args)) diff --git a/glib/gerror.lisp b/glib/gerror.lisp index c8cbd23..e19063f 100644 --- a/glib/gerror.lisp +++ b/glib/gerror.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gerror.lisp,v 1.3 2006-02-13 20:03:29 espen Exp $ +;; $Id: gerror.lisp,v 1.4 2006-02-19 19:31:14 espen Exp $ (in-package "GLIB") @@ -115,10 +115,8 @@ (defparameter *fatal-log-levels* '(error-log-level critical-log-level)) -(defcallback log-handler (nil - (domain (copy-of string)) - (log-level log-levels) - (message (copy-of string))) +(define-callback log-handler nil + ((domain string) (log-level log-levels) (message string)) (let ((fatal-p (or (find :fatal log-level) (some @@ -132,7 +130,8 @@ (funcall (if fatal-p #'error #'warn) condition :domain domain :message message))) -(setf (extern-alien "log_handler" system-area-pointer) (callback log-handler)) +(setf (extern-alien "log_handler" system-area-pointer) + (callback-address log-handler)) #+glib2.6 @@ -143,6 +142,6 @@ ;; abort (SIGABORT being signaled). To make things even worse, SBCL ;; doesn't handle SIGABRT at all. (defbinding %log-set-default-handler () pointer - ((callback log-handler) pointer) + ((progn log-handler) callback) (nil null)) (%log-set-default-handler)) diff --git a/glib/gobject.lisp b/glib/gobject.lisp index 51086f5..aa951f8 100644 --- a/glib/gobject.lisp +++ b/glib/gobject.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gobject.lisp,v 1.47 2006-02-15 09:45:41 espen Exp $ +;; $Id: gobject.lisp,v 1.48 2006-02-19 19:31:14 espen Exp $ (in-package "GLIB") @@ -64,7 +64,8 @@ #+glib2.8 (progn - (defcallback toggle-ref-callback (nil (data pointer) (location pointer) (last-ref-p boolean)) + (define-callback toggle-ref-callback nil + ((data pointer) (location pointer) (last-ref-p boolean)) #+debug-ref-counting (if last-ref-p (format t "Object at 0x~8,'0X has no foreign references~%" (sap-int location)) @@ -75,12 +76,12 @@ (defbinding %object-add-toggle-ref () pointer (location pointer) - ((callback toggle-ref-callback) pointer) + (toggle-ref-callback callback) (nil null)) (defbinding %object-remove-toggle-ref () pointer (location pointer) - ((callback toggle-ref-callback) pointer) + (toggle-ref-callback callback) (nil null))) (defmethod reference-foreign ((class gobject-class) location) @@ -93,12 +94,12 @@ #+debug-ref-counting (progn - (defcallback weak-ref-callback (nil (data pointer) (location pointer)) + (define-callback weak-ref-callback nil ((data pointer) (location pointer)) (format t "Object at 0x~8,'0X being finalized~%" (sap-int location))) (defbinding %object-weak-ref () pointer (location pointer) - ((callback weak-ref-callback) pointer) + (weak-ref-callback callback) (nil null))) @@ -381,16 +382,14 @@ (object gobject) (id quark) (data unsigned-long) - (destroy-marshal pointer)) + (destroy-marshal callback)) -(defcallback user-data-destroy-func (nil (id unsigned-int)) +(define-callback user-data-destroy-callback nil ((id unsigned-int)) (destroy-user-data id)) -(export 'user-data-destroy-func) - (defun (setf user-data) (data object key) (%object-set-qdata-full object (quark-intern key) - (register-user-data data) (callback user-data-destroy-func)) + (register-user-data data) user-data-destroy-callback) data) ;; deprecated diff --git a/gtk/gtk.lisp b/gtk/gtk.lisp index ae4eb10..5ba1626 100644 --- a/gtk/gtk.lisp +++ b/gtk/gtk.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtk.lisp,v 1.53 2006-02-16 19:39:34 espen Exp $ +;; $Id: gtk.lisp,v 1.54 2006-02-19 19:31:14 espen Exp $ (in-package "GTK") @@ -91,18 +91,18 @@ #+gtk2.6 (progn - (def-callback-marshal %about-dialog-activate-link-func - (nil (dialog about-dialog) (link (copy-of string)))) + (define-callback-marshal %about-dialog-activate-link-callback nil + (about-dialog (link string))) (defbinding about-dialog-set-email-hook (function) nil - ((callback %about-dialog-activate-link-func) pointer) + (%about-dialog-activate-link-callback callback) ((register-callback-function function) unsigned-int) - ((callback user-data-destroy-func) pointer)) + (user-data-destroy-callback callback)) (defbinding about-dialog-set-url-hook (function) nil - ((callback %about-dialog-activate-link-func) pointer) + (%about-dialog-activate-link-callback callback) ((register-callback-function function) unsigned-int) - ((callback user-data-destroy-func) pointer))) + (user-data-destroy-callback callback))) ;;; Acccel group @@ -289,19 +289,17 @@ (defbinding accel-map-save () nil (filename pathname)) -(defcallback %accel-map-foreach-func - (nil - (callback-id unsigned-int) (accel-path (copy-of string)) - (key unsigned-int) (modifiers gdk:modifier-type) (changed boolean)) - (invoke-callback callback-id nil accel-path key modifiers changed)) +(define-callback-marshal %accel-map-foreach-callback nil + ((accel-path string) (key unsigned-int) + (modifiers gdk:modifier-type) (changed boolean)) :callback-id :first) (defbinding %accel-map-foreach (callback-id) nil (callback-id unsigned-int) - (%accel-map-foreach-func callback)) + (%accel-map-foreach-callback callback)) (defbinding %accel-map-foreach-unfiltered (callback-id) nil (callback-id unsigned-int) - (%accel-map-foreach-func callback)) + (%accel-map-foreach-callback callback)) (defun accel-map-foreach (function &optional (filter-p t)) (with-callback-function (id function) @@ -748,14 +746,14 @@ ;;; Entry Completion -(def-callback-marshal %entry-completion-match-func - (boolean entry-completion string (copy-of tree-iter))) +(define-callback-marshal %entry-completion-match-callback boolean + (entry-completion string tree-iter)) (defbinding entry-completion-set-match-func (completion function) nil (completion entry-completion) - ((callback %entry-completion-match-func) pointer) + (%entry-completion-match-callback callback) ((register-callback-function function) unsigned-int) - ((callback user-data-destroy-func) pointer)) + (user-data-destroy-callback callback)) (defbinding entry-completion-complete () nil (completion entry-completion)) @@ -892,14 +890,14 @@ (defbinding file-filter-add-pixbuf-formats () nil (filter file-filter)) -(def-callback-marshal %file-filter-func (boolean file-filter-info)) +(define-callback-marshal %file-filter-callback boolean (file-filter-info)) (defbinding file-filter-add-custom (filter needed function) nil (filter file-filter) (needed file-filter-flags) - ((callback %file-filter-func) pointer) + (%file-filter-callback callback) ((register-callback-function function) unsigned-int) - ((callback user-data-destroy-func) pointer)) + (user-data-destroy-callback callback)) (defbinding file-filter-get-needed () file-filter-flags (filter file-filter)) @@ -1778,13 +1776,14 @@ (top-attach unsigned-int) (bottom-attach unsigned-int)) -(def-callback-marshal %menu-position-func (nil (menu menu) (x int) (y int) (push-in boolean))) +(define-callback-marshal %menu-position-callback nil + (menu (x int) (y int) (push-in boolean))) (defbinding %menu-popup () nil (menu menu) (parent-menu-shell (or null menu-shell)) (parent-menu-item (or null menu-item)) - (callback-func (or null pointer)) + (callback (or null callback)) (callback-id unsigned-int) (button unsigned-int) (activate-time (unsigned 32))) @@ -1795,7 +1794,7 @@ (with-callback-function (id callback) (%menu-popup menu parent-menu-shell parent-menu-item - (callback %menu-position-func) id button activate-time)) + %menu-position-callback id button activate-time)) (%menu-popup menu parent-menu-shell parent-menu-item nil 0 button activate-time))) @@ -1823,13 +1822,13 @@ (%menu-set-active menu (%menu-position menu child)) child) -(defcallback %menu-detach-func (nil (widget widget) (menu menu)) +(define-callback %menu-detach-callback nil ((widget widget) (menu menu)) (funcall (object-data menu 'detach-func) widget menu)) (defbinding %menu-attach-to-widget () nil (menu menu) (widget widget) - ((callback %menu-detach-func) pointer)) + (%menu-detach-callback callback)) (defun menu-attach-to-widget (menu widget function) (setf (object-data menu 'detach-func) function) diff --git a/gtk/gtkcontainer.lisp b/gtk/gtkcontainer.lisp index 2987297..4cd200e 100644 --- a/gtk/gtkcontainer.lisp +++ b/gtk/gtkcontainer.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtkcontainer.lisp,v 1.18 2005-04-23 16:48:52 espen Exp $ +;; $Id: gtkcontainer.lisp,v 1.19 2006-02-19 19:31:14 espen Exp $ (in-package "GTK") @@ -89,11 +89,11 @@ (defbinding container-check-resize () nil (container container)) -(def-callback-marshal %foreach-callback (nil widget)) +(define-callback-marshal %foreach-callback nil (widget)) (defbinding %container-foreach (container callback-id) nil (container container) - ((callback %foreach-callback) pointer) + (%foreach-callback callback) (callback-id unsigned-int)) (defun container-foreach (container function) @@ -102,7 +102,7 @@ (defbinding %container-forall (container callback-id) nil (container container) - ((callback %foreach-callback) pointer) + (%foreach-callback callback) (callback-id unsigned-int)) (defun container-forall (container function) diff --git a/gtk/gtkselection.lisp b/gtk/gtkselection.lisp index 3c0eee2..56d86e7 100644 --- a/gtk/gtkselection.lisp +++ b/gtk/gtkselection.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtkselection.lisp,v 1.5 2006-02-09 22:32:47 espen Exp $ +;; $Id: gtkselection.lisp,v 1.6 2006-02-19 19:31:15 espen Exp $ (in-package "GTK") @@ -183,22 +183,21 @@ ((gdk:atom-intern selection) gdk:atom)) -(defcallback %clipboard-get-func (nil (clipboard pointer) - (selection-data selection-data) - (info int) - (user-data unsigned-int)) - (funcall (car (find-user-data user-data)) selection-data info)) +(define-callback %clipboard-get-callback nil + ((clipboard pointer) (selection-data selection-data) + (info int) (callback-ids unsigned-int)) + (funcall (car (find-user-data callback-ids)) selection-data info)) -(defcallback %clipboard-clear-func (nil (clipboard pointer) - (user-data unsigned-int)) - (funcall (cdr (find-user-data user-data)))) +(define-callback %clipboard-clear-callback nil + ((clipboard pointer) (callback-ids unsigned-int)) + (funcall (cdr (find-user-data callback-ids)))) (defbinding clipboard-set-with-data (clipboard targets get-func clear-func) gobject (clipboard clipboard) (targets (vector (inlined target-entry))) ((length targets) unsigned-int) - (%clipboard-get-func callback) - (%clipboard-clear-func callback) + (%clipboard-get-callback callback) + (%clipboard-clear-callback callback) ((register-user-data (cons get-func clear-func)) unsigned-int)) (defbinding clipboard-clear () nil @@ -220,50 +219,43 @@ #+gtk2.6 (gdk:pixbuf (clipboard-set-image clipboard object)))) -(defcallback %clipboard-receive-func (nil (clipboard pointer) - (selection-data selection-data) - (user-data unsigned-int)) - (funcall (find-user-data user-data) selection-data)) +(define-callback-marshal %clipboard-receive-callback nil + ((:ignore clipboard) selection-data)) (defbinding clipboard-request-contents (clipboard target callback) nil (clipboard clipboard) ((gdk:atom-intern target) gdk:atom) - (%clipboard-receive-func callback) + (%clipboard-receive-callback callback) ((register-callback-function callback) unsigned-int)) -(defcallback %clipboard-text-receive-func (nil (clipboard pointer) - (text (copy-of string)) - (user-data unsigned-int)) - (funcall (find-user-data user-data) text)) +(define-callback-marshal %clipboard-text-receive-callback nil + ((:ignore clipboard) (text string))) + (defbinding clipboard-request-text (clipboard callback) nil (clipboard clipboard) - (%clipboard-text-receive-func callback) + (%clipboard-text-receive-callback callback) ((register-callback-function callback) unsigned-int)) #+gtk2.6 (progn - (defcallback %clipboard-image-receive-func (nil (clipboard pointer) - (image gdk:pixbuf) - (user-data unsigned-int)) - (funcall (find-user-data user-data) image)) + (define-callback-marshal %clipboard-image-receive-callback nil + ((:ignore clipboard) (image gdk:pixbuf))) (defbinding clipboard-request-image (clipboard callback) nil (clipboard clipboard) - (%clipboard-image-receive-func callback) + (%clipboard-image-receive-callback callback) ((register-callback-function callback) unsigned-int))) -(defcallback %clipboard-targets-receive-func - (nil (clipboard pointer) - (atoms (vector gdk:atom n-atoms)) - (n-atoms unsigned-int) - (user-data unsigned-int)) - (funcall (find-user-data user-data) atoms)) +(define-callback %clipboard-targets-receive-callback nil + ((clipboard pointer) (atoms (vector gdk:atom n-atoms)) + (n-atoms unsigned-int) (callback-id unsigned-int)) + (funcall (find-user-data callback-id) atoms)) (defbinding clipboard-request-targets (clipboard callback) nil (clipboard clipboard) - (%clipboard-targets-receive-func callback) + (%clipboard-targets-receive-callback callback) ((register-callback-function callback) unsigned-int)) (defbinding clipboard-wait-for-contents () selection-data diff --git a/gtk/gtktext.lisp b/gtk/gtktext.lisp index d7a5e19..2a28816 100644 --- a/gtk/gtktext.lisp +++ b/gtk/gtktext.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtktext.lisp,v 1.6 2005-04-23 16:48:52 espen Exp $ +;; $Id: gtktext.lisp,v 1.7 2006-02-19 19:31:15 espen Exp $ (in-package "GTK") @@ -568,17 +568,17 @@ (iter text-iter) ((%ensure-tag tag iter) text-tag)) -(def-callback-marshal %text-char-predicate (boolean int)) +(define-callback-marshal %text-char-predicate-callback boolean (int)) (defbinding text-iter-forward-find-char (iter predicate &optional limit) boolean (iter text-iter) - ((callback %text-char-predicate) pointer) + (%text-char-predicate-callback callback) ((register-callback-function predicate) unsigned-int) (limit (or null text-iter))) (defbinding text-iter-backward-find-char (iter predicate &optional limit) boolean (iter text-iter) - ((callback %text-char-predicate) pointer) + (%text-char-predicate-callback callback) ((register-callback-function predicate) unsigned-int) (limit (or null text-iter))) @@ -645,11 +645,11 @@ (table text-tag-table) (name string)) -(def-callback-marshal %text-tag-table-foreach (nil text-tag)) +(define-callback-marshal %text-tag-table-foreach-callback nil (text-tag)) (defbinding text-tag-table-foreach (table function) nil (table text-tag-table) - ((callback %text-tag-table-foreach) pointer) + (%text-tag-table-foreach-callback callback) ((register-callback-function function) unsigned-int)) diff --git a/gtk/gtktree.lisp b/gtk/gtktree.lisp index 81c6896..52ee220 100644 --- a/gtk/gtktree.lisp +++ b/gtk/gtktree.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtktree.lisp,v 1.14 2006-02-09 22:32:47 espen Exp $ +;; $Id: gtktree.lisp,v 1.15 2006-02-19 19:31:15 espen Exp $ (in-package "GTK") @@ -58,15 +58,15 @@ ((string-downcase attribute) string) (column int)) -(def-callback-marshal %cell-layout-data-func - (nil cell-layout cell-renderer tree-model (copy-of tree-iter))) +(define-callback-marshal %cell-layout-data-callback nil + (cell-layout cell-renderer tree-model tree-iter)) (defbinding cell-layout-set-cell-data-func (cell-layout cell function) nil (cell-layout cell-layout) (cell cell-renderer) - (%cell-layout-data-func callback) + (%cell-layout-data-callback callback) ((register-callback-function function) unsigned-int) - (user-data-destroy-func callback)) + (user-data-destroy-callback callback)) (defbinding cell-layout-clear-attributes () nil (cell-layout cell-layout) @@ -365,12 +365,12 @@ (iter tree-iter :return) (child tree-iter)) -(def-callback-marshal %tree-model-foreach-func - (boolean tree-model (path (copy-of tree-path)) (iter (copy-of tree-iter)))) +(define-callback-marshal %tree-model-foreach-callback boolean + (tree-model tree-path tree-iter)) -(defbinding %tree-model-foreach () nil +(defbinding %tree-model-foreach (tree-model callback-id) nil (tree-model tree-model) - ((progn %tree-model-foreach-func) callback) + (%tree-model-foreach-callback callback) (callback-id unsigned-int)) (defun tree-model-foreach (model function) @@ -486,13 +486,14 @@ ;;; Tree Selection -(def-callback-marshal %tree-selection-func (boolean tree-selection tree-model (path (copy-of tree-path)) (path-currently-selected boolean))) +(define-callback-marshal %tree-selection-callback boolean + (tree-selection tree-model tree-path (path-currently-selected boolean))) (defbinding tree-selection-set-select-function (selection function) nil (selection tree-selection) - (%tree-selection-func callback) + (%tree-selection-callback callback) ((register-callback-function function) unsigned-int) - (user-data-destroy-func callback)) + (user-data-destroy-callback callback)) (defbinding tree-selection-get-selected (selection &optional (iter (make-instance 'tree-iter))) boolean @@ -500,11 +501,11 @@ (nil null) (iter tree-iter :return)) -(def-callback-marshal %tree-selection-foreach-func (nil tree-model (path (copy-of tree-path)) (iter (copy-of tree-iter)))) +(define-callback-marshal %tree-selection-foreach-callback nil (tree-model tree-path tree-iter)) -(defbinding %tree-selection-selected-foreach () nil +(defbinding %tree-selection-selected-foreach (tree-selection callback-id) nil (tree-selection tree-selection) - ((progn %tree-selection-foreach-func) callback) + (%tree-selection-foreach-callback callback) (callback-id unsigned-int)) (defun tree-selection-selected-foreach (selection function) @@ -581,8 +582,8 @@ (define-enum-type sort-order (:before -1) (:equal 0) (:after 1))) -(def-callback-marshal %tree-iter-compare-func - ((or int sort-order) tree-model (a (copy-of tree-iter)) (b (copy-of tree-iter)))) +(define-callback-marshal %tree-iter-compare-callback (or int sort-order) + (tree-model (a tree-iter) (b tree-iter))) (defbinding tree-sortable-sort-column-changed () nil (sortable tree-sortable)) @@ -614,15 +615,15 @@ (defbinding %tree-sortable-set-sort-func (sortable column function) nil (sortable tree-sortable) ((column-index sortable column) int) - (%tree-iter-compare-func callback) + (%tree-iter-compare-callback callback) ((register-callback-function function) unsigned-int) - (user-data-destroy-func callback)) + (user-data-destroy-callback callback)) (defbinding %tree-sortable-set-default-sort-func () nil (sortable tree-sortable) - (compare-func (or null pointer)) + (compare-func (or null callback)) (callback-id unsigned-int) - (destroy-func (or null pointer))) + (destroy-func (or null callback))) (defun tree-sortable-set-sort-func (sortable column function) "Sets the comparison function used when sorting to be FUNCTION. If @@ -633,9 +634,9 @@ then the model will sort using this function." (%tree-sortable-set-default-sort-func sortable nil 0 nil)) ((eq column :default) (%tree-sortable-set-default-sort-func sortable - (callback %tree-iter-compare-func) + %tree-iter-compare-callback (register-callback-function function) - (callback user-data-destroy-func))) + user-data-destroy-callback)) ((%tree-sortable-set-sort-func sortable column function)))) (defbinding tree-sortable-has-default-sort-func-p () boolean @@ -849,11 +850,11 @@ then the model will sort using this function." (tree-view tree-view) (path tree-path)) -(def-callback-marshal %tree-view-mapping-func (nil tree-view (path (copy-of tree-path)))) +(define-callback-marshal %tree-view-mapping-callback nil (tree-view tree-path)) -(defbinding %tree-view-map-expanded-rows () nil +(defbinding %tree-view-map-expanded-rows (tree-view callback-id) nil (tree-view tree-view) - ((progn %tree-view-mapping-func) callback) + (%tree-view-mapping-callback callback) (callback-id unsigned-int)) (defun map-expanded-rows (function tree-view) @@ -901,12 +902,11 @@ then the model will sort using this function." (icon-view icon-view) (x int) (y int)) - (def-callback-marshal %icon-view-foreach-func - (nil icon-view (path (copy-of tree-path)))) + (define-callback-marshal %icon-view-foreach-callback nil (icon-view tree-path)) - (defbinding %icon-view-selected-foreach () tree-path + (defbinding %icon-view-selected-foreach (icon-view callback-id) tree-path (icon-view icon-view) - ((progn %icon-view-foreach-func) callback) + (%icon-view-foreach-callback callback) (callback-id unsigned-int)) (defun icon-view-foreach (icon-view function) -- 2.11.0