| 5474 | class const_reverse_iterator; |
| 5475 | |
| 5476 | class iterator |
| 5477 | { |
| 5478 | friend class const_iterator; |
| 5479 | friend class VmaList<T, AllocatorT>; |
| 5480 | public: |
| 5481 | iterator() : m_pList(VMA_NULL), m_pItem(VMA_NULL) {} |
| 5482 | explicit iterator(const reverse_iterator& src) : m_pList(src.m_pList), m_pItem(src.m_pItem) {} |
| 5483 | |
| 5484 | T& operator*() const { VMA_HEAVY_ASSERT(m_pItem != VMA_NULL); return m_pItem->Value; } |
| 5485 | T* operator->() const { VMA_HEAVY_ASSERT(m_pItem != VMA_NULL); return &m_pItem->Value; } |
| 5486 | |
| 5487 | bool operator==(const iterator& rhs) const { VMA_HEAVY_ASSERT(m_pList == rhs.m_pList); return m_pItem == rhs.m_pItem; } |
| 5488 | bool operator!=(const iterator& rhs) const { VMA_HEAVY_ASSERT(m_pList == rhs.m_pList); return m_pItem != rhs.m_pItem; } |
| 5489 | |
| 5490 | const iterator operator++(int) { iterator result = *this; ++*this; return result; } |
| 5491 | const iterator operator--(int) { iterator result = *this; --*this; return result; } |
| 5492 | |
| 5493 | iterator& operator++() { VMA_HEAVY_ASSERT(m_pItem != VMA_NULL); m_pItem = m_pItem->pNext; return *this; } |
| 5494 | iterator& operator--(); |
| 5495 | |
| 5496 | private: |
| 5497 | VmaRawList<T>* m_pList; |
| 5498 | VmaListItem<T>* m_pItem; |
| 5499 | |
| 5500 | iterator(VmaRawList<T>* pList, VmaListItem<T>* pItem) : m_pList(pList), m_pItem(pItem) {} |
| 5501 | }; |
| 5502 | class reverse_iterator |
| 5503 | { |
| 5504 | friend class const_reverse_iterator; |