mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-04-12 17:31:09 +08:00
Expand 'opt_query' VOL callback to return a bitfield instead of a flag (#136)
* Expand 'opt_query' VOL callback to return a bitfield instead of a flag * Correct pastos
This commit is contained in:
parent
cadd6db431
commit
123c5a653d
@ -1187,7 +1187,7 @@ herr_t
|
||||
H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, hsize_t *size /*out*/)
|
||||
{
|
||||
H5VL_object_t *vol_obj; /* Dataset for this operation */
|
||||
hbool_t supported; /* Whether 'get vlen buf size' operation is supported by VOL connector */
|
||||
uint64_t supported; /* Whether 'get vlen buf size' operation is supported by VOL connector */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
@ -1204,11 +1204,12 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, hsize_t *s
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid 'size' pointer")
|
||||
|
||||
/* Check if the 'get_vlen_buf_size' callback is supported */
|
||||
supported = FALSE;
|
||||
supported = 0;
|
||||
if (H5VL_introspect_opt_query(vol_obj, H5VL_SUBCLS_DATASET, H5VL_NATIVE_DATASET_GET_VLEN_BUF_SIZE,
|
||||
&supported) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, H5I_INVALID_HID, "can't check for 'get vlen buf size' operation")
|
||||
if (supported) {
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, H5I_INVALID_HID,
|
||||
"can't check for 'get vlen buf size' operation")
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
/* Make the 'get_vlen_buf_size' callback */
|
||||
if (H5VL_dataset_optional(vol_obj, H5VL_NATIVE_DATASET_GET_VLEN_BUF_SIZE, H5P_DATASET_XFER_DEFAULT,
|
||||
H5_REQUEST_NULL, type_id, space_id, size) < 0)
|
||||
|
18
src/H5F.c
18
src/H5F.c
@ -476,7 +476,7 @@ H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
H5P_genplist_t * plist; /* Property list pointer */
|
||||
H5VL_connector_prop_t connector_prop; /* Property for VOL connector ID & info */
|
||||
H5VL_object_t * vol_obj = NULL; /* VOL object for file */
|
||||
hbool_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
uint64_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
hid_t ret_value; /* return value */
|
||||
|
||||
FUNC_ENTER_API(H5I_INVALID_HID)
|
||||
@ -540,10 +540,10 @@ H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid object identifier")
|
||||
|
||||
/* Make the 'post open' callback */
|
||||
supported = FALSE;
|
||||
supported = 0;
|
||||
if (H5VL_introspect_opt_query(vol_obj, H5VL_SUBCLS_FILE, H5VL_NATIVE_FILE_POST_OPEN, &supported) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, H5I_INVALID_HID, "can't check for 'post open' operation")
|
||||
if (supported)
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED)
|
||||
if (H5VL_file_optional(vol_obj, H5VL_NATIVE_FILE_POST_OPEN, H5P_DATASET_XFER_DEFAULT,
|
||||
H5_REQUEST_NULL) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, H5I_INVALID_HID, "unable to make file 'post open' callback")
|
||||
@ -576,7 +576,7 @@ H5Fopen(const char *filename, unsigned flags, hid_t fapl_id)
|
||||
H5P_genplist_t * plist; /* Property list pointer */
|
||||
H5VL_connector_prop_t connector_prop; /* Property for VOL connector ID & info */
|
||||
H5VL_object_t * vol_obj = NULL; /* VOL object for file */
|
||||
hbool_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
uint64_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
hid_t ret_value; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(H5I_INVALID_HID)
|
||||
@ -628,10 +628,10 @@ H5Fopen(const char *filename, unsigned flags, hid_t fapl_id)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, H5I_INVALID_HID, "invalid object identifier")
|
||||
|
||||
/* Make the 'post open' callback */
|
||||
supported = FALSE;
|
||||
supported = 0;
|
||||
if (H5VL_introspect_opt_query(vol_obj, H5VL_SUBCLS_FILE, H5VL_NATIVE_FILE_POST_OPEN, &supported) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, H5I_INVALID_HID, "can't check for 'post open' operation")
|
||||
if (supported)
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED)
|
||||
if (H5VL_file_optional(vol_obj, H5VL_NATIVE_FILE_POST_OPEN, H5P_DATASET_XFER_DEFAULT,
|
||||
H5_REQUEST_NULL) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, H5I_INVALID_HID, "unable to make file 'post open' callback")
|
||||
@ -905,7 +905,7 @@ H5Freopen(hid_t file_id)
|
||||
{
|
||||
void * file = NULL; /* File struct for new file */
|
||||
H5VL_object_t *vol_obj = NULL; /* VOL object for file */
|
||||
hbool_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
uint64_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
hid_t ret_value = H5I_INVALID_HID; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(H5I_INVALID_HID)
|
||||
@ -932,10 +932,10 @@ H5Freopen(hid_t file_id)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid object identifier")
|
||||
|
||||
/* Make the 'post open' callback */
|
||||
supported = FALSE;
|
||||
supported = 0;
|
||||
if (H5VL_introspect_opt_query(vol_obj, H5VL_SUBCLS_FILE, H5VL_NATIVE_FILE_POST_OPEN, &supported) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, H5I_INVALID_HID, "can't check for 'post open' operation")
|
||||
if (supported)
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED)
|
||||
if (H5VL_file_optional(vol_obj, H5VL_NATIVE_FILE_POST_OPEN, H5P_DATASET_XFER_DEFAULT,
|
||||
H5_REQUEST_NULL) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, H5I_INVALID_HID, "unable to make file 'post open' callback")
|
||||
|
@ -546,7 +546,7 @@ H5R__reopen_file(H5R_ref_priv_t *ref, hid_t fapl_id)
|
||||
void * new_file = NULL; /* File object opened */
|
||||
H5VL_connector_prop_t connector_prop; /* Property for VOL connector ID & info */
|
||||
H5VL_object_t * vol_obj = NULL; /* VOL object for file */
|
||||
hbool_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
uint64_t supported; /* Whether 'post open' operation is supported by VOL connector */
|
||||
hid_t ret_value = H5I_INVALID_HID;
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
@ -585,10 +585,10 @@ H5R__reopen_file(H5R_ref_priv_t *ref, hid_t fapl_id)
|
||||
HGOTO_ERROR(H5E_REFERENCE, H5E_CANTGET, H5I_INVALID_HID, "invalid object identifier")
|
||||
|
||||
/* Make the 'post open' callback */
|
||||
supported = FALSE;
|
||||
supported = 0;
|
||||
if (H5VL_introspect_opt_query(vol_obj, H5VL_SUBCLS_FILE, H5VL_NATIVE_FILE_POST_OPEN, &supported) < 0)
|
||||
HGOTO_ERROR(H5E_REFERENCE, H5E_CANTGET, H5I_INVALID_HID, "can't check for 'post open' operation")
|
||||
if (supported)
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED)
|
||||
if (H5VL_file_optional(vol_obj, H5VL_NATIVE_FILE_POST_OPEN, H5P_DATASET_XFER_DEFAULT,
|
||||
H5_REQUEST_NULL) < 0)
|
||||
HGOTO_ERROR(H5E_REFERENCE, H5E_CANTINIT, H5I_INVALID_HID,
|
||||
|
15
src/H5VL.c
15
src/H5VL.c
@ -895,7 +895,8 @@ done:
|
||||
* Function: H5VLquery_optional
|
||||
*
|
||||
* Purpose: Determine if a VOL connector supports a particular optional
|
||||
* callback operation.
|
||||
* callback operation, and a general sense of the operation's
|
||||
* behavior.
|
||||
*
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
@ -903,23 +904,23 @@ done:
|
||||
*---------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5VLquery_optional(hid_t obj_id, H5VL_subclass_t subcls, int opt_type, hbool_t *supported)
|
||||
H5VLquery_optional(hid_t obj_id, H5VL_subclass_t subcls, int opt_type, uint64_t *flags /*out*/)
|
||||
{
|
||||
H5VL_object_t *vol_obj = NULL;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE4("e", "iVSIs*b", obj_id, subcls, opt_type, supported);
|
||||
H5TRACE4("e", "iVSIsx", obj_id, subcls, opt_type, flags);
|
||||
|
||||
/* Check args */
|
||||
if (NULL == supported)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid supported pointer")
|
||||
if (NULL == flags)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid 'flags' pointer")
|
||||
if (NULL == (vol_obj = (H5VL_object_t *)H5I_object(obj_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
|
||||
|
||||
/* Query the connector */
|
||||
if (H5VL_introspect_opt_query(vol_obj, subcls, opt_type, supported) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTGET, FAIL, "unable to query VOL connector support")
|
||||
if (H5VL_introspect_opt_query(vol_obj, subcls, opt_type, flags) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTGET, FAIL, "unable to query VOL connector operation")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
|
@ -152,7 +152,7 @@ static herr_t H5VL__object_optional(void *obj, const H5VL_class_t *cls, H5VL_obj
|
||||
static herr_t H5VL__introspect_get_conn_cls(void *obj, const H5VL_class_t *cls, H5VL_get_conn_lvl_t lvl,
|
||||
const H5VL_class_t **conn_cls);
|
||||
static herr_t H5VL__introspect_opt_query(void *obj, const H5VL_class_t *cls, H5VL_subclass_t subcls,
|
||||
int opt_type, hbool_t *supported);
|
||||
int opt_type, uint64_t *flags);
|
||||
static herr_t H5VL__request_wait(void *req, const H5VL_class_t *cls, uint64_t timeout, H5ES_status_t *status);
|
||||
static herr_t H5VL__request_notify(void *req, const H5VL_class_t *cls, H5VL_request_notify_t cb, void *ctx);
|
||||
static herr_t H5VL__request_cancel(void *req, const H5VL_class_t *cls);
|
||||
@ -5849,7 +5849,7 @@ done:
|
||||
*/
|
||||
static herr_t
|
||||
H5VL__introspect_opt_query(void *obj, const H5VL_class_t *cls, H5VL_subclass_t subcls, int opt_type,
|
||||
hbool_t *supported)
|
||||
uint64_t *flags)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
@ -5860,7 +5860,7 @@ H5VL__introspect_opt_query(void *obj, const H5VL_class_t *cls, H5VL_subclass_t s
|
||||
HGOTO_ERROR(H5E_VOL, H5E_UNSUPPORTED, FAIL, "VOL connector has no 'opt_query' method")
|
||||
|
||||
/* Call the corresponding VOL callback */
|
||||
if ((cls->introspect_cls.opt_query)(obj, subcls, opt_type, supported) < 0)
|
||||
if ((cls->introspect_cls.opt_query)(obj, subcls, opt_type, flags) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTGET, FAIL, "can't query optional operation support")
|
||||
|
||||
done:
|
||||
@ -5879,8 +5879,7 @@ done:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5VL_introspect_opt_query(const H5VL_object_t *vol_obj, H5VL_subclass_t subcls, int opt_type,
|
||||
hbool_t *supported)
|
||||
H5VL_introspect_opt_query(const H5VL_object_t *vol_obj, H5VL_subclass_t subcls, int opt_type, uint64_t *flags)
|
||||
{
|
||||
hbool_t vol_wrapper_set = FALSE; /* Whether the VOL object wrapping context was set up */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
@ -5893,7 +5892,7 @@ H5VL_introspect_opt_query(const H5VL_object_t *vol_obj, H5VL_subclass_t subcls,
|
||||
vol_wrapper_set = TRUE;
|
||||
|
||||
/* Call the corresponding internal VOL routine */
|
||||
if (H5VL__introspect_opt_query(vol_obj->data, vol_obj->connector->cls, subcls, opt_type, supported) < 0)
|
||||
if (H5VL__introspect_opt_query(vol_obj->data, vol_obj->connector->cls, subcls, opt_type, flags) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTGET, FAIL, "can't query optional operation support")
|
||||
|
||||
done:
|
||||
@ -5917,20 +5916,20 @@ done:
|
||||
*/
|
||||
herr_t
|
||||
H5VLintrospect_opt_query(void *obj, hid_t connector_id, H5VL_subclass_t subcls, int opt_type,
|
||||
hbool_t *supported /*out*/)
|
||||
uint64_t *flags /*out*/)
|
||||
{
|
||||
H5VL_class_t *cls; /* VOL connector's class struct */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API_NOINIT
|
||||
H5TRACE5("e", "*xiVSIsx", obj, connector_id, subcls, opt_type, supported);
|
||||
H5TRACE5("e", "*xiVSIsx", obj, connector_id, subcls, opt_type, flags);
|
||||
|
||||
/* 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__introspect_opt_query(obj, cls, subcls, opt_type, supported) < 0)
|
||||
if (H5VL__introspect_opt_query(obj, cls, subcls, opt_type, flags) < 0)
|
||||
HGOTO_ERROR(H5E_VOL, H5E_CANTGET, FAIL, "can't query optional operation support")
|
||||
|
||||
done:
|
||||
|
@ -410,7 +410,7 @@ struct H5VL_class_t;
|
||||
/* Container/connector introspection routines */
|
||||
typedef struct H5VL_introspect_class_t {
|
||||
herr_t (*get_conn_cls)(void *obj, H5VL_get_conn_lvl_t lvl, const struct H5VL_class_t **conn_cls);
|
||||
herr_t (*opt_query)(void *obj, H5VL_subclass_t cls, int opt_type, hbool_t *supported);
|
||||
herr_t (*opt_query)(void *obj, H5VL_subclass_t cls, int opt_type, uint64_t *flags);
|
||||
} H5VL_introspect_class_t;
|
||||
|
||||
/* Async request operation routines */
|
||||
|
@ -195,7 +195,7 @@ H5_DLL herr_t H5VLobject_optional(void *obj, hid_t connector_id, H5VL_object_opt
|
||||
H5_DLL herr_t H5VLintrospect_get_conn_cls(void *obj, hid_t connector_id, H5VL_get_conn_lvl_t lvl,
|
||||
const H5VL_class_t **conn_cls);
|
||||
H5_DLL herr_t H5VLintrospect_opt_query(void *obj, hid_t connector_id, H5VL_subclass_t subcls, int opt_type,
|
||||
hbool_t *supported);
|
||||
uint64_t *flags);
|
||||
|
||||
/* Public wrappers for asynchronous request callbacks */
|
||||
H5_DLL herr_t H5VLrequest_wait(void *req, hid_t connector_id, uint64_t timeout, H5ES_status_t *status);
|
||||
|
@ -33,11 +33,17 @@
|
||||
#define H5VL_NATIVE_VERSION 0
|
||||
|
||||
/* Values for VOL connector attribute optional VOL operations */
|
||||
/* NOTE: If new values are added here, the H5VL__native_introspect_opt_query
|
||||
* routine must be updated.
|
||||
*/
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
#define H5VL_NATIVE_ATTR_ITERATE_OLD 0 /* H5Aiterate (deprecated routine) */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
/* Values for native VOL connector dataset optional VOL operations */
|
||||
/* NOTE: If new values are added here, the H5VL__native_introspect_opt_query
|
||||
* routine must be updated.
|
||||
*/
|
||||
#define H5VL_NATIVE_DATASET_FORMAT_CONVERT 0 /* H5Dformat_convert (internal) */
|
||||
#define H5VL_NATIVE_DATASET_GET_CHUNK_INDEX_TYPE 1 /* H5Dget_chunk_index_type */
|
||||
#define H5VL_NATIVE_DATASET_GET_CHUNK_STORAGE_SIZE 2 /* H5Dget_chunk_storage_size */
|
||||
@ -50,6 +56,9 @@
|
||||
#define H5VL_NATIVE_DATASET_GET_OFFSET 9 /* H5Dget_offset */
|
||||
|
||||
/* Values for native VOL connector file optional VOL operations */
|
||||
/* NOTE: If new values are added here, the H5VL__native_introspect_opt_query
|
||||
* routine must be updated.
|
||||
*/
|
||||
#define H5VL_NATIVE_FILE_CLEAR_ELINK_CACHE 0 /* H5Fclear_elink_file_cache */
|
||||
#define H5VL_NATIVE_FILE_GET_FILE_IMAGE 1 /* H5Fget_file_image */
|
||||
#define H5VL_NATIVE_FILE_GET_FREE_SECTIONS 2 /* H5Fget_free_sections */
|
||||
@ -81,12 +90,18 @@
|
||||
#define H5VL_NATIVE_FILE_POST_OPEN 28 /* Adjust file after open, with wrapping context */
|
||||
|
||||
/* Values for native VOL connector group optional VOL operations */
|
||||
/* NOTE: If new values are added here, the H5VL__native_introspect_opt_query
|
||||
* routine must be updated.
|
||||
*/
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
#define H5VL_NATIVE_GROUP_ITERATE_OLD 0 /* HG5Giterate (deprecated routine) */
|
||||
#define H5VL_NATIVE_GROUP_GET_OBJINFO 1 /* HG5Gget_objinfo (deprecated routine) */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
/* Values for native VOL connector object optional VOL operations */
|
||||
/* NOTE: If new values are added here, the H5VL__native_introspect_opt_query
|
||||
* routine must be updated.
|
||||
*/
|
||||
#define H5VL_NATIVE_OBJECT_GET_COMMENT 0 /* H5G|H5Oget_comment, H5Oget_comment_by_name */
|
||||
#define H5VL_NATIVE_OBJECT_SET_COMMENT 1 /* H5G|H5Oset_comment, H5Oset_comment_by_name */
|
||||
#define H5VL_NATIVE_OBJECT_DISABLE_MDC_FLUSHES 2 /* H5Odisable_mdc_flushes */
|
||||
|
@ -35,16 +35,192 @@
|
||||
*---------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5VL__native_introspect_opt_query(void H5_ATTR_UNUSED *obj, H5VL_subclass_t H5_ATTR_UNUSED cls,
|
||||
int H5_ATTR_UNUSED opt_type, hbool_t *supported)
|
||||
H5VL__native_introspect_opt_query(void H5_ATTR_UNUSED *obj, H5VL_subclass_t subcls, int opt_type,
|
||||
uint64_t *flags)
|
||||
{
|
||||
FUNC_ENTER_PACKAGE_NOERR
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
/* Sanity check */
|
||||
HDassert(supported);
|
||||
HDassert(flags);
|
||||
|
||||
/* The native VOL connector supports all optional operations */
|
||||
*supported = TRUE;
|
||||
*flags = H5VL_OPT_QUERY_SUPPORTED;
|
||||
|
||||
FUNC_LEAVE_NOAPI(SUCCEED)
|
||||
/* Set appropriate flags for each operation in each subclass */
|
||||
switch (subcls) {
|
||||
case H5VL_SUBCLS_NONE:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional 'none' operation")
|
||||
|
||||
case H5VL_SUBCLS_INFO:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional info operation")
|
||||
|
||||
case H5VL_SUBCLS_WRAP:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional wrapper operation")
|
||||
|
||||
case H5VL_SUBCLS_ATTR:
|
||||
switch (opt_type) {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
case H5VL_NATIVE_ATTR_ITERATE_OLD:
|
||||
/* Don't allow asynchronous execution, due to iterator callbacks */
|
||||
*flags |= H5VL_OPT_QUERY_NO_ASYNC;
|
||||
break;
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
default:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional attribute operation")
|
||||
break;
|
||||
} /* end switch */
|
||||
break;
|
||||
|
||||
case H5VL_SUBCLS_DATASET:
|
||||
switch (opt_type) {
|
||||
case H5VL_NATIVE_DATASET_FORMAT_CONVERT:
|
||||
*flags |= H5VL_OPT_QUERY_MODIFY_METADATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_DATASET_GET_CHUNK_INDEX_TYPE:
|
||||
case H5VL_NATIVE_DATASET_GET_CHUNK_STORAGE_SIZE:
|
||||
case H5VL_NATIVE_DATASET_GET_NUM_CHUNKS:
|
||||
case H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_IDX:
|
||||
case H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_COORD:
|
||||
case H5VL_NATIVE_DATASET_GET_VLEN_BUF_SIZE:
|
||||
case H5VL_NATIVE_DATASET_GET_OFFSET:
|
||||
*flags |= H5VL_OPT_QUERY_QUERY_METADATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_DATASET_CHUNK_READ:
|
||||
*flags |= H5VL_OPT_QUERY_READ_DATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_DATASET_CHUNK_WRITE:
|
||||
*flags |= H5VL_OPT_QUERY_WRITE_DATA;
|
||||
break;
|
||||
|
||||
default:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional dataset operation")
|
||||
break;
|
||||
} /* end switch */
|
||||
break;
|
||||
|
||||
case H5VL_SUBCLS_DATATYPE:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional datatype operation")
|
||||
|
||||
case H5VL_SUBCLS_FILE:
|
||||
switch (opt_type) {
|
||||
case H5VL_NATIVE_FILE_CLEAR_ELINK_CACHE:
|
||||
case H5VL_NATIVE_FILE_RESET_MDC_HIT_RATE:
|
||||
case H5VL_NATIVE_FILE_SET_MDC_CONFIG:
|
||||
*flags |= H5VL_OPT_QUERY_MODIFY_METADATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_FILE_GET_FILE_IMAGE:
|
||||
*flags |= H5VL_OPT_QUERY_QUERY_METADATA;
|
||||
*flags |= H5VL_OPT_QUERY_READ_DATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_FILE_GET_FREE_SECTIONS:
|
||||
case H5VL_NATIVE_FILE_GET_FREE_SPACE:
|
||||
case H5VL_NATIVE_FILE_GET_INFO:
|
||||
case H5VL_NATIVE_FILE_GET_MDC_CONF:
|
||||
case H5VL_NATIVE_FILE_GET_MDC_HR:
|
||||
case H5VL_NATIVE_FILE_GET_MDC_SIZE:
|
||||
case H5VL_NATIVE_FILE_GET_SIZE:
|
||||
case H5VL_NATIVE_FILE_GET_VFD_HANDLE:
|
||||
case H5VL_NATIVE_FILE_GET_METADATA_READ_RETRY_INFO:
|
||||
*flags |= H5VL_OPT_QUERY_QUERY_METADATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_FILE_START_SWMR_WRITE:
|
||||
*flags |= H5VL_OPT_QUERY_MODIFY_METADATA;
|
||||
*flags |= H5VL_OPT_QUERY_WRITE_DATA;
|
||||
*flags |= H5VL_OPT_QUERY_NO_ASYNC;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_FILE_START_MDC_LOGGING:
|
||||
case H5VL_NATIVE_FILE_STOP_MDC_LOGGING:
|
||||
case H5VL_NATIVE_FILE_GET_MDC_LOGGING_STATUS:
|
||||
case H5VL_NATIVE_FILE_FORMAT_CONVERT:
|
||||
case H5VL_NATIVE_FILE_RESET_PAGE_BUFFERING_STATS:
|
||||
case H5VL_NATIVE_FILE_GET_PAGE_BUFFERING_STATS:
|
||||
case H5VL_NATIVE_FILE_GET_MDC_IMAGE_INFO:
|
||||
case H5VL_NATIVE_FILE_GET_EOA:
|
||||
case H5VL_NATIVE_FILE_INCR_FILESIZE:
|
||||
case H5VL_NATIVE_FILE_SET_LIBVER_BOUNDS:
|
||||
case H5VL_NATIVE_FILE_GET_MIN_DSET_OHDR_FLAG:
|
||||
case H5VL_NATIVE_FILE_SET_MIN_DSET_OHDR_FLAG:
|
||||
case H5VL_NATIVE_FILE_GET_MPI_ATOMICITY:
|
||||
case H5VL_NATIVE_FILE_SET_MPI_ATOMICITY:
|
||||
case H5VL_NATIVE_FILE_POST_OPEN:
|
||||
break;
|
||||
|
||||
default:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional file operation")
|
||||
break;
|
||||
} /* end switch */
|
||||
break;
|
||||
|
||||
case H5VL_SUBCLS_GROUP:
|
||||
switch (opt_type) {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
case H5VL_NATIVE_GROUP_ITERATE_OLD:
|
||||
/* Don't allow asynchronous execution, due to iterator callbacks */
|
||||
*flags |= H5VL_OPT_QUERY_NO_ASYNC;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_GROUP_GET_OBJINFO:
|
||||
*flags |= H5VL_OPT_QUERY_QUERY_METADATA;
|
||||
break;
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
default:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional group operation")
|
||||
break;
|
||||
} /* end switch */
|
||||
break;
|
||||
|
||||
case H5VL_SUBCLS_LINK:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional link operation")
|
||||
|
||||
case H5VL_SUBCLS_OBJECT:
|
||||
switch (opt_type) {
|
||||
case H5VL_NATIVE_OBJECT_GET_COMMENT:
|
||||
*flags |= H5VL_OPT_QUERY_QUERY_METADATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_OBJECT_SET_COMMENT:
|
||||
*flags |= H5VL_OPT_QUERY_MODIFY_METADATA;
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_OBJECT_DISABLE_MDC_FLUSHES:
|
||||
case H5VL_NATIVE_OBJECT_ENABLE_MDC_FLUSHES:
|
||||
case H5VL_NATIVE_OBJECT_ARE_MDC_FLUSHES_DISABLED:
|
||||
break;
|
||||
|
||||
case H5VL_NATIVE_OBJECT_GET_NATIVE_INFO:
|
||||
*flags |= H5VL_OPT_QUERY_QUERY_METADATA;
|
||||
break;
|
||||
|
||||
default:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional object operation")
|
||||
break;
|
||||
} /* end switch */
|
||||
break;
|
||||
|
||||
case H5VL_SUBCLS_REQUEST:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional request operation")
|
||||
|
||||
case H5VL_SUBCLS_BLOB:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional blob operation")
|
||||
|
||||
case H5VL_SUBCLS_TOKEN:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown optional token operation")
|
||||
|
||||
default:
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unknown H5VL subclass")
|
||||
} /* end switch */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5VL__native_introspect_opt_query() */
|
||||
|
@ -151,7 +151,7 @@ H5_DLL herr_t H5VL__native_object_optional(void *obj, H5VL_object_optional_t opt
|
||||
H5_DLL herr_t H5VL__native_introspect_get_conn_cls(void *obj, H5VL_get_conn_lvl_t lvl,
|
||||
const H5VL_class_t **conn_cls);
|
||||
H5_DLL herr_t H5VL__native_introspect_opt_query(void *obj, H5VL_subclass_t cls, int opt_type,
|
||||
hbool_t *supported);
|
||||
uint64_t *flags);
|
||||
|
||||
/* Blob callbacks */
|
||||
H5_DLL herr_t H5VL__native_blob_put(void *obj, const void *buf, size_t size, void *blob_id, void *ctx);
|
||||
|
@ -225,7 +225,7 @@ static herr_t H5VL_pass_through_object_optional(void *obj, H5VL_object_optional_
|
||||
static herr_t H5VL_pass_through_introspect_get_conn_cls(void *obj, H5VL_get_conn_lvl_t lvl,
|
||||
const H5VL_class_t **conn_cls);
|
||||
static herr_t H5VL_pass_through_introspect_opt_query(void *obj, H5VL_subclass_t cls, int opt_type,
|
||||
hbool_t *supported);
|
||||
uint64_t *flags);
|
||||
|
||||
/* Async request callbacks */
|
||||
static herr_t H5VL_pass_through_request_wait(void *req, uint64_t timeout, H5ES_status_t *status);
|
||||
@ -2635,7 +2635,7 @@ H5VL_pass_through_introspect_get_conn_cls(void *obj, H5VL_get_conn_lvl_t lvl, co
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5VL_pass_through_introspect_opt_query(void *obj, H5VL_subclass_t cls, int opt_type, hbool_t *supported)
|
||||
H5VL_pass_through_introspect_opt_query(void *obj, H5VL_subclass_t cls, int opt_type, uint64_t *flags)
|
||||
{
|
||||
H5VL_pass_through_t *o = (H5VL_pass_through_t *)obj;
|
||||
herr_t ret_value;
|
||||
@ -2644,7 +2644,7 @@ H5VL_pass_through_introspect_opt_query(void *obj, H5VL_subclass_t cls, int opt_t
|
||||
printf("------- PASS THROUGH VOL INTROSPECT OptQuery\n");
|
||||
#endif
|
||||
|
||||
ret_value = H5VLintrospect_opt_query(o->under_object, o->under_vol_id, cls, opt_type, supported);
|
||||
ret_value = H5VLintrospect_opt_query(o->under_object, o->under_vol_id, cls, opt_type, flags);
|
||||
|
||||
return ret_value;
|
||||
} /* end H5VL_pass_through_introspect_opt_query() */
|
||||
|
@ -236,7 +236,7 @@ H5_DLL herr_t H5VL_object_optional(const H5VL_object_t *vol_obj, H5VL_object_opt
|
||||
H5_DLL herr_t H5VL_introspect_get_conn_cls(const H5VL_object_t *vol_obj, H5VL_get_conn_lvl_t lvl,
|
||||
const H5VL_class_t **conn_cls);
|
||||
H5_DLL herr_t H5VL_introspect_opt_query(const H5VL_object_t *vol_obj, H5VL_subclass_t subcls, int opt_type,
|
||||
hbool_t *supported);
|
||||
uint64_t *flags);
|
||||
|
||||
/* Asynchronous functions */
|
||||
H5_DLL herr_t H5VL_request_wait(const H5VL_object_t *vol_obj, uint64_t timeout, H5ES_status_t *status);
|
||||
|
@ -49,6 +49,25 @@
|
||||
*/
|
||||
#define H5_VOL_MAX 65535
|
||||
|
||||
/* Flags to return from H5VLquery_optional API and 'opt_query' callbacks */
|
||||
/* Note: Operations which access multiple objects' data or metadata in a
|
||||
* container should be registered as file-level optional operations.
|
||||
* (e.g. "H5Dwrite_multi" takes a list of datasets to write data to, so
|
||||
* a VOL connector that implemented it should register it as an optional
|
||||
* file operation, and pass-through VOL connectors that are stacked above
|
||||
* the connector that registered it should assume that dataset elements
|
||||
* for _any_ dataset in the file could be written to)
|
||||
*/
|
||||
#define H5VL_OPT_QUERY_SUPPORTED 0x0001 /* VOL connector supports this operation */
|
||||
#define H5VL_OPT_QUERY_READ_DATA 0x0002 /* Operation reads data for object */
|
||||
#define H5VL_OPT_QUERY_WRITE_DATA 0x0004 /* Operation writes data for object */
|
||||
#define H5VL_OPT_QUERY_QUERY_METADATA 0x0008 /* Operation reads metadata for object */
|
||||
#define H5VL_OPT_QUERY_MODIFY_METADATA 0x0010 /* Operation modifies metadata for object */
|
||||
#define H5VL_OPT_QUERY_COLLECTIVE \
|
||||
0x0020 /* Operation is collective (operations without this flag are assumed to be independent) */
|
||||
#define H5VL_OPT_QUERY_NO_ASYNC 0x0040 /* Operation may NOT be executed asynchronously */
|
||||
#define H5VL_OPT_QUERY_MULTI_OBJ 0x0080 /* Operation involves multiple objects */
|
||||
|
||||
/*******************/
|
||||
/* Public Typedefs */
|
||||
/*******************/
|
||||
@ -319,12 +338,12 @@ H5_DLL herr_t H5VLunregister_connector(hid_t connector_id);
|
||||
* \obj_id
|
||||
* \param[in] subcls VOL subclass
|
||||
* \param[in] opt_type Option type
|
||||
* \param[out] supported Flag
|
||||
* \param[out] flags Operation flags
|
||||
* \return \herr_t
|
||||
*
|
||||
* \since 1.12.0
|
||||
*/
|
||||
H5_DLL herr_t H5VLquery_optional(hid_t obj_id, H5VL_subclass_t subcls, int opt_type, hbool_t *supported);
|
||||
H5_DLL herr_t H5VLquery_optional(hid_t obj_id, H5VL_subclass_t subcls, int opt_type, uint64_t *flags);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -3298,8 +3298,8 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, h5tools_context_t *
|
||||
(hsize_t)0);
|
||||
}
|
||||
else {
|
||||
haddr_t ioffset;
|
||||
hbool_t supported = FALSE;
|
||||
haddr_t ioffset;
|
||||
uint64_t supported = 0;
|
||||
|
||||
/* NORMAL FILE */
|
||||
|
||||
@ -3322,7 +3322,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, h5tools_context_t *
|
||||
*/
|
||||
H5VLquery_optional(dset_id, H5VL_SUBCLS_DATASET, H5VL_NATIVE_DATASET_GET_OFFSET, &supported);
|
||||
|
||||
if (supported) {
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
|
||||
ctx->need_prefix = TRUE;
|
||||
|
||||
@ -3777,12 +3777,12 @@ h5tools_dump_comment(FILE *stream, const h5tool_format_t *info, h5tools_context_
|
||||
* instead of the current stripmine position i; this is necessary
|
||||
* to print the array indices
|
||||
*/
|
||||
hbool_t supported = FALSE;
|
||||
uint64_t supported = 0;
|
||||
|
||||
/* Check if comments are supported and return if not */
|
||||
H5VLquery_optional(obj_id, H5VL_SUBCLS_OBJECT, H5VL_NATIVE_OBJECT_GET_COMMENT, &supported);
|
||||
|
||||
if (!supported)
|
||||
if (!(supported & H5VL_OPT_QUERY_SUPPORTED))
|
||||
return;
|
||||
|
||||
/* setup */
|
||||
|
@ -1154,7 +1154,7 @@ dump_fcpl(hid_t fid)
|
||||
unsigned sym_ik; /* symbol table B-tree internal 'K' value */
|
||||
unsigned istore_ik; /* indexed storage B-tree internal 'K' value */
|
||||
|
||||
hbool_t supported = FALSE;
|
||||
uint64_t supported = 0;
|
||||
|
||||
/* Dumping the information here only makes sense for the native
|
||||
* VOL connector. The only VOL call here is H5Fget_info(), so we'll
|
||||
@ -1163,7 +1163,7 @@ dump_fcpl(hid_t fid)
|
||||
*/
|
||||
H5VLquery_optional(fid, H5VL_SUBCLS_FILE, H5VL_NATIVE_FILE_GET_INFO, &supported);
|
||||
|
||||
if (!supported)
|
||||
if (!(supported & H5VL_OPT_QUERY_SUPPORTED))
|
||||
return;
|
||||
|
||||
fcpl = H5Fget_create_plist(fid);
|
||||
|
@ -2157,11 +2157,11 @@ list_obj(const char *name, const H5O_info2_t *oinfo, const char *first_seen, voi
|
||||
/* Show detailed information about the object, beginning with information
|
||||
* which is common to all objects. */
|
||||
if (verbose_g > 0) {
|
||||
size_t buf_size = 0;
|
||||
char * comment = NULL;
|
||||
char * obj_tok_str = NULL;
|
||||
ssize_t cmt_bufsize = -1;
|
||||
hbool_t supported = FALSE;
|
||||
size_t buf_size = 0;
|
||||
char * comment = NULL;
|
||||
char * obj_tok_str = NULL;
|
||||
ssize_t cmt_bufsize = -1;
|
||||
uint64_t supported = 0;
|
||||
|
||||
/* Display attributes */
|
||||
H5TOOLS_DEBUG("Display attributes");
|
||||
@ -2200,7 +2200,7 @@ list_obj(const char *name, const H5O_info2_t *oinfo, const char *first_seen, voi
|
||||
/* Only emit comments if the VOL connector supports that */
|
||||
H5VLquery_optional(obj_id, H5VL_SUBCLS_OBJECT, H5VL_NATIVE_OBJECT_GET_COMMENT, &supported);
|
||||
|
||||
if (supported) {
|
||||
if (supported & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
|
||||
/* Object comment */
|
||||
cmt_bufsize = H5Oget_comment(obj_id, comment, buf_size);
|
||||
|
@ -2106,7 +2106,7 @@ gent_objref(void)
|
||||
uint32_t * tu32; /* Temporary pointer to uint32 data */
|
||||
int i; /* counting variables */
|
||||
const char *write_comment = "Foo!"; /* Comments for group */
|
||||
hbool_t supports_comments = FALSE;
|
||||
uint64_t supports_comments = 0;
|
||||
|
||||
/* Allocate write & read buffers */
|
||||
wbuf = (hobj_ref_t *)HDmalloc(sizeof(hobj_ref_t) * SPACE1_DIM1);
|
||||
@ -2126,7 +2126,7 @@ gent_objref(void)
|
||||
H5VLquery_optional(fid1, H5VL_SUBCLS_OBJECT, H5VL_NATIVE_OBJECT_SET_COMMENT, &supports_comments);
|
||||
|
||||
/* Set group's comment */
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment(group, write_comment);
|
||||
|
||||
/* Create a dataset (inside Group1) */
|
||||
@ -3677,9 +3677,9 @@ gent_empty(void)
|
||||
static void
|
||||
gent_group_comments(void)
|
||||
{
|
||||
hid_t fid = H5I_INVALID_HID;
|
||||
hid_t group = H5I_INVALID_HID;
|
||||
hbool_t supports_comments = FALSE;
|
||||
hid_t fid = H5I_INVALID_HID;
|
||||
hid_t group = H5I_INVALID_HID;
|
||||
uint64_t supports_comments = 0;
|
||||
|
||||
fid = H5Fcreate(FILE33, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
||||
|
||||
@ -3688,69 +3688,69 @@ gent_group_comments(void)
|
||||
|
||||
/* / */
|
||||
group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g1", "Comment for group /g1", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g2", "Comment for group /g2", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g3", "Comment for group /g3", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
|
||||
/* /g1 */
|
||||
group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g1/g1.1", "Comment for group /g1/g1.1", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g1/g1.2", "Comment for group /g1/g1.2", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
|
||||
/* /g2 */
|
||||
group = H5Gcreate2(fid, "/g2/g2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g2/g2.1", "Comment for group /g2/g2.1", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
|
||||
/* /g3 */
|
||||
group = H5Gcreate2(fid, "/g3/g3.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g3/g3.1", "Comment for group /g3/g3.1", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g3/g3.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g3/g3.2", "Comment for group /g3/g3.2", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g3/g3.3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g3/g3.3", "Comment for group /g3/g3.3", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g3/g3.4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g3/g3.4", "Comment for group /g3/g3.4", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
|
||||
/* /g2/g2.1 */
|
||||
group = H5Gcreate2(fid, "/g2/g2.1/g2.1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g2/g2.1/g2.1.1", "Comment for group /g2/g2.1/g2.1.1", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g2/g2.1/g2.1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g2/g2.1/g2.1.2", "Comment for group /g2/g2.1/g2.1.2", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
group = H5Gcreate2(fid, "/g2/g2.1/g2.1.3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(group, "/g2/g2.1/g2.1.3", "Comment for group /g2/g2.1/g2.1.3", H5P_DEFAULT);
|
||||
H5Gclose(group);
|
||||
|
||||
/* /glongcomment */
|
||||
group = H5Gcreate2(fid, "/glongcomment", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
if (supports_comments)
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED)
|
||||
H5Oset_comment_by_name(
|
||||
group, "/glongcomment",
|
||||
"Comment for group /glongcomment with a really, really, really long, long, long comment",
|
||||
@ -5446,7 +5446,7 @@ gent_filters(void)
|
||||
int buf1[DIM1][DIM2];
|
||||
int i, j, n;
|
||||
int H5_ATTR_NDEBUG_UNUSED ret;
|
||||
hbool_t supports_comments = FALSE;
|
||||
uint64_t supports_comments = 0;
|
||||
|
||||
for (i = n = 0; i < DIM1; i++) {
|
||||
for (j = 0; j < DIM2; j++) {
|
||||
@ -5478,7 +5478,7 @@ gent_filters(void)
|
||||
ret = make_dset(fid, "compact", sid, H5T_NATIVE_INT, dcpl, buf1);
|
||||
HDassert(ret >= 0);
|
||||
|
||||
if (supports_comments) {
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
ret = H5Oset_comment_by_name(fid, "compact", "This is a dataset with compact storage", H5P_DEFAULT);
|
||||
HDassert(ret >= 0);
|
||||
}
|
||||
@ -5489,7 +5489,7 @@ gent_filters(void)
|
||||
ret = make_dset(fid, "contiguous", sid, H5T_NATIVE_INT, dcpl, buf1);
|
||||
HDassert(ret >= 0);
|
||||
|
||||
if (supports_comments) {
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
ret = H5Oset_comment_by_name(fid, "contiguous", "This is a dataset with contiguous storage",
|
||||
H5P_DEFAULT);
|
||||
HDassert(ret >= 0);
|
||||
@ -5504,7 +5504,7 @@ gent_filters(void)
|
||||
ret = make_dset(fid, "chunked", sid, H5T_NATIVE_INT, dcpl, buf1);
|
||||
HDassert(ret >= 0);
|
||||
|
||||
if (supports_comments) {
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
ret = H5Oset_comment_by_name(fid, "chunked", "This is a dataset with chunked storage", H5P_DEFAULT);
|
||||
HDassert(ret >= 0);
|
||||
}
|
||||
@ -5720,7 +5720,7 @@ gent_filters(void)
|
||||
ret = H5Tcommit2(fid, "mytype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||
HDassert(ret >= 0);
|
||||
|
||||
if (supports_comments) {
|
||||
if (supports_comments & H5VL_OPT_QUERY_SUPPORTED) {
|
||||
ret = H5Oset_comment_by_name(fid, "mytype", "This is a commited datatype", H5P_DEFAULT);
|
||||
HDassert(ret >= 0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user