VTK  9.6.20260415
vtkIndexedImplicitBackend< ValueType > Class Template Referencefinal

A backend for the vtkImplicitArray framework allowing one to use a subset of a given data array, by providing a vtkIdList or vtkDataArray of indexes as indirection, as another vtkDataArray without any excess memory consumption. More...

#include <vtkIndexedImplicitBackend.h>

Public Member Functions

 ~vtkIndexedImplicitBackend ()
 
ValueType operator() (vtkIdType idx) const
 Indexing operation for the indexed array respecting the backend expectations of vtkImplicitArray
 
unsigned long getMemorySize () const
 Returns the smallest integer memory size in KiB needed to store the array.
 
vtkDataArrayGetBaseArray () const
 Get the original base array used for value lookup.
 
vtkDataArrayGetIndexArray () const
 Get the original index array used for indirection.
 
bool GetMapTuples () const
 Get if the indexed array is mapping tuples or values.
 
 vtkIndexedImplicitBackend (vtkIdList *indexes, vtkDataArray *array, bool mapTuples=false)
 Constructor.
 
 vtkIndexedImplicitBackend (vtkDataArray *indexes, vtkDataArray *array, bool mapTuples=false)
 Constructor.
 

Detailed Description

template<typename ValueType>
class vtkIndexedImplicitBackend< ValueType >

A backend for the vtkImplicitArray framework allowing one to use a subset of a given data array, by providing a vtkIdList or vtkDataArray of indexes as indirection, as another vtkDataArray without any excess memory consumption.

This structure can be classified as a closure and can be called using syntax similar to a function call.

An example of potential usage in a vtkImplicitArray:

baseArray->SetNumberOfComponents(1);
baseArray->SetNumberOfTuples(100);
auto range = vtk::DataArrayValueRange<1>(baseArray);
std::iota(range.begin(), range.end(), 0);
handles->SetNumberOfIds(100);
for (vtkIdType idx = 0; idx < 100; idx++)
{
handles->SetId(idx, 99-idx);
}
// `vtkIndexedArray<int>`
// if available
indexedArr->SetBackend(std::make_shared<vtkIndexedImplicitBackend<int>>(handles, baseArray));
indexedArr->SetNumberOfComponents(1);
indexedArr->SetNumberOfTuples(100);
CHECK(indexedArr->GetValue(57) == 42);
A backend for the vtkImplicitArray framework allowing one to use a subset of a given data array,...
Allocate and hold a VTK object.
Definition vtkNew.h:168
VTK_ITER_INLINE auto DataArrayValueRange(const ArrayTypePtr &array, ValueIdType start=-1, ValueIdType end=-1) -> typename detail::SelectValueRange< ArrayTypePtr, TupleSize, ForceValueTypeForVtkDataArray >::type
Generate an stl and for-range compatible range of flat AOS iterators from a vtkDataArray.
int vtkIdType
Definition vtkType.h:363
See also
vtkImplicitArray, vtkIndexedArray

Definition at line 55 of file vtkIndexedImplicitBackend.h.

Constructor & Destructor Documentation

◆ vtkIndexedImplicitBackend() [1/2]

template<typename ValueType>
vtkIndexedImplicitBackend< ValueType >::vtkIndexedImplicitBackend ( vtkIdList * indexes,
vtkDataArray * array,
bool mapTuples = false )

Constructor.

Parameters
indexeslist of indexes to use for indirection of the array
arraybase array of interest
mapTuplesdecides if the indexes are mapping the tuples or the values WARNING: Mapping tuples only works with AOS and doesn't support SOA.

◆ vtkIndexedImplicitBackend() [2/2]

template<typename ValueType>
vtkIndexedImplicitBackend< ValueType >::vtkIndexedImplicitBackend ( vtkDataArray * indexes,
vtkDataArray * array,
bool mapTuples = false )

Constructor.

Parameters
indexeslist of indexes to use for indirection of the array
arraybase array of interest
mapTuplesdecides if the indexes are mapping the tuples or the values WARNING: Mapping tuples only works with AOS and doesn't support SOA.

◆ ~vtkIndexedImplicitBackend()

template<typename ValueType>
vtkIndexedImplicitBackend< ValueType >::~vtkIndexedImplicitBackend ( )

Member Function Documentation

◆ operator()()

template<typename ValueType>
ValueType vtkIndexedImplicitBackend< ValueType >::operator() ( vtkIdType idx) const

Indexing operation for the indexed array respecting the backend expectations of vtkImplicitArray

◆ getMemorySize()

template<typename ValueType>
unsigned long vtkIndexedImplicitBackend< ValueType >::getMemorySize ( ) const

Returns the smallest integer memory size in KiB needed to store the array.

Used to implement GetActualMemorySize on vtkIndexedImplicitBackend.

◆ GetBaseArray()

template<typename ValueType>
vtkDataArray * vtkIndexedImplicitBackend< ValueType >::GetBaseArray ( ) const

Get the original base array used for value lookup.

◆ GetIndexArray()

template<typename ValueType>
vtkDataArray * vtkIndexedImplicitBackend< ValueType >::GetIndexArray ( ) const

Get the original index array used for indirection.

◆ GetMapTuples()

template<typename ValueType>
bool vtkIndexedImplicitBackend< ValueType >::GetMapTuples ( ) const

Get if the indexed array is mapping tuples or values.


The documentation for this class was generated from the following file: