menu: add value iterator

This commit is contained in:
Andrzej Rybczak
2012-08-31 09:19:45 +02:00
parent 04bbdc53fc
commit e4f4cd68c0
4 changed files with 28 additions and 12 deletions

View File

@@ -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