Go to the documentation of this file.
11 #ifndef vtk_m_cont_ArraySetValues_h
12 #define vtk_m_cont_ArraySetValues_h
19 #include <initializer_list>
33 std::false_type extractComponentInefficient);
35 template <
typename IdsArrayHandle,
typename ValuesArrayHandle,
typename DataArrayHandle>
36 void ArraySetValuesImpl(
const IdsArrayHandle& ids,
37 const ValuesArrayHandle& values,
38 const DataArrayHandle& data,
39 std::true_type
vtkmNotUsed(extractComponentInefficient))
42 vtkm::Id numValues = ids.GetNumberOfValues();
43 VTKM_ASSERT(values.GetNumberOfValues() == numValues);
45 auto idsPortal = ids.ReadPortal();
46 auto valuesPortal = values.ReadPortal();
47 auto dataPortal = data.WritePortal();
49 for (
vtkm::Id index = 0; index < numValues; ++index)
51 dataPortal.Set(idsPortal.Get(index), valuesPortal.Get(index));
112 template <
typename SIds,
typename T,
typename SValues,
typename SData>
118 using InefficientExtract =
119 vtkm::cont::internal::ArrayExtractComponentIsInefficient<DataArrayHandle>;
120 internal::ArraySetValuesImpl(ids, values, data, InefficientExtract{});
124 template <
typename SIds,
typename TIn,
typename SValues,
typename TOut,
typename SData>
136 outp.Set(i,
static_cast<TIn
>(inp.Get(i)));
143 template <
typename SIds,
typename T,
typename SData,
typename Alloc>
145 const std::vector<T, Alloc>& values,
152 template <
typename T,
typename SIds,
typename SValues,
typename SData>
161 template <
typename T,
typename AllocId,
typename AllocVal,
typename SData>
163 const std::vector<T, AllocVal>& values,
171 template <
typename T,
typename SData,
typename Alloc>
173 const std::vector<T, Alloc>& values,
182 template <
typename T,
typename SData>
184 const std::initializer_list<T>& values,
194 template <
typename T,
typename SValues,
typename SData>
204 template <
typename T,
typename SData>
207 const std::vector<T>& values,
212 const auto valuesAH =
217 template <
typename T,
typename SData>
230 template <
typename T,
typename SData>
246 template <
typename T,
typename SData>
261 #endif //vtk_m_cont_ArraySetValues_h
Manages an array-worth of data.
Definition: ArrayHandle.h:300
Groups connected points that have the same field value.
Definition: Atomic.h:19
#define VTKM_ASSERT(condition)
Definition: Assert.h:43
An ArrayHandle of an unknown value type and storage.
Definition: UnknownArrayHandle.h:430
vtkm::Id GetNumberOfValues() const
Returns the number of entries in the array.
Definition: ArrayHandle.h:468
Definition: ArrayHandleCast.h:28
void ArraySetValues(const vtkm::cont::ArrayHandle< vtkm::Id, SIds > &ids, const vtkm::cont::ArrayHandle< T, SValues > &values, const vtkm::cont::ArrayHandle< T, SData > &data)
Set a small set of values in an ArrayHandle with minimal device transfers.
Definition: ArraySetValues.h:113
ArrayHandleType GetSourceArray() const
Returns the ArrayHandle that is being transformed.
Definition: ArrayHandleCast.h:169
#define VTKM_CONT_EXPORT
Definition: vtkm_cont_export.h:44
#define VTKM_CONT
Definition: ExportMacros.h:57
vtkm::Int64 Id
Base type to use to index arrays.
Definition: Types.h:227
#define vtkmNotUsed(parameter_name)
Simple macro to identify a parameter as unused.
Definition: ExportMacros.h:128
void ArraySetValue(vtkm::Id id, const T &value, const vtkm::cont::ArrayHandle< T, SData > &data)
Set a single value in an ArrayHandle at the specified index.
Definition: ArraySetValues.h:247
ReadPortalType ReadPortal() const
Get an array portal that can be used in the control environment.
Definition: ArrayHandle.h:433
Cast the values of an array to the specified type, on demand.
Definition: ArrayHandleCast.h:141
void Allocate(vtkm::Id numberOfValues, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const
Allocates an array large enough to hold the given number of values.
Definition: ArrayHandle.h:490
Basic array storage for an array handle.
Definition: ArrayHandleBasic.h:111
vtkm::cont::ArrayHandleBasic< T > make_ArrayHandle(const T *array, vtkm::Id numberOfValues, vtkm::CopyFlag copy)
A convenience function for creating an ArrayHandle from a standard C array.
Definition: ArrayHandleBasic.h:270
WritePortalType WritePortal() const
Get an array portal that can be used in the control environment.
Definition: ArrayHandle.h:454