X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/c630da1bd52d451992a9b135a4099fd09520cab4..4d83a8a641bfaeb0d858fbf37524f3d3b9b81a6e:/glib/gparam.lisp diff --git a/glib/gparam.lisp b/glib/gparam.lisp index eb34c13..c589a18 100644 --- a/glib/gparam.lisp +++ b/glib/gparam.lisp @@ -15,22 +15,29 @@ ;; 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: gparam.lisp,v 1.4 2001-10-21 21:55:41 espen Exp $ +;; $Id: gparam.lisp,v 1.7 2004-10-27 14:59:00 espen Exp $ (in-package "GLIB") (deftype gvalue () 'pointer) -(defconstant +gvalue-size+ (+ (size-of 'type-number) (* 4 (size-of 'double-float)))) +(eval-when (:compile-toplevel :load-toplevel :execute) + (defbinding (size-of-gvalue "size_of_gvalue") () unsigned-int)) + +(defconstant +gvalue-size+ (+ (size-of 'type-number) (* 2 (size-of 'double-float)))) +(defconstant +gvalue-size+ #.(size-of-gvalue)) + (defconstant +gvalue-value-offset+ (size-of 'type-number)) (defbinding (gvalue-init "g_value_init") () nil + (value gvalue) (type type-number)) -(defun gvalue-new (type) +(defun gvalue-new (type &optional (value nil value-p)) (let ((gvalue (allocate-memory +gvalue-size+))) - (setf (system:sap-ref-32 gvalue 0) type) -; (gvalue-init (type-number-of type)) + (gvalue-init gvalue (find-type-number type)) + (when value-p + (gvalue-set gvalue value)) gvalue)) (defun gvalue-free (gvalue free-content) @@ -56,6 +63,11 @@ value) +(deftype-method unreference-alien gvalue (type-spec location) + `(gvalue-free ,location nil)) + + + (deftype param-flag-type () '(flags (:readable 1) @@ -65,7 +77,8 @@ (:lax-validation 16) (:private 32))) -(eval-when (:compile-toplevel :load-toplevel :execute) +;(eval-when (:compile-toplevel :load-toplevel :execute) +;; TODO: rename to param-spec (defclass param (ginstance) ((name :allocation :alien @@ -85,17 +98,17 @@ :type type-number) (nickname :allocation :virtual - :getter "g_param_get_nick" + :getter "g_param_spec_get_nick" :reader param-nickname :type string) (documentation :allocation :virtual - :getter "g_param_get_blurb" + :getter "g_param_spec_get_blurb" :reader param-documentation :type string)) (:metaclass ginstance-class) (:ref "g_param_spec_ref") - (:unref "g_param_spec_unref"))) + (:unref "g_param_spec_unref"));) (defclass param-char (param) @@ -296,13 +309,10 @@ :type unsigned-int)) (:metaclass ginstance-class)) -(defclass param-closure (param) - () - (:metaclass ginstance-class)) +;; (defclass param-closure (param) +;; () +;; (:metaclass ginstance-class)) (defclass param-object (param) () (:metaclass ginstance-class)) - - -