X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/2bd78f93f681c3afb5b555265ae3831fbe3ba017..8a32b4c6927e4345cbc30c854261527fdf2518dd:/glib/gobject.lisp?ds=inline diff --git a/glib/gobject.lisp b/glib/gobject.lisp index 115a04c..6543d2d 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.54 2006-08-16 12:09:03 espen Exp $ +;; $Id: gobject.lisp,v 1.56 2007-05-10 20:25:30 espen Exp $ (in-package "GLIB") @@ -154,7 +154,7 @@ (defmethod compute-slot-reader-function ((slotd effective-property-slot-definiti (defmethod compute-slot-writer-function :around ((slotd effective-property-slot-definition)) (if (construct-only-property-p slotd) #'(lambda (value object) - (declare (ignore value object)) + (declare (ignore value)) (unless *ignore-setting-construct-only-property* (error 'unwritable-slot :name (slot-definition-name slotd) :instance object))) (call-next-method))) @@ -391,35 +391,40 @@ (defbinding object-thaw-notify () nil ;;;; User data +(defgeneric (setf user-data) (data object key)) +(defgeneric user-data (object key)) +(defgeneric user-data-p (object key)) +(defgeneric unset-user-data (object key)) + (defbinding %object-set-qdata-full () nil (object gobject) (id quark) - (data unsigned-long) + (data pointer-data) (destroy-marshal callback)) -(define-callback user-data-destroy-callback nil ((id unsigned-int)) +(define-callback user-data-destroy-callback nil ((id pointer-data)) (destroy-user-data id)) -(defun (setf user-data) (data object key) +(defmethod (setf user-data) (data (object gobject) key) (%object-set-qdata-full object (quark-intern key) (register-user-data data) user-data-destroy-callback) data) -(defbinding %object-get-qdata () unsigned-long +(defbinding %object-get-qdata () pointer-data (object gobject) (id quark)) -(defun user-data (object key) +(defmethod user-data ((object gobject) key) (find-user-data (%object-get-qdata object (quark-intern key)))) -(defun user-data-p (object key) +(defmethod user-data-p ((object gobject) key) (user-data-exists-p (%object-get-qdata object (quark-intern key)))) -(defbinding %object-steal-qdata () unsigned-long +(defbinding %object-steal-qdata () pointer-data (object gobject) (id quark)) -(defun unset-user-data (object key) +(defmethod unset-user-data ((object gobject) key) (destroy-user-data (%object-steal-qdata object (quark-intern key))))