VTK  9.5.20250802
vtkTypedDataArray.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
24#ifndef vtkTypedDataArray_h
25#define vtkTypedDataArray_h
26
27#include "vtkGenericDataArray.h"
28
29#include "vtkCommonCoreModule.h" // For export macro
30#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_5_0
31#include "vtkTypeTraits.h" // For type metadata
32
33VTK_ABI_NAMESPACE_BEGIN
34template <class Scalar>
36
37template <class Scalar>
39 "This class has been made obsolete by the newer vtkGenericDataArray.") vtkTypedDataArray
40 : public vtkGenericDataArray<vtkTypedDataArray<Scalar>, Scalar>
41{
43
44public:
46 typedef typename Superclass::ValueType ValueType;
47
52
56 Iterator Begin();
57
61 Iterator End();
62
66 enum
67 {
69 };
70
80
84 int GetDataType() const override;
85
89 int GetDataTypeSize() const override;
90
94 virtual void SetTypedTuple(vtkIdType i, const ValueType* t) = 0;
95
100 virtual void InsertTypedTuple(vtkIdType i, const ValueType* t) = 0;
101
106
110 virtual ValueType GetValue(vtkIdType idx) const = 0;
111
116
121 virtual void SetValue(vtkIdType idx, ValueType value) = 0;
122
126 virtual void GetTypedTuple(vtkIdType idx, ValueType* t) const = 0;
127
132
136 virtual void InsertValue(vtkIdType idx, ValueType v) = 0;
137
138 virtual ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const;
139 virtual void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType v);
140
144 int GetArrayType() const override { return vtkAbstractArray::TypedDataArray; }
145
146 // Reintroduced as pure virtual since the base vtkGenericDataArray method
147 // requires new allocation/resize APIs, though existing MappedDataArrays
148 // would just use the vtkDataArray-level virtuals.
149 vtkTypeBool Allocate(vtkIdType size, vtkIdType ext = 1000) override = 0;
150 vtkTypeBool Resize(vtkIdType numTuples) override = 0;
151
152protected:
155
160 virtual bool AllocateTuples(vtkIdType numTuples);
161
166 virtual bool ReallocateTuples(vtkIdType numTuples);
167
168private:
169 vtkTypedDataArray(const vtkTypedDataArray&) = delete;
170 void operator=(const vtkTypedDataArray&) = delete;
171
172 friend class vtkGenericDataArray<vtkTypedDataArray<Scalar>, Scalar>;
173};
174
175// Declare vtkArrayDownCast implementations for typed containers:
177
178// Included here to resolve chicken/egg issue with container/iterator:
179VTK_ABI_NAMESPACE_END
180#include "vtkTypedDataArrayIterator.h" // For iterator
181
182VTK_ABI_NAMESPACE_BEGIN
183template <class Scalar>
185{
186 return Iterator(this, 0);
187}
188
189template <class Scalar>
191{
192 return Iterator(this, this->MaxId + 1);
193}
194
195VTK_ABI_NAMESPACE_END
196#include "vtkTypedDataArray.txx"
197
198#endif // vtkTypedDataArray_h
199
200#ifdef VTK_TYPED_VALUERANGE_INSTANTIATING
201
202#define VTK_INSTANTIATE_TYPEDARRAY_VALUERANGE_VALUETYPE(ValueType) \
203 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkTypedDataArray<ValueType>, double)
204
205#elif defined(VTK_USE_EXTERN_TEMPLATE) // VTK_IMPLICIT_VALUERANGE_INSTANTIATING
206
207#ifndef VTK_IMPLICIT_TEMPLATE_EXTERN
208#define VTK_IMPLICIT_TEMPLATE_EXTERN
209#ifdef _MSC_VER
210#pragma warning(push)
211// The following is needed when the following is declared
212// dllexport and is used from another class in vtkCommonCore
213#pragma warning(disable : 4910) // extern and dllexport incompatible
214#endif
215
216#define VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(ValueType) \
217 VTK_DECLARE_VALUERANGE_ARRAYTYPE(vtkTypedDataArray<ValueType>, double)
218
219namespace vtkDataArrayPrivate
220{
221VTK_ABI_NAMESPACE_BEGIN
222VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(char)
223VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(signed char)
224VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(short)
225VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(int)
226VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(long)
227VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(long long)
228VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(unsigned char)
229VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(unsigned short)
230VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(unsigned int)
231VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(unsigned long)
232VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(unsigned long long)
233VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(float)
234VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE(double)
235VTK_ABI_NAMESPACE_END
236}
237
238#undef VTK_DECLARE_TYPED_ARRAY_VALUERANGE_VALUETYPE
239
240#ifdef _MSC_VER
241#pragma warning(pop)
242#endif
243#endif // VTK_IMPLICIT_TEMPLATE_EXTERN
244
245#endif // VTK_TYPED_VALUERANGE_INSTANTIATING
246
247// VTK-HeaderTest-Exclude: vtkTypedDataArray.h
Abstract superclass for all arrays.
Base interface for all typed vtkDataArray subclasses.
STL-style random access iterator for vtkTypedDataArrays.
Extend vtkDataArray with abstract type-specific API.
vtkTypeBool Allocate(vtkIdType size, vtkIdType ext=1000) override=0
Allocate memory for this array.
Iterator Begin()
Return an iterator initialized to the first element of the data.
virtual void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType v)
virtual bool ReallocateTuples(vtkIdType numTuples)
Needed for vtkGenericDataArray API, but just aborts.
static vtkTypedDataArray< Scalar > * FastDownCast(vtkAbstractArray *source)
Perform a fast, safe cast from a vtkAbstractArray to a vtkTypedDataArray.
int GetDataTypeSize() const override
Return the size of the element type in bytes.
virtual bool AllocateTuples(vtkIdType numTuples)
Needed for vtkGenericDataArray API, but just aborts.
virtual ValueType & GetValueReference(vtkIdType idx)=0
Get a reference to the scalar value at a particular index.
virtual ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
Superclass::ValueType ValueType
int GetArrayType() const override
Method for type-checking in FastDownCast implementations.
virtual vtkIdType InsertNextTypedTuple(const ValueType *t)=0
Insert (memory allocation performed) the tuple onto the end of the array.
Iterator End()
Return an iterator initialized to first element past the end of the data.
vtkTypedDataArrayIterator< ValueType > Iterator
Typedef to a suitable iterator class.
virtual vtkIdType InsertNextValue(ValueType v)=0
Insert data at the end of the array.
virtual void InsertTypedTuple(vtkIdType i, const ValueType *t)=0
Insert (memory allocation performed) the tuple into the ith location in the array.
vtkTemplateTypeMacro(vtkTypedDataArray< Scalar >, GenericDataArrayType)
virtual ValueType GetValue(vtkIdType idx) const =0
Get the data at a particular index.
~vtkTypedDataArray() override
virtual void SetValue(vtkIdType idx, ValueType value)=0
Set the data at a particular index.
vtkTypeBool Resize(vtkIdType numTuples) override=0
Resize the array to the requested number of tuples and preserve data.
virtual void SetTypedTuple(vtkIdType i, const ValueType *t)=0
Set the tuple value at the ith location in the array.
virtual void GetTypedTuple(vtkIdType idx, ValueType *t) const =0
Copy the tuple value into a user-provided array.
virtual void InsertValue(vtkIdType idx, ValueType v)=0
Insert data at a specified position in the array.
int GetDataType() const override
Return the VTK data type held by this array.
Template defining traits of native types used by VTK.
int vtkTypeBool
Definition vtkABI.h:64
#define vtkArrayDownCast_TemplateFastCastMacro(ArrayT)
Same as vtkArrayDownCast_FastCastMacro, but treats ArrayT as a single-parameter template (the paramet...
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_DEPRECATED_IN_9_5_0(reason)
int vtkIdType
Definition vtkType.h:332