10 #ifndef vtk_m_cont_CastAndCall_h
11 #define vtk_m_cont_CastAndCall_h
15 #include <vtkm/cont/DefaultTypes.h>
25 class CoordinateSystem;
28 template <
typename T,
typename S>
31 template <vtkm::IdComponent>
35 template <
typename T,
typename S,
typename U>
37 template <
typename T,
typename S>
46 template <
typename DynamicObject,
typename Functor,
typename... Args>
47 void CastAndCall(
const DynamicObject& dynamicObject, Functor&& f, Args&&... args)
49 dynamicObject.CastAndCall(std::forward<Functor>(f), std::forward<Args>(args)...);
55 template <
typename Functor,
typename... Args>
56 void CastAndCall(
const CoordinateSystem& coords, Functor&& f, Args&&... args);
61 template <
typename Functor,
typename... Args>
66 template <
typename Functor,
typename... Args>
72 template <
typename T,
typename U,
typename Functor,
typename... Args>
75 f(handle, std::forward<Args>(args)...);
82 template <
typename Functor,
typename... Args>
86 std::forward<Functor>(f), std::forward<Args>(args)...);
95 f(cellset, std::forward<Args>(args)...);
101 template <
typename ConnectivityStorageTag,
typename Functor,
typename... Args>
106 f(cellset, std::forward<Args>(args)...);
112 template <
typename T,
typename S,
typename U,
typename Functor,
typename... Args>
115 f(cellset, std::forward<Args>(args)...);
121 template <
typename PermutationType,
typename CellSetType,
typename Functor,
typename... Args>
126 f(cellset, std::forward<Args>(args)...);
132 template <
typename Functor,
typename... Args>
135 f(cellset, std::forward<Args>(args)...);
139 template <
typename... Args>
146 template <
typename... Args>
157 struct DynamicTransformTagCastAndCall
164 struct DynamicTransformTagStatic
176 template <
typename T>
177 struct DynamicTransformTraits
185 using DynamicTag = vtkm::cont::internal::DynamicTransformTagStatic;
190 struct DynamicTransformTraits<
vtkm::cont::UnknownArrayHandle>
192 using DynamicTag = vtkm::cont::internal::DynamicTransformTagCastAndCall;
200 #endif //vtk_m_cont_CastAndCall_h