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!=