VTK-m  2.1
Classes | Namespaces | Macros | Functions
ArrayHandle.h File Reference
#include <vtkm/cont/vtkm_cont_export.h>
#include <vtkm/Assert.h>
#include <vtkm/Flags.h>
#include <vtkm/Types.h>
#include <vtkm/cont/DeviceAdapterList.h>
#include <vtkm/cont/ErrorBadValue.h>
#include <vtkm/cont/ErrorInternal.h>
#include <vtkm/cont/Storage.h>
#include <vtkm/cont/Token.h>
#include <vtkm/internal/ArrayPortalHelpers.h>
#include <algorithm>
#include <deque>
#include <iterator>
#include <memory>
#include <mutex>
#include <vector>
#include <vtkm/cont/internal/Buffer.h>
#include <vtkm/cont/ArrayHandleBasic.h>

Go to the source code of this file.

Classes

struct  vtkm::cont::StorageTagBasic
 A tag for the basic implementation of a Storage object. More...
 
class  vtkm::cont::ArrayHandle< T, StorageTag_ >
 Manages an array-worth of data. More...
 

Namespaces

 vtkm
 Groups connected points that have the same field value.
 
 vtkm::cont
 VTK-m Control Environment.
 

Macros

#define VTKM_IS_ARRAY_HANDLE(T)   VTKM_STATIC_ASSERT(::vtkm::cont::internal::ArrayHandleCheck<T>{})
 Checks that the given type is a vtkm::cont::ArrayHandle. More...
 
#define VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL(classname, fullclasstype, superclass, typename__)
 
#define VTKM_ARRAY_HANDLE_SUBCLASS(classname, fullclasstype, superclass)   VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL(classname, fullclasstype, superclass, typename)
 Macro to make default methods in ArrayHandle subclasses. More...
 
#define VTKM_ARRAY_HANDLE_SUBCLASS_NT(classname, superclass)   VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL(classname, (classname), superclass, )
 Macro to make default methods in ArrayHandle subclasses. More...
 

Functions

template<typename T , typename StorageT >
void vtkm::cont::printSummary_ArrayHandle (const vtkm::cont::ArrayHandle< T, StorageT > &array, std::ostream &out, bool full=false)
 

Macro Definition Documentation

◆ VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL

#define VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL (   classname,
  fullclasstype,
  superclass,
  typename__ 
)

◆ VTKM_ARRAY_HANDLE_SUBCLASS

#define VTKM_ARRAY_HANDLE_SUBCLASS (   classname,
  fullclasstype,
  superclass 
)    VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL(classname, fullclasstype, superclass, typename)

Macro to make default methods in ArrayHandle subclasses.

This macro defines the default constructors, destructors and assignment operators for ArrayHandle subclasses that are templates. The ArrayHandle subclasses are assumed to be empty convenience classes. The macro should be defined after a public: declaration.

This macro takes three arguments. The first argument is the classname. The second argument is the full class type. The third argument is the superclass type (either ArrayHandle or another sublcass). Because C macros do not handle template parameters very well (the preprocessor thinks the template commas are macro argument commas), the second and third arguments must be wrapped in parentheses.

This macro also defines a Superclass typedef as well as ValueType and StorageTag.

Note that this macro only works on ArrayHandle subclasses that are templated. For ArrayHandle sublcasses that are not templates, use VTKM_ARRAY_HANDLE_SUBCLASS_NT.

◆ VTKM_ARRAY_HANDLE_SUBCLASS_NT

#define VTKM_ARRAY_HANDLE_SUBCLASS_NT (   classname,
  superclass 
)    VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL(classname, (classname), superclass, )

Macro to make default methods in ArrayHandle subclasses.

This macro defines the default constructors, destructors and assignment operators for ArrayHandle subclasses that are not templates. The ArrayHandle subclasses are assumed to be empty convenience classes. The macro should be defined after a public: declaration.

This macro takes two arguments. The first argument is the classname. The second argument is the superclass type (either ArrayHandle or another sublcass). Because C macros do not handle template parameters very well (the preprocessor thinks the template commas are macro argument commas), the second argument must be wrapped in parentheses.

This macro also defines a Superclass typedef as well as ValueType and StorageTag.

Note that this macro only works on ArrayHandle subclasses that are not templated. For ArrayHandle sublcasses that are templates, use VTKM_ARRAY_HANDLE_SUBCLASS.

◆ VTKM_IS_ARRAY_HANDLE

#define VTKM_IS_ARRAY_HANDLE (   T)    VTKM_STATIC_ASSERT(::vtkm::cont::internal::ArrayHandleCheck<T>{})

Checks that the given type is a vtkm::cont::ArrayHandle.

If the type is not a vtkm::cont::ArrayHandle or a subclass, a static assert will cause a compile exception. This is a good way to ensure that a template argument that is assumed to be an array handle type actually is.