6 #ifndef vtkmlib_DataArrayConverters_h
7 #define vtkmlib_DataArrayConverters_h
9 #include "vtkAcceleratorsVTKmCoreModule.h"
10 #include "vtkmConfigCore.h"
15 #include <vtkm/cont/ArrayHandleSOA.h>
16 #include <vtkm/cont/Field.h>
17 #include <vtkm/cont/UnknownArrayHandle.h>
19 #include <type_traits>
25 class CoordinateSystem;
29 VTK_ABI_NAMESPACE_BEGIN
36 VTK_ABI_NAMESPACE_BEGIN
43 static const char*
name =
"NoNameVTKField";
47 template <
typename DataArrayType, vtkm::IdComponent NumComponents>
50 template <
typename T, vtkm::IdComponent NumComponents>
54 typename std::conditional<NumComponents == 1, T, vtkm::Vec<T, NumComponents>>
::type;
55 using StorageType = vtkm::cont::internal::Storage<ValueType, vtkm::cont::StorageTagBasic>;
56 using ArrayHandleType = vtkm::cont::ArrayHandle<ValueType, vtkm::cont::StorageTagBasic>;
60 return vtkm::cont::make_ArrayHandle(reinterpret_cast<ValueType*>(input->
GetPointer(0)),
65 template <
typename T, vtkm::IdComponent NumComponents>
69 using StorageType = vtkm::cont::internal::Storage<ValueType, vtkm::cont::StorageTagSOA>;
70 using ArrayHandleType = vtkm::cont::ArrayHandle<ValueType, vtkm::cont::StorageTagSOA>;
75 vtkm::cont::ArrayHandleSOA<ValueType> handle;
76 for (vtkm::IdComponent i = 0; i < NumComponents; ++i)
80 numValues, vtkm::CopyFlag::Off));
83 return std::move(handle);
90 using StorageType = vtkm::cont::internal::Storage<T, vtkm::cont::StorageTagBasic>;
95 return vtkm::cont::make_ArrayHandle(
109 VTK_ABI_NAMESPACE_END
114 VTK_ABI_NAMESPACE_BEGIN
116 VTKACCELERATORSVTKMCORE_EXPORT
119 VTKACCELERATORSVTKMCORE_EXPORT
122 VTKACCELERATORSVTKMCORE_EXPORT
125 VTK_ABI_NAMESPACE_END
128 VTK_ABI_NAMESPACE_BEGIN
140 VTK_ABI_NAMESPACE_END
142 #endif // vtkmlib_ArrayConverters_h
Struct-Of-Arrays implementation of vtkGenericDataArray.
static ArrayHandleType Wrap(vtkSOADataArrayTemplate< T > *input)
tovtkm::FieldsFlag operator&(const tovtkm::FieldsFlag &a, const tovtkm::FieldsFlag &b)
ValueType * GetPointer(vtkIdType valueIdx)
Get the address of a particular data index.
vtkm::cont::internal::Storage< ValueType, vtkm::cont::StorageTagBasic > StorageType
tovtkm::FieldsFlag operator|(const tovtkm::FieldsFlag &a, const tovtkm::FieldsFlag &b)
static ArrayHandleType Wrap(vtkSOADataArrayTemplate< T > *input)
vtkm::cont::internal::Storage< ValueType, vtkm::cont::StorageTagSOA > StorageType
ValueType * GetComponentArrayPointer(int comp)
Return a pointer to a contiguous block of memory containing all values for a particular components (i...
static const char * NoNameVTKFieldName()
Temporary name for arrays converted from VTK that do not have a name.
vtkm::cont::ArrayHandle< T, vtkm::cont::StorageTagBasic > ArrayHandleType
vtkm::cont::ArrayHandle< ValueType, vtkm::cont::StorageTagSOA > ArrayHandleType
Array-Of-Structs implementation of vtkGenericDataArray.
VTKACCELERATORSVTKMCORE_EXPORT vtkDataArray * Convert(const vtkm::cont::Field &input)
abstract superclass for arrays of numeric data
vtkm::cont::ArrayHandle< ValueType, vtkm::cont::StorageTagBasic > ArrayHandleType
vtkm::cont::internal::Storage< T, vtkm::cont::StorageTagBasic > StorageType
vtkIdType GetNumberOfTuples() const
Get the number of complete tuples (a component group) in the array.
static ArrayHandleType Wrap(vtkAOSDataArrayTemplate< T > *input)
typename std::conditional< NumComponents==1, T, vtkm::Vec< T, NumComponents >>::type ValueType
vtkm::Vec< T, NumComponents > ValueType
represent and manipulate 3D points