summaryrefslogtreecommitdiffstats
path: root/src/H5P.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5P.c')
-rw-r--r--src/H5P.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/H5P.c b/src/H5P.c
index c229e0a..eb4faeb 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -2524,6 +2524,103 @@ H5Pset_deflate(hid_t plist_id, unsigned level)
}
+/*-------------------------------------------------------------------------
+ * Function: H5Pget_btree_ratios
+ *
+ * Purpose: Queries B-tree split ratios. See H5Pset_btree_ratios().
+ *
+ * Return: Success: SUCCEED with split ratios returned through
+ * the non-null arguments.
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Monday, September 28, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/, double *middle/*out*/,
+ double *right/*out*/)
+{
+ H5D_xfer_t *plist = NULL;
+
+ FUNC_ENTER(H5Pget_btree_ratios, FAIL);
+ H5TRACE4("e","ixxx",plist_id,left,middle,right);
+
+ /* Check arguments */
+ if (H5P_DATASET_XFER!=H5P_get_class(plist_id) ||
+ NULL==(plist=H5I_object(plist_id))) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL,
+ "not a dataset transfer property list");
+ }
+
+ /* Get values */
+ if (left) *left = plist->split_ratios[0];
+ if (middle) *middle = plist->split_ratios[1];
+ if (right) *right = plist->split_ratios[2];
+
+ FUNC_LEAVE(SUCCEED);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Pset_btree_ratios
+ *
+ * Purpose: Sets B-tree split ratios for a dataset transfer property
+ * list. The split ratios determine what percent of children go
+ * in the first node when a node splits. The LEFT ratio is
+ * used when the splitting node is the left-most node at its
+ * level in the tree; the RIGHT ratio is when the splitting node
+ * is the right-most node at its level; and the MIDDLE ratio for
+ * all other cases. A node which is the only node at its level
+ * in the tree uses the RIGHT ratio when it splits. All ratios
+ * are real numbers between 0 and 1, inclusive.
+ *
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Monday, September 28, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
+ double right)
+{
+
+ H5D_xfer_t *plist = NULL;
+
+ FUNC_ENTER(H5Pget_btree_ratios, FAIL);
+ H5TRACE4("e","iddd",plist_id,left,middle,right);
+
+ /* Check arguments */
+ if (H5P_DATASET_XFER!=H5P_get_class(plist_id) ||
+ NULL==(plist=H5I_object(plist_id))) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL,
+ "not a dataset transfer property list");
+ }
+ if (left<0.0 || left>1.0 || middle<0.0 || middle>1.0 ||
+ right<0.0 || right>1.0) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL,
+ "split ratio must satisfy 0.0<=X<=1.0");
+ }
+
+ /* Set values */
+ plist->split_ratios[0] = left;
+ plist->split_ratios[1] = middle;
+ plist->split_ratios[2] = right;
+
+ FUNC_LEAVE(SUCCEED);
+}
+
+
#ifdef HAVE_PARALLEL
/*-------------------------------------------------------------------------
* Function: H5Pset_mpi