diff options
author | vchoi-hdfgroup <55293060+vchoi-hdfgroup@users.noreply.github.com> | 2021-10-27 21:43:04 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-27 21:43:04 (GMT) |
commit | 33630ee54581f7f54e4ecd8e53ec3e94ba13c493 (patch) | |
tree | 40ce8f08c2ec57a772ce57b3b91da56be21d5334 /src/H5Adeprec.c | |
parent | bb54464d2dcee95032332c44aa4d1ee2438e4be4 (diff) | |
parent | 572201b560b87fb0011dea1d3257fe0351483e8c (diff) | |
download | hdf5-33630ee54581f7f54e4ecd8e53ec3e94ba13c493.zip hdf5-33630ee54581f7f54e4ecd8e53ec3e94ba13c493.tar.gz hdf5-33630ee54581f7f54e4ecd8e53ec3e94ba13c493.tar.bz2 |
Merge pull request #42 from HDFGroup/feature/vfd_swmr
Feature/vfd swmr
Diffstat (limited to 'src/H5Adeprec.c')
-rw-r--r-- | src/H5Adeprec.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/H5Adeprec.c b/src/H5Adeprec.c index 3d4e391..8ae4e41 100644 --- a/src/H5Adeprec.c +++ b/src/H5Adeprec.c @@ -309,10 +309,11 @@ done: int H5Aget_num_attrs(hid_t loc_id) { - H5VL_object_t * vol_obj = NULL; /* Object of loc_id */ - H5VL_loc_params_t loc_params; - H5O_info2_t oinfo; - int ret_value = -1; + H5VL_object_t * vol_obj = NULL; /* Object of loc_id */ + H5VL_object_get_args_t vol_cb_args; /* Arguments to VOL callback */ + H5VL_loc_params_t loc_params; + H5O_info2_t oinfo; + int ret_value = -1; FUNC_ENTER_API((-1)) H5TRACE1("Is", "i", loc_id); @@ -324,9 +325,13 @@ H5Aget_num_attrs(hid_t loc_id) if (NULL == (vol_obj = H5VL_vol_object(loc_id))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "invalid location identifier") + /* Set up VOL callback arguments */ + vol_cb_args.op_type = H5VL_OBJECT_GET_INFO; + vol_cb_args.args.get_info.oinfo = &oinfo; + vol_cb_args.args.get_info.fields = H5O_INFO_NUM_ATTRS; + /* Get the number of attributes for the object */ - if (H5VL_object_get(vol_obj, &loc_params, H5VL_OBJECT_GET_INFO, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, - &oinfo, H5O_INFO_NUM_ATTRS) < 0) + if (H5VL_object_get(vol_obj, &loc_params, &vol_cb_args, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, (-1), "unable to get attribute count for object") H5_CHECKED_ASSIGN(ret_value, int, oinfo.num_attrs, hsize_t); @@ -375,8 +380,10 @@ done: herr_t H5Aiterate1(hid_t loc_id, unsigned *attr_num /*in,out*/, H5A_operator1_t op, void *op_data) { - H5VL_object_t *vol_obj = NULL; /* Object of loc_id */ - herr_t ret_value; /* Return value */ + H5VL_object_t * vol_obj = NULL; /* Object of loc_id */ + H5VL_optional_args_t vol_cb_args; /* Arguments to VOL callback */ + H5VL_native_attr_optional_args_t attr_opt_args; /* Arguments for optional operation */ + herr_t ret_value; /* Return value */ FUNC_ENTER_API(H5_ITER_ERROR) H5TRACE4("e", "i*IuAo*x", loc_id, attr_num, op, op_data); @@ -389,9 +396,17 @@ H5Aiterate1(hid_t loc_id, unsigned *attr_num /*in,out*/, H5A_operator1_t op, voi if (NULL == (vol_obj = H5VL_vol_object(loc_id))) HGOTO_ERROR(H5E_ATTR, H5E_BADTYPE, H5_ITER_ERROR, "invalid location identifier") + /* Set up VOL callback arguments */ + attr_opt_args.iterate_old.loc_id = loc_id; + attr_opt_args.iterate_old.attr_num = attr_num; + attr_opt_args.iterate_old.op = op; + attr_opt_args.iterate_old.op_data = op_data; + vol_cb_args.op_type = H5VL_NATIVE_ATTR_ITERATE_OLD; + vol_cb_args.args = &attr_opt_args; + /* Call attribute iteration routine */ - if ((ret_value = H5VL_attr_optional(vol_obj, H5VL_NATIVE_ATTR_ITERATE_OLD, H5P_DATASET_XFER_DEFAULT, - H5_REQUEST_NULL, loc_id, attr_num, op, op_data)) < 0) + if ((ret_value = H5VL_attr_optional(vol_obj, &vol_cb_args, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL)) < + 0) HERROR(H5E_ATTR, H5E_BADITER, "error iterating over attributes"); done: |