17 #ifndef vtkmlib_PortalTraits_h 18 #define vtkmlib_PortalTraits_h 20 #include "vtkmConfig.h" 22 #include <vtkm/Types.h> 23 #include <vtkm/internal/Assume.h> 25 #include <type_traits> 30 struct vtkPortalOfVecOfVecValues;
31 struct vtkPortalOfVecOfValues;
32 struct vtkPortalOfScalarValues;
47 template <
typename T,
int N>
52 using Type = vtkm::Vec<T, N>;
57 VTKM_ASSUME((i >= 0 && i < N));
63 VTKM_ASSUME((i >= 0 && i < N));
68 template <
typename T,
int N>
73 using Type = vtkm::Vec<T, N>;
78 VTKM_ASSUME((i >= 0 && i < N));
84 VTKM_ASSUME((i >= 0 && i < N));
89 template <
typename T,
int N,
int M>
92 using TagType = vtkPortalOfVecOfVecValues;
94 using Type = vtkm::Vec<vtkm::Vec<T, N>, M>;
97 static constexpr vtkm::IdComponent NUM_COMPONENTS_OUTER = M;
98 static constexpr vtkm::IdComponent NUM_COMPONENTS_INNER = N;
104 const vtkm::IdComponent j = i % N;
112 const vtkm::IdComponent j = i % N;
117 template <
typename T,
int N,
int M>
122 using Type = vtkm::Vec<vtkm::Vec<T, N>, M>;
125 static constexpr vtkm::IdComponent NUM_COMPONENTS_OUTER = M;
126 static constexpr vtkm::IdComponent NUM_COMPONENTS_INNER = N;
132 const vtkm::IdComponent j = i % N;
140 const vtkm::IdComponent j = i % N;
147 #endif // vtkmlib_PortalsTraits_h
typename std::remove_const< T >::type ComponentType
static void SetComponent(Type &t, vtkm::IdComponent i, const ComponentType &v)
typename std::remove_const< T >::type ComponentType
static ComponentType GetComponent(const Type &t, vtkm::IdComponent)
static ComponentType GetComponent(const Type &t, vtkm::IdComponent i)
vtkm::Vec< vtkm::Vec< T, N >, M > Type
static ComponentType GetComponent(const Type &t, vtkm::IdComponent i)
static constexpr vtkm::IdComponent NUM_COMPONENTS
static ComponentType GetComponent(const Type &t, vtkm::IdComponent i)
vtkPortalOfScalarValues TagType
static void SetComponent(Type &t, vtkm::IdComponent i, const ComponentType &v)
vtkPortalOfVecOfVecValues TagType
static void SetComponent(Type &t, vtkm::IdComponent i, const ComponentType &v)
static ComponentType GetComponent(const Type &t, vtkm::IdComponent i)
vtkPortalOfVecOfValues TagType
typename std::remove_const< T >::type ComponentType
typename std::remove_const< T >::type ComponentType
static void SetComponent(Type &t, vtkm::IdComponent i, const ComponentType &v)
static void SetComponent(Type &t, vtkm::IdComponent, const ComponentType &v)
vtkm::Vec< vtkm::Vec< T, N >, M > Type
vtkPortalOfVecOfValues TagType
typename std::remove_const< T >::type ComponentType
vtkPortalOfVecOfVecValues TagType