H5Sselect_hyperslab
(hid_t space_id
,
H5S_seloper_t op
,
const hsize_t *start
,
const hsize_t *stride
,
const hsize_t *count
,
const hsize_t *block
)
H5Sselect_hyperslab
selects a hyperslab region
to add to the current selected region for the dataspace
specified by space_id
.
The start
, stride
, count
,
and block
arrays must be the same size as the rank
of the dataspace. For example, if the dataspace is 4-dimensional,
each of these parameters must be a 1-dimensional array of size
4
.
The selection operator op
determines how the new
selection is to be combined with the already existing selection
for the dataspace.
The following operators are supported:
H5S_SELECT_SET
| Replaces the existing selection with the parameters from this call. Overlapping blocks are not supported with this operator. |
H5S_SELECT_OR
| Adds the new selection to the existing selection. (Binary OR) |
H5S_SELECT_AND
| Retains only the overlapping portions of the new selection and the existing selection. (Binary AND) |
H5S_SELECT_XOR
| Retains only the elements that are members of the new selection or the existing selection, excluding elements that are members of both selections. (Binary exclusive-OR, XOR) |
H5S_SELECT_NOTB
| Retains only elements of the existing selection that are not in the new selection. |
H5S_SELECT_NOTA
| Retains only elements of the new selection that are not in the existing selection. |
The start
array specifies the offset of the
starting element of the specified hyperslab.
The stride
array chooses array locations
from the dataspace with each value in the stride
array determining how many elements to move in each dimension.
Setting a value in the stride
array to 1
moves to
each element in that dimension of the dataspace; setting a value
of 2
in allocation in the stride
array
moves to every other element in that dimension of the dataspace.
In other words, the stride
determines the
number of elements to move from the start
location
in each dimension.
Stride values of 0
are not allowed.
If the stride
parameter is NULL
,
a contiguous hyperslab is selected (as if each value in the
stride
array were set to 1
).
The count
array determines how many blocks to
select from the dataspace, in each dimension.
The block
array determines
the size of the element block selected from the dataspace.
If the block
parameter is set to NULL
,
the block size defaults to a single element in each dimension
(as if each value in the block
array were set to
1
).
For example, consider a 2-dimensional dataspace with
hyperslab selection settings as follows:
the start
offset is specified as [1,1],
stride
is [4,4],
count
is [3,7], and
block
is [2,2].
In C, these settings will specify a hyperslab consisting of
21 2x2 blocks of array elements starting with location (1,1)
with the selected blocks at locations
(1,1), (5,1), (9,1), (1,5), (5,5), etc.;
in Fortran, they will specify a hyperslab consisting of
21 2x2 blocks of array elements starting with location (2,2)
with the selected blocks at locations
(2,2), (6,2), (10,2), (2,6), (6,6), etc.
Regions selected with this function call default to C order iteration when I/O is performed.
hid_t space_id |
IN: Identifier of dataspace selection to modify |
H5S_seloper_t op |
IN: Operation to perform on current selection. |
const hsize_t *start |
IN: Offset of start of hyperslab |
const hsize_t *count |
IN: Number of blocks included in hyperslab. |
const hsize_t *stride |
IN: Hyperslab stride. |
const hsize_t *block |
IN: Size of block in hyperslab. |
SUBROUTINE h5sselect_hyperslab_f(space_id, operator, start, count, hdferr, stride, block) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(IN) :: op ! Flag, valid values are: ! H5S_SELECT_SET_F ! H5S_SELECT_OR_F INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start ! Offset of start of hyperslab INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count ! Number of blocks to select ! from dataspace INTEGER, INTENT(OUT) :: hdferr ! Error code ! 0 on success and -1 on failure INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: stride ! Array of how many elements to ! move in each direction INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: block ! Size of the element block END SUBROUTINE h5sselect_hyperslab_f
Release | C | Fortran90 | |
1.6.4 |
start[] parameter type changed to
const hsize_t. |
start parameter type changed to
INTEGER(HSIZE_T) . |