10 #ifndef vtk_m_cont_internal_Hints_h
11 #define vtk_m_cont_internal_Hints_h
36 template <
typename Derived_,
typename Tag_,
typename DeviceList_>
39 using Derived = Derived_;
41 using DeviceList = DeviceList_;
44 struct HintTagThreadsPerBlock
52 template <vtkm::IdComponent MaxThreads_,
typename DeviceList_ = vtkm::ListUniversal>
53 struct HintThreadsPerBlock
54 : HintBase<HintThreadsPerBlock<MaxThreads_, DeviceList_>, HintTagThreadsPerBlock, DeviceList_>
64 template <
typename... Hints>
71 struct IsHintList : std::false_type
74 template <
typename... Hints>
75 struct IsHintList<HintList<Hints...>> : std::true_type
85 #define VTKM_IS_HINT_LIST(T) VTKM_STATIC_ASSERT(::vtkm::cont::internal::IsHintList<T>::value)
90 template <
typename Device,
typename H
intTag>
91 struct FindHintOperators
95 template <
typename H
int>
96 using HintMatches = vtkm::internal::meta::And<std::is_same<typename Hint::Tag, HintTag>,
98 template <
typename Found,
typename Next>
99 using ReduceOperator =
typename std::conditional<HintMatches<Next>::value, Next, Found>::type;
114 template <
typename HList,
typename DefaultH
int,
typename Device>
116 typename HList::List,
117 detail::FindHintOperators<Device, typename DefaultHint::Tag>::template ReduceOperator,
124 #endif // vtk_m_cont_internal_Hints_h