26 #include <boost/mpl/for_each.hpp>
27 #include <boost/mpl/joint_view.hpp>
28 #include <boost/mpl/vector.hpp>
35 typedef boost::mpl::vector<vtkTypeUInt8, vtkTypeInt8, vtkTypeUInt16, vtkTypeInt16, vtkTypeUInt32, vtkTypeInt32, vtkTypeUInt64, vtkTypeInt64, vtkIdType>
vtkIntegerTypes;
41 typedef boost::mpl::joint_view<vtkIntegerTypes, vtkFloatingPointTypes>
vtkNumericTypes;
47 typedef boost::mpl::joint_view<vtkNumericTypes, vtkStringTypes>
vtkAllTypes;
50 template<
template <
typename>
class TargetT,
typename FunctorT>
61 template<
typename ValueT>
67 TargetT<ValueT>*
const target1 = TargetT<ValueT>::SafeDownCast(
Source1);
83 template<
template <
typename>
class TargetT,
typename FunctorT>
95 template<
typename ValueT>
101 TargetT<ValueT>*
const target1 = TargetT<ValueT>::SafeDownCast(
Source1);
102 TargetT<ValueT>*
const target2 = TargetT<ValueT>::SafeDownCast(
Source2);
103 if(target1 && target2)
106 this->
Functor(target1, target2);
119 template<
template <
typename>
class TargetT,
typename FunctorT>
132 template<
typename ValueT>
138 TargetT<ValueT>*
const target1 = TargetT<ValueT>::SafeDownCast(
Source1);
139 TargetT<ValueT>*
const target2 = TargetT<ValueT>::SafeDownCast(
Source2);
140 TargetT<ValueT>*
const target3 = TargetT<ValueT>::SafeDownCast(
Source3);
141 if(target1 && target2 && target3)
144 this->
Functor(target1, target2, target3);
158 template<
template <
typename>
class TargetT,
typename TypesT,
typename FunctorT>
161 bool succeeded =
false;
166 template<
template <
typename>
class TargetT,
typename TypesT,
typename FunctorT>
169 bool succeeded =
false;
175 template<
template <
typename>
class TargetT,
typename TypesT,
typename FunctorT>
178 bool succeeded =
false;
boost::mpl::joint_view< vtkIntegerTypes, vtkFloatingPointTypes > vtkNumericTypes
vtkTryDowncastHelper2(vtkObject *source1, vtkObject *source2, FunctorT functor, bool &succeeded)
void operator()(ValueT) const
abstract base class for most VTK objects
vtkTryDowncastHelper3(vtkObject *source1, vtkObject *source2, vtkObject *source3, FunctorT functor, bool &succeeded)
boost::mpl::vector< vtkTypeUInt8, vtkTypeInt8, vtkTypeUInt16, vtkTypeInt16, vtkTypeUInt32, vtkTypeInt32, vtkTypeUInt64, vtkTypeInt64, vtkIdType > vtkIntegerTypes
vtkTryDowncastHelper1(vtkObject *source1, FunctorT functor, bool &succeeded)
boost::mpl::joint_view< vtkNumericTypes, vtkStringTypes > vtkAllTypes
bool vtkTryDowncast(vtkObject *source1, FunctorT functor)
boost::mpl::vector< vtkTypeFloat32, vtkTypeFloat64 > vtkFloatingPointTypes
void operator()(ValueT) const
void operator()(ValueT) const
boost::mpl::vector< vtkStdString, vtkUnicodeString > vtkStringTypes