Add standard support for read-only storage
Many of the fancy ArrayHandle
s are read-only and therefore connot
really create write portals. Likewise, many ArrayHandle
s (both read-
only and read/write) have no way to resize themselves. In this case,
implementing the CreateWritePortal
and ResizeBuffers
methods in the
Storage
class was troublesome. Mostly they just threw an exception,
but they also sometimes had to deal with cases where the behavior was
allowed.
To simplify code for developers, this introduces a pair of macros:
VTKM_STORAGE_NO_RESIZE
and VTKM_STORAGE_NO_WRITE_PORTAL
. These can
be declared in a Storage
implementation when the storage has no viable
way to resize itself and create a write portal, respectively.
Having boilerplate code for these methods also helps work around
expected behavior for ResizeBuffers
. ResizeBuffers
should silently
work when resizing to the same size. Also ResizeBuffers
should behave
well when resizing to 0 as that is what ReleaseResources
does.