VTK  9.5.20251117
vtkStridedArray.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
3#ifndef vtkStridedArray_h
4#define vtkStridedArray_h
5
6#ifdef VTK_STRIDED_ARRAY_INSTANTIATING
7#define VTK_IMPLICIT_VALUERANGE_INSTANTIATING
8#include "vtkDataArrayPrivate.txx"
9#endif
10
11#include "vtkCommonCoreModule.h" // for export macro
12#include "vtkImplicitArray.h"
13#include "vtkStridedImplicitBackend.h" // for the array backend
14
15#ifdef VTK_STRIDED_ARRAY_INSTANTIATING
16#undef VTK_IMPLICIT_VALUERANGE_INSTANTIATING
17#endif
18
71VTK_ABI_NAMESPACE_BEGIN
72template <typename T>
75VTK_ABI_NAMESPACE_END
76
77#endif // vtkStridedArray_h
78
79#ifdef VTK_STRIDED_ARRAY_INSTANTIATING
80
81#define VTK_INSTANTIATE_STRIDED_ARRAY(ValueType) \
82 VTK_ABI_NAMESPACE_BEGIN \
83 template class VTKCOMMONCORE_EXPORT \
84 vtkImplicitArray<vtkStridedImplicitBackend<ValueType>, vtkArrayTypes::VTK_STRIDED_ARRAY>; \
85 VTK_ABI_NAMESPACE_END \
86 namespace vtkDataArrayPrivate \
87 { \
88 VTK_ABI_NAMESPACE_BEGIN \
89 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE( \
90 VTK_WRAP_TEMPLATE( \
91 vtkImplicitArray<vtkStridedImplicitBackend<ValueType>, vtkArrayTypes::VTK_STRIDED_ARRAY>), \
92 double) \
93 VTK_ABI_NAMESPACE_END \
94 }
95
96#elif defined(VTK_USE_EXTERN_TEMPLATE)
97#ifndef VTK_STRIDED_ARRAY_TEMPLATE_EXTERN
98#define VTK_STRIDED_ARRAY_TEMPLATE_EXTERN
99#ifdef _MSC_VER
100#pragma warning(push)
101// The following is needed when the vtkStridedArray is declared
102// dllexport and is used from another class in vtkCommonCore
103#pragma warning(disable : 4910) // extern and dllexport incompatible
104#endif
105VTK_ABI_NAMESPACE_BEGIN
107 extern template class VTKCOMMONCORE_EXPORT vtkImplicitArray, vtkStridedImplicitBackend,
109#ifdef _MSC_VER
110#pragma warning(pop)
111#endif
112VTK_ABI_NAMESPACE_END
113#endif // VTK_STRIDED_ARRAY_TEMPLATE_EXTERN
114// The following clause is only for MSVC 2008 and 2010
115#elif defined(_MSC_VER) && !defined(VTK_BUILD_SHARED_LIBS)
116#pragma warning(push)
117// C4091: 'extern ' : ignored on left of 'int' when no variable is declared
118#pragma warning(disable : 4091)
119
120// Compiler-specific extension warning.
121#pragma warning(disable : 4231)
122
123// We need to disable warning 4910 and do an extern dllexport
124// anyway. When deriving new arrays from an
125// instantiation of this template the compiler does an explicit
126// instantiation of the base class. From outside the vtkCommon
127// library we block this using an extern dllimport instantiation.
128// For classes inside vtkCommon we should be able to just do an
129// extern instantiation, but VS 2008 complains about missing
130// definitions. We cannot do an extern dllimport inside vtkCommon
131// since the symbols are local to the dll. An extern dllexport
132// seems to be the only way to convince VS 2008 to do the right
133// thing, so we just disable the warning.
134#pragma warning(disable : 4910) // extern and dllexport incompatible
135
136// Use an "extern explicit instantiation" to give the class a DLL
137// interface. This is a compiler-specific extension.
138VTK_ABI_NAMESPACE_BEGIN
140 extern template class VTKCOMMONCORE_EXPORT vtkImplicitArray, vtkStridedImplicitBackend,
142
143#pragma warning(pop)
144
145VTK_ABI_NAMESPACE_END
146#endif
A read only array class that wraps an implicit function from integers to any value type supported by ...
A backend for the vtkImplicitArray framework to give a strided view on a buffer.
#define vtkInstantiateSecondOrderWithParameterTemplateMacro(decl0, decl1, par)
Definition vtkType.h:445
@ VTK_STRIDED_ARRAY
Definition vtkType.h:96
#define vtkExternSecondOrderWithParameterTemplateMacro(decl0, decl1, par)
Definition vtkType.h:495