git.fiddlerwoaroof.com
Raw Blame History
(in-package :collection-class)

(defclass collection-iterator (for:iterator)
  ())

(defmethod initialize-instance :after ((iterator collection-iterator) &key object)
  (setf (for:object iterator)
        (items object)))

(defmethod for:has-more ((iterator collection-iterator))
  (not (null (for:object iterator))))

(defmethod for:next ((iterator collection-iterator))
  (let ((collection-items (for:object iterator)))
    (prog1 (car collection-items)
      (setf (for:object iterator)
            (cdr collection-items)))))

(defmethod for:make-iterator ((collection collection) &key)
  (make-instance 'collection-iterator :object collection))