Viskores  1.0
Classes | Namespaces | Macros | Functions
ArrayHandle.h File Reference
#include <viskores/cont/viskores_cont_export.h>
#include <viskores/Assert.h>
#include <viskores/Flags.h>
#include <viskores/Types.h>
#include <viskores/cont/DeviceAdapterList.h>
#include <viskores/cont/ErrorBadValue.h>
#include <viskores/cont/ErrorInternal.h>
#include <viskores/cont/Storage.h>
#include <viskores/cont/Token.h>
#include <viskores/internal/ArrayPortalHelpers.h>
#include <algorithm>
#include <deque>
#include <iterator>
#include <memory>
#include <mutex>
#include <vector>
#include <viskores/cont/internal/Buffer.h>
#include <viskores/cont/ArrayHandleBasic.h>

Go to the source code of this file.

Classes

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

Namespaces

 viskores
 Groups connected points that have the same field value.
 
 viskores::cont
 Viskores Control Environment.
 

Macros

#define VISKORES_IS_ARRAY_HANDLE(T)   VISKORES_STATIC_ASSERT(::viskores::cont::internal::ArrayHandleCheck<T>{})
 Checks that the given type is a viskores::cont::ArrayHandle. More...
 
#define VISKORES_ARRAY_HANDLE_SUBCLASS_IMPL(classname, fullclasstype, superclass, typename__)
 
#define VISKORES_ARRAY_HANDLE_SUBCLASS(classname, fullclasstype, superclass)   VISKORES_ARRAY_HANDLE_SUBCLASS_IMPL(classname, fullclasstype, superclass, typename)
 Macro to make default methods in ArrayHandle subclasses. More...
 
#define VISKORES_ARRAY_HANDLE_SUBCLASS_NT(classname, superclass)   VISKORES_ARRAY_HANDLE_SUBCLASS_IMPL(classname, (classname), superclass, )
 Macro to make default methods in ArrayHandle subclasses. More...
 

Functions

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

Macro Definition Documentation

◆ VISKORES_ARRAY_HANDLE_SUBCLASS

#define VISKORES_ARRAY_HANDLE_SUBCLASS (   classname,
  fullclasstype,
  superclass 
)    VISKORES_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 VISKORES_ARRAY_HANDLE_SUBCLASS_NT.

◆ VISKORES_ARRAY_HANDLE_SUBCLASS_IMPL

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

◆ VISKORES_ARRAY_HANDLE_SUBCLASS_NT

#define VISKORES_ARRAY_HANDLE_SUBCLASS_NT (   classname,
  superclass 
)    VISKORES_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 VISKORES_ARRAY_HANDLE_SUBCLASS.

◆ VISKORES_IS_ARRAY_HANDLE

#define VISKORES_IS_ARRAY_HANDLE (   T)    VISKORES_STATIC_ASSERT(::viskores::cont::internal::ArrayHandleCheck<T>{})

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

If the type is not a viskores::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.