rebuilding repo
[cl-graph.git] / dev / graph-iterators.lisp
1
2 ;;; ---------------------------------------------------------------------------
3 ;;; vertex-iterator
4 ;;; ---------------------------------------------------------------------------
5
6 (u:defclass* vertex-iterator (containers::forward-iterator)
7   ())
8
9 ;;; ---------------------------------------------------------------------------
10
11 (defmethod initialize-instance :after ((object vertex-iterator) &key)
12   (reset object))
13
14 ;;; ---------------------------------------------------------------------------
15
16 (defmethod reset ((iterator vertex-iterator))
17   (let ((vertex (containers::initial-container iterator)))
18     (setf (slot-value iterator 'containers::iterating-container) 
19           (make-iterator (edges vertex)
20                          :transform (lambda (e) (other-vertex e vertex)))))
21   iterator)
22
23 ;;; ---------------------------------------------------------------------------
24
25 (defmethod containers::base-class-for-iteratee ((container basic-vertex))
26   'vertex-iterator)
27
28 ;;; ---------------------------------------------------------------------------
29
30 (defmethod containers::base-class-for-iteratee ((container basic-vertex))
31   (containers::base-class-for-iteratee (vertex-edges container)))
32
33 (u:add-parameter->dynamic-class :iterator :children nil )
34
35 (collect-elements