- `(defun (setf ,accessor-name) (new-value object)
- (foreign-funcall ,writer g-object object ,type new-value :void))))
-
-(defun property->writer (property)
- (let ((name (nth 1 property))
- (prop-name (nth 2 property))
- (prop-type (nth 3 property)))
- `(defun (setf ,name) (new-value object)
- (g-object-call-set-property object ,prop-name new-value ,prop-type)
- new-value)))
+ (etypecase writer
+ (string `(defun (setf ,accessor-name) (new-value object)
+ (foreign-funcall ,writer g-object object ,type new-value :void)
+ new-value))
+ (symbol `(defun (setf ,accessor-name) (new-value object)
+ (funcall ',writer object new-value)
+ new-value)))))