diff options
author | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2015-10-06 18:31:47 (GMT) |
---|---|---|
committer | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2015-10-06 18:31:47 (GMT) |
commit | 2ec9b447ec40c6a6486cbd2f577083fc905556fa (patch) | |
tree | 151498ddaec775d775b87d14515381351ec56f79 /src/H5D.c | |
parent | d05369f41d078275b9f8879283ff9504a6a9f520 (diff) | |
parent | db00c23829fb80c35709be1b6de5781e51a134e0 (diff) | |
download | hdf5-2ec9b447ec40c6a6486cbd2f577083fc905556fa.zip hdf5-2ec9b447ec40c6a6486cbd2f577083fc905556fa.tar.gz hdf5-2ec9b447ec40c6a6486cbd2f577083fc905556fa.tar.bz2 |
[svn-r27972] merge from trunk.
Diffstat (limited to 'src/H5D.c')
-rw-r--r-- | src/H5D.c | 24 |
1 files changed, 20 insertions, 4 deletions
@@ -106,7 +106,7 @@ H5Dcreate2(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, void *dset = NULL; /* dset token from VOL plugin */ H5VL_object_t *obj = NULL; /* object token of loc_id */ H5VL_loc_params_t loc_params; - H5P_genplist_t *plist; /* Property list pointer */ + H5P_genplist_t *plist = NULL; /* Property list pointer */ hid_t ret_value = FAIL; /* Return value */ FUNC_ENTER_API(FAIL) @@ -725,7 +725,9 @@ herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id, H5D_operator_t op, void *operator_data) { + H5T_t *type; /* Datatype */ H5S_t *space; /* Dataspace for iteration */ + H5S_sel_iter_op_t dset_op; /* Operator for iteration */ herr_t ret_value; /* Return value */ FUNC_ENTER_API(FAIL) @@ -738,12 +740,18 @@ H5Diterate(void *buf, hid_t type_id, hid_t space_id, H5D_operator_t op, HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid buffer") if(H5I_DATATYPE != H5I_get_type(type_id)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid datatype") + if(NULL == (type = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype") if(NULL == (space = (H5S_t *)H5I_object_verify(space_id, H5I_DATASPACE))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataspace") if(!(H5S_has_extent(space))) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "dataspace does not have extent set") - ret_value = H5D__iterate(buf, type_id, space, op, operator_data); + dset_op.op_type = H5S_SEL_ITER_OP_APP; + dset_op.u.app_op.op = op; + dset_op.u.app_op.type_id = type_id; + + ret_value = H5S_select_iterate(buf, type, space, &dset_op, operator_data); done: FUNC_LEAVE_API(ret_value) @@ -832,6 +840,8 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, char bogus; /* bogus value to pass to H5Diterate() */ H5S_t *space; /* Dataspace for iteration */ H5P_genplist_t *plist; /* Property list */ + H5T_t *type; /* Datatype */ + H5S_sel_iter_op_t dset_op; /* Operator for iteration */ herr_t ret_value; /* Return value */ FUNC_ENTER_API(FAIL) @@ -844,6 +854,8 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, /* get the dataset object */ if(NULL == (dset = (H5VL_object_t *)H5I_object(dataset_id))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataset identifier") + if(NULL == (type = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype") if(NULL == (space = (H5S_t *)H5I_object_verify(space_id, H5I_DATASPACE))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataspace") if(!(H5S_has_extent(space))) @@ -887,8 +899,12 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, /* Set the initial number of bytes required */ vlen_bufsize.size = 0; - /* Call H5D__iterate with args, etc. */ - ret_value = H5D__iterate(&bogus, type_id, space, H5D__vlen_get_buf_size, &vlen_bufsize); + /* Call H5S_select_iterate with args, etc. */ + dset_op.op_type = H5S_SEL_ITER_OP_APP; + dset_op.u.app_op.op = H5D__vlen_get_buf_size; + dset_op.u.app_op.type_id = type_id; + + ret_value = H5S_select_iterate(&bogus, type, space, &dset_op, &vlen_bufsize); /* Get the size if we succeeded */ if(ret_value >= 0) |