VTK  9.7.1
Portals.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-FileCopyrightText: Copyright (c) Kitware, Inc.
3 // SPDX-FileCopyrightText: Copyright 2012 Sandia Corporation.
4 // SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov
5 
6 #ifndef vtkmlib_Portals_h
7 #define vtkmlib_Portals_h
8 
9 #include "PortalTraits.h"
10 #include "vtkAcceleratorsVTKmCoreModule.h"
11 #include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_7_0
12 #include "vtkmConfigCore.h" //required for general viskores setup
13 
14 VTK_ABI_NAMESPACE_BEGIN
15 class vtkDataArray;
16 class vtkPoints;
17 VTK_ABI_NAMESPACE_END
18 
19 #include <viskores/cont/internal/IteratorFromArrayPortal.h>
20 
21 namespace tovtkm
22 {
23 VTK_ABI_NAMESPACE_BEGIN
24 
25 template <typename Type, typename VTKDataArrayType_>
26 class VTK_DEPRECATED_IN_9_7_0("No longer needed") VISKORES_ALWAYS_EXPORT vtkArrayPortal
27 {
28  static const int NUM_COMPONENTS = viskores::VecTraits<Type>::NUM_COMPONENTS;
29 
30 public:
31  typedef VTKDataArrayType_ VTKDataArrayType;
34 
35  VISKORES_EXEC_CONT
37 
38  VISKORES_CONT
39  vtkArrayPortal(VTKDataArrayType* array, viskores::Id size);
40 
41  VISKORES_SUPPRESS_EXEC_WARNINGS
42  VISKORES_EXEC_CONT
43  viskores::Id GetNumberOfValues() const { return this->Size; }
44 
45  VISKORES_SUPPRESS_EXEC_WARNINGS
46  VISKORES_EXEC_CONT
47  inline ValueType Get(viskores::Id index) const;
48 
49  VISKORES_SUPPRESS_EXEC_WARNINGS
50  VISKORES_EXEC_CONT
51  inline void Set(viskores::Id index, const ValueType& value) const;
52 
53  typedef viskores::cont::internal::IteratorFromArrayPortal<vtkArrayPortal> IteratorType;
54 
55  VISKORES_CONT
56  IteratorType GetIteratorBegin() const { return IteratorType(*this, 0); }
57 
58  VISKORES_CONT
59  IteratorType GetIteratorEnd() const { return IteratorType(*this, this->Size); }
60 
61  VISKORES_CONT
62  VTKDataArrayType* GetVtkData() const { return this->VTKData; }
63 
64 private:
65  VTKDataArrayType* VTKData;
66  viskores::Id Size;
67 };
68 
69 template <typename Type>
70 class VTK_DEPRECATED_IN_9_7_0("No longer needed") VISKORES_ALWAYS_EXPORT vtkPointsPortal
71 {
72  static const int NUM_COMPONENTS = viskores::VecTraits<Type>::NUM_COMPONENTS;
73 
74 public:
77 
78  VISKORES_EXEC_CONT
80 
81  VISKORES_CONT
82  vtkPointsPortal(vtkPoints* points, viskores::Id size);
83 
84  VISKORES_SUPPRESS_EXEC_WARNINGS
85  VISKORES_EXEC_CONT
86  viskores::Id GetNumberOfValues() const { return this->Size; }
87 
88  VISKORES_SUPPRESS_EXEC_WARNINGS
89  VISKORES_EXEC_CONT
90  inline ValueType Get(viskores::Id index) const;
91 
92  VISKORES_SUPPRESS_EXEC_WARNINGS
93  VISKORES_EXEC_CONT
94  inline void Set(viskores::Id index, const ValueType& value) const;
95 
96  typedef viskores::cont::internal::IteratorFromArrayPortal<vtkPointsPortal> IteratorType;
97 
98  VISKORES_CONT
99  IteratorType GetIteratorBegin() const { return IteratorType(*this, 0); }
100 
101  VISKORES_CONT
102  IteratorType GetIteratorEnd() const { return IteratorType(*this, this->Size); }
103 
104  VISKORES_CONT
105  vtkPoints* GetVtkData() const { return Points; }
106 
107 private:
108  vtkPoints* Points;
109  ComponentType* Array;
110  viskores::Id Size;
111 };
112 VTK_ABI_NAMESPACE_END
113 }
114 
115 #ifndef vtkmlib_Portals_cxx
116 #include <viskores/cont/internal/ArrayPortalFromIterators.h>
117 namespace tovtkm
118 {
119 VTK_ABI_NAMESPACE_BEGIN
120 // T extern template instantiations
121 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
122  vtkPointsPortal<viskores::Vec<viskores::Float32, 3> const>;
123 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
124  vtkPointsPortal<viskores::Vec<viskores::Float64, 3> const>;
125 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
126  vtkPointsPortal<viskores::Vec<viskores::Float32, 3>>;
127 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
128  vtkPointsPortal<viskores::Vec<viskores::Float64, 3>>;
129 VTK_ABI_NAMESPACE_END
130 }
131 
132 #endif // defined vtkmlib_Portals_cxx
133 
134 #include "Portals.hxx"
135 #endif // vtkmlib_Portals_h
136 /* VTK-HeaderTest-Exclude: Portals.h */
typename vtkPortalTraits< Type >::Type ValueType
Definition: Portals.h:75
viskores::cont::internal::IteratorFromArrayPortal< vtkPointsPortal > IteratorType
Definition: Portals.h:96
viskores::cont::internal::IteratorFromArrayPortal< vtkArrayPortal > IteratorType
Definition: Portals.h:53
VISKORES_CONT IteratorType GetIteratorBegin() const
Definition: Portals.h:99
typename vtkPortalTraits< Type >::ComponentType ComponentType
Definition: Portals.h:33
VISKORES_SUPPRESS_EXEC_WARNINGS VISKORES_EXEC_CONT viskores::Id GetNumberOfValues() const
Definition: Portals.h:43
VISKORES_CONT IteratorType GetIteratorBegin() const
Definition: Portals.h:56
VISKORES_CONT IteratorType GetIteratorEnd() const
Definition: Portals.h:59
VISKORES_CONT VTKDataArrayType * GetVtkData() const
Definition: Portals.h:62
typename vtkPortalTraits< Type >::ComponentType ComponentType
Definition: Portals.h:76
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
VISKORES_CONT vtkPoints * GetVtkData() const
Definition: Portals.h:105
VISKORES_SUPPRESS_EXEC_WARNINGS VISKORES_EXEC_CONT viskores::Id GetNumberOfValues() const
Definition: Portals.h:86
typename std::remove_const< T >::type ComponentType
Definition: PortalTraits.h:28
#define VTK_DEPRECATED_IN_9_7_0(reason)
VISKORES_CONT IteratorType GetIteratorEnd() const
Definition: Portals.h:102
VTKDataArrayType_ VTKDataArrayType
Definition: Portals.h:31
represent and manipulate 3D points
Definition: vtkPoints.h:30
typename vtkPortalTraits< Type >::Type ValueType
Definition: Portals.h:32