;; Common Lisp bindings for GTK+ v2.0
-;; Copyright (C) 2000 Espen S. Johnsen <espejohn@online.no>
+;; Copyright (C) 2000 Espen S. Johnsen <esj@stud.cs.uit.no>
;;
;; This library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public
;; 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
(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))