Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 118 additions & 68 deletions src/H5A.c

Large diffs are not rendered by default.

57 changes: 37 additions & 20 deletions src/H5Adeprec.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,18 @@
hid_t
H5Acreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, hid_t acpl_id)
{
void *attr = NULL; /* attr object from VOL connector */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
void *attr = NULL; /* attr object from VOL connector */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
H5VL_loc_params_t loc_params;
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check arguments */
if (H5I_ATTR == H5I_get_type(loc_id))
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");
if (H5I_ATTR == vol_obj_type)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "location is not valid for an attribute");
if (!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "no name");
Expand All @@ -125,7 +128,7 @@ H5Acreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, hid_t

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* Get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -175,22 +178,25 @@ H5Acreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, hid_t
hid_t
H5Aopen_name(hid_t loc_id, const char *name)
{
void *attr = NULL; /* attr object from VOL connector */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
void *attr = NULL; /* attr object from VOL connector */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
H5VL_loc_params_t loc_params;
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check arguments */
if (H5I_ATTR == H5I_get_type(loc_id))
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");
if (H5I_ATTR == vol_obj_type)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "location is not valid for an attribute");
if (!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "no name");

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* Get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -239,15 +245,18 @@ H5Aopen_name(hid_t loc_id, const char *name)
hid_t
H5Aopen_idx(hid_t loc_id, unsigned idx)
{
void *attr = NULL; /* attr object from VOL connector */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
void *attr = NULL; /* attr object from VOL connector */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
H5VL_loc_params_t loc_params;
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check arguments */
if (H5I_ATTR == H5I_get_type(loc_id))
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");
if (H5I_ATTR == vol_obj_type)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "location is not valid for an attribute");

/* Set location parameters */
Expand All @@ -257,7 +266,7 @@ H5Aopen_idx(hid_t loc_id, unsigned idx)
loc_params.loc_data.loc_by_idx.order = H5_ITER_INC;
loc_params.loc_data.loc_by_idx.n = (hsize_t)idx;
loc_params.loc_data.loc_by_idx.lapl_id = H5P_LINK_ACCESS_DEFAULT;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* Get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -302,16 +311,21 @@ H5Aopen_idx(hid_t loc_id, unsigned idx)
int
H5Aget_num_attrs(hid_t loc_id)
{
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
H5VL_object_get_args_t vol_cb_args; /* Arguments to VOL callback */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
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))

if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "invalid location identifier");
if (H5I_ATTR == vol_obj_type)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "location is not valid for an attribute");
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* Get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -372,15 +386,18 @@ H5Aget_num_attrs(hid_t loc_id)
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 */
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 */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
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)

/* check arguments */
if (H5I_ATTR == H5I_get_type(loc_id))
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5_ITER_ERROR, "invalid location identifier");
if (H5I_ATTR == vol_obj_type)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5_ITER_ERROR, "location is not valid for an attribute");

/* Get the location object */
Expand Down
10 changes: 7 additions & 3 deletions src/H5D.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,14 +272,18 @@ H5Dcreate_async(const char *app_file, const char *app_func, unsigned app_line, h
hid_t
H5Dcreate_anon(hid_t loc_id, hid_t type_id, hid_t space_id, hid_t dcpl_id, hid_t dapl_id)
{
void *dset = NULL; /* dset object from VOL connector */
H5VL_object_t *vol_obj = NULL; /* Object for loc_id */
void *dset = NULL; /* dset object from VOL connector */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object for loc_id */
H5VL_loc_params_t loc_params; /* Location parameters for object access */
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check arguments */
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");

if (H5P_DEFAULT == dcpl_id)
dcpl_id = H5P_DATASET_CREATE_DEFAULT;
else if (true != H5P_isa_class(dcpl_id, H5P_DATASET_CREATE))
Expand All @@ -303,7 +307,7 @@ H5Dcreate_anon(hid_t loc_id, hid_t type_id, hid_t space_id, hid_t dcpl_id, hid_t

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* Create the dataset */
if (NULL ==
Expand Down
10 changes: 6 additions & 4 deletions src/H5Ddeprec.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,9 @@ H5Dcreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, hid_t
H5CX_set_dcpl(dcpl_id);

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.type = H5VL_OBJECT_BY_SELF;
if ((loc_params.obj_type = H5I_get_type(loc_id)) == H5I_BADID)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");

/* get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -179,8 +180,9 @@ H5Dopen1(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "name parameter cannot be an empty string");

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.type = H5VL_OBJECT_BY_SELF;
if ((loc_params.obj_type = H5I_get_type(loc_id)) == H5I_BADID)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");

/* get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down
14 changes: 10 additions & 4 deletions src/H5G.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,13 +313,18 @@ H5Gcreate_async(const char *app_file, const char *app_func, unsigned app_line, h
hid_t
H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id)
{
void *grp = NULL; /* Structure for new group */
H5VL_object_t *vol_obj = NULL; /* Object for loc_id */
void *grp = NULL; /* Structure for new group */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object for loc_id */
H5VL_loc_params_t loc_params; /* Location parameters for object access */
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check arguments */
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");

/* Check group property list */
if (H5P_DEFAULT == gcpl_id)
gcpl_id = H5P_GROUP_CREATE_DEFAULT;
Expand All @@ -337,7 +342,7 @@ H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id)

/* Set location struct fields */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* Get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -549,7 +554,8 @@ H5G__get_info_api_common(hid_t loc_id, H5G_info_t *group_info /*out*/, void **to
FUNC_ENTER_PACKAGE

/* Check args */
id_type = H5I_get_type(loc_id);
if (H5I_BADID == (id_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");
if (!(H5I_GROUP == id_type || H5I_FILE == id_type))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid group (or file) ID");
if (!group_info)
Expand Down
27 changes: 18 additions & 9 deletions src/H5Gdeprec.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,18 @@ H5G_map_obj_type(H5O_type_t obj_type)
hid_t
H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint)
{
void *grp = NULL; /* New group created */
H5VL_object_t *vol_obj; /* Object of loc_id */
void *grp = NULL; /* New group created */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj; /* Object of loc_id */
H5VL_loc_params_t loc_params;
hid_t tmp_gcpl = H5I_INVALID_HID; /* Temporary group creation property list */
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check arguments */
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");
if (!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "no name given");
if (size_hint > UINT32_MAX)
Expand Down Expand Up @@ -201,7 +204,7 @@ H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint)

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -246,20 +249,23 @@ H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint)
hid_t
H5Gopen1(hid_t loc_id, const char *name)
{
void *grp = NULL; /* Group opened */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
void *grp = NULL; /* Group opened */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object of loc_id */
H5VL_loc_params_t loc_params;
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Check args */
if (H5I_BADID == (vol_obj_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier");
if (!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "no name");

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(loc_id);
loc_params.obj_type = vol_obj_type;

/* get the location object */
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
Expand Down Expand Up @@ -536,11 +542,13 @@ H5Gmove2(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, const char *d
else if (dst_loc_id == H5L_SAME_LOC)
dst_loc_id = src_loc_id;

src_id_type = H5I_get_type(src_loc_id);
if (H5I_BADID == (src_id_type = H5I_get_type(src_loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid source identifier");
if (!(H5I_GROUP == src_id_type || H5I_FILE == src_id_type))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid group (or file) ID, src_loc_id");

dst_id_type = H5I_get_type(dst_loc_id);
if (H5I_BADID == (dst_id_type = H5I_get_type(dst_loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid destination identifier");
if (!(H5I_GROUP == dst_id_type || H5I_FILE == dst_id_type))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid group (or file) ID, dst_loc_id");

Expand Down Expand Up @@ -893,7 +901,8 @@ H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs /*out*/)
FUNC_ENTER_API(FAIL)

/* Check args */
id_type = H5I_get_type(loc_id);
if (H5I_BADID == (id_type = H5I_get_type(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier");
if (!(H5I_GROUP == id_type || H5I_FILE == id_type))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid group (or file) ID");
if (!num_objs)
Expand Down
11 changes: 8 additions & 3 deletions src/H5I.c
Original file line number Diff line number Diff line change
Expand Up @@ -851,14 +851,19 @@ H5Iget_file_id(hid_t obj_id)
ssize_t
H5Iget_name(hid_t id, char *name /*out*/, size_t size)
{
H5VL_object_t *vol_obj = NULL; /* Object stored in ID */
H5VL_object_get_args_t vol_cb_args; /* Arguments to VOL callback */
H5I_type_t vol_obj_type = H5I_BADID; /* Object type of loc_id */
H5VL_object_t *vol_obj = NULL; /* Object stored in ID */
H5VL_object_get_args_t vol_cb_args; /* Arguments to VOL callback */
H5VL_loc_params_t loc_params;
size_t obj_name_len = 0; /* Length of object's name */
ssize_t ret_value = -1; /* Return value */

FUNC_ENTER_API((-1))

/* Get object type */
if ((vol_obj_type = H5I_get_type(id)) < 0)
HGOTO_ERROR(H5E_VOL, H5E_BADTYPE, FAIL, "invalid identifier");

/* If name size is zero, treat as length query and do not write, even a '\0' */
if (name && size == 0)
name = NULL;
Expand All @@ -869,7 +874,7 @@ H5Iget_name(hid_t id, char *name /*out*/, size_t size)

/* Set location parameters */
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(id);
loc_params.obj_type = vol_obj_type;

/* Set up VOL callback arguments */
vol_cb_args.op_type = H5VL_OBJECT_GET_NAME;
Expand Down
Loading
Loading