26 #ifndef vtkDataArrayRange_h 27 #define vtkDataArrayRange_h 41 #include <type_traits> 118 template <
typename ArrayTypePtr, ComponentIdType TupleSize>
130 typename std::decay<decltype(vtk::detail::DeclareTupleRangeSpecialization<ArrayType, TupleSize>(
131 std::declval<ArrayType*>()))>::
type;
134 template <
typename ArrayTypePtr, ComponentIdType TupleSize>
147 TupleSize>(std::declval<ArrayType*>()))>
::type;
266 return RangeType(array, start < 0 ? 0 : start, end < 0 ? array->GetNumberOfTuples() : end);
375 return RangeType(array, start < 0 ? 0 : start, end < 0 ? array->GetNumberOfValues() : end);
382 #endif // vtkDataArrayRange_h
typename std::decay< decltype(vtk::detail::DeclareTupleRangeSpecialization< ArrayType, TupleSize >(std::declval< ArrayType * >()))>::type type
VTK_ITER_INLINE auto DataArrayTupleRange(const ArrayTypePtr &array, TupleIdType start=-1, TupleIdType end=-1) -> typename detail::SelectTupleRange< ArrayTypePtr, TupleSize >::type
Generate an stl and for-range compatible range of tuple iterators from a vtkDataArray.
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
VTK_ITER_INLINE auto DataArrayValueRange(const ArrayTypePtr &array, ValueIdType start=-1, ValueIdType end=-1) -> typename detail::SelectValueRange< ArrayTypePtr, TupleSize >::type
Generate an stl and for-range compatible range of flat AOS iterators from a vtkDataArray.
abstract superclass for arrays of numeric data
static constexpr ComponentIdType DynamicTupleSize
typename std::remove_reference< decltype(vtk::detail::DeclareValueRangeSpecialization< ArrayType, TupleSize >(std::declval< ArrayType * >()))>::type type
ValueRange< AOSArrayType, TupleSize > DeclareValueRangeSpecialization(ArrayType *)