VTK  9.3.1
vtkCompositeImplicitBackend.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 vtkCompositeImplicitBackend_h
5#define vtkCompositeImplicitBackend_h
6
41#include "vtkCommonCoreModule.h"
42#include "vtkCompiler.h" // For VTK_USE_EXTERN_TEMPLATE
43#include "vtkType.h" // For vtkExternTemplateMacro
44
45#include <memory>
46#include <vector>
47
48VTK_ABI_NAMESPACE_BEGIN
49class vtkDataArray;
50template <typename ValueType>
51class VTKCOMMONCORE_EXPORT vtkCompositeImplicitBackend final
52{
53public:
59 vtkCompositeImplicitBackend(const std::vector<vtkDataArray*>& arrays);
61
69 ValueType operator()(int idx) const;
70
71protected:
72 struct Internals;
73 std::unique_ptr<Internals> Internal;
74};
75VTK_ABI_NAMESPACE_END
76
77#endif // vtkCompositeImplicitBackend_h
78
79#if defined(VTK_COMPOSITE_BACKEND_INSTANTIATING)
80
81#define VTK_INSTANTIATE_COMPOSITE_BACKEND(ValueType) \
82 VTK_ABI_NAMESPACE_BEGIN \
83 template class VTKCOMMONCORE_EXPORT vtkCompositeImplicitBackend<ValueType>; \
84 VTK_ABI_NAMESPACE_END
85
86#elif defined(VTK_USE_EXTERN_TEMPLATE)
87
88#ifndef VTK_COMPOSITE_BACKEND_TEMPLATE_EXTERN
89#define VTK_COMPOSITE_BACKEND_TEMPLATE_EXTERN
90#ifdef _MSC_VER
91#pragma warning(push)
92#pragma warning(disable : 4910) // extern and dllexport incompatible
93#endif
94VTK_ABI_NAMESPACE_BEGIN
95vtkExternTemplateMacro(extern template class VTKCOMMONCORE_EXPORT vtkCompositeImplicitBackend);
96VTK_ABI_NAMESPACE_END
97#ifdef _MSC_VER
98#pragma warning(pop)
99#endif
100#endif // VTK_COMPOSITE_IMPLICIT_BACKEND_TEMPLATE_EXTERN
101
102#endif
A utility structure serving as a backend for composite arrays: an array composed of multiple arrays c...
vtkCompositeImplicitBackend(const std::vector< vtkDataArray * > &arrays)
Constructor for the backend.
std::unique_ptr< Internals > Internal
ValueType operator()(int idx) const
Indexing operator for the composite of the two arrays respecting the vtkImplicitArray expectations.
abstract superclass for arrays of numeric data
#define vtkExternTemplateMacro(decl)
A macro to declare extern templates for all numerical types.
Definition vtkType.h:410