18 #ifndef viskores_cont_CastAndCall_h
19 #define viskores_cont_CastAndCall_h
33 class CoordinateSystem;
36 template <
typename T,
typename S>
39 template <viskores::IdComponent>
43 template <
typename T,
typename S,
typename U>
45 template <
typename T,
typename S>
54 template <
typename DynamicObject,
typename Functor,
typename... Args>
55 void CastAndCall(
const DynamicObject& dynamicObject, Functor&& f, Args&&... args)
57 dynamicObject.CastAndCall(std::forward<Functor>(f), std::forward<Args>(args)...);
63 template <
typename Functor,
typename... Args>
64 void CastAndCall(
const CoordinateSystem& coords, Functor&& f, Args&&... args);
69 template <
typename Functor,
typename... Args>
74 template <
typename Functor,
typename... Args>
80 template <
typename T,
typename U,
typename Functor,
typename... Args>
83 f(handle, std::forward<Args>(args)...);
90 template <
typename Functor,
typename... Args>
94 std::forward<Functor>(f), std::forward<Args>(args)...);
103 f(cellset, std::forward<Args>(args)...);
109 template <
typename ConnectivityStorageTag,
typename Functor,
typename... Args>
114 f(cellset, std::forward<Args>(args)...);
120 template <
typename T,
typename S,
typename U,
typename Functor,
typename... Args>
125 f(cellset, std::forward<Args>(args)...);
131 template <
typename PermutationType,
typename CellSetType,
typename Functor,
typename... Args>
136 f(cellset, std::forward<Args>(args)...);
142 template <
typename Functor,
typename... Args>
145 f(cellset, std::forward<Args>(args)...);
149 template <
typename... Args>
156 template <
typename... Args>
167 struct DynamicTransformTagCastAndCall
174 struct DynamicTransformTagStatic
186 template <
typename T>
187 struct DynamicTransformTraits
195 using DynamicTag = viskores::cont::internal::DynamicTransformTagStatic;
200 struct DynamicTransformTraits<
viskores::cont::UnknownArrayHandle>
202 using DynamicTag = viskores::cont::internal::DynamicTransformTagCastAndCall;
210 #endif //viskores_cont_CastAndCall_h