1  #ifndef ITEMITERATOR_H
  2  #define ITEMITERATOR_H
  3  
  4  #include <vector>
  5  #include "item.h"
  6  
  7  /**
  8     An iterator through a collection of items
  9  */
 10  class ItemIterator
 11  {
 12  public:
 13     /**
 14        Constructs the iterator from a vector.
 15        @param its a reference to a vector of Item pointers
 16     */
 17     ItemIterator(vector<Item*>& its);
 18     /**
 19        Gets the current item.
 20        @return the current item pointer
 21     */
 22     Item* get() const;
 23     /**
 24        Advances to the next item.
 25     */
 26     void next();
 27     /**
 28        Tests whether there are more items.
 29        @return true if no more items are available.
 30     */
 31     bool is_done() const;
 32  private:
 33     const vector<Item*>& items;
 34     int pos;
 35  };
 36  
 37  inline void ItemIterator::next()
 38  {
 39     pos++;
 40  }
 41  
 42  #endif