diff options
author | Louis Dionne <ldionne.2@gmail.com> | 2022-01-13 12:22:48 -0500 |
---|---|---|
committer | Louis Dionne <ldionne.2@gmail.com> | 2022-01-13 12:23:33 -0500 |
commit | c7aa8b2962b385dd12602ecb88d176529c2f54bc (patch) | |
tree | c64601974d5bdfe935680378d6705cc16bea6873 | |
parent | 1e04923d21f8e2a3557690340ac7e7936dab20e5 (diff) | |
download | llvm-c7aa8b2962b385dd12602ecb88d176529c2f54bc.zip llvm-c7aa8b2962b385dd12602ecb88d176529c2f54bc.tar.gz llvm-c7aa8b2962b385dd12602ecb88d176529c2f54bc.tar.bz2 |
[libc++][NFC] Remove duplication of distance_apriori_sentinel
4 files changed, 43 insertions, 72 deletions
diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count_sentinel.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count_sentinel.pass.cpp index cdaef2e..a3fa813 100644 --- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count_sentinel.pass.cpp +++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count_sentinel.pass.cpp @@ -18,33 +18,10 @@ #include <climits> #include "test_iterators.h" +#include "../types.h" using range_t = std::array<int, 10>; -class distance_apriori_sentinel { -public: - distance_apriori_sentinel() = default; - constexpr explicit distance_apriori_sentinel(std::ptrdiff_t const count) : count_(count) {} - - constexpr bool operator==(std::input_or_output_iterator auto const&) const { - assert(false && "difference op should take precedence"); - return false; - } - - friend constexpr std::ptrdiff_t operator-(std::input_or_output_iterator auto const&, - distance_apriori_sentinel const y) { - return -y.count_; - } - - friend constexpr std::ptrdiff_t operator-(distance_apriori_sentinel const x, - std::input_or_output_iterator auto const&) { - return x.count_; - } - -private: - std::ptrdiff_t count_ = 0; -}; - struct expected_t { range_t::const_iterator coordinate; std::ptrdiff_t result; diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_sentinel.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_sentinel.pass.cpp index 90f9aba..71ead2f 100644 --- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_sentinel.pass.cpp +++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_sentinel.pass.cpp @@ -18,33 +18,10 @@ #include <cstddef> #include "test_iterators.h" +#include "../types.h" using range_t = std::array<int, 10>; -class distance_apriori_sentinel { -public: - distance_apriori_sentinel() = default; - constexpr explicit distance_apriori_sentinel(std::ptrdiff_t const count) : count_(count) {} - - constexpr bool operator==(std::input_or_output_iterator auto const&) const { - assert(false && "difference op should take precedence"); - return false; - } - - friend constexpr std::ptrdiff_t operator-(std::input_or_output_iterator auto const&, - distance_apriori_sentinel const y) { - return -y.count_; - } - - friend constexpr std::ptrdiff_t operator-(distance_apriori_sentinel const x, - std::input_or_output_iterator auto const&) { - return x.count_; - } - -private: - std::ptrdiff_t count_ = 0; -}; - template <class It, class Sent = It> constexpr void check_assignable_case() { auto range = range_t{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_sentinel.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_sentinel.pass.cpp index 545e01b..dcb3c6f 100644 --- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_sentinel.pass.cpp +++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_sentinel.pass.cpp @@ -18,6 +18,7 @@ #include <utility> #include "test_iterators.h" +#include "../types.h" using range_t = std::array<int, 10>; @@ -35,30 +36,6 @@ private: decltype(base(std::declval<It>())) base_; }; -class distance_apriori_sentinel { -public: - distance_apriori_sentinel() = default; - constexpr explicit distance_apriori_sentinel(std::ptrdiff_t const count) : count_(count) {} - - constexpr bool operator==(std::input_or_output_iterator auto const&) const { - assert(false && "difference op should take precedence"); - return false; - } - - friend constexpr std::ptrdiff_t operator-(std::input_or_output_iterator auto const&, - distance_apriori_sentinel const y) { - return -y.count_; - } - - friend constexpr std::ptrdiff_t operator-(distance_apriori_sentinel const x, - std::input_or_output_iterator auto const&) { - return x.count_; - } - -private: - std::ptrdiff_t count_ = 0; -}; - template <bool Count, typename It> constexpr void check_assignable(int* it, int* last, int const* expected) { { diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/types.h b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/types.h new file mode 100644 index 0000000..2f2f0a87 --- /dev/null +++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/types.h @@ -0,0 +1,40 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef TEST_STD_ITERATORS_ITERATOR_PRIMITIVES_RANGE_ITER_OPS_TYPES_H +#define TEST_STD_ITERATORS_ITERATOR_PRIMITIVES_RANGE_ITER_OPS_TYPES_H + +#include <cassert> +#include <cstddef> +#include <iterator> + +class distance_apriori_sentinel { +public: + distance_apriori_sentinel() = default; + constexpr explicit distance_apriori_sentinel(std::ptrdiff_t const count) : count_(count) {} + + constexpr bool operator==(std::input_or_output_iterator auto const&) const { + assert(false && "difference op should take precedence"); + return false; + } + + friend constexpr std::ptrdiff_t operator-(std::input_or_output_iterator auto const&, + distance_apriori_sentinel const y) { + return -y.count_; + } + + friend constexpr std::ptrdiff_t operator-(distance_apriori_sentinel const x, + std::input_or_output_iterator auto const&) { + return x.count_; + } + +private: + std::ptrdiff_t count_ = 0; +}; + +#endif // TEST_STD_ITERATORS_ITERATOR_PRIMITIVES_RANGE_ITER_OPS_TYPES_H |