From: Dmitry Kalyanov Date: Sun, 12 Jul 2009 11:26:05 +0000 (+0400) Subject: Moved parse-gvalue-for-type and set-gvalue-for-type methods for GObject and GBoxed X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=3533251ba1a858fc02e2b1bef4ad99c01f4a75bd;p=cl-gtk2.git Moved parse-gvalue-for-type and set-gvalue-for-type methods for GObject and GBoxed --- diff --git a/glib/gobject.foreign-gboxed.lisp b/glib/gobject.foreign-gboxed.lisp index 75f216b..5cfa77d 100644 --- a/glib/gobject.foreign-gboxed.lisp +++ b/glib/gobject.foreign-gboxed.lisp @@ -486,4 +486,15 @@ If it is a function designator then it specifies a function that accepts the new (unless (null-pointer-p (g-value-get-boxed gvalue)) (cond ((subtypep boxed-type 'g-boxed-ref) (convert-g-boxed-ref-from-pointer (g-value-get-boxed gvalue) boxed-type (make-instance 'g-boxed-ref-type :class-name boxed-type :owner :foreign))) - (t (parse-g-boxed (g-value-get-boxed gvalue) boxed-type)))))) \ No newline at end of file + (t (parse-g-boxed (g-value-get-boxed gvalue) boxed-type)))))) + +(defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-boxed+))) + (if (= (g-type-numeric (gvalue-type gvalue-ptr)) type-numeric) + (convert-from-foreign (g-value-get-boxed gvalue-ptr) '(glib:gstrv :free-from-foreign nil)) + (parse-gvalue-boxed gvalue-ptr))) + +(defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-boxed+)) value) + (if (= (g-type-numeric (gvalue-type gvalue-ptr)) type-numeric) + (g-value-set-boxed gvalue-ptr (convert-to-foreign value '(glib:gstrv :free-from-foreign nil))) + (set-gvalue-boxed gvalue-ptr value))) + diff --git a/glib/gobject.foreign-gobject.lisp b/glib/gobject.foreign-gobject.lisp index 50ba2ff..6b56e89 100644 --- a/glib/gobject.foreign-gobject.lisp +++ b/glib/gobject.foreign-gobject.lisp @@ -312,4 +312,17 @@ (unwind-protect (g-object-set-property (ensure-object-pointer object) property-name value) - (g-value-unset value)))) \ No newline at end of file + (g-value-unset value)))) + +(defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-object+))) + (parse-gvalue-object gvalue-ptr)) + +(defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-interface+))) + (parse-gvalue-object gvalue-ptr)) + +(defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-object+)) value) + (set-gvalue-object gvalue-ptr value)) + +(defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-interface+)) value) + (set-gvalue-object gvalue-ptr value)) + diff --git a/glib/gobject.gvalue.lisp b/glib/gobject.gvalue.lisp index 69f4a4b..b9009af 100644 --- a/glib/gobject.gvalue.lisp +++ b/glib/gobject.gvalue.lisp @@ -59,20 +59,9 @@ (defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-pointer+))) (g-value-get-pointer gvalue-ptr)) -(defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-boxed+))) - (if (= (g-type-numeric (gvalue-type gvalue-ptr)) type-numeric) - (convert-from-foreign (g-value-get-boxed gvalue-ptr) '(glib:gstrv :free-from-foreign nil)) - (parse-gvalue-boxed gvalue-ptr))) - (defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-param+))) (parse-g-param-spec (g-value-get-param gvalue-ptr))) -(defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-object+))) - (parse-gvalue-object gvalue-ptr)) - -(defmethod parse-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-interface+))) - (parse-gvalue-object gvalue-ptr)) - (defgeneric set-gvalue-for-type (gvalue-ptr type-numeric value)) (defmethod set-gvalue-for-type (gvalue-ptr type-numeric value) @@ -117,20 +106,9 @@ (defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-pointer+)) value) (g-value-set-pointer gvalue-ptr value)) -(defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-boxed+)) value) - (if (= (g-type-numeric (gvalue-type gvalue-ptr)) type-numeric) - (g-value-set-boxed gvalue-ptr (convert-to-foreign value '(glib:gstrv :free-from-foreign nil))) - (set-gvalue-boxed gvalue-ptr value))) - (defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-param+)) value) (error "Setting of GParam is not implemented")) -(defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-object+)) value) - (set-gvalue-object gvalue-ptr value)) - -(defmethod set-gvalue-for-type (gvalue-ptr (type-numeric (eql +g-type-interface+)) value) - (set-gvalue-object gvalue-ptr value)) - ;;Enums (defvar *registered-enum-types* (make-hash-table :test 'equal))