X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=glib%2Fgobject.gvalue.lisp;h=8e9fd0512ec08ec4a70c08cbfdc4f81eb367aa54;hb=26eb2a10747e18be835de21a06ea57fe57f03d3a;hp=efd3ebe5f3af9bba37ba9e1a13aed9a1a0b6568b;hpb=8f0e8ac54c6c9e6e0febeae3d0dab204402e6026;p=cl-gtk2.git diff --git a/glib/gobject.gvalue.lisp b/glib/gobject.gvalue.lisp index efd3ebe..8e9fd05 100644 --- a/glib/gobject.gvalue.lisp +++ b/glib/gobject.gvalue.lisp @@ -23,14 +23,14 @@ `(t ,@forms) `((equalp ,key ,value) ,@forms))))))) -(defgeneric parse-g-value-for-type (gvalue-ptr type-numeric)) +(defgeneric parse-g-value-for-type (gvalue-ptr type-numeric parse-kind)) -(defmethod parse-g-value-for-type (gvalue-ptr type-numeric) +(defmethod parse-g-value-for-type (gvalue-ptr type-numeric parse-kind) (if (g-type= type-numeric (g-type-fundamental type-numeric)) (call-next-method) - (parse-g-value-for-type gvalue-ptr (g-type-numeric (g-type-fundamental type-numeric))))) + (parse-g-value-for-type gvalue-ptr (g-type-numeric (g-type-fundamental type-numeric)) parse-kind))) -(defun parse-g-value (gvalue) +(defun parse-g-value (gvalue &key (parse-kind :get-property)) "Parses the GValue structure and returns the corresponding Lisp object. @arg[value]{a C pointer to the GValue structure} @@ -54,12 +54,14 @@ (+g-type-float+ (g-value-get-float gvalue)) (+g-type-double+ (g-value-get-double gvalue)) (+g-type-string+ (g-value-get-string gvalue)) - (t (parse-g-value-for-type gvalue type))))) + (t (parse-g-value-for-type gvalue type parse-kind))))) -(defmethod parse-g-value-for-type (gvalue-ptr (type-numeric (eql +g-type-pointer+))) +(defmethod parse-g-value-for-type (gvalue-ptr (type-numeric (eql +g-type-pointer+)) parse-kind) + (declare (ignore parse-kind)) (g-value-get-pointer gvalue-ptr)) -(defmethod parse-g-value-for-type (gvalue-ptr (type-numeric (eql +g-type-param+))) +(defmethod parse-g-value-for-type (gvalue-ptr (type-numeric (eql +g-type-param+)) parse-kind) + (declare (ignore parse-kind)) (parse-g-param-spec (g-value-get-param gvalue-ptr))) (defgeneric set-gvalue-for-type (gvalue-ptr type-numeric value))