From 30830e338aa6c2603f44bef1a1e9bc5eee845b08 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Wed, 14 Dec 2016 08:01:31 +0100 Subject: [PATCH] functional: remove reverse_iteration, use boost::range instead --- src/helpers.cpp | 3 ++- src/menu.h | 6 ++++- src/utility/functional.h | 48 ---------------------------------------- 3 files changed, 7 insertions(+), 50 deletions(-) diff --git a/src/helpers.cpp b/src/helpers.cpp index 0465a7b5..d9563b95 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include +#include #include #include "enums.h" @@ -66,7 +67,7 @@ MPD::SongIterator getDatabaseIterator(MPD::Connection &mpd) void removeSongFromPlaylist(const SongMenu &playlist, const MPD::Song &s) { Mpd.StartCommandsList(); - for (auto &item : reverse_iteration(playlist)) + for (auto &item : boost::adaptors::reverse(playlist)) if (item.value() == s) Mpd.Delete(item.value().getPosition()); Mpd.CommitCommandsList(); diff --git a/src/menu.h b/src/menu.h index 1cd3aaa9..b178c049 100644 --- a/src/menu.h +++ b/src/menu.h @@ -251,7 +251,7 @@ struct Menu: Window, List typedef typename std::vector::const_iterator ConstIterator; typedef std::reverse_iterator ReverseIterator; typedef std::reverse_iterator ConstReverseIterator; - + typedef boost::transform_iterator< typename Item::template ExtractValue, Iterator> ValueIterator; @@ -268,6 +268,10 @@ struct Menu: Window, List typename Item::template ExtractProperties, ConstIterator> ConstPropertiesIterator; + // For compliance with boost utilities. + typedef Iterator iterator; + typedef ConstIterator const_iterator; + /// Function helper prototype used to display each option on the screen. /// If not set by setItemDisplayer(), menu won't display anything. /// @see setItemDisplayer() diff --git a/src/utility/functional.h b/src/utility/functional.h index da4df3f3..9c112fcb 100644 --- a/src/utility/functional.h +++ b/src/utility/functional.h @@ -24,43 +24,6 @@ #include #include -template -struct reversed_iteration -{ - reversed_iteration(BaseT &base_) - : base(base_) { } - - BaseT &base; -}; - -template -reversed_iteration reverse_iteration(BaseT &base_) { - return reversed_iteration(base_); -} -template -auto begin(reversed_iteration &rev) -> decltype(rev.base.rbegin()) { - return rev.base.rbegin(); -} -template -auto begin(reversed_iteration &rev) -> decltype(rev.base.rbegin()) { - return rev.base.rbegin(); -} -template -auto end(reversed_iteration &rev) -> decltype(rev.base.rend()) { - return rev.base.rend(); -} -template -auto end(reversed_iteration &rev) -> decltype(rev.base.rend()) { - return rev.base.rend(); -} - -template -struct pointer_extractor -{ - typedef pointer_extractor type; - ValueT *operator()(ValueT &v) const { return &v; } -}; - /// Map over the first element in range satisfying the predicate. template InputIterator find_map_first(InputIterator first, InputIterator last, PredicateT &&p, MapT &&f) @@ -81,17 +44,6 @@ void find_map_all(InputIterator first, InputIterator last, PredicateT &&p, MapT while (it != last); } -// identity function object -struct id_ -{ - template - constexpr auto operator()(ValueT &&v) const noexcept - -> decltype(std::forward(v)) - { - return std::forward(v); - } -}; - // convert string to appropriate type template struct convertString