+(defun g-param-spec-property-type (param-spec property-name object-type assert-readable assert-writable)
+ (when (null-pointer-p param-spec)
+ (error "Property ~A on type ~A is not found"
+ property-name
+ (g-type-name object-type)))
+ (when (and assert-readable
+ (not (member :readable
+ (foreign-slot-value param-spec
+ 'g-param-spec
+ 'flags))))
+ (error "Property ~A on type ~A is not readable"
+ property-name
+ (g-type-name object-type)))
+ (when (and assert-writable
+ (not (member :writable
+ (foreign-slot-value param-spec
+ 'g-param-spec
+ 'flags))))
+ (error "Property ~A on type ~A is not writable"
+ property-name
+ (g-type-name object-type)))
+ (foreign-slot-value param-spec 'g-param-spec 'value-type))
+