Skip to content

Commit

Permalink
[oneDPL][ranges] + introducing oneapi::dpl::ext::ranges (extension na…
Browse files Browse the repository at this point in the history
…mespace)
  • Loading branch information
MikeDvorskiy committed May 20, 2024
1 parent 153c036 commit 106fe1b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
4 changes: 4 additions & 0 deletions include/oneapi/dpl/pstl/glue_algorithm_ranges_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ namespace oneapi
{
namespace dpl
{
namespace ext
{

#if _ONEDPL___cplusplus >= 202002L
namespace ranges
Expand Down Expand Up @@ -218,6 +220,8 @@ inline constexpr search_n_fn search_n;

#endif //_ONEDPL___cplusplus >= 202002L

} //namespace ext

#if _ONEDPL_HETERO_BACKEND
namespace experimental
{
Expand Down
27 changes: 15 additions & 12 deletions test/parallel_api/ranges/std_ranges.pass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,27 +30,30 @@ main()

using namespace test_std_ranges;

test_range_algo{}(oneapi::dpl::ranges::for_each, std::ranges::for_each, f_mutuable, proj_mutuable);
// Alias for the oneapi::dpl::ext::ranges namespace
namespace dpl_ranges = oneapi::dpl::ext::ranges;

//TODO: oneapi::dpl::ranges::transform has output range as return type, std::ranges::trasnform - output iterator.
test_range_algo<data_in_out, false/*return type check*/>{}(oneapi::dpl::ranges::transform, std::ranges::transform, f, proj);
test_range_algo{}(dpl_ranges::for_each, std::ranges::for_each, f_mutuable, proj_mutuable);

test_range_algo{}(oneapi::dpl::ranges::find_if, std::ranges::find_if, pred, proj);
test_range_algo{}(oneapi::dpl::ranges::find_if_not, std::ranges::find_if_not, pred, proj);
test_range_algo{}(oneapi::dpl::ranges::find, std::ranges::find, 4, proj);
//TODO: dpl_ranges::transform has output range as return type, std::ranges::trasnform - output iterator.
test_range_algo<data_in_out, false/*return type check*/>{}(dpl_ranges::transform, std::ranges::transform, f, proj);

test_range_algo{}(dpl_ranges::find_if, std::ranges::find_if, pred, proj);
test_range_algo{}(dpl_ranges::find_if_not, std::ranges::find_if_not, pred, proj);
test_range_algo{}(dpl_ranges::find, std::ranges::find, 4, proj);

auto pred1 = [](auto&& val) -> decltype(auto) { return val > 0; };
auto pred2 = [](auto&& val) -> decltype(auto) { return val == 4; };
auto pred3 = [](auto&& val) -> decltype(auto) { return val < 0; };

test_range_algo{}(oneapi::dpl::ranges::all_of, std::ranges::all_of, pred1, proj);
test_range_algo{}(oneapi::dpl::ranges::any_of, std::ranges::any_of, pred2, std::identity{});
test_range_algo{}(oneapi::dpl::ranges::none_of, std::ranges::none_of, pred3, std::identity{});
test_range_algo{}(dpl_ranges::all_of, std::ranges::all_of, pred1, proj);
test_range_algo{}(dpl_ranges::any_of, std::ranges::any_of, pred2, std::identity{});
test_range_algo{}(dpl_ranges::none_of, std::ranges::none_of, pred3, std::identity{});

test_range_algo{}(oneapi::dpl::ranges::adjacent_find, std::ranges::adjacent_find, pred_2, proj);
test_range_algo{}(dpl_ranges::adjacent_find, std::ranges::adjacent_find, pred_2, proj);

test_range_algo<data_in_in>{}(oneapi::dpl::ranges::search, std::ranges::search, pred_2, proj);
test_range_algo<data_in_val_n>{}(oneapi::dpl::ranges::search_n, std::ranges::search_n, pred_2, proj);
test_range_algo<data_in_in>{}(dpl_ranges::search, std::ranges::search, pred_2, proj);
test_range_algo<data_in_val_n>{}(dpl_ranges::search_n, std::ranges::search_n, pred_2, proj);

#endif //_ENABLE_STD_RANGES_TESTING

Expand Down

0 comments on commit 106fe1b

Please sign in to comment.