55#ifndef vtkStridedArray_h
56#define vtkStridedArray_h
58#include "vtkCommonCoreModule.h"
63VTK_ABI_NAMESPACE_BEGIN
64template <
class ValueTypeT>
67 :
public vtkImplicitArray<vtkStridedImplicitBackend<ValueTypeT>, vtkArrayTypes::VTK_STRIDED_ARRAY>
69 using ImplicitArrayType =
82 using typename Superclass::ValueType;
92#if defined(__VTK_WRAP__) || defined(__WRAP_GCCXML__)
155#define vtkCreateStridedWrappedArrayInterface(T) \
156 vtkCreateImplicitWrappedArrayInterface(T); \
157 void ConstructBackend(const T* buffer, vtkIdType stride, int components, vtkIdType offset); \
158 void ConstructBackend(const T* buffer, vtkIdType stride, int components); \
159 void ConstructBackend(const T* buffer, vtkIdType stride); \
160 const T* GetBuffer() const; \
161 vtkIdType GetStride() const; \
162 vtkIdType GetOffset() const;
170#ifdef VTK_STRIDED_ARRAY_INSTANTIATING
171#define VTK_STRIDED_ARRAY_INSTANTIATE(T) \
172 namespace vtkDataArrayPrivate \
174 VTK_ABI_NAMESPACE_BEGIN \
175 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkStridedArray<T>, double); \
176 VTK_ABI_NAMESPACE_END \
178 VTK_ABI_NAMESPACE_BEGIN \
179 template class VTKCOMMONCORE_EXPORT vtkStridedArray<T>; \
180 VTK_ABI_NAMESPACE_END
184#define VTK_STRIDED_ARRAY_INSTANTIATE_VALUERANGE(T) \
185 namespace vtkDataArrayPrivate \
187 VTK_ABI_NAMESPACE_BEGIN \
188 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE(vtkStridedArray<T>, T); \
189 VTK_ABI_NAMESPACE_END \
191#elif defined(VTK_USE_EXTERN_TEMPLATE)
192#ifndef VTK_STRIDED_ARRAY_EXTERN
193#define VTK_STRIDED_ARRAY_EXTERN
198#pragma warning(disable : 4910)
200VTK_ABI_NAMESPACE_BEGIN
206VTK_ABI_NAMESPACE_BEGIN
237#elif defined(_MSC_VER) && !defined(VTK_BUILD_SHARED_LIBS)
241#pragma warning(disable : 4091)
244#pragma warning(disable : 4231)
257#pragma warning(disable : 4910)
261VTK_ABI_NAMESPACE_BEGIN
Abstract superclass for all arrays.
std::integral_constant< int, VTK_OPAQUE > DataTypeTag
std::integral_constant< int, vtkArrayTypes::VTK_ABSTRACT_ARRAY > ArrayTypeTag
std::shared_ptr< vtkStridedImplicitBackend< ValueTypeT > > GetBackend()
A utility array for wrapping a strided buffer in implicit arrays.
const ValueType * GetBuffer() const
Get the buffer of the strided backend.
void ConstructBackend(const ValueType *buffer, vtkIdType stride, int components, vtkIdType offset)
Set the parameters for the strided backend.
vtkIdType GetStride() const
Get the stride of the strided backend.
~vtkStridedArray() override=default
static vtkStridedArray< ValueType > * FastDownCast(vtkAbstractArray *source)
A faster alternative to SafeDownCast for downcasting vtkAbstractArrays.
vtkStridedArray()=default
static vtkStridedArray * New()
void ConstructBackend(const ValueType *buffer, vtkIdType stride, int components)
Set the parameters for the strided backend.
void ConstructBackend(const ValueType *buffer, vtkIdType stride)
Set the parameters for the strided backend.
vtkIdType GetOffset() const
Get the offset of the strided backend.
vtkImplicitArrayTypeMacro(SelfType, ImplicitArrayType)
vtkStridedArray< ValueTypeT > SelfType
#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.