20#ifndef vtkmDataArray_h
21#define vtkmDataArray_h
23#include "vtkAcceleratorsVTKmCoreModule.h"
25#include "vtkmConfigCore.h"
28#include <vtkm/VecFromPortal.h>
29#include <vtkm/VecTraits.h>
30#include <vtkm/cont/ArrayHandle.h>
31#include <vtkm/cont/UnknownArrayHandle.h>
46 static_assert(std::is_arithmetic<T>::value,
"T must be an integral or floating-point type");
54 using typename Superclass::ValueType;
56 using VtkmTypesList = vtkm::List<T, vtkm::Vec<T, 2>, vtkm::Vec<T, 3>, vtkm::Vec<T, 4>,
57 vtkm::VecFromPortal<typename vtkm::cont::ArrayHandle<T>::WritePortalType>>;
61 template <
typename V,
typename S>
89 std::unique_ptr<internal::ArrayHandleWrapperBase<T>> VtkmArray;
93template <
typename T,
typename S>
95 const vtkm::cont::ArrayHandle<T, S>& ah)
98 ret->SetVtkmArrayHandle(ah);
103#ifndef vtkmDataArray_cxx
121#include "vtkmlib/vtkmDataArray.hxx"
Abstract superclass for all arrays.
Base interface for all typed vtkDataArray subclasses.
ValueType GetValue(vtkIdType valueIdx) const
concept methods for vtkGenericDataArray
void SetValue(vtkIdType valueIdx, ValueType value)
bool AllocateTuples(vtkIdType numTuples)
concept methods for vtkGenericDataArray
vtkm::cont::UnknownArrayHandle GetVtkmUnknownArrayHandle() const
void SetTypedTuple(vtkIdType tupleIdx, const ValueType *tuple)
~vtkmDataArray() override
vtkm::List< T, vtkm::Vec< T, 2 >, vtkm::Vec< T, 3 >, vtkm::Vec< T, 4 >, vtkm::VecFromPortal< typename vtkm::cont::ArrayHandle< T >::WritePortalType > > VtkmTypesList
void SetVtkmArrayHandle(const vtkm::cont::ArrayHandle< V, S > &ah)
void SetTypedComponent(vtkIdType tupleIdx, int compIdx, ValueType value)
static vtkmDataArray * New()
void GetTypedTuple(vtkIdType tupleIdx, ValueType *tuple) const
ValueType GetTypedComponent(vtkIdType tupleIdx, int compIdx) const
bool ReallocateTuples(vtkIdType numTuples)
vtkTemplateTypeMacro(SelfType, GenericDataArrayType)
vtkmDataArray< typename vtkm::VecTraits< T >::BaseComponentType > * make_vtkmDataArray(const vtkm::cont::ArrayHandle< T, S > &ah)