| 
|   | VTKM_ARRAY_HANDLE_SUBCLASS (ArrayHandleDecorator,(ArrayHandleDecorator< typename std::decay< DecoratorImplT >::type, typename std::decay< ArrayTs >::type... >),(typename Traits::Superclass)) | 
|   | 
| VTKM_CONT  | ArrayHandleDecorator (vtkm::Id numValues, const typename std::decay< DecoratorImplT >::type &impl, const typename std::decay< ArrayTs >::type &... arrays) | 
|   | 
  Public Member Functions inherited from vtkm::cont::ArrayHandle< T, StorageTag_ > | 
| VTKM_CONT  | ArrayHandle () | 
|   | Constructs an empty ArrayHandle.  More...
  | 
|   | 
| VTKM_CONT  | ArrayHandle (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) | 
|   | Copy constructor.  More...
  | 
|   | 
| VTKM_CONT  | ArrayHandle (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept | 
|   | Move constructor.  More...
  | 
|   | 
| VTKM_CONT  | ~ArrayHandle () | 
|   | Destructs an empty ArrayHandle.  More...
  | 
|   | 
| VTKM_CONT vtkm::cont::ArrayHandle< ValueType, StorageTag > &  | operator= (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) | 
|   | Copies an ArrayHandle.  More...
  | 
|   | 
| VTKM_CONT vtkm::cont::ArrayHandle< ValueType, StorageTag > &  | operator= (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept | 
|   | Move and Assignment of an ArrayHandle.  More...
  | 
|   | 
| VTKM_CONT bool  | operator== (const ArrayHandle< ValueType, StorageTag > &rhs) const | 
|   | Like a pointer, two ArrayHandles are considered equal if they point to the same location in memory.  More...
  | 
|   | 
| VTKM_CONT bool  | operator!= (const ArrayHandle< ValueType, StorageTag > &rhs) const | 
|   | 
| template<typename VT , typename ST >  | 
| VTKM_CONT bool  | operator== (const ArrayHandle< VT, ST > &) const | 
|   | 
| template<typename VT , typename ST >  | 
| VTKM_CONT bool  | operator!= (const ArrayHandle< VT, ST > &) const | 
|   | 
| VTKM_CONT StorageType  | GetStorage () const | 
|   | Get the storage.  More...
  | 
|   | 
| VTKM_CONT WritePortalType  | WritePortal () const | 
|   | Get an array portal that can be used in the control environment.  More...
  | 
|   | 
| VTKM_CONT WritePortalType  | WritePortal (vtkm::cont::Token &token) const | 
|   | 
| VTKM_CONT vtkm::Id  | GetNumberOfValues () const | 
|   | Returns the number of entries in the array.  More...
  | 
|   | 
| VTKM_CONT void  | ReleaseResourcesExecution () const | 
|   | Releases any resources being used in the execution environment (that are not being shared by the control environment).  More...
  | 
|   | 
| VTKM_CONT void  | ReleaseResources () const | 
|   | Releases all resources in both the control and execution environments.  More...
  | 
|   | 
| VTKM_CONT ReadPortalType  | PrepareForInput (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const | 
|   | Prepares this array to be used as an input to an operation in the execution environment.  More...
  | 
|   | 
| VTKM_CONT WritePortalType  | PrepareForInPlace (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const | 
|   | Prepares this array to be used in an in-place operation (both as input and output) in the execution environment.  More...
  | 
|   | 
| VTKM_CONT WritePortalType  | PrepareForOutput (vtkm::Id numberOfValues, vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const | 
|   | Prepares (allocates) this array to be used as an output from an operation in the execution environment.  More...
  | 
|   | 
| VTKM_CONT bool  | IsOnDevice (vtkm::cont::DeviceAdapterId device) const | 
|   | Returns true if the ArrayHandle's data is on the given device.  More...
  | 
|   | 
| VTKM_CONT bool  | IsOnHost () const | 
|   | Returns true if the ArrayHandle's data is on the host.  More...
  | 
|   | 
| VTKM_CONT void  | SyncControlArray () const | 
|   | Synchronizes the control array with the execution array.  More...
  | 
|   | 
| VTKM_CONT void  | Enqueue (const vtkm::cont::Token &token) const | 
|   | Enqueue a token for access to this ArrayHandle.  More...
  | 
|   | 
| VTKM_CONT void  | DeepCopyFrom (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &source) const | 
|   | Deep copies the data in the array.  More...
  | 
|   | 
| const VTKM_CONT std::vector< vtkm::cont::internal::Buffer > &  | GetBuffers () const | 
|   | Returns the internal Buffer structures that hold the data.  More...
  | 
|   | 
| VTKM_CONT std::vector< vtkm::cont::internal::Buffer > &  | GetBuffers () | 
|   | 
| VTKM_CONT  | ArrayHandle (const std::vector< vtkm::cont::internal::Buffer > &buffers) | 
|   | 
| VTKM_CONT  | ArrayHandle (std::vector< vtkm::cont::internal::Buffer > &&buffers) noexcept | 
|   | 
| VTKM_CONT ReadPortalType  | ReadPortal () const | 
|   | Get an array portal that can be used in the control environment.  More...
  | 
|   | 
| VTKM_CONT ReadPortalType  | ReadPortal (vtkm::cont::Token &token) const | 
|   | Get an array portal that can be used in the control environment.  More...
  | 
|   | 
| VTKM_CONT void  | Allocate (vtkm::Id numberOfValues, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const | 
|   | Allocates an array large enough to hold the given number of values.  More...
  | 
|   | 
| VTKM_CONT void  | Allocate (vtkm::Id numberOfValues, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const | 
|   | Allocates an array large enough to hold the given number of values.  More...
  | 
|   | 
| VTKM_CONT void  | AllocateAndFill (vtkm::Id numberOfValues, const ValueType &fillValue, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const | 
|   | Allocates an array and fills it with an initial value.  More...
  | 
|   | 
| VTKM_CONT void  | AllocateAndFill (vtkm::Id numberOfValues, const ValueType &fillValue, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const | 
|   | Allocates an array and fills it with an initial value.  More...
  | 
|   | 
| VTKM_CONT void  | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex, vtkm::cont::Token &token) const | 
|   | Fills the array with a given value.  More...
  | 
|   | 
| VTKM_CONT void  | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex) const | 
|   | Fills the array with a given value.  More...
  | 
|   | 
| VTKM_CONT void  | Fill (const ValueType &fillValue, vtkm::Id startIndex=0) const | 
|   | Fills the array with a given value.  More...
  | 
|   | 
template<typename DecoratorImplT, typename... ArrayTs>
class vtkm::cont::ArrayHandleDecorator< DecoratorImplT, ArrayTs >
A fancy ArrayHandle that can be used to modify the results from one or more source ArrayHandle. 
ArrayHandleDecorator is given a DecoratorImplT class and a list of one or more source ArrayHandles. There are no restrictions on the size or type of the source ArrayHandles.
The decorator implementation class is described below:
struct ExampleDecoratorImplementation
{
 
  
  
  
  
  
  
  
  
  
  
  
  template <typename Portal1Type, typename Portal2Type>
  SomeFunctor CreateFunctor(Portal1Type portal1, Portal2Type portal2) const;
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  template <typename Portal1Type, typename Portal2Type>
  SomeInverseFunctor CreateInverseFunctor(Portal1Type portal1,
                                          Portal2Type portal2) const;
 
  
  
  
  
  
  
  
  
  
  template <typename Array1Type, typename Array2Type>
  void AllocateSourceArrays(
vtkm::Id size,
 
                            Array1Type array1,
                            Array2Type array2) const;
 
};
There are several example DecoratorImpl classes provided in the UnitTestArrayHandleDecorator test file.