VTK-m  2.0
Public Types | Public Member Functions | List of all members
vtkm::cont::arg::Transport< TransportTag, ContObjectType, DeviceAdapterTag > Struct Template Reference

Class for transporting from the control to the execution environment. More...

#include <Transport.h>

Public Types

using ExecObjectType = typename ContObjectType::ReadPortalType
 The type used in the execution environment. More...
 

Public Member Functions

template<typename InputDomainType >
VTKM_CONT ExecObjectType operator() (const ContObjectType contData, const InputDomainType &inputDomain vtkm::Id outputSize) const
 Send data to the execution environment. More...
 

Detailed Description

template<typename TransportTag, typename ContObjectType, typename DeviceAdapterTag>
struct vtkm::cont::arg::Transport< TransportTag, ContObjectType, DeviceAdapterTag >

Class for transporting from the control to the execution environment.

The Transport class is used to transport data of a certain type from the control environment to the execution environment. It is used internally in VTK-m's dispatch mechanism.

Transport is a templated class with three arguments. The first argument is a tag declaring the mechanism of transport. The second argument is the type of data to transport. The third argument is device adapter tag for the device to move the data to.

There is no generic implementation of Transport. There are partial specializations of Transport for each mechanism supported. If you get a compiler error about an incomplete type for Transport, it means you used an invalid TransportTag or it is an invalid combination of data type or device adapter.

Member Typedef Documentation

◆ ExecObjectType

template<typename TransportTag , typename ContObjectType , typename DeviceAdapterTag >
using vtkm::cont::arg::Transport< TransportTag, ContObjectType, DeviceAdapterTag >::ExecObjectType = typename ContObjectType::ReadPortalType

The type used in the execution environment.

All Transport specializations are expected to declare a type named ExecObjectType that is the object type used in the execution environment. For example, for an ArrayHandle, the ExecObjectType is the portal used in the execution environment.

Member Function Documentation

◆ operator()()

template<typename TransportTag , typename ContObjectType , typename DeviceAdapterTag >
template<typename InputDomainType >
VTKM_CONT ExecObjectType vtkm::cont::arg::Transport< TransportTag, ContObjectType, DeviceAdapterTag >::operator() ( const ContObjectType  contData,
const InputDomainType &inputDomain vtkm::Id  outputSize 
) const

Send data to the execution environment.

All Transport specializations are expected to have a constant parenthesis operator that takes the data in the control environment and returns an object that is accessible in the execution environment. The second argument of the operator is a reference to the input domain argument. This might be useful for checking the sizes of input data. The third argument is the size of the output domain, which can be used, for example, to allocate data for an output array. The transport might ignore either or both of the second two arguments.


The documentation for this struct was generated from the following file: