1pub use self::H5D_alloc_time_t::*;
3pub use self::H5D_fill_time_t::*;
4pub use self::H5D_fill_value_t::*;
5pub use self::H5D_layout_t::*;
6pub use self::H5D_mpio_actual_chunk_opt_mode_t::*;
7pub use self::H5D_mpio_actual_io_mode_t::*;
8pub use self::H5D_mpio_no_collective_cause_t::*;
9pub use self::H5D_space_status_t::*;
10pub use {H5Dcreate2 as H5D_create, H5Dopen2 as H5Dopen};
11
12use crate::internal_prelude::*;
13
14pub const H5D_CHUNK_CACHE_NSLOTS_DEFAULT: size_t = !0;
15pub const H5D_CHUNK_CACHE_NBYTES_DEFAULT: size_t = !0;
16
17pub const H5D_CHUNK_CACHE_W0_DEFAULT: c_float = -1.0;
18
19#[cfg(not(feature = "1.10.0"))]
20#[repr(C)]
21#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
22pub enum H5D_layout_t {
23 H5D_LAYOUT_ERROR = -1,
24 H5D_COMPACT = 0,
25 H5D_CONTIGUOUS = 1,
26 H5D_CHUNKED = 2,
27 H5D_NLAYOUTS = 3,
28}
29
30impl Default for H5D_layout_t {
31 fn default() -> Self {
32 H5D_layout_t::H5D_CONTIGUOUS
33 }
34}
35
36pub type H5D_chunk_index_t = c_uint;
37
38pub const H5D_CHUNK_BTREE: H5D_chunk_index_t = 0;
39pub const H5D_CHUNK_IDX_BTREE: H5D_chunk_index_t = H5D_CHUNK_BTREE;
40
41#[repr(C)]
42#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
43pub enum H5D_alloc_time_t {
44 H5D_ALLOC_TIME_ERROR = -1,
45 H5D_ALLOC_TIME_DEFAULT = 0,
46 H5D_ALLOC_TIME_EARLY = 1,
47 H5D_ALLOC_TIME_LATE = 2,
48 H5D_ALLOC_TIME_INCR = 3,
49}
50
51impl Default for H5D_alloc_time_t {
52 fn default() -> Self {
53 H5D_alloc_time_t::H5D_ALLOC_TIME_DEFAULT
54 }
55}
56
57#[repr(C)]
58#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
59pub enum H5D_space_status_t {
60 H5D_SPACE_STATUS_ERROR = -1,
61 H5D_SPACE_STATUS_NOT_ALLOCATED = 0,
62 H5D_SPACE_STATUS_PART_ALLOCATED = 1,
63 H5D_SPACE_STATUS_ALLOCATED = 2,
64}
65
66#[repr(C)]
67#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
68pub enum H5D_fill_time_t {
69 H5D_FILL_TIME_ERROR = -1,
70 H5D_FILL_TIME_ALLOC = 0,
71 H5D_FILL_TIME_NEVER = 1,
72 H5D_FILL_TIME_IFSET = 2,
73}
74
75impl Default for H5D_fill_time_t {
76 fn default() -> Self {
77 H5D_fill_time_t::H5D_FILL_TIME_IFSET
78 }
79}
80
81#[repr(C)]
82#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
83pub enum H5D_fill_value_t {
84 H5D_FILL_VALUE_ERROR = -1,
85 H5D_FILL_VALUE_UNDEFINED = 0,
86 H5D_FILL_VALUE_DEFAULT = 1,
87 H5D_FILL_VALUE_USER_DEFINED = 2,
88}
89
90impl Default for H5D_fill_value_t {
91 fn default() -> Self {
92 H5D_fill_value_t::H5D_FILL_VALUE_DEFAULT
93 }
94}
95
96#[repr(C)]
97#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
98pub enum H5D_mpio_actual_chunk_opt_mode_t {
99 H5D_MPIO_NO_CHUNK_OPTIMIZATION = 0,
100 H5D_MPIO_LINK_CHUNK = 1,
101 H5D_MPIO_MULTI_CHUNK = 2,
102}
103
104#[repr(C)]
105#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
106pub enum H5D_mpio_actual_io_mode_t {
107 H5D_MPIO_NO_COLLECTIVE = 0,
108 H5D_MPIO_CHUNK_INDEPENDENT = 1,
109 H5D_MPIO_CHUNK_COLLECTIVE = 2,
110 H5D_MPIO_CHUNK_MIXED = 3,
111 H5D_MPIO_CONTIGUOUS_COLLECTIVE = 4,
112}
113
114#[repr(C)]
115#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
116pub enum H5D_mpio_no_collective_cause_t {
117 H5D_MPIO_COLLECTIVE = 0,
118 H5D_MPIO_SET_INDEPENDENT = 1,
119 H5D_MPIO_DATATYPE_CONVERSION = 2,
120 H5D_MPIO_DATA_TRANSFORMS = 4,
121 H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED = 8,
122 H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES = 16,
123 H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 32,
124 H5D_MPIO_FILTERS = 64,
125}
126
127pub type H5D_operator_t = Option<
128 extern "C" fn(
129 elem: *mut c_void,
130 type_id: hid_t,
131 ndim: c_uint,
132 point: *const hsize_t,
133 operator_data: *mut c_void,
134 ) -> herr_t,
135>;
136
137#[cfg(feature = "1.8.11")]
138pub type H5D_scatter_func_t = Option<
139 extern "C" fn(
140 src_buf: *mut *const c_void,
141 src_buf_bytes_used: *mut size_t,
142 op_data: *mut c_void,
143 ) -> herr_t,
144>;
145#[cfg(feature = "1.8.11")]
146pub type H5D_gather_func_t = Option<
147 extern "C" fn(
148 dst_buf: *const c_void,
149 dst_buf_bytes_used: size_t,
150 op_data: *mut c_void,
151 ) -> herr_t,
152>;
153
154extern "C" {
155 pub fn H5Dcreate2(
156 loc_id: hid_t, name: *const c_char, type_id: hid_t, space_id: hid_t, lcpl_id: hid_t,
157 dcpl_id: hid_t, dapl_id: hid_t,
158 ) -> hid_t;
159 pub fn H5Dcreate_anon(
160 file_id: hid_t, type_id: hid_t, space_id: hid_t, plist_id: hid_t, dapl_id: hid_t,
161 ) -> hid_t;
162 pub fn H5Dopen2(file_id: hid_t, name: *const c_char, dapl_id: hid_t) -> hid_t;
163 pub fn H5Dclose(dset_id: hid_t) -> herr_t;
164 pub fn H5Dget_space(dset_id: hid_t) -> hid_t;
165 pub fn H5Dget_space_status(dset_id: hid_t, allocation: *mut H5D_space_status_t) -> herr_t;
166 pub fn H5Dget_type(dset_id: hid_t) -> hid_t;
167 pub fn H5Dget_create_plist(dset_id: hid_t) -> hid_t;
168 pub fn H5Dget_access_plist(dset_id: hid_t) -> hid_t;
169 pub fn H5Dget_storage_size(dset_id: hid_t) -> hsize_t;
170 pub fn H5Dget_offset(dset_id: hid_t) -> haddr_t;
171 pub fn H5Dread(
172 dset_id: hid_t, mem_type_id: hid_t, mem_space_id: hid_t, file_space_id: hid_t,
173 plist_id: hid_t, buf: *mut c_void,
174 ) -> herr_t;
175 pub fn H5Dwrite(
176 dset_id: hid_t, mem_type_id: hid_t, mem_space_id: hid_t, file_space_id: hid_t,
177 plist_id: hid_t, buf: *const c_void,
178 ) -> herr_t;
179 pub fn H5Diterate(
180 buf: *mut c_void, type_id: hid_t, space_id: hid_t, op: H5D_operator_t,
181 operator_data: *mut c_void,
182 ) -> herr_t;
183 #[cfg_attr(feature = "1.12.0", deprecated(note = "deprecated in HDF5 1.12.0, use H5Treclaim"))]
184 pub fn H5Dvlen_reclaim(
185 type_id: hid_t, space_id: hid_t, plist_id: hid_t, buf: *mut c_void,
186 ) -> herr_t;
187 pub fn H5Dvlen_get_buf_size(
188 dataset_id: hid_t, type_id: hid_t, space_id: hid_t, size: *mut hsize_t,
189 ) -> herr_t;
190 pub fn H5Dfill(
191 fill: *const c_void, fill_type: hid_t, buf: *mut c_void, buf_type: hid_t, space: hid_t,
192 ) -> herr_t;
193 pub fn H5Dset_extent(dset_id: hid_t, size: *const hsize_t) -> herr_t;
194 pub fn H5Ddebug(dset_id: hid_t) -> herr_t;
195
196 #[deprecated(note = "deprecated in HDF5 1.8.0, use H5Dcreate2")]
197 pub fn H5Dcreate1(
198 file_id: hid_t, name: *const c_char, type_id: hid_t, space_id: hid_t, dcpl_id: hid_t,
199 ) -> hid_t;
200 #[deprecated(note = "deprecated in HDF5 1.8.0, use H5Dopen2")]
201 pub fn H5Dopen1(file_id: hid_t, name: *const c_char) -> hid_t;
202}
203
204#[cfg(feature = "1.8.11")]
205extern "C" {
206 pub fn H5Dscatter(
207 op: H5D_scatter_func_t, op_data: *mut c_void, type_id: hid_t, dst_space_id: hid_t,
208 dst_buf: *mut c_void,
209 ) -> herr_t;
210 pub fn H5Dgather(
211 src_space_id: hid_t, src_buf: *const c_void, type_id: hid_t, dst_buf_size: size_t,
212 dst_buf: *mut c_void, op: H5D_gather_func_t, op_data: *mut c_void,
213 ) -> herr_t;
214}
215
216#[cfg(feature = "1.10.0")]
217mod hdf5_1_10_0 {
218 use super::*;
219
220 #[repr(C)]
221 #[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
222 pub enum H5D_layout_t {
223 H5D_LAYOUT_ERROR = -1,
224 H5D_COMPACT = 0,
225 H5D_CONTIGUOUS = 1,
226 H5D_CHUNKED = 2,
227 H5D_VIRTUAL = 3,
228 H5D_NLAYOUTS = 4,
229 }
230
231 #[repr(C)]
232 #[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
233 pub enum H5D_vds_view_t {
234 H5D_VDS_ERROR = -1,
235 H5D_VDS_FIRST_MISSING = 0,
236 H5D_VDS_LAST_AVAILABLE = 1,
237 }
238
239 impl Default for H5D_vds_view_t {
240 fn default() -> Self {
241 H5D_vds_view_t::H5D_VDS_LAST_AVAILABLE
242 }
243 }
244
245 pub const H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS: c_uint = 0x0002;
246
247 pub type H5D_append_cb_t = Option<
248 unsafe extern "C" fn(
249 dataset_id: hid_t,
250 cur_dims: *mut hsize_t,
251 op_data: *mut c_void,
252 ) -> herr_t,
253 >;
254
255 extern "C" {
256 pub fn H5Dflush(dset_id: hid_t) -> herr_t;
257 pub fn H5Drefresh(dset_id: hid_t) -> herr_t;
258 pub fn H5Dformat_convert(dset_id: hid_t) -> herr_t;
259 pub fn H5Dget_chunk_index_type(did: hid_t, idx_type: *mut H5D_chunk_index_t) -> herr_t;
260 }
261}
262
263#[cfg(feature = "1.10.0")]
264pub use self::hdf5_1_10_0::*;
265
266#[cfg(feature = "1.10.3")]
267extern "C" {
268 pub fn H5Dread_chunk(
269 dset_id: hid_t, dxpl_id: hid_t, offset: *const hsize_t, filters: *mut u32, buf: *mut c_void,
270 ) -> herr_t;
271 pub fn H5Dwrite_chunk(
272 dset_id: hid_t, dxpl_id: hid_t, filters: u32, offset: *const hsize_t, data_size: size_t,
273 buf: *const c_void,
274 ) -> herr_t;
275}
276
277#[cfg(feature = "1.10.5")]
278extern "C" {
279 pub fn H5Dget_chunk_info(
280 dset_id: hid_t, fspace_id: hid_t, index: hsize_t, offset: *mut hsize_t,
281 filter_mask: *mut c_uint, addr: *mut haddr_t, size: *mut hsize_t,
282 ) -> herr_t;
283 pub fn H5Dget_chunk_info_by_coord(
284 dset_id: hid_t, offset: *const hsize_t, filter_mask: *mut c_uint, addr: *mut haddr_t,
285 size: *mut hsize_t,
286 ) -> herr_t;
287 pub fn H5Dget_num_chunks(dset_id: hid_t, fspace_id: hid_t, nchunks: *mut hsize_t) -> herr_t;
288}