VTK
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 =========================================================================*/
39 #ifndef vtkTypedDataArray_h
40 #define vtkTypedDataArray_h
41 
42 #include "vtkGenericDataArray.h"
43 
44 #include "vtkCommonCoreModule.h" // For export macro
45 #include "vtkTypeTraits.h" // For type metadata
46 
47 template <class Scalar> class vtkTypedDataArrayIterator;
48 
49 template <class Scalar>
51  public vtkGenericDataArray<vtkTypedDataArray<Scalar>, Scalar>
52 {
55 public:
57  typedef typename Superclass::ValueType ValueType;
58 
63 
67  Iterator Begin();
68 
72  Iterator End();
73 
78 
88 
92  int GetDataType() override;
93 
97  int GetDataTypeSize() override;
98 
104  void SetNumberOfValues(vtkIdType num) override;
105 
109  virtual void SetTypedTuple(vtkIdType i, const ValueType *t) = 0;
110 
115  virtual void InsertTypedTuple(vtkIdType i, const ValueType *t) = 0;
116 
120  virtual vtkIdType InsertNextTypedTuple(const ValueType *t) = 0;
121 
125  virtual ValueType GetValue(vtkIdType idx) const = 0;
126 
130  virtual ValueType& GetValueReference(vtkIdType idx) = 0;
131 
136  virtual void SetValue(vtkIdType idx, ValueType value) = 0;
137 
141  virtual void GetTypedTuple(vtkIdType idx, ValueType *t) const = 0;
142 
146  virtual vtkIdType InsertNextValue(ValueType v) = 0;
147 
151  virtual void InsertValue(vtkIdType idx, ValueType v) = 0;
152 
153  virtual ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const;
154  virtual void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType v);
155 
160 
161  // Reintroduced as pure virtual since the base vtkGenericDataArray method
162  // requires new allocation/resize APIs, though existing MappedDataArrays
163  // would just use the vtkDataArray-level virtuals.
164  vtkTypeBool Allocate(vtkIdType size, vtkIdType ext = 1000) override = 0;
165  vtkTypeBool Resize(vtkIdType numTuples) override = 0;
166 
167 protected:
169  ~vtkTypedDataArray() override;
170 
175  virtual bool AllocateTuples(vtkIdType numTuples);
176 
181  virtual bool ReallocateTuples(vtkIdType numTuples);
182 
183 private:
184  vtkTypedDataArray(const vtkTypedDataArray &) = delete;
185  void operator=(const vtkTypedDataArray &) = delete;
186 
187  friend class vtkGenericDataArray<vtkTypedDataArray<Scalar>, Scalar>;
188 };
189 
190 // Declare vtkArrayDownCast implementations for typed containers:
192 
193 // Included here to resolve chicken/egg issue with container/iterator:
194 #include "vtkTypedDataArrayIterator.h" // For iterator
195 
196 template <class Scalar> inline
198 {
199  return Iterator(this, 0);
200 }
201 
202 template <class Scalar> inline
204 {
205  return Iterator(this, this->MaxId + 1);
206 }
207 
208 #include "vtkTypedDataArray.txx"
209 
210 #endif //vtkTypedDataArray_h
211 
212 // 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.
vtkGenericDataArray< vtkTypedDataArray< Scalar >, Scalar >::ValueType
Scalar ValueType
Definition: vtkGenericDataArray.h:84
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:32
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
Definition: vtkX3D.h:220
vtkTypedDataArray::GetDataType
int GetDataType() override
Return the VTK data type held by this array.
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkTypedDataArray::GetDataTypeSize
int GetDataTypeSize() override
Return the size of the element type in bytes.
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:50
vtkTypedDataArray::~vtkTypedDataArray
~vtkTypedDataArray() override
vtkGenericDataArray
Base interface for all typed vtkDataArray subclasses.
Definition: vtkGenericDataArray.h:80
vtkTypedDataArray::vtkTypedDataArray
vtkTypedDataArray()
vtkTypedDataArray::InsertValue
virtual void InsertValue(vtkIdType idx, ValueType v)=0
Insert data at a specified position in the array.
vtkTypedDataArray::GetArrayType
int GetArrayType() override
Method for type-checking in FastDownCast implementations.
Definition: vtkTypedDataArray.h:159
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:825
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< vtkTypedDataArray< Scalar >, Scalar >::vtkTemplateTypeMacro
vtkTemplateTypeMacro(SelfType, vtkDataArray) enum
Compile time access to the VTK type identifier.
Definition: vtkGenericDataArray.h:85
vtkGenericDataArray.h
vtkTypedDataArray::Resize
vtkTypeBool Resize(vtkIdType numTuples) override=0
Resize the array to the requested number of tuples and preserve data.
vtkX3D::size
Definition: vtkX3D.h:253
vtkTypedDataArray::Begin
Iterator Begin()
Return an iterator initialized to the first element of the data.
vtkTypedDataArray::End
Iterator End()
Return an iterator initialized to first element past the end of the data.
Definition: vtkTypedDataArray.h:203
vtkTypedDataArray::VTK_DATA_TYPE
Definition: vtkTypedDataArray.h:77
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:78
vtkTypedDataArray::Iterator
vtkTemplateTypeMacro(vtkTypedDataArray< Scalar >, GenericDataArrayType) typedef typename Superclass typedef vtkTypedDataArrayIterator< ValueType > Iterator
Typedef to a suitable iterator class.
Definition: vtkTypedDataArray.h:56
vtkAbstractArray::TypedDataArray
Definition: vtkAbstractArray.h:647
vtkArrayDownCast_TemplateFastCastMacro
vtkArrayDownCast_TemplateFastCastMacro(vtkTypedDataArray) template< class Scalar > inline typename vtkTypedDataArray< Scalar >
Definition: vtkTypedDataArray.h:191
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
STL-style random access iterator for vtkTypedDataArrays.
Definition: vtkTypedDataArray.h:47
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:688
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::SetNumberOfValues
void SetNumberOfValues(vtkIdType num) override
Specify the number of values for this object to hold.