(defmethod (setf foreign-struct-slot-value) (value ptr (slot aggregate-struct-slot)) "Set the value of an aggregate SLOT to VALUE in PTR." (let* ((type (slot-type slot)) (output-ptr (inc-pointer ptr (slot-offset slot))) (elt-size (foreign-type-size type))) (loop for i below (slot-count slot) for v in value do (setf (mem-ref output-ptr type (* i elt-size)) (translate-to-foreign v type)))))