Viskores
1.0
|
An ArrayHandle that can behave like several other handles. More...
#include <ArrayHandleMultiplexer.h>
Public Types | |
using | Thisclass = typename viskores::cont::detail::GetTypeInParentheses< void(ArrayHandleMultiplexer< ArrayHandleTypes... >) >::type |
using | Superclass = typename viskores::cont::detail::GetTypeInParentheses< void(viskores::cont::ArrayHandle< typename Traits::ValueType, typename Traits::StorageTag >) >::type |
using | ValueType = typename Superclass::ValueType |
using | StorageTag = typename Superclass::StorageTag |
using | StorageType = typename Superclass::StorageType |
using | ReadPortalType = typename Superclass::ReadPortalType |
using | WritePortalType = typename Superclass::WritePortalType |
Public Member Functions | |
ArrayHandleMultiplexer () | |
VISKORES_CONT | ArrayHandleMultiplexer (const Thisclass &src) |
VISKORES_CONT | ArrayHandleMultiplexer (Thisclass &&src) noexcept |
VISKORES_CONT | ArrayHandleMultiplexer (const viskores::cont::ArrayHandle< typename Superclass::ValueType, typename Superclass::StorageTag > &src) |
VISKORES_CONT | ArrayHandleMultiplexer (viskores::cont::ArrayHandle< typename Superclass::ValueType, typename Superclass::StorageTag > &&src) noexcept |
VISKORES_CONT | ArrayHandleMultiplexer (const std::vector< viskores::cont::internal::Buffer > &buffers) |
VISKORES_CONT | ArrayHandleMultiplexer (std::vector< viskores::cont::internal::Buffer > &&buffers) noexcept |
VISKORES_CONT Thisclass & | operator= (const Thisclass &src) |
VISKORES_CONT Thisclass & | operator= (Thisclass &&src) noexcept |
template<typename RealStorageTag > | |
ArrayHandleMultiplexer (const viskores::cont::ArrayHandle< ValueType, RealStorageTag > &src) | |
bool | IsValid () const |
template<typename S > | |
void | SetArray (const viskores::cont::ArrayHandle< ValueType, S > &src) |
auto | GetArrayHandleVariant () const -> decltype(StorageType::GetArrayHandleVariant(this->GetBuffers())) |
Private Types | |
using | Traits = detail::ArrayHandleMultiplexerTraits< ArrayHandleTypes... > |
An ArrayHandle that can behave like several other handles.
An ArrayHandleMultiplexer
simply redirects its calls to another ArrayHandle
. However the type of that ArrayHandle
does not need to be (completely) known at runtime. Rather, ArrayHandleMultiplexer
is defined over a set of possible ArrayHandle
types. Any one of these ArrayHandles
may be assigned to the ArrayHandleMultiplexer
.
When a value is retreived from the ArrayHandleMultiplexer
, the multiplexer checks to see which type of array is currently stored in it. It then redirects to the ArrayHandle
of the appropriate type.
The ArrayHandleMultiplexer
template parameters are all the ArrayHandle types it should support.
If only one template parameter is given, it is assumed to be the ValueType
of the array. A default list of supported arrays is supported (see viskores::cont::internal::ArrayHandleMultiplexerDefaultArrays
.) If multiple template parameters are given, they are all considered possible ArrayHandle
types.
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::ReadPortalType = typename Superclass::ReadPortalType |
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::StorageTag = typename Superclass::StorageTag |
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::StorageType = typename Superclass::StorageType |
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::Superclass = typename viskores::cont::detail::GetTypeInParentheses<void (viskores::cont::ArrayHandle<typename Traits::ValueType, typename Traits::StorageTag>) >::type |
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::Thisclass = typename viskores::cont::detail::GetTypeInParentheses<void (ArrayHandleMultiplexer<ArrayHandleTypes...>) >::type |
|
private |
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::ValueType = typename Superclass::ValueType |
using viskores::cont::ArrayHandleMultiplexer< ArrayHandleTypes >::WritePortalType = typename Superclass::WritePortalType |
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inlineexplicit |
|
inlineexplicitnoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |