Array Refactoring: Difference between revisions

From ParaQ Wiki
Jump to navigationJump to search
Line 26: Line 26:
*#* Worst possible approach, there are methods in vtkAbstractArray (GetVoidPointer()) that are totally incompatible with sparse arrays.
*#* Worst possible approach, there are methods in vtkAbstractArray (GetVoidPointer()) that are totally incompatible with sparse arrays.
*# vtkArray and vtkAbstractArray remain apart.
*# vtkArray and vtkAbstractArray remain apart.
*#* vtkFieldData would store vtkArray as a distinct type.  Unfortunately, this GetArray() is already taken by vtkDataArray.
*#* vtkFieldData would store vtkArray as a distinct type.  Unfortunately, GetArray() is already taken by vtkDataArray.
*#* Wouldn't work with Get/SetInputArrayToProcess().
*#* vtkAbstractArray derivatives HAVE-A vtkDenseArray to eliminate duplicate implementations.
*# vtkAbstractArray derives from vtkArray.
*# vtkAbstractArray derives from vtkArray.
*#* Implementing vtkArray in current vtkAbstractArray implementations should be straightforward.
*#* Implementing vtkArray in current vtkAbstractArray implementations should be straightforward.
*#* vtkFieldData would have to provide methods that return vtkArray.  Same problems with GetArray().
*#* vtkFieldData would have to provide methods that return vtkArray.  Same problems with GetArray().
*#* Implies changes to Get/SetInputArrayToProcess().
*#* Implies changes to Get/SetInputArrayToProcess().

Revision as of 13:57, 8 April 2009

Overview

Now that we have N-Way Array Data Structures, it would be ideal if we could use them as attributes in data objects. This will likely involve some tricky work to somehow merge the vtkAbstractArray- and vtkArray- hierarchies.

Recent Work

  • Merged vtkFactoredArrayData / vtkFactoredArrayDataAlgorithm into vtkArrayData / vtkArrayDataAlgorithm.
  • Added vtkArray::GetName() and vtkArray::SetName().
  • vtkDenseArray memory management.
    • vtkDenseArray::MemoryBlock.
    • vtkDenseArray::StaticMemoryBlock.
    • vtkDenseArray::HeapMemoryBlock.
  • vtkSparseICSArray.
    • Changes the way coordinates are stored, one contiguous array of coordinates per dimension, instead of a single contiguous array for all dimensions.
    • Implements value sorting.
    • Could probably replace the current vtkSparseArray implementation.

Proposed Work

  • Provide iterators, memory layout functionality in vtkDenseArray to support in-situ work.
  • Support vtkArray as attributes. Some different approaches:
    1. vtkArray derives from vtkAbstractArray.
      • Worst possible approach, there are methods in vtkAbstractArray (GetVoidPointer()) that are totally incompatible with sparse arrays.
    2. vtkArray and vtkAbstractArray remain apart.
      • vtkFieldData would store vtkArray as a distinct type. Unfortunately, GetArray() is already taken by vtkDataArray.
      • vtkAbstractArray derivatives HAVE-A vtkDenseArray to eliminate duplicate implementations.
    3. vtkAbstractArray derives from vtkArray.
      • Implementing vtkArray in current vtkAbstractArray implementations should be straightforward.
      • vtkFieldData would have to provide methods that return vtkArray. Same problems with GetArray().
      • Implies changes to Get/SetInputArrayToProcess().