Commit ff5f718e authored by Yedidya Feldblum's avatar Yedidya Feldblum Committed by Facebook Github Bot

Cut macro FOR_EACH_RANGE_R

Summary: [Folly] Cut macro `FOR_EACH_RANGE_R`.

Reviewed By: aary, danobi

Differential Revision: D14058731

fbshipit-source-id: d31c0673785d467665598e2138b6b6082d9629ab
parent 94860dee
......@@ -279,28 +279,6 @@ notThereYet(T& iter, const U& end) {
#endif
/**
* downTo is similar to notThereYet, but in reverse - it helps the
* FOR_EACH_RANGE_R macro.
*/
template <class T, class U>
typename std::enable_if<HasLess<U, T>::value, bool>::type downTo(
T& iter,
const U& begin) {
return begin < iter--;
}
template <class T, class U>
typename std::enable_if<!HasLess<U, T>::value, bool>::type downTo(
T& iter,
const U& begin) {
if (iter == begin) {
return false;
}
--iter;
return true;
}
} // namespace detail
} // namespace folly
......@@ -315,13 +293,4 @@ typename std::enable_if<!HasLess<U, T>::value, bool>::type downTo(
::folly::detail::notThereYet(i, (end)); \
++i)
/*
* Look at the Ranges-v3 views and you'll probably find an easier way to build
* the view you want but the equivalent is roughly:
*
* for (auto& element : make_subrange(begin, end) | view::reverse)
*/
#define FOR_EACH_RANGE_R(i, begin, end) \
for (auto i = (false ? (begin) : (end)); ::folly::detail::downTo(i, (begin));)
#include <folly/container/Foreach-inl.h>
......@@ -342,12 +342,6 @@ BENCHMARK(ForEachDescendingManual, iters) {
doNotOptimizeAway(sum);
}
BENCHMARK(ForEachRangeR, iters) {
int sum = 1;
FOR_EACH_RANGE_R (i, 1U, iters) { sum *= i; }
doNotOptimizeAway(sum);
}
BENCHMARK(CharVecForRange, iters) {
BENCHMARK_SUSPEND {
setupCharVecBenchmark(iters);
......
......@@ -443,21 +443,3 @@ TEST(Foreach, ForEachEnumerateBreak) {
EXPECT_EQ(sumIter, 3); // 1 + 2
EXPECT_EQ(numIterations, 2);
}
TEST(Foreach, ForEachRangeR) {
int sum = 0;
FOR_EACH_RANGE_R (i, 0, 0) { sum += i; }
EXPECT_EQ(0, sum);
FOR_EACH_RANGE_R (i, 0, -1) { sum += i; }
EXPECT_EQ(0, sum);
FOR_EACH_RANGE_R (i, 0, 5) { sum += i; }
EXPECT_EQ(10, sum);
std::list<int> lst = {0, 1, 2, 3, 4};
sum = 0;
FOR_EACH_RANGE_R (i, lst.begin(), lst.end()) { sum += *i; }
EXPECT_EQ(10, sum);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment