-(progn
- #+cmu(declaim (optimize (inhibit-warnings 3)))
- #+sbcl(declaim (muffle-conditions compiler-note))
- (defun %container-child-get-property (parent child pname gvalue))
- (defun %container-child-set-property (parent child pname gvalue)))
-
-
-(defmethod initialize-internal-slot-functions ((slotd effective-child-slot-definition))
- (let ((type (slot-definition-type slotd))
- (pname (slot-definition-pname slotd)))
- (setf
- (slot-value slotd 'getter)
- #'(lambda (object)
- (with-slots (parent child) object
- (let ((gvalue (gvalue-new type)))
- (%container-child-get-property parent child pname gvalue)
- (unwind-protect
- (funcall (reader-function type) gvalue +gvalue-value-offset+)
- (gvalue-free gvalue t))))))
-
- (setf
- (slot-value slotd 'setter)
- #'(lambda (value object)
- (with-slots (parent child) object
- (let ((gvalue (gvalue-new type)))
- (funcall (writer-function type) value gvalue +gvalue-value-offset+)
- (%container-child-set-property parent child pname gvalue)
- (gvalue-free gvalue t)
- value)))))
-
- (call-next-method)))