diff options
Diffstat (limited to 'src/H5Stest.c')
-rw-r--r-- | src/H5Stest.c | 273 |
1 files changed, 7 insertions, 266 deletions
diff --git a/src/H5Stest.c b/src/H5Stest.c index 0e2a72d..62a4179 100644 --- a/src/H5Stest.c +++ b/src/H5Stest.c @@ -77,271 +77,14 @@ done: NAME H5S_get_rebuild_status_test PURPOSE - Determine the status of the diminfo_valid field (whether we know the - selection information for an equivalent single hyperslab selection) - before and after calling H5S_hyper_rebuild. + Determine the status of hyperslab rebuild USAGE - herr_t H5S_inquiry_rebuild_status(hid_t space_id) - hid_t space_id; IN: dataspace id - H5S_diminfo_valid_t *status1; OUT: status before calling - H5S_hyper_rebuild - H5S_diminfo_valid_t *status2; OUT: status after calling - H5S_hyper_rebuild - RETURNS - Non-negative on success, negative on failure - DESCRIPTION - Query the status of rebuilding the hyperslab - GLOBAL VARIABLES - COMMENTS, BUGS, ASSUMPTIONS - DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING - EXAMPLES - REVISION LOG ---------------------------------------------------------------------------*/ -herr_t -H5S_get_rebuild_status_test(hid_t space_id, H5S_diminfo_valid_t *status1, - H5S_diminfo_valid_t *status2) -{ - H5S_t *space; /* Pointer to 1st dataspace */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_NOAPI(FAIL) - - HDassert(status1); - HDassert(status2); - - /* Get dataspace structures */ - if(NULL == (space = (H5S_t *)H5I_object_verify(space_id, H5I_DATASPACE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataspace") - - *status1 = space->select.sel_info.hslab->diminfo_valid; - - /* Fully rebuild diminfo, if necessary */ - if(*status1 == H5S_DIMINFO_VALID_NO) - if(H5S_hyper_rebuild(space) < 0) - HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOUNT, FAIL, "can't update hyperslab info") - - *status2 = space->select.sel_info.hslab->diminfo_valid; - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* H5S_get_rebuild_status_test() */ - - -/*-------------------------------------------------------------------------- - NAME - H5S_get_diminfo_status_test - PURPOSE - Determine the status of the diminfo_valid field (whether we know the - selection information for an equivalent single hyperslab selection) - USAGE - herr_t H5S_inquiry_rebuild_status(hid_t space_id) - hid_t space_id; IN: dataspace id - H5S_diminfo_valid_t *status; OUT: status of diminfo_valid - RETURNS - Non-negative on success, negative on failure - DESCRIPTION - Query the status of rebuilding the hyperslab - GLOBAL VARIABLES - COMMENTS, BUGS, ASSUMPTIONS - DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING - EXAMPLES - REVISION LOG ---------------------------------------------------------------------------*/ -herr_t -H5S_get_diminfo_status_test(hid_t space_id, H5S_diminfo_valid_t *status) -{ - H5S_t *space; /* Pointer to 1st dataspace */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_NOAPI(FAIL) - - HDassert(status); - - /* Get dataspace structures */ - if(NULL == (space = (H5S_t *)H5I_object_verify(space_id, H5I_DATASPACE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataspace") - - *status = space->select.sel_info.hslab->diminfo_valid; - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* H5S_get_diminfo_status_test() */ - -/*-------------------------------------------------------------------------- - NAME - H5S_check_spans_tail_ptr - PURPOSE - Determine if the tail pointer of the spans are correctly set - USAGE - herr_t H5S_check_spans_tail_ptr(span_lst) - const H5S_hyper_span_info_t *span_lst; IN: the spans to check for taill pointers - RETURNS - SUCCEED/FAIL - DESCRIPTION - Checks to see if the current selection in the dataspaces has tail pointers of each - dimension correctly set. - GLOBAL VARIABLES - COMMENTS, BUGS, ASSUMPTIONS - Only check the hyperslab selection - EXAMPLES - REVISION LOG ---------------------------------------------------------------------------*/ -static herr_t -H5S_check_spans_tail_ptr(const H5S_hyper_span_info_t *span_lst) -{ - H5S_hyper_span_t *cur_elem; - H5S_hyper_span_t *actual_tail = NULL; - htri_t ret_value = TRUE; /* Return value */ - - FUNC_ENTER_NOAPI_NOINIT - - HDassert(span_lst); - - cur_elem = span_lst->head; - while(cur_elem) { - actual_tail = cur_elem; - - /* check the next dimension of lower order */ - if(NULL != cur_elem->down) - if((ret_value = H5S_check_spans_tail_ptr(cur_elem->down)) < 0) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the seletion has inconsistent tail pointers") - - cur_elem = cur_elem->next; - } /* end while */ - if(actual_tail != span_lst->tail) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the seletion has inconsistent tail pointers") - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* H5S_check_spans_tail_ptr */ - -/*-------------------------------------------------------------------------- - NAME - H5S_check_points_tail_ptr - PURPOSE - Determine if the tail pointer of the points list are correctly set - USAGE - herr_t H5S_check_points_tail_ptr(pnt_lst) - const H5S_pnt_list_t *pnt_lst; IN: the points list to check for taill pointers - RETURNS - SUCCEED/FAIL - DESCRIPTION - Checks to see if the current selection in the dataspaces has tail pointers correctly set. - GLOBAL VARIABLES - COMMENTS, BUGS, ASSUMPTIONS - Only check the points selection - EXAMPLES - REVISION LOG ---------------------------------------------------------------------------*/ -static herr_t -H5S_check_points_tail_ptr(const H5S_pnt_list_t *pnt_lst) -{ - H5S_pnt_node_t *cur_elem; - H5S_pnt_node_t *actual_tail = NULL; - htri_t ret_value = TRUE; /* Return value */ - - FUNC_ENTER_NOAPI_NOINIT - - HDassert(pnt_lst); - - cur_elem = pnt_lst->head; - while(cur_elem) { - actual_tail = cur_elem; - cur_elem = cur_elem->next; - } /* end while */ - if(actual_tail != pnt_lst->tail) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the seletion has inconsistent tail pointers") - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* H5S_check_points_tail_ptr */ - - -/*-------------------------------------------------------------------------- - NAME - H5S_check_internal_consistency - PURPOSE - Determine if internal data structures are consistent - USAGE - herr_t H5S_check_internal_consistency(space) - const H5S_t *space; IN: 1st Dataspace pointer to compare - RETURNS - SUCCEED/FAIL - DESCRIPTION - Checks to see if the current selection in the dataspaces has consistent - state of internal data structure. - GLOBAL VARIABLES - COMMENTS, BUGS, ASSUMPTIONS - Currently only check the hyperslab selection - EXAMPLES - REVISION LOG ---------------------------------------------------------------------------*/ -static herr_t -H5S_check_internal_consistency(const H5S_t *space) -{ - hsize_t low_bounds[H5S_MAX_RANK]; - hsize_t high_bounds[H5S_MAX_RANK]; - unsigned u; - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_NOAPI(FAIL) - - /* Check args */ - HDassert(space); - - if(space->select.type->type == H5S_SEL_NONE) - HGOTO_DONE(ret_value); - - /* Initialize the inputs */ - for(u = 0; u < space->extent.rank; u++) { - low_bounds[u] = HSIZET_MAX; - high_bounds[u] = 0; - } /* end for */ - - /* Check the bound box */ - if(H5S_get_select_bounds(space, low_bounds, high_bounds) < 0) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the bound box could not be retrieved") - - for(u = 0; u < space->extent.rank; u++) { - if((hsize_t)((hssize_t)space->select.low_bounds[u] + space->select.offset[u]) != low_bounds[u]) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the lower bound box of the selection is inconsistent") - if((hsize_t)((hssize_t)space->select.high_bounds[u] + space->select.offset[u]) != high_bounds[u]) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the higher bound box of the selection is inconsistent") - } /* end for */ - - if(space->select.type->type == H5S_SEL_HYPERSLABS) { - H5S_hyper_sel_t *hslab = space->select.sel_info.hslab; - - /* check the tail pointer */ - if((NULL != hslab) && (NULL != hslab->span_lst)) - if(H5S_check_spans_tail_ptr(hslab->span_lst) < 0) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the seletion has inconsistent tail pointers") - } /* end if */ - else if(space->select.type->type == H5S_SEL_POINTS) { - H5S_pnt_list_t *pnt_lst = space->select.sel_info.pnt_lst; - - if(NULL != pnt_lst) - if(H5S_check_points_tail_ptr(pnt_lst) < 0) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "the seletion has inconsistent tail pointers") - } /* end else-if */ - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* H5S_check_internal_consistency */ - -/*-------------------------------------------------------------------------- - NAME - H5S_internal_consistency_test - PURPOSE - Determine if states of internal data structures are consistent - USAGE - htri_t H5S_internal_consistency_test(hid_t space_id) + htri_t H5S_inquiry_rebuild_status(hid_t space_id) hid_t space_id; IN: dataspace id RETURNS Non-negative TRUE/FALSE on success, negative on failure DESCRIPTION - Check the states of internal data structures of the hyperslab, and see - whether they are consistent or not + Query the status of rebuilding the hyperslab GLOBAL VARIABLES COMMENTS, BUGS, ASSUMPTIONS DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING @@ -349,10 +92,10 @@ done: REVISION LOG --------------------------------------------------------------------------*/ htri_t -H5S_internal_consistency_test(hid_t space_id) +H5S_get_rebuild_status_test(hid_t space_id) { H5S_t *space; /* Pointer to 1st dataspace */ - htri_t ret_value = TRUE; /* Return value */ + htri_t ret_value; /* Return value */ FUNC_ENTER_NOAPI(FAIL) @@ -360,11 +103,9 @@ H5S_internal_consistency_test(hid_t space_id) if(NULL == (space = (H5S_t *)H5I_object_verify(space_id, H5I_DATASPACE))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataspace") - /* Check if the dataspace selections are the same shape */ - if(FAIL == H5S_check_internal_consistency(space)) - HGOTO_ERROR(H5E_DATASPACE, H5E_INCONSISTENTSTATE, FAIL, "The dataspace has inconsistent internal state") + ret_value = (htri_t)space->select.sel_info.hslab->diminfo_valid; done: FUNC_LEAVE_NOAPI(ret_value) -} /* H5S_internal_consistency_test() */ +} /* H5S_get_rebuild_status_test() */ |