X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/fb754a8b75c03825b473e5f8cae357da13a5e88d..f942a38c44595195e54d7cf53abdbefb5bb8e423:/glib/gtype.lisp diff --git a/glib/gtype.lisp b/glib/gtype.lisp index 192e121..ae55992 100644 --- a/glib/gtype.lisp +++ b/glib/gtype.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,7 +15,7 @@ ;; 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: gtype.lisp,v 1.3 2000-08-23 14:27:41 espen Exp $ +;; $Id: gtype.lisp,v 1.7 2001-01-28 14:11:20 espen Exp $ (in-package "GLIB") @@ -38,8 +38,8 @@ (define-foreign type-instance-size (type) int ((find-type-number type) type-number)) -(define-foreign type-create-instance (type) pointer - ((find-type-number type) type-number)) +; (define-foreign type-create-instance (type) pointer +; ((find-type-number type) type-number)) (define-foreign type-free-instance () nil (instance pointer)) @@ -171,10 +171,10 @@ object)) ((or (functionp writer) (symbolp writer)) (funcall writer value object) - object) + value) (t (funcall (fdefinition writer) value object) - object)))) + value)))) (defmethod validate-superclass @@ -234,7 +234,11 @@ (deftype-method translate-type-spec alien-instance (type-spec) (declare (ignore type-spec)) - 'system-area-pointer) + (translate-type-spec 'pointer)) + +(deftype-method size-of alien-instance (type-spec) + (declare (ignore type-spec)) + (size-of 'pointer)) @@ -360,7 +364,7 @@ (alien::make-heap-alien-info :type (alien::parse-alien-type `(function - void ,alien-type system-area-pointer)) + void system-area-pointer ,alien-type)) :sap-form (system:foreign-symbol-address writer)))) (to-alien (get-to-alien-function type)) (cleanup (get-cleanup-function type))) @@ -546,8 +550,8 @@ (:reference `(ensure-alien-instance ',type-spec - `(,(alien-copier type-spec) - location ,(alien-class-size (find-class type-spec))))))))) + (,(alien-copier type-spec) + location ,(alien-class-size (find-class type-spec))))))))) (deftype-method cleanup-alien alien-structure (type-spec sap &optional copied) (when copied @@ -578,7 +582,7 @@ ;;;; Superclass wrapping types in the glib type system (eval-when (:compile-toplevel :load-toplevel :execute) - (defclass gtype (alien-object) + (defclass ginstance (alien-object) () (:metaclass alien-class) (:size 4 #|(size-of 'pointer)|#))) @@ -589,7 +593,7 @@ (sap-ref-unsigned class 0))) -(deftype-method translate-from-alien gtype (type-spec location &optional alloc) +(deftype-method translate-from-alien ginstance (type-spec location &optional alloc) (declare (ignore type-spec alloc)) `(let ((location ,location)) (unless (null-pointer-p location) @@ -599,13 +603,13 @@ -;;;; Metaclass for subclasses of gtype-class +;;;; Metaclass for subclasses of ginstance-class (eval-when (:compile-toplevel :load-toplevel :execute) - (defclass gtype-class (alien-class))) + (defclass ginstance-class (alien-class))) -(defmethod shared-initialize ((class gtype-class) names +(defmethod shared-initialize ((class ginstance-class) names &rest initargs &key name) (declare (ignore initargs names)) (call-next-method) @@ -615,12 +619,12 @@ (defmethod validate-superclass - ((class gtype-class) (super pcl::standard-class)) - (subtypep (class-name super) 'gtype)) + ((class ginstance-class) (super pcl::standard-class)) + (subtypep (class-name super) 'ginstance)) -(defmethod allocate-alien-storage ((class gtype-class)) - (type-create-instance (find-type-number class))) +; (defmethod allocate-alien-storage ((class ginstance-class)) +; (type-create-instance (find-type-number class))) ;;;; Initializing type numbers