VTK  9.3.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 "vtkmConfigCore.h" //required for general vtkm setup
12 
13 VTK_ABI_NAMESPACE_BEGIN
14 class vtkDataArray;
15 class vtkPoints;
16 VTK_ABI_NAMESPACE_END
17 
18 #include <vtkm/cont/internal/IteratorFromArrayPortal.h>
19 
20 namespace tovtkm
21 {
22 VTK_ABI_NAMESPACE_BEGIN
23 
24 template <typename Type, typename VTKDataArrayType_>
25 class VTKM_ALWAYS_EXPORT vtkArrayPortal
26 {
27  static const int NUM_COMPONENTS = vtkm::VecTraits<Type>::NUM_COMPONENTS;
28 
29 public:
30  typedef VTKDataArrayType_ VTKDataArrayType;
33 
34  VTKM_EXEC_CONT
36 
37  VTKM_CONT
38  vtkArrayPortal(VTKDataArrayType* array, vtkm::Id size);
39 
40  VTKM_SUPPRESS_EXEC_WARNINGS
41  VTKM_EXEC_CONT
42  vtkm::Id GetNumberOfValues() const { return this->Size; }
43 
44  VTKM_SUPPRESS_EXEC_WARNINGS
45  VTKM_EXEC_CONT
46  inline ValueType Get(vtkm::Id index) const;
47 
48  VTKM_SUPPRESS_EXEC_WARNINGS
49  VTKM_EXEC_CONT
50  inline void Set(vtkm::Id index, const ValueType& value) const;
51 
52  typedef vtkm::cont::internal::IteratorFromArrayPortal<vtkArrayPortal> IteratorType;
53 
54  VTKM_CONT
55  IteratorType GetIteratorBegin() const { return IteratorType(*this, 0); }
56 
57  VTKM_CONT
58  IteratorType GetIteratorEnd() const { return IteratorType(*this, this->Size); }
59 
60  VTKM_CONT
61  VTKDataArrayType* GetVtkData() const { return this->VTKData; }
62 
63 private:
64  VTKDataArrayType* VTKData;
65  vtkm::Id Size;
66 };
67 
68 template <typename Type>
69 class VTKM_ALWAYS_EXPORT vtkPointsPortal
70 {
71  static const int NUM_COMPONENTS = vtkm::VecTraits<Type>::NUM_COMPONENTS;
72 
73 public:
76 
77  VTKM_EXEC_CONT
79 
80  VTKM_CONT
82 
83  VTKM_SUPPRESS_EXEC_WARNINGS
84  VTKM_EXEC_CONT
85  vtkm::Id GetNumberOfValues() const { return this->Size; }
86 
87  VTKM_SUPPRESS_EXEC_WARNINGS
88  VTKM_EXEC_CONT
89  inline ValueType Get(vtkm::Id index) const;
90 
91  VTKM_SUPPRESS_EXEC_WARNINGS
92  VTKM_EXEC_CONT
93  inline void Set(vtkm::Id index, const ValueType& value) const;
94 
95  typedef vtkm::cont::internal::IteratorFromArrayPortal<vtkPointsPortal> IteratorType;
96 
97  VTKM_CONT
98  IteratorType GetIteratorBegin() const { return IteratorType(*this, 0); }
99 
100  VTKM_CONT
101  IteratorType GetIteratorEnd() const { return IteratorType(*this, this->Size); }
102 
103  VTKM_CONT
104  vtkPoints* GetVtkData() const { return Points; }
105 
106 private:
107  vtkPoints* Points;
108  ComponentType* Array;
109  vtkm::Id Size;
110 };
111 VTK_ABI_NAMESPACE_END
112 }
113 
114 #ifndef vtkmlib_Portals_cxx
115 #include <vtkm/cont/internal/ArrayPortalFromIterators.h>
116 namespace tovtkm
117 {
118 VTK_ABI_NAMESPACE_BEGIN
119 // T extern template instantiations
120 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
121  vtkPointsPortal<vtkm::Vec<vtkm::Float32, 3> const>;
122 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
123  vtkPointsPortal<vtkm::Vec<vtkm::Float64, 3> const>;
124 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
125  vtkPointsPortal<vtkm::Vec<vtkm::Float32, 3>>;
126 extern template class VTKACCELERATORSVTKMCORE_TEMPLATE_EXPORT
127  vtkPointsPortal<vtkm::Vec<vtkm::Float64, 3>>;
128 VTK_ABI_NAMESPACE_END
129 }
130 
131 #endif // defined vtkmlib_Portals_cxx
132 
133 #include "Portals.hxx"
134 #endif // vtkmlib_Portals_h
135 /* VTK-HeaderTest-Exclude: Portals.h */
typename vtkPortalTraits< Type >::Type ValueType
Definition: Portals.h:74
VTKM_CONT VTKDataArrayType * GetVtkData() const
Definition: Portals.h:61
VTKM_CONT IteratorType GetIteratorBegin() const
Definition: Portals.h:55
typename vtkPortalTraits< Type >::ComponentType ComponentType
Definition: Portals.h:32
vtkm::cont::internal::IteratorFromArrayPortal< vtkArrayPortal > IteratorType
Definition: Portals.h:52
typename vtkPortalTraits< Type >::ComponentType ComponentType
Definition: Portals.h:75
vtkm::cont::internal::IteratorFromArrayPortal< vtkPointsPortal > IteratorType
Definition: Portals.h:95
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC_CONT vtkm::Id GetNumberOfValues() const
Definition: Portals.h:42
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
VTKM_CONT vtkPoints * GetVtkData() const
Definition: Portals.h:104
VTKM_CONT IteratorType GetIteratorEnd() const
Definition: Portals.h:58
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC_CONT vtkm::Id GetNumberOfValues() const
Definition: Portals.h:85
VTKM_CONT IteratorType GetIteratorEnd() const
Definition: Portals.h:101
typename std::remove_const< T >::type ComponentType
Definition: PortalTraits.h:28
VTKDataArrayType_ VTKDataArrayType
Definition: Portals.h:30
represent and manipulate 3D points
Definition: vtkPoints.h:28
VTKM_CONT IteratorType GetIteratorBegin() const
Definition: Portals.h:98
typename vtkPortalTraits< Type >::Type ValueType
Definition: Portals.h:31