|
| | H5FL_DEFINE_STATIC (H5S_hyper_sel_t) |
| |
| | H5FL_DEFINE_STATIC (H5S_hyper_span_t) |
| |
| | H5FL_BARR_DEFINE_STATIC (H5S_hyper_span_info_t, hbounds_t, H5S_MAX_RANK *2) |
| |
| | H5FL_EXTERN (H5S_sel_iter_t) |
| |
| uint64_t | H5S__hyper_get_op_gen (void) |
| |
| hssize_t | H5Sget_select_hyper_nblocks (hid_t spaceid) |
| |
| herr_t | H5Sget_select_hyper_blocklist (hid_t spaceid, hsize_t startblock, hsize_t numblocks, hsize_t buf[]) |
| |
| herr_t | H5S_hyper_add_span_element (H5S_t *space, unsigned rank, const hsize_t *coords) |
| |
| htri_t | H5S_hyper_normalize_offset (H5S_t *space, hssize_t *old_offset) |
| |
| herr_t | H5S_hyper_denormalize_offset (H5S_t *space, const hssize_t *old_offset) |
| |
| void | H5S__hyper_rebuild (H5S_t *space) |
| |
| herr_t | H5S_select_hyperslab (H5S_t *space, H5S_seloper_t op, const hsize_t start[], const hsize_t *stride, const hsize_t count[], const hsize_t *block) |
| |
| herr_t | H5Sselect_hyperslab (hid_t space_id, H5S_seloper_t op, const hsize_t start[], const hsize_t stride[], const hsize_t count[], const hsize_t block[]) |
| |
| herr_t | H5S_combine_hyperslab (H5S_t *old_space, H5S_seloper_t op, const hsize_t start[], const hsize_t *stride, const hsize_t count[], const hsize_t *block, H5S_t **new_space) |
| |
| hid_t | H5Scombine_hyperslab (hid_t space_id, H5S_seloper_t op, const hsize_t start[], const hsize_t stride[], const hsize_t count[], const hsize_t block[]) |
| |
| hid_t | H5Scombine_select (hid_t space1_id, H5S_seloper_t op, hid_t space2_id) |
| |
| herr_t | H5S__modify_select (H5S_t *space1, H5S_seloper_t op, H5S_t *space2) |
| |
| herr_t | H5Smodify_select (hid_t space1_id, H5S_seloper_t op, hid_t space2_id) |
| |
| herr_t | H5S__hyper_project_intersection (const H5S_t *src_space, const H5S_t *dst_space, const H5S_t *src_intersect_space, H5S_t *proj_space, hbool_t share_selection) |
| |
| herr_t | H5S_hyper_clip_unlim (H5S_t *space, hsize_t clip_size) |
| |
| hsize_t | H5S_hyper_get_clip_extent (const H5S_t *clip_space, const H5S_t *match_space, hbool_t incl_trail) |
| |
| hsize_t | H5S_hyper_get_clip_extent_match (const H5S_t *clip_space, const H5S_t *match_space, hsize_t match_clip_size, hbool_t incl_trail) |
| |
| H5S_t * | H5S_hyper_get_unlim_block (const H5S_t *space, hsize_t block_index) |
| |
| hsize_t | H5S_hyper_get_first_inc_block (const H5S_t *space, hsize_t clip_size, hbool_t *partial) |
| |
| htri_t | H5Sis_regular_hyperslab (hid_t spaceid) |
| |
| herr_t | H5Sget_regular_hyperslab (hid_t spaceid, hsize_t start[], hsize_t stride[], hsize_t count[], hsize_t block[]) |
| |
Note that this is a tricky part of this function. It's possible that two dataspaces have different "offset". If the space2 has smaller offset value than that of space1 in a dimension, then the span elements of this dimension in space2 could have negative "low" and "high" values relative to the offset in space1. In other words, if the bounds of span elements in space2 are adjusted relative to the offset in space1, then every span element's bound is computed as "origin_bound+offset2-offset1". Therefore, if offset2 (the offset of space2) is smaller, then "origin_bound+offset2-offset1" could be negative which is not allowed by the bound type declaration as hsize_t! As a result, if the op is an OR selection, then the final result may contain span elements that have negative bound! So right now, the difference in the offset is totally ignored!!