menu: add value iterator
This commit is contained in:
28
src/menu.h
28
src/menu.h
@@ -215,16 +215,25 @@ template <typename T> struct Menu : public Window, public List
|
||||
};
|
||||
|
||||
typedef ItemIterator<
|
||||
T, typename std::vector<Item *>::iterator
|
||||
Item, typename std::vector<Item *>::iterator
|
||||
> Iterator;
|
||||
|
||||
typedef ItemIterator<
|
||||
typename std::add_const<T>::type, typename std::vector<Item *>::const_iterator
|
||||
const Item, typename std::vector<Item *>::const_iterator
|
||||
> ConstIterator;
|
||||
|
||||
typedef std::reverse_iterator<Iterator> ReverseIterator;
|
||||
typedef std::reverse_iterator<ConstIterator> ConstReverseIterator;
|
||||
|
||||
typedef ItemIterator<
|
||||
T, typename std::vector<Item *>::iterator
|
||||
> ValueIterator;
|
||||
typedef ItemIterator<
|
||||
typename std::add_const<T>::type, typename std::vector<Item *>::const_iterator
|
||||
> ConstValueIterator;
|
||||
|
||||
typedef std::reverse_iterator<ValueIterator> ReverseValueIterator;
|
||||
typedef std::reverse_iterator<ConstValueIterator> ConstReverseValueIterator;
|
||||
|
||||
/// Constructs an empty menu with given parameters
|
||||
/// @param startx X position of left upper corner of constructed menu
|
||||
/// @param starty Y position of left upper corner of constructed menu
|
||||
@@ -522,15 +531,23 @@ template <typename T> struct Menu : public Window, public List
|
||||
|
||||
Iterator Begin() { return Iterator(m_options_ptr->begin()); }
|
||||
ConstIterator Begin() const { return ConstIterator(m_options_ptr->begin()); }
|
||||
|
||||
Iterator End() { return Iterator(m_options_ptr->end()); }
|
||||
ConstIterator End() const { return ConstIterator(m_options_ptr->end()); }
|
||||
|
||||
ReverseIterator Rbegin() { return ReverseIterator(End()); }
|
||||
ConstReverseIterator Rbegin() const { return ConstReverseIterator(End()); }
|
||||
|
||||
ReverseIterator Rend() { return ReverseIterator(Begin()); }
|
||||
ConstReverseIterator Rend() const { return ConstReverseIterator(Begin()); }
|
||||
|
||||
ValueIterator BeginV() { return ValueIterator(m_options_ptr->begin()); }
|
||||
ConstValueIterator BeginV() const { return ConstValueIterator(m_options_ptr->begin()); }
|
||||
ValueIterator EndV() { return ValueIterator(m_options_ptr->end()); }
|
||||
ConstValueIterator EndV() const { return ConstValueIterator(m_options_ptr->end()); }
|
||||
|
||||
ReverseValueIterator RbeginV() { return ReverseValueIterator(End()); }
|
||||
ConstReverseIterator RbeginV() const { return ConstReverseValueIterator(End()); }
|
||||
ReverseValueIterator RendV() { return ReverseValueIterator(Begin()); }
|
||||
ConstReverseValueIterator RendV() const { return ConstReverseValueIterator(Begin()); }
|
||||
|
||||
private:
|
||||
/// Clears filter, filtered data etc.
|
||||
@@ -1063,4 +1080,3 @@ template <typename T> typename Menu<T>::Item &Menu<T>::operator[](size_t pos)
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user