ANY NONE
deferred class interface ITERATOR[E]
   --
   -- The iterator pattern at work: this abstract class defines a
   -- traversal interface for any kind of aggregates data structure.
   -- An iterator can be used when you need to do something on all 
   -- elements in the data structure, but there is no order concept.
   --
   -- To create a new iterator, use get_new_iterator in the 
   -- corresponding data structure.
   --
   -- See examples in directory SmartEiffel/tutorial/iterator.

feature(s) from ITERATOR
   start
      -- Positions the iterator to the first object in the
      -- aggregate to be traversed.

   is_off: BOOLEAN
      -- Returns true when there are no more objects in the
      -- sequence.

   item: E
      -- Returns the object at the current position in the
      -- sequence.
      require
         not is_off

   next
      -- Positions the iterator to the next object in the
      -- sequence.
      require
         not is_off



end of deferred ITERATOR[E]