diff options
Diffstat (limited to 'src/H5Snone.c')
-rw-r--r-- | src/H5Snone.c | 81 |
1 files changed, 57 insertions, 24 deletions
diff --git a/src/H5Snone.c b/src/H5Snone.c index 4409d2b..9e5e726 100644 --- a/src/H5Snone.c +++ b/src/H5Snone.c @@ -37,6 +37,24 @@ static int interface_initialize_g = 0; /* Static function prototypes */ + +/* Selection callbacks */ +static herr_t H5S_none_copy(H5S_t *dst, const H5S_t *src, hbool_t share_selection); +static herr_t H5S_none_get_seq_list(const H5S_t *space, unsigned flags, + 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_none_release(H5S_t *space); +static htri_t H5S_none_is_valid(const H5S_t *space); +static hssize_t H5S_none_serial_size(const H5S_t *space); +static herr_t H5S_none_serialize(const H5S_t *space, uint8_t *buf); +static herr_t H5S_none_deserialize(H5S_t *space, const uint8_t *buf); +static herr_t H5S_none_bounds(const H5S_t *space, hssize_t *start, hssize_t *end); +static htri_t H5S_none_is_contiguous(const H5S_t *space); +static htri_t H5S_none_is_single(const H5S_t *space); +static htri_t H5S_none_is_regular(const H5S_t *space); +static herr_t H5S_none_iter_init(H5S_sel_iter_t *iter, const H5S_t *space); + +/* Selection iteration callbacks */ static herr_t H5S_none_iter_coords(const H5S_sel_iter_t *iter, hssize_t *coords); static herr_t H5S_none_iter_block(const H5S_sel_iter_t *iter, hssize_t *start, hssize_t *end); static hsize_t H5S_none_iter_nelmts(const H5S_sel_iter_t *iter); @@ -45,6 +63,39 @@ static herr_t H5S_none_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem); static herr_t H5S_none_iter_next_block(H5S_sel_iter_t *sel_iter); static herr_t H5S_none_iter_release(H5S_sel_iter_t *sel_iter); +/* Selection properties for "none" selections */ +const H5S_select_class_t H5S_sel_none[1] = {{ + H5S_SEL_NONE, + + /* Methods on selection */ + H5S_none_copy, + H5S_none_get_seq_list, + H5S_none_release, + H5S_none_is_valid, + H5S_none_serial_size, + H5S_none_serialize, + H5S_none_deserialize, + H5S_none_bounds, + H5S_none_is_contiguous, + H5S_none_is_single, + H5S_none_is_regular, + H5S_none_iter_init, +}}; + +/* Iteration properties for "none" selections */ +static const H5S_sel_iter_class_t H5S_sel_iter_none[1] = {{ + H5S_SEL_NONE, + + /* Methods on selection iterator */ + H5S_none_iter_coords, + H5S_none_iter_block, + H5S_none_iter_nelmts, + H5S_none_iter_has_next_block, + H5S_none_iter_next, + H5S_none_iter_next_block, + H5S_none_iter_release, +}}; + /*------------------------------------------------------------------------- * Function: H5S_none_iter_init @@ -68,17 +119,11 @@ H5S_none_iter_init (H5S_sel_iter_t *iter, const H5S_t UNUSED *space) FUNC_ENTER_NOAPI(H5S_none_iter_init, FAIL); /* Check args */ - assert (space && H5S_SEL_NONE==space->select.type); + assert (space && H5S_SEL_NONE==H5S_GET_SELECT_TYPE(space)); assert (iter); - /* Initialize methods for selection iterator */ - iter->iter_coords=H5S_none_iter_coords; - iter->iter_block=H5S_none_iter_block; - iter->iter_nelmts=H5S_none_iter_nelmts; - iter->iter_has_next_block=H5S_none_iter_has_next_block; - iter->iter_next=H5S_none_iter_next; - iter->iter_next_block=H5S_none_iter_next_block; - iter->iter_release=H5S_none_iter_release; + /* Initialize type of selection iterator */ + iter->type=H5S_sel_iter_none; done: FUNC_LEAVE_NOAPI(ret_value); @@ -338,7 +383,7 @@ done: REVISION LOG --------------------------------------------------------------------------*/ herr_t -H5S_none_copy (H5S_t *dst, const H5S_t *src) +H5S_none_copy(H5S_t *dst, const H5S_t *src, hbool_t UNUSED share_selection) { herr_t ret_value=SUCCEED; /* return value */ @@ -457,7 +502,7 @@ H5S_none_serialize (const H5S_t *space, uint8_t *buf) assert(space); /* Store the preamble information */ - UINT32ENCODE(buf, (uint32_t)space->select.type); /* Store the type of selection */ + UINT32ENCODE(buf, (uint32_t)H5S_GET_SELECT_TYPE(space)); /* Store the type of selection */ UINT32ENCODE(buf, (uint32_t)1); /* Store the version number */ UINT32ENCODE(buf, (uint32_t)0); /* Store the un-used padding */ UINT32ENCODE(buf, (uint32_t)0); /* Store the additional information length */ @@ -677,19 +722,7 @@ herr_t H5S_select_none (H5S_t *space) space->select.num_elem=0; /* Set selection type */ - space->select.type=H5S_SEL_NONE; - - /* Set selection methods */ - space->select.get_seq_list=H5S_none_get_seq_list; - space->select.release=H5S_none_release; - space->select.is_valid=H5S_none_is_valid; - space->select.serial_size=H5S_none_serial_size; - space->select.serialize=H5S_none_serialize; - space->select.bounds=H5S_none_bounds; - space->select.is_contiguous=H5S_none_is_contiguous; - space->select.is_single=H5S_none_is_single; - space->select.is_regular=H5S_none_is_regular; - space->select.iter_init=H5S_none_iter_init; + space->select.type=H5S_sel_none; done: FUNC_LEAVE_NOAPI(ret_value); |