X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=glib%2Fgobject.gobject-query.lisp;h=2937f58f27a3dfb58ded66e818ad095ad9081ba5;hb=e9622209ae8a02f82c2813ea7d358d711e1ba2d0;hp=c96d83f96498a54d6c32324399784dc558184ae4;hpb=0d03b82a77743d2ea5ef69bea08735fa12857d92;p=cl-gtk2.git diff --git a/glib/gobject.gobject-query.lisp b/glib/gobject.gobject-query.lisp index c96d83f..2937f58 100644 --- a/glib/gobject.gobject-query.lisp +++ b/glib/gobject.gobject-query.lisp @@ -9,6 +9,20 @@ constructor-only owner-type) +(defun parse-g-param-spec (param) + (let ((flags (foreign-slot-value param 'g-param-spec 'flags))) + (make-g-class-property-definition + :name (foreign-slot-value param 'g-param-spec + 'name) + :type (foreign-slot-value param 'g-param-spec + 'value-type) + :readable (not (null (member :readable flags))) + :writable (not (null (member :writable flags))) + :constructor (not (null (member :construct flags))) + :constructor-only (not (null (member :construct-only flags))) + :owner-type (foreign-slot-value param 'g-param-spec + 'owner-type)))) + (defun class-properties (g-type) (setf g-type (ensure-g-type g-type)) (let ((g-class (g-type-class-ref g-type))) @@ -19,18 +33,7 @@ (loop for i from 0 below (mem-ref n-properties :uint) for param = (mem-aref params :pointer i) - for flags = (foreign-slot-value param 'g-param-spec 'flags) - collect (make-g-class-property-definition - :name (foreign-slot-value param 'g-param-spec - 'name) - :type (foreign-slot-value param 'g-param-spec - 'value-type) - :readable (not (null (member :readable flags))) - :writable (not (null (member :writable flags))) - :constructor (not (null (member :construct flags))) - :constructor-only (not (null (member :construct-only flags))) - :owner-type (foreign-slot-value param 'g-param-spec - 'owner-type))) + collect (parse-g-param-spec param)) (g-free params)))) (g-type-class-unref g-class))))