(in-package :collection-class)
(defmethod sb-sequence:length ((sequence collection))
(length (items sequence)))
(defmethod sb-sequence:elt ((sequence collection) index)
(elt (items sequence) index))
(defmethod (setf sb-sequence:elt) (new-value (sequence collection) index)
(setf (elt (items sequence) index) new-value))
(defmethod sb-sequence:adjust-sequence ((sequence collection) length &key initial-element initial-contents)
(let ((result (duplicate-collection sequence)))
(when (or initial-element initial-contents)
(setf (items result)
(sb-sequence:adjust-sequence (items result) length
:initial-element initial-element
:initial-contents initial-contents)))
result))
(defmethod sb-sequence:make-sequence-like ((sequence collection) length &key initial-element initial-contents)
(let ((result (duplicate-collection sequence)))
(setf (items result)
(sb-sequence:make-sequence-like (items result) length
:initial-element initial-element
:initial-contents initial-contents))
result))
|