Skip to content

Commit

Permalink
remove std::pair and hpx::tuple specializations for algorithm_result_…
Browse files Browse the repository at this point in the history
…helper and local_algorithm_result
  • Loading branch information
Jedi18 committed Nov 16, 2021
1 parent af33761 commit 3b4edaa
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,6 @@ namespace hpx { namespace parallel { inline namespace v1 { namespace detail {
Result>::local_raw_iterator;
};

template <typename Result1, typename Result2>
struct local_algorithm_result<std::pair<Result1, Result2>>
{
using type1 = typename hpx::traits::segmented_local_iterator_traits<
Result1>::local_raw_iterator;
using type2 = typename hpx::traits::segmented_local_iterator_traits<
Result2>::local_raw_iterator;

using type = std::pair<type1, type2>;
};

template <typename Result1, typename Result2>
struct local_algorithm_result<util::in_out_result<Result1, Result2>>
{
Expand All @@ -69,19 +58,6 @@ namespace hpx { namespace parallel { inline namespace v1 { namespace detail {
using type = util::min_max_result<type1>;
};

template <typename Result1, typename Result2, typename Result3>
struct local_algorithm_result<hpx::tuple<Result1, Result2, Result3>>
{
using type1 = typename hpx::traits::segmented_local_iterator_traits<
Result1>::local_raw_iterator;
using type2 = typename hpx::traits::segmented_local_iterator_traits<
Result2>::local_raw_iterator;
using type3 = typename hpx::traits::segmented_local_iterator_traits<
Result3>::local_raw_iterator;

using type = hpx::tuple<type1, type2, type3>;
};

template <typename Result1, typename Result2, typename Result3>
struct local_algorithm_result<
util::in_in_out_result<Result1, Result2, Result3>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,25 +62,6 @@ namespace hpx { namespace parallel { inline namespace v1 { namespace detail {
}
};

template <typename Iterator1, typename Iterator2>
struct algorithm_result_helper<std::pair<Iterator1, Iterator2>,
std::enable_if_t<
hpx::traits::is_segmented_local_iterator_v<Iterator1> ||
hpx::traits::is_segmented_local_iterator_v<Iterator2>>>
{
using traits1 = hpx::traits::segmented_local_iterator_traits<Iterator1>;
using traits2 = hpx::traits::segmented_local_iterator_traits<Iterator2>;

HPX_FORCEINLINE static std::pair<typename traits1::local_iterator,
typename traits2::local_iterator>
call(std::pair<typename traits1::local_raw_iterator,
typename traits2::local_raw_iterator>&& p)
{
return std::make_pair(traits1::remote(HPX_MOVE(p.first)),
traits2::remote(HPX_MOVE(p.second)));
}
};

template <typename Iterator1, typename Iterator2>
struct algorithm_result_helper<util::in_out_result<Iterator1, Iterator2>,
std::enable_if_t<
Expand Down Expand Up @@ -118,29 +99,6 @@ namespace hpx { namespace parallel { inline namespace v1 { namespace detail {
}
};

template <typename Iterator1, typename Iterator2, typename Iterator3>
struct algorithm_result_helper<hpx::tuple<Iterator1, Iterator2, Iterator3>,
std::enable_if_t<
hpx::traits::is_segmented_local_iterator_v<Iterator1> ||
hpx::traits::is_segmented_local_iterator_v<Iterator2> ||
hpx::traits::is_segmented_local_iterator_v<Iterator3>>>
{
using traits1 = hpx::traits::segmented_local_iterator_traits<Iterator1>;
using traits2 = hpx::traits::segmented_local_iterator_traits<Iterator2>;
using traits3 = hpx::traits::segmented_local_iterator_traits<Iterator3>;

HPX_FORCEINLINE static hpx::tuple<typename traits1::local_iterator,
typename traits2::local_iterator, typename traits3::local_iterator>
call(hpx::tuple<typename traits1::local_raw_iterator,
typename traits2::local_raw_iterator,
typename traits3::local_raw_iterator>&& p)
{
return hpx::make_tuple(traits1::remote(HPX_MOVE(hpx::get<0>(p))),
traits2::remote(HPX_MOVE(hpx::get<1>(p))),
traits3::remote(HPX_MOVE(hpx::get<2>(p))));
}
};

template <typename Iterator1, typename Iterator2, typename Iterator3>
struct algorithm_result_helper<
util::in_in_out_result<Iterator1, Iterator2, Iterator3>,
Expand Down Expand Up @@ -185,30 +143,6 @@ namespace hpx { namespace parallel { inline namespace v1 { namespace detail {
}
};

template <typename Iterator1, typename Iterator2>
struct algorithm_result_helper<future<std::pair<Iterator1, Iterator2>>,
std::enable_if_t<
hpx::traits::is_segmented_local_iterator_v<Iterator1> ||
hpx::traits::is_segmented_local_iterator_v<Iterator2>>>
{
using traits1 = hpx::traits::segmented_local_iterator_traits<Iterator1>;
using traits2 = hpx::traits::segmented_local_iterator_traits<Iterator2>;

using arg_type = std::pair<typename traits1::local_raw_iterator,
typename traits2::local_raw_iterator>;
using result_type = std::pair<typename traits1::local_iterator,
typename traits2::local_iterator>;

HPX_FORCEINLINE static future<result_type> call(future<arg_type>&& f)
{
return hpx::make_future<result_type>(
HPX_MOVE(f), [](arg_type&& p) -> result_type {
return std::make_pair(
traits1::remote(p.first), traits2::remote(p.second));
});
}
};

template <typename Iterator1, typename Iterator2>
struct algorithm_result_helper<
future<util::in_out_result<Iterator1, Iterator2>>,
Expand Down

0 comments on commit 3b4edaa

Please sign in to comment.