32#ifndef vtkCompositeArray_h
33#define vtkCompositeArray_h
35#include "vtkCommonCoreModule.h"
42VTK_ABI_NAMESPACE_BEGIN
43template <
class ValueTypeT>
47 vtkArrayTypes::VTK_COMPOSITE_ARRAY>
49 using ImplicitArrayType =
62 using typename Superclass::ValueType;
72#if defined(__VTK_WRAP__) || defined(__WRAP_GCCXML__)
121#define vtkCreateCompositeWrappedArrayInterface(T) \
122 vtkCreateImplicitWrappedArrayInterface(T); \
123 void ConstructBackend(vtkDataArrayCollection* arrays); \
124 vtkIdType GetNumberOfArrays(); \
125 vtkDataArray* GetArray(vtkIdType idx); \
126 vtkIdType GetOffset(vtkIdType idx);
130VTK_ABI_NAMESPACE_BEGIN
139template <
typename ValueTypeT>
141 const std::vector<vtkDataArray*>& arrays);
151#ifdef VTK_COMPOSITE_ARRAY_INSTANTIATING
152#define VTK_COMPOSITE_ARRAY_INSTANTIATE(T) \
153 namespace vtkDataArrayPrivate \
155 VTK_ABI_NAMESPACE_BEGIN \
156 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkCompositeArray<T>, double); \
157 VTK_ABI_NAMESPACE_END \
159 VTK_ABI_NAMESPACE_BEGIN \
160 template class VTKCOMMONCORE_EXPORT vtkCompositeArray<T>; \
161 VTK_ABI_NAMESPACE_END \
164 VTK_ABI_NAMESPACE_BEGIN \
165 template VTKCOMMONCORE_EXPORT vtkSmartPointer<vtkCompositeArray<T>> ConcatenateDataArrays( \
166 const std::vector<vtkDataArray*>& arrays); \
167 VTK_ABI_NAMESPACE_END \
172#define VTK_COMPOSITE_ARRAY_INSTANTIATE_VALUERANGE(T) \
173 namespace vtkDataArrayPrivate \
175 VTK_ABI_NAMESPACE_BEGIN \
176 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkCompositeArray<T>, T); \
177 VTK_ABI_NAMESPACE_END \
179#elif defined(VTK_USE_EXTERN_TEMPLATE)
180#ifndef VTK_COMPOSITE_ARRAY_EXTERN
181#define VTK_COMPOSITE_ARRAY_EXTERN
186#pragma warning(disable : 4910)
188VTK_ABI_NAMESPACE_BEGIN
194VTK_ABI_NAMESPACE_BEGIN
225#elif defined(_MSC_VER) && !defined(VTK_BUILD_SHARED_LIBS)
229#pragma warning(disable : 4091)
232#pragma warning(disable : 4231)
245#pragma warning(disable : 4910)
249VTK_ABI_NAMESPACE_BEGIN
Abstract superclass for all arrays.
std::integral_constant< int, VTK_OPAQUE > DataTypeTag
std::integral_constant< int, vtkArrayTypes::VTK_ABSTRACT_ARRAY > ArrayTypeTag
A utility array for concatenating arrays into an implicit array.
vtkCompositeArray< ValueTypeT > SelfType
static vtkCompositeArray * New()
static vtkCompositeArray< ValueType > * FastDownCast(vtkAbstractArray *source)
A faster alternative to SafeDownCast for downcasting vtkAbstractArrays.
void ConstructBackend(vtkDataArrayCollection *arrays)
Set the underlying arrays to use.
~vtkCompositeArray() override=default
vtkIdType GetNumberOfArrays()
Get the number of original arrays composing this composite array.
vtkImplicitArrayTypeMacro(SelfType, ImplicitArrayType)
vtkDataArray * GetArray(vtkIdType idx)
Get the original array at the given index.
vtkIdType GetOffset(vtkIdType idx)
Get the tuple offset of the array at the given index.
vtkCompositeArray()=default
maintain an ordered list of dataarray objects
Hold a reference to a vtkObjectBase instance.
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
vtkSmartPointer< vtkCompositeArray< ValueTypeT > > ConcatenateDataArrays(const std::vector< vtkDataArray * > &arrays)
#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_DECLARE_VALUERANGE_ARRAYTYPE(ArrayType, ValueType)
#define vtkCreateImplicitWrappedArrayInterface(T)
#define vtkExternTemplateMacro(decl)
A macro to declare extern templates for all numerical types.
#define vtkInstantiateTemplateMacro(decl)
A macro to instantiate a template over all numerical types.