HDF5  1.12.0
H5Sprivate.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * Copyright by the Board of Trustees of the University of Illinois. *
4  * All rights reserved. *
5  * *
6  * This file is part of HDF5. The full HDF5 copyright notice, including *
7  * terms governing use, modification, and redistribution, is contained in *
8  * the COPYING file, which can be found at the root of the source code *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
10  * If you do not have access to either file, you may request a copy from *
11  * help@hdfgroup.org. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /*
15  * This file contains private information about the H5S module
16  */
17 #ifndef _H5Sprivate_H
18 #define _H5Sprivate_H
19 
20 /* Include package's public header */
21 #include "H5Spublic.h"
22 
23 /* Public headers needed by this file */
24 #include "H5Dpublic.h" /* Datasets */
25 
26 /* Private headers needed by this file */
27 #include "H5private.h" /* Generic Functions */
28 #include "H5Fprivate.h" /* Files */
29 #include "H5Gprivate.h" /* Groups */
30 #include "H5Pprivate.h" /* Property lists */
31 #include "H5Tprivate.h" /* Datatypes */
32 
33 /* Forward references of package typedefs */
34 typedef struct H5S_extent_t H5S_extent_t;
35 typedef struct H5S_pnt_node_t H5S_pnt_node_t;
36 typedef struct H5S_pnt_list_t H5S_pnt_list_t;
37 typedef struct H5S_hyper_span_t H5S_hyper_span_t;
39 
40 /* Information about one dimension in a hyperslab selection */
41 typedef struct H5S_hyper_dim_t {
47 
48 /* Point selection iteration container */
49 typedef struct {
50  H5S_pnt_list_t *pnt_lst; /* Pointer to point list */
51  H5S_pnt_node_t *curr; /* Pointer to next node to output */
53 
54 /* Hyperslab selection iteration container */
55 typedef struct {
56  /* Common fields for all hyperslab selections */
57  hsize_t off[H5S_MAX_RANK]; /* Offset in span node (used as position for regular hyperslabs) */
58  hsize_t slab[H5S_MAX_RANK]; /* Cumulative size of each dimension in bytes */
59  unsigned iter_rank; /* Rank of iterator information */
60  /* (This should always be the same as the dataspace
61  * rank, except for regular hyperslab selections in
62  * which there are contiguous regions in the lower
63  * dimensions that have been "flattened")
64  */
65  hbool_t diminfo_valid; /* Whether the dimension information is valid */
66 
67  /* "Flattened" regular hyperslab selection fields */
68  H5S_hyper_dim_t diminfo[H5S_MAX_RANK]; /* "Flattened" regular selection information */
69  hsize_t size[H5S_MAX_RANK]; /* "Flattened" dataspace extent information */
70  hssize_t sel_off[H5S_MAX_RANK]; /* "Flattened" selection offset information */
71  hbool_t flattened[H5S_MAX_RANK]; /* Whether this dimension has been flattened */
72 
73  /* Irregular hyperslab selection fields */
74  hsize_t loc_off[H5S_MAX_RANK]; /* Byte offset in buffer, for each dimension's current offset */
75  H5S_hyper_span_info_t *spans; /* Pointer to copy of the span tree */
76  H5S_hyper_span_t *span[H5S_MAX_RANK];/* Array of pointers to span nodes */
78 
79 /* "All" selection iteration container */
80 typedef struct {
81  hsize_t elmt_offset; /* Next element to output */
82  hsize_t byte_offset; /* Next byte to output */
84 
85 /* Forward declaration of selection iteration class */
87 
88 /* Selection iteration container */
89 typedef struct H5S_sel_iter_t {
90  /* Selection class */
91  const struct H5S_sel_iter_class_t *type; /* Selection iteration class info */
92 
93  /* Information common to all iterators */
94  unsigned rank; /* Rank of dataspace the selection iterator is operating on */
95  hsize_t dims[H5S_MAX_RANK]; /* Dimensions of dataspace the selection is operating on */
96  hssize_t sel_off[H5S_MAX_RANK]; /* Selection offset in dataspace */
97  hsize_t elmt_left; /* Number of elements left to iterate over */
98  size_t elmt_size; /* Size of elements to iterate over */
99  unsigned flags; /* Flags controlling iterator behavior */
100 
101  /* Information specific to each type of iterator */
102  union {
103  H5S_point_iter_t pnt; /* Point selection iteration information */
104  H5S_hyper_iter_t hyp; /* New Hyperslab selection iteration information */
105  H5S_all_iter_t all; /* "All" selection iteration information */
106  } u;
108 
109 /* Selection iteration operator for internal library callbacks */
110 typedef herr_t (*H5S_sel_iter_lib_op_t)(void *elem, const H5T_t *type,
111  unsigned ndim, const hsize_t *point, void *op_data);
112 
113 /* Describe kind of callback to make */
115  H5S_SEL_ITER_OP_APP, /* Application callback */
116  H5S_SEL_ITER_OP_LIB /* Library internal callback */
118 
119 typedef struct H5S_sel_iter_app_op_t {
120  H5D_operator_t op; /* Callback */
121  hid_t type_id; /* Type ID to be passed to callback */
123 
124 typedef struct H5S_sel_iter_op_t {
126  union {
127  H5S_sel_iter_app_op_t app_op; /* Application callback */
128  H5S_sel_iter_lib_op_t lib_op; /* Library internal callback */
129  } u;
131 
132 /* If the module using this macro is allowed access to the private variables, access them directly */
133 #ifdef H5S_MODULE
134 #define H5S_GET_EXTENT_TYPE(S) ((S)->extent.type)
135 #define H5S_GET_EXTENT_NDIMS(S) ((S)->extent.rank)
136 #define H5S_GET_EXTENT_NPOINTS(S) ((S)->extent.nelem)
137 #define H5S_GET_SELECT_NPOINTS(S) ((S)->select.num_elem)
138 #define H5S_GET_SELECT_TYPE(S) ((S)->select.type->type)
139 #define H5S_SELECT_VALID(S) ((*(S)->select.type->is_valid)(S))
140 #define H5S_SELECT_SERIAL_SIZE(S) ((*(S)->select.type->serial_size)(S))
141 #define H5S_SELECT_SERIALIZE(S,BUF) ((*(S)->select.type->serialize)(S,BUF))
142 #define H5S_SELECT_BOUNDS(S,START,END) ((*(S)->select.type->bounds)(S,START,END))
143 #define H5S_SELECT_OFFSET(S, OFFSET) ((*(S)->select.type->offset)(S, OFFSET))
144 #define H5S_SELECT_IS_CONTIGUOUS(S) ((*(S)->select.type->is_contiguous)(S))
145 #define H5S_SELECT_IS_SINGLE(S) ((*(S)->select.type->is_single)(S))
146 #define H5S_SELECT_IS_REGULAR(S) ((*(S)->select.type->is_regular)(S))
147 #define H5S_SELECT_ADJUST_U(S,O) ((*(S)->select.type->adjust_u)(S, O))
148 #define H5S_SELECT_ADJUST_S(S,O) ((*(S)->select.type->adjust_s)(S, O))
149 #define H5S_SELECT_PROJECT_SCALAR(S,O) ((*(S)->select.type->project_scalar)(S, O))
150 #define H5S_SELECT_PROJECT_SIMPLE(S,NS, O) ((*(S)->select.type->project_simple)(S, NS, O))
151 #define H5S_SELECT_ITER_COORDS(ITER,COORDS) ((*(ITER)->type->iter_coords)(ITER,COORDS))
152 #define H5S_SELECT_ITER_BLOCK(ITER,START,END) ((*(ITER)->type->iter_block)(ITER,START,END))
153 #define H5S_SELECT_ITER_NELMTS(ITER) ((*(ITER)->type->iter_nelmts)(ITER))
154 #define H5S_SELECT_ITER_HAS_NEXT_BLOCK(ITER) ((*(ITER)->type->iter_has_next_block)(ITER))
155 #define H5S_SELECT_ITER_NEXT(ITER,NELEM)((*(ITER)->type->iter_next)(ITER,NELEM))
156 #define H5S_SELECT_ITER_NEXT_BLOCK(ITER) ((*(ITER)->type->iter_next_block)(ITER))
157 #define H5S_SELECT_ITER_GET_SEQ_LIST(ITER,MAXSEQ,MAXBYTES,NSEQ,NBYTES,OFF,LEN) ((*(ITER)->type->iter_get_seq_list)(ITER,MAXSEQ,MAXBYTES,NSEQ,NBYTES,OFF,LEN))
158 #define H5S_SELECT_ITER_RELEASE(ITER) ((*(ITER)->type->iter_release)(ITER))
159 #else /* H5S_MODULE */
160 #define H5S_GET_EXTENT_TYPE(S) (H5S_get_simple_extent_type(S))
161 #define H5S_GET_EXTENT_NDIMS(S) (H5S_get_simple_extent_ndims(S))
162 #define H5S_GET_EXTENT_NPOINTS(S) (H5S_get_simple_extent_npoints(S))
163 #define H5S_GET_SELECT_NPOINTS(S) (H5S_get_select_npoints(S))
164 #define H5S_GET_SELECT_TYPE(S) (H5S_get_select_type(S))
165 #define H5S_SELECT_VALID(S) (H5S_select_valid(S))
166 #define H5S_SELECT_SERIAL_SIZE(S) (H5S_select_serial_size(S))
167 #define H5S_SELECT_SERIALIZE(S,BUF) (H5S_select_serialize(S,BUF))
168 #define H5S_SELECT_BOUNDS(S,START,END) (H5S_get_select_bounds(S,START,END))
169 #define H5S_SELECT_OFFSET(S, OFFSET) (H5S_get_select_offset(S, OFFSET))
170 #define H5S_SELECT_IS_CONTIGUOUS(S) (H5S_select_is_contiguous(S))
171 #define H5S_SELECT_IS_SINGLE(S) (H5S_select_is_single(S))
172 #define H5S_SELECT_IS_REGULAR(S) (H5S_select_is_regular(S))
173 #define H5S_SELECT_ADJUST_U(S,O) (H5S_select_adjust_u(S, O))
174 #define H5S_SELECT_ADJUST_S(S,O) (H5S_select_adjust_s(S, O))
175 #define H5S_SELECT_PROJECT_SCALAR(S,O) (H5S_select_project_scalar(S, O))
176 #define H5S_SELECT_PROJECT_SIMPLE(S,NS,O) (H5S_select_project_simple(S, NS, O))
177 #define H5S_SELECT_ITER_COORDS(ITER,COORDS) (H5S_select_iter_coords(ITER,COORDS))
178 #define H5S_SELECT_ITER_BLOCK(ITER,START,END) (H5S_select_iter_block(ITER,START,END))
179 #define H5S_SELECT_ITER_NELMTS(ITER) (H5S_select_iter_nelmts(ITER))
180 #define H5S_SELECT_ITER_HAS_NEXT_BLOCK(ITER) (H5S_select_iter_has_next_block(ITER))
181 #define H5S_SELECT_ITER_NEXT(ITER,NELEM)(H5S_select_iter_next(ITER,NELEM))
182 #define H5S_SELECT_ITER_NEXT_BLOCK(ITER) (H5S_select_iter_next_block(ITER))
183 #define H5S_SELECT_ITER_GET_SEQ_LIST(ITER,MAXSEQ,MAXBYTES,NSEQ,NBYTES,OFF,LEN) (H5S_select_iter_get_seq_list(ITER,MAXSEQ,MAXBYTES,NSEQ,NBYTES,OFF,LEN))
184 #define H5S_SELECT_ITER_RELEASE(ITER) (H5S_select_iter_release(ITER))
185 #endif /* H5S_MODULE */
186 /* Handle these callbacks in a special way, since they have prologs that need to be executed */
187 #define H5S_SELECT_COPY(DST,SRC,SHARE) (H5S_select_copy(DST,SRC,SHARE))
188 #define H5S_SELECT_SHAPE_SAME(S1,S2) (H5S_select_shape_same(S1,S2))
189 #define H5S_SELECT_INTERSECT_BLOCK(S,START,END) (H5S_select_intersect_block(S,START,END))
190 #define H5S_SELECT_RELEASE(S) (H5S_select_release(S))
191 #define H5S_SELECT_DESERIALIZE(S,BUF) (H5S_select_deserialize(S,BUF))
192 
193 /* Forward declaration of structs used below */
194 struct H5O_t;
195 struct H5O_loc_t;
196 
197 /* Early typedef to avoid circular dependencies */
198 typedef struct H5S_t H5S_t;
199 
200 /* Operations on dataspaces */
201 H5_DLL H5S_t *H5S_copy(const H5S_t *src, hbool_t share_selection, hbool_t copy_max);
208 H5_DLL int H5S_get_simple_extent_dims(const H5S_t *ds, hsize_t dims[]/*out*/,
209  hsize_t max_dims[]/*out*/);
210 H5_DLL herr_t H5S_write(H5F_t *f, struct H5O_t *oh, unsigned update_flags, H5S_t *ds);
211 H5_DLL herr_t H5S_append(H5F_t *f, struct H5O_t *oh, H5S_t *ds);
212 H5_DLL H5S_t *H5S_read(const struct H5O_loc_t *loc);
213 H5_DLL htri_t H5S_set_extent(H5S_t *space, const hsize_t *size);
215 H5_DLL herr_t H5S_set_extent_simple(H5S_t *space, unsigned rank,
216  const hsize_t *dims, const hsize_t *max);
218 H5_DLL herr_t H5S_get_validated_dataspace(hid_t space_id, const H5S_t **space/*out*/);
219 H5_DLL H5S_t *H5S_create_simple(unsigned rank, const hsize_t dims[/*rank*/],
220  const hsize_t maxdims[/*rank*/]);
222 H5_DLL herr_t H5S_encode(H5S_t *obj, unsigned char **p, size_t *nalloc);
223 H5_DLL H5S_t *H5S_decode(const unsigned char **p);
224 H5_DLL herr_t H5S_debug(H5F_t *f, const void *_mesg, FILE *stream, int indent,
225  int fwidth);
226 
227 /* Operations on dataspace extents */
229 H5_DLL int H5S_extent_get_dims(const H5S_extent_t *ext, hsize_t dims[], hsize_t max_dims[]);
230 H5_DLL htri_t H5S_extent_equal(const H5S_t *ds1, const H5S_t *ds2);
231 H5_DLL herr_t H5S_extent_copy(H5S_t *dst, const H5S_t *src);
232 
233 /* Operations on selections */
234 H5_DLL herr_t H5S_select_deserialize(H5S_t **space, const uint8_t **p);
236 H5_DLL herr_t H5S_select_iterate(void *buf, const H5T_t *type, const H5S_t *space,
237  const H5S_sel_iter_op_t *op, void *op_data);
238 H5_DLL herr_t H5S_select_fill(const void *fill, size_t fill_size,
239  const H5S_t *space, void *buf);
240 H5_DLL htri_t H5S_select_valid(const H5S_t *space);
242 H5_DLL herr_t H5S_get_select_bounds(const H5S_t *space, hsize_t *start, hsize_t *end);
243 H5_DLL herr_t H5S_get_select_offset(const H5S_t *space, hsize_t *offset);
244 H5_DLL int H5S_get_select_unlim_dim(const H5S_t *space);
246  hsize_t *num_elem_non_unlim);
247 H5_DLL herr_t H5S_select_offset(H5S_t *space, const hssize_t *offset);
248 H5_DLL herr_t H5S_select_copy(H5S_t *dst, const H5S_t *src, hbool_t share_selection);
249 H5_DLL htri_t H5S_select_shape_same(const H5S_t *space1, const H5S_t *space2);
250 H5_DLL htri_t H5S_select_intersect_block(const H5S_t *space, const hsize_t *start,
251  const hsize_t *end);
253  H5S_t **new_space_ptr, unsigned new_space_rank, const void *buf,
254  void const **adj_buf_ptr, hsize_t element_size);
257 H5_DLL herr_t H5S_select_serialize(const H5S_t *space, uint8_t **p);
261 H5_DLL herr_t H5S_select_adjust_u(H5S_t *space, const hsize_t *offset);
262 H5_DLL herr_t H5S_select_adjust_s(H5S_t *space, const hssize_t *offset);
263 H5_DLL herr_t H5S_select_project_scalar(const H5S_t *space, hsize_t *offset);
264 H5_DLL herr_t H5S_select_project_simple(const H5S_t *space, H5S_t *new_space, hsize_t *offset);
266  const H5S_t *dst_space, const H5S_t *src_intersect_space,
267  H5S_t **new_space_ptr, hbool_t share_space);
268 H5_DLL herr_t H5S_select_subtract(H5S_t *space, H5S_t *subtract_space);
269 
270 /* Operations on all selections */
271 H5_DLL herr_t H5S_select_all(H5S_t *space, hbool_t rel_prev);
272 
273 /* Operations on none selections */
275 
276 /* Operations on point selections */
278  size_t num_elem, const hsize_t *coord);
279 
280 /* Operations on hyperslab selections */
281 H5_DLL herr_t H5S_select_hyperslab(H5S_t *space, H5S_seloper_t op, const hsize_t start[],
282  const hsize_t *stride, const hsize_t count[], const hsize_t *block);
284  const hsize_t start[], const hsize_t *stride, const hsize_t count[],
285  const hsize_t *block, H5S_t **new_space);
286 H5_DLL herr_t H5S_hyper_add_span_element(H5S_t *space, unsigned rank,
287  const hsize_t *coords);
289 H5_DLL herr_t H5S_hyper_denormalize_offset(H5S_t *space, const hssize_t *old_offset);
290 H5_DLL herr_t H5S_hyper_clip_unlim(H5S_t *space, hsize_t clip_size);
292  const H5S_t *match_space, hbool_t incl_trail);
294  const H5S_t *match_space, hsize_t match_clip_size, hbool_t incl_trail);
296  hsize_t block_index);
298  hsize_t clip_size, hbool_t *partial);
299 
300 /* Operations on selection iterators */
302  size_t elmt_size, unsigned flags);
303 H5_DLL herr_t H5S_select_iter_coords(const H5S_sel_iter_t *sel_iter, hsize_t *coords);
305 H5_DLL herr_t H5S_select_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem);
307  size_t maxbytes, size_t *nseq, size_t *nbytes, hsize_t *off, size_t *len);
310 
311 #ifdef H5_HAVE_PARALLEL
312 H5_DLL herr_t H5S_mpio_space_type(const H5S_t *space, size_t elmt_size,
313  /* out: */ MPI_Datatype *new_type,
314  int *count,
315  hbool_t *is_derived_type,
316  hbool_t do_permute,
317  hsize_t **permute_map,
318  hbool_t * is_permuted);
319 #endif /* H5_HAVE_PARALLEL */
320 
321 #endif /* _H5Sprivate_H */
322 
H5O_loc_t
Definition: H5Oprivate.h:152
H5S_all_iter_t::byte_offset
hsize_t byte_offset
Definition: H5Sprivate.h:82
H5S_extent_equal
H5_DLL htri_t H5S_extent_equal(const H5S_t *ds1, const H5S_t *ds2)
Definition: H5S.c:2038
size
iblock size
Definition: H5EAcache.c:787
f
hdr f
Definition: H5EA.c:755
H5S_get_simple_extent_type
H5_DLL H5S_class_t H5S_get_simple_extent_type(const H5S_t *ds)
Definition: H5S.c:1775
H5S_extent_t
Definition: H5Spkg.h:109
H5S_get_validated_dataspace
H5_DLL herr_t H5S_get_validated_dataspace(hid_t space_id, const H5S_t **space)
Definition: H5S.c:257
H5S_hyper_dim_t::start
hsize_t start
Definition: H5Sprivate.h:42
H5S_MAX_RANK
#define H5S_MAX_RANK
Definition: H5Spublic.h:29
H5Pprivate.h
H5S_select_offset
H5_DLL herr_t H5S_select_offset(H5S_t *space, const hssize_t *offset)
Definition: H5Sselect.c:109
H5S_get_simple_extent_npoints
H5_DLL hssize_t H5S_get_simple_extent_npoints(const H5S_t *ds)
Definition: H5S.c:771
H5S_sel_iter_op_t::op_type
H5S_sel_iter_op_type_t op_type
Definition: H5Sprivate.h:125
H5S_hyper_get_unlim_block
H5_DLL H5S_t * H5S_hyper_get_unlim_block(const H5S_t *space, hsize_t block_index)
Definition: H5Shyper.c:12086
H5S_copy
H5_DLL H5S_t * H5S_copy(const H5S_t *src, hbool_t share_selection, hbool_t copy_max)
Definition: H5S.c:723
H5S_sel_iter_t::type
const struct H5S_sel_iter_class_t * type
Definition: H5Sprivate.h:91
H5Gprivate.h
H5S_get_select_num_elem_non_unlim
H5_DLL herr_t H5S_get_select_num_elem_non_unlim(const H5S_t *space, hsize_t *num_elem_non_unlim)
Definition: H5Sselect.c:791
H5S_create_simple
H5_DLL H5S_t * H5S_create_simple(unsigned rank, const hsize_t dims[], const hsize_t maxdims[])
Definition: H5S.c:1493
H5S_get_select_bounds
H5_DLL herr_t H5S_get_select_bounds(const H5S_t *space, hsize_t *start, hsize_t *end)
Definition: H5Sselect.c:675
H5S_extent_copy
H5_DLL herr_t H5S_extent_copy(H5S_t *dst, const H5S_t *src)
Definition: H5S.c:611
H5S_all_iter_t::elmt_offset
hsize_t elmt_offset
Definition: H5Sprivate.h:81
H5S_select_project_intersection
H5_DLL herr_t H5S_select_project_intersection(const H5S_t *src_space, const H5S_t *dst_space, const H5S_t *src_intersect_space, H5S_t **new_space_ptr, hbool_t share_space)
Definition: H5Sselect.c:2598
indent
*s *s indent
Definition: H5HLdbg.c:111
H5S_select_iter_nelmts
H5_DLL hsize_t H5S_select_iter_nelmts(const H5S_sel_iter_t *sel_iter)
Definition: H5Sselect.c:1297
H5S_get_select_npoints
H5_DLL hsize_t H5S_get_select_npoints(const H5S_t *space)
Definition: H5Sselect.c:435
H5S_sel_iter_t::u
union H5S_sel_iter_t::@46 u
H5S_select_all
H5_DLL herr_t H5S_select_all(H5S_t *space, hbool_t rel_prev)
Definition: H5Sall.c:1162
H5S_sel_iter_t::sel_off
hssize_t sel_off[H5S_MAX_RANK]
Definition: H5Sprivate.h:96
H5Spublic.h
H5S_hyper_clip_unlim
H5_DLL herr_t H5S_hyper_clip_unlim(H5S_t *space, hsize_t clip_size)
Definition: H5Shyper.c:11724
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5S_sel_iter_op_type_t
H5S_sel_iter_op_type_t
Definition: H5Sprivate.h:114
H5S_hyper_iter_t::spans
H5S_hyper_span_info_t * spans
Definition: H5Sprivate.h:75
H5S_sel_iter_op_t
Definition: H5Sprivate.h:124
H5S_hyper_denormalize_offset
H5_DLL herr_t H5S_hyper_denormalize_offset(H5S_t *space, const hssize_t *old_offset)
Definition: H5Shyper.c:7148
H5S_hyper_normalize_offset
H5_DLL htri_t H5S_hyper_normalize_offset(H5S_t *space, hssize_t *old_offset)
Definition: H5Shyper.c:7090
block
unable to release heap data block
Definition: H5HL.c:384
H5S_select_iter_coords
H5_DLL herr_t H5S_select_iter_coords(const H5S_sel_iter_t *sel_iter, hsize_t *coords)
Definition: H5Sselect.c:1215
H5S_select_intersect_block
H5_DLL htri_t H5S_select_intersect_block(const H5S_t *space, const hsize_t *start, const hsize_t *end)
Definition: H5Sselect.c:2098
H5S_pnt_node_t
Definition: H5Spkg.h:126
H5S_SEL_ITER_OP_LIB
@ H5S_SEL_ITER_OP_LIB
Definition: H5Sprivate.h:116
htri_t
int htri_t
Definition: H5public.h:160
H5S_sel_iter_t::flags
unsigned flags
Definition: H5Sprivate.h:99
H5S_point_iter_t::curr
H5S_pnt_node_t * curr
Definition: H5Sprivate.h:51
H5S_select_deserialize
H5_DLL herr_t H5S_select_deserialize(H5S_t **space, const uint8_t **p)
Definition: H5Sselect.c:551
H5S_sel_iter_t::all
H5S_all_iter_t all
Definition: H5Sprivate.h:105
H5S_pnt_list_t
Definition: H5Spkg.h:133
H5S_sel_iter_app_op_t
struct H5S_sel_iter_app_op_t H5S_sel_iter_app_op_t
H5S_sel_iter_class_t
Definition: H5Spkg.h:345
hssize_t
hssize_t
Definition: H5overflow.txt:45
H5S_sel_iter_t::hyp
H5S_hyper_iter_t hyp
Definition: H5Sprivate.h:104
H5S_sel_iter_t::elmt_size
size_t elmt_size
Definition: H5Sprivate.h:98
H5S_all_iter_t
Definition: H5Sprivate.h:80
H5S_sel_iter_op_t::u
union H5S_sel_iter_op_t::@47 u
H5S_select_iter_next
H5_DLL herr_t H5S_select_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem)
Definition: H5Sselect.c:1376
H5O_t
Definition: H5Opkg.h:279
H5S_sel_iter_t::pnt
H5S_point_iter_t pnt
Definition: H5Sprivate.h:103
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5S_has_extent
H5_DLL hbool_t H5S_has_extent(const H5S_t *ds)
Definition: H5S.c:1924
H5S_hyper_dim_t::count
hsize_t count
Definition: H5Sprivate.h:44
H5S_hyper_get_first_inc_block
H5_DLL hsize_t H5S_hyper_get_first_inc_block(const H5S_t *space, hsize_t clip_size, hbool_t *partial)
Definition: H5Shyper.c:12171
H5S_hyper_get_clip_extent
H5_DLL hsize_t H5S_hyper_get_clip_extent(const H5S_t *clip_space, const H5S_t *match_space, hbool_t incl_trail)
Definition: H5Shyper.c:11938
H5S_set_extent_simple
H5_DLL herr_t H5S_set_extent_simple(H5S_t *space, unsigned rank, const hsize_t *dims, const hsize_t *max)
Definition: H5S.c:1349
H5S_sel_iter_op_t
struct H5S_sel_iter_op_t H5S_sel_iter_op_t
H5T_t
Definition: H5Tpkg.h:350
H5S_sel_iter_t::rank
unsigned rank
Definition: H5Sprivate.h:94
H5S_append
H5_DLL herr_t H5S_append(H5F_t *f, struct H5O_t *oh, H5S_t *ds)
Definition: H5S.c:1138
H5S_decode
H5_DLL H5S_t * H5S_decode(const unsigned char **p)
Definition: H5S.c:1691
H5S_debug
H5_DLL herr_t H5S_debug(H5F_t *f, const void *_mesg, FILE *stream, int indent, int fwidth)
Definition: H5Sdbg.c:89
FILE
Invalid arguments to routine Resource unavailable Internal File accessibility Low level I O Function entry exit Object atom Object cache Links B Tree node Symbol table Heap Object header Datatype Dataspace Dataset Data storage Property lists Attribute Data filters External file list References Virtual File Layer Virtual Object Layer Ternary Search Trees Reference Counted Strings Error API Skip Lists Free Space Manager Shared Object Header Messages Extensible Array Fixed Array Plugin for dynamically loaded library Page Buffering API Context Map No error Argument errors Resource errors File accessibility errors FILE
Definition: H5err.txt:88
H5S_select_valid
H5_DLL htri_t H5S_select_valid(const H5S_t *space)
Definition: H5Sselect.c:510
H5S_encode
H5_DLL herr_t H5S_encode(H5S_t *obj, unsigned char **p, size_t *nalloc)
Definition: H5S.c:1574
H5S_select_hyperslab
H5_DLL 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)
Definition: H5Shyper.c:9835
H5S_sel_iter_t::dims
hsize_t dims[H5S_MAX_RANK]
Definition: H5Sprivate.h:95
H5S_SEL_ITER_OP_APP
@ H5S_SEL_ITER_OP_APP
Definition: H5Sprivate.h:115
H5S_sel_iter_close
H5_DLL herr_t H5S_sel_iter_close(H5S_sel_iter_t *sel_iter)
Definition: H5Sselect.c:3114
H5S_select_construct_projection
H5_DLL herr_t H5S_select_construct_projection(const H5S_t *base_space, H5S_t **new_space_ptr, unsigned new_space_rank, const void *buf, void const **adj_buf_ptr, hsize_t element_size)
Definition: H5Sselect.c:2251
H5S_select_is_regular
H5_DLL htri_t H5S_select_is_regular(const H5S_t *space)
Definition: H5Sselect.c:911
H5S_select_elements
H5_DLL herr_t H5S_select_elements(H5S_t *space, H5S_seloper_t op, size_t num_elem, const hsize_t *coord)
Definition: H5Spoint.c:763
H5S_sel_iter_t
Definition: H5Sprivate.h:89
H5S_t
Definition: H5Spkg.h:317
H5Fprivate.h
H5S_select_subtract
H5_DLL herr_t H5S_select_subtract(H5S_t *space, H5S_t *subtract_space)
Definition: H5Sselect.c:2898
H5S_sel_iter_app_op_t::op
H5D_operator_t op
Definition: H5Sprivate.h:120
H5S_hyper_dim_t::stride
hsize_t stride
Definition: H5Sprivate.h:43
H5S_create
H5_DLL H5S_t * H5S_create(H5S_class_t type)
Definition: H5S.c:306
H5S_hyper_span_info_t
Definition: H5Spkg.h:167
H5S_hyper_iter_t
Definition: H5Sprivate.h:55
fwidth
*s *s fwidth
Definition: H5HLdbg.c:111
H5S_get_simple_extent_ndims
H5_DLL int H5S_get_simple_extent_ndims(const H5S_t *ds)
Definition: H5S.c:938
H5S_select_is_single
H5_DLL htri_t H5S_select_is_single(const H5S_t *space)
Definition: H5Sselect.c:874
H5S_select_shape_same
H5_DLL htri_t H5S_select_shape_same(const H5S_t *space1, const H5S_t *space2)
Definition: H5Sselect.c:1785
H5S_select_copy
H5_DLL herr_t H5S_select_copy(H5S_t *dst, const H5S_t *src, hbool_t share_selection)
Definition: H5Sselect.c:243
H5S_hyper_iter_t::diminfo_valid
hbool_t diminfo_valid
Definition: H5Sprivate.h:65
H5S_hyper_get_clip_extent_match
H5_DLL 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)
Definition: H5Shyper.c:12004
H5S_select_serial_size
H5_DLL hssize_t H5S_select_serial_size(const H5S_t *space)
Definition: H5Sselect.c:321
H5S_set_version
H5_DLL herr_t H5S_set_version(H5F_t *f, H5S_t *ds)
Definition: H5S.c:2123
H5S_select_iter_get_seq_list
H5_DLL herr_t H5S_select_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)
Definition: H5Sselect.c:1456
H5S_get_simple_extent_dims
H5_DLL int H5S_get_simple_extent_dims(const H5S_t *ds, hsize_t dims[], hsize_t max_dims[])
Definition: H5S.c:1072
H5S_hyper_dim_t
struct H5S_hyper_dim_t H5S_hyper_dim_t
H5S_sel_type
H5S_sel_type
Definition: H5Spublic.h:83
H5S_select_is_contiguous
H5_DLL htri_t H5S_select_is_contiguous(const H5S_t *space)
Definition: H5Sselect.c:837
H5S_select_iter_release
H5_DLL herr_t H5S_select_iter_release(H5S_sel_iter_t *sel_iter)
Definition: H5Sselect.c:1496
H5S_select_release
H5_DLL herr_t H5S_select_release(H5S_t *ds)
Definition: H5Sselect.c:286
H5S_sel_iter_op_t::lib_op
H5S_sel_iter_lib_op_t lib_op
Definition: H5Sprivate.h:128
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5S_sel_iter_op_t::app_op
H5S_sel_iter_app_op_t app_op
Definition: H5Sprivate.h:127
H5S_sel_iter_app_op_t::type_id
hid_t type_id
Definition: H5Sprivate.h:121
H5S_point_iter_t
Definition: H5Sprivate.h:49
H5Tprivate.h
H5D_operator_t
herr_t(* H5D_operator_t)(void *elem, hid_t type_id, unsigned ndim, const hsize_t *point, void *operator_data)
Definition: H5Dpublic.h:108
H5S_get_select_type
H5_DLL H5S_sel_type H5S_get_select_type(const H5S_t *space)
Definition: H5Sselect.c:1745
H5S_select_project_scalar
H5_DLL herr_t H5S_select_project_scalar(const H5S_t *space, hsize_t *offset)
Definition: H5Sselect.c:1077
H5S_select_adjust_s
H5_DLL herr_t H5S_select_adjust_s(H5S_t *space, const hssize_t *offset)
Definition: H5Sselect.c:987
H5S_extent_get_dims
H5_DLL int H5S_extent_get_dims(const H5S_extent_t *ext, hsize_t dims[], hsize_t max_dims[])
Definition: H5S.c:1016
H5S_hyper_dim_t
Definition: H5Sprivate.h:41
H5S_close
H5_DLL herr_t H5S_close(H5S_t *ds)
Definition: H5S.c:456
H5S_sel_iter_t::elmt_left
hsize_t elmt_left
Definition: H5Sprivate.h:97
H5Dpublic.h
H5F_t
Definition: H5Fpkg.h:374
H5S_sel_iter_app_op_t
Definition: H5Sprivate.h:119
H5S_get_select_unlim_dim
H5_DLL int H5S_get_select_unlim_dim(const H5S_t *space)
Definition: H5Sselect.c:755
H5S_seloper_t
H5S_seloper_t
Definition: H5Spublic.h:44
H5S_hyper_add_span_element
H5_DLL herr_t H5S_hyper_add_span_element(H5S_t *space, unsigned rank, const hsize_t *coords)
Definition: H5Shyper.c:6100
H5S_select_fill
H5_DLL herr_t H5S_select_fill(const void *fill, size_t fill_size, const H5S_t *space, void *buf)
Definition: H5Sselect.c:2483
H5S_write
H5_DLL herr_t H5S_write(H5F_t *f, struct H5O_t *oh, unsigned update_flags, H5S_t *ds)
Definition: H5S.c:1104
H5S_select_serialize
H5_DLL herr_t H5S_select_serialize(const H5S_t *space, uint8_t **p)
Definition: H5Sselect.c:361
H5S_combine_hyperslab
H5_DLL 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)
Definition: H5Shyper.c:10235
herr_t
int herr_t
Definition: H5public.h:128
H5S_sel_iter_t
struct H5S_sel_iter_t H5S_sel_iter_t
H5S_select_iter_init
H5_DLL herr_t H5S_select_iter_init(H5S_sel_iter_t *iter, const H5S_t *space, size_t elmt_size, unsigned flags)
Definition: H5Sselect.c:1153
hbool_t
bool hbool_t
Definition: H5public.h:159
H5S_set_extent_real
H5_DLL herr_t H5S_set_extent_real(H5S_t *space, const hsize_t *size)
Definition: H5S.c:1955
H5S_hyper_span_t
Definition: H5Spkg.h:145
H5S_hyper_iter_t::iter_rank
unsigned iter_rank
Definition: H5Sprivate.h:59
H5S_read
H5_DLL H5S_t * H5S_read(const struct H5O_loc_t *loc)
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5S_point_iter_t::pnt_lst
H5S_pnt_list_t * pnt_lst
Definition: H5Sprivate.h:50
H5S_select_adjust_u
H5_DLL herr_t H5S_select_adjust_u(H5S_t *space, const hsize_t *offset)
Definition: H5Sselect.c:948
H5S_sel_iter_lib_op_t
herr_t(* H5S_sel_iter_lib_op_t)(void *elem, const H5T_t *type, unsigned ndim, const hsize_t *point, void *op_data)
Definition: H5Sprivate.h:110
H5S_set_extent
H5_DLL htri_t H5S_set_extent(H5S_t *space, const hsize_t *size)
Definition: H5S.c:1875
H5S_select_project_simple
H5_DLL herr_t H5S_select_project_simple(const H5S_t *space, H5S_t *new_space, hsize_t *offset)
Definition: H5Sselect.c:1117
H5S_get_npoints_max
H5_DLL hsize_t H5S_get_npoints_max(const H5S_t *ds)
Definition: H5S.c:840
H5S_select_iterate
H5_DLL herr_t H5S_select_iterate(void *buf, const H5T_t *type, const H5S_t *space, const H5S_sel_iter_op_t *op, void *op_data)
Definition: H5Sselect.c:1541
H5S_select_none
H5_DLL herr_t H5S_select_none(H5S_t *space)
Definition: H5Snone.c:1068
H5S_extent_nelem
H5_DLL hsize_t H5S_extent_nelem(const H5S_extent_t *ext)
Definition: H5S.c:2099
H5private.h
H5S_class_t
H5S_class_t
Definition: H5Spublic.h:36
H5S_hyper_dim_t::block
hsize_t block
Definition: H5Sprivate.h:45
H5S_get_select_offset
H5_DLL herr_t H5S_get_select_offset(const H5S_t *space, hsize_t *offset)
Definition: H5Sselect.c:716