summaryrefslogtreecommitdiffstats
path: root/src/H5Adeprec.c
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2021-10-06 05:37:12 (GMT)
committerGitHub <noreply@github.com>2021-10-06 05:37:12 (GMT)
commita45b73e4275b26505d8b659d1d807a654bb60df7 (patch)
tree721928d7f14575113d5a0b27aac21cb548c25b37 /src/H5Adeprec.c
parent5592111747b1e6ea1e934a3c13d3395312215c31 (diff)
downloadhdf5-a45b73e4275b26505d8b659d1d807a654bb60df7.zip
hdf5-a45b73e4275b26505d8b659d1d807a654bb60df7.tar.gz
hdf5-a45b73e4275b26505d8b659d1d807a654bb60df7.tar.bz2
VFD SWMR: Normalization with develop (#1078)
Brings many changes from develop, particularly VOL changes for async
Diffstat (limited to 'src/H5Adeprec.c')
-rw-r--r--src/H5Adeprec.c35
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: