17 #ifndef vtkmlib_Portals_h
18 #define vtkmlib_Portals_h
21 #include "vtkAcceleratorsVTKmModule.h"
22 #include "vtkmConfig.h"
29 #include <vtkm/cont/internal/IteratorFromArrayPortal.h>
33 template <
typename Type,
typename VTKDataArrayType_>
36 static const int NUM_COMPONENTS = vtkm::VecTraits<Type>::NUM_COMPONENTS;
52 VTKM_SUPPRESS_EXEC_WARNINGS
54 inline ValueType Get(vtkm::Id
index)
const;
56 inline void Set(vtkm::Id
index,
const ValueType&
value)
const;
58 typedef vtkm::cont::internal::IteratorFromArrayPortal<vtkArrayPortal>
77 VTKDataArrayType* VTKData;
83 static const int NUM_COMPONENTS = vtkm::VecTraits<Type>::NUM_COMPONENTS;
98 VTKM_SUPPRESS_EXEC_WARNINGS
100 inline ValueType Get(vtkm::Id
index)
const;
102 inline void Set(vtkm::Id
index,
const ValueType&
value)
const;
104 typedef vtkm::cont::internal::IteratorFromArrayPortal<vtkPointsPortal>
124 ComponentType* Array;
129 #define VTKM_TEMPLATE_EXPORT_ArrayPortal(T, S) \
130 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
131 vtkArrayPortal<const T, S<T>>; \
132 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT vtkArrayPortal<T, S<T>>; \
133 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
134 vtkArrayPortal<const vtkm::Vec<T, 2>, S<T>>; \
135 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
136 vtkArrayPortal<vtkm::Vec<T, 2>, S<T>>; \
137 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
138 vtkArrayPortal<const vtkm::Vec<T, 3>, S<T>>; \
139 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
140 vtkArrayPortal<vtkm::Vec<T, 3>, S<T>>; \
141 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
142 vtkArrayPortal<const vtkm::Vec<T, 4>, S<T>>; \
143 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
144 vtkArrayPortal<vtkm::Vec<T, 4>, S<T>>;
146 #define VTKM_TEMPLATE_IMPORT_ArrayPortal(T, S) \
147 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT vtkArrayPortal<const T, S<T>>; \
148 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT vtkArrayPortal<T, S<T>>; \
149 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
150 vtkArrayPortal<const vtkm::Vec<T, 2>, S<T>>; \
151 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
152 vtkArrayPortal<vtkm::Vec<T, 2>, S<T>>; \
153 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
154 vtkArrayPortal<const vtkm::Vec<T, 3>, S<T>>; \
155 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
156 vtkArrayPortal<vtkm::Vec<T, 3>, S<T>>; \
157 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
158 vtkArrayPortal<const vtkm::Vec<T, 4>, S<T>>; \
159 template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT \
160 vtkArrayPortal<vtkm::Vec<T, 4>, S<T>>;
162 #ifndef vtkmlib_Portals_cxx
163 #include <vtkm/cont/internal/ArrayPortalFromIterators.h>
190 #if VTKM_SIZE_LONG_LONG == 8
198 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT
199 vtkPointsPortal<vtkm::Vec<vtkm::Float32, 3>
const>;
200 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT
201 vtkPointsPortal<vtkm::Vec<vtkm::Float64, 3>
const>;
202 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT
203 vtkPointsPortal<vtkm::Vec<vtkm::Float32, 3>>;
204 extern template class VTKACCELERATORSVTKM_TEMPLATE_EXPORT
205 vtkPointsPortal<vtkm::Vec<vtkm::Float64, 3>>;
208 #endif // defined vtkmlib_Portals_cxx
210 #include "Portals.hxx"
212 #endif // vtkmlib_Portals_h