Skip to content

Commit

Permalink
Use ranges:: algorithms instead of base::
Browse files Browse the repository at this point in the history
  • Loading branch information
john-preston committed Nov 20, 2017
1 parent bc7c88c commit ac99318
Show file tree
Hide file tree
Showing 28 changed files with 753 additions and 598 deletions.
18 changes: 11 additions & 7 deletions Telegram/SourceFiles/apiwrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1873,11 +1873,15 @@ void ApiWrap::checkForUnreadMentions(const base::flat_set<MsgId> &possiblyReadMe
}

void ApiWrap::cancelEditChatAdmins(not_null<ChatData*> chat) {
_chatAdminsEnabledRequests.take(chat)
| requestCanceller();

_chatAdminsSaveRequests.take(chat)
| base::for_each_apply(requestCanceller());
_chatAdminsEnabledRequests.take(
chat
) | requestCanceller();

_chatAdminsSaveRequests.take(
chat
) | [&](auto &&requests) {
ranges::for_each(std::move(requests), requestCanceller());
};

_chatAdminsToSave.remove(chat);
}
Expand Down Expand Up @@ -1975,8 +1979,8 @@ void ApiWrap::sendSaveChatAdminsRequests(not_null<ChatData*> chat) {
}
}
}
base::for_each(toRemove, removeOne);
base::for_each(toAppoint, appointOne);
ranges::for_each(toRemove, removeOne);
ranges::for_each(toAppoint, appointOne);
requestSendDelayed();
}

Expand Down
105 changes: 0 additions & 105 deletions Telegram/SourceFiles/base/algorithm.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,109 +32,4 @@ inline constexpr size_t array_size(const Type(&)[Size]) {
return Size;
}

template <typename Range, typename Method>
decltype(auto) for_each(Range &&range, Method &&method) {
return std::for_each(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Method>(method));
}

template <typename Method>
decltype(auto) for_each_apply(Method &&method) {
return [&method](auto &&range) {
return for_each(std::forward<decltype(range)>(range), std::forward<Method>(method));
};
}

template <typename Range, typename Value>
decltype(auto) find(Range &&range, Value &&value) {
return std::find(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Value>(value));
}

template <typename Range, typename Predicate>
decltype(auto) find_if(Range &&range, Predicate &&predicate) {
return std::find_if(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Predicate>(predicate));
}

template <typename Range, typename Type>
decltype(auto) lower_bound(Range &&range, Type &&value) {
return std::lower_bound(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Type>(value));
}

template <typename Range, typename Type, typename Predicate>
decltype(auto) lower_bound(Range &&range, Type &&value, Predicate &&predicate) {
return std::lower_bound(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Type>(value),
std::forward<Predicate>(predicate));
}

template <typename Range, typename Type>
decltype(auto) upper_bound(Range &&range, Type &&value) {
return std::upper_bound(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Type>(value));
}

template <typename Range, typename Type, typename Predicate>
decltype(auto) upper_bound(Range &&range, Type &&value, Predicate &&predicate) {
return std::upper_bound(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Type>(value),
std::forward<Predicate>(predicate));
}

template <typename Range, typename Type>
decltype(auto) equal_range(Range &&range, Type &&value) {
return std::equal_range(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Type>(value));
}

template <typename Range, typename Type, typename Predicate>
decltype(auto) equal_range(Range &&range, Type &&value, Predicate &&predicate) {
return std::equal_range(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Type>(value),
std::forward<Predicate>(predicate));
}

template <typename Range>
decltype(auto) sort(Range &&range) {
return std::sort(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)));
}

template <typename Range, typename Predicate>
decltype(auto) sort(Range &&range, Predicate &&predicate) {
return std::sort(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Predicate>(predicate));
}

template <typename Range, typename Predicate>
decltype(auto) stable_partition(Range &&range, Predicate &&predicate) {
return std::stable_partition(
std::begin(std::forward<Range>(range)),
std::end(std::forward<Range>(range)),
std::forward<Predicate>(predicate));
}

} // namespace base
Loading

0 comments on commit ac99318

Please sign in to comment.