1pub use self::H5S_class_t::*;
3pub use self::H5S_sel_type::*;
4pub use self::H5S_seloper_t::*;
5#[cfg(not(feature = "1.12.0"))]
6pub use self::H5Sencode1 as H5Sencode;
7#[cfg(feature = "1.12.0")]
8pub use self::H5Sencode2 as H5Sencode;
9
10use crate::internal_prelude::*;
11
12pub const H5S_ALL: hid_t = 0;
13
14pub const H5S_UNLIMITED: hsize_t = -1_i32 as _;
15
16pub const H5S_MAX_RANK: c_uint = 32;
17
18pub const H5S_SEL_ITER_GET_SEQ_LIST_SORTED: c_uint = 0x0001;
19pub const H5S_SEL_ITER_SHARE_WITH_DATASPACE: c_uint = 0x0002;
20
21#[repr(C)]
22#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
23pub enum H5S_class_t {
24 H5S_NO_CLASS = -1,
25 H5S_SCALAR = 0,
26 H5S_SIMPLE = 1,
27 H5S_NULL = 2,
28}
29
30#[repr(C)]
31#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
32pub enum H5S_seloper_t {
33 H5S_SELECT_NOOP = -1,
34 H5S_SELECT_SET = 0,
35 H5S_SELECT_OR = 1,
36 H5S_SELECT_AND = 2,
37 H5S_SELECT_XOR = 3,
38 H5S_SELECT_NOTB = 4,
39 H5S_SELECT_NOTA = 5,
40 H5S_SELECT_APPEND = 6,
41 H5S_SELECT_PREPEND = 7,
42 H5S_SELECT_INVALID = 8,
43}
44
45#[repr(C)]
46#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
47pub enum H5S_sel_type {
48 H5S_SEL_ERROR = -1,
49 H5S_SEL_NONE = 0,
50 H5S_SEL_POINTS = 1,
51 H5S_SEL_HYPERSLABS = 2,
52 H5S_SEL_ALL = 3,
53 H5S_SEL_N = 4,
54}
55
56extern "C" {
57 pub fn H5Screate(type_: H5S_class_t) -> hid_t;
58 pub fn H5Screate_simple(rank: c_int, dims: *const hsize_t, maxdims: *const hsize_t) -> hid_t;
59 pub fn H5Sset_extent_simple(
60 space_id: hid_t, rank: c_int, dims: *const hsize_t, max: *const hsize_t,
61 ) -> herr_t;
62 pub fn H5Scopy(space_id: hid_t) -> hid_t;
63 pub fn H5Sclose(space_id: hid_t) -> herr_t;
64 #[cfg_attr(
65 feature = "1.12.0",
66 deprecated(note = "deprecated in HDF5 1.12.0, use H5Sencode2()")
67 )]
68 #[cfg_attr(not(feature = "1.12.0"), link_name = "H5Sencode")]
69 pub fn H5Sencode1(obj_id: hid_t, buf: *mut c_void, nalloc: *mut size_t) -> herr_t;
70 #[cfg(feature = "1.12.0")]
71 pub fn H5Sencode2(
72 obj_id: hid_t, buf: *mut c_void, nalloc: *mut size_t, fapl_id: hid_t,
73 ) -> herr_t;
74 pub fn H5Sdecode(buf: *const c_void) -> hid_t;
75 pub fn H5Sget_simple_extent_npoints(space_id: hid_t) -> hssize_t;
76 pub fn H5Sget_simple_extent_ndims(space_id: hid_t) -> c_int;
77 pub fn H5Sget_simple_extent_dims(
78 space_id: hid_t, dims: *mut hsize_t, maxdims: *mut hsize_t,
79 ) -> c_int;
80 pub fn H5Sis_simple(space_id: hid_t) -> htri_t;
81 pub fn H5Sget_select_npoints(spaceid: hid_t) -> hssize_t;
82 pub fn H5Sselect_hyperslab(
83 space_id: hid_t, op: H5S_seloper_t, start: *const hsize_t, _stride: *const hsize_t,
84 count: *const hsize_t, _block: *const hsize_t,
85 ) -> herr_t;
86 pub fn H5Sselect_elements(
87 space_id: hid_t, op: H5S_seloper_t, num_elem: size_t, coord: *const hsize_t,
88 ) -> herr_t;
89 pub fn H5Sget_simple_extent_type(space_id: hid_t) -> H5S_class_t;
90 pub fn H5Sset_extent_none(space_id: hid_t) -> herr_t;
91 pub fn H5Sextent_copy(dst_id: hid_t, src_id: hid_t) -> herr_t;
92 pub fn H5Sextent_equal(sid1: hid_t, sid2: hid_t) -> htri_t;
93 pub fn H5Sselect_all(spaceid: hid_t) -> herr_t;
94 pub fn H5Sselect_none(spaceid: hid_t) -> herr_t;
95 pub fn H5Soffset_simple(space_id: hid_t, offset: *const hssize_t) -> herr_t;
96 pub fn H5Sselect_valid(spaceid: hid_t) -> htri_t;
97 pub fn H5Sget_select_hyper_nblocks(spaceid: hid_t) -> hssize_t;
98 pub fn H5Sget_select_elem_npoints(spaceid: hid_t) -> hssize_t;
99 pub fn H5Sget_select_hyper_blocklist(
100 spaceid: hid_t, startblock: hsize_t, numblocks: hsize_t, buf: *mut hsize_t,
101 ) -> herr_t;
102 pub fn H5Sget_select_elem_pointlist(
103 spaceid: hid_t, startpoint: hsize_t, numpoints: hsize_t, buf: *mut hsize_t,
104 ) -> herr_t;
105 pub fn H5Sget_select_bounds(spaceid: hid_t, start: *mut hsize_t, end: *mut hsize_t) -> herr_t;
106 pub fn H5Sget_select_type(spaceid: hid_t) -> H5S_sel_type;
107}
108
109#[cfg(feature = "1.10.0")]
110extern "C" {
111 pub fn H5Sis_regular_hyperslab(spaceid: hid_t) -> htri_t;
112 pub fn H5Sget_regular_hyperslab(
113 spaceid: hid_t, start: *mut hsize_t, stride: *mut hsize_t, count: *mut hsize_t,
114 block: *mut hsize_t,
115 ) -> htri_t;
116}
117
118#[cfg(any(feature = "1.12.0", feature = "1.10.7"))]
119extern "C" {
120 pub fn H5Scombine_hyperslab(
121 space_id: hid_t, op: H5S_seloper_t, start: *const hsize_t, stride: *const hsize_t,
122 count: *const hsize_t, block: *const hsize_t,
123 ) -> hid_t;
124 pub fn H5Scombine_select(space1_id: hid_t, op: H5S_seloper_t, space2_id: hid_t) -> hid_t;
125 pub fn H5Smodify_select(space1_id: hid_t, op: H5S_seloper_t, space2_id: hid_t) -> herr_t;
126 pub fn H5Sselect_adjust(space_id: hid_t, offset: *const hssize_t) -> herr_t;
127 pub fn H5Sselect_copy(dst_id: hid_t, src_id: hid_t) -> herr_t;
128 pub fn H5Sselect_intersect_block(
129 space_id: hid_t, start: *const hsize_t, end: *const hsize_t,
130 ) -> htri_t;
131 pub fn H5Sselect_project_intersection(
132 src_space_id: hid_t, dst_space_id: hid_t, src_intersect_space_id: hid_t,
133 ) -> hid_t;
134 pub fn H5Sselect_shape_same(space1_id: hid_t, space2_id: hid_t) -> htri_t;
135}
136
137#[cfg(feature = "1.12.0")]
138extern "C" {
139 pub fn H5Ssel_iter_close(sel_iter_id: hid_t) -> herr_t;
140 pub fn H5Ssel_iter_create(space_id: hid_t, elmt_size: size_t, flags: c_uint) -> hid_t;
141 pub fn H5Ssel_iter_get_seq_list(
142 sel_iter_id: hid_t, maxseq: size_t, maxbytes: size_t, nseq: *mut size_t,
143 nbytes: *mut size_t, off: *mut hsize_t, len: *mut size_t,
144 ) -> herr_t;
145}
146
147#[cfg(feature = "1.12.1")]
148extern "C" {
149 pub fn H5Ssel_iter_reset(sel_iter_id: hid_t, space_id: hid_t) -> hid_t;
150}