Beispiel #1
0
int_f
nh5sis_simple_c ( hid_t_f *space_id , int_f *flag )
{
  int ret_value = 0;
  hid_t c_space_id;
  htri_t status;

  c_space_id = *space_id;
  status = H5Sis_simple(c_space_id);
  *flag = (int_f)status;
  if ( status < 0  ) ret_value = -1;
  return ret_value;
}
Beispiel #2
0
escdf_errno_t utils_hdf5_check_shape(hid_t dtspace_id, hsize_t *dims,
                                     unsigned int ndims)
{
    htri_t bool_id;
    int ndims_id;
    hsize_t *dims_v, *maxdims_v;
    unsigned int i;

    if ((bool_id = H5Sis_simple(dtspace_id)) < 0) {
        RETURN_WITH_ERROR(bool_id);
    }
    if (!bool_id) {
        RETURN_WITH_ERROR(ESCDF_ERROR_DIM);
    }
    if ((ndims_id = H5Sget_simple_extent_ndims(dtspace_id)) < 0) {
        RETURN_WITH_ERROR(ndims_id);
    }
    if ((unsigned int)ndims_id != ndims) {
        RETURN_WITH_ERROR(ESCDF_ERROR_DIM);
    }
    dims_v = malloc(sizeof(hsize_t) * ndims);
    maxdims_v = malloc(sizeof(hsize_t) * ndims);
    if ((ndims_id = H5Sget_simple_extent_dims(dtspace_id, dims_v, maxdims_v)) < 0) {
        DEFER_FUNC_ERROR(ndims_id);
        goto cleanup_dims;
    }
    for (i = 0; i < ndims; i++) {
        if (dims_v[i] != dims[i] || maxdims_v[i] != dims[i]) {
            DEFER_FUNC_ERROR(ESCDF_ERROR_DIM);
            goto cleanup_dims;
        }
    }
    free(dims_v);
    free(maxdims_v);
    return ESCDF_SUCCESS;

    cleanup_dims:
    free(dims_v);
    free(maxdims_v);
    return ESCDF_ERROR;
}