Skip to content

Commit b159f2e

Browse files
committed
improving definitions for our types
Signed-off-by: Dan Hoeflinger <[email protected]>
1 parent cde467a commit b159f2e

File tree

1 file changed

+19
-41
lines changed

1 file changed

+19
-41
lines changed

include/oneapi/dpl/pstl/iterator_impl.h

+19-41
Original file line numberDiff line numberDiff line change
@@ -328,17 +328,13 @@ class counting_iterator
328328
return !(*this < __it);
329329
}
330330

331+
friend std::true_type
332+
is_passed_directly_in_onedpl_device_policies(const counting_iterator&);
333+
331334
private:
332335
_Ip __my_counter_;
333336
};
334337

335-
template <typename T>
336-
constexpr auto
337-
is_passed_directly_in_onedpl_device_policies(const oneapi::dpl::counting_iterator<T>&)
338-
{
339-
return std::true_type{};
340-
}
341-
342338
template <typename... _Types>
343339
class zip_iterator
344340
{
@@ -467,6 +463,10 @@ class zip_iterator
467463
return !(*this < __it);
468464
}
469465

466+
friend auto
467+
is_passed_directly_in_onedpl_device_policies(const zip_iterator&)
468+
-> std::conjunction<oneapi::dpl::__internal::is_passed_directly_to_device<_Types> ...>;
469+
470470
private:
471471
__it_types __my_it_;
472472
};
@@ -485,16 +485,6 @@ make_zip_iterator(std::tuple<_Tp...> __arg)
485485
return zip_iterator<_Tp...>(__arg);
486486
}
487487

488-
template <typename... _Tp>
489-
constexpr auto
490-
is_passed_directly_in_onedpl_device_policies(const oneapi::dpl::zip_iterator<_Tp...>&)
491-
{
492-
if constexpr ((oneapi::dpl::__internal::is_passed_directly_to_device_v<_Tp> && ...))
493-
return std::true_type{};
494-
else
495-
return std::false_type{};
496-
}
497-
498488
template <typename _Iter, typename _UnaryFunc>
499489
class transform_iterator
500490
{
@@ -653,15 +643,11 @@ class transform_iterator
653643
{
654644
return __my_unary_func_;
655645
}
646+
friend auto
647+
is_passed_directly_in_onedpl_device_policies(const transform_iterator&)
648+
-> oneapi::dpl::__internal::is_passed_directly_to_device<_Iter>;
656649
};
657650

658-
template <typename _It, typename _Unary>
659-
constexpr auto
660-
is_passed_directly_in_onedpl_device_policies(const oneapi::dpl::transform_iterator<_It, _Unary>&)
661-
{
662-
return __internal::is_passed_directly_to_device<_It>{};
663-
}
664-
665651
template <typename _Iter, typename _UnaryFunc>
666652
transform_iterator<_Iter, _UnaryFunc>
667653
make_transform_iterator(_Iter __it, _UnaryFunc __unary_func)
@@ -851,22 +837,15 @@ class permutation_iterator
851837
return !(*this < it);
852838
}
853839

840+
friend auto is_passed_directly_in_onedpl_device_policies(const permutation_iterator&) -> std::conjunction<oneapi::dpl::__internal::is_passed_directly_to_device<SourceIterator>,
841+
oneapi::dpl::__internal::is_passed_directly_to_device<
842+
typename oneapi::dpl::permutation_iterator<SourceIterator, _Permutation>::IndexMap>>;
843+
854844
private:
855845
SourceIterator my_source_it;
856846
IndexMap my_index;
857847
};
858848

859-
template <typename _SourceIterator, typename _IndexIterator>
860-
constexpr auto
861-
is_passed_directly_in_onedpl_device_policies(const oneapi::dpl::permutation_iterator<_SourceIterator, _IndexIterator>&)
862-
{
863-
if constexpr (__internal::is_passed_directly_to_device_v<_SourceIterator> &&
864-
__internal::is_passed_directly_to_device_v<
865-
typename oneapi::dpl::permutation_iterator<_SourceIterator, _IndexIterator>::IndexMap>)
866-
return std::true_type{};
867-
else
868-
return std::false_type{};
869-
}
870849

871850
template <typename SourceIterator, typename IndexMap, typename... StartIndex>
872851
permutation_iterator<SourceIterator, IndexMap>
@@ -1025,15 +1004,14 @@ class discard_iterator
10251004
return !(*this < __it);
10261005
}
10271006

1028-
private:
1007+
friend std::true_type
1008+
is_passed_directly_in_onedpl_device_policies(const discard_iterator&);
1009+
1010+
private:
10291011
difference_type __my_position_;
10301012
};
10311013

1032-
constexpr auto
1033-
is_passed_directly_in_onedpl_device_policies(const oneapi::dpl::discard_iterator&)
1034-
{
1035-
return std::true_type{};
1036-
}
1014+
10371015

10381016
} // namespace dpl
10391017
} // namespace oneapi

0 commit comments

Comments
 (0)