VTK  9.0.1
vtkTypedDataArray.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkTypedDataArray.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
36 #ifndef vtkTypedDataArray_h
37 #define vtkTypedDataArray_h
38 
39 #include "vtkGenericDataArray.h"
40 
41 #include "vtkCommonCoreModule.h" // For export macro
42 #include "vtkTypeTraits.h" // For type metadata
43 
44 template <class Scalar>
46 
47 template <class Scalar>
48 class vtkTypedDataArray : public vtkGenericDataArray<vtkTypedDataArray<Scalar>, Scalar>
49 {
51 
52 public:
54  typedef typename Superclass::ValueType ValueType;
55 
60 
64  Iterator Begin();
65 
69  Iterator End();
70 
74  enum
75  {
77  };
78 
88 
92  int GetDataType() const override;
93 
97  int GetDataTypeSize() const override;
98 
102  virtual void SetTypedTuple(vtkIdType i, const ValueType* t) = 0;
103 
108  virtual void InsertTypedTuple(vtkIdType i, const ValueType* t) = 0;
109 
113  virtual vtkIdType InsertNextTypedTuple(const ValueType* t) = 0;
114 
118  virtual ValueType GetValue(vtkIdType idx) const = 0;
119 
123  virtual ValueType& GetValueReference(vtkIdType idx) = 0;
124 
129  virtual void SetValue(vtkIdType idx, ValueType value) = 0;
130 
134  virtual void GetTypedTuple(vtkIdType idx, ValueType* t) const = 0;
135 
139  virtual vtkIdType InsertNextValue(ValueType v) = 0;
140 
144  virtual void InsertValue(vtkIdType idx, ValueType v) = 0;
145 
146  virtual ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const;
147  virtual void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType v);
148 
152  int GetArrayType() const override { return vtkAbstractArray::TypedDataArray; }
153 
154  // Reintroduced as pure virtual since the base vtkGenericDataArray method
155  // requires new allocation/resize APIs, though existing MappedDataArrays
156  // would just use the vtkDataArray-level virtuals.
157  vtkTypeBool Allocate(vtkIdType size, vtkIdType ext = 1000) override = 0;
158  vtkTypeBool Resize(vtkIdType numTuples) override = 0;
159 
160 protected:
162  ~vtkTypedDataArray() override;
163 
168  virtual bool AllocateTuples(vtkIdType numTuples);
169 
174  virtual bool ReallocateTuples(vtkIdType numTuples);
175 
176 private:
177  vtkTypedDataArray(const vtkTypedDataArray&) = delete;
178  void operator=(const vtkTypedDataArray&) = delete;
179 
180  friend class vtkGenericDataArray<vtkTypedDataArray<Scalar>, Scalar>;
181 };
182 
183 // Declare vtkArrayDownCast implementations for typed containers:
185 
186 // Included here to resolve chicken/egg issue with container/iterator:
187 #include "vtkTypedDataArrayIterator.h" // For iterator
188 
189 template <class Scalar>
191 {
192  return Iterator(this, 0);
193 }
194 
195 template <class Scalar>
197 {
198  return Iterator(this, this->MaxId + 1);
199 }
200 
201 #include "vtkTypedDataArray.txx"
202 
203 #endif // vtkTypedDataArray_h
204 
205 // VTK-HeaderTest-Exclude: vtkTypedDataArray.h
vtkTypedDataArray::InsertNextTypedTuple
virtual vtkIdType InsertNextTypedTuple(const ValueType *t)=0
Insert (memory allocation performed) the tuple onto the end of the array.
vtkTypedDataArray::ReallocateTuples
virtual bool ReallocateTuples(vtkIdType numTuples)
Needed for vtkGenericDataArray API, but just aborts.
vtkTypeTraits
Template defining traits of native types used by VTK.
Definition: vtkTypeTraits.h:30
vtkTypedDataArray::FastDownCast
static vtkTypedDataArray< Scalar > * FastDownCast(vtkAbstractArray *source)
Perform a fast, safe cast from a vtkAbstractArray to a vtkTypedDataArray.
vtkTypedDataArray::GetTypedTuple
virtual void GetTypedTuple(vtkIdType idx, ValueType *t) const =0
Copy the tuple value into a user-provided array.
vtkX3D::value
@ value
Definition: vtkX3D.h:226
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkTypedDataArray::InsertNextValue
virtual vtkIdType InsertNextValue(ValueType v)=0
Insert data at the end of the array.
vtkTypedDataArray
Extend vtkDataArray with abstract type-specific API.
Definition: vtkTypedDataArray.h:48
vtkTypedDataArray::~vtkTypedDataArray
~vtkTypedDataArray() override
vtkGenericDataArray
Base interface for all typed vtkDataArray subclasses.
Definition: vtkGenericDataArray.h:79
vtkTypedDataArray::vtkTypedDataArray
vtkTypedDataArray()
vtkTypedDataArray::InsertValue
virtual void InsertValue(vtkIdType idx, ValueType v)=0
Insert data at a specified position in the array.
vtkTypedDataArray::GetDataType
int GetDataType() const override
Return the VTK data type held by this array.
vtkArrayDownCast_TemplateFastCastMacro
vtkArrayDownCast_TemplateFastCastMacro(vtkTypedDataArray)
vtkTypedDataArray::GetArrayType
int GetArrayType() const override
Method for type-checking in FastDownCast implementations.
Definition: vtkTypedDataArray.h:152
vtkTypedDataArray::SetTypedComponent
virtual void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType v)
vtkTypedDataArray::InsertTypedTuple
virtual void InsertTypedTuple(vtkIdType i, const ValueType *t)=0
Insert (memory allocation performed) the tuple into the ith location in the array.
vtkTypeTraits.h
vtkTypedDataArray::AllocateTuples
virtual bool AllocateTuples(vtkIdType numTuples)
Needed for vtkGenericDataArray API, but just aborts.
vtkTypedDataArray::GetTypedComponent
virtual ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
vtkTypedDataArray::GetValueReference
virtual ValueType & GetValueReference(vtkIdType idx)=0
Get a reference to the scalar value at a particular index.
vtkGenericDataArray.h
vtkTypedDataArray::Resize
vtkTypeBool Resize(vtkIdType numTuples) override=0
Resize the array to the requested number of tuples and preserve data.
vtkX3D::size
@ size
Definition: vtkX3D.h:259
vtkTypedDataArray::End
Iterator End()
Return an iterator initialized to first element past the end of the data.
Definition: vtkTypedDataArray.h:196
vtkTypedDataArray::Begin
Iterator Begin()
Return an iterator initialized to the first element of the data.
Definition: vtkTypedDataArray.h:190
vtkTypedDataArray::VTK_DATA_TYPE
@ VTK_DATA_TYPE
Definition: vtkTypedDataArray.h:76
vtkTypedDataArray::GetDataTypeSize
int GetDataTypeSize() const override
Return the size of the element type in bytes.
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:75
vtkAbstractArray::TypedDataArray
@ TypedDataArray
Definition: vtkAbstractArray.h:639
vtkTypedDataArray::Allocate
vtkTypeBool Allocate(vtkIdType size, vtkIdType ext=1000) override=0
Allocate memory for this array.
vtkTypedDataArray::GetValue
virtual ValueType GetValue(vtkIdType idx) const =0
Get the data at a particular index.
vtkTypedDataArrayIterator.h
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:959
vtkTypedDataArrayIterator
STL-style random access iterator for vtkTypedDataArrays.
Definition: vtkTypedDataArray.h:45
vtkTypedDataArray::SetTypedTuple
virtual void SetTypedTuple(vtkIdType i, const ValueType *t)=0
Set the tuple value at the ith location in the array.
vtkAbstractArray::MaxId
vtkIdType MaxId
Definition: vtkAbstractArray.h:678
vtkTypedDataArray::ValueType
Superclass::ValueType ValueType
Definition: vtkTypedDataArray.h:54
vtkTypedDataArray::Iterator
vtkTypedDataArrayIterator< ValueType > Iterator
Typedef to a suitable iterator class.
Definition: vtkTypedDataArray.h:59
vtkTypedDataArray::SetValue
virtual void SetValue(vtkIdType idx, ValueType value)=0
Set the data at a particular index.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkTypedDataArray::vtkTemplateTypeMacro
vtkTemplateTypeMacro(vtkTypedDataArray< Scalar >, GenericDataArrayType)