Add wxVector<>::const_reverse_iterator.
Provide this type too for compatibility with std::vector<>. Closes #15192. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -590,6 +590,7 @@ All: | |||||||
| - Add wx[F]File{Input,Output}Stream::GetFile() (troelsk). | - Add wx[F]File{Input,Output}Stream::GetFile() (troelsk). | ||||||
| - Add wxSocketBase::GetSocket() (Laurent Poujoulat). | - Add wxSocketBase::GetSocket() (Laurent Poujoulat). | ||||||
| - Add IEEE 754 single/double precision support to wxDataStream classes (net147). | - Add IEEE 754 single/double precision support to wxDataStream classes (net147). | ||||||
|  | - Add wxVector<>::const_reverse_iterator (troelsk). | ||||||
| - Add Nepali translation (Him Prasad Gautam). | - Add Nepali translation (Him Prasad Gautam). | ||||||
|  |  | ||||||
| All (GUI): | All (GUI): | ||||||
|   | |||||||
| @@ -139,9 +139,11 @@ public: | |||||||
|     typedef size_t difference_type; |     typedef size_t difference_type; | ||||||
|     typedef T value_type; |     typedef T value_type; | ||||||
|     typedef value_type* pointer; |     typedef value_type* pointer; | ||||||
|  |     typedef const value_type* const_pointer; | ||||||
|     typedef value_type* iterator; |     typedef value_type* iterator; | ||||||
|     typedef const value_type* const_iterator; |     typedef const value_type* const_iterator; | ||||||
|     typedef value_type& reference; |     typedef value_type& reference; | ||||||
|  |     typedef const value_type& const_reference; | ||||||
|  |  | ||||||
|     class reverse_iterator |     class reverse_iterator | ||||||
|     { |     { | ||||||
| @@ -183,6 +185,51 @@ public: | |||||||
|  |  | ||||||
|     private: |     private: | ||||||
|         value_type *m_ptr; |         value_type *m_ptr; | ||||||
|  |  | ||||||
|  |         friend class const_reverse_iterator; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     class const_reverse_iterator | ||||||
|  |     { | ||||||
|  |     public: | ||||||
|  |         const_reverse_iterator() : m_ptr(NULL) { } | ||||||
|  |         wxEXPLICIT const_reverse_iterator(const_iterator it) : m_ptr(it) { } | ||||||
|  |         const_reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { } | ||||||
|  |         const_reverse_iterator(const const_reverse_iterator& it) : m_ptr(it.m_ptr) { } | ||||||
|  |  | ||||||
|  |         const_reference operator*() const { return *m_ptr; } | ||||||
|  |         const_pointer operator->() const { return m_ptr; } | ||||||
|  |  | ||||||
|  |         const_iterator base() const { return m_ptr; } | ||||||
|  |  | ||||||
|  |         const_reverse_iterator& operator++() | ||||||
|  |             { --m_ptr; return *this; } | ||||||
|  |         const_reverse_iterator operator++(int) | ||||||
|  |             { const_reverse_iterator tmp = *this; --m_ptr; return tmp; } | ||||||
|  |         const_reverse_iterator& operator--() | ||||||
|  |             { ++m_ptr; return *this; } | ||||||
|  |         const_reverse_iterator operator--(int) | ||||||
|  |             { const_reverse_iterator tmp = *this; ++m_ptr; return tmp; } | ||||||
|  |  | ||||||
|  |         const_reverse_iterator operator+(difference_type n) const | ||||||
|  |             { return const_reverse_iterator(m_ptr - n); } | ||||||
|  |         const_reverse_iterator& operator+=(difference_type n) | ||||||
|  |             { m_ptr -= n; return *this; } | ||||||
|  |         const_reverse_iterator operator-(difference_type n) const | ||||||
|  |             { return const_reverse_iterator(m_ptr + n); } | ||||||
|  |         const_reverse_iterator& operator-=(difference_type n) | ||||||
|  |             { m_ptr += n; return *this; } | ||||||
|  |  | ||||||
|  |         const_reference operator[](difference_type n) const | ||||||
|  |             { return *(*this + n); } | ||||||
|  |  | ||||||
|  |         bool operator ==(const const_reverse_iterator& it) const | ||||||
|  |             { return m_ptr == it.m_ptr; } | ||||||
|  |         bool operator !=(const const_reverse_iterator& it) const | ||||||
|  |             { return m_ptr != it.m_ptr; } | ||||||
|  |  | ||||||
|  |     protected: | ||||||
|  |         const value_type *m_ptr; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     wxVector() : m_size(0), m_capacity(0), m_values(NULL) {} |     wxVector() : m_size(0), m_capacity(0), m_values(NULL) {} | ||||||
| @@ -353,6 +400,9 @@ public: | |||||||
|     reverse_iterator rbegin() { return reverse_iterator(end() - 1); } |     reverse_iterator rbegin() { return reverse_iterator(end() - 1); } | ||||||
|     reverse_iterator rend() { return reverse_iterator(begin() - 1); } |     reverse_iterator rend() { return reverse_iterator(begin() - 1); } | ||||||
|  |  | ||||||
|  |     const_reverse_iterator rbegin() const { return const_reverse_iterator(end() - 1); } | ||||||
|  |     const_reverse_iterator rend() const { return const_reverse_iterator(begin() - 1); } | ||||||
|  |  | ||||||
|     iterator insert(iterator it, const value_type& v = value_type()) |     iterator insert(iterator it, const value_type& v = value_type()) | ||||||
|     { |     { | ||||||
|         // NB: this must be done before reserve(), because reserve() |         // NB: this must be done before reserve(), because reserve() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user