| ;;; 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 | |