Skip to content

Commit

Permalink
Switch more LCPL IDs to pointers
Browse files Browse the repository at this point in the history
Signed-off-by: Quincey Koziol <[email protected]>
  • Loading branch information
qkoziol committed Feb 7, 2025
1 parent 19527f8 commit f15c4f7
Showing 1 changed file with 19 additions and 13 deletions.
32 changes: 19 additions & 13 deletions src/H5M.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ static herr_t H5M__close_cb(H5VL_object_t *map_vol_obj, void **request);

#ifdef H5_HAVE_MAP_API
static hid_t H5M__create_api_common(hid_t loc_id, const char *name, hid_t key_type_id, hid_t val_type_id,
hid_t lcpl_id, hid_t mcpl_id, hid_t mapl_id, void **token_ptr,
H5P_genplist_t *lcpl, hid_t mcpl_id, hid_t mapl_id, void **token_ptr,
H5VL_object_t **_vol_obj_ptr);
static hid_t H5M__open_api_common(hid_t loc_id, const char *name, hid_t mapl_id, void **token_ptr,
H5VL_object_t **_vol_obj_ptr);
Expand Down Expand Up @@ -249,7 +249,7 @@ H5M__close_cb(H5VL_object_t *map_vol_obj, void **request)
*-------------------------------------------------------------------------
*/
static hid_t
H5M__create_api_common(hid_t loc_id, const char *name, hid_t key_type_id, hid_t val_type_id, hid_t lcpl_id,
H5M__create_api_common(hid_t loc_id, const char *name, hid_t key_type_id, hid_t val_type_id, H5P_genplist_t *lcpl,
hid_t mcpl_id, hid_t mapl_id, void **token_ptr, H5VL_object_t **_vol_obj_ptr)
{
void *map = NULL; /* New map's info */
Expand All @@ -268,12 +268,6 @@ H5M__create_api_common(hid_t loc_id, const char *name, hid_t key_type_id, hid_t
if (!*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "name parameter cannot be an empty string");

/* Get link creation property list */
if (H5P_DEFAULT == lcpl_id)
lcpl_id = H5P_LINK_CREATE_DEFAULT;
else if (true != H5P_isa_class(lcpl_id, H5P_LINK_CREATE))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "lcpl_id is not a link creation property list");

/* Get map creation property list */
if (H5P_DEFAULT == mcpl_id)
mcpl_id = H5P_MAP_CREATE_DEFAULT;
Expand All @@ -285,7 +279,7 @@ H5M__create_api_common(hid_t loc_id, const char *name, hid_t key_type_id, hid_t
0)
HGOTO_ERROR(H5E_MAP, H5E_CANTSET, H5I_INVALID_HID, "can't set object access arguments");
map_args.create.name = name;
map_args.create.lcpl_id = lcpl_id;
map_args.create.lcpl_id = H5P_PLIST_ID(lcpl);
map_args.create.key_type_id = key_type_id;
map_args.create.val_type_id = val_type_id;
map_args.create.mcpl_id = mcpl_id;
Expand Down Expand Up @@ -338,13 +332,19 @@ hid_t
H5Mcreate(hid_t loc_id, const char *name, hid_t key_type_id, hid_t val_type_id, hid_t lcpl_id, hid_t mcpl_id,
hid_t mapl_id)
{
H5P_genplist_t *lcpl; /* Link creation property list */
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Get link creation property list */
if (H5P_DEFAULT == lcpl_id)
lcpl_id = H5P_LINK_CREATE_DEFAULT;
if (NULL == (lcpl = H5P_object_verify(lcpl_id, H5P_TYPE_LINK_CREATE, true)))
HGOTO_ERROR(H5E_MAP, H5E_BADID, H5I_INVALID_HID, "can't find object for ID");

/* Create the map synchronously */
if ((ret_value = H5M__create_api_common(loc_id, name, key_type_id, val_type_id, lcpl_id, mcpl_id, mapl_id,
NULL, NULL)) < 0)
if ((ret_value = H5M__create_api_common(loc_id, name, key_type_id, val_type_id, lcpl, mcpl_id, mapl_id, NULL, NULL)) < 0)
HGOTO_ERROR(H5E_MAP, H5E_CANTCREATE, H5I_INVALID_HID, "unable to create map synchronously");

done:
Expand All @@ -368,19 +368,25 @@ H5Mcreate_async(const char *app_file, const char *app_func, unsigned app_line, h
hid_t es_id)
{
H5VL_object_t *vol_obj = NULL; /* Object for loc_id */
H5P_genplist_t *lcpl; /* Link creation property list */
void *token = NULL; /* Request token for async operation */
void **token_ptr = H5_REQUEST_NULL; /* Pointer to request token for async operation */
hid_t ret_value = H5I_INVALID_HID; /* Return value */

FUNC_ENTER_API(H5I_INVALID_HID)

/* Get link creation property list */
if (H5P_DEFAULT == lcpl_id)
lcpl_id = H5P_LINK_CREATE_DEFAULT;
if (NULL == (lcpl = H5P_object_verify(lcpl_id, H5P_TYPE_LINK_CREATE, true)))
HGOTO_ERROR(H5E_MAP, H5E_BADID, H5I_INVALID_HID, "can't find object for ID");

/* Set up request token pointer for asynchronous operation */
if (H5ES_NONE != es_id)
token_ptr = &token;

/* Create the map asynchronously */
if ((ret_value = H5M__create_api_common(loc_id, name, key_type_id, val_type_id, lcpl_id, mcpl_id, mapl_id,
token_ptr, &vol_obj)) < 0)
if ((ret_value = H5M__create_api_common(loc_id, name, key_type_id, val_type_id, lcpl, mcpl_id, mapl_id, token_ptr, &vol_obj)) < 0)
HGOTO_ERROR(H5E_MAP, H5E_CANTCREATE, H5I_INVALID_HID, "unable to create map asynchronously");

/* If a token was created, add the token to the event set */
Expand Down

0 comments on commit f15c4f7

Please sign in to comment.