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"
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)
vtkmDataArray< T > SelfType
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)