summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-11-27 19:17:07 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-11-27 19:17:07 (GMT)
commit957a5082d12873eb4238a962ce0193adeac5a1dc (patch)
tree7cf8d7ec52ba3dd2d3778fd1ec39d8e73474e84c /src
parentbb949004910e34cebeb2b0c547f8c5f5dcedc896 (diff)
downloadhdf5-957a5082d12873eb4238a962ce0193adeac5a1dc.zip
hdf5-957a5082d12873eb4238a962ce0193adeac5a1dc.tar.gz
hdf5-957a5082d12873eb4238a962ce0193adeac5a1dc.tar.bz2
[svn-r12983] Description:
Merge H5Pget/set_create_tracking / H5Pget/set_create_index routines into H5Pget/set_creation_order. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
Diffstat (limited to 'src')
-rw-r--r--src/H5Pgcpl.c122
-rw-r--r--src/H5Ppublic.h10
2 files changed, 38 insertions, 94 deletions
diff --git a/src/H5Pgcpl.c b/src/H5Pgcpl.c
index 2fa79e1..16046db 100644
--- a/src/H5Pgcpl.c
+++ b/src/H5Pgcpl.c
@@ -395,9 +395,9 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5Pset_creation_order_tracking
+ * Function: H5Pset_link_creation_order
*
- * Purpose: Set the flag to track creation order of links in a group
+ * Purpose: Set the flags for creation order of links in a group
*
* Return: Non-negative on success/Negative on failure
*
@@ -406,14 +406,18 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5Pset_creation_order_tracking(hid_t plist_id, hbool_t track_corder)
+H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags)
{
H5P_genplist_t *plist; /* Property list pointer */
H5O_ginfo_t ginfo; /* Group information structure */
+ H5O_linfo_t linfo; /* Link information structure */
herr_t ret_value = SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pset_creation_order_tracking, FAIL)
- H5TRACE2("e","ib",plist_id,track_corder);
+ FUNC_ENTER_API(H5Pset_link_creation_order, FAIL)
+
+ /* Check for bad combination of flags */
+ if(!(crt_order_flags & H5P_CRT_ORDER_TRACKED) && (crt_order_flags & H5P_CRT_ORDER_INDEXED))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "tracking creation order is required for index")
/* Get the plist structure */
if(NULL == (plist = H5P_object_verify(plist_id, H5P_GROUP_CREATE)))
@@ -423,90 +427,19 @@ H5Pset_creation_order_tracking(hid_t plist_id, hbool_t track_corder)
if(H5P_get(plist, H5G_CRT_GROUP_INFO_NAME, &ginfo) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get group info")
- /* Update fields */
- ginfo.track_corder = track_corder;
+ /* Update field */
+ ginfo.track_corder = (crt_order_flags & H5P_CRT_ORDER_TRACKED) ? TRUE : FALSE;
/* Set group info */
if(H5P_set(plist, H5G_CRT_GROUP_INFO_NAME, &ginfo) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set group info")
-done:
- FUNC_LEAVE_API(ret_value)
-} /* end H5Pset_creation_order_tracking() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pget_creation_order_tracking
- *
- * Purpose: Returns the flag indicating that creation order is tracked
- * for links in a group.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Quincey Koziol
- * September 12, 2006
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pget_creation_order_tracking(hid_t plist_id, hbool_t *track_corder /*out*/)
-{
- herr_t ret_value = SUCCEED; /* return value */
-
- FUNC_ENTER_API(H5Pget_creation_order_tracking, FAIL)
- H5TRACE2("e","ix",plist_id,track_corder);
-
- /* Get values */
- if(track_corder) {
- H5P_genplist_t *plist; /* Property list pointer */
- H5O_ginfo_t ginfo; /* Group information structure */
-
- /* Get the plist structure */
- if(NULL == (plist = H5P_object_verify(plist_id, H5P_GROUP_CREATE)))
- HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
-
- /* Get group info */
- if(H5P_get(plist, H5G_CRT_GROUP_INFO_NAME, &ginfo) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get group info")
-
- *track_corder = ginfo.track_corder;
- } /* end if */
-
-done:
- FUNC_LEAVE_API(ret_value)
-} /* end H5Pget_creation_order_tracking() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pset_creation_order_index
- *
- * Purpose: Set the flag to index creation order of links in a group
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Quincey Koziol
- * October 30, 2006
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pset_creation_order_index(hid_t plist_id, hbool_t index_corder)
-{
- H5P_genplist_t *plist; /* Property list pointer */
- H5O_linfo_t linfo; /* Link information structure */
- herr_t ret_value = SUCCEED; /* Return value */
-
- FUNC_ENTER_API(H5Pset_creation_order_index, FAIL)
- H5TRACE2("e","ib",plist_id,index_corder);
-
- /* Get the plist structure */
- if(NULL == (plist = H5P_object_verify(plist_id, H5P_GROUP_CREATE)))
- HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
-
/* Get link info */
if(H5P_get(plist, H5G_CRT_LINK_INFO_NAME, &linfo) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get link info")
- /* Update fields */
- linfo.index_corder = index_corder;
+ /* Update field */
+ linfo.index_corder = (crt_order_flags & H5P_CRT_ORDER_INDEXED) ? TRUE : FALSE;
/* Set link info */
if(H5P_set(plist, H5G_CRT_LINK_INFO_NAME, &linfo) < 0)
@@ -514,46 +447,55 @@ H5Pset_creation_order_index(hid_t plist_id, hbool_t index_corder)
done:
FUNC_LEAVE_API(ret_value)
-} /* end H5Pset_creation_order_index() */
+} /* end H5Pset_link_creation_order() */
/*-------------------------------------------------------------------------
- * Function: H5Pget_creation_order_index
+ * Function: H5Pget_creation_order_tracking
*
- * Purpose: Returns the flag indicating that creation order is indexed
+ * Purpose: Returns the flag indicating that creation order is tracked
* for links in a group.
*
* Return: Non-negative on success/Negative on failure
*
* Programmer: Quincey Koziol
- * October 30, 2006
+ * September 12, 2006
*-------------------------------------------------------------------------
*/
herr_t
-H5Pget_creation_order_index(hid_t plist_id, hbool_t *index_corder /*out*/)
+H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags /*out*/)
{
herr_t ret_value = SUCCEED; /* return value */
- FUNC_ENTER_API(H5Pget_creation_order_index, FAIL)
- H5TRACE2("e","ix",plist_id,index_corder);
+ FUNC_ENTER_API(H5Pget_link_creation_order, FAIL)
/* Get values */
- if(index_corder) {
+ if(crt_order_flags) {
H5P_genplist_t *plist; /* Property list pointer */
+ H5O_ginfo_t ginfo; /* Group information structure */
H5O_linfo_t linfo; /* Link information structure */
+ /* Reset the value to return */
+ *crt_order_flags = 0;
+
/* Get the plist structure */
if(NULL == (plist = H5P_object_verify(plist_id, H5P_GROUP_CREATE)))
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
+ /* Get group info */
+ if(H5P_get(plist, H5G_CRT_GROUP_INFO_NAME, &ginfo) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get group info")
+
+ *crt_order_flags |= ginfo.track_corder ? H5P_CRT_ORDER_TRACKED : 0;
+
/* Get link info */
if(H5P_get(plist, H5G_CRT_LINK_INFO_NAME, &linfo) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get link info")
- *index_corder = linfo.index_corder;
+ *crt_order_flags |= linfo.index_corder ? H5P_CRT_ORDER_INDEXED : 0;
} /* end if */
done:
FUNC_LEAVE_API(ret_value)
-} /* end H5Pget_creation_order_index() */
+} /* end H5Pget_link_creation_order() */
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index ea929b8..8d15c22 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -88,6 +88,10 @@
#define H5P_LINK_CREATE_DEFAULT (H5OPEN H5P_LST_LINK_CREATE_g)
#define H5P_LINK_ACCESS_DEFAULT (H5OPEN H5P_LST_LINK_ACCESS_g)
+/* Common creation order flags (for links in groups and attributes on objects) */
+#define H5P_CRT_ORDER_TRACKED 0x0001
+#define H5P_CRT_ORDER_INDEXED 0x0002
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -382,10 +386,8 @@ H5_DLL herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, uns
H5_DLL herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact /*out*/, unsigned *min_dense /*out*/);
H5_DLL herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len);
H5_DLL herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries /* out */, unsigned *est_name_len /* out */);
-H5_DLL herr_t H5Pset_creation_order_tracking(hid_t plist_id, hbool_t track_corder);
-H5_DLL herr_t H5Pget_creation_order_tracking(hid_t plist_id, hbool_t *track_corder /* out */);
-H5_DLL herr_t H5Pset_creation_order_index(hid_t plist_id, hbool_t index_corder);
-H5_DLL herr_t H5Pget_creation_order_index(hid_t plist_id, hbool_t *index_corder /* out */);
+H5_DLL herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags);
+H5_DLL herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags /* out */);
/* String creation property list (SCPL) routines */
H5_DLL herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding);