menu: fix iterator's operator[] and definitions of reverse value interators

This commit is contained in:
Andrzej Rybczak
2012-09-01 00:20:44 +02:00
parent 4c944085d6
commit 7d47f16316

View File

@@ -137,7 +137,7 @@ template <typename T> struct Menu : public Window, public List
ItemIterator() { } ItemIterator() { }
ValueT &operator*() const { return getObject<ValueT, referenceValue>::apply(m_it); } ValueT &operator*() const { return getObject<ValueT, referenceValue>::apply(m_it); }
typename BaseIterator::value_type operator->() { return *m_it; } ValueT *operator->() const { return &getObject<ValueT, referenceValue>::apply(m_it); }
ItemIterator &operator++() { ++m_it; return *this; } ItemIterator &operator++() { ++m_it; return *this; }
ItemIterator operator++(int) { return ItemIterator(m_it++); } ItemIterator operator++(int) { return ItemIterator(m_it++); }
@@ -146,7 +146,7 @@ template <typename T> struct Menu : public Window, public List
ItemIterator operator--(int) { return ItemIterator(m_it--); } ItemIterator operator--(int) { return ItemIterator(m_it--); }
ValueT &operator[](ptrdiff_t n) const { ValueT &operator[](ptrdiff_t n) const {
return getObject<ValueT, referenceValue>::apply(&m_it[n]); return getObject<ValueT, referenceValue>::apply(m_it + n);
} }
ItemIterator &operator+=(ptrdiff_t n) { m_it += n; return *this; } ItemIterator &operator+=(ptrdiff_t n) { m_it += n; return *this; }
@@ -341,10 +341,8 @@ template <typename T> struct Menu : public Window, public List
/// ///
virtual void PrevFound(bool wrap); virtual void PrevFound(bool wrap);
/// @return const reference to currently used filter /// @return const reference to currently used filter function
/// ///
//virtual const std::string &GetFilter();
const FilterFunction &getFilter() { return m_filter; } const FilterFunction &getFilter() { return m_filter; }
/// @return true if list is currently filtered, false otherwise /// @return true if list is currently filtered, false otherwise
@@ -385,7 +383,7 @@ template <typename T> struct Menu : public Window, public List
/// ///
virtual void Clear(); virtual void Clear();
/// Sets the highlighted position to 0 /// Sets highlighted position to 0
/// ///
void Reset(); void Reset();
@@ -515,10 +513,10 @@ template <typename T> struct Menu : public Window, public List
ValueIterator EndV() { return ValueIterator(m_options_ptr->end()); } ValueIterator EndV() { return ValueIterator(m_options_ptr->end()); }
ConstValueIterator EndV() const { return ConstValueIterator(m_options_ptr->end()); } ConstValueIterator EndV() const { return ConstValueIterator(m_options_ptr->end()); }
ReverseValueIterator RbeginV() { return ReverseValueIterator(End()); } ReverseValueIterator RbeginV() { return ReverseValueIterator(EndV()); }
ConstReverseIterator RbeginV() const { return ConstReverseValueIterator(End()); } ConstReverseIterator RbeginV() const { return ConstReverseValueIterator(EndV()); }
ReverseValueIterator RendV() { return ReverseValueIterator(Begin()); } ReverseValueIterator RendV() { return ReverseValueIterator(BeginV()); }
ConstReverseValueIterator RendV() const { return ConstReverseValueIterator(Begin()); } ConstReverseValueIterator RendV() const { return ConstReverseValueIterator(BeginV()); }
private: private:
/// Clears filter, filtered data etc. /// Clears filter, filtered data etc.