VTK-m  2.0
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
vtkm::VecTraits< VecType > Struct Template Reference

The VecTraits class gives several static members that define how to use a given type as a vector. More...

#include <VecTraits.h>

Public Types

using ComponentType = typename VecType::ComponentType
 Type of the components in the vector. More...
 
using BaseComponentType = typename vtkm::VecTraits< ComponentType >::BaseComponentType
 Base component type in the vector. More...
 
using HasMultipleComponents = typename internal::VecTraitsMultipleComponentChooser< NUM_COMPONENTS >::Type
 A tag specifying whether this vector has multiple components (i.e. More...
 
using IsSizeStatic = vtkm::VecTraitsTagSizeStatic
 A tag specifying whether the size of this vector is known at compile time. More...
 
template<typename NewComponentType >
using ReplaceComponentType = VecTemplate< NewComponentType, N >
 Get a vector of the same type but with a different component. More...
 
template<typename NewComponentType >
using ReplaceBaseComponentType = VecTemplate< typename VecTraits< ComponentType >::template ReplaceBaseComponentType< NewComponentType >, N >
 Get a vector of the same type but with a different base component. More...
 

Static Public Member Functions

static vtkm::IdComponent GetNumberOfComponents (const VecType &vec)
 Number of components in the given vector. More...
 
static const VTKM_EXEC_CONT ComponentTypeGetComponent (const typename std::remove_const< VecType >::type &vector, vtkm::IdComponent component)
 Returns the value in a given component of the vector. More...
 
static VTKM_EXEC_CONT ComponentTypeGetComponent (typename std::remove_const< VecType >::type &vector, vtkm::IdComponent component)
 
static VTKM_EXEC_CONT void SetComponent (VecType &vector, vtkm::IdComponent component, ComponentType value)
 Changes the value in a given component of the vector. More...
 
template<vktm::IdComponent destSize>
static VTKM_EXEC_CONT void CopyInto (const VecType &src, vtkm::Vec< ComponentType, destSize > &dest)
 Copies the components in the given vector into a given Vec object. More...
 

Static Public Attributes

static constexpr vtkm::IdComponent NUM_COMPONENTS = VecType::NUM_COMPONENTS
 Number of components in the vector. More...
 

Detailed Description

template<class VecType>
struct vtkm::VecTraits< VecType >

The VecTraits class gives several static members that define how to use a given type as a vector.

Member Typedef Documentation

◆ BaseComponentType

template<class VecType >
using vtkm::VecTraits< VecType >::BaseComponentType = typename vtkm::VecTraits<ComponentType>::BaseComponentType

Base component type in the vector.

Similar to ComponentType except that for nested vectors (e.g. Vec<Vec<T, M>, N>), it returns the base scalar type at the end of the composition (T in this example).

◆ ComponentType

template<class VecType >
using vtkm::VecTraits< VecType >::ComponentType = typename VecType::ComponentType

Type of the components in the vector.

If the type is really a scalar, then the component type is the same as the scalar type.

◆ HasMultipleComponents

template<class VecType >
using vtkm::VecTraits< VecType >::HasMultipleComponents = typename internal::VecTraitsMultipleComponentChooser<NUM_COMPONENTS>::Type

A tag specifying whether this vector has multiple components (i.e.

is a "real" vector).

This tag can be useful for creating specialized functions when a vector is really just a scalar.

◆ IsSizeStatic

template<class VecType >
using vtkm::VecTraits< VecType >::IsSizeStatic = vtkm::VecTraitsTagSizeStatic

A tag specifying whether the size of this vector is known at compile time.

If set to VecTraitsTagSizeStatic, then NUM_COMPONENTS is set. If set to VecTraitsTagSizeVariable, then the number of components is not known at compile time and must be queried with GetNumberOfComponents.

◆ ReplaceBaseComponentType

template<class VecType >
template<typename NewComponentType >
using vtkm::VecTraits< VecType >::ReplaceBaseComponentType = VecTemplate< typename VecTraits<ComponentType>::template ReplaceBaseComponentType<NewComponentType>, N>

Get a vector of the same type but with a different base component.

This type resolves to another vector with a different base component type. The replacement is recursive for nested types. For example,

VecTraits<Vec<Vec<T, M>, N>::ReplaceBaseComponentType<T2>

is Vec<Vec<T2, M>, N>.

◆ ReplaceComponentType

template<class VecType >
template<typename NewComponentType >
using vtkm::VecTraits< VecType >::ReplaceComponentType = VecTemplate<NewComponentType, N>

Get a vector of the same type but with a different component.

This type resolves to another vector with a different component type. For example,

vtkm::VecTraits<vtkm::Vec<T, N>>::ReplaceComponentType<T2>

is vtkm::Vec<T2, N>. This replacement is not recursive. So

VecTraits<Vec<Vec<T, M>, N>::ReplaceComponentType<T2>

is vtkm::Vec<T2, N>.

Member Function Documentation

◆ CopyInto()

template<class VecType >
template<vktm::IdComponent destSize>
static VTKM_EXEC_CONT void vtkm::VecTraits< VecType >::CopyInto ( const VecType &  src,
vtkm::Vec< ComponentType, destSize > &  dest 
)
static

Copies the components in the given vector into a given Vec object.

◆ GetComponent() [1/2]

template<class VecType >
static const VTKM_EXEC_CONT ComponentType& vtkm::VecTraits< VecType >::GetComponent ( const typename std::remove_const< VecType >::type &  vector,
vtkm::IdComponent  component 
)
static

Returns the value in a given component of the vector.

◆ GetComponent() [2/2]

template<class VecType >
static VTKM_EXEC_CONT ComponentType& vtkm::VecTraits< VecType >::GetComponent ( typename std::remove_const< VecType >::type &  vector,
vtkm::IdComponent  component 
)
static

◆ GetNumberOfComponents()

template<class VecType >
static vtkm::IdComponent vtkm::VecTraits< VecType >::GetNumberOfComponents ( const VecType &  vec)
static

Number of components in the given vector.

◆ SetComponent()

template<class VecType >
static VTKM_EXEC_CONT void vtkm::VecTraits< VecType >::SetComponent ( VecType &  vector,
vtkm::IdComponent  component,
ComponentType  value 
)
static

Changes the value in a given component of the vector.

Member Data Documentation

◆ NUM_COMPONENTS

template<class VecType >
constexpr vtkm::IdComponent vtkm::VecTraits< VecType >::NUM_COMPONENTS = VecType::NUM_COMPONENTS
staticconstexpr

Number of components in the vector.

This is only defined for vectors of a static size.


The documentation for this struct was generated from the following file:
vtkm::VecTraits
The VecTraits class gives several static members that define how to use a given type as a vector.
Definition: VecTraits.h:66