Name: H5Sselect_hyperslab
Signature:
  herr_t `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` )
Purpose:
  Selects a hyperslab region to add to the current selected region.
Description:
  `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.

Parameters:

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.

Returns:
  Returns a non-negative value if successful; otherwise returns a negative value.
Fortran90 Interface: h5sselect_hyperslab_f

      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
                                                ! Starting coordinates 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

History:

Release | C |  | Fortran90
1.6.4 | `start[]` parameter type changed to const hsize_t. |  | `start` parameter type changed to `INTEGER(HSIZE_T)`.