From 7d47f1631672c410b88a3341cecaf094c2e35124 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sat, 1 Sep 2012 00:20:44 +0200 Subject: [PATCH] menu: fix iterator's operator[] and definitions of reverse value interators --- src/menu.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/menu.h b/src/menu.h index 8ad97688..e174d695 100644 --- a/src/menu.h +++ b/src/menu.h @@ -137,7 +137,7 @@ template struct Menu : public Window, public List ItemIterator() { } ValueT &operator*() const { return getObject::apply(m_it); } - typename BaseIterator::value_type operator->() { return *m_it; } + ValueT *operator->() const { return &getObject::apply(m_it); } ItemIterator &operator++() { ++m_it; return *this; } ItemIterator operator++(int) { return ItemIterator(m_it++); } @@ -146,7 +146,7 @@ template struct Menu : public Window, public List ItemIterator operator--(int) { return ItemIterator(m_it--); } ValueT &operator[](ptrdiff_t n) const { - return getObject::apply(&m_it[n]); + return getObject::apply(m_it + n); } ItemIterator &operator+=(ptrdiff_t n) { m_it += n; return *this; } @@ -341,10 +341,8 @@ template struct Menu : public Window, public List /// 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; } /// @return true if list is currently filtered, false otherwise @@ -385,7 +383,7 @@ template struct Menu : public Window, public List /// virtual void Clear(); - /// Sets the highlighted position to 0 + /// Sets highlighted position to 0 /// void Reset(); @@ -515,10 +513,10 @@ template struct Menu : public Window, public List 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()); } + ReverseValueIterator RbeginV() { return ReverseValueIterator(EndV()); } + ConstReverseIterator RbeginV() const { return ConstReverseValueIterator(EndV()); } + ReverseValueIterator RendV() { return ReverseValueIterator(BeginV()); } + ConstReverseValueIterator RendV() const { return ConstReverseValueIterator(BeginV()); } private: /// Clears filter, filtered data etc.