git.fiddlerwoaroof.com
Raw Blame History
(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))