Go to the documentation of this file.
18 #ifndef viskores_cont_ArrayHandleOffsetsToNumComponents_h
19 #define viskores_cont_ArrayHandleOffsetsToNumComponents_h
30 template <
typename OffsetsPortal>
31 class VISKORES_ALWAYS_EXPORT ArrayPortalOffsetsToNumComponents
36 ArrayPortalOffsetsToNumComponents() =
default;
38 ArrayPortalOffsetsToNumComponents(
const OffsetsPortal& portal)
47 return this->Portal.GetNumberOfValues() - 1;
53 this->Portal.Get(index));
65 template <
typename OffsetsStorageTag>
73 template <
typename OffsetsStorageTag>
74 class VISKORES_ALWAYS_EXPORT
78 using OffsetsStorage = viskores::cont::internal::Storage<viskores::Id, OffsetsStorageTag>;
84 using ReadPortalType =
85 viskores::internal::ArrayPortalOffsetsToNumComponents<typename OffsetsStorage::ReadPortalType>;
87 VISKORES_CONT static std::vector<viskores::cont::internal::Buffer> CreateBuffers()
89 return OffsetsStorage::CreateBuffers();
93 const std::vector<viskores::cont::internal::Buffer>&)
99 const std::vector<viskores::cont::internal::Buffer>& buffers)
101 viskores::Id numOffsets = OffsetsStorage::GetNumberOfValues(buffers);
105 "ArrayHandleOffsetsToNumComponents requires an offsets array with at least one value.");
107 return numOffsets - 1;
111 const std::vector<viskores::cont::internal::Buffer>& buffers,
116 return ReadPortalType(OffsetsStorage::CreateReadPortal(buffers, device, token));
147 template <
class OffsetsArray>
150 viskores::IdComponent,
151 viskores::cont::StorageTagOffsetsToNumComponents<typename OffsetsArray::StorageTag>>
155 "Offsets array must have a value type of viskores::Id.");
171 template <
typename OffsetsStorageTag>
184 #endif //viskores_cont_ArrayHandleOffsetsToNumComponents_h
#define VISKORES_IS_ARRAY_HANDLE(T)
Checks that the given type is a viskores::cont::ArrayHandle.
Definition: ArrayHandle.h:145
Manages an array-worth of data.
Definition: ArrayHandle.h:313
viskores::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:202
#define VISKORES_EXEC_CONT
Definition: ExportMacros.h:60
typename viskores::cont::detail::GetTypeInParentheses< void(viskores::cont::ArrayHandle< viskores::IdComponent, viskores::cont::StorageTagOffsetsToNumComponents< typename OffsetsArray::StorageTag > >) >::type Superclass
Definition: ArrayHandleOffsetsToNumComponents.h:163
viskores::cont::ArrayHandleOffsetsToNumComponents< viskores::cont::ArrayHandle< viskores::Id, OffsetsStorageTag > > make_ArrayHandleOffsetsToNumComponents(const viskores::cont::ArrayHandle< viskores::Id, OffsetsStorageTag > &array)
Definition: ArrayHandleOffsetsToNumComponents.h:174
viskores::Int64 Id
Base type to use to index arrays.
Definition: Types.h:235
#define VISKORES_CONT
Definition: ExportMacros.h:65
Groups connected points that have the same field value.
Definition: Atomic.h:27
Definition: ArrayHandleOffsetsToNumComponents.h:66
#define VISKORES_STORAGE_NO_RESIZE
Definition: Storage.h:194
#define VISKORES_STORAGE_NO_WRITE_PORTAL
Definition: Storage.h:209
An ArrayHandle that converts an array of offsets to an array of Vec sizes.
Definition: ArrayHandleOffsetsToNumComponents.h:148
#define VISKORES_ASSERT(condition)
Definition: Assert.h:51
#define VISKORES_STATIC_ASSERT_MSG(condition, message)
Definition: StaticAssert.h:26
ArrayHandleOffsetsToNumComponents(const OffsetsArray &array)
Definition: ArrayHandleOffsetsToNumComponents.h:165
An object used to specify a device.
Definition: DeviceAdapterTag.h:66
This class is thrown when a Viskores function or method encounters an invalid value that inhibits pro...
Definition: ErrorBadValue.h:33
#define VISKORES_ARRAY_HANDLE_SUBCLASS(classname, fullclasstype, superclass)
Macro to make default methods in ArrayHandle subclasses.
Definition: ArrayHandle.h:256
auto Get(const viskores::Tuple< Ts... > &tuple)
Retrieve the object from a viskores::Tuple at the given index.
Definition: Tuple.h:89
A token to hold the scope of an ArrayHandle or other object.
Definition: Token.h:43