X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/560af5c515eb5b6206040a9334de4254d2650147..522b39c1739c8c64df26ced0087cbe8de52db0cc:/glib/gobject.lisp?ds=inline diff --git a/glib/gobject.lisp b/glib/gobject.lisp index 015f29b..ee61f96 100644 --- a/glib/gobject.lisp +++ b/glib/gobject.lisp @@ -1,5 +1,5 @@ ;; Common Lisp bindings for GTK+ v2.0 -;; Copyright (C) 2000 Espen S. Johnsen +;; Copyright (C) 2000 Espen S. Johnsen ;; ;; This library is free software; you can redistribute it and/or ;; modify it under the terms of the GNU Lesser General Public @@ -15,21 +15,21 @@ ;; 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: gobject.lisp,v 1.1 2000-08-14 16:44:30 espen Exp $ +;; $Id: gobject.lisp,v 1.3 2000-11-09 20:29:19 espen Exp $ (in-package "GLIB") (eval-when (:compile-toplevel :load-toplevel :execute) - (defclass gobject (gtype) + (defclass gobject (ginstance) () - (:metaclass gtype-class) + (:metaclass ginstance-class) (:alien-name "GObject")) - (defclass gobject-class (gtype-class))) + (defclass gobject-class (ginstance-class))) -;;;; Methods for gobject +;;;; Reference counting for gobject ;; Specializing reference-instance and unreference-instance on gobject ;; is not really necessary but done for efficiency @@ -56,21 +56,47 @@ (define-foreign %object-unref () nil (object (or gobject pointer))) -;; Parameter stuff not yet implemented +;;;; Parameter stuff + +(define-foreign %object-set-param () nil + (object gobject) + (name string) + (value gvalue)) + +(define-foreign %object-get-param () nil + (object gobject) + (name string) + (value gvalue :out)) + +(define-foreign object-queue-param-changed () nil + (object gobject) + (name string)) + + + + +(define-foreign %object-set-qdata-full () nil + (object gobject) + (id quark) + (data unsigned-long) + (destroy-marshal pointer)) + +(defun (setf object-data) (data object key &key (test #'eq)) + (%object-set-qdata-full + object (quark-from-object key :test test) + (register-user-data data) *destroy-notify*) + data) + +(define-foreign %object-get-qdata () unsigned-long + (object gobject) + (id quark)) + +(defun object-data (object key &key (test #'eq)) + (find-user-data + (%object-get-qdata object (quark-from-object key :test test)))) -; (define-foreign object-set-param () nil -; (object gobject) -; (name string) -; (value gvalue)) -; (define-foreign object-get-param () nil -; (object gobject) -; (name string) -; (value gvalue :out)) -; (define-foreign object-queue-param-changed () nil -; (object gobject) -; (name string))