Merging in latest from upstream (HDFFV/hdf5:refs/heads/develop)

* commit '5f99891e6dc59524fb6e43ca96a86df22b403c61':
  Move options to root cmake file
  EED-258 Add modules uses toolchain files
  Updates to the VOL ID and object API calls.
This commit is contained in:
Allen Byrne 2018-10-19 13:49:55 -05:00
commit e1308fc432
31 changed files with 428 additions and 341 deletions

View File

@ -3160,6 +3160,7 @@
./java/lib/ext/slf4j-simple-1.7.25.jar
# CMake-specific Files
./config/GCC.cmake
./config/intel.cmake
./config/cmake/cacheinit.cmake

10
config/GCC.cmake Normal file
View File

@ -0,0 +1,10 @@
# Uncomment the following to use cross-compiling
#set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_COMPILER_VENDOR "GCC")
set(CMAKE_C_COMPILER cc)
set(CMAKE_CXX_COMPILER c++)
set(CMAKE_Fortran_COMPILER gfortran)
# the following is used if cross-compiling
set(CMAKE_CROSSCOMPILING_EMULATOR "")

View File

@ -142,125 +142,105 @@ visit_cb(hid_t oid, const char *name,
} /* end h5_verify_cached_stabs_cb() */
int main(int argc, char **argv) {
const char file_name[]="large_dataset.h5";
const char file_name[]="large_dataset.h5";
const char group_name[]="/Group";
const char dataset_name[]="Data";
char fullpath[500];
hid_t file_id;
hid_t group_id;
hid_t dataspaceId;
hid_t datasetId;
hid_t acc_tpl;
hid_t under_fapl;
hid_t vol_id, vol_id2;
hid_t int_id;
hid_t attr;
hid_t space;
const unsigned int nelem=60;
int *data;
unsigned int i;
hsize_t dims[1];
ssize_t len;
char name[25];
static hsize_t ds_size[2] = {10, 20};
hid_t datasetId;
hid_t acc_tpl;
hid_t under_fapl;
hid_t vol_id, vol_id2;
hid_t int_id;
hid_t attr;
hid_t space;
const unsigned int nelem=60;
int *data;
unsigned int i;
hsize_t dims[1];
ssize_t len;
char name[25];
static hsize_t ds_size[2] = {10, 20};
under_fapl = H5Pcreate (H5P_FILE_ACCESS);
H5Pset_fapl_native(under_fapl);
assert(H5VLis_registered("native") == 1);
under_fapl = H5Pcreate(H5P_FILE_ACCESS);
H5Pset_fapl_native(under_fapl);
assert(H5VLis_driver_registered("native") == 1);
vol_id = H5VLregister (&H5VL_log_g);
assert(vol_id > 0);
assert(H5VLis_registered("log") == 1);
vol_id = H5VLregister_driver(&H5VL_log_g);
assert(vol_id > 0);
assert(H5VLis_driver_registered("log") == 1);
vol_id2 = H5VLget_driver_id("log");
H5VLinitialize(vol_id2, H5P_DEFAULT);
H5VLclose(vol_id2);
vol_id2 = H5VLget_driver_id("log");
H5VLinitialize(vol_id2, H5P_DEFAULT);
H5VLclose(vol_id2);
native_driver_id = H5VLget_driver_id("native");
assert(native_driver_id > 0);
native_driver_id = H5VLget_driver_id("native");
assert(native_driver_id > 0);
acc_tpl = H5Pcreate (H5P_FILE_ACCESS);
H5Pset_vol(acc_tpl, vol_id, &under_fapl);
acc_tpl = H5Pcreate (H5P_FILE_ACCESS);
H5Pset_vol(acc_tpl, vol_id, &under_fapl);
file_id = H5Fcreate(file_name, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
len = H5VLget_driver_name(file_id, name, 25);
printf ("FILE VOL name = %s %d\n", name, len);
file_id = H5Fcreate(file_name, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
len = H5VLget_driver_name(file_id, name, 25);
printf ("FILE VOL name = %s %d\n", name, len);
group_id = H5Gcreate2(file_id, group_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
len = H5VLget_driver_name(group_id, name, 50);
printf ("GROUP VOL name = %s %d\n", name, len);
group_id = H5Gcreate2(file_id, group_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
len = H5VLget_driver_name(group_id, name, 50);
printf ("GROUP VOL name = %s %d\n", name, len);
int_id = H5Tcopy(H5T_NATIVE_INT);
H5Tcommit2(file_id, "int", int_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT COMMIT name = %s %d\n", name, len);
H5Tclose(int_id);
int_id = H5Tcopy(H5T_NATIVE_INT);
H5Tcommit2(file_id, "int", int_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT COMMIT name = %s %d\n", name, len);
H5Tclose(int_id);
int_id = H5Topen2(file_id, "int", H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT OPEN name = %s %d\n", name, len);
H5Tclose(int_id);
int_id = H5Topen2(file_id, "int", H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT OPEN name = %s %d\n", name, len);
H5Tclose(int_id);
int_id = H5Oopen(file_id,"int",H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT OOPEN name = %s %d\n", name, len);
int_id = H5Oopen(file_id,"int",H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT OOPEN name = %s %d\n", name, len);
len = H5Fget_name(file_id, name, 50);
printf("name = %d %s\n", len, name);
len = H5Fget_name(file_id, name, 50);
printf("name = %d %s\n", len, name);
data = malloc (sizeof(int)*nelem);
for(i=0;i<nelem;++i)
data[i]=i;
data = malloc (sizeof(int)*nelem);
for(i=0;i<nelem;++i)
data[i]=i;
dims [0] = 60;
dataspaceId = H5Screate_simple(1, dims, NULL);
space = H5Screate_simple (2, ds_size, ds_size);
dims [0] = 60;
dataspaceId = H5Screate_simple(1, dims, NULL);
space = H5Screate_simple (2, ds_size, ds_size);
sprintf(fullpath,"%s/%s",group_name,dataset_name);
datasetId = H5Dcreate2(file_id,fullpath,H5T_NATIVE_INT,dataspaceId,H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT);
H5Sclose(dataspaceId);
sprintf(fullpath,"%s/%s",group_name,dataset_name);
datasetId = H5Dcreate2(file_id,fullpath,H5T_NATIVE_INT,dataspaceId,H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT);
H5Sclose(dataspaceId);
len = H5VLget_driver_name(datasetId, name, 50);
printf ("DSET name = %s %d\n", name, len);
len = H5VLget_driver_name(datasetId, name, 50);
printf ("DSET name = %s %d\n", name, len);
H5Dwrite(datasetId, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
H5Dclose(datasetId);
H5Dwrite(datasetId, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
H5Dclose(datasetId);
H5Ovisit2(file_id, H5_INDEX_NAME, H5_ITER_NATIVE, visit_cb, NULL, H5O_INFO_ALL);
H5Ovisit2(file_id, H5_INDEX_NAME, H5_ITER_NATIVE, visit_cb, NULL, H5O_INFO_ALL);
free (data);
H5Oclose(int_id);
H5Sclose (space);
H5Gclose(group_id);
#if 0
free (data);
H5Oclose(int_id);
H5Sclose (space);
H5Gclose(group_id);
H5Fclose(file_id);
H5Pclose(acc_tpl);
H5Pclose(under_fapl);
attr = H5Acreate2(group_id, "attr1", int_id, space, H5P_DEFAULT, H5P_DEFAULT);
int_id = H5Aget_type(attr);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT OPEN name = %s %d\n", name, len);
H5Aclose (attr);
int_id = H5Oopen(file_id,"int",H5P_DEFAULT);
len = H5VLget_driver_name(int_id, name, 50);
printf ("DT OOPEN name = %s %d\n", name, len);
H5Oclose(int_id);
H5Fclose(file_id);
file_id = H5Fopen(file_name, H5F_ACC_RDWR, H5P_DEFAULT);//acc_tpl);
H5Fflush(file_id, H5F_SCOPE_GLOBAL);
#endif
H5Fclose(file_id);
H5Pclose(acc_tpl);
H5Pclose(under_fapl);
H5VLclose(native_driver_id);
H5VLterminate(vol_id, H5P_DEFAULT);
H5VLunregister (vol_id);
assert(H5VLis_registered("log") == 0);
return 0;
H5VLclose(native_driver_id);
H5VLterminate(vol_id, H5P_DEFAULT);
H5VLunregister_driver(vol_id);
assert(H5VLis_driver_registered("log") == 0);
return 0;
}
static herr_t H5VL_log_init(hid_t vipl_id)

View File

@ -288,7 +288,7 @@ H5Acreate2(hid_t loc_id, const char *attr_name, hid_t type_id, hid_t space_id,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, H5I_INVALID_HID, "can't set property value for space id")
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Set location parameters */
@ -301,7 +301,7 @@ H5Acreate2(hid_t loc_id, const char *attr_name, hid_t type_id, hid_t space_id,
HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, H5I_INVALID_HID, "unable to create attribute")
/* Register the new attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -398,7 +398,7 @@ H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
loc_params.loc_data.loc_by_name.lapl_id = lapl_id;
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Create the attribute */
@ -407,7 +407,7 @@ H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, H5I_INVALID_HID, "unable to create attribute")
/* Register the new attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -467,7 +467,7 @@ H5Aopen(hid_t loc_id, const char *attr_name, hid_t aapl_id)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Open the attribute */
@ -476,7 +476,7 @@ H5Aopen(hid_t loc_id, const char *attr_name, hid_t aapl_id)
HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open attribute: '%s'", attr_name)
/* Register the attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -550,7 +550,7 @@ H5Aopen_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if (NULL == (vol_obj = H5VL_get_object(loc_id)))
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Open the attribute */
@ -559,7 +559,7 @@ H5Aopen_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "can't open attribute")
/* Register the attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -642,7 +642,7 @@ H5Aopen_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Open the attribute */
@ -651,7 +651,7 @@ H5Aopen_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open attribute")
/* Register the attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -973,7 +973,7 @@ H5Aget_name_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
HGOTO_ERROR(H5E_ATTR, H5E_CANTSET, FAIL, "can't set access property list info")
/* Get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
loc_params.type = H5VL_OBJECT_BY_IDX;
@ -1118,7 +1118,7 @@ H5Aget_info_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Get the attribute information */
@ -1182,7 +1182,7 @@ H5Aget_info_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Get the attribute information */
@ -1230,7 +1230,7 @@ H5Arename(hid_t loc_id, const char *old_name, const char *new_name)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set up collective metadata if appropriate */
@ -1295,7 +1295,7 @@ H5Arename_by_name(hid_t loc_id, const char *obj_name, const char *old_attr_name,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Rename the attribute */
@ -1373,7 +1373,7 @@ H5Aiterate2(hid_t loc_id, H5_index_t idx_type, H5_iter_order_t order,
loc_params.obj_type = H5I_get_type(loc_id);
/* get the loc object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Iterate over attributes */
@ -1463,7 +1463,7 @@ H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
loc_params.loc_data.loc_by_name.lapl_id = lapl_id;
/* get the loc object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Iterate over attributes */
@ -1518,7 +1518,7 @@ H5Adelete(hid_t loc_id, const char *name)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Delete the attribute */
@ -1577,7 +1577,7 @@ H5Adelete_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Delete the attribute */
@ -1648,7 +1648,7 @@ H5Adelete_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
loc_params.obj_type = H5I_get_type(loc_id);
/* get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Delete the attribute through the VOL */
@ -1724,7 +1724,7 @@ H5Aexists(hid_t obj_id, const char *attr_name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no attribute name")
/* get the object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
loc_params.type = H5VL_OBJECT_BY_SELF;
@ -1777,7 +1777,7 @@ H5Aexists_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
HGOTO_ERROR(H5E_ATTR, H5E_CANTSET, FAIL, "can't set access property list info")
/* get the object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
loc_params.type = H5VL_OBJECT_BY_NAME;

View File

@ -152,7 +152,7 @@ H5Acreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Create the attribute */
@ -161,7 +161,7 @@ H5Acreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id,
HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, H5I_INVALID_HID, "unable to create attribute")
/* Register the new attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register attribute for ID")
done:
@ -218,7 +218,7 @@ H5Aopen_name(hid_t loc_id, const char *name)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if (NULL == (vol_obj = H5VL_get_object(loc_id)))
if (NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Open the attribute */
@ -227,7 +227,7 @@ H5Aopen_name(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open attribute")
/* Register the attribute and get an ID for it */
if ((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if ((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -287,7 +287,7 @@ H5Aopen_idx(hid_t loc_id, unsigned idx)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Open the attribute */
@ -296,7 +296,7 @@ H5Aopen_idx(hid_t loc_id, unsigned idx)
HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open attribute")
/* Register the attribute and get an ID for it */
if((ret_value = H5VL_register_id(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
done:
@ -342,7 +342,7 @@ H5Aget_num_attrs(hid_t loc_id)
loc_params.obj_type = H5I_get_type(loc_id);
/* get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "invalid location identifier")
/* Get the number of attributes for the object */

View File

@ -163,7 +163,7 @@ H5Dcreate2(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id,
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, H5I_INVALID_HID, "unable to create dataset")
/* Get an atom for the dataset */
if((ret_value = H5VL_register_id(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize dataset handle")
done:
@ -256,7 +256,7 @@ H5Dcreate_anon(hid_t loc_id, hid_t type_id, hid_t space_id, hid_t dcpl_id,
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, H5I_INVALID_HID, "unable to create dataset")
/* Get an atom for the dataset */
if((ret_value = H5VL_register_id(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register dataset")
done:
@ -319,7 +319,7 @@ H5Dopen2(hid_t loc_id, const char *name, hid_t dapl_id)
HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open dataset")
/* Register an atom for the dataset */
if((ret_value = H5VL_register_id(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "can't register dataset atom")
done:

View File

@ -157,7 +157,7 @@ H5Dcreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id,
loc_params.obj_type = H5I_get_type(loc_id);
/* get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Create the dataset through the VOL */
@ -166,7 +166,7 @@ H5Dcreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id,
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, H5I_INVALID_HID, "unable to create dataset")
/* Get an atom for the dataset */
if((ret_value = H5VL_register_id(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register dataset")
done:
@ -217,7 +217,7 @@ H5Dopen1(hid_t loc_id, const char *name)
loc_params.obj_type = H5I_get_type(loc_id);
/* get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
/* Open the dataset */
@ -226,7 +226,7 @@ H5Dopen1(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open dataset")
/* Get an atom for the dataset */
if((ret_value = H5VL_register_id(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATASET, dset, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "can't register dataset atom")
done:

View File

@ -2977,7 +2977,7 @@ H5D__virtual_refresh_source_dset(H5D_t **dset)
HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get native VOL driver ID")
/* Get a temporary identifier for this source dataset */
if((temp_id = H5VL_object_register(*dset, H5I_DATASET, native_vol_id, FALSE)) < 0)
if((temp_id = H5VL_register_using_vol_id(H5I_DATASET, *dset, native_vol_id, FALSE)) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTREGISTER, FAIL, "can't register (temporary) source dataset ID")
/* Refresh source dataset */

View File

@ -677,7 +677,7 @@ H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, H5I_INVALID_HID, "unable to increment ref count on VOL driver")
/* Get an atom for the file */
if((ret_value = H5VL_register_id(H5I_FILE, new_file, driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_FILE, new_file, driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize file handle")
done:
@ -757,7 +757,7 @@ H5Fopen(const char *filename, unsigned flags, hid_t fapl_id)
HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, H5I_INVALID_HID, "unable to increment ref count on VOL driver")
/* Get an ID for the file */
if((ret_value = H5VL_register_id(H5I_FILE, new_file, driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_FILE, new_file, driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize file handle")
done:
@ -794,7 +794,7 @@ H5Fflush(hid_t object_id, H5F_scope_t scope)
}
/* get the file object */
if(NULL == (vol_obj = H5VL_get_object(object_id)))
if(NULL == (vol_obj = H5VL_vol_object(object_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Flush the object */
@ -883,7 +883,7 @@ H5Freopen(hid_t file_id)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, H5I_INVALID_HID, "unable to reopen file")
/* Get an atom for the file */
if((ret_value = H5VL_register_id(H5I_FILE, file, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_FILE, file, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize file handle")
done:
@ -1288,7 +1288,7 @@ H5Fget_name(hid_t obj_id, char *name/*out*/, size_t size)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "not a file or file object")
/* Get the file object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "invalid file identifier")
/* Get the filename via the VOL */
@ -1334,7 +1334,7 @@ H5Fget_info2(hid_t obj_id, H5F_info2_t *finfo)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
/* Get the file object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Get the file information */

View File

@ -3303,7 +3303,7 @@ H5F__start_swmr_write(H5F_t *f)
if(grp_dset_count > 0) {
H5VL_object_t *vol_obj = NULL;
if(NULL == (vol_obj = H5VL_get_object(obj_ids[0])))
if(NULL == (vol_obj = H5VL_vol_object(obj_ids[0])))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
vol_driver = vol_obj->driver;

View File

@ -370,7 +370,7 @@ H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id,
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, H5I_INVALID_HID, "unable to create group")
/* Get an atom for the group */
if((ret_value = H5VL_register_id(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize group handle")
done:
@ -450,7 +450,7 @@ H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, H5I_INVALID_HID, "unable to create group")
/* Get an atom for the group */
if((ret_value = H5VL_register_id(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize group handle")
done:
@ -511,7 +511,7 @@ H5Gopen2(hid_t loc_id, const char *name, hid_t gapl_id)
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open group")
/* Register an ID for the group */
if((ret_value = H5VL_register_id(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register group")
done:

View File

@ -240,7 +240,7 @@ H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, H5I_INVALID_HID, "unable to create group")
/* Get an atom for the group */
if((ret_value = H5VL_register_id(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register group")
done:
@ -302,7 +302,7 @@ H5Gopen1(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open group")
/* Get an atom for the group */
if((ret_value = H5VL_register_id(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_GROUP, grp, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register group")
done:

View File

@ -764,7 +764,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5I_register_with_id
* Function: H5I_register_using_existing_id
*
* Purpose: Registers an OBJECT in a TYPE with the supplied ID for it.
* This routine will check to ensure the supplied ID is not already
@ -773,14 +773,17 @@ done:
* registered (thus, it is possible to register one object under
* multiple IDs).
*
* NOTE: Intended for use in refresh calls, where we have to close
* and re-open the underlying data, then hook the object back
* up to the original ID.
*
* Return: SUCCEED/FAIL
*
*-------------------------------------------------------------------------
*/
herr_t
H5I_register_with_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_ref, hid_t id)
H5I_register_using_existing_id(H5I_type_t type, void *object, hbool_t app_ref, hid_t existing_id)
{
H5VL_object_t *new_vol_obj = NULL; /* pointer to new VOL object */
H5I_id_type_t *type_ptr; /* ptr to the type */
H5I_id_info_t *id_ptr; /* ptr to the new ID information */
herr_t ret_value = SUCCEED; /* return value */
@ -789,10 +792,9 @@ H5I_register_with_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t
/* Check arguments */
HDassert(object);
HDassert(vol_driver);
/* Make sure ID is not already in use */
if(NULL != (id_ptr = H5I__find_id(id)))
if(NULL != (id_ptr = H5I__find_id(existing_id)))
HGOTO_ERROR(H5E_ATOM, H5E_BADRANGE, FAIL, "ID already in use")
/* Make sure type number is valid */
@ -806,36 +808,18 @@ H5I_register_with_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t
HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
/* Make sure requested ID belongs to object's type */
if(H5I_TYPE(id) != type)
if(H5I_TYPE(existing_id) != type)
HGOTO_ERROR(H5E_ATOM, H5E_BADRANGE, FAIL, "invalid type for provided ID")
/* Allocate new structure to house this ID */
if(NULL == (id_ptr = H5FL_MALLOC(H5I_id_info_t)))
HGOTO_ERROR(H5E_ATOM, H5E_NOSPACE, FAIL, "memory allocation failed")
/* Set up the new VOL object */
if(NULL == (new_vol_obj = H5FL_CALLOC(H5VL_object_t)))
HGOTO_ERROR(H5E_ATOM, H5E_CANTALLOC, FAIL, "can't allocate memory for VOL object");
new_vol_obj->driver = vol_driver;
new_vol_obj->data = object;
/* Bump the reference count on the VOL driver */
vol_driver->nrefs++;
/* Create the struct & insert requested ID */
id_ptr->id = id;
id_ptr->id = existing_id;
id_ptr->count = 1; /* initial reference count*/
id_ptr->app_count = !!app_ref;
if(H5I_DATATYPE == type) {
void *dt = NULL;
if(NULL == (dt = (void *)H5T_construct_datatype(new_vol_obj)))
HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, "can't construct datatype object");
id_ptr->obj_ptr = dt;
}
else
id_ptr->obj_ptr = new_vol_obj;
id_ptr->obj_ptr = object;
/* Insert into the type */
if(H5SL_insert(type_ptr->ids, id_ptr, &id_ptr->id) < 0)
@ -844,7 +828,7 @@ H5I_register_with_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5I_register_with_id() */
} /* end H5I_register_using_existing_id() */
/*-------------------------------------------------------------------------
@ -2222,7 +2206,7 @@ H5I__get_file_id(hid_t obj_id, H5I_type_t type)
FUNC_ENTER_STATIC
/* Get the object pointer */
if (NULL == (vol_obj = H5VL_get_object(obj_id)))
if (NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid identifier")
/* Get the file through the VOL */
@ -2237,7 +2221,7 @@ H5I__get_file_id(hid_t obj_id, H5I_type_t type)
/* If the ID does not exist, register it with the VOL driver */
if (H5I_INVALID_HID == ret_value) {
if ((ret_value = H5VL_register_id(H5I_FILE, file, vol_obj->driver, TRUE)) < 0)
if ((ret_value = H5VL_register(H5I_FILE, file, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize file handle")
}
else {

View File

@ -67,13 +67,7 @@ typedef struct H5I_class_t {
H5_DLL herr_t H5I_register_type(const H5I_class_t *cls);
H5_DLL int64_t H5I_nmembers(H5I_type_t type);
H5_DLL herr_t H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref);
H5_DLL hid_t H5I_register(H5I_type_t type, const void *object, hbool_t app_ref);
H5_DLL herr_t H5I_register_with_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_ref, hid_t id);
H5_DLL void *H5I_subst(hid_t id, const void *new_object);
H5_DLL void *H5I_object(hid_t id);
H5_DLL void *H5I_object_verify(hid_t id, H5I_type_t id_type);
H5_DLL H5I_type_t H5I_get_type(hid_t id);
H5_DLL void *H5I_remove(hid_t id);
H5_DLL herr_t H5I_iterate(H5I_type_t type, H5I_search_func_t func, void *udata, hbool_t app_ref);
H5_DLL int H5I_get_ref(hid_t id, hbool_t app_ref);
H5_DLL int H5I_inc_ref(hid_t id, hbool_t app_ref);
@ -83,6 +77,26 @@ H5_DLL int H5I_dec_app_ref_always_close(hid_t id);
H5_DLL int H5I_dec_type_ref(H5I_type_t type);
H5_DLL herr_t H5I_find_id(const void *object, H5I_type_t type, hid_t *id /*out*/);
/* NOTE: The object and ID functions below deal in non-VOL objects (i.e.;
* H5S_t, etc.). Similar VOL calls exist in H5VLprivate.h. Use
* the H5VL calls with objects that go through the VOL, such as
* datasets and groups, and the H5I calls with objects
* that do not, such as property lists and dataspaces. Datatypes
* are can be either named, where they will use the VOL, or not,
* and thus require special treatment. See the datatype docs for
* how to handle this.
*/
/* Functions that manipulate objects */
H5_DLL void *H5I_object(hid_t id);
H5_DLL void *H5I_object_verify(hid_t id, H5I_type_t id_type);
H5_DLL void *H5I_remove(hid_t id);
H5_DLL void *H5I_subst(hid_t id, const void *new_object);
/* ID registration functions */
H5_DLL hid_t H5I_register(H5I_type_t type, const void *object, hbool_t app_ref);
H5_DLL herr_t H5I_register_using_existing_id(H5I_type_t type, void *object, hbool_t app_ref, hid_t existing_id);
/* Debugging functions */
H5_DLL herr_t H5I_dump_ids_for_type(H5I_type_t type);

View File

@ -489,7 +489,7 @@ H5Lcreate_soft(const char *link_target, hid_t link_loc_id, const char *link_name
loc_params.obj_type = H5I_get_type(link_loc_id);
/* get the location object */
if(NULL == (vol_obj = (H5VL_object_t *)H5VL_get_object(link_loc_id)))
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 */
@ -580,12 +580,12 @@ H5Lcreate_hard(hid_t cur_loc_id, const char *cur_name,
if(H5L_SAME_LOC != cur_loc_id) {
/* Get the current location object */
if (NULL == (vol_obj1 = (H5VL_object_t *)H5VL_get_object(cur_loc_id)))
if (NULL == (vol_obj1 = (H5VL_object_t *)H5VL_vol_object(cur_loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
}
if(H5L_SAME_LOC != new_loc_id) {
/* Get the new location object */
if(NULL == (vol_obj2 = (H5VL_object_t *)H5VL_get_object(new_loc_id)))
if(NULL == (vol_obj2 = (H5VL_object_t *)H5VL_vol_object(new_loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
}

View File

@ -135,7 +135,7 @@ H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id)
HGOTO_ERROR(H5E_OHDR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open object")
/* Get an atom for the object */
if((ret_value = H5VL_register_id(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize object handle")
done:
FUNC_LEAVE_API(ret_value)
@ -207,7 +207,7 @@ H5Oopen_by_idx(hid_t loc_id, const char *group_name, H5_index_t idx_type,
&opened_type, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_OHDR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open object")
if((ret_value = H5VL_register_id(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize object handle")
done:
@ -276,7 +276,7 @@ H5Oopen_by_addr(hid_t loc_id, haddr_t addr)
HGOTO_ERROR(H5E_OHDR, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open object")
/* Register the dataset ID */
if((ret_value = H5VL_register_id(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize object handle")
done:
@ -350,12 +350,12 @@ H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name, hid_t lcpl_id,
if(H5L_SAME_LOC != obj_id) {
/* get the location object */
if(NULL == (vol_obj1 = H5VL_get_object(obj_id)))
if(NULL == (vol_obj1 = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
}
if(H5L_SAME_LOC != new_loc_id) {
/* get the location object */
if(NULL == (vol_obj2 = H5VL_get_object(new_loc_id)))
if(NULL == (vol_obj2 = H5VL_vol_object(new_loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
}
/* Make sure that the VOL plugins are the same */
@ -419,7 +419,7 @@ H5Oincr_refcount(hid_t object_id)
loc_params.obj_type = H5I_get_type(object_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(object_id)))
if(NULL == (vol_obj = H5VL_vol_object(object_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set up collective metadata if appropriate */
@ -470,7 +470,7 @@ H5Odecr_refcount(hid_t object_id)
loc_params.obj_type = H5I_get_type(object_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(object_id)))
if(NULL == (vol_obj = H5VL_vol_object(object_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set up collective metadata if appropriate */
@ -521,7 +521,7 @@ H5Oexists_by_name(hid_t loc_id, const char *name, hid_t lapl_id)
HGOTO_ERROR(H5E_OHDR, H5E_CANTSET, FAIL, "can't set access property list info")
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set the location struct fields */
@ -575,7 +575,7 @@ H5Oget_info2(hid_t loc_id, H5O_info_t *oinfo, unsigned fields)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Retrieve the object's information */
@ -634,7 +634,7 @@ H5Oget_info_by_name2(hid_t loc_id, const char *name, H5O_info_t *oinfo,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Retrieve the object's information */
@ -700,7 +700,7 @@ H5Oget_info_by_idx2(hid_t loc_id, const char *group_name, H5_index_t idx_type,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Retrieve the object's information */
@ -741,7 +741,7 @@ H5Oset_comment(hid_t obj_id, const char *comment)
H5TRACE2("e", "i*s", obj_id, comment);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set up collective metadata if appropriate */
@ -805,7 +805,7 @@ H5Oset_comment_by_name(hid_t loc_id, const char *name, const char *comment,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* (Re)set the object's comment */
@ -845,7 +845,7 @@ H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize)
H5TRACE3("Zs", "i*sz", obj_id, comment, bufsize);
/* Get the object */
if (NULL == (vol_obj = H5VL_get_object(obj_id)))
if (NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "invalid location identifier")
/* Set fields in the location struct */
@ -904,7 +904,7 @@ H5Oget_comment_by_name(hid_t loc_id, const char *name, char *comment, size_t buf
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "invalid location identifier")
/* Retrieve the object's comment */
@ -974,7 +974,7 @@ H5Ovisit2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid fields")
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set location parameters */
@ -1058,7 +1058,7 @@ H5Ovisit_by_name2(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
HGOTO_ERROR(H5E_OHDR, H5E_CANTSET, FAIL, "can't set access property list info")
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set location parameters */

View File

@ -105,7 +105,7 @@ H5Oget_info1(hid_t loc_id, H5O_info_t *oinfo)
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Retrieve the object's information */
@ -157,7 +157,7 @@ H5Oget_info_by_name1(hid_t loc_id, const char *name, H5O_info_t *oinfo, hid_t la
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Retrieve the object's information */
@ -219,7 +219,7 @@ H5Oget_info_by_idx1(hid_t loc_id, const char *group_name, H5_index_t idx_type,
loc_params.obj_type = H5I_get_type(loc_id);
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Retrieve the object's information */
@ -284,7 +284,7 @@ H5Ovisit1(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no callback operator specified")
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set location parameters */
@ -363,7 +363,7 @@ H5Ovisit_by_name1(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
HGOTO_ERROR(H5E_OHDR, H5E_CANTSET, FAIL, "can't set access property list info")
/* Get the location object */
if(NULL == (vol_obj = H5VL_get_object(loc_id)))
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* Set location parameters */

View File

@ -80,7 +80,7 @@ H5Oflush(hid_t obj_id)
H5TRACE1("e", "i", obj_id);
/* Check args */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Set up collective metadata if appropriate */
@ -245,7 +245,7 @@ H5Orefresh(hid_t oid)
H5TRACE1("e", "i", oid);
/* Check args */
if(NULL == (vol_obj = H5VL_get_object(oid)))
if(NULL == (vol_obj = H5VL_vol_object(oid)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
/* Set up collective metadata if appropriate */
@ -323,7 +323,7 @@ H5O_refresh_metadata(hid_t oid, H5O_loc_t oloc)
* The vol_obj will disappear when the underlying object is closed, so
* we can't use that directly.
*/
if(NULL == (vol_obj = H5VL_get_object(oid)))
if(NULL == (vol_obj = H5VL_vol_object(oid)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
driver = vol_obj->driver;
@ -501,7 +501,7 @@ H5O_refresh_metadata_reopen(hid_t oid, H5G_loc_t *obj_loc, H5VL_t *vol_driver, h
} /* end switch */
/* Re-register ID for the object */
if((H5I_register_with_id(type, object, vol_driver, TRUE, oid)) < 0)
if((H5VL_register_using_existing_id(type, object, vol_driver, TRUE, oid)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to re-register object ID after refresh")
done:

View File

@ -189,7 +189,7 @@ H5Rdereference2(hid_t obj_id, hid_t oapl_id, H5R_type_t ref_type, const void *_r
HGOTO_ERROR(H5E_REFERENCE, H5E_CANTSET, FAIL, "can't set access property list info")
/* Get the VOL object */
if(NULL == (vol_obj = H5VL_get_object(obj_id)))
if(NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid file identifier")
/* Set location parameters */
@ -204,7 +204,7 @@ H5Rdereference2(hid_t obj_id, hid_t oapl_id, H5R_type_t ref_type, const void *_r
&opened_type, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_REFERENCE, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to dereference object")
if((ret_value = H5VL_register_id(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register object handle")
done:

View File

@ -122,7 +122,7 @@ H5Rget_obj_type1(hid_t id, H5R_type_t ref_type, const void *ref)
loc_params.obj_type = H5I_get_type(id);
/* Get the vol object */
if (NULL == (vol_obj = H5VL_get_object(id)))
if (NULL == (vol_obj = H5VL_vol_object(id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5G_UNKNOWN, "invalid file identifier")
/* Get the object information */
@ -173,7 +173,7 @@ H5Rdereference1(hid_t obj_id, H5R_type_t ref_type, const void *_ref)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5I_INVALID_HID, "invalid reference pointer")
/* Get the VOL object */
if (NULL == (vol_obj = H5VL_get_object(obj_id)))
if (NULL == (vol_obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid file identifier")
loc_params.type = H5VL_OBJECT_BY_REF;
@ -188,7 +188,7 @@ H5Rdereference1(hid_t obj_id, H5R_type_t ref_type, const void *_ref)
HGOTO_ERROR(H5E_REFERENCE, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to dereference object")
/* Get an atom for the object */
if ((ret_value = H5VL_register_id(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
if ((ret_value = H5VL_register(opened_type, opened_obj, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize object handle")
done:

View File

@ -600,7 +600,7 @@ H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open named datatype")
/* Register the type and return the ID */
if((ret_value = H5VL_register_id(H5I_DATATYPE, dt, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATATYPE, dt, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register named datatype")
done:

View File

@ -203,7 +203,7 @@ H5Topen1(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, H5I_INVALID_HID, "unable to open named datatype")
/* Register the type and return the ID */
if((ret_value = H5VL_register_id(H5I_DATATYPE, dt, vol_obj->driver, TRUE)) < 0)
if((ret_value = H5VL_register(H5I_DATATYPE, dt, vol_obj->driver, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register named datatype")
done:

View File

@ -201,7 +201,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5VLregister
* Function: H5VLregister_driver
*
* Purpose: Registers a new VOL driver as a member of the virtual object
* layer class.
@ -210,17 +210,17 @@ done:
* library is closed or the driver is
* unregistered.
*
* Failure: A negative value (H5I_INVALID_HID).
* Failure: H5I_INVALID_HID
*
*-------------------------------------------------------------------------
*/
hid_t
H5VLregister(const H5VL_class_t *cls)
H5VLregister_driver(const H5VL_class_t *cls)
{
H5VL_get_driver_ud_t op_data;
hid_t ret_value = H5I_INVALID_HID;
FUNC_ENTER_API(FAIL)
FUNC_ENTER_API(H5I_INVALID_HID)
H5TRACE1("i", "*x", cls);
/* Check arguments */
@ -246,16 +246,16 @@ H5VLregister(const H5VL_class_t *cls)
HGOTO_ERROR(H5E_VOL, H5E_CANTREGISTER, H5I_INVALID_HID, "VOL driver with the same name is already registered.")
/* Create the new class ID */
if ((ret_value = H5VL_register(cls, sizeof(H5VL_class_t), TRUE)) < 0)
if ((ret_value = H5VL_register_driver(cls, sizeof(H5VL_class_t), TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register VOL driver")
done:
FUNC_LEAVE_API(ret_value)
} /* end H5VLregister() */
} /* end H5VLregister_driver() */
/*-------------------------------------------------------------------------
* Function: H5VLregister_by_name
* Function: H5VLregister_driver_by_name
*
* Purpose: Registers a new VOL driver as a member of the virtual object
* layer class.
@ -264,17 +264,17 @@ done:
* library is closed or the driver is
* unregistered.
*
* Failure: A negative value.
* Failure: H5I_INVALID_HID
*
*-------------------------------------------------------------------------
*/
hid_t
H5VLregister_by_name(const char *name)
H5VLregister_driver_by_name(const char *name)
{
H5VL_get_driver_ud_t op_data;
hid_t ret_value = H5I_INVALID_HID;
FUNC_ENTER_API(FAIL)
FUNC_ENTER_API(H5I_INVALID_HID)
H5TRACE1("i", "*s", name);
/* Check arguments */
@ -306,21 +306,21 @@ H5VLregister_by_name(const char *name)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, H5I_INVALID_HID, "unable to load VOL driver")
/* Register the driver we loaded */
if ((ret_value = H5VL_register(cls, sizeof(H5VL_class_t), TRUE)) < 0)
if ((ret_value = H5VL_register_driver(cls, sizeof(H5VL_class_t), TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register VOL driver ID")
}
done:
FUNC_LEAVE_API(ret_value)
} /* end H5VLregister_by_name() */
} /* end H5VLregister_driver_by_name() */
/*-------------------------------------------------------------------------
* Function: H5VLunregister
* Function: H5VLunregister_driver
*
* Purpose: Removes a vol driver ID from the library. This in no way affects
* Purpose: Removes a VOL driver ID from the library. This in no way affects
* file access property lists which have been defined to use
* this vol driver or files which are already opened under with
* this VOL driver or files which are already opened under with
* this driver.
*
* Return: Success: Non-negative
@ -330,7 +330,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
H5VLunregister(hid_t vol_id)
H5VLunregister_driver(hid_t vol_id)
{
H5VL_class_t *cls = NULL;
herr_t ret_value = SUCCEED; /* Return value */
@ -348,11 +348,11 @@ H5VLunregister(hid_t vol_id)
done:
FUNC_LEAVE_API(ret_value)
} /* end H5VLunregister() */
} /* end H5VLunregister_driver() */
/*-------------------------------------------------------------------------
* Function: H5VLis_registered
* Function: H5VLis_driver_registered
*
* Purpose: Tests whether a VOL class has been registered or not
*
@ -365,7 +365,7 @@ done:
*-------------------------------------------------------------------------
*/
htri_t
H5VLis_registered(const char *name)
H5VLis_driver_registered(const char *name)
{
H5VL_get_driver_ud_t op_data;
htri_t ret_value = FALSE; /* Return value */
@ -385,7 +385,7 @@ H5VLis_registered(const char *name)
done:
FUNC_LEAVE_API(ret_value)
} /* end H5VLis_registered() */
} /* end H5VLis_driver_registered() */
/*-------------------------------------------------------------------------
@ -455,34 +455,39 @@ done:
/*---------------------------------------------------------------------------
* Function: H5VLobject_register
* Function: H5VLregister
*
* Purpose: Public routine to create an HDF5 hid_t with library
* specific types, bypassing the limitation of H5Iregister.
* Purpose: Public routine to register an object and get an ID given a
* VOL driver ID.
*
* Return: Success: Non-negative
* Unlike H5Iregister(), this API call can register library
* types (e.g.; H5I_DATASET).
*
* Failure: Negative
* NOTE: This API call is mainly intended for VOL driver authors.
*
* Return: Success: A valid HDF5 ID
*
* Failure: H5I_INVALID_HID
*
*---------------------------------------------------------------------------
*/
hid_t
H5VLobject_register(void *obj, H5I_type_t obj_type, hid_t driver_id)
H5VLregister(H5I_type_t type, const void *obj, hid_t driver_id)
{
hid_t ret_value = FAIL;
hid_t ret_value = H5I_INVALID_HID;
FUNC_ENTER_API(FAIL)
H5TRACE3("i", "*xIti", obj, obj_type, driver_id);
FUNC_ENTER_API(H5I_INVALID_HID)
H5TRACE3("i", "It*xi", type, obj, driver_id);
if (NULL == obj)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object to register")
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "obj pointer can't be NULL")
if ((ret_value = H5VL_object_register(obj, obj_type, driver_id, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register object")
if ((ret_value = H5VL_register_using_vol_id(type, obj, driver_id, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register object")
done:
FUNC_LEAVE_API(ret_value)
} /* H5VLobject_register */
} /* H5VLregister */
/*-------------------------------------------------------------------------
@ -540,7 +545,7 @@ H5VLget_object(hid_t obj_id, void **obj)
if (!obj)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid object pointer")
if (NULL == (*obj = H5VL_get_object(obj_id)))
if (NULL == (*obj = H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain a valid object")
done:

View File

@ -213,20 +213,21 @@ done:
/*-------------------------------------------------------------------------
* Function: H5VL_register_id
* Function: H5VL_register
*
* Purpose: Wrapper to register an object ID with a VOL aux struct
* and increment ref count on VOL driver ID
* Purpose: VOL-aware version of H5I_register. Constructs an H5VL_object_t
* from the passed-in object and registers that. Does the right
* thing with datatypes, which are complicated under the VOL.
*
* Return: Success: A valid HDF5 ID
* Return: Success: A valid HDF5 ID
* Failure: H5I_INVALID_HID
*
*-------------------------------------------------------------------------
*/
hid_t
H5VL_register_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_ref)
H5VL_register(H5I_type_t type, const void *object, H5VL_t *vol_driver, hbool_t app_ref)
{
H5VL_object_t *new_obj = NULL;
H5VL_object_t *vol_obj = NULL;
hid_t ret_value = H5I_INVALID_HID;
FUNC_ENTER_NOAPI(H5I_INVALID_HID)
@ -235,32 +236,135 @@ H5VL_register_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_
HDassert(object);
HDassert(vol_driver);
/* setup VOL object */
if (NULL == (new_obj = H5FL_CALLOC(H5VL_object_t)))
/* Set up VOL object to wrap the passed-in data */
if (NULL == (vol_obj = H5FL_CALLOC(H5VL_object_t)))
HGOTO_ERROR(H5E_VOL, H5E_CANTALLOC, H5I_INVALID_HID, "can't allocate top object structure");
new_obj->driver = vol_driver;
new_obj->data = object;
vol_obj->driver = vol_driver;
vol_obj->data = object;
vol_driver->nrefs++;
/* Datatypes need special handling under the VOL, since they have a non-VOL aspect */
if (H5I_DATATYPE == type) {
H5T_t *dt = NULL;
if (NULL == (dt = H5T_construct_datatype(new_obj)))
if (NULL == (dt = H5T_construct_datatype(vol_obj)))
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5I_INVALID_HID, "can't construct datatype object");
if ((ret_value = H5I_register(type, dt, app_ref)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize handle");
}
else {
if ((ret_value = H5I_register(type, new_obj, app_ref)) < 0)
if ((ret_value = H5I_register(type, vol_obj, app_ref)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize handle");
}
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_register_id() */
} /* end H5VL_register() */
/*-------------------------------------------------------------------------
* Function: H5VL_register_using_existing_id
*
* Purpose: Registers an OBJECT in a TYPE with the supplied ID for it.
* This routine will check to ensure the supplied ID is not already
* in use, and ensure that it is a valid ID for the given type,
* but will NOT check to ensure the OBJECT is not already
* registered (thus, it is possible to register one object under
* multiple IDs).
*
* NOTE: Intended for use in refresh calls, where we have to close
* and re-open the underlying data, then hook the VOL object back
* up to the original ID.
*
* Return: SUCCEED/FAIL
*
*-------------------------------------------------------------------------
*/
herr_t
H5VL_register_using_existing_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_ref, hid_t existing_id)
{
H5VL_object_t *new_vol_obj = NULL; /* Pointer to new VOL object */
void *stored_obj = NULL; /* Pointer to the object that will be stored */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
/* Check arguments */
HDassert(object);
HDassert(vol_driver);
/* Make sure type number is valid */
if(type != H5I_ATTR && type != H5I_DATASET && type != H5I_DATATYPE && type != H5I_FILE && type != H5I_GROUP)
HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
/* Set up the new VOL object */
if(NULL == (new_vol_obj = H5FL_CALLOC(H5VL_object_t)))
HGOTO_ERROR(H5E_VOL, H5E_CANTALLOC, FAIL, "can't allocate memory for VOL object");
new_vol_obj->driver = vol_driver;
new_vol_obj->data = object;
/* Bump the reference count on the VOL driver */
vol_driver->nrefs++;
/* If this is a datatype, we have to hide the VOL object under the H5T_t pointer */
if(H5I_DATATYPE == type) {
if(NULL == (stored_obj = (void *)H5T_construct_datatype(new_vol_obj)))
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't construct datatype object");
}
else
stored_obj = (void *)new_vol_obj;
/* Call the underlying H5I function to complete the registration */
if(H5I_register_using_existing_id(type, stored_obj, app_ref, existing_id) < 0)
HGOTO_ERROR(H5E_VOL, H5E_CANTREGISTER, FAIL, "can't register object under existing ID")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_register_using_existing_id() */
/*-------------------------------------------------------------------------
* Function: H5VL_register_using_vol_id
*
* Purpose: Utility function to create a user ID for an object created
* or opened through the VOL. Uses the VOL driver's ID to
* get the driver information instead of it being passed in.
*
* Return: Success: A valid HDF5 ID
* Failure: H5I_INVALID_HID
*
*-------------------------------------------------------------------------
*/
hid_t
H5VL_register_using_vol_id(H5I_type_t type, const void *obj, hid_t driver_id, hbool_t app_ref)
{
H5VL_class_t *cls = NULL;
H5VL_t *driver = NULL; /* VOL driver struct */
hid_t ret_value = H5I_INVALID_HID;
FUNC_ENTER_NOAPI(FAIL)
if (NULL == (cls = (H5VL_class_t *)H5I_object_verify(driver_id, H5I_VOL)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "not a VOL driver ID");
/* Setup VOL info struct */
if (NULL == (driver = H5FL_CALLOC(H5VL_t)))
HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, H5I_INVALID_HID, "can't allocate VOL info struct");
driver->cls = cls;
driver->id = driver_id;
if (H5I_inc_ref(driver->id, FALSE) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, H5I_INVALID_HID, "unable to increment ref count on VOL driver");
/* Get an ID for the VOL object */
if ((ret_value = H5VL_register(type, obj, driver, app_ref)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register object handle");
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_register_using_vol_id() */
/*-------------------------------------------------------------------------
@ -299,7 +403,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5VL_register
* Function: H5VL_register_driver
*
* Purpose: Registers a new VOL driver as a member of the virtual object
* layer class.
@ -312,7 +416,7 @@ done:
*-------------------------------------------------------------------------
*/
hid_t
H5VL_register(const void *_cls, size_t size, hbool_t app_ref)
H5VL_register_driver(const void *_cls, size_t size, hbool_t app_ref)
{
const H5VL_class_t *cls = (const H5VL_class_t *)_cls;
H5VL_class_t *saved = NULL;
@ -338,47 +442,7 @@ done:
H5MM_xfree(saved);
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_register() */
/*-------------------------------------------------------------------------
* Function: H5VL_object_register
*
* Purpose: Utility function to create a user ID for an object created
* or opened through the VOL
*
* Return: Success: A valid HDF5 ID
* Failure: H5I_INVALID_HID
*
*-------------------------------------------------------------------------
*/
hid_t
H5VL_object_register(void *obj, H5I_type_t obj_type, hid_t driver_id, hbool_t app_ref)
{
H5VL_class_t *cls = NULL;
H5VL_t *driver = NULL; /* VOL driver struct */
hid_t ret_value = H5I_INVALID_HID;
FUNC_ENTER_NOAPI(FAIL)
if (NULL == (cls = (H5VL_class_t *)H5I_object_verify(driver_id, H5I_VOL)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "not a VOL driver ID");
/* Setup VOL info struct */
if (NULL == (driver = H5FL_CALLOC(H5VL_t)))
HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, H5I_INVALID_HID, "can't allocate VOL info struct");
driver->cls = cls;
driver->id = driver_id;
if (H5I_inc_ref(driver->id, FALSE) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, H5I_INVALID_HID, "unable to increment ref count on VOL driver");
/* Get an ID for the VOL object */
if ((ret_value = H5VL_register_id(obj_type, obj, driver, app_ref)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register object handle");
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_object_register() */
} /* end H5VL_register_driver() */
/*-------------------------------------------------------------------------
@ -402,7 +466,7 @@ H5VL_get_driver_name(hid_t id, char *name /*out*/, size_t size)
FUNC_ENTER_NOAPI(FAIL)
/* get the object pointer */
if (NULL == (vol_obj = H5VL_get_object(id)))
if (NULL == (vol_obj = H5VL_vol_object(id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier");
cls = vol_obj->driver->cls;
@ -423,7 +487,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5VL_get_object
* Function: H5VL_vol_object
*
* Purpose: Utility function to return the object pointer associated with
* a hid_t. This routine is the same as H5I_object for all types
@ -436,7 +500,7 @@ done:
*-------------------------------------------------------------------------
*/
H5VL_object_t *
H5VL_get_object(hid_t id)
H5VL_vol_object(hid_t id)
{
void *obj = NULL;
H5I_type_t obj_type = H5I_get_type(id);
@ -463,7 +527,7 @@ H5VL_get_object(hid_t id)
ret_value = (H5VL_object_t *)obj;
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_get_object() */
} /* end H5VL_vol_object() */
/*-------------------------------------------------------------------------
@ -597,15 +661,27 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_object_verify() */
/* XXX (VOL MERGE): This could be a macro like in H5F */
/*-------------------------------------------------------------------------
* Function: H5VL_driver_data
*
* Purpose: Get the VOL-specific data stored in a VOL object
*
* Return: Success: Pointer to the data
*
* Failure: NULL (technically can't fail)
*
*-------------------------------------------------------------------------
*/
void *
H5VL_driver_object(H5VL_object_t *vol_obj)
H5VL_driver_data(H5VL_object_t *vol_obj)
{
FUNC_ENTER_NOAPI_NOINIT_NOERR
HDassert(vol_obj);
FUNC_LEAVE_NOAPI(vol_obj->data)
} /* end H5VL_driver_object() */
} /* end H5VL_driver_data() */
/*-------------------------------------------------------------------------

View File

@ -215,7 +215,7 @@ H5VL_native_init(void)
/* Register the native VOL driver, if it isn't already */
if(NULL == H5I_object_verify(H5VL_NATIVE_ID_g, H5I_VOL)) {
if((H5VL_NATIVE_ID_g = H5VL_register((const H5VL_class_t *)&H5VL_native_cls_g,
if((H5VL_NATIVE_ID_g = H5VL_register_driver((const H5VL_class_t *)&H5VL_native_cls_g,
sizeof(H5VL_class_t), TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTINSERT, H5I_INVALID_HID, "can't create ID for native VOL driver")
}
@ -379,7 +379,7 @@ done:
*---------------------------------------------------------------------------
*/
hid_t
H5VL_native_register(H5I_type_t type, void *obj, hbool_t app_ref)
H5VL_native_register(H5I_type_t type, const void *obj, hbool_t app_ref)
{
hid_t ret_value = H5I_INVALID_HID;
@ -395,7 +395,7 @@ H5VL_native_register(H5I_type_t type, void *obj, hbool_t app_ref)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "can only get an ID for an uncommitted datatype")
/* Get an ID for the object */
if((ret_value = H5VL_object_register(obj, type, H5VL_NATIVE_ID_g, app_ref)) < 0)
if((ret_value = H5VL_register_using_vol_id(type, obj, H5VL_NATIVE_ID_g, app_ref)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to get an ID for the object")
done:
@ -422,7 +422,7 @@ H5VL_native_unregister(hid_t obj_id)
FUNC_ENTER_NOAPI_NOINIT
/* get the driver pointer */
if(NULL == (vol_obj = (H5VL_object_t *)H5VL_get_object(obj_id)))
if(NULL == (vol_obj = (H5VL_object_t *)H5VL_vol_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid ID")
/* free object */

View File

@ -34,7 +34,7 @@ extern "C" {
H5_DLL herr_t H5Pset_fapl_native(hid_t fapl_id);
H5_DLL hid_t H5VL_native_get_driver_id(void);
H5_DLL hid_t H5VL_native_init(void);
H5_DLL hid_t H5VL_native_register(H5I_type_t type, void *obj, hbool_t app_ref);
H5_DLL hid_t H5VL_native_register(H5I_type_t type, const void *obj, hbool_t app_ref);
H5_DLL herr_t H5VL_native_unregister(hid_t obj_id);
#ifdef __cplusplus

View File

@ -53,17 +53,34 @@ typedef struct H5VL_driver_prop_t {
/* Library Private Prototypes */
/******************************/
/* Common functions */
/* Utility functions */
H5_DLL herr_t H5VL_init(void);
H5_DLL hid_t H5VL_register_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_ref);
H5_DLL herr_t H5VL_free_object(H5VL_object_t *obj);
H5_DLL hid_t H5VL_register(const void *cls, size_t size, hbool_t app_ref);
H5_DLL hid_t H5VL_object_register(void *obj, H5I_type_t obj_type, hid_t driver_id, hbool_t app_ref);
/* Functions that deal with VOL drivers */
H5_DLL hid_t H5VL_register_driver(const void *cls, size_t size, hbool_t app_ref);
H5_DLL ssize_t H5VL_get_driver_name(hid_t id, char *name/*out*/, size_t size);
H5_DLL H5VL_object_t *H5VL_get_object(hid_t id);
/* NOTE: The object and ID functions below deal in VOL objects (i.e.;
* H5VL_object_t). Similar non-VOL calls exist in H5Iprivate.h. Use
* the H5VL calls with objects that go through the VOL, such as
* datasets and groups, and the H5I calls with objects
* that do not, such as property lists and dataspaces. Datatypes
* are can be either named, where they will use the VOL, or not,
* and thus require special treatment. See the datatype docs for
* how to handle this.
*/
/* Functions that manipulate VOL objects */
H5_DLL void *H5VL_object(hid_t id);
H5_DLL void *H5VL_object_verify(hid_t id, H5I_type_t obj_type);
H5_DLL void *H5VL_driver_object(H5VL_object_t *obj);
H5_DLL void *H5VL_driver_data(H5VL_object_t *obj);
H5_DLL H5VL_object_t *H5VL_vol_object(hid_t id);
H5_DLL herr_t H5VL_free_object(H5VL_object_t *obj);
/* ID registration functions */
H5_DLL hid_t H5VL_register(H5I_type_t type, const void *object, H5VL_t *vol_driver, hbool_t app_ref);
H5_DLL hid_t H5VL_register_using_vol_id(H5I_type_t type, const void *obj, hid_t driver_id, hbool_t app_ref);
H5_DLL herr_t H5VL_register_using_existing_id(H5I_type_t type, void *object, H5VL_t *vol_driver, hbool_t app_ref, hid_t existing_id);
/* Attribute functions */
H5_DLL void *H5VL_attr_create(void *obj, H5VL_loc_params_t loc_params, const H5VL_class_t *cls, const char *attr_name, hid_t acpl_id, hid_t aapl_id, hid_t dxpl_id, void **req);

View File

@ -411,13 +411,13 @@ extern "C" {
H5_DLL herr_t H5VLinitialize(hid_t driver_id, hid_t vipl_id);
H5_DLL herr_t H5VLterminate(hid_t driver_id, hid_t vtpl_id);
H5_DLL herr_t H5VLclose(hid_t driver_id);
H5_DLL hid_t H5VLregister(const H5VL_class_t *cls);
H5_DLL hid_t H5VLregister_by_name(const char *driver_name);
H5_DLL herr_t H5VLunregister(hid_t driver_id);
H5_DLL htri_t H5VLis_registered(const char *name);
H5_DLL hid_t H5VLregister_driver(const H5VL_class_t *cls);
H5_DLL hid_t H5VLregister_driver_by_name(const char *driver_name);
H5_DLL herr_t H5VLunregister_driver(hid_t driver_id);
H5_DLL htri_t H5VLis_driver_registered(const char *name);
H5_DLL hid_t H5VLget_driver_id(const char *name);
H5_DLL ssize_t H5VLget_driver_name(hid_t id, char *name/*out*/, size_t size);
H5_DLL hid_t H5VLobject_register(void *obj, H5I_type_t obj_type, hid_t driver_id);
H5_DLL hid_t H5VLregister(H5I_type_t obj_type, const void *obj, hid_t driver_id);
H5_DLL void *H5VLobject(hid_t id);
H5_DLL herr_t H5VLget_object(hid_t obj_id, void **obj);

View File

@ -1915,7 +1915,7 @@ error:
* them (e.g.: for testing VOL driver ID handling).
*
* This API call will return a pointer to a VOL class that
* can be used to construct a test VOL using H5VLregister().
* can be used to construct a test VOL using H5VLregister_driver().
*
* Return: Success: A pointer to a VOL class struct
* Failure: NULL

View File

@ -3487,9 +3487,9 @@ test_misc19(void)
vol_cls = h5_get_dummy_vol_class();
CHECK(vol_cls, NULL, "h5_get_dummy_vol_class");
/* Register a virtual object driver */
volid = H5VLregister(vol_cls);
CHECK(volid, FAIL, "H5VLregister");
/* Register a VOL driver */
volid = H5VLregister_driver(vol_cls);
CHECK(volid, FAIL, "H5VLregister_driver");
/* Check the reference count */
rc = H5Iget_ref(volid);
@ -3500,8 +3500,8 @@ test_misc19(void)
VERIFY(rc, 2, "H5Iinc_ref");
/* Unregister the VOL driver normally */
ret = H5VLunregister(volid);
CHECK(ret, FAIL, "H5VLunregister");
ret = H5VLunregister_driver(volid);
CHECK(ret, FAIL, "H5VLunregister_driver");
/* Check the reference count */
rc = H5Iget_ref(volid);
@ -3513,9 +3513,9 @@ test_misc19(void)
/* Try unregistering the VOL driver again (should fail) */
H5E_BEGIN_TRY {
ret = H5VLunregister(volid);
ret = H5VLunregister_driver(volid);
} H5E_END_TRY;
VERIFY(ret, FAIL, "H5VLunregister");
VERIFY(ret, FAIL, "H5VLunregister_driver");
HDfree(vol_cls);

View File

@ -135,17 +135,17 @@ test_vol_registration(void)
TESTING("VOL registration");
/* The test/fake VOL driver should not be registered at the start of the test */
if ((is_registered = H5VLis_registered(FAKE_VOL_NAME)) < 0)
if ((is_registered = H5VLis_driver_registered(FAKE_VOL_NAME)) < 0)
FAIL_STACK_ERROR;
if (is_registered > 0)
FAIL_PUTS_ERROR("native VOL driver is inappropriately registered");
/* Load a VOL interface */
if ((vol_id = H5VLregister(&fake_vol_g)) < 0)
if ((vol_id = H5VLregister_driver(&fake_vol_g)) < 0)
FAIL_STACK_ERROR;
/* The test/fake VOL driver should be registered now */
if ((is_registered = H5VLis_registered(FAKE_VOL_NAME)) < 0)
if ((is_registered = H5VLis_driver_registered(FAKE_VOL_NAME)) < 0)
FAIL_STACK_ERROR;
if (0 == is_registered)
FAIL_PUTS_ERROR("native VOL driver is un-registered");
@ -183,7 +183,7 @@ test_native_vol_init(void)
TESTING("Native VOL driver initialization");
/* The native VOL driver should always be registered */
if ((is_registered = H5VLis_registered(H5VL_NATIVE_NAME)) < 0)
if ((is_registered = H5VLis_driver_registered(H5VL_NATIVE_NAME)) < 0)
FAIL_STACK_ERROR;
if (0 == is_registered)
FAIL_PUTS_ERROR("native VOL driver is un-registered");