|
| VTKM_ARRAY_HANDLE_SUBCLASS (ArrayHandleStride,(ArrayHandleStride< T >),(ArrayHandle< T, vtkm::cont::StorageTagStride >)) |
|
| ArrayHandleStride (vtkm::Id stride, vtkm::Id offset, vtkm::Id modulo=0, vtkm::Id divisor=1) |
|
| ArrayHandleStride (const vtkm::cont::ArrayHandle< T, vtkm::cont::StorageTagBasic > &array, vtkm::Id numValues, vtkm::Id stride, vtkm::Id offset, vtkm::Id modulo=0, vtkm::Id divisor=1) |
|
| ArrayHandleStride (const vtkm::cont::internal::Buffer &buffer, vtkm::Id numValues, vtkm::Id stride, vtkm::Id offset, vtkm::Id modulo=0, vtkm::Id divisor=1) |
|
vtkm::Id | GetStride () const |
|
vtkm::Id | GetOffset () const |
|
vtkm::Id | GetModulo () const |
|
vtkm::Id | GetDivisor () const |
|
vtkm::cont::ArrayHandleBasic< T > | GetBasicArray () const |
|
Public Member Functions inherited from vtkm::cont::ArrayHandle< T, vtkm::cont::StorageTagStride > |
VTKM_CONT | ArrayHandle () |
| Constructs an empty ArrayHandle. More...
|
|
VTKM_CONT | ArrayHandle (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) |
| Copy constructor. More...
|
|
VTKM_CONT | ArrayHandle (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept |
| Move constructor. More...
|
|
VTKM_CONT | ~ArrayHandle () |
| Destructs an empty ArrayHandle. More...
|
|
VTKM_CONT vtkm::cont::ArrayHandle< ValueType, StorageTag > & | operator= (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) |
| Copies an ArrayHandle. More...
|
|
VTKM_CONT vtkm::cont::ArrayHandle< ValueType, StorageTag > & | operator= (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept |
| Move and Assignment of an ArrayHandle. More...
|
|
VTKM_CONT bool | operator== (const ArrayHandle< ValueType, StorageTag > &rhs) const |
| Like a pointer, two ArrayHandles are considered equal if they point to the same location in memory. More...
|
|
VTKM_CONT bool | operator== (const ArrayHandle< VT, ST > &) const |
|
VTKM_CONT bool | operator!= (const ArrayHandle< ValueType, StorageTag > &rhs) const |
|
VTKM_CONT bool | operator!= (const ArrayHandle< VT, ST > &) const |
|
VTKM_CONT StorageType | GetStorage () const |
| Get the storage. More...
|
|
VTKM_CONT WritePortalType | WritePortal () const |
| Get an array portal that can be used in the control environment. More...
|
|
VTKM_CONT WritePortalType | WritePortal (vtkm::cont::Token &token) const |
|
VTKM_CONT vtkm::Id | GetNumberOfValues () const |
| Returns the number of entries in the array. More...
|
|
VTKM_CONT void | ReleaseResourcesExecution () const |
| Releases any resources being used in the execution environment (that are not being shared by the control environment). More...
|
|
VTKM_CONT void | ReleaseResources () const |
| Releases all resources in both the control and execution environments. More...
|
|
VTKM_CONT ReadPortalType | PrepareForInput (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
| Prepares this array to be used as an input to an operation in the execution environment. More...
|
|
VTKM_CONT WritePortalType | PrepareForInPlace (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
| Prepares this array to be used in an in-place operation (both as input and output) in the execution environment. More...
|
|
VTKM_CONT WritePortalType | PrepareForOutput (vtkm::Id numberOfValues, vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
| Prepares (allocates) this array to be used as an output from an operation in the execution environment. More...
|
|
VTKM_CONT bool | IsOnDevice (vtkm::cont::DeviceAdapterId device) const |
| Returns true if the ArrayHandle's data is on the given device. More...
|
|
VTKM_CONT bool | IsOnHost () const |
| Returns true if the ArrayHandle's data is on the host. More...
|
|
VTKM_CONT void | SyncControlArray () const |
| Synchronizes the control array with the execution array. More...
|
|
VTKM_CONT void | Enqueue (const vtkm::cont::Token &token) const |
| Enqueue a token for access to this ArrayHandle. More...
|
|
VTKM_CONT void | DeepCopyFrom (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &source) const |
| Deep copies the data in the array. More...
|
|
const VTKM_CONT std::vector< vtkm::cont::internal::Buffer > & | GetBuffers () const |
| Returns the internal Buffer structures that hold the data. More...
|
|
VTKM_CONT std::vector< vtkm::cont::internal::Buffer > & | GetBuffers () |
|
VTKM_CONT | ArrayHandle (const std::vector< vtkm::cont::internal::Buffer > &buffers) |
|
VTKM_CONT | ArrayHandle (std::vector< vtkm::cont::internal::Buffer > &&buffers) noexcept |
|
VTKM_CONT ReadPortalType | ReadPortal () const |
| Get an array portal that can be used in the control environment. More...
|
|
VTKM_CONT ReadPortalType | ReadPortal (vtkm::cont::Token &token) const |
| Get an array portal that can be used in the control environment. More...
|
|
VTKM_CONT 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. More...
|
|
VTKM_CONT void | Allocate (vtkm::Id numberOfValues, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const |
| Allocates an array large enough to hold the given number of values. More...
|
|
VTKM_CONT void | AllocateAndFill (vtkm::Id numberOfValues, const ValueType &fillValue, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const |
| Allocates an array and fills it with an initial value. More...
|
|
VTKM_CONT void | AllocateAndFill (vtkm::Id numberOfValues, const ValueType &fillValue, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const |
| Allocates an array and fills it with an initial value. More...
|
|
VTKM_CONT void | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex, vtkm::cont::Token &token) const |
| Fills the array with a given value. More...
|
|
VTKM_CONT void | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex) const |
| Fills the array with a given value. More...
|
|
VTKM_CONT void | Fill (const ValueType &fillValue, vtkm::Id startIndex=0) const |
| Fills the array with a given value. More...
|
|
template<typename T>
class vtkm::cont::ArrayHandleStride< T >
An ArrayHandle
that accesses a basic array with strides and offsets.
ArrayHandleStride
is a simple ArrayHandle
that accesses data with a prescribed stride and offset. You specify the stride and offset at construction. So when a portal for this ArrayHandle
Get
s or Set
s a value at a specific index, the value accessed in the underlying C array is:
(index * stride) + offset
Optionally, you can also specify a modulo and divisor. If they are specified, the index mangling becomes:
(((index / divisor) % modulo) * stride) + offset
You can "disable" any of the aforementioned operations by setting them to the following values (most of which are arithmetic identities):
- stride: 1
- offset: 0
- modulo: 0
- divisor: 1
Note that all of these indices are referenced by the ValueType
of the array. So, an ArrayHandleStride<vtkm::Float32>
with an offset of 1 will actually offset by 4 bytes (the size of a vtkm::Float32
).
ArrayHandleStride
is used to provide a unified type for pulling a component out of an ArrayHandle
. This way, you can iterate over multiple components in an array without having to implement a template instance for each vector size or representation.