summaryrefslogtreecommitdiffstats
path: root/src/H5Spoint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Spoint.c')
-rw-r--r--src/H5Spoint.c781
1 files changed, 375 insertions, 406 deletions
diff --git a/src/H5Spoint.c b/src/H5Spoint.c
index f53033b..d54f62e 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,11 +125,11 @@ 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_V112 */
- 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_V112 */
+ H5S_POINT_VERSION_2 /* H5F_LIBVER_LATEST */
};
/*******************/
@@ -165,7 +157,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
*
@@ -181,7 +172,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
@@ -198,10 +189,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
@@ -218,7 +209,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_iter_init() */
-
/*-------------------------------------------------------------------------
* Function: H5S__point_iter_coords
*
@@ -247,7 +237,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
*
@@ -278,7 +267,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
*
@@ -302,7 +290,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
@@ -323,7 +310,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
@@ -331,14 +318,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
@@ -367,7 +353,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 */
@@ -375,7 +361,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
@@ -407,7 +392,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
@@ -438,18 +422,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
@@ -471,24 +455,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 */
@@ -500,7 +484,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;
@@ -518,16 +502,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;
@@ -538,7 +522,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
@@ -557,7 +540,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
@@ -565,14 +548,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
@@ -596,8 +577,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
@@ -607,11 +588,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 */
@@ -621,7 +602,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;
@@ -633,31 +614,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 */
@@ -667,29 +650,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
@@ -727,7 +709,6 @@ H5S__point_release(H5S_t *space)
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5S__point_release() */
-
/*--------------------------------------------------------------------------
NAME
H5S_select_elements
@@ -756,10 +737,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)
@@ -770,24 +750,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 */
@@ -797,7 +778,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S_select_elements() */
-
/*--------------------------------------------------------------------------
NAME
H5S__copy_pnt_list
@@ -820,9 +800,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
@@ -831,16 +811,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;
@@ -848,11 +828,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;
@@ -867,13 +847,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
@@ -894,7 +873,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
@@ -903,10 +882,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 */
@@ -915,7 +894,6 @@ H5S__free_pnt_list(H5S_pnt_list_t *pnt_lst)
FUNC_LEAVE_NOAPI_VOID
} /* end H5S__free_pnt_list() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_copy
@@ -939,7 +917,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
@@ -948,14 +926,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
@@ -979,19 +957,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 */
@@ -999,7 +978,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_is_valid() */
-
/*--------------------------------------------------------------------------
NAME
H5Sget_select_elem_npoints
@@ -1020,16 +998,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);
@@ -1038,7 +1016,6 @@ done:
FUNC_LEAVE_API(ret_value)
} /* end H5Sget_select_elem_npoints() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_get_version_enc_size
@@ -1071,53 +1048,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 */
@@ -1126,7 +1105,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;
@@ -1134,14 +1113,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;
@@ -1156,7 +1135,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5S__point_get_version_enc_size() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_serial_size
@@ -1179,25 +1157,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)> +
@@ -1209,13 +1187,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
@@ -1240,14 +1217,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
@@ -1258,27 +1235,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);
@@ -1286,12 +1264,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;
@@ -1302,16 +1280,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;
@@ -1322,12 +1300,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;
@@ -1337,17 +1315,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
@@ -1373,17 +1350,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
@@ -1397,8 +1374,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
@@ -1407,10 +1384,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 {
@@ -1420,25 +1397,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;
@@ -1453,15 +1431,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;
@@ -1479,30 +1456,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
@@ -1535,8 +1511,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
@@ -1550,23 +1526,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
@@ -1597,21 +1572,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);
@@ -1620,7 +1594,6 @@ done:
FUNC_LEAVE_API(ret_value)
} /* end H5Sget_select_elem_pointlist() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_bounds
@@ -1650,8 +1623,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
@@ -1661,24 +1634,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
@@ -1702,12 +1677,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
@@ -1718,17 +1693,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 */
@@ -1742,7 +1717,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_offset() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_unlim_dim
@@ -1771,7 +1745,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
@@ -1796,22 +1769,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
@@ -1833,14 +1806,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;
@@ -1848,7 +1821,6 @@ H5S__point_is_single(const H5S_t *space)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_is_single() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_is_regular
@@ -1873,7 +1845,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
@@ -1881,7 +1853,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;
@@ -1889,7 +1861,6 @@ H5S__point_is_regular(const H5S_t *space)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_is_regular() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_shape_same
@@ -1912,13 +1883,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
@@ -1943,7 +1914,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];
@@ -1952,7 +1923,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];
@@ -1964,14 +1935,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--;
@@ -1979,15 +1950,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;
@@ -1997,7 +1967,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_shape_same() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_intersect_block
@@ -2018,11 +1987,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
@@ -2034,16 +2002,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 */
@@ -2054,7 +2022,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_intersect_block() */
-
/*--------------------------------------------------------------------------
NAME
H5S__point_adjust_u
@@ -2076,10 +2043,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
@@ -2087,20 +2054,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]);
@@ -2113,16 +2080,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
@@ -2144,10 +2110,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
@@ -2155,20 +2121,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]);
@@ -2181,18 +2147,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
*
@@ -2209,8 +2175,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
@@ -2222,8 +2188,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);
@@ -2232,7 +2199,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_project_scalar() */
-
/*-------------------------------------------------------------------------
* Function: H5S_point_project_simple
*
@@ -2249,12 +2215,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
@@ -2264,16 +2230,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;
@@ -2286,21 +2252,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 */
@@ -2308,11 +2275,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);
@@ -2325,22 +2294,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 */
@@ -2348,15 +2318,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;
@@ -2368,7 +2340,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S__point_project_simple() */
-
/*--------------------------------------------------------------------------
NAME
H5Sselect_elements
@@ -2400,32 +2371,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() */
-