VTK  9.7.1
vtkAOSDataArrayTemplate.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
22 #ifndef vtkAOSDataArrayTemplate_h
23 #define vtkAOSDataArrayTemplate_h
24 
25 #include "vtkBuffer.h" // For storage buffer.
26 #include "vtkBuild.h" // For VTK_BUILD_SHARED_LIBS
27 #include "vtkCommonCoreModule.h" // For export macro
28 #include "vtkCompiler.h" // for VTK_USE_EXTERN_TEMPLATE
29 #include "vtkDataArrayMeta.h" // For vtkDataArrayMeta::ComponentType
30 #include "vtkGenericDataArray.h"
31 
32 namespace vtk
33 {
34 namespace detail
35 {
36 VTK_ABI_NAMESPACE_BEGIN
37 template <typename ArrayType, ComponentIdType TupleSize>
38 struct TupleRange;
39 template <typename ArrayType, ComponentIdType TupleSize,
40  typename ForceValueTypeForVtkDataArray = double>
41 struct ValueRange;
42 VTK_ABI_NAMESPACE_END
43 } // namespace detail
44 } // namespace vtk
45 
46 // The export macro below makes no sense, but is necessary for older compilers
47 // when we export instantiations of this class from vtkCommonCore.
48 VTK_ABI_NAMESPACE_BEGIN
49 template <class ValueTypeT>
50 class VTKCOMMONCORE_EXPORT vtkAOSDataArrayTemplate
51 #ifndef __VTK_WRAP__
52  : public vtkGenericDataArray<vtkAOSDataArrayTemplate<ValueTypeT>, ValueTypeT,
53  vtkArrayTypes::VTK_AOS_DATA_ARRAY>
54 {
57 #else // Fake the superclass for the wrappers.
58  : public vtkDataArray
59 {
60  using GenericDataArrayType = vtkDataArray;
61 #endif
62 
63  // Friendship required by vtkDataArray(Value/Tuple)Range so that it can access the memory buffer
64  // which is required to avoid accessing raw pointers that might no longer be valid.
65  template <typename ArrayType, vtk::ComponentIdType TupleSize>
66  friend struct vtk::detail::TupleRange;
67  template <typename ArrayType, vtk::ComponentIdType TupleSize,
68  typename ForceValueTypeForVtkDataArray>
69  friend struct vtk::detail::ValueRange;
70 
71 public:
73  vtkTemplateTypeMacro(SelfType, GenericDataArrayType);
74 #ifndef __VTK_WRAP__
75  using typename Superclass::ArrayTypeTag;
76  using typename Superclass::DataTypeTag;
77  using typename Superclass::ValueType;
78 #else
79  using ValueType = ValueTypeT;
80 #endif
81 
83  {
85  VTK_DATA_ARRAY_DELETE = vtkAbstractArray::VTK_DATA_ARRAY_DELETE,
86  VTK_DATA_ARRAY_ALIGNED_FREE = vtkAbstractArray::VTK_DATA_ARRAY_ALIGNED_FREE,
87  VTK_DATA_ARRAY_USER_DEFINED = vtkAbstractArray::VTK_DATA_ARRAY_USER_DEFINED
88  };
89 
90  static vtkAOSDataArrayTemplate* New();
91 
95  ValueType GetValue(vtkIdType valueIdx) const
96  VTK_EXPECTS(0 <= valueIdx && valueIdx < GetNumberOfValues())
97  {
98  return this->Buffer->GetBuffer()[valueIdx];
99  }
100 
105  VTK_EXPECTS(0 <= valueIdx && valueIdx < GetNumberOfValues())
106  {
107  this->Buffer->GetBuffer()[valueIdx] = value;
108  }
109 
111 
114  void GetTypedTuple(vtkIdType tupleIdx, ValueType* tuple) const
115  VTK_EXPECTS(0 <= tupleIdx && tupleIdx < GetNumberOfTuples())
116  {
117  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents;
118  std::copy(this->Buffer->GetBuffer() + valueIdx,
119  this->Buffer->GetBuffer() + valueIdx + this->NumberOfComponents, tuple);
120  }
122 
124 
127  void SetTypedTuple(vtkIdType tupleIdx, const ValueType* tuple)
128  VTK_EXPECTS(0 <= tupleIdx && tupleIdx < GetNumberOfTuples())
129  {
130  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents;
131  std::copy(tuple, tuple + this->NumberOfComponents, this->Buffer->GetBuffer() + valueIdx);
132  }
134 
135  void GetIntegerTuple(vtkIdType tupleIdx, vtkTypeInt64* tuple)
136  VTK_EXPECTS(0 <= tupleIdx && tupleIdx < GetNumberOfTuples()) override
137  {
138  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents;
139  for (vtkIdType ii = 0; ii < this->NumberOfComponents; ++ii)
140  {
141  tuple[ii] = static_cast<vtkTypeInt64>((this->Buffer->GetBuffer())[valueIdx + ii]);
142  }
143  }
144 
145  void SetIntegerTuple(vtkIdType tupleIdx, vtkTypeInt64* tuple)
146  VTK_EXPECTS(0 <= tupleIdx && tupleIdx < GetNumberOfTuples()) override
147  {
148  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents;
149  for (vtkIdType ii = 0; ii < this->NumberOfComponents; ++ii)
150  {
151  this->Buffer->GetBuffer()[valueIdx + ii] = static_cast<ValueType>(tuple[ii]);
152  }
153  }
154 
155  void GetUnsignedTuple(vtkIdType tupleIdx, vtkTypeUInt64* tuple)
156  VTK_EXPECTS(0 <= tupleIdx && tupleIdx < GetNumberOfTuples()) override
157  {
158  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents;
159  for (vtkIdType ii = 0; ii < this->NumberOfComponents; ++ii)
160  {
161  tuple[ii] = static_cast<vtkTypeUInt64>((this->Buffer->GetBuffer())[valueIdx + ii]);
162  }
163  }
164 
165  void SetUnsignedTuple(vtkIdType tupleIdx, vtkTypeUInt64* tuple)
166  VTK_EXPECTS(0 <= tupleIdx && tupleIdx < GetNumberOfTuples()) override
167  {
168  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents;
169  for (vtkIdType ii = 0; ii < this->NumberOfComponents; ++ii)
170  {
171  this->Buffer->GetBuffer()[valueIdx + ii] = static_cast<ValueType>(tuple[ii]);
172  }
173  }
174 
178  ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
179  VTK_EXPECTS(0 <= tupleIdx && GetNumberOfComponents() * tupleIdx + comp < GetNumberOfValues())
180  VTK_EXPECTS(0 <= comp && comp < GetNumberOfComponents())
181  {
182  return this->Buffer->GetBuffer()[this->NumberOfComponents * tupleIdx + comp];
183  }
184 
186 
189  void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value)
190  VTK_EXPECTS(0 <= tupleIdx && GetNumberOfComponents() * tupleIdx + comp < GetNumberOfValues())
191  VTK_EXPECTS(0 <= comp && comp < GetNumberOfComponents())
192  {
193  const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents + comp;
194  this->SetValue(valueIdx, value);
195  }
197 
199 
202  void FillTypedComponent(int compIdx, ValueType value) override;
204 
206 
209  void FillValue(ValueType value) override;
210  void Fill(double value) override;
212 
214 
219  ValueType* WritePointer(vtkIdType valueIdx, vtkIdType numValues);
220  VTK_DEPRECATED_IN_9_7_0("Use SetNumberOfValues() and GetPointer() on AOS arrays")
221  void* WriteVoidPointer(vtkIdType valueIdx, vtkIdType numValues) override;
223 
225 
232  ValueType* GetPointer(vtkIdType valueIdx);
233  void* GetVoidPointer(vtkIdType valueIdx) override;
235 
241 #ifdef __VTK_WRAP__
242  vtkAbstractBuffer* GetBuffer() { return this->Buffer; }
243 #else
244  vtkBuffer<ValueTypeT>* GetBuffer() { return this->Buffer; }
245 #endif // __VTK_WRAP__
246 
247 #ifndef __VTK_WRAP__
248 
254  void SetBuffer(vtkBuffer<ValueType>* buffer, bool updateMaxId = false);
255 #endif
256 
264  void SetBuffer(vtkAbstractBuffer* buffer, bool updateMaxId = false);
265 
267 
281  void SetArray(VTK_ZEROCOPY ValueType* array, vtkIdType size, int save, int deleteMethod);
282  void SetArray(VTK_ZEROCOPY ValueType* array, vtkIdType size, int save);
283  void SetVoidArray(void* array, vtkIdType size, int save) override;
284  void SetVoidArray(void* array, vtkIdType size, int save, int deleteMethod) override;
286 
293  void SetArrayFreeFunction(void (*callback)(void*)) override;
294 
295  // Overridden for optimized implementations:
296  void SetTuple(vtkIdType tupleIdx, const float* tuple) override;
297  void SetTuple(vtkIdType tupleIdx, const double* tuple) override;
298  // MSVC doesn't like 'using' here (error C2487). Just forward instead:
299  // using Superclass::SetTuple;
300  void SetTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray* source) override
301  {
302  this->Superclass::SetTuple(dstTupleIdx, srcTupleIdx, source);
303  }
304  void InsertTuple(vtkIdType tupleIdx, const float* source) override;
305  void InsertTuple(vtkIdType tupleIdx, const double* source) override;
306  // MSVC doesn't like 'using' here (error C2487). Just forward instead:
307  // using Superclass::InsertTuple;
308  void InsertTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray* source) override
309  {
310  this->Superclass::InsertTuple(dstTupleIdx, srcTupleIdx, source);
311  }
312  void InsertComponent(vtkIdType tupleIdx, int compIdx, double value) override;
313  vtkIdType InsertNextTuple(const float* tuple) override;
314  vtkIdType InsertNextTuple(const double* tuple) override;
315  // MSVC doesn't like 'using' here (error C2487). Just forward instead:
316  // using Superclass::InsertNextTuple;
318  {
319  return this->Superclass::InsertNextTuple(srcTupleIdx, source);
320  }
321  void GetTuple(vtkIdType tupleIdx, double* tuple) override;
322  double* GetTuple(vtkIdType tupleIdx) override;
323 
334  VTK_DEPRECATED_IN_9_7_0("Use DataChanged() instead")
335  void DataElementChanged(vtkIdType) { this->DataChanged(); }
336 
341  typedef ValueType* Iterator;
342  Iterator Begin() { return Iterator(this->GetPointer(0)); }
343  Iterator End() { return Iterator(this->GetPointer(this->MaxId + 1)); }
344 
345  VTK_DEPRECATED_IN_9_7_0("Use vtk::DataArrayValueRange, or the array directly")
346  VTK_NEWINSTANCE vtkArrayIterator* NewIterator() override;
347  bool HasStandardMemoryLayout() const override { return true; }
348  void ShallowCopy(vtkDataArray* other) override;
350 
351  // Reimplemented for efficiency:
352  void InsertTuples(
353  vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray* source) override;
354  // MSVC doesn't like 'using' here (error C2487). Just forward instead:
355  // using Superclass::InsertTuples;
356  void InsertTuples(vtkIdList* dstIds, vtkIdList* srcIds, vtkAbstractArray* source) override
357  {
358  this->Superclass::InsertTuples(dstIds, srcIds, source);
359  }
361  vtkIdType dstStart, vtkIdList* srcIds, vtkAbstractArray* source) override
362  {
363  this->Superclass::InsertTuplesStartingAt(dstStart, srcIds, source);
364  }
365 
366 #ifdef __VTK_WRAP__
367  // Add APIs inherited from vtkGenericDataArray, which is excluded from wrapping
369 #endif
370 
371 protected:
373  ~vtkAOSDataArrayTemplate() override;
374 
379  VTK_DEPRECATED_IN_9_7_0("No longer needed")
380  bool AllocateTuples(vtkIdType numTuples);
381 
386  bool ReallocateTuples(vtkIdType numTuples);
387 
389 
390 private:
392  void operator=(const vtkAOSDataArrayTemplate&) = delete;
393 
395 };
396 
397 // Declare vtkArrayDownCast implementations for AoS containers:
399 
400 VTK_ABI_NAMESPACE_END
401 
402 // This macro is used by the subclasses to create dummy
403 // declarations for these functions such that the wrapper
404 // can see them.
405 #define vtkCreateWrappedArrayInterface(T) \
406  vtkCreateWrappedArrayReadInterface(T); \
407  vtkCreateWrappedArrayWriteInterface(T); \
408  T* WritePointer(vtkIdType id, vtkIdType number); \
409  T* GetPointer(vtkIdType id); \
410  void SetArray(VTK_ZEROCOPY T* array, vtkIdType size, int save); \
411  void SetArray(VTK_ZEROCOPY T* array, vtkIdType size, int save, int deleteMethod); \
412  vtkAbstractBuffer* GetBuffer(); \
413  void SetBuffer(vtkAbstractBuffer* buffer, bool updateMaxId = false)
414 
415 #endif // header guard
416 
417 // This portion must be OUTSIDE the include blockers. This is used to tell
418 // libraries other than vtkCommonCore that instantiations of
419 // vtkAOSDataArrayTemplate can be found externally. This prevents each library
420 // from instantiating these on their own.
421 #ifdef VTK_AOS_DATA_ARRAY_TEMPLATE_INSTANTIATING
422 #define VTK_AOS_DATA_ARRAY_TEMPLATE_INSTANTIATE(T) \
423  namespace vtkDataArrayPrivate \
424  { \
425  VTK_ABI_NAMESPACE_BEGIN \
426  VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<T>, double); \
427  VTK_ABI_NAMESPACE_END \
428  } \
429  VTK_ABI_NAMESPACE_BEGIN \
430  template class VTKCOMMONCORE_EXPORT vtkAOSDataArrayTemplate<T>; \
431  VTK_ABI_NAMESPACE_END
432 // We only provide these specializations for the 64-bit integer types, since
433 // other types can reuse the double-precision mechanism in
434 // vtkDataArray::GetRange without losing precision.
435 #define VTK_AOS_DATA_ARRAY_TEMPLATE_INSTANTIATE_VALUERANGE(T) \
436  namespace vtkDataArrayPrivate \
437  { \
438  VTK_ABI_NAMESPACE_BEGIN \
439  VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<T>, T); \
440  VTK_ABI_NAMESPACE_END \
441  }
442 // MinGW GCC does not reliably export inline member functions (such as IsTypeOf
443 // defined by vtkTemplateTypeMacro above) when using template class __declspec(dllexport)
444 // with extern template. This guard is applied here rather than in other VTK places
445 // with #elif defined(VTK_USE_EXTERN_TEMPLATE) because only these three DataArrayTemplate
446 // classes combine extern template with vtkTemplateTypeMacro inline functions in the class
447 // body; other VTK template classes using this pattern (e.g. vtkConstantArray,
448 // vtkAffineArray) use vtkImplicitArrayTypeMacro instead and were not observed with this
449 // MinGW issue.
450 #elif defined(VTK_USE_EXTERN_TEMPLATE) && !defined(__MINGW32__)
451 #ifndef VTK_AOS_DATA_ARRAY_TEMPLATE_EXTERN
452 #define VTK_AOS_DATA_ARRAY_TEMPLATE_EXTERN
453 #ifdef _MSC_VER
454 #pragma warning(push)
455 // The following is needed when the vtkAOSDataArrayTemplate is declared
456 // dllexport and is used from another class in vtkCommonCore
457 #pragma warning(disable : 4910) // extern and dllexport incompatible
458 #endif
459 VTK_ABI_NAMESPACE_BEGIN
460 vtkExternTemplateMacro(extern template class VTKCOMMONCORE_EXPORT vtkAOSDataArrayTemplate);
461 VTK_ABI_NAMESPACE_END
462 
463 namespace vtkDataArrayPrivate
464 {
465 VTK_ABI_NAMESPACE_BEGIN
466 
467 // These are instantiated in vtkGenericDataArrayValueRange${i}.cxx
469 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned long>, unsigned long)
470 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<long long>, long long)
471 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned long long>, unsigned long long)
472 // These are instantiated in vtkFloatArray.cxx, vtkDoubleArray.cxx, etc
473 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<float>, double)
474 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<double>, double)
475 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<char>, double)
476 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<signed char>, double)
477 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned char>, double)
478 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<short>, double)
479 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned short>, double)
480 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<int>, double)
481 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned int>, double)
482 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<long>, double)
483 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned long>, double)
484 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<long long>, double)
485 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkAOSDataArrayTemplate<unsigned long long>, double)
486 
487 VTK_ABI_NAMESPACE_END
488 } // namespace vtkDataArrayPrivate
489 
490 #ifdef _MSC_VER
491 #pragma warning(pop)
492 #endif
493 #endif // VTK_AOS_DATA_ARRAY_TEMPLATE_EXTERN
494 
495 // The following clause is only for MSVC
496 #elif defined(_MSC_VER) && !defined(VTK_BUILD_SHARED_LIBS)
497 #pragma warning(push)
498 
499 // C4091: 'extern ' : ignored on left of 'int' when no variable is declared
500 #pragma warning(disable : 4091)
501 
502 // Compiler-specific extension warning.
503 #pragma warning(disable : 4231)
504 
505 // We need to disable warning 4910 and do an extern dllexport
506 // anyway. When deriving vtkCharArray and other types from an
507 // instantiation of this template the compiler does an explicit
508 // instantiation of the base class. From outside the vtkCommon
509 // library we block this using an extern dllimport instantiation.
510 // For classes inside vtkCommon we should be able to just do an
511 // extern instantiation, but VS complains about missing
512 // definitions. We cannot do an extern dllimport inside vtkCommon
513 // since the symbols are local to the dll. An extern dllexport
514 // seems to be the only way to convince VS to do the right
515 // thing, so we just disable the warning.
516 #pragma warning(disable : 4910) // extern and dllexport incompatible
517 
518 // Use an "extern explicit instantiation" to give the class a DLL
519 // interface. This is a compiler-specific extension.
520 VTK_ABI_NAMESPACE_BEGIN
521 vtkInstantiateTemplateMacro(extern template class VTKCOMMONCORE_EXPORT vtkAOSDataArrayTemplate);
522 VTK_ABI_NAMESPACE_END
523 
524 #pragma warning(pop)
525 
526 #endif
527 
528 // VTK-HeaderTest-Exclude: vtkAOSDataArrayTemplate.h
int ComponentIdType
void InsertTuplesStartingAt(vtkIdType dstStart, vtkIdList *srcIds, vtkAbstractArray *source) override
Copy the tuples indexed in srcIds from the source array to the tuple locations starting at index dstS...
void SetUnsignedTuple(vtkIdType tupleIdx, vtkTypeUInt64 *tuple) override
Get/set the data at tupleIdx by filling in a user-provided array of unsigned integers.
vtkBuffer< ValueTypeT > * GetBuffer()
Return the underlying buffer object.
virtual void ShallowCopy(vtkDataArray *other)
Create a shallow copy of other into this, if possible.
#define vtkCreateGenericWrappedArrayInterface(T)
void SetIntegerTuple(vtkIdType tupleIdx, vtkTypeInt64 *tuple) override
Get/set the data at tupleIdx by filling in a user-provided array of integers.
int GetNumberOfComponents() const
Set/Get the dimension (n) of the components.
void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, vtkAbstractArray *source) override
See documentation from parent class.
Abstract superclass for all arrays.
void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value)
Set component comp of the tuple at tupleIdx to value.
ValueType GetValue(vtkIdType valueIdx) const
Get the value at valueIdx.
#define VTK_DECLARE_VALUERANGE_ARRAYTYPE(ArrayType, ValueType)
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
int vtkIdType
Definition: vtkType.h:363
Base interface for all typed vtkDataArray subclasses.
ValueType * WritePointer(vtkIdType valueIdx, vtkIdType numValues)
Default implementation raises a runtime error.
GetAPIType< ArrayType, ForceValueTypeForVtkDataArray > ValueType
This file contains a variety of metaprogramming constructs for working with vtkDataArrays.
vtkIdType GetNumberOfValues() const
Get the total number of values in the array.
virtual void Fill(double value)
Fill all values of a data array with a specified value.
void InsertTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
See documentation from parent class.
void SetArrayFreeFunction(void(*callback)(void *)) override
Default implementation raises a runtime error.
vtkInstantiateTemplateMacro(extern template class VTKCOMMONCORE_EXPORT vtkArrayIteratorTemplate)
internal storage class used by vtkSOADataArrayTemplate, vtkAOSDataArrayTemplate, and others...
Definition: vtkBuffer.h:31
void save(Archiver &ar, const std::string &str, const unsigned int version)
Array-Of-Structs implementation of vtkGenericDataArray.
list of point or cell ids
Definition: vtkIdList.h:25
ValueType * GetPointer(vtkIdType valueIdx)
Default implementation raises a runtime error.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
void SetValue(vtkIdType valueIdx, ValueType value)
Set the value at valueIdx to value.
void GetTypedTuple(vtkIdType tupleIdx, ValueType *tuple) const
Copy the tuple at tupleIdx into tuple.
void InsertComponent(vtkIdType tupleIdx, int compIdx, double value) override
Insert value at the location specified by tupleIdx and compIdx.
Abstract superclass to iterate over elements in an vtkAbstractArray.
vtkIdType InsertNextTuple(vtkIdType srcTupleIdx, vtkAbstractArray *source) override
See documentation from parent class.
vtkIdType GetNumberOfTuples() const
Get the number of complete tuples (a component group) in the array.
vtkTemplateTypeMacro(SelfType, vtkDataArray)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_NEWINSTANCE
ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
Get component comp of the tuple at tupleIdx.
virtual void FillValue(ValueType value)
Set all the values in array to value.
#define VTK_ZEROCOPY
Abstract base class for vtkBuffer providing buffer protocol support.
double * GetTuple(vtkIdType tupleIdx) override
Get the data tuple at tupleIdx.
vtkArrayDownCast_TemplateFastCastMacro(vtkAOSDataArrayTemplate)
std::integral_constant< int, vtkArrayTypes::VTK_ABSTRACT_ARRAY > ArrayTypeTag
void DataChanged() override
Tell the array explicitly that the data has changed.
void SetTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
See documentation from parent class.
virtual void FillTypedComponent(int compIdx, ValueType value)
Set component comp of all tuples to value.
void SetTypedTuple(vtkIdType tupleIdx, const ValueType *tuple)
Set this array's tuple at tupleIdx to the values in tuple.
ValueType * Iterator
Legacy support for array-of-structs value iteration.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
void SetValue(vtkIdType valueIdx, ValueType value)
Set the value at valueIdx to value.
virtual void ShallowCopy(vtkAbstractArray *src)
This method will copy the data from the source array to this array.
vtkIdType InsertNextTuple(vtkIdType srcTupleIdx, vtkAbstractArray *source) override
Insert the tuple from srcTupleIdx in the source array at the end of this array.
void GetUnsignedTuple(vtkIdType tupleIdx, vtkTypeUInt64 *tuple) override
Get/set the data at tupleIdx by filling in a user-provided array of unsigned integers.
void GetIntegerTuple(vtkIdType tupleIdx, vtkTypeInt64 *tuple) override
Get/set the data at tupleIdx by filling in a user-provided array of integers.
void SetTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
Set the tuple at dstTupleIdx in this array to the tuple at srcTupleIdx in the source array...
#define VTK_EXPECTS(x)
#define VTK_DEPRECATED_IN_9_7_0(reason)
void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, vtkAbstractArray *source) override
Copy the tuples indexed in srcIds from the source array to the tuple locations indexed by dstIds in t...
void SetVoidArray(void *, vtkIdType, int) override
Default implementation raises a runtime error.
void InsertTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
Insert the tuple at srcTupleIdx in the source array into this array at dstTupleIdx.
vtkExternTemplateMacro(extern template class VTKCOMMONCORE_EXPORT vtkAOSDataArrayTemplate)