diff options
author | Allen Byrne <byrn@hdfgroup.org> | 2020-10-01 14:04:36 (GMT) |
---|---|---|
committer | Allen Byrne <byrn@hdfgroup.org> | 2020-10-01 14:04:36 (GMT) |
commit | f1ba03cea5b82699a984c80bd2deac14fdc8df18 (patch) | |
tree | ebe777c3e0b83f4c4cec9212731da9ebe0a0cfd3 /src/H5Spoint.c | |
parent | 10343c197906415388f2a4c8d292e21d25cf7381 (diff) | |
download | hdf5-f1ba03cea5b82699a984c80bd2deac14fdc8df18.zip hdf5-f1ba03cea5b82699a984c80bd2deac14fdc8df18.tar.gz hdf5-f1ba03cea5b82699a984c80bd2deac14fdc8df18.tar.bz2 |
Source formatted
Diffstat (limited to 'src/H5Spoint.c')
-rw-r--r-- | src/H5Spoint.c | 779 |
1 files changed, 374 insertions, 405 deletions
diff --git a/src/H5Spoint.c b/src/H5Spoint.c index e9135e4..584624d 100644 --- a/src/H5Spoint.c +++ b/src/H5Spoint.c @@ -22,27 +22,24 @@ /* Module Setup */ /****************/ -#include "H5Smodule.h" /* This source code file is part of the H5S module */ - +#include "H5Smodule.h" /* This source code file is part of the H5S module */ /***********/ /* Headers */ /***********/ -#include "H5private.h" /* Generic Functions */ -#include "H5CXprivate.h" /* API Contexts */ -#include "H5Eprivate.h" /* Error handling */ -#include "H5FLprivate.h" /* Free Lists */ -#include "H5Iprivate.h" /* ID Functions */ -#include "H5MMprivate.h" /* Memory management */ -#include "H5Spkg.h" /* Dataspace functions */ -#include "H5VMprivate.h" /* Vector functions */ - +#include "H5private.h" /* Generic Functions */ +#include "H5CXprivate.h" /* API Contexts */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5Iprivate.h" /* ID Functions */ +#include "H5MMprivate.h" /* Memory management */ +#include "H5Spkg.h" /* Dataspace functions */ +#include "H5VMprivate.h" /* Vector functions */ /****************/ /* Local Macros */ /****************/ - /******************/ /* Local Typedefs */ /******************/ @@ -51,55 +48,50 @@ /* (Makes it easier to understand the alloc / free calls) */ typedef hsize_t hcoords_t; - /********************/ /* Local Prototypes */ /********************/ -static herr_t H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, - const hsize_t *coord); -static H5S_pnt_list_t *H5S__copy_pnt_list(const H5S_pnt_list_t *src, - unsigned rank); -static void H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst); +static herr_t H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *coord); +static H5S_pnt_list_t *H5S__copy_pnt_list(const H5S_pnt_list_t *src, unsigned rank); +static void H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst); /* Selection callbacks */ -static herr_t H5S__point_copy(H5S_t *dst, const H5S_t *src, hbool_t share_selection); -static herr_t H5S__point_release(H5S_t *space); -static htri_t H5S__point_is_valid(const H5S_t *space); +static herr_t H5S__point_copy(H5S_t *dst, const H5S_t *src, hbool_t share_selection); +static herr_t H5S__point_release(H5S_t *space); +static htri_t H5S__point_is_valid(const H5S_t *space); static hssize_t H5S__point_serial_size(const H5S_t *space); -static herr_t H5S__point_serialize(const H5S_t *space, uint8_t **p); -static herr_t H5S__point_deserialize(H5S_t **space, const uint8_t **p); -static herr_t H5S__point_bounds(const H5S_t *space, hsize_t *start, hsize_t *end); -static herr_t H5S__point_offset(const H5S_t *space, hsize_t *off); -static int H5S__point_unlim_dim(const H5S_t *space); -static htri_t H5S__point_is_contiguous(const H5S_t *space); -static htri_t H5S__point_is_single(const H5S_t *space); -static htri_t H5S__point_is_regular(const H5S_t *space); -static htri_t H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2); -static htri_t H5S__point_intersect_block(const H5S_t *space, const hsize_t *start, const hsize_t *end); -static herr_t H5S__point_adjust_u(H5S_t *space, const hsize_t *offset); -static herr_t H5S__point_adjust_s(H5S_t *space, const hssize_t *offset); -static herr_t H5S__point_project_scalar(const H5S_t *space, hsize_t *offset); -static herr_t H5S__point_project_simple(const H5S_t *space, H5S_t *new_space, hsize_t *offset); -static herr_t H5S__point_iter_init(const H5S_t *space, H5S_sel_iter_t *iter); -static herr_t H5S__point_get_version_enc_size(const H5S_t *space, uint32_t *version, uint8_t *enc_size); +static herr_t H5S__point_serialize(const H5S_t *space, uint8_t **p); +static herr_t H5S__point_deserialize(H5S_t **space, const uint8_t **p); +static herr_t H5S__point_bounds(const H5S_t *space, hsize_t *start, hsize_t *end); +static herr_t H5S__point_offset(const H5S_t *space, hsize_t *off); +static int H5S__point_unlim_dim(const H5S_t *space); +static htri_t H5S__point_is_contiguous(const H5S_t *space); +static htri_t H5S__point_is_single(const H5S_t *space); +static htri_t H5S__point_is_regular(const H5S_t *space); +static htri_t H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2); +static htri_t H5S__point_intersect_block(const H5S_t *space, const hsize_t *start, const hsize_t *end); +static herr_t H5S__point_adjust_u(H5S_t *space, const hsize_t *offset); +static herr_t H5S__point_adjust_s(H5S_t *space, const hssize_t *offset); +static herr_t H5S__point_project_scalar(const H5S_t *space, hsize_t *offset); +static herr_t H5S__point_project_simple(const H5S_t *space, H5S_t *new_space, hsize_t *offset); +static herr_t H5S__point_iter_init(const H5S_t *space, H5S_sel_iter_t *iter); +static herr_t H5S__point_get_version_enc_size(const H5S_t *space, uint32_t *version, uint8_t *enc_size); /* Selection iteration callbacks */ -static herr_t H5S__point_iter_coords(const H5S_sel_iter_t *iter, hsize_t *coords); -static herr_t H5S__point_iter_block(const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end); +static herr_t H5S__point_iter_coords(const H5S_sel_iter_t *iter, hsize_t *coords); +static herr_t H5S__point_iter_block(const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end); static hsize_t H5S__point_iter_nelmts(const H5S_sel_iter_t *iter); -static htri_t H5S__point_iter_has_next_block(const H5S_sel_iter_t *iter); -static herr_t H5S__point_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem); -static herr_t H5S__point_iter_next_block(H5S_sel_iter_t *sel_iter); -static herr_t H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, - size_t maxbytes, size_t *nseq, size_t *nbytes, hsize_t *off, size_t *len); +static htri_t H5S__point_iter_has_next_block(const H5S_sel_iter_t *iter); +static herr_t H5S__point_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem); +static herr_t H5S__point_iter_next_block(H5S_sel_iter_t *sel_iter); +static herr_t H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxbytes, size_t *nseq, + size_t *nbytes, hsize_t *off, size_t *len); static herr_t H5S__point_iter_release(H5S_sel_iter_t *sel_iter); - /*****************************/ /* Library Private Variables */ /*****************************/ - /*********************/ /* Package Variables */ /*********************/ @@ -133,10 +125,10 @@ const H5S_select_class_t H5S_sel_point[1] = {{ /* Format version bounds for dataspace hyperslab selection */ const unsigned H5O_sds_point_ver_bounds[] = { - H5S_POINT_VERSION_1, /* H5F_LIBVER_EARLIEST */ - H5S_POINT_VERSION_1, /* H5F_LIBVER_V18 */ - H5S_POINT_VERSION_1, /* H5F_LIBVER_V110 */ - H5S_POINT_VERSION_2 /* H5F_LIBVER_LATEST */ + H5S_POINT_VERSION_1, /* H5F_LIBVER_EARLIEST */ + H5S_POINT_VERSION_1, /* H5F_LIBVER_V18 */ + H5S_POINT_VERSION_1, /* H5F_LIBVER_V110 */ + H5S_POINT_VERSION_2 /* H5F_LIBVER_LATEST */ }; /*******************/ @@ -164,7 +156,6 @@ H5FL_BARR_DEFINE_STATIC(H5S_pnt_node_t, hcoords_t, H5S_MAX_RANK); /* Declare a free list to manage the H5S_pnt_list_t struct */ H5FL_DEFINE_STATIC(H5S_pnt_list_t); - /*------------------------------------------------------------------------- * Function: H5S__point_iter_init * @@ -180,7 +171,7 @@ H5FL_DEFINE_STATIC(H5S_pnt_list_t); static herr_t H5S__point_iter_init(const H5S_t *space, H5S_sel_iter_t *iter) { - herr_t ret_value = SUCCEED; /* Return value */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -197,10 +188,10 @@ H5S__point_iter_init(const H5S_t *space, H5S_sel_iter_t *iter) * close the dataspace that the iterator is operating on, or undefined * behavior will occur. */ - if((iter->flags & H5S_SEL_ITER_API_CALL) && - !(iter->flags & H5S_SEL_ITER_SHARE_WITH_DATASPACE)) { + if ((iter->flags & H5S_SEL_ITER_API_CALL) && !(iter->flags & H5S_SEL_ITER_SHARE_WITH_DATASPACE)) { /* Copy the point list */ - if(NULL == (iter->u.pnt.pnt_lst = H5S__copy_pnt_list(space->select.sel_info.pnt_lst, space->extent.rank))) + if (NULL == + (iter->u.pnt.pnt_lst = H5S__copy_pnt_list(space->select.sel_info.pnt_lst, space->extent.rank))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOPY, FAIL, "can't copy point list") } /* end if */ else @@ -217,7 +208,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_iter_init() */ - /*------------------------------------------------------------------------- * Function: H5S__point_iter_coords * @@ -246,7 +236,6 @@ H5S__point_iter_coords(const H5S_sel_iter_t *iter, hsize_t *coords) FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_iter_coords() */ - /*------------------------------------------------------------------------- * Function: H5S__point_iter_block * @@ -277,7 +266,6 @@ H5S__point_iter_block(const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end) FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_iter_block() */ - /*------------------------------------------------------------------------- * Function: H5S__point_iter_nelmts * @@ -301,7 +289,6 @@ H5S__point_iter_nelmts(const H5S_sel_iter_t *iter) FUNC_LEAVE_NOAPI(iter->elmt_left) } /* end H5S__point_iter_nelmts() */ - /*-------------------------------------------------------------------------- NAME H5S__point_iter_has_next_block @@ -322,7 +309,7 @@ H5S__point_iter_nelmts(const H5S_sel_iter_t *iter) static htri_t H5S__point_iter_has_next_block(const H5S_sel_iter_t *iter) { - htri_t ret_value = TRUE; /* Return value */ + htri_t ret_value = TRUE; /* Return value */ FUNC_ENTER_STATIC_NOERR @@ -330,14 +317,13 @@ H5S__point_iter_has_next_block(const H5S_sel_iter_t *iter) HDassert(iter); /* Check if there is another point in the list */ - if(iter->u.pnt.curr->next == NULL) + if (iter->u.pnt.curr->next == NULL) HGOTO_DONE(FALSE); done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_iter_has_next_block() */ - /*-------------------------------------------------------------------------- NAME H5S__point_iter_next @@ -366,7 +352,7 @@ H5S__point_iter_next(H5S_sel_iter_t *iter, size_t nelem) HDassert(nelem > 0); /* Increment the iterator */ - while(nelem > 0) { + while (nelem > 0) { iter->u.pnt.curr = iter->u.pnt.curr->next; nelem--; } /* end while */ @@ -374,7 +360,6 @@ H5S__point_iter_next(H5S_sel_iter_t *iter, size_t nelem) FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_iter_next() */ - /*-------------------------------------------------------------------------- NAME H5S__point_iter_next_block @@ -406,7 +391,6 @@ H5S__point_iter_next_block(H5S_sel_iter_t *iter) FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_iter_next_block() */ - /*-------------------------------------------------------------------------- NAME H5S__point_iter_get_seq_list @@ -437,18 +421,18 @@ H5S__point_iter_next_block(H5S_sel_iter_t *iter) REVISION LOG --------------------------------------------------------------------------*/ static herr_t -H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem, - size_t *nseq, size_t *nelem, hsize_t *off, size_t *len) +H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem, size_t *nseq, size_t *nelem, + hsize_t *off, size_t *len) { - size_t io_left; /* The number of bytes left in the selection */ - size_t start_io_left; /* The initial number of bytes left in the selection */ - H5S_pnt_node_t *node; /* Point node */ - unsigned ndims; /* Dimensionality of dataspace*/ - hsize_t acc; /* Coordinate accumulator */ - hsize_t loc; /* Coordinate offset */ - size_t curr_seq; /* Current sequence being operated on */ - int i; /* Local index variable */ - herr_t ret_value = SUCCEED; /* return value */ + size_t io_left; /* The number of bytes left in the selection */ + size_t start_io_left; /* The initial number of bytes left in the selection */ + H5S_pnt_node_t *node; /* Point node */ + unsigned ndims; /* Dimensionality of dataspace*/ + hsize_t acc; /* Coordinate accumulator */ + hsize_t loc; /* Coordinate offset */ + size_t curr_seq; /* Current sequence being operated on */ + int i; /* Local index variable */ + herr_t ret_value = SUCCEED; /* return value */ FUNC_ENTER_STATIC_NOERR @@ -470,24 +454,24 @@ H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem /* Walk through the points in the selection, starting at the current */ /* location in the iterator */ - node = iter->u.pnt.curr; + node = iter->u.pnt.curr; curr_seq = 0; - while(NULL != node) { + while (NULL != node) { /* Compute the offset of each selected point in the buffer */ - for(i = (int)(ndims - 1), acc = iter->elmt_size, loc = 0; i >= 0; i--) { + for (i = (int)(ndims - 1), acc = iter->elmt_size, loc = 0; i >= 0; i--) { loc += (hsize_t)((hssize_t)node->pnt[i] + iter->sel_off[i]) * acc; acc *= iter->dims[i]; } /* end for */ /* Check if this is a later point in the selection */ - if(curr_seq > 0) { + if (curr_seq > 0) { /* If a sorted sequence is requested, make certain we don't go backwards in the offset */ - if((iter->flags & H5S_SEL_ITER_GET_SEQ_LIST_SORTED) && loc < off[curr_seq - 1]) + if ((iter->flags & H5S_SEL_ITER_GET_SEQ_LIST_SORTED) && loc < off[curr_seq - 1]) break; /* Check if this point extends the previous sequence */ /* (Unlikely, but possible) */ - if(loc == (off[curr_seq - 1] + len[curr_seq - 1])) { + if (loc == (off[curr_seq - 1] + len[curr_seq - 1])) { /* Extend the previous sequence */ len[curr_seq - 1] += iter->elmt_size; } /* end if */ @@ -499,7 +483,7 @@ H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem /* Increment sequence count */ curr_seq++; } /* end else */ - } /* end if */ + } /* end if */ else { /* Add a new sequence */ off[curr_seq] = loc; @@ -517,16 +501,16 @@ H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem iter->elmt_left--; /* Check if we're finished with all sequences */ - if(curr_seq == maxseq) + if (curr_seq == maxseq) break; /* Check if we're finished with all the elements available */ - if(io_left == 0) + if (io_left == 0) break; /* Advance to the next point */ node = node->next; - } /* end while */ + } /* end while */ /* Set the number of sequences generated */ *nseq = curr_seq; @@ -537,7 +521,6 @@ H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_iter_get_seq_list() */ - /*-------------------------------------------------------------------------- NAME H5S__point_iter_release @@ -556,7 +539,7 @@ H5S__point_iter_get_seq_list(H5S_sel_iter_t *iter, size_t maxseq, size_t maxelem REVISION LOG --------------------------------------------------------------------------*/ static herr_t -H5S__point_iter_release(H5S_sel_iter_t * iter) +H5S__point_iter_release(H5S_sel_iter_t *iter) { FUNC_ENTER_STATIC_NOERR @@ -564,14 +547,12 @@ H5S__point_iter_release(H5S_sel_iter_t * iter) HDassert(iter); /* If this iterator copied the point list, we must free it */ - if((iter->flags & H5S_SEL_ITER_API_CALL) && - !(iter->flags & H5S_SEL_ITER_SHARE_WITH_DATASPACE)) + if ((iter->flags & H5S_SEL_ITER_API_CALL) && !(iter->flags & H5S_SEL_ITER_SHARE_WITH_DATASPACE)) H5S__free_pnt_list(iter->u.pnt.pnt_lst); FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_iter_release() */ - /*-------------------------------------------------------------------------- NAME H5S__point_add @@ -595,8 +576,8 @@ static herr_t H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *coord) { H5S_pnt_node_t *top = NULL, *curr = NULL, *new_node = NULL; /* Point selection nodes */ - unsigned u; /* Counter */ - herr_t ret_value = SUCCEED; /* Return value */ + unsigned u; /* Counter */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -606,11 +587,11 @@ H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *c HDassert(coord); HDassert(op == H5S_SELECT_SET || op == H5S_SELECT_APPEND || op == H5S_SELECT_PREPEND); - for(u = 0; u < num_elem; u++) { - unsigned dim; /* Counter for dimensions */ + for (u = 0; u < num_elem; u++) { + unsigned dim; /* Counter for dimensions */ /* Allocate space for the new node */ - if(NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, space->extent.rank))) + if (NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, space->extent.rank))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate point node") /* Initialize fields in node */ @@ -620,7 +601,7 @@ H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *c H5MM_memcpy(new_node->pnt, coord + (u * space->extent.rank), (space->extent.rank * sizeof(hsize_t))); /* Link into list */ - if(top == NULL) + if (top == NULL) top = new_node; else curr->next = new_node; @@ -632,31 +613,33 @@ H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *c * So the following bound box update procedure works correctly * for the SET operation) */ - for(dim = 0; dim < space->extent.rank; dim++) { - space->select.sel_info.pnt_lst->low_bounds[dim] = MIN(space->select.sel_info.pnt_lst->low_bounds[dim], curr->pnt[dim]); - space->select.sel_info.pnt_lst->high_bounds[dim] = MAX(space->select.sel_info.pnt_lst->high_bounds[dim], curr->pnt[dim]); + for (dim = 0; dim < space->extent.rank; dim++) { + space->select.sel_info.pnt_lst->low_bounds[dim] = + MIN(space->select.sel_info.pnt_lst->low_bounds[dim], curr->pnt[dim]); + space->select.sel_info.pnt_lst->high_bounds[dim] = + MAX(space->select.sel_info.pnt_lst->high_bounds[dim], curr->pnt[dim]); } /* end for */ - } /* end for */ + } /* end for */ new_node = NULL; /* Insert the list of points selected in the proper place */ - if(op == H5S_SELECT_SET || op == H5S_SELECT_PREPEND) { + if (op == H5S_SELECT_SET || op == H5S_SELECT_PREPEND) { /* Append current list, if there is one */ - if(NULL != space->select.sel_info.pnt_lst->head) + if (NULL != space->select.sel_info.pnt_lst->head) curr->next = space->select.sel_info.pnt_lst->head; /* Put new list in point selection */ space->select.sel_info.pnt_lst->head = top; /* Change the tail pointer if tail has not been set */ - if(NULL == space->select.sel_info.pnt_lst->tail) + if (NULL == space->select.sel_info.pnt_lst->tail) space->select.sel_info.pnt_lst->tail = curr; - } /* end if */ - else { /* op==H5S_SELECT_APPEND */ - H5S_pnt_node_t *tmp_node; /* Temporary point selection node */ + } /* end if */ + else { /* op==H5S_SELECT_APPEND */ + H5S_pnt_node_t *tmp_node; /* Temporary point selection node */ tmp_node = space->select.sel_info.pnt_lst->head; - if(tmp_node != NULL) { + if (tmp_node != NULL) { HDassert(space->select.sel_info.pnt_lst->tail); space->select.sel_info.pnt_lst->tail->next = top; } /* end if */ @@ -666,29 +649,28 @@ H5S__point_add(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *c } /* end else */ /* Set the number of elements in the new selection */ - if(op == H5S_SELECT_SET) + if (op == H5S_SELECT_SET) space->select.num_elem = num_elem; else space->select.num_elem += num_elem; done: - if(ret_value < 0) { + if (ret_value < 0) { /* Release possibly partially initialized new node */ - if(new_node) + if (new_node) new_node = (H5S_pnt_node_t *)H5FL_ARR_FREE(hcoords_t, new_node); /* Release possible linked list of nodes */ - while(top) { + while (top) { curr = top->next; - top = (H5S_pnt_node_t *)H5FL_ARR_FREE(hcoords_t, top); - top = curr; + top = (H5S_pnt_node_t *)H5FL_ARR_FREE(hcoords_t, top); + top = curr; } /* end while */ - } /* end if */ + } /* end if */ FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_add() */ - /*-------------------------------------------------------------------------- NAME H5S__point_release @@ -726,7 +708,6 @@ H5S__point_release(H5S_t *space) FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_release() */ - /*-------------------------------------------------------------------------- NAME H5S_select_elements @@ -755,10 +736,9 @@ H5S__point_release(H5S_t *space) REVISION LOG --------------------------------------------------------------------------*/ herr_t -H5S_select_elements(H5S_t *space, H5S_seloper_t op, size_t num_elem, - const hsize_t *coord) +H5S_select_elements(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *coord) { - herr_t ret_value = SUCCEED; /* Return value */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(FAIL) @@ -769,24 +749,25 @@ H5S_select_elements(H5S_t *space, H5S_seloper_t op, size_t num_elem, HDassert(op == H5S_SELECT_SET || op == H5S_SELECT_APPEND || op == H5S_SELECT_PREPEND); /* If we are setting a new selection, remove current selection first */ - if(op == H5S_SELECT_SET || H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS) - if(H5S_SELECT_RELEASE(space) < 0) + if (op == H5S_SELECT_SET || H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS) + if (H5S_SELECT_RELEASE(space) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTDELETE, FAIL, "can't release point selection") /* Allocate space for the point selection information if necessary */ - if(H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS || space->select.sel_info.pnt_lst == NULL) { + if (H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS || space->select.sel_info.pnt_lst == NULL) { hsize_t tmp = HSIZET_MAX; - if(NULL == (space->select.sel_info.pnt_lst = H5FL_CALLOC(H5S_pnt_list_t))) + if (NULL == (space->select.sel_info.pnt_lst = H5FL_CALLOC(H5S_pnt_list_t))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate element information") /* Set the bound box to the default value */ - H5VM_array_fill(space->select.sel_info.pnt_lst->low_bounds, &tmp, sizeof(hsize_t), space->extent.rank); + H5VM_array_fill(space->select.sel_info.pnt_lst->low_bounds, &tmp, sizeof(hsize_t), + space->extent.rank); HDmemset(space->select.sel_info.pnt_lst->high_bounds, 0, sizeof(hsize_t) * space->extent.rank); } /* Add points to selection */ - if(H5S__point_add(space, op, num_elem, coord) < 0) + if (H5S__point_add(space, op, num_elem, coord) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINSERT, FAIL, "can't insert elements") /* Set selection type */ @@ -796,7 +777,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S_select_elements() */ - /*-------------------------------------------------------------------------- NAME H5S__copy_pnt_list @@ -819,9 +799,9 @@ done: static H5S_pnt_list_t * H5S__copy_pnt_list(const H5S_pnt_list_t *src, unsigned rank) { - H5S_pnt_list_t *dst = NULL; /* New point list */ - H5S_pnt_node_t *curr, *new_tail; /* Point information nodes */ - H5S_pnt_list_t *ret_value = NULL; /* Return value */ + H5S_pnt_list_t *dst = NULL; /* New point list */ + H5S_pnt_node_t *curr, *new_tail; /* Point information nodes */ + H5S_pnt_list_t *ret_value = NULL; /* Return value */ FUNC_ENTER_STATIC @@ -830,16 +810,16 @@ H5S__copy_pnt_list(const H5S_pnt_list_t *src, unsigned rank) HDassert(rank > 0); /* Allocate room for the head of the point list */ - if(NULL == (dst = H5FL_MALLOC(H5S_pnt_list_t))) + if (NULL == (dst = H5FL_MALLOC(H5S_pnt_list_t))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, NULL, "can't allocate point list node") - curr = src->head; + curr = src->head; new_tail = NULL; - while(curr) { - H5S_pnt_node_t *new_node; /* New point information node */ + while (curr) { + H5S_pnt_node_t *new_node; /* New point information node */ /* Create new point */ - if(NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, rank))) + if (NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, rank))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, NULL, "can't allocate point node") new_node->next = NULL; @@ -847,11 +827,11 @@ H5S__copy_pnt_list(const H5S_pnt_list_t *src, unsigned rank) H5MM_memcpy(new_node->pnt, curr->pnt, (rank * sizeof(hsize_t))); /* Keep the order the same when copying */ - if(NULL == new_tail) + if (NULL == new_tail) new_tail = dst->head = new_node; else { new_tail->next = new_node; - new_tail = new_node; + new_tail = new_node; } /* end else */ curr = curr->next; @@ -866,13 +846,12 @@ H5S__copy_pnt_list(const H5S_pnt_list_t *src, unsigned rank) ret_value = dst; done: - if(NULL == ret_value && dst) + if (NULL == ret_value && dst) H5S__free_pnt_list(dst); FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__copy_pnt_list() */ - /*-------------------------------------------------------------------------- NAME H5S__free_pnt_list @@ -893,7 +872,7 @@ done: static void H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst) { - H5S_pnt_node_t *curr; /* Point information nodes */ + H5S_pnt_node_t *curr; /* Point information nodes */ FUNC_ENTER_STATIC_NOERR @@ -902,10 +881,10 @@ H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst) /* Traverse the list, freeing all memory */ curr = pnt_lst->head; - while(curr) { + while (curr) { H5S_pnt_node_t *tmp_node = curr; - curr = curr->next; + curr = curr->next; tmp_node = (H5S_pnt_node_t *)H5FL_ARR_FREE(hcoords_t, tmp_node); } /* end while */ @@ -914,7 +893,6 @@ H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst) FUNC_LEAVE_NOAPI_VOID } /* end H5S__free_pnt_list() */ - /*-------------------------------------------------------------------------- NAME H5S__point_copy @@ -938,7 +916,7 @@ H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst) static herr_t H5S__point_copy(H5S_t *dst, const H5S_t *src, hbool_t H5_ATTR_UNUSED share_selection) { - herr_t ret_value = SUCCEED; /* Return value */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -947,14 +925,14 @@ H5S__point_copy(H5S_t *dst, const H5S_t *src, hbool_t H5_ATTR_UNUSED share_selec HDassert(dst); /* Allocate room for the head of the point list */ - if(NULL == (dst->select.sel_info.pnt_lst = H5S__copy_pnt_list(src->select.sel_info.pnt_lst, src->extent.rank))) + if (NULL == + (dst->select.sel_info.pnt_lst = H5S__copy_pnt_list(src->select.sel_info.pnt_lst, src->extent.rank))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOPY, FAIL, "can't copy point list") done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_copy() */ - /*-------------------------------------------------------------------------- NAME H5S__point_is_valid @@ -978,19 +956,20 @@ done: static htri_t H5S__point_is_valid(const H5S_t *space) { - unsigned u; /* Counter */ - htri_t ret_value = TRUE; /* Return value */ + unsigned u; /* Counter */ + htri_t ret_value = TRUE; /* Return value */ FUNC_ENTER_STATIC_NOERR HDassert(space); /* Check each dimension */ - for(u = 0; u < space->extent.rank; u++) { + for (u = 0; u < space->extent.rank; u++) { /* Bounds check the selected point + offset against the extent */ - if((space->select.sel_info.pnt_lst->high_bounds[u] + (hsize_t)space->select.offset[u]) > space->extent.size[u]) + if ((space->select.sel_info.pnt_lst->high_bounds[u] + (hsize_t)space->select.offset[u]) > + space->extent.size[u]) HGOTO_DONE(FALSE) - if(((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] + space->select.offset[u]) < 0) + if (((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] + space->select.offset[u]) < 0) HGOTO_DONE(FALSE) } /* end for */ @@ -998,7 +977,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_is_valid() */ - /*-------------------------------------------------------------------------- NAME H5Sget_select_elem_npoints @@ -1019,16 +997,16 @@ done: hssize_t H5Sget_select_elem_npoints(hid_t spaceid) { - H5S_t *space; /* Dataspace to modify selection of */ - hssize_t ret_value; /* return value */ + H5S_t * space; /* Dataspace to modify selection of */ + hssize_t ret_value; /* return value */ FUNC_ENTER_API(FAIL) H5TRACE1("Hs", "i", spaceid); /* Check args */ - if(NULL == (space = (H5S_t *)H5I_object_verify(spaceid, H5I_DATASPACE))) + if (NULL == (space = (H5S_t *)H5I_object_verify(spaceid, H5I_DATASPACE))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataspace") - if(H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS) + if (H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an element selection") ret_value = (hssize_t)H5S_GET_SELECT_NPOINTS(space); @@ -1037,7 +1015,6 @@ done: FUNC_LEAVE_API(ret_value) } /* end H5Sget_select_elem_npoints() */ - /*-------------------------------------------------------------------------- NAME H5S__point_get_version_enc_size @@ -1070,53 +1047,55 @@ done: static herr_t H5S__point_get_version_enc_size(const H5S_t *space, uint32_t *version, uint8_t *enc_size) { - hbool_t count_up_version = FALSE; /* Whether number of points exceed H5S_UINT32_MAX */ - hbool_t bound_up_version = FALSE; /* Whether high bounds exceed H5S_UINT32_MAX */ - H5F_libver_t low_bound; /* The 'low' bound of library format versions */ - H5F_libver_t high_bound; /* The 'high' bound of library format versions */ - uint32_t tmp_version; /* Local temporary version */ - hsize_t bounds_start[H5S_MAX_RANK]; /* Starting coordinate of bounding box */ - hsize_t bounds_end[H5S_MAX_RANK]; /* Opposite coordinate of bounding box */ - hsize_t max_size = 0; /* Maximum selection size */ - unsigned u; /* Local index veriable */ - herr_t ret_value = SUCCEED; /* Return value */ + hbool_t count_up_version = FALSE; /* Whether number of points exceed H5S_UINT32_MAX */ + hbool_t bound_up_version = FALSE; /* Whether high bounds exceed H5S_UINT32_MAX */ + H5F_libver_t low_bound; /* The 'low' bound of library format versions */ + H5F_libver_t high_bound; /* The 'high' bound of library format versions */ + uint32_t tmp_version; /* Local temporary version */ + hsize_t bounds_start[H5S_MAX_RANK]; /* Starting coordinate of bounding box */ + hsize_t bounds_end[H5S_MAX_RANK]; /* Opposite coordinate of bounding box */ + hsize_t max_size = 0; /* Maximum selection size */ + unsigned u; /* Local index veriable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Get bounding box for the selection */ HDmemset(bounds_end, 0, sizeof(bounds_end)); - if(H5S__point_bounds(space, bounds_start, bounds_end) < 0) + if (H5S__point_bounds(space, bounds_start, bounds_end) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "can't get selection bounds") /* Determine whether number of points or high bounds exceeds (2^32 - 1) */ - if(space->select.num_elem > H5S_UINT32_MAX) + if (space->select.num_elem > H5S_UINT32_MAX) count_up_version = TRUE; else - for(u = 0; u < space->extent.rank; u++) - if(bounds_end[u] > H5S_UINT32_MAX) { + for (u = 0; u < space->extent.rank; u++) + if (bounds_end[u] > H5S_UINT32_MAX) { bound_up_version = TRUE; break; } /* end if */ /* If exceed (2^32 -1) */ - if(count_up_version || bound_up_version) + if (count_up_version || bound_up_version) tmp_version = H5S_POINT_VERSION_2; else tmp_version = H5S_POINT_VERSION_1; /* Get the file's low/high bounds */ - if(H5CX_get_libver_bounds(&low_bound, &high_bound) < 0) + if (H5CX_get_libver_bounds(&low_bound, &high_bound) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get low/high bounds from API context") /* Upgrade to the version indicated by the file's low bound if higher */ tmp_version = MAX(tmp_version, H5O_sds_point_ver_bounds[low_bound]); /* Version bounds check */ - if(tmp_version > H5O_sds_point_ver_bounds[high_bound]) { - if(count_up_version) - HGOTO_ERROR(H5E_DATASPACE, H5E_BADVALUE, FAIL, "The number of points in point selection exceeds 2^32") - else if(bound_up_version) - HGOTO_ERROR(H5E_DATASPACE, H5E_BADVALUE, FAIL, "The end of bounding box in point selection exceeds 2^32") + if (tmp_version > H5O_sds_point_ver_bounds[high_bound]) { + if (count_up_version) + HGOTO_ERROR(H5E_DATASPACE, H5E_BADVALUE, FAIL, + "The number of points in point selection exceeds 2^32") + else if (bound_up_version) + HGOTO_ERROR(H5E_DATASPACE, H5E_BADVALUE, FAIL, + "The end of bounding box in point selection exceeds 2^32") else HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "Dataspace point selection version out of bounds") } /* end if */ @@ -1125,7 +1104,7 @@ H5S__point_get_version_enc_size(const H5S_t *space, uint32_t *version, uint8_t * *version = tmp_version; /* Get the encoded size use based on version */ - switch(tmp_version) { + switch (tmp_version) { case H5S_POINT_VERSION_1: *enc_size = H5S_SELECT_INFO_ENC_SIZE_4; break; @@ -1133,14 +1112,14 @@ H5S__point_get_version_enc_size(const H5S_t *space, uint32_t *version, uint8_t * case H5S_POINT_VERSION_2: /* Find max for num_elem and bounds_end[] */ max_size = space->select.num_elem; - for(u = 0; u < space->extent.rank; u++) - if(bounds_end[u] > max_size) + for (u = 0; u < space->extent.rank; u++) + if (bounds_end[u] > max_size) max_size = bounds_end[u]; /* Determine the encoding size */ - if(max_size > H5S_UINT32_MAX) + if (max_size > H5S_UINT32_MAX) *enc_size = H5S_SELECT_INFO_ENC_SIZE_8; - else if(max_size > H5S_UINT16_MAX) + else if (max_size > H5S_UINT16_MAX) *enc_size = H5S_SELECT_INFO_ENC_SIZE_4; else *enc_size = H5S_SELECT_INFO_ENC_SIZE_2; @@ -1155,7 +1134,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* H5S__point_get_version_enc_size() */ - /*-------------------------------------------------------------------------- NAME H5S__point_serial_size @@ -1178,25 +1156,25 @@ done: static hssize_t H5S__point_serial_size(const H5S_t *space) { - uint32_t version; /* Version number */ - uint8_t enc_size; /* Encoded size of point selection info */ - hssize_t ret_value = -1; /* Return value */ + uint32_t version; /* Version number */ + uint8_t enc_size; /* Encoded size of point selection info */ + hssize_t ret_value = -1; /* Return value */ FUNC_ENTER_STATIC HDassert(space); /* Determine the version and encoded size for point selection */ - if(H5S__point_get_version_enc_size(space, &version, &enc_size) < 0) + if (H5S__point_get_version_enc_size(space, &version, &enc_size) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "can't determine version and enc_size") /* Basic number of bytes required to serialize point selection: */ - if(version >= H5S_POINT_VERSION_2) + if (version >= H5S_POINT_VERSION_2) /* * <type (4 bytes)> + <version (4 bytes)> + * <size of point info (1 byte)> + rank (4 bytes)> */ - ret_value=13; + ret_value = 13; else /* * <type (4 bytes)> + <version (4 bytes)> + <padding (4 bytes)> + @@ -1208,13 +1186,12 @@ H5S__point_serial_size(const H5S_t *space) ret_value += enc_size; /* Count points in selection */ - ret_value += (hssize_t) (enc_size * space->extent.rank * space->select.num_elem); + ret_value += (hssize_t)(enc_size * space->extent.rank * space->select.num_elem); done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_serial_size() */ - /*-------------------------------------------------------------------------- NAME H5S__point_serialize @@ -1239,14 +1216,14 @@ done: static herr_t H5S__point_serialize(const H5S_t *space, uint8_t **p) { - H5S_pnt_node_t *curr; /* Point information nodes */ - uint8_t *pp; /* Local pointer for encoding */ - uint8_t *lenp = NULL; /* pointer to length location for later storage */ - uint32_t len=0; /* number of bytes used */ - unsigned u; /* local counting variable */ - uint32_t version; /* Version number */ - uint8_t enc_size; /* Encoded size of point selection info */ - herr_t ret_value = SUCCEED; /* Return value */ + H5S_pnt_node_t *curr; /* Point information nodes */ + uint8_t * pp; /* Local pointer for encoding */ + uint8_t * lenp = NULL; /* pointer to length location for later storage */ + uint32_t len = 0; /* number of bytes used */ + unsigned u; /* local counting variable */ + uint32_t version; /* Version number */ + uint8_t enc_size; /* Encoded size of point selection info */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -1257,27 +1234,28 @@ H5S__point_serialize(const H5S_t *space, uint8_t **p) HDassert(pp); /* Determine the version and encoded size for point selection info */ - if(H5S__point_get_version_enc_size(space, &version, &enc_size) < 0) + if (H5S__point_get_version_enc_size(space, &version, &enc_size) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "can't determine version and enc_size") /* Store the preamble information */ - UINT32ENCODE(pp, (uint32_t)H5S_GET_SELECT_TYPE(space)); /* Store the type of selection */ + UINT32ENCODE(pp, (uint32_t)H5S_GET_SELECT_TYPE(space)); /* Store the type of selection */ - UINT32ENCODE(pp, version); /* Store the version number */ - if(version >= 2) { + UINT32ENCODE(pp, version); /* Store the version number */ + if (version >= 2) { *(pp)++ = enc_size; /* Store size of point info */ - } else { + } + else { HDassert(version == H5S_POINT_VERSION_1); - UINT32ENCODE(pp, (uint32_t)0); /* Store the un-used padding */ - lenp = pp; /* Keep the pointer to the length location for later */ - pp += 4; /* Skip over space for length */ - len += 8; /* Add in advance # of bytes for num of dimensions and num elements */ + UINT32ENCODE(pp, (uint32_t)0); /* Store the un-used padding */ + lenp = pp; /* Keep the pointer to the length location for later */ + pp += 4; /* Skip over space for length */ + len += 8; /* Add in advance # of bytes for num of dimensions and num elements */ } /* Encode number of dimensions */ UINT32ENCODE(pp, (uint32_t)space->extent.rank); - switch(enc_size) { + switch (enc_size) { case H5S_SELECT_INFO_ENC_SIZE_2: HDassert(version == H5S_POINT_VERSION_2); @@ -1285,12 +1263,12 @@ H5S__point_serialize(const H5S_t *space, uint8_t **p) UINT16ENCODE(pp, (uint16_t)space->select.num_elem); /* Encode each point in selection */ - curr=space->select.sel_info.pnt_lst->head; - while(curr!=NULL) { + curr = space->select.sel_info.pnt_lst->head; + while (curr != NULL) { /* Encode each point */ - for(u=0; u<space->extent.rank; u++) + for (u = 0; u < space->extent.rank; u++) UINT16ENCODE(pp, (uint16_t)curr->pnt[u]); - curr=curr->next; + curr = curr->next; } /* end while */ break; @@ -1301,16 +1279,16 @@ H5S__point_serialize(const H5S_t *space, uint8_t **p) UINT32ENCODE(pp, (uint32_t)space->select.num_elem); /* Encode each point in selection */ - curr=space->select.sel_info.pnt_lst->head; - while(curr!=NULL) { + curr = space->select.sel_info.pnt_lst->head; + while (curr != NULL) { /* Encode each point */ - for(u=0; u<space->extent.rank; u++) + for (u = 0; u < space->extent.rank; u++) UINT32ENCODE(pp, (uint32_t)curr->pnt[u]); - curr=curr->next; + curr = curr->next; } /* end while */ /* Add 4 bytes times the rank for each element selected */ - if(version == H5S_POINT_VERSION_1) + if (version == H5S_POINT_VERSION_1) len += (uint32_t)space->select.num_elem * 4 * space->extent.rank; break; @@ -1321,12 +1299,12 @@ H5S__point_serialize(const H5S_t *space, uint8_t **p) UINT64ENCODE(pp, space->select.num_elem); /* Encode each point in selection */ - curr=space->select.sel_info.pnt_lst->head; - while(curr!=NULL) { + curr = space->select.sel_info.pnt_lst->head; + while (curr != NULL) { /* Encode each point */ - for(u=0; u<space->extent.rank; u++) + for (u = 0; u < space->extent.rank; u++) UINT64ENCODE(pp, curr->pnt[u]); - curr=curr->next; + curr = curr->next; } /* end while */ break; @@ -1336,17 +1314,16 @@ H5S__point_serialize(const H5S_t *space, uint8_t **p) } /* end switch */ - if(version == H5S_POINT_VERSION_1) - UINT32ENCODE(lenp, (uint32_t)len); /* Store the length of the extra information */ + if (version == H5S_POINT_VERSION_1) + UINT32ENCODE(lenp, (uint32_t)len); /* Store the length of the extra information */ /* Update encoding pointer */ *p = pp; done: FUNC_LEAVE_NOAPI(ret_value) -} /* H5S__point_serialize() */ +} /* H5S__point_serialize() */ - /*-------------------------------------------------------------------------- NAME H5S__point_deserialize @@ -1372,17 +1349,17 @@ done: static herr_t H5S__point_deserialize(H5S_t **space, const uint8_t **p) { - H5S_t *tmp_space = NULL; /* Pointer to actual dataspace to use, - either *space or a newly allocated one */ - hsize_t dims[H5S_MAX_RANK]; /* Dimension sizes */ - uint32_t version; /* Version number */ - uint8_t enc_size = 0; /* Encoded size of selection info */ - hsize_t *coord = NULL, *tcoord; /* Pointer to array of elements */ - const uint8_t *pp; /* Local pointer for decoding */ - uint64_t num_elem = 0; /* Number of elements in selection */ - unsigned rank; /* Rank of points */ - unsigned i, j; /* local counting variables */ - herr_t ret_value = SUCCEED; /* Return value */ + H5S_t *tmp_space = NULL; /* Pointer to actual dataspace to use, + either *space or a newly allocated one */ + hsize_t dims[H5S_MAX_RANK]; /* Dimension sizes */ + uint32_t version; /* Version number */ + uint8_t enc_size = 0; /* Encoded size of selection info */ + hsize_t * coord = NULL, *tcoord; /* Pointer to array of elements */ + const uint8_t *pp; /* Local pointer for decoding */ + uint64_t num_elem = 0; /* Number of elements in selection */ + unsigned rank; /* Rank of points */ + unsigned i, j; /* local counting variables */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -1396,8 +1373,8 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p) is moved from H5S_select_deserialize() in H5Sselect.c to here. This is needed for decoding virtual layout in H5O__layout_decode() */ /* Allocate space if not provided */ - if(!*space) { - if(NULL == (tmp_space = H5S_create(H5S_SIMPLE))) + if (!*space) { + if (NULL == (tmp_space = H5S_create(H5S_SIMPLE))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCREATE, FAIL, "can't create dataspace") } /* end if */ else @@ -1406,10 +1383,10 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p) /* Decode version */ UINT32DECODE(pp, version); - if(version < H5S_POINT_VERSION_1 || version > H5S_POINT_VERSION_LATEST) + if (version < H5S_POINT_VERSION_1 || version > H5S_POINT_VERSION_LATEST) HGOTO_ERROR(H5E_DATASPACE, H5E_BADVALUE, FAIL, "bad version number for point selection") - if(version >= (uint32_t)H5S_POINT_VERSION_2) + if (version >= (uint32_t)H5S_POINT_VERSION_2) /* Decode size of point info */ enc_size = *(pp)++; else { @@ -1419,25 +1396,26 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p) } /* Check encoded size */ - if(enc_size & ~H5S_SELECT_INFO_ENC_SIZE_BITS) + if (enc_size & ~H5S_SELECT_INFO_ENC_SIZE_BITS) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTLOAD, FAIL, "unknown size of point/offset info for selection") /* Decode the rank of the point selection */ - UINT32DECODE(pp,rank); + UINT32DECODE(pp, rank); - if(!*space) { + if (!*space) { /* Patch the rank of the allocated dataspace */ (void)HDmemset(dims, 0, (size_t)rank * sizeof(dims[0])); - if(H5S_set_extent_simple(tmp_space, rank, dims, NULL) < 0) + if (H5S_set_extent_simple(tmp_space, rank, dims, NULL) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINIT, FAIL, "can't set dimensions") } /* end if */ else /* Verify the rank of the provided dataspace */ - if(rank != tmp_space->extent.rank) - HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "rank of serialized selection does not match dataspace") + if (rank != tmp_space->extent.rank) + HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, + "rank of serialized selection does not match dataspace") /* decode the number of points */ - switch(enc_size) { + switch (enc_size) { case H5S_SELECT_INFO_ENC_SIZE_2: UINT16DECODE(pp, num_elem); break; @@ -1452,15 +1430,14 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p) break; } /* end switch */ - /* Allocate space for the coordinates */ - if(NULL == (coord = (hsize_t *)H5MM_malloc(num_elem * rank * sizeof(hsize_t)))) + if (NULL == (coord = (hsize_t *)H5MM_malloc(num_elem * rank * sizeof(hsize_t)))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate coordinate information") /* Retrieve the coordinates from the buffer */ - for(tcoord = coord, i = 0; i < num_elem; i++) - for(j = 0; j < (unsigned)rank; j++, tcoord++) - switch(enc_size) { + for (tcoord = coord, i = 0; i < num_elem; i++) + for (j = 0; j < (unsigned)rank; j++, tcoord++) + switch (enc_size) { case H5S_SELECT_INFO_ENC_SIZE_2: UINT16DECODE(pp, *tcoord); break; @@ -1478,30 +1455,29 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p) } /* end switch */ /* Select points */ - if(H5S_select_elements(tmp_space, H5S_SELECT_SET, num_elem, (const hsize_t *)coord) < 0) + if (H5S_select_elements(tmp_space, H5S_SELECT_SET, num_elem, (const hsize_t *)coord) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTDELETE, FAIL, "can't change selection") /* Update decoding pointer */ *p = pp; /* Return space to the caller if allocated */ - if(!*space) + if (!*space) *space = tmp_space; done: /* Free temporary space if not passed to caller (only happens on error) */ - if(!*space && tmp_space) - if(H5S_close(tmp_space) < 0) + if (!*space && tmp_space) + if (H5S_close(tmp_space) < 0) HDONE_ERROR(H5E_DATASPACE, H5E_CANTFREE, FAIL, "can't close dataspace") /* Free the coordinate array if necessary */ - if(coord != NULL) + if (coord != NULL) H5MM_xfree(coord); FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_deserialize() */ - /*-------------------------------------------------------------------------- NAME H5S__get_select_elem_pointlist @@ -1534,8 +1510,8 @@ done: static herr_t H5S__get_select_elem_pointlist(const H5S_t *space, hsize_t startpoint, hsize_t numpoints, hsize_t *buf) { - H5S_pnt_node_t *node; /* Point node */ - unsigned rank; /* Dataspace rank */ + H5S_pnt_node_t *node; /* Point node */ + unsigned rank; /* Dataspace rank */ FUNC_ENTER_STATIC_NOERR @@ -1549,23 +1525,22 @@ H5S__get_select_elem_pointlist(const H5S_t *space, hsize_t startpoint, hsize_t n node = space->select.sel_info.pnt_lst->head; /* Iterate to the first point to return */ - while(node != NULL && startpoint > 0) { + while (node != NULL && startpoint > 0) { startpoint--; node = node->next; - } /* end while */ + } /* end while */ /* Iterate through the node, copying each point's information */ - while(node != NULL && numpoints > 0) { + while (node != NULL && numpoints > 0) { H5MM_memcpy(buf, node->pnt, sizeof(hsize_t) * rank); buf += rank; numpoints--; node = node->next; - } /* end while */ + } /* end while */ FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__get_select_elem_pointlist() */ - /*-------------------------------------------------------------------------- NAME H5Sget_select_elem_pointlist @@ -1596,21 +1571,20 @@ H5S__get_select_elem_pointlist(const H5S_t *space, hsize_t startpoint, hsize_t n REVISION LOG --------------------------------------------------------------------------*/ herr_t -H5Sget_select_elem_pointlist(hid_t spaceid, hsize_t startpoint, - hsize_t numpoints, hsize_t buf[/*numpoints*/]) +H5Sget_select_elem_pointlist(hid_t spaceid, hsize_t startpoint, hsize_t numpoints, hsize_t buf[/*numpoints*/]) { - H5S_t *space; /* Dataspace to modify selection of */ - herr_t ret_value; /* return value */ + H5S_t *space; /* Dataspace to modify selection of */ + herr_t ret_value; /* return value */ FUNC_ENTER_API(FAIL) H5TRACE4("e", "ihh*[a2]h", spaceid, startpoint, numpoints, buf); /* Check args */ - if(NULL == buf) + if (NULL == buf) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid pointer") - if(NULL == (space = (H5S_t *)H5I_object_verify(spaceid, H5I_DATASPACE))) + if (NULL == (space = (H5S_t *)H5I_object_verify(spaceid, H5I_DATASPACE))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataspace") - if(H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS) + if (H5S_GET_SELECT_TYPE(space) != H5S_SEL_POINTS) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a point selection") ret_value = H5S__get_select_elem_pointlist(space, startpoint, numpoints, buf); @@ -1619,7 +1593,6 @@ done: FUNC_LEAVE_API(ret_value) } /* end H5Sget_select_elem_pointlist() */ - /*-------------------------------------------------------------------------- NAME H5S__point_bounds @@ -1649,8 +1622,8 @@ done: static herr_t H5S__point_bounds(const H5S_t *space, hsize_t *start, hsize_t *end) { - unsigned u; /* Local index variable */ - herr_t ret_value = SUCCEED; /* Return value */ + unsigned u; /* Local index variable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -1660,24 +1633,26 @@ H5S__point_bounds(const H5S_t *space, hsize_t *start, hsize_t *end) HDassert(end); /* Loop over dimensions */ - for(u = 0; u < space->extent.rank; u++) { + for (u = 0; u < space->extent.rank; u++) { /* Sanity check */ - HDassert(space->select.sel_info.pnt_lst->low_bounds[u] <= space->select.sel_info.pnt_lst->high_bounds[u]); + HDassert(space->select.sel_info.pnt_lst->low_bounds[u] <= + space->select.sel_info.pnt_lst->high_bounds[u]); /* Check for offset moving selection negative */ - if(((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] + space->select.offset[u]) < 0) + if (((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] + space->select.offset[u]) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "offset moves selection out of bounds") /* Set the low & high bounds in this dimension */ - start[u] = (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] + space->select.offset[u]); - end[u] = (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->high_bounds[u] + space->select.offset[u]); + start[u] = + (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] + space->select.offset[u]); + end[u] = + (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->high_bounds[u] + space->select.offset[u]); } /* end for */ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_bounds() */ - /*-------------------------------------------------------------------------- NAME H5S__point_offset @@ -1701,12 +1676,12 @@ done: static herr_t H5S__point_offset(const H5S_t *space, hsize_t *offset) { - const hsize_t *pnt; /* Pointer to a selected point's coordinates */ - const hssize_t *sel_offset; /* Pointer to the selection's offset */ - const hsize_t *dim_size; /* Pointer to a dataspace's extent */ - hsize_t accum; /* Accumulator for dimension sizes */ - int i; /* index variable */ - herr_t ret_value = SUCCEED; /* Return value */ + const hsize_t * pnt; /* Pointer to a selected point's coordinates */ + const hssize_t *sel_offset; /* Pointer to the selection's offset */ + const hsize_t * dim_size; /* Pointer to a dataspace's extent */ + hsize_t accum; /* Accumulator for dimension sizes */ + int i; /* index variable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -1717,17 +1692,17 @@ H5S__point_offset(const H5S_t *space, hsize_t *offset) *offset = 0; /* Set up pointers to arrays of values */ - pnt = space->select.sel_info.pnt_lst->head->pnt; + pnt = space->select.sel_info.pnt_lst->head->pnt; sel_offset = space->select.offset; - dim_size = space->extent.size; + dim_size = space->extent.size; /* Loop through coordinates, calculating the linear offset */ accum = 1; - for(i = (int)space->extent.rank - 1; i >= 0; i--) { + for (i = (int)space->extent.rank - 1; i >= 0; i--) { hssize_t pnt_offset = (hssize_t)pnt[i] + sel_offset[i]; /* Point's offset in this dimension */ /* Check for offset moving selection out of the dataspace */ - if(pnt_offset < 0 || (hsize_t)pnt_offset >= dim_size[i]) + if (pnt_offset < 0 || (hsize_t)pnt_offset >= dim_size[i]) HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "offset moves selection out of bounds") /* Add the point's offset in this dimension to the total linear offset */ @@ -1741,7 +1716,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_offset() */ - /*-------------------------------------------------------------------------- NAME H5S__point_unlim_dim @@ -1770,7 +1744,6 @@ H5S__point_unlim_dim(const H5S_t H5_ATTR_UNUSED *space) FUNC_LEAVE_NOAPI(-1) } /* end H5S__point_unlim_dim() */ - /*-------------------------------------------------------------------------- NAME H5S__point_is_contiguous @@ -1795,22 +1768,22 @@ H5S__point_unlim_dim(const H5S_t H5_ATTR_UNUSED *space) static htri_t H5S__point_is_contiguous(const H5S_t *space) { - htri_t ret_value = FAIL; /* Return value */ + htri_t ret_value = FAIL; /* Return value */ FUNC_ENTER_STATIC_NOERR HDassert(space); /* One point is definitely contiguous */ - if(space->select.num_elem == 1) + if (space->select.num_elem == 1) ret_value = TRUE; - else /* More than one point might be contiguous, but it's complex to check and we don't need it right now */ + else /* More than one point might be contiguous, but it's complex to check and we don't need it right now + */ ret_value = FALSE; FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_is_contiguous() */ - /*-------------------------------------------------------------------------- NAME H5S__point_is_single @@ -1832,14 +1805,14 @@ H5S__point_is_contiguous(const H5S_t *space) static htri_t H5S__point_is_single(const H5S_t *space) { - htri_t ret_value = FAIL; /* Return value */ + htri_t ret_value = FAIL; /* Return value */ FUNC_ENTER_STATIC_NOERR HDassert(space); /* One point is definitely 'single' :-) */ - if(space->select.num_elem == 1) + if (space->select.num_elem == 1) ret_value = TRUE; else ret_value = FALSE; @@ -1847,7 +1820,6 @@ H5S__point_is_single(const H5S_t *space) FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_is_single() */ - /*-------------------------------------------------------------------------- NAME H5S__point_is_regular @@ -1872,7 +1844,7 @@ H5S__point_is_single(const H5S_t *space) static htri_t H5S__point_is_regular(const H5S_t *space) { - htri_t ret_value = FAIL; /* Return value */ + htri_t ret_value = FAIL; /* Return value */ FUNC_ENTER_STATIC_NOERR @@ -1880,7 +1852,7 @@ H5S__point_is_regular(const H5S_t *space) HDassert(space); /* Only simple check for regular points for now... */ - if(space->select.num_elem == 1) + if (space->select.num_elem == 1) ret_value = TRUE; else ret_value = FALSE; @@ -1888,7 +1860,6 @@ H5S__point_is_regular(const H5S_t *space) FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_is_regular() */ - /*-------------------------------------------------------------------------- NAME H5S__point_shape_same @@ -1911,13 +1882,13 @@ H5S__point_is_regular(const H5S_t *space) static htri_t H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2) { - H5S_pnt_node_t *pnt1, *pnt2; /* Point information nodes */ - hssize_t offset[H5S_MAX_RANK]; /* Offset between the selections */ - unsigned space1_rank; /* Number of dimensions of first dataspace */ - unsigned space2_rank; /* Number of dimensions of second dataspace */ - int space1_dim; /* Current dimension in first dataspace */ - int space2_dim; /* Current dimension in second dataspace */ - htri_t ret_value = TRUE; /* Return value */ + H5S_pnt_node_t *pnt1, *pnt2; /* Point information nodes */ + hssize_t offset[H5S_MAX_RANK]; /* Offset between the selections */ + unsigned space1_rank; /* Number of dimensions of first dataspace */ + unsigned space2_rank; /* Number of dimensions of second dataspace */ + int space1_dim; /* Current dimension in first dataspace */ + int space2_dim; /* Current dimension in second dataspace */ + htri_t ret_value = TRUE; /* Return value */ FUNC_ENTER_STATIC_NOERR @@ -1942,7 +1913,7 @@ H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2) */ pnt1 = space1->select.sel_info.pnt_lst->head; pnt2 = space2->select.sel_info.pnt_lst->head; - while(space2_dim >= 0) { + while (space2_dim >= 0) { /* Set the relative locations of the selections */ offset[space1_dim] = (hssize_t)pnt2->pnt[space2_dim] - (hssize_t)pnt1->pnt[space1_dim]; @@ -1951,7 +1922,7 @@ H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2) } /* end while */ /* For dimensions that appear only in space1: */ - while(space1_dim >= 0) { + while (space1_dim >= 0) { /* Set the absolute offset of the remaining dimensions */ offset[space1_dim] = (hssize_t)pnt1->pnt[space1_dim]; @@ -1963,14 +1934,14 @@ H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2) pnt2 = pnt2->next; /* Loop over remaining points */ - while(pnt1 && pnt2) { + while (pnt1 && pnt2) { /* Initialize dimensions */ space1_dim = (int)space1_rank - 1; space2_dim = (int)space2_rank - 1; /* Compare locations in common dimensions, including relative offset */ - while(space2_dim >= 0) { - if((hsize_t)((hssize_t)pnt1->pnt[space1_dim] + offset[space1_dim]) != pnt2->pnt[space2_dim]) + while (space2_dim >= 0) { + if ((hsize_t)((hssize_t)pnt1->pnt[space1_dim] + offset[space1_dim]) != pnt2->pnt[space2_dim]) HGOTO_DONE(FALSE) space1_dim--; @@ -1978,15 +1949,14 @@ H5S__point_shape_same(const H5S_t *space1, const H5S_t *space2) } /* end while */ /* For dimensions that appear only in space1: */ - while(space1_dim >= 0) { + while (space1_dim >= 0) { /* Compare the absolute offset in the remaining dimensions */ - if((hssize_t)pnt1->pnt[space1_dim] != offset[space1_dim]) + if ((hssize_t)pnt1->pnt[space1_dim] != offset[space1_dim]) HGOTO_DONE(FALSE) space1_dim--; } /* end while */ - /* Advance to next point */ pnt1 = pnt1->next; pnt2 = pnt2->next; @@ -1996,7 +1966,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_shape_same() */ - /*-------------------------------------------------------------------------- NAME H5S__point_intersect_block @@ -2017,11 +1986,10 @@ done: REVISION LOG --------------------------------------------------------------------------*/ htri_t -H5S__point_intersect_block(const H5S_t *space, const hsize_t *start, - const hsize_t *end) +H5S__point_intersect_block(const H5S_t *space, const hsize_t *start, const hsize_t *end) { - H5S_pnt_node_t *pnt; /* Point information node */ - htri_t ret_value = FALSE; /* Return value */ + H5S_pnt_node_t *pnt; /* Point information node */ + htri_t ret_value = FALSE; /* Return value */ FUNC_ENTER_STATIC_NOERR @@ -2033,16 +2001,16 @@ H5S__point_intersect_block(const H5S_t *space, const hsize_t *start, /* Loop over points */ pnt = space->select.sel_info.pnt_lst->head; - while(pnt) { - unsigned u; /* Local index variable */ + while (pnt) { + unsigned u; /* Local index variable */ /* Verify that the point is within the block */ - for(u = 0; u < space->extent.rank; u++) - if(pnt->pnt[u] < start[u] || pnt->pnt[u] > end[u]) + for (u = 0; u < space->extent.rank; u++) + if (pnt->pnt[u] < start[u] || pnt->pnt[u] > end[u]) break; /* Check if point was within block for all dimensions */ - if(u == space->extent.rank) + if (u == space->extent.rank) HGOTO_DONE(TRUE) /* Advance to next point */ @@ -2053,7 +2021,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_intersect_block() */ - /*-------------------------------------------------------------------------- NAME H5S__point_adjust_u @@ -2075,10 +2042,10 @@ done: static herr_t H5S__point_adjust_u(H5S_t *space, const hsize_t *offset) { - hbool_t non_zero_offset = FALSE; /* Whether any offset is non-zero */ - H5S_pnt_node_t *node; /* Point node */ - unsigned rank; /* Dataspace rank */ - unsigned u; /* Local index variable */ + hbool_t non_zero_offset = FALSE; /* Whether any offset is non-zero */ + H5S_pnt_node_t *node; /* Point node */ + unsigned rank; /* Dataspace rank */ + unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR @@ -2086,20 +2053,20 @@ H5S__point_adjust_u(H5S_t *space, const hsize_t *offset) HDassert(offset); /* Check for an all-zero offset vector */ - for(u = 0; u < space->extent.rank; u++) - if(0 != offset[u]) { + for (u = 0; u < space->extent.rank; u++) + if (0 != offset[u]) { non_zero_offset = TRUE; break; } /* Only perform operation if the offset is non-zero */ - if(non_zero_offset) { + if (non_zero_offset) { /* Iterate through the nodes, checking the bounds on each element */ node = space->select.sel_info.pnt_lst->head; rank = space->extent.rank; - while(node) { + while (node) { /* Adjust each coordinate for point node */ - for(u = 0; u < rank; u++) { + for (u = 0; u < rank; u++) { /* Check for offset moving selection negative */ HDassert(node->pnt[u] >= offset[u]); @@ -2112,16 +2079,15 @@ H5S__point_adjust_u(H5S_t *space, const hsize_t *offset) } /* end while */ /* update the bound box of the selection */ - for(u = 0; u < rank; u++) { + for (u = 0; u < rank; u++) { space->select.sel_info.pnt_lst->low_bounds[u] -= offset[u]; space->select.sel_info.pnt_lst->high_bounds[u] -= offset[u]; } /* end for */ - } /* end if */ + } /* end if */ FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_adjust_u() */ - /*-------------------------------------------------------------------------- NAME H5S__point_adjust_s @@ -2143,10 +2109,10 @@ H5S__point_adjust_u(H5S_t *space, const hsize_t *offset) static herr_t H5S__point_adjust_s(H5S_t *space, const hssize_t *offset) { - hbool_t non_zero_offset = FALSE; /* Whether any offset is non-zero */ - H5S_pnt_node_t *node; /* Point node */ - unsigned rank; /* Dataspace rank */ - unsigned u; /* Local index variable */ + hbool_t non_zero_offset = FALSE; /* Whether any offset is non-zero */ + H5S_pnt_node_t *node; /* Point node */ + unsigned rank; /* Dataspace rank */ + unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR @@ -2154,20 +2120,20 @@ H5S__point_adjust_s(H5S_t *space, const hssize_t *offset) HDassert(offset); /* Check for an all-zero offset vector */ - for(u = 0; u < space->extent.rank; u++) - if(0 != offset[u]) { + for (u = 0; u < space->extent.rank; u++) + if (0 != offset[u]) { non_zero_offset = TRUE; break; } /* end if */ /* Only perform operation if the offset is non-zero */ - if(non_zero_offset) { + if (non_zero_offset) { /* Iterate through the nodes, checking the bounds on each element */ node = space->select.sel_info.pnt_lst->head; rank = space->extent.rank; - while(node) { + while (node) { /* Adjust each coordinate for point node */ - for(u = 0; u < rank; u++) { + for (u = 0; u < rank; u++) { /* Check for offset moving selection negative */ HDassert((hssize_t)node->pnt[u] >= offset[u]); @@ -2180,18 +2146,18 @@ H5S__point_adjust_s(H5S_t *space, const hssize_t *offset) } /* end while */ /* update the bound box of the selection */ - for(u = 0; u < rank; u++) { + for (u = 0; u < rank; u++) { HDassert((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] >= offset[u]); - space->select.sel_info.pnt_lst->low_bounds[u] = (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] - offset[u]); - space->select.sel_info.pnt_lst->high_bounds[u] = (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->high_bounds[u] - offset[u]); + space->select.sel_info.pnt_lst->low_bounds[u] = + (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->low_bounds[u] - offset[u]); + space->select.sel_info.pnt_lst->high_bounds[u] = + (hsize_t)((hssize_t)space->select.sel_info.pnt_lst->high_bounds[u] - offset[u]); } /* end for */ - } /* end if */ + } /* end if */ FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5S__point_adjust_s() */ - - /*------------------------------------------------------------------------- * Function: H5S__point_project_scalar * @@ -2208,8 +2174,8 @@ H5S__point_adjust_s(H5S_t *space, const hssize_t *offset) static herr_t H5S__point_project_scalar(const H5S_t *space, hsize_t *offset) { - const H5S_pnt_node_t *node; /* Point node */ - herr_t ret_value = SUCCEED; /* Return value */ + const H5S_pnt_node_t *node; /* Point node */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -2221,8 +2187,9 @@ H5S__point_project_scalar(const H5S_t *space, hsize_t *offset) node = space->select.sel_info.pnt_lst->head; /* Check for more than one point selected */ - if(node->next) - HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "point selection of one element has more than one node!") + if (node->next) + HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, + "point selection of one element has more than one node!") /* Calculate offset of selection in projected buffer */ *offset = H5VM_array_offset(space->extent.rank, space->extent.size, node->pnt); @@ -2231,7 +2198,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_project_scalar() */ - /*------------------------------------------------------------------------- * Function: H5S__point_project_simple * @@ -2248,12 +2214,12 @@ done: static herr_t H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *offset) { - const H5S_pnt_node_t *base_node; /* Point node in base space */ - H5S_pnt_node_t *new_node; /* Point node in new space */ - H5S_pnt_node_t *prev_node; /* Previous point node in new space */ - unsigned rank_diff; /* Difference in ranks between spaces */ - unsigned u; /* Local index variable */ - herr_t ret_value = SUCCEED; /* Return value */ + const H5S_pnt_node_t *base_node; /* Point node in base space */ + H5S_pnt_node_t * new_node; /* Point node in new space */ + H5S_pnt_node_t * prev_node; /* Previous point node in new space */ + unsigned rank_diff; /* Difference in ranks between spaces */ + unsigned u; /* Local index variable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -2263,16 +2229,16 @@ H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *of HDassert(offset); /* We are setting a new selection, remove any current selection in new dataspace */ - if(H5S_SELECT_RELEASE(new_space) < 0) + if (H5S_SELECT_RELEASE(new_space) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTDELETE, FAIL, "can't release selection") /* Allocate room for the head of the point list */ - if(NULL == (new_space->select.sel_info.pnt_lst = H5FL_MALLOC(H5S_pnt_list_t))) + if (NULL == (new_space->select.sel_info.pnt_lst = H5FL_MALLOC(H5S_pnt_list_t))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate point list node") /* Check if the new space's rank is < or > base space's rank */ - if(new_space->extent.rank < base_space->extent.rank) { - hsize_t block[H5S_MAX_RANK]; /* Block selected in base dataspace */ + if (new_space->extent.rank < base_space->extent.rank) { + hsize_t block[H5S_MAX_RANK]; /* Block selected in base dataspace */ /* Compute the difference in ranks */ rank_diff = base_space->extent.rank - new_space->extent.rank; @@ -2285,21 +2251,22 @@ H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *of /* Iterate through base space's point nodes, copying the point information */ base_node = base_space->select.sel_info.pnt_lst->head; prev_node = NULL; - while(base_node) { + while (base_node) { /* Create new point */ - if(NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, new_space->extent.rank))) + if (NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, new_space->extent.rank))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate point node") new_node->next = NULL; /* Copy over the point's coordinates */ - H5MM_memcpy(new_node->pnt, &base_node->pnt[rank_diff], (new_space->extent.rank * sizeof(hsize_t))); + H5MM_memcpy(new_node->pnt, &base_node->pnt[rank_diff], + (new_space->extent.rank * sizeof(hsize_t))); /* Keep the order the same when copying */ - if(NULL == prev_node) + if (NULL == prev_node) prev_node = new_space->select.sel_info.pnt_lst->head = new_node; else { prev_node->next = new_node; - prev_node = new_node; + prev_node = new_node; } /* end else */ /* Advance to next node */ @@ -2307,11 +2274,13 @@ H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *of } /* end while */ /* Update the bounding box */ - for(u = 0; u < new_space->extent.rank; u++) { - new_space->select.sel_info.pnt_lst->low_bounds[u] = base_space->select.sel_info.pnt_lst->low_bounds[u + rank_diff]; - new_space->select.sel_info.pnt_lst->high_bounds[u] = base_space->select.sel_info.pnt_lst->high_bounds[u + rank_diff]; + for (u = 0; u < new_space->extent.rank; u++) { + new_space->select.sel_info.pnt_lst->low_bounds[u] = + base_space->select.sel_info.pnt_lst->low_bounds[u + rank_diff]; + new_space->select.sel_info.pnt_lst->high_bounds[u] = + base_space->select.sel_info.pnt_lst->high_bounds[u + rank_diff]; } /* end for */ - } /* end if */ + } /* end if */ else { HDassert(new_space->extent.rank > base_space->extent.rank); @@ -2324,22 +2293,23 @@ H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *of /* Iterate through base space's point nodes, copying the point information */ base_node = base_space->select.sel_info.pnt_lst->head; prev_node = NULL; - while(base_node) { + while (base_node) { /* Create new point */ - if(NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, new_space->extent.rank))) + if (NULL == (new_node = (H5S_pnt_node_t *)H5FL_ARR_MALLOC(hcoords_t, new_space->extent.rank))) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate point node") new_node->next = NULL; /* Copy over the point's coordinates */ HDmemset(new_node->pnt, 0, sizeof(hsize_t) * rank_diff); - H5MM_memcpy(&new_node->pnt[rank_diff], base_node->pnt, (new_space->extent.rank * sizeof(hsize_t))); + H5MM_memcpy(&new_node->pnt[rank_diff], base_node->pnt, + (new_space->extent.rank * sizeof(hsize_t))); /* Keep the order the same when copying */ - if(NULL == prev_node) + if (NULL == prev_node) prev_node = new_space->select.sel_info.pnt_lst->head = new_node; else { prev_node->next = new_node; - prev_node = new_node; + prev_node = new_node; } /* end else */ /* Advance to next node */ @@ -2347,15 +2317,17 @@ H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *of } /* end while */ /* Update the bounding box */ - for(u = 0; u < rank_diff; u++) { - new_space->select.sel_info.pnt_lst->low_bounds[u] = 0; + for (u = 0; u < rank_diff; u++) { + new_space->select.sel_info.pnt_lst->low_bounds[u] = 0; new_space->select.sel_info.pnt_lst->high_bounds[u] = 0; } /* end for */ - for(; u < new_space->extent.rank; u++) { - new_space->select.sel_info.pnt_lst->low_bounds[u] = base_space->select.sel_info.pnt_lst->low_bounds[u - rank_diff]; - new_space->select.sel_info.pnt_lst->high_bounds[u] = base_space->select.sel_info.pnt_lst->high_bounds[u - rank_diff]; + for (; u < new_space->extent.rank; u++) { + new_space->select.sel_info.pnt_lst->low_bounds[u] = + base_space->select.sel_info.pnt_lst->low_bounds[u - rank_diff]; + new_space->select.sel_info.pnt_lst->high_bounds[u] = + base_space->select.sel_info.pnt_lst->high_bounds[u - rank_diff]; } /* end for */ - } /* end else */ + } /* end else */ /* Number of elements selected will be the same */ new_space->select.num_elem = base_space->select.num_elem; @@ -2367,7 +2339,6 @@ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5S__point_project_simple() */ - /*-------------------------------------------------------------------------- NAME H5Sselect_elements @@ -2399,32 +2370,30 @@ done: REVISION LOG --------------------------------------------------------------------------*/ herr_t -H5Sselect_elements(hid_t spaceid, H5S_seloper_t op, size_t num_elem, - const hsize_t *coord) +H5Sselect_elements(hid_t spaceid, H5S_seloper_t op, size_t num_elem, const hsize_t *coord) { - H5S_t *space; /* Dataspace to modify selection of */ - herr_t ret_value; /* Return value */ + H5S_t *space; /* Dataspace to modify selection of */ + herr_t ret_value; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE4("e", "iSsz*h", spaceid, op, num_elem, coord); /* Check args */ - if(NULL == (space = (H5S_t *)H5I_object_verify(spaceid, H5I_DATASPACE))) + if (NULL == (space = (H5S_t *)H5I_object_verify(spaceid, H5I_DATASPACE))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataspace") - if(H5S_SCALAR == H5S_GET_EXTENT_TYPE(space)) + if (H5S_SCALAR == H5S_GET_EXTENT_TYPE(space)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "point doesn't support H5S_SCALAR space") - if(H5S_NULL == H5S_GET_EXTENT_TYPE(space)) + if (H5S_NULL == H5S_GET_EXTENT_TYPE(space)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "point doesn't support H5S_NULL space") - if(coord == NULL || num_elem == 0) + if (coord == NULL || num_elem == 0) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "elements not specified") - if(!(op == H5S_SELECT_SET || op == H5S_SELECT_APPEND || op == H5S_SELECT_PREPEND)) + if (!(op == H5S_SELECT_SET || op == H5S_SELECT_APPEND || op == H5S_SELECT_PREPEND)) HGOTO_ERROR(H5E_ARGS, H5E_UNSUPPORTED, FAIL, "unsupported operation attempted") /* Call the real element selection routine */ - if((ret_value = H5S_select_elements(space, op, num_elem, coord)) < 0) + if ((ret_value = H5S_select_elements(space, op, num_elem, coord)) < 0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTDELETE, FAIL, "can't select elements") done: FUNC_LEAVE_API(ret_value) } /* end H5Sselect_elements() */ - |