Source of LinkedIterator.cpp


  1: //  Created by Frank M. Carrano and Tim Henry.
  2: //  Copyright (c) 2013 __Pearson Education__. All rights reserved.

  4: /** Listing C6-2.
  5:  @file LinkedIterator.cpp */

  7: #include "LinkedIterator.h"

  9: template <class ItemType>
 10: LinkedIterator<ItemType>::
 11: LinkedIterator(const LinkedList<ItemType>* someList,
 12:                Node<ItemType>* nodePtr):
 13:                containerPtr(someList), currentItemPtr(nodePtr)
 14: {
 15: }  // end constructor

 17: template <class ItemType>
 18: const ItemType LinkedIterator<ItemType>::operator*()
 19: {
 20:    return currentItemPtr->getItem();
 21: }  // end operator*

 23: template <class ItemType>
 24: LinkedIterator<ItemType> LinkedIterator<ItemType>::operator++()
 25: {
 26:    currentItemPtr = currentItemPtr->getNext();
 27:    return *this;
 28: }  // end prefix operator++

 30: template <class ItemType>
 31: bool LinkedIterator<ItemType>::operator==(const
 32:                                           LinkedIterator<ItemType>& rightHandSide) const
 33: {
 34:    return ((containerPtr == rightHandSide.containerPtr) &&
 35:            (currentItemPtr == rightHandSide.currentItemPtr));
 36: }  // end operator==

 38: template <class ItemType>
 39: bool LinkedIterator<ItemType>::operator!=(const
 40:                                           LinkedIterator<ItemType>& rightHandSide) const
 41: {
 42:    return ((containerPtr != rightHandSide.containerPtr) ||
 43:            (currentItemPtr != rightHandSide.currentItemPtr));
 44: }  // end operator!=