Source of ListingC7-2.cpp


  1: //  Created by Frank M. Carrano and Timothy M. Henry.
  2: //  Copyright (c) 2017 Pearson Education, Hoboken, New Jersey.

  4: // Listing C7-2.

  6: #include "LinkedIterator.h"

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

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

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

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

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