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; }
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; }