VTK  9.5.20251120
vtkIndexedArray.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// Funded by CEA, DAM, DIF, F-91297 Arpajon, France
4#ifndef vtkIndexedArray_h
5#define vtkIndexedArray_h
6
7#ifdef VTK_INDEXED_ARRAY_INSTANTIATING
8#define VTK_IMPLICIT_VALUERANGE_INSTANTIATING
9#include "vtkDataArrayPrivate.txx"
10#endif
11
12#include "vtkCommonCoreModule.h" // for export macro
13#include "vtkImplicitArray.h"
14#include "vtkIndexedImplicitBackend.h" // for the array backend
15
16#ifdef VTK_INDEXED_ARRAY_INSTANTIATING
17#undef VTK_IMPLICIT_VALUERANGE_INSTANTIATING
18#endif
19
20#include <vector>
21
55
56VTK_ABI_NAMESPACE_BEGIN
57template <typename T>
60VTK_ABI_NAMESPACE_END
61
62#endif // vtkIndexedArray_h
63
64#ifdef VTK_INDEXED_ARRAY_INSTANTIATING
65
66#define VTK_INSTANTIATE_INDEXED_ARRAY(ValueType) \
67 VTK_ABI_NAMESPACE_BEGIN \
68 template class VTKCOMMONCORE_EXPORT \
69 vtkImplicitArray<vtkIndexedImplicitBackend<ValueType>, vtkArrayTypes::VTK_INDEXED_ARRAY>; \
70 VTK_ABI_NAMESPACE_END \
71 namespace vtkDataArrayPrivate \
72 { \
73 VTK_ABI_NAMESPACE_BEGIN \
74 VTK_INSTANTIATE_VALUERANGE_ARRAYTYPE( \
75 VTK_WRAP_TEMPLATE( \
76 vtkImplicitArray<vtkIndexedImplicitBackend<ValueType>, vtkArrayTypes::VTK_INDEXED_ARRAY>), \
77 double) \
78 VTK_ABI_NAMESPACE_END \
79 }
80
81#elif defined(VTK_USE_EXTERN_TEMPLATE)
82#ifndef VTK_INDEXED_ARRAY_TEMPLATE_EXTERN
83#define VTK_INDEXED_ARRAY_TEMPLATE_EXTERN
84#ifdef _MSC_VER
85#pragma warning(push)
86// The following is needed when the vtkIndexedArray is declared
87// dllexport and is used from another class in vtkCommonCore
88#pragma warning(disable : 4910) // extern and dllexport incompatible
89#endif
90VTK_ABI_NAMESPACE_BEGIN
92 extern template class VTKCOMMONCORE_EXPORT vtkImplicitArray, vtkIndexedImplicitBackend,
94#ifdef _MSC_VER
95#pragma warning(pop)
96#endif
97VTK_ABI_NAMESPACE_END
98#endif // VTK_INDEXED_ARRAY_TEMPLATE_EXTERN
99// The following clause is only for MSVC 2008 and 2010
100#elif defined(_MSC_VER) && !defined(VTK_BUILD_SHARED_LIBS)
101#pragma warning(push)
102// C4091: 'extern ' : ignored on left of 'int' when no variable is declared
103#pragma warning(disable : 4091)
104
105// Compiler-specific extension warning.
106#pragma warning(disable : 4231)
107
108// We need to disable warning 4910 and do an extern dllexport
109// anyway. When deriving new arrays from an
110// instantiation of this template the compiler does an explicit
111// instantiation of the base class. From outside the vtkCommon
112// library we block this using an extern dllimport instantiation.
113// For classes inside vtkCommon we should be able to just do an
114// extern instantiation, but VS 2008 complains about missing
115// definitions. We cannot do an extern dllimport inside vtkCommon
116// since the symbols are local to the dll. An extern dllexport
117// seems to be the only way to convince VS 2008 to do the right
118// thing, so we just disable the warning.
119#pragma warning(disable : 4910) // extern and dllexport incompatible
120
121// Use an "extern explicit instantiation" to give the class a DLL
122// interface. This is a compiler-specific extension.
123VTK_ABI_NAMESPACE_BEGIN
125 extern template class VTKCOMMONCORE_EXPORT vtkImplicitArray, vtkIndexedImplicitBackend,
127
128#pragma warning(pop)
129
130VTK_ABI_NAMESPACE_END
131#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 allowing one to use a subset of a given data array,...
vtkImplicitArray< vtkIndexedImplicitBackend< T >, vtkArrayTypes::VTK_INDEXED_ARRAY > vtkIndexedArray
A utility alias for creating a wrapper array around an existing array and reindexing its components.
#define vtkInstantiateSecondOrderWithParameterTemplateMacro(decl0, decl1, par)
Definition vtkType.h:445
@ VTK_INDEXED_ARRAY
Definition vtkType.h:94
#define vtkExternSecondOrderWithParameterTemplateMacro(decl0, decl1, par)
Definition vtkType.h:495