- (slot-value slotd 'writer-function)
- (if (slot-writable-p slotd)
- (let ();; (writer (writer-function (type-from-number type-number)))
-;; (destroy (destroy-function (type-from-number type-number))))
- #'(lambda (value object)
- (let ((gvalue (gvalue-new type-number)))
- (funcall #|writer|# (writer-function (type-from-number type-number)) value gvalue +gvalue-value-offset+)
- (%object-set-property object pname gvalue)
-; (funcall #|destroy|#(destroy-function (type-from-number type-number)) gvalue +gvalue-value-offset+)
- (gvalue-free gvalue t)
- value)))
- #'(lambda (value object)
- (error "Slot is not writable: ~A" (slot-definition-name slotd))))))
-
- (unless (slot-boundp slotd 'boundp-function)
- (setf
- (slot-value slotd 'boundp-function)
- #'(lambda (object)
- (declare (ignore object))
- t))))
+ (slot-value slotd 'setter)
+ (let ((writer nil))
+ #'(lambda (value object)
+ (unless writer
+ (setq writer (writer-function (type-from-number type-number))))
+ (let ((gvalue (gvalue-new type-number)))
+ (funcall writer value gvalue +gvalue-value-offset+)
+ (%object-set-property object pname gvalue)
+ (gvalue-free gvalue t)
+ value))))))
+