16 #ifndef vtkDataArrayMeta_h 
   17 #define vtkDataArrayMeta_h 
   20 #include "vtkConfigure.h" 
   23 #include "vtkSetGet.h" 
   26 #include <type_traits> 
   40 #if defined(VTK_DEBUG_RANGE_ITERATORS) 
   41 #define VTK_ITER_ASSERT(x, msg) assert((x) && msg) 
   43 #define VTK_ITER_ASSERT(x, msg) 
   46 #if defined(VTK_ALWAYS_OPTIMIZE_ARRAY_ITERATORS) && !defined(VTK_DEBUG_RANGE_ITERATORS) 
   47 #define VTK_ITER_INLINE VTK_ALWAYS_INLINE 
   48 #define VTK_ITER_ASSUME VTK_ASSUME_NO_ASSERT 
   49 #define VTK_ITER_OPTIMIZE_START VTK_ALWAYS_OPTIMIZE_START 
   50 #define VTK_ITER_OPTIMIZE_END VTK_ALWAYS_OPTIMIZE_START 
   52 #define VTK_ITER_INLINE inline 
   53 #define VTK_ITER_ASSUME VTK_ASSUME 
   54 #define VTK_ITER_OPTIMIZE_START 
   55 #define VTK_ITER_OPTIMIZE_END 
   61 template <
typename ValueType>
 
   91 template <ComponentIdType Size>
 
   92 struct IsValidTupleSize : std::integral_constant<bool, (Size > 0 || Size == DynamicTupleSize)>
 
   96 template <ComponentIdType TupleSize>
 
  101 template <ComponentIdType Size>
 
  106 template <ComponentIdType TupleSize>
 
  111 template <ComponentIdType S1, ComponentIdType S2>
 
  113   : std::integral_constant<bool, (IsStaticTupleSize<S1>::value && IsStaticTupleSize<S2>::value)>
 
  117 template <ComponentIdType S1, ComponentIdType S2, 
typename T = 
void>
 
  123 template <ComponentIdType S1, ComponentIdType S2>
 
  125   : std::integral_constant<bool, (!IsStaticTupleSize<S1>::value || !IsStaticTupleSize<S2>::value)>
 
  129 template <ComponentIdType S1, ComponentIdType S2, 
typename T = 
void>
 
  136 template <ComponentIdType TupleSize>
 
  142   using Superclass = std::integral_constant<ComponentIdType, TupleSize>;
 
  146   using Superclass::Superclass;
 
  159     : 
value(array->GetNumberOfComponents())
 
  169 template <
typename ArrayType>
 
  172   using APIType = 
typename ArrayType::ValueType;
 
  184 template <
typename ArrayType, 
typename = detail::EnableIfVtkDataArray<ArrayType> >
 
  191 template <
typename ArrayType>
 
  195   static constexpr 
bool value = std::is_base_of<vtkAOSDataArrayTemplate<APIType>, ArrayType>
::value;
 
  202 template <
typename ArrayType>
 
  209 #endif // vtkDataArrayMeta_h