File size: 796 Bytes
43203b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

;;; vertex-iterator

(u:defclass* vertex-iterator (containers::forward-iterator)
  ())


(defmethod initialize-instance :after ((object vertex-iterator) &key)
  (reset object))


(defmethod reset ((iterator vertex-iterator))
  (let ((vertex (containers::initial-container iterator)))
    (setf (slot-value iterator 'containers::iterating-container) 
          (make-iterator (edges vertex)
                         :transform (lambda (e) (other-vertex e vertex)))))
  iterator)


(defmethod containers::base-class-for-iteratee ((container basic-vertex))
  'vertex-iterator)


(defmethod containers::base-class-for-iteratee ((container basic-vertex))
  (containers::base-class-for-iteratee (vertex-edges container)))

(u:add-parameter->dynamic-class :iterator :children nil )

(collect-elements