mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-05 15:42:32 +08:00
Refactor link creation parameters from being passing as properties in the
link creation property list to vararg function parameters.
This commit is contained in:
parent
07c3a39bf5
commit
b8bb6aec7e
@ -323,7 +323,6 @@ herr_t
|
||||
H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new_name)
|
||||
{
|
||||
hid_t lcpl_id = H5P_LINK_CREATE_DEFAULT;
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -339,10 +338,6 @@ H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new
|
||||
if(H5CX_set_loc(cur_loc_id) < 0)
|
||||
HGOTO_ERROR(H5E_SYM, H5E_CANTSET, FAIL, "can't set collective metadata read info")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* Create link */
|
||||
if(type == H5L_TYPE_HARD) {
|
||||
H5VL_object_t *vol_obj; /* Object token of loc_id */
|
||||
@ -363,18 +358,12 @@ H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5I_object(cur_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET, &vol_obj->data) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_LOC_PARAMS, &loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target loc params")
|
||||
|
||||
/* Construct a temporary VOL object */
|
||||
tmp_vol_obj.data = NULL;
|
||||
tmp_vol_obj.connector = vol_obj->connector;
|
||||
|
||||
/* Create the link through the VOL */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, &tmp_vol_obj, &loc_params2, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, &tmp_vol_obj, &loc_params2, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, vol_obj->data, loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
} /* end if */
|
||||
else if(type == H5L_TYPE_SOFT) {
|
||||
@ -390,12 +379,8 @@ H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5I_object(cur_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_NAME, &cur_name) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for target name")
|
||||
|
||||
/* Create the link through the VOL */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_SOFT, vol_obj, &loc_params, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_SOFT, vol_obj, &loc_params, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, cur_name) < 0)
|
||||
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
} /* end else-if */
|
||||
else
|
||||
@ -419,7 +404,6 @@ H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type,
|
||||
hid_t new_loc_id, const char *new_name)
|
||||
{
|
||||
hid_t lcpl_id = H5P_LINK_CREATE_DEFAULT;
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -435,10 +419,6 @@ H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type,
|
||||
if(H5CX_set_loc(cur_loc_id) < 0)
|
||||
HGOTO_ERROR(H5E_SYM, H5E_CANTSET, FAIL, "can't set collective metadata read info")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* Create the appropriate kind of link */
|
||||
if(type == H5L_TYPE_HARD) {
|
||||
H5VL_object_t *vol_obj1; /* Object token of loc_id */
|
||||
@ -462,14 +442,8 @@ H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type,
|
||||
if(NULL == (vol_obj2 = (H5VL_object_t *)H5I_object(new_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET, &vol_obj1->data) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target id")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_LOC_PARAMS, &loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target name")
|
||||
|
||||
/* Create the link through the VOL */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, vol_obj2, &loc_params2, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, vol_obj2, &loc_params2, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, vol_obj1->data, loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
} /* end if */
|
||||
else if(type == H5L_TYPE_SOFT) {
|
||||
@ -490,12 +464,8 @@ H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type,
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5I_object(new_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_NAME, &cur_name) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for target name")
|
||||
|
||||
/* Create the link through the VOL */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_SOFT, vol_obj, &loc_params, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_SOFT, vol_obj, &loc_params, lcpl_id, H5P_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, cur_name) < 0)
|
||||
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
} /* end else-if */
|
||||
else
|
||||
|
39
src/H5L.c
39
src/H5L.c
@ -449,7 +449,6 @@ H5Lcreate_soft(const char *link_target, hid_t link_loc_id, const char *link_name
|
||||
{
|
||||
H5VL_object_t *vol_obj = NULL; /* object token of loc_id */
|
||||
H5VL_loc_params_t loc_params;
|
||||
H5P_genplist_t *plist = NULL; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -483,20 +482,12 @@ H5Lcreate_soft(const char *link_target, hid_t link_loc_id, const char *link_name
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5VL_vol_object(link_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_NAME, &link_target) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for target name")
|
||||
|
||||
/* Verify access property list and set up collective metadata if appropriate */
|
||||
if(H5CX_set_apl(&lapl_id, H5P_CLS_LACC, link_loc_id, TRUE) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTSET, FAIL, "can't set access property list info")
|
||||
|
||||
/* Create the link */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_SOFT, vol_obj, &loc_params, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_SOFT, vol_obj, &loc_params, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, link_target) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTCREATE, FAIL, "unable to create soft link")
|
||||
|
||||
done:
|
||||
@ -529,7 +520,6 @@ H5Lcreate_hard(hid_t cur_loc_id, const char *cur_name,
|
||||
H5VL_object_t tmp_vol_obj; /* Temporary object token of */
|
||||
H5VL_loc_params_t loc_params1;
|
||||
H5VL_loc_params_t loc_params2;
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -583,22 +573,12 @@ H5Lcreate_hard(hid_t cur_loc_id, const char *cur_name,
|
||||
if(vol_obj1->connector->cls->value != vol_obj2->connector->cls->value)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "Objects are accessed through different VOL connectors and can't be linked")
|
||||
|
||||
/* Get the link creation plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_LINK, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* Set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET, (vol_obj1 ? &(vol_obj1->data) : NULL)) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTGET, FAIL, "can't set property value for target id")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_LOC_PARAMS, &loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTGET, FAIL, "can't set property value for target name")
|
||||
|
||||
/* Construct a temporary VOL object */
|
||||
tmp_vol_obj.data = (vol_obj2 ? (vol_obj2->data) : NULL);
|
||||
tmp_vol_obj.connector = (vol_obj1 != NULL ? vol_obj1->connector : vol_obj2->connector);
|
||||
|
||||
/* Create the link */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, &tmp_vol_obj, &loc_params2, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, &tmp_vol_obj, &loc_params2, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, (vol_obj1 ? vol_obj1->data : NULL), loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTCREATE, FAIL, "unable to create hard link")
|
||||
|
||||
done:
|
||||
@ -636,7 +616,6 @@ H5Lcreate_ud(hid_t link_loc_id, const char *link_name, H5L_type_t link_type,
|
||||
{
|
||||
H5VL_object_t *vol_obj = NULL; /* Object token of loc_id */
|
||||
H5VL_loc_params_t loc_params;
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -668,20 +647,8 @@ H5Lcreate_ud(hid_t link_loc_id, const char *link_name, H5L_type_t link_type,
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5I_object(link_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TYPE, &link_type) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value from plist")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_UDATA, &udata) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value from plist")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_UDATA_SIZE, &udata_size) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value from plist")
|
||||
|
||||
/* Create external link */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_UD, vol_obj, &loc_params, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_UD, vol_obj, &loc_params, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, link_type, udata, udata_size) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
|
||||
done:
|
||||
|
@ -349,7 +349,6 @@ H5Lcreate_external(const char *file_name, const char *obj_name,
|
||||
size_t file_name_len; /* Length of file name string */
|
||||
size_t norm_obj_name_len; /* Length of normalized object name string */
|
||||
uint8_t *p; /* Pointer into external link buffer */
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
H5L_type_t link_type = H5L_TYPE_EXTERNAL;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
@ -400,20 +399,8 @@ H5Lcreate_external(const char *file_name, const char *obj_name,
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5I_object(link_loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* Set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TYPE, &link_type) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value from plist")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_UDATA, &ext_link_buf) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value from plist")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_UDATA_SIZE, &buf_size) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value from plist")
|
||||
|
||||
/* Create an external link */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_UD, vol_obj, &loc_params, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_UD, vol_obj, &loc_params, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, link_type, ext_link_buf, buf_size) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "unable to create external link")
|
||||
|
||||
done:
|
||||
|
13
src/H5O.c
13
src/H5O.c
@ -314,7 +314,6 @@ H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name, hid_t lcpl_id,
|
||||
H5VL_object_t tmp_vol_obj; /* Temporary object token of */
|
||||
H5VL_loc_params_t loc_params1;
|
||||
H5VL_loc_params_t loc_params2;
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -363,22 +362,12 @@ H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name, hid_t lcpl_id,
|
||||
if (vol_obj1->connector->cls->value != vol_obj2->connector->cls->value)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "Objects are accessed through different VOL connectors and can't be linked")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* set creation properties */
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET, &vol_obj1->data) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target id")
|
||||
if(H5P_set(plist, H5VL_PROP_LINK_TARGET_LOC_PARAMS, &loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target id")
|
||||
|
||||
/* Construct a temporary VOL object */
|
||||
tmp_vol_obj.data = vol_obj2->data;
|
||||
tmp_vol_obj.connector = (vol_obj1 != NULL ? vol_obj1->connector : vol_obj2->connector);
|
||||
|
||||
/* Create a link to the object */
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, &tmp_vol_obj, &loc_params2, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
if(H5VL_link_create(H5VL_LINK_CREATE_HARD, &tmp_vol_obj, &loc_params2, lcpl_id, lapl_id, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, vol_obj1->data, loc_params1) < 0)
|
||||
HGOTO_ERROR(H5E_OHDR, H5E_CANTCREATE, FAIL, "unable to create link")
|
||||
|
||||
done:
|
||||
|
@ -48,30 +48,6 @@
|
||||
#define H5L_CRT_INTERMEDIATE_GROUP_ENC H5P__encode_unsigned
|
||||
#define H5L_CRT_INTERMEDIATE_GROUP_DEC H5P__decode_unsigned
|
||||
|
||||
/* ======== VOL specific properties ========= */
|
||||
/* Definitions for target object ID */
|
||||
#define H5L_CRT_TARGET_SIZE sizeof(void *)
|
||||
#define H5L_CRT_TARGET_DEF NULL
|
||||
|
||||
/* Definitions for Location params */
|
||||
#define H5L_CRT_LOCATION_SIZE sizeof(H5VL_loc_params_t)
|
||||
#define H5L_CRT_LOCATION_DEF {H5I_BADID, H5VL_OBJECT_BY_SELF, {{HADDR_UNDEF}}}
|
||||
|
||||
/* Definitions for target object NAME */
|
||||
#define H5L_CRT_TARGET_NAME_SIZE sizeof(char *)
|
||||
#define H5L_CRT_TARGET_NAME_DEF NULL
|
||||
|
||||
/* Definitions for link type */
|
||||
#define H5L_CRT_LINK_TYPE_SIZE sizeof(link_type)
|
||||
#define H5L_CRT_LINK_TYPE_DEF H5L_TYPE_ERROR
|
||||
|
||||
/* Definitions for UDATA */
|
||||
#define H5L_CRT_UDATA_SIZE sizeof(void *)
|
||||
#define H5L_CRT_UDATA_DEF NULL
|
||||
|
||||
/* Definitions for UDATA_SIZE */
|
||||
#define H5L_CRT_UDATA_SIZE_SIZE sizeof(size_t)
|
||||
#define H5L_CRT_UDATA_SIZE_DEF 0
|
||||
|
||||
/******************/
|
||||
/* Local Typedefs */
|
||||
@ -143,12 +119,6 @@ static const unsigned H5L_def_intmd_group_g = H5L_CRT_INTERMEDIATE_GROUP_DEF;
|
||||
herr_t
|
||||
H5P_lcrt_reg_prop(H5P_genclass_t *pclass)
|
||||
{
|
||||
void* target = H5L_CRT_TARGET_DEF;
|
||||
H5VL_loc_params_t loc_params = H5L_CRT_LOCATION_DEF;
|
||||
char *target_name = H5L_CRT_TARGET_NAME_DEF;
|
||||
H5L_type_t link_type = H5L_CRT_LINK_TYPE_DEF;
|
||||
void *udata = H5L_CRT_UDATA_DEF;
|
||||
size_t udata_size = H5L_CRT_UDATA_SIZE_DEF;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
@ -159,30 +129,6 @@ H5P_lcrt_reg_prop(H5P_genclass_t *pclass)
|
||||
NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
if(H5P__register_real(pclass, H5VL_PROP_LINK_TARGET, H5L_CRT_TARGET_SIZE, &target,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
if(H5P__register_real(pclass, H5VL_PROP_LINK_TARGET_LOC_PARAMS, H5L_CRT_LOCATION_SIZE, &loc_params,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
if(H5P__register_real(pclass, H5VL_PROP_LINK_TARGET_NAME, H5L_CRT_TARGET_NAME_SIZE, &target_name,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
if(H5P__register_real(pclass, H5VL_PROP_LINK_TYPE, H5L_CRT_LINK_TYPE_SIZE, &link_type,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
if(H5P__register_real(pclass, H5VL_PROP_LINK_UDATA, H5L_CRT_UDATA_SIZE, &udata,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
if(H5P__register_real(pclass, H5VL_PROP_LINK_UDATA_SIZE, H5L_CRT_UDATA_SIZE_SIZE, &udata_size,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5P_lcrt_reg_prop() */
|
||||
|
@ -123,7 +123,7 @@ static herr_t H5VL__group_close(void *obj, const H5VL_class_t *cls,
|
||||
hid_t dxpl_id, void **req);
|
||||
static herr_t H5VL__link_create(H5VL_link_create_type_t create_type, void *obj,
|
||||
const H5VL_loc_params_t *loc_params, const H5VL_class_t *cls, hid_t lcpl_id,
|
||||
hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
hid_t lapl_id, hid_t dxpl_id, void **req, va_list arguments);
|
||||
static herr_t H5VL__link_copy(void *src_obj, const H5VL_loc_params_t *loc_params1,
|
||||
void *dst_obj, const H5VL_loc_params_t *loc_params2, const H5VL_class_t *cls,
|
||||
hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
@ -4002,7 +4002,8 @@ done:
|
||||
*/
|
||||
static herr_t
|
||||
H5VL__link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params,
|
||||
const H5VL_class_t *cls, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req)
|
||||
const H5VL_class_t *cls, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req,
|
||||
va_list arguments)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
@ -4013,7 +4014,7 @@ H5VL__link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc
|
||||
HGOTO_ERROR(H5E_VOL, H5E_UNSUPPORTED, FAIL, "VOL connector has no 'link create' method")
|
||||
|
||||
/* Call the corresponding VOL callback */
|
||||
if((cls->link_cls.create)(create_type, obj, loc_params, lcpl_id, lapl_id, dxpl_id, req) < 0)
|
||||
if((cls->link_cls.create)(create_type, obj, loc_params, lcpl_id, lapl_id, dxpl_id, req, arguments) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTCREATE, FAIL, "link create failed")
|
||||
|
||||
done:
|
||||
@ -4034,23 +4035,28 @@ done:
|
||||
herr_t
|
||||
H5VL_link_create(H5VL_link_create_type_t create_type, const H5VL_object_t *vol_obj,
|
||||
const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id,
|
||||
void **req)
|
||||
void **req, ...)
|
||||
{
|
||||
H5VL_object_t tmp_vol_obj; /* Temporary object token of */
|
||||
va_list arguments; /* Argument list passed from the API call */
|
||||
hbool_t arg_started = FALSE; /* Whether the va_list has been started */
|
||||
hbool_t vol_wrapper_set = FALSE; /* Whether the VOL object wrapping context was set up */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
|
||||
/* Start the varargs, so they can be copied */
|
||||
HDva_start(arguments, req);
|
||||
arg_started = TRUE;
|
||||
|
||||
/* Special case for hard links */
|
||||
if(H5VL_LINK_CREATE_HARD == create_type && NULL == vol_obj->data) {
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
va_list tmp_arguments; /* Copy of argument list passed in */
|
||||
|
||||
/* Get the VOL data pointer from the fapl */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(lcpl_id)))
|
||||
HGOTO_ERROR(H5E_VOL, H5E_BADTYPE, FAIL, "not a file access property list")
|
||||
if(H5P_peek(plist, H5VL_PROP_LINK_TARGET, &tmp_vol_obj.data) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTGET, FAIL, "can't get VOL connector info")
|
||||
/* Get the VOL data pointer from the varargs */
|
||||
HDva_copy(tmp_arguments, arguments);
|
||||
tmp_vol_obj.data = HDva_arg(tmp_arguments, void *);
|
||||
HDva_end(tmp_arguments);
|
||||
} /* end if */
|
||||
else
|
||||
/* Use the VOL object passed in */
|
||||
@ -4063,10 +4069,14 @@ H5VL_link_create(H5VL_link_create_type_t create_type, const H5VL_object_t *vol_o
|
||||
vol_wrapper_set = TRUE;
|
||||
|
||||
/* Call the corresponding internal VOL routine */
|
||||
if(H5VL__link_create(create_type, vol_obj->data, loc_params, vol_obj->connector->cls, lcpl_id, lapl_id, dxpl_id, req) < 0)
|
||||
if(H5VL__link_create(create_type, vol_obj->data, loc_params, vol_obj->connector->cls, lcpl_id, lapl_id, dxpl_id, req, arguments) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTCREATE, FAIL, "link create failed")
|
||||
|
||||
done:
|
||||
/* End access to the va_list, if we started it */
|
||||
if(arg_started)
|
||||
HDva_end(arguments);
|
||||
|
||||
/* Reset object wrapping info in API context */
|
||||
if(vol_wrapper_set && H5VL_reset_vol_wrapper() < 0)
|
||||
HDONE_ERROR(H5E_VOL, H5E_CANTRESET, FAIL, "can't reset VOL wrapper info")
|
||||
@ -4089,21 +4099,22 @@ done:
|
||||
*/
|
||||
herr_t
|
||||
H5VLlink_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params,
|
||||
hid_t connector_id, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req)
|
||||
hid_t connector_id, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req,
|
||||
va_list arguments)
|
||||
{
|
||||
H5VL_class_t *cls; /* VOL connector's class struct */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API_NOINIT
|
||||
H5TRACE8("e", "Vk*x*xiiii**x", create_type, obj, loc_params, connector_id,
|
||||
lcpl_id, lapl_id, dxpl_id, req);
|
||||
H5TRACE9("e", "Vk*x*xiiii**xx", create_type, obj, loc_params, connector_id,
|
||||
lcpl_id, lapl_id, dxpl_id, req, arguments);
|
||||
|
||||
/* Get class pointer */
|
||||
if(NULL == (cls = (H5VL_class_t *)H5I_object_verify(connector_id, H5I_VOL)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a VOL connector ID")
|
||||
|
||||
/* Call the corresponding internal VOL routine */
|
||||
if(H5VL__link_create(create_type, obj, loc_params, cls, lcpl_id, lapl_id, dxpl_id, req) < 0)
|
||||
if(H5VL__link_create(create_type, obj, loc_params, cls, lcpl_id, lapl_id, dxpl_id, req, arguments) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTCREATE, FAIL, "unable to create link")
|
||||
|
||||
done:
|
||||
|
@ -41,7 +41,7 @@
|
||||
herr_t
|
||||
H5VL__native_link_create(H5VL_link_create_type_t create_type, void *obj,
|
||||
const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t H5_ATTR_UNUSED lapl_id,
|
||||
hid_t H5_ATTR_UNUSED dxpl_id, void H5_ATTR_UNUSED **req)
|
||||
hid_t H5_ATTR_UNUSED dxpl_id, void H5_ATTR_UNUSED **req, va_list arguments)
|
||||
{
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
@ -57,13 +57,8 @@ H5VL__native_link_create(H5VL_link_create_type_t create_type, void *obj,
|
||||
{
|
||||
H5G_loc_t cur_loc;
|
||||
H5G_loc_t link_loc;
|
||||
void *cur_obj;
|
||||
H5VL_loc_params_t cur_params;
|
||||
|
||||
if(H5P_get(plist, H5VL_PROP_LINK_TARGET, &cur_obj) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for current location id")
|
||||
if(H5P_get(plist, H5VL_PROP_LINK_TARGET_LOC_PARAMS, &cur_params) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for current name")
|
||||
void *cur_obj = HDva_arg(arguments, void *);
|
||||
H5VL_loc_params_t cur_params = HDva_arg(arguments, H5VL_loc_params_t);
|
||||
|
||||
if(NULL != cur_obj && H5G_loc_real(cur_obj, cur_params.obj_type, &cur_loc) < 0)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
|
||||
@ -99,15 +94,12 @@ H5VL__native_link_create(H5VL_link_create_type_t create_type, void *obj,
|
||||
|
||||
case H5VL_LINK_CREATE_SOFT:
|
||||
{
|
||||
char *target_name;
|
||||
char *target_name = HDva_arg(arguments, char *);
|
||||
H5G_loc_t link_loc; /* Group location for new link */
|
||||
|
||||
if(H5G_loc_real(obj, loc_params->obj_type, &link_loc) < 0)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
|
||||
|
||||
if(H5P_get(plist, H5VL_PROP_LINK_TARGET_NAME, &target_name) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for targe name")
|
||||
|
||||
/* Create the link */
|
||||
if((ret_value = H5L_create_soft(target_name, &link_loc, loc_params->loc_data.loc_by_name.name, lcpl_id)) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
@ -117,23 +109,15 @@ H5VL__native_link_create(H5VL_link_create_type_t create_type, void *obj,
|
||||
case H5VL_LINK_CREATE_UD:
|
||||
{
|
||||
H5G_loc_t link_loc; /* Group location for new link */
|
||||
H5L_type_t link_type;
|
||||
void *udata;
|
||||
size_t udata_size;
|
||||
H5L_type_t link_type = HDva_arg(arguments, H5L_type_t);
|
||||
void *udata = HDva_arg(arguments, void *);
|
||||
size_t udata_size = HDva_arg(arguments, size_t);
|
||||
|
||||
if(H5G_loc_real(obj, loc_params->obj_type, &link_loc) < 0)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
|
||||
|
||||
if(H5P_get(plist, H5VL_PROP_LINK_TYPE, &link_type) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for link type")
|
||||
if(H5P_get(plist, H5VL_PROP_LINK_UDATA, &udata) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for udata")
|
||||
if(H5P_get(plist, H5VL_PROP_LINK_UDATA_SIZE, &udata_size) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get property value for udata size")
|
||||
|
||||
/* Create link */
|
||||
if(H5L__create_ud(&link_loc, loc_params->loc_data.loc_by_name.name, udata, udata_size,
|
||||
link_type, lcpl_id) < 0)
|
||||
if(H5L__create_ud(&link_loc, loc_params->loc_data.loc_by_name.name, udata, udata_size, link_type, lcpl_id) < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "unable to create link")
|
||||
break;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ H5_DLL herr_t H5VL__native_group_optional(void *obj, hid_t dxpl_id, void **req,
|
||||
H5_DLL herr_t H5VL__native_group_close(void *grp, hid_t dxpl_id, void **req);
|
||||
|
||||
/* Link callbacks */
|
||||
H5_DLL herr_t H5VL__native_link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VL__native_link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, va_list arguments);
|
||||
H5_DLL herr_t H5VL__native_link_copy(void *src_obj, const H5VL_loc_params_t *loc_params1, void *dst_obj, const H5VL_loc_params_t *loc_params2, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VL__native_link_move(void *src_obj, const H5VL_loc_params_t *loc_params1, void *dst_obj, const H5VL_loc_params_t *loc_params2, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VL__native_link_get(void *obj, const H5VL_loc_params_t *loc_params, H5VL_link_get_t get_type, hid_t dxpl_id, void **req, va_list arguments);
|
||||
|
@ -80,6 +80,9 @@ static herr_t H5VL_pass_through_file_specific_reissue(void *obj, hid_t connector
|
||||
H5VL_file_specific_t specific_type, hid_t dxpl_id, void **req, ...);
|
||||
static herr_t H5VL_pass_through_request_specific_reissue(void *obj, hid_t connector_id,
|
||||
H5VL_request_specific_t specific_type, ...);
|
||||
static herr_t H5VL_pass_through_link_create_reissue(H5VL_link_create_type_t create_type,
|
||||
void *obj, const H5VL_loc_params_t *loc_params, hid_t connector_id,
|
||||
hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, ...);
|
||||
static H5VL_pass_through_t *H5VL_pass_through_new_obj(void *under_obj,
|
||||
hid_t under_vol_id);
|
||||
static herr_t H5VL_pass_through_free_obj(H5VL_pass_through_t *obj);
|
||||
@ -149,7 +152,7 @@ static herr_t H5VL_pass_through_group_optional(void *obj, hid_t dxpl_id, void **
|
||||
static herr_t H5VL_pass_through_group_close(void *grp, hid_t dxpl_id, void **req);
|
||||
|
||||
/* Link callbacks */
|
||||
static herr_t H5VL_pass_through_link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
static herr_t H5VL_pass_through_link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, va_list arguments);
|
||||
static herr_t H5VL_pass_through_link_copy(void *src_obj, const H5VL_loc_params_t *loc_params1, void *dst_obj, const H5VL_loc_params_t *loc_params2, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
static herr_t H5VL_pass_through_link_move(void *src_obj, const H5VL_loc_params_t *loc_params1, void *dst_obj, const H5VL_loc_params_t *loc_params2, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
static herr_t H5VL_pass_through_link_get(void *obj, const H5VL_loc_params_t *loc_params, H5VL_link_get_t get_type, hid_t dxpl_id, void **req, va_list arguments);
|
||||
@ -2067,6 +2070,32 @@ H5VL_pass_through_group_close(void *grp, hid_t dxpl_id, void **req)
|
||||
} /* end H5VL_pass_through_group_close() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5VL_pass_through_link_create_reissue
|
||||
*
|
||||
* Purpose: Re-wrap vararg arguments into a va_list and reissue the
|
||||
* link create callback to the underlying VOL connector.
|
||||
*
|
||||
* Return: Success: 0
|
||||
* Failure: -1
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5VL_pass_through_link_create_reissue(H5VL_link_create_type_t create_type,
|
||||
void *obj, const H5VL_loc_params_t *loc_params, hid_t connector_id,
|
||||
hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, ...)
|
||||
{
|
||||
va_list arguments;
|
||||
herr_t ret_value;
|
||||
|
||||
va_start(arguments, req);
|
||||
ret_value = H5VLlink_create(create_type, obj, loc_params, connector_id, lcpl_id, lapl_id, dxpl_id, req, arguments);
|
||||
va_end(arguments);
|
||||
|
||||
return ret_value;
|
||||
} /* end H5VL_pass_through_link_create_reissue() */
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5VL_pass_through_link_create
|
||||
*
|
||||
@ -2078,7 +2107,9 @@ H5VL_pass_through_group_close(void *grp, hid_t dxpl_id, void **req)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5VL_pass_through_link_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req)
|
||||
H5VL_pass_through_link_create(H5VL_link_create_type_t create_type, void *obj,
|
||||
const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id,
|
||||
hid_t dxpl_id, void **req, va_list arguments)
|
||||
{
|
||||
H5VL_pass_through_t *o = (H5VL_pass_through_t *)obj;
|
||||
hid_t under_vol_id = -1;
|
||||
@ -2095,9 +2126,11 @@ H5VL_pass_through_link_create(H5VL_link_create_type_t create_type, void *obj, co
|
||||
/* Fix up the link target object for hard link creation */
|
||||
if(H5VL_LINK_CREATE_HARD == create_type) {
|
||||
void *cur_obj;
|
||||
H5VL_loc_params_t cur_params;
|
||||
|
||||
/* Retrieve the object for the link target */
|
||||
H5Pget(lcpl_id, H5VL_PROP_LINK_TARGET, &cur_obj);
|
||||
/* Retrieve the object & loc params for the link target */
|
||||
cur_obj = va_arg(arguments, void *);
|
||||
cur_params = va_arg(arguments, H5VL_loc_params_t);
|
||||
|
||||
/* If it's a non-NULL pointer, find the 'under object' and re-set the property */
|
||||
if(cur_obj) {
|
||||
@ -2106,11 +2139,14 @@ H5VL_pass_through_link_create(H5VL_link_create_type_t create_type, void *obj, co
|
||||
under_vol_id = ((H5VL_pass_through_t *)cur_obj)->under_vol_id;
|
||||
|
||||
/* Set the object for the link target */
|
||||
H5Pset(lcpl_id, H5VL_PROP_LINK_TARGET, &(((H5VL_pass_through_t *)cur_obj)->under_object));
|
||||
cur_obj = ((H5VL_pass_through_t *)cur_obj)->under_object;
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
|
||||
ret_value = H5VLlink_create(create_type, (o ? o->under_object : NULL), loc_params, under_vol_id, lcpl_id, lapl_id, dxpl_id, req);
|
||||
/* Re-issue 'link create' call, using the unwrapped pieces */
|
||||
ret_value = H5VL_pass_through_link_create_reissue(create_type, (o ? o->under_object : NULL), loc_params, under_vol_id, lcpl_id, lapl_id, dxpl_id, req, cur_obj, cur_params);
|
||||
} /* end if */
|
||||
else
|
||||
ret_value = H5VLlink_create(create_type, (o ? o->under_object : NULL), loc_params, under_vol_id, lcpl_id, lapl_id, dxpl_id, req, arguments);
|
||||
|
||||
/* Check for async request */
|
||||
if(req && *req)
|
||||
|
@ -163,7 +163,7 @@ H5_DLL herr_t H5VL_group_optional(const H5VL_object_t *vol_obj, hid_t dxpl_id, v
|
||||
H5_DLL herr_t H5VL_group_close(const H5VL_object_t *vol_obj, hid_t dxpl_id, void **req);
|
||||
|
||||
/* Link functions */
|
||||
H5_DLL herr_t H5VL_link_create(H5VL_link_create_type_t create_type, const H5VL_object_t *vol_obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VL_link_create(H5VL_link_create_type_t create_type, const H5VL_object_t *vol_obj, const H5VL_loc_params_t *loc_params, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, ...);
|
||||
H5_DLL herr_t H5VL_link_copy(const H5VL_object_t *src_vol_obj, const H5VL_loc_params_t *loc_params1, const H5VL_object_t *dst_vol_obj, const H5VL_loc_params_t *loc_params2, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VL_link_move(const H5VL_object_t *src_vol_obj, const H5VL_loc_params_t *loc_params1, const H5VL_object_t *dst_vol_obj, const H5VL_loc_params_t *loc_params2, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VL_link_get(const H5VL_object_t *vol_obj, const H5VL_loc_params_t *loc_params, H5VL_link_get_t get_type, hid_t dxpl_id, void **req, ...);
|
||||
|
@ -32,14 +32,6 @@
|
||||
/* Public Macros */
|
||||
/*****************/
|
||||
|
||||
/* Link creation property names */
|
||||
#define H5VL_PROP_LINK_TARGET "target_location_object"
|
||||
#define H5VL_PROP_LINK_TARGET_LOC_PARAMS "target_params"
|
||||
#define H5VL_PROP_LINK_TARGET_NAME "target_name"
|
||||
#define H5VL_PROP_LINK_TYPE "link type"
|
||||
#define H5VL_PROP_LINK_UDATA "udata"
|
||||
#define H5VL_PROP_LINK_UDATA_SIZE "udata size"
|
||||
|
||||
/* Group creation property names */
|
||||
#define H5VL_PROP_GRP_LCPL_ID "group_lcpl_id"
|
||||
|
||||
@ -322,7 +314,7 @@ typedef struct H5VL_group_class_t {
|
||||
/* H5L routines */
|
||||
typedef struct H5VL_link_class_t {
|
||||
herr_t (*create)(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params,
|
||||
hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, va_list argumenmts);
|
||||
herr_t (*copy)(void *src_obj, const H5VL_loc_params_t *loc_params1,
|
||||
void *dst_obj, const H5VL_loc_params_t *loc_params2,
|
||||
hid_t lcpl, hid_t lapl, hid_t dxpl_id, void **req);
|
||||
@ -505,7 +497,7 @@ H5_DLL herr_t H5VLgroup_optional(void *obj, hid_t connector_id, hid_t dxpl_id, v
|
||||
H5_DLL herr_t H5VLgroup_close(void *grp, hid_t connector_id, hid_t dxpl_id, void **req);
|
||||
|
||||
/* Public wrappers for link callbacks */
|
||||
H5_DLL herr_t H5VLlink_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t connector_id, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
H5_DLL herr_t H5VLlink_create(H5VL_link_create_type_t create_type, void *obj, const H5VL_loc_params_t *loc_params, hid_t connector_id, hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req, va_list arguments);
|
||||
H5_DLL herr_t H5VLlink_copy(void *src_obj, const H5VL_loc_params_t *loc_params1,
|
||||
void *dst_obj, const H5VL_loc_params_t *loc_params2, hid_t connector_id,
|
||||
hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id, void **req);
|
||||
|
Loading…
Reference in New Issue
Block a user