Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @brief Entity that holds a pointer to a link node and can be used in iteration structures.
- */
- struct LinkIterator {
- LinkIterator(LinkNode* a_link) : m_link(a_link) {}
- LinkNode* m_link; /*LinkNode we're pointing at*/
- LinkIterator& operator--() { /*PREFIX: Move to previous link node value*/
- m_link = m_link->prev;
- return *this;
- }
- LinkIterator operator--(int) { /*POSTFIX: Move to the previous link node value after leaving the expression*/
- LinkNode result(*this);
- --(*this);
- return result;
- }
- LinkIterator& operator++() { /*PREFIX: Move to next link node value*/
- m_link = m_link->m_next;
- return *this;
- }
- LinkIterator operator++(int) { /*POSTFIX: Move to the next link node value after leaving the expression*/
- LinkNode result(*this);
- ++(*this);
- return result;
- }
- ///Check if the link node is the sentinel node by checking if its pointing to nullptr
- bool operator==(LinkIterator a_iter) {
- return (m_link == a_iter.GetLink());
- }
- bool operator!=(LinkIterator a_iter) {
- return (m_link != a_iter.GetLink());
- }
- LinkNode* GetLink() { return m_link; }
- void EraseNode() {
- delete m_link;
- m_link = nullptr;
- }
- T& operator*() { /*De-reference and return aliased value in LinkNode*/
- return m_link->GetValue();
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement