HDF5  1.12.0
H5Shyper.c File Reference

Data Structures

struct  H5S_hyper_project_intersect_ud_t
 

Typedefs

typedef hsize_t hbounds_t
 

Functions

 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_tH5S_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[])
 

Variables

const H5S_select_class_t H5S_sel_hyper [1]
 
const unsigned H5O_sds_hyper_ver_bounds []
 

Typedef Documentation

◆ hbounds_t

typedef hsize_t hbounds_t

Function Documentation

◆ H5FL_BARR_DEFINE_STATIC()

H5FL_BARR_DEFINE_STATIC ( H5S_hyper_span_info_t  ,
hbounds_t  ,
H5S_MAX_RANK *  2 
)

◆ H5FL_DEFINE_STATIC() [1/2]

H5FL_DEFINE_STATIC ( H5S_hyper_sel_t  )

◆ H5FL_DEFINE_STATIC() [2/2]

H5FL_DEFINE_STATIC ( H5S_hyper_span_t  )

◆ H5FL_EXTERN()

H5FL_EXTERN ( H5S_sel_iter_t  )

◆ H5S__hyper_get_op_gen()

uint64_t H5S__hyper_get_op_gen ( void  )

References FUNC_LEAVE_NOAPI().

◆ H5S__hyper_project_intersection()

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 
)

◆ H5S__hyper_rebuild()

◆ H5S__modify_select()

◆ H5S_combine_hyperslab()

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 
)

◆ H5S_hyper_add_span_element()

herr_t H5S_hyper_add_span_element ( H5S_t space,
unsigned  rank,
const hsize_t *  coords 
)

◆ H5S_hyper_clip_unlim()

◆ H5S_hyper_denormalize_offset()

herr_t H5S_hyper_denormalize_offset ( H5S_t space,
const hssize_t old_offset 
)

◆ H5S_hyper_get_clip_extent()

◆ H5S_hyper_get_clip_extent_match()

◆ H5S_hyper_get_first_inc_block()

◆ H5S_hyper_get_unlim_block()

◆ H5S_hyper_normalize_offset()

◆ H5S_select_hyperslab()

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 
)

◆ H5Scombine_hyperslab()

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[] 
)

◆ H5Scombine_select()

◆ H5Sget_regular_hyperslab()

herr_t H5Sget_regular_hyperslab ( hid_t  spaceid,
hsize_t  start[],
hsize_t  stride[],
hsize_t  count[],
hsize_t  block[] 
)

◆ H5Sget_select_hyper_blocklist()

herr_t H5Sget_select_hyper_blocklist ( hid_t  spaceid,
hsize_t  startblock,
hsize_t  numblocks,
hsize_t  buf[] 
)

◆ H5Sget_select_hyper_nblocks()

◆ H5Sis_regular_hyperslab()

htri_t H5Sis_regular_hyperslab ( hid_t  spaceid)

◆ H5Smodify_select()

herr_t H5Smodify_select ( hid_t  space1_id,
H5S_seloper_t  op,
hid_t  space2_id 
)

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!!

References H5S_t::extent, FAIL, H5E_BADVALUE, H5E_CANTINIT, H5I_DATASPACE, H5I_object_verify(), H5S__modify_select(), H5S_SEL_HYPERSLABS, H5S_SELECT_NOTA, H5S_SELECT_OR, NULL, H5S_select_t::offset, H5S_extent_t::rank, ret_value, H5S_t::select, and u.

◆ H5Sselect_hyperslab()

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[] 
)

Variable Documentation

◆ H5O_sds_hyper_ver_bounds

const unsigned H5O_sds_hyper_ver_bounds[]
Initial value:
= {
H5S_HYPER_VERSION_1,
H5S_HYPER_VERSION_1,
H5S_HYPER_VERSION_2,
H5S_HYPER_VERSION_3
}

◆ H5S_sel_hyper

const H5S_select_class_t H5S_sel_hyper[1]
Initial value:
= {{
H5S__hyper_copy,
H5S__hyper_release,
H5S__hyper_is_valid,
H5S__hyper_serial_size,
H5S__hyper_serialize,
H5S__hyper_deserialize,
H5S__hyper_bounds,
H5S__hyper_offset,
H5S__hyper_unlim_dim,
H5S__hyper_num_elem_non_unlim,
H5S__hyper_is_contiguous,
H5S__hyper_is_single,
H5S__hyper_is_regular,
H5S__hyper_shape_same,
H5S__hyper_intersect_block,
H5S__hyper_adjust_u,
H5S__hyper_adjust_s,
H5S__hyper_project_scalar,
H5S__hyper_project_simple,
H5S__hyper_iter_init,
}}

Referenced by H5S_select_deserialize().

H5S_SEL_HYPERSLABS
@ H5S_SEL_HYPERSLABS
Definition: H5Spublic.h:112