summaryrefslogtreecommitdiffstats
path: root/src/H5Pint.c
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2021-05-28 14:10:51 (GMT)
committerGitHub <noreply@github.com>2021-05-28 14:10:51 (GMT)
commit2ddf5fbd92ebdb0d59e208d88f159eec8a1ffbf8 (patch)
tree40975e0846d101360a838d42e16f4687fed77f4a /src/H5Pint.c
parente22687912dbc6fcf4fff57e86e2cd5d75c81f81e (diff)
downloadhdf5-2ddf5fbd92ebdb0d59e208d88f159eec8a1ffbf8.zip
hdf5-2ddf5fbd92ebdb0d59e208d88f159eec8a1ffbf8.tar.gz
hdf5-2ddf5fbd92ebdb0d59e208d88f159eec8a1ffbf8.tar.bz2
Much normalization with develop (#701)
* Brings CMake updates from develop * Brings reduction in pedantic casts from develop * Purges UFAIL from the library (#637) * Committing clang-format changes * Purges UFAIL from the library * H5HL_insert change requested in PR Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Removes gratuitous (double)x.yF casts (#632) * Committing clang-format changes * Removes gratuitous (double)x.yF casts * Committing clang-format changes Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Committing clang-format changes * Cleans up a const warning left over from previous constification (#633) * Committing clang-format changes * Adds consts to a few global variables * Cleans up a const warning left over from previous constification Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Formatted source * Bring over some VOL registration changes * VOL cleanup * H5VL_request_status_t substitutions * H5F.c cleanup * Minor API tweaks from develop * Moves H5G package init/teardown to H5Gint.c * H5G cleanup * H5M cleanup * H5SM cleanup * H5T cleanup * H5R cleanup * H5Lpublic.h cleanup * H5L cleanup * H5O cleanup * H5A, H5CS, and H5AC cleanup * Moved H5A init/teardown code to H5Aint.c * Moves H5D I/O functions to H5D.c * H5D cleanup * Misc minor cleanup * H5P close cleanup * H5Tpublic.h cleanup * Fixes err_compat test * H5PLpublic.h cleanup * Updates H5Ppublic.h * H5Fpublic.h updates * H5A.c cleanup * Brings over H5Aexists and related changes * Brings CMake shell testing changes from develop * Close callback changes * H5R and H5Tcommit normalization * err_compat test works now * H5O tweaks * Updates VOL registration code * Brings over H5VL_create_object * H5Tconv.c reformatting * H5T.c tweaks * Brings datatype and reference updates from develop * Brings VOL plugin loading changes from develop * Brings event sets from develop * Brings async functions over * Tools changes * Brings over many tools changes from develop * Brings VOL flags from develop * Fixes h5dump double/float tests * Updates h5repack tests * Brings h5diff test changes from develop * Last h5dump changes * Brings test changes from develop * Committing clang-format changes * Tidied h5_testing() * Brings chunk iteration code + misc from develop * Updates vds test * Enables external link parallel test * Brings updated property lists from develop * H5G changes from develop * H5MF cleanup * Brings vfd_swmr test back into CMake * Updates threadsafe test * Updates plist test * Brings recent changes from develop Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'src/H5Pint.c')
-rw-r--r--src/H5Pint.c94
1 files changed, 79 insertions, 15 deletions
diff --git a/src/H5Pint.c b/src/H5Pint.c
index 4215ccb..b27a440 100644
--- a/src/H5Pint.c
+++ b/src/H5Pint.c
@@ -95,6 +95,10 @@ typedef herr_t (*H5P_do_pclass_op_t)(H5P_genplist_t *plist, const char *name, H5
/* Local Prototypes */
/********************/
+/* Infrastructure routines */
+static herr_t H5P__close_class_cb(void *space, void **request);
+static herr_t H5P__close_list_cb(void *space, void **request);
+
/* General helper routines */
static H5P_genplist_t *H5P__create(H5P_genclass_t *pclass);
static H5P_genprop_t * H5P__create_prop(const char *name, size_t size, H5P_prop_within_t type,
@@ -394,18 +398,18 @@ H5FL_DEFINE_STATIC(H5P_genplist_t);
/* Generic Property Class ID class */
static const H5I_class_t H5I_GENPROPCLS_CLS[1] = {{
- H5I_GENPROP_CLS, /* ID class value */
- 0, /* Class flags */
- 0, /* # of reserved IDs for class */
- (H5I_free_t)H5P__close_class /* Callback routine for closing objects of this class */
+ H5I_GENPROP_CLS, /* ID class value */
+ 0, /* Class flags */
+ 0, /* # of reserved IDs for class */
+ (H5I_free_t)H5P__close_class_cb /* Callback routine for closing objects of this class */
}};
/* Generic Property List ID class */
static const H5I_class_t H5I_GENPROPLST_CLS[1] = {{
- H5I_GENPROP_LST, /* ID class value */
- 0, /* Class flags */
- 0, /* # of reserved IDs for class */
- (H5I_free_t)H5P_close /* Callback routine for closing objects of this class */
+ H5I_GENPROP_LST, /* ID class value */
+ 0, /* Class flags */
+ 0, /* # of reserved IDs for class */
+ (H5I_free_t)H5P__close_list_cb /* Callback routine for closing objects of this class */
}};
/*-------------------------------------------------------------------------
@@ -622,6 +626,68 @@ H5P_term_package(void)
FUNC_LEAVE_NOAPI(n)
} /* end H5P_term_package() */
+/*-------------------------------------------------------------------------
+ * Function: H5P__close_class_cb
+ *
+ * Purpose: Called when the ref count reaches zero on a property class's ID
+ *
+ * Return: SUCCEED / FAIL
+ *
+ * Programmer: Quincey Koziol
+ * Wednesday, April 8, 2020
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5P__close_class_cb(void *_pclass, void H5_ATTR_UNUSED **request)
+{
+ H5P_genclass_t *pclass = (H5P_genclass_t *)_pclass; /* Property list class to close */
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_STATIC
+
+ /* Sanity check */
+ HDassert(pclass);
+
+ /* Close the property list class object */
+ if (H5P__close_class(pclass) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CLOSEERROR, FAIL, "unable to close property list class");
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P__close_class_cb() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5P__close_list_cb
+ *
+ * Purpose: Called when the ref count reaches zero on a property list's ID
+ *
+ * Return: SUCCEED / FAIL
+ *
+ * Programmer: Quincey Koziol
+ * Wednesday, April 8, 2020
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5P__close_list_cb(void *_plist, void H5_ATTR_UNUSED **request)
+{
+ H5P_genplist_t *plist = (H5P_genplist_t *)_plist; /* Property list to close */
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_STATIC
+
+ /* Sanity check */
+ HDassert(plist);
+
+ /* Close the property list object */
+ if (H5P_close(plist) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CLOSEERROR, FAIL, "unable to close property list");
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P__close_list_cb() */
+
/*--------------------------------------------------------------------------
NAME
H5P__do_prop_cb1
@@ -5011,11 +5077,10 @@ done:
REVISION LOG
--------------------------------------------------------------------------*/
herr_t
-H5P_close(void *_plist)
+H5P_close(H5P_genplist_t *plist)
{
- H5P_genclass_t *tclass; /* Temporary class pointer */
- H5P_genplist_t *plist = (H5P_genplist_t *)_plist;
- H5SL_t * seen = NULL; /* Skip list to hold names of properties already seen */
+ H5P_genclass_t *tclass; /* Temporary class pointer */
+ H5SL_t * seen = NULL; /* Skip list to hold names of properties already seen */
size_t nseen; /* Number of items 'seen' */
hbool_t has_parent_class; /* Flag to indicate that this property list's class has a parent */
size_t ndel; /* Number of items deleted */
@@ -5394,10 +5459,9 @@ H5P__get_class_parent(const H5P_genclass_t *pclass)
REVISION LOG
--------------------------------------------------------------------------*/
herr_t
-H5P__close_class(void *_pclass)
+H5P__close_class(H5P_genclass_t *pclass)
{
- H5P_genclass_t *pclass = (H5P_genclass_t *)_pclass;
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT