hdf5_sys/
h5t.rs

1//! Creating and manipulating datatypes which describe elements of a dataset
2use std::mem;
3
4pub use self::H5T_bkg_t::*;
5pub use self::H5T_class_t::*;
6pub use self::H5T_cmd_t::*;
7pub use self::H5T_conv_except_t::*;
8pub use self::H5T_conv_ret_t::*;
9pub use self::H5T_cset_t::*;
10pub use self::H5T_direction_t::*;
11pub use self::H5T_norm_t::*;
12pub use self::H5T_order_t::*;
13pub use self::H5T_pad_t::*;
14pub use self::H5T_pers_t::*;
15pub use self::H5T_sign_t::*;
16pub use self::H5T_str_t::*;
17pub use {
18    H5Tarray_create2 as H5Tarray_create, H5Tcommit2 as H5Tcommit,
19    H5Tget_array_dims2 as H5Tget_array_dims, H5Topen2 as H5Topen,
20};
21
22use crate::internal_prelude::*;
23
24#[repr(C)]
25#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
26pub enum H5T_class_t {
27    H5T_NO_CLASS = -1,
28    H5T_INTEGER = 0,
29    H5T_FLOAT = 1,
30    H5T_TIME = 2,
31    H5T_STRING = 3,
32    H5T_BITFIELD = 4,
33    H5T_OPAQUE = 5,
34    H5T_COMPOUND = 6,
35    H5T_REFERENCE = 7,
36    H5T_ENUM = 8,
37    H5T_VLEN = 9,
38    H5T_ARRAY = 10,
39    H5T_NCLASSES = 11,
40}
41
42#[cfg(feature = "1.8.6")]
43#[repr(C)]
44#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
45pub enum H5T_order_t {
46    H5T_ORDER_ERROR = -1,
47    H5T_ORDER_LE = 0,
48    H5T_ORDER_BE = 1,
49    H5T_ORDER_VAX = 2,
50    H5T_ORDER_MIXED = 3,
51    H5T_ORDER_NONE = 4,
52}
53
54#[cfg(not(feature = "1.8.6"))]
55#[repr(C)]
56#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
57pub enum H5T_order_t {
58    H5T_ORDER_ERROR = -1,
59    H5T_ORDER_LE = 0,
60    H5T_ORDER_BE = 1,
61    H5T_ORDER_VAX = 2,
62    H5T_ORDER_NONE = 3,
63}
64
65#[repr(C)]
66#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
67pub enum H5T_sign_t {
68    H5T_SGN_ERROR = -1,
69    H5T_SGN_NONE = 0,
70    H5T_SGN_2 = 1,
71    H5T_NSGN = 2,
72}
73
74#[repr(C)]
75#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
76pub enum H5T_norm_t {
77    H5T_NORM_ERROR = -1,
78    H5T_NORM_IMPLIED = 0,
79    H5T_NORM_MSBSET = 1,
80    H5T_NORM_NONE = 2,
81}
82
83#[repr(C)]
84#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
85pub enum H5T_cset_t {
86    H5T_CSET_ERROR = -1,
87    H5T_CSET_ASCII = 0,
88    H5T_CSET_UTF8 = 1,
89    H5T_CSET_RESERVED_2 = 2,
90    H5T_CSET_RESERVED_3 = 3,
91    H5T_CSET_RESERVED_4 = 4,
92    H5T_CSET_RESERVED_5 = 5,
93    H5T_CSET_RESERVED_6 = 6,
94    H5T_CSET_RESERVED_7 = 7,
95    H5T_CSET_RESERVED_8 = 8,
96    H5T_CSET_RESERVED_9 = 9,
97    H5T_CSET_RESERVED_10 = 10,
98    H5T_CSET_RESERVED_11 = 11,
99    H5T_CSET_RESERVED_12 = 12,
100    H5T_CSET_RESERVED_13 = 13,
101    H5T_CSET_RESERVED_14 = 14,
102    H5T_CSET_RESERVED_15 = 15,
103}
104
105impl Default for H5T_cset_t {
106    fn default() -> Self {
107        H5T_cset_t::H5T_CSET_ASCII
108    }
109}
110
111pub const H5T_NCSET: H5T_cset_t = H5T_CSET_RESERVED_2;
112
113#[repr(C)]
114#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
115pub enum H5T_str_t {
116    H5T_STR_ERROR = -1,
117    H5T_STR_NULLTERM = 0,
118    H5T_STR_NULLPAD = 1,
119    H5T_STR_SPACEPAD = 2,
120    H5T_STR_RESERVED_3 = 3,
121    H5T_STR_RESERVED_4 = 4,
122    H5T_STR_RESERVED_5 = 5,
123    H5T_STR_RESERVED_6 = 6,
124    H5T_STR_RESERVED_7 = 7,
125    H5T_STR_RESERVED_8 = 8,
126    H5T_STR_RESERVED_9 = 9,
127    H5T_STR_RESERVED_10 = 10,
128    H5T_STR_RESERVED_11 = 11,
129    H5T_STR_RESERVED_12 = 12,
130    H5T_STR_RESERVED_13 = 13,
131    H5T_STR_RESERVED_14 = 14,
132    H5T_STR_RESERVED_15 = 15,
133}
134
135pub const H5T_NSTR: H5T_str_t = H5T_STR_RESERVED_3;
136
137#[repr(C)]
138#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
139pub enum H5T_pad_t {
140    H5T_PAD_ERROR = -1,
141    H5T_PAD_ZERO = 0,
142    H5T_PAD_ONE = 1,
143    H5T_PAD_BACKGROUND = 2,
144    H5T_NPAD = 3,
145}
146
147#[repr(C)]
148#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
149pub enum H5T_cmd_t {
150    H5T_CONV_INIT = 0,
151    H5T_CONV_CONV = 1,
152    H5T_CONV_FREE = 2,
153}
154
155#[repr(C)]
156#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
157pub enum H5T_bkg_t {
158    H5T_BKG_NO = 0,
159    H5T_BKG_TEMP = 1,
160    H5T_BKG_YES = 2,
161}
162
163#[repr(C)]
164#[derive(Debug, Copy, Clone)]
165pub struct H5T_cdata_t {
166    pub command: H5T_cmd_t,
167    pub need_bkg: H5T_bkg_t,
168    pub recalc: hbool_t,
169    pub _priv: *mut c_void,
170}
171
172impl Default for H5T_cdata_t {
173    fn default() -> Self {
174        unsafe { mem::zeroed() }
175    }
176}
177
178#[repr(C)]
179#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
180pub enum H5T_pers_t {
181    H5T_PERS_DONTCARE = -1,
182    H5T_PERS_HARD = 0,
183    H5T_PERS_SOFT = 1,
184}
185
186#[repr(C)]
187#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
188pub enum H5T_direction_t {
189    H5T_DIR_DEFAULT = 0,
190    H5T_DIR_ASCEND = 1,
191    H5T_DIR_DESCEND = 2,
192}
193
194#[repr(C)]
195#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
196pub enum H5T_conv_except_t {
197    H5T_CONV_EXCEPT_RANGE_HI = 0,
198    H5T_CONV_EXCEPT_RANGE_LOW = 1,
199    H5T_CONV_EXCEPT_PRECISION = 2,
200    H5T_CONV_EXCEPT_TRUNCATE = 3,
201    H5T_CONV_EXCEPT_PINF = 4,
202    H5T_CONV_EXCEPT_NINF = 5,
203    H5T_CONV_EXCEPT_NAN = 6,
204}
205
206#[repr(C)]
207#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
208pub enum H5T_conv_ret_t {
209    H5T_CONV_ABORT = -1,
210    H5T_CONV_UNHANDLED = 0,
211    H5T_CONV_HANDLED = 1,
212}
213
214#[repr(C)]
215#[derive(Debug, Copy, Clone)]
216pub struct hvl_t {
217    pub len: size_t,
218    pub p: *mut c_void,
219}
220
221impl Default for hvl_t {
222    fn default() -> Self {
223        unsafe { mem::zeroed() }
224    }
225}
226
227pub const H5T_VARIABLE: size_t = !0;
228
229pub const H5T_OPAQUE_TAG_MAX: c_uint = 256;
230
231pub type H5T_conv_t = Option<
232    extern "C" fn(
233        src_id: hid_t,
234        dst_id: hid_t,
235        cdata: *mut H5T_cdata_t,
236        nelmts: size_t,
237        buf_stride: size_t,
238        bkg_stride: size_t,
239        buf: *mut c_void,
240        bkg: *mut c_void,
241        dset_xfer_plist: hid_t,
242    ) -> herr_t,
243>;
244pub type H5T_conv_except_func_t = Option<
245    extern "C" fn(
246        except_type: H5T_conv_except_t,
247        src_id: hid_t,
248        dst_id: hid_t,
249        src_buf: *mut c_void,
250        dst_buf: *mut c_void,
251        user_data: *mut c_void,
252    ) -> H5T_conv_ret_t,
253>;
254
255extern "C" {
256    pub fn H5Tcreate(type_: H5T_class_t, size: size_t) -> hid_t;
257    pub fn H5Tcopy(type_id: hid_t) -> hid_t;
258    pub fn H5Tclose(type_id: hid_t) -> herr_t;
259    pub fn H5Tequal(type1_id: hid_t, type2_id: hid_t) -> htri_t;
260    pub fn H5Tlock(type_id: hid_t) -> herr_t;
261    pub fn H5Tcommit2(
262        loc_id: hid_t, name: *const c_char, type_id: hid_t, lcpl_id: hid_t, tcpl_id: hid_t,
263        tapl_id: hid_t,
264    ) -> herr_t;
265    pub fn H5Topen2(loc_id: hid_t, name: *const c_char, tapl_id: hid_t) -> hid_t;
266    pub fn H5Tcommit_anon(loc_id: hid_t, type_id: hid_t, tcpl_id: hid_t, tapl_id: hid_t) -> herr_t;
267    pub fn H5Tget_create_plist(type_id: hid_t) -> hid_t;
268    pub fn H5Tcommitted(type_id: hid_t) -> htri_t;
269    pub fn H5Tencode(obj_id: hid_t, buf: *mut c_void, nalloc: *mut size_t) -> herr_t;
270    pub fn H5Tdecode(buf: *const c_void) -> hid_t;
271    pub fn H5Tinsert(
272        parent_id: hid_t, name: *const c_char, offset: size_t, member_id: hid_t,
273    ) -> herr_t;
274    pub fn H5Tpack(type_id: hid_t) -> herr_t;
275    pub fn H5Tenum_create(base_id: hid_t) -> hid_t;
276    pub fn H5Tenum_insert(type_: hid_t, name: *const c_char, value: *const c_void) -> herr_t;
277    pub fn H5Tenum_nameof(
278        type_: hid_t, value: *const c_void, name: *mut c_char, size: size_t,
279    ) -> herr_t;
280    pub fn H5Tenum_valueof(type_: hid_t, name: *const c_char, value: *mut c_void) -> herr_t;
281    pub fn H5Tvlen_create(base_id: hid_t) -> hid_t;
282    pub fn H5Tarray_create2(base_id: hid_t, ndims: c_uint, dim: *const hsize_t) -> hid_t;
283    pub fn H5Tget_array_ndims(type_id: hid_t) -> c_int;
284    pub fn H5Tget_array_dims2(type_id: hid_t, dims: *mut hsize_t) -> c_int;
285    pub fn H5Tset_tag(type_: hid_t, tag: *const c_char) -> herr_t;
286    pub fn H5Tget_tag(type_: hid_t) -> *mut c_char;
287    pub fn H5Tget_super(type_: hid_t) -> hid_t;
288    pub fn H5Tget_class(type_id: hid_t) -> H5T_class_t;
289    pub fn H5Tdetect_class(type_id: hid_t, cls: H5T_class_t) -> htri_t;
290    pub fn H5Tget_size(type_id: hid_t) -> size_t;
291    pub fn H5Tget_order(type_id: hid_t) -> H5T_order_t;
292    pub fn H5Tget_precision(type_id: hid_t) -> size_t;
293    pub fn H5Tget_offset(type_id: hid_t) -> c_int;
294    pub fn H5Tget_pad(type_id: hid_t, lsb: *mut H5T_pad_t, msb: *mut H5T_pad_t) -> herr_t;
295    pub fn H5Tget_sign(type_id: hid_t) -> H5T_sign_t;
296    pub fn H5Tget_fields(
297        type_id: hid_t, spos: *mut size_t, epos: *mut size_t, esize: *mut size_t,
298        mpos: *mut size_t, msize: *mut size_t,
299    ) -> herr_t;
300    pub fn H5Tget_ebias(type_id: hid_t) -> size_t;
301    pub fn H5Tget_norm(type_id: hid_t) -> H5T_norm_t;
302    pub fn H5Tget_inpad(type_id: hid_t) -> H5T_pad_t;
303    pub fn H5Tget_strpad(type_id: hid_t) -> H5T_str_t;
304    pub fn H5Tget_nmembers(type_id: hid_t) -> c_int;
305    pub fn H5Tget_member_name(type_id: hid_t, membno: c_uint) -> *mut c_char;
306    pub fn H5Tget_member_index(type_id: hid_t, name: *const c_char) -> c_int;
307    pub fn H5Tget_member_offset(type_id: hid_t, membno: c_uint) -> size_t;
308    pub fn H5Tget_member_class(type_id: hid_t, membno: c_uint) -> H5T_class_t;
309    pub fn H5Tget_member_type(type_id: hid_t, membno: c_uint) -> hid_t;
310    pub fn H5Tget_member_value(type_id: hid_t, membno: c_uint, value: *mut c_void) -> herr_t;
311    pub fn H5Tget_cset(type_id: hid_t) -> H5T_cset_t;
312    pub fn H5Tis_variable_str(type_id: hid_t) -> htri_t;
313    pub fn H5Tget_native_type(type_id: hid_t, direction: H5T_direction_t) -> hid_t;
314    pub fn H5Tset_size(type_id: hid_t, size: size_t) -> herr_t;
315    pub fn H5Tset_order(type_id: hid_t, order: H5T_order_t) -> herr_t;
316    pub fn H5Tset_precision(type_id: hid_t, prec: size_t) -> herr_t;
317    pub fn H5Tset_offset(type_id: hid_t, offset: size_t) -> herr_t;
318    pub fn H5Tset_pad(type_id: hid_t, lsb: H5T_pad_t, msb: H5T_pad_t) -> herr_t;
319    pub fn H5Tset_sign(type_id: hid_t, sign: H5T_sign_t) -> herr_t;
320    pub fn H5Tset_fields(
321        type_id: hid_t, spos: size_t, epos: size_t, esize: size_t, mpos: size_t, msize: size_t,
322    ) -> herr_t;
323    pub fn H5Tset_ebias(type_id: hid_t, ebias: size_t) -> herr_t;
324    pub fn H5Tset_norm(type_id: hid_t, norm: H5T_norm_t) -> herr_t;
325    pub fn H5Tset_inpad(type_id: hid_t, pad: H5T_pad_t) -> herr_t;
326    pub fn H5Tset_cset(type_id: hid_t, cset: H5T_cset_t) -> herr_t;
327    pub fn H5Tset_strpad(type_id: hid_t, strpad: H5T_str_t) -> herr_t;
328    pub fn H5Tregister(
329        pers: H5T_pers_t, name: *const c_char, src_id: hid_t, dst_id: hid_t, func: H5T_conv_t,
330    ) -> herr_t;
331    pub fn H5Tunregister(
332        pers: H5T_pers_t, name: *const c_char, src_id: hid_t, dst_id: hid_t, func: H5T_conv_t,
333    ) -> herr_t;
334    pub fn H5Tfind(src_id: hid_t, dst_id: hid_t, pcdata: *mut *mut H5T_cdata_t) -> H5T_conv_t;
335    pub fn H5Tcompiler_conv(src_id: hid_t, dst_id: hid_t) -> htri_t;
336    pub fn H5Tconvert(
337        src_id: hid_t, dst_id: hid_t, nelmts: size_t, buf: *mut c_void, background: *mut c_void,
338        plist_id: hid_t,
339    ) -> herr_t;
340    #[deprecated(note = "deprecated since HDF5 1.8.0, use H5Tcommit2")]
341    pub fn H5Tcommit1(loc_id: hid_t, name: *const c_char, type_id: hid_t) -> herr_t;
342    #[deprecated(note = "deprecated since HDF5 1.8.0, use H5Tcommit2")]
343    pub fn H5Topen1(loc_id: hid_t, name: *const c_char) -> hid_t;
344    #[deprecated(note = "deprecated since HDF5 1.8.0, use H5Tarray_create2")]
345    pub fn H5Tarray_create1(
346        base_id: hid_t, ndims: c_int, dim: *const hsize_t, perm: *const c_int,
347    ) -> hid_t;
348    #[deprecated(note = "deprecated since HDF5 1.8.0, use H5Tget_array_dims2")]
349    pub fn H5Tget_array_dims1(type_id: hid_t, dims: *mut hsize_t, perm: *mut c_int) -> c_int;
350}
351
352pub use self::globals::*;
353
354#[cfg(not(all(target_env = "msvc", not(feature = "static"))))]
355mod globals {
356    pub use crate::h5i::hid_t as id_t;
357
358    // Datatypes
359    extern_static!(H5T_IEEE_F32BE, H5T_IEEE_F32BE_g);
360    extern_static!(H5T_IEEE_F32LE, H5T_IEEE_F32LE_g);
361    extern_static!(H5T_IEEE_F64BE, H5T_IEEE_F64BE_g);
362    extern_static!(H5T_IEEE_F64LE, H5T_IEEE_F64LE_g);
363    extern_static!(H5T_STD_I8BE, H5T_STD_I8BE_g);
364    extern_static!(H5T_STD_I8LE, H5T_STD_I8LE_g);
365    extern_static!(H5T_STD_I16BE, H5T_STD_I16BE_g);
366    extern_static!(H5T_STD_I16LE, H5T_STD_I16LE_g);
367    extern_static!(H5T_STD_I32BE, H5T_STD_I32BE_g);
368    extern_static!(H5T_STD_I32LE, H5T_STD_I32LE_g);
369    extern_static!(H5T_STD_I64BE, H5T_STD_I64BE_g);
370    extern_static!(H5T_STD_I64LE, H5T_STD_I64LE_g);
371    extern_static!(H5T_STD_U8BE, H5T_STD_U8BE_g);
372    extern_static!(H5T_STD_U8LE, H5T_STD_U8LE_g);
373    extern_static!(H5T_STD_U16BE, H5T_STD_U16BE_g);
374    extern_static!(H5T_STD_U16LE, H5T_STD_U16LE_g);
375    extern_static!(H5T_STD_U32BE, H5T_STD_U32BE_g);
376    extern_static!(H5T_STD_U32LE, H5T_STD_U32LE_g);
377    extern_static!(H5T_STD_U64BE, H5T_STD_U64BE_g);
378    extern_static!(H5T_STD_U64LE, H5T_STD_U64LE_g);
379    extern_static!(H5T_STD_B8BE, H5T_STD_B8BE_g);
380    extern_static!(H5T_STD_B8LE, H5T_STD_B8LE_g);
381    extern_static!(H5T_STD_B16BE, H5T_STD_B16BE_g);
382    extern_static!(H5T_STD_B16LE, H5T_STD_B16LE_g);
383    extern_static!(H5T_STD_B32BE, H5T_STD_B32BE_g);
384    extern_static!(H5T_STD_B32LE, H5T_STD_B32LE_g);
385    extern_static!(H5T_STD_B64BE, H5T_STD_B64BE_g);
386    extern_static!(H5T_STD_B64LE, H5T_STD_B64LE_g);
387    extern_static!(H5T_STD_REF_OBJ, H5T_STD_REF_OBJ_g);
388    extern_static!(H5T_STD_REF_DSETREG, H5T_STD_REF_DSETREG_g);
389    extern_static!(H5T_UNIX_D32BE, H5T_UNIX_D32BE_g);
390    extern_static!(H5T_UNIX_D32LE, H5T_UNIX_D32LE_g);
391    extern_static!(H5T_UNIX_D64BE, H5T_UNIX_D64BE_g);
392    extern_static!(H5T_UNIX_D64LE, H5T_UNIX_D64LE_g);
393    extern_static!(H5T_C_S1, H5T_C_S1_g);
394    extern_static!(H5T_FORTRAN_S1, H5T_FORTRAN_S1_g);
395    extern_static!(H5T_VAX_F32, H5T_VAX_F32_g);
396    extern_static!(H5T_VAX_F64, H5T_VAX_F64_g);
397    extern_static!(H5T_NATIVE_SCHAR, H5T_NATIVE_SCHAR_g);
398    extern_static!(H5T_NATIVE_UCHAR, H5T_NATIVE_UCHAR_g);
399    extern_static!(H5T_NATIVE_SHORT, H5T_NATIVE_SHORT_g);
400    extern_static!(H5T_NATIVE_USHORT, H5T_NATIVE_USHORT_g);
401    extern_static!(H5T_NATIVE_INT, H5T_NATIVE_INT_g);
402    extern_static!(H5T_NATIVE_UINT, H5T_NATIVE_UINT_g);
403    extern_static!(H5T_NATIVE_LONG, H5T_NATIVE_LONG_g);
404    extern_static!(H5T_NATIVE_ULONG, H5T_NATIVE_ULONG_g);
405    extern_static!(H5T_NATIVE_LLONG, H5T_NATIVE_LLONG_g);
406    extern_static!(H5T_NATIVE_ULLONG, H5T_NATIVE_ULLONG_g);
407    extern_static!(H5T_NATIVE_FLOAT, H5T_NATIVE_FLOAT_g);
408    extern_static!(H5T_NATIVE_DOUBLE, H5T_NATIVE_DOUBLE_g);
409    extern_static!(H5T_NATIVE_LDOUBLE, H5T_NATIVE_LDOUBLE_g);
410    extern_static!(H5T_NATIVE_B8, H5T_NATIVE_B8_g);
411    extern_static!(H5T_NATIVE_B16, H5T_NATIVE_B16_g);
412    extern_static!(H5T_NATIVE_B32, H5T_NATIVE_B32_g);
413    extern_static!(H5T_NATIVE_B64, H5T_NATIVE_B64_g);
414    extern_static!(H5T_NATIVE_OPAQUE, H5T_NATIVE_OPAQUE_g);
415    extern_static!(H5T_NATIVE_HADDR, H5T_NATIVE_HADDR_g);
416    extern_static!(H5T_NATIVE_HSIZE, H5T_NATIVE_HSIZE_g);
417    extern_static!(H5T_NATIVE_HSSIZE, H5T_NATIVE_HSSIZE_g);
418    extern_static!(H5T_NATIVE_HERR, H5T_NATIVE_HERR_g);
419    extern_static!(H5T_NATIVE_HBOOL, H5T_NATIVE_HBOOL_g);
420    extern_static!(H5T_NATIVE_INT8, H5T_NATIVE_INT8_g);
421    extern_static!(H5T_NATIVE_UINT8, H5T_NATIVE_UINT8_g);
422    extern_static!(H5T_NATIVE_INT_LEAST8, H5T_NATIVE_INT_LEAST8_g);
423    extern_static!(H5T_NATIVE_UINT_LEAST8, H5T_NATIVE_UINT_LEAST8_g);
424    extern_static!(H5T_NATIVE_INT_FAST8, H5T_NATIVE_INT_FAST8_g);
425    extern_static!(H5T_NATIVE_UINT_FAST8, H5T_NATIVE_UINT_FAST8_g);
426    extern_static!(H5T_NATIVE_INT16, H5T_NATIVE_INT16_g);
427    extern_static!(H5T_NATIVE_UINT16, H5T_NATIVE_UINT16_g);
428    extern_static!(H5T_NATIVE_INT_LEAST16, H5T_NATIVE_INT_LEAST16_g);
429    extern_static!(H5T_NATIVE_UINT_LEAST16, H5T_NATIVE_UINT_LEAST16_g);
430    extern_static!(H5T_NATIVE_INT_FAST16, H5T_NATIVE_INT_FAST16_g);
431    extern_static!(H5T_NATIVE_UINT_FAST16, H5T_NATIVE_UINT_FAST16_g);
432    extern_static!(H5T_NATIVE_INT32, H5T_NATIVE_INT32_g);
433    extern_static!(H5T_NATIVE_UINT32, H5T_NATIVE_UINT32_g);
434    extern_static!(H5T_NATIVE_INT_LEAST32, H5T_NATIVE_INT_LEAST32_g);
435    extern_static!(H5T_NATIVE_UINT_LEAST32, H5T_NATIVE_UINT_LEAST32_g);
436    extern_static!(H5T_NATIVE_INT_FAST32, H5T_NATIVE_INT_FAST32_g);
437    extern_static!(H5T_NATIVE_UINT_FAST32, H5T_NATIVE_UINT_FAST32_g);
438    extern_static!(H5T_NATIVE_INT64, H5T_NATIVE_INT64_g);
439    extern_static!(H5T_NATIVE_UINT64, H5T_NATIVE_UINT64_g);
440    extern_static!(H5T_NATIVE_INT_LEAST64, H5T_NATIVE_INT_LEAST64_g);
441    extern_static!(H5T_NATIVE_UINT_LEAST64, H5T_NATIVE_UINT_LEAST64_g);
442    extern_static!(H5T_NATIVE_INT_FAST64, H5T_NATIVE_INT_FAST64_g);
443    extern_static!(H5T_NATIVE_UINT_FAST64, H5T_NATIVE_UINT_FAST64_g);
444    #[cfg(feature = "1.12.0")]
445    extern_static!(H5T_STD_REF, H5T_STD_REF_g);
446}
447
448#[cfg(all(target_env = "msvc", not(feature = "static")))]
449mod globals {
450    // dllimport hack
451    pub type id_t = usize;
452
453    // Datatypes
454    extern_static!(H5T_IEEE_F32BE, __imp_H5T_IEEE_F32BE_g);
455    extern_static!(H5T_IEEE_F32LE, __imp_H5T_IEEE_F32LE_g);
456    extern_static!(H5T_IEEE_F64BE, __imp_H5T_IEEE_F64BE_g);
457    extern_static!(H5T_IEEE_F64LE, __imp_H5T_IEEE_F64LE_g);
458    extern_static!(H5T_STD_I8BE, __imp_H5T_STD_I8BE_g);
459    extern_static!(H5T_STD_I8LE, __imp_H5T_STD_I8LE_g);
460    extern_static!(H5T_STD_I16BE, __imp_H5T_STD_I16BE_g);
461    extern_static!(H5T_STD_I16LE, __imp_H5T_STD_I16LE_g);
462    extern_static!(H5T_STD_I32BE, __imp_H5T_STD_I32BE_g);
463    extern_static!(H5T_STD_I32LE, __imp_H5T_STD_I32LE_g);
464    extern_static!(H5T_STD_I64BE, __imp_H5T_STD_I64BE_g);
465    extern_static!(H5T_STD_I64LE, __imp_H5T_STD_I64LE_g);
466    extern_static!(H5T_STD_U8BE, __imp_H5T_STD_U8BE_g);
467    extern_static!(H5T_STD_U8LE, __imp_H5T_STD_U8LE_g);
468    extern_static!(H5T_STD_U16BE, __imp_H5T_STD_U16BE_g);
469    extern_static!(H5T_STD_U16LE, __imp_H5T_STD_U16LE_g);
470    extern_static!(H5T_STD_U32BE, __imp_H5T_STD_U32BE_g);
471    extern_static!(H5T_STD_U32LE, __imp_H5T_STD_U32LE_g);
472    extern_static!(H5T_STD_U64BE, __imp_H5T_STD_U64BE_g);
473    extern_static!(H5T_STD_U64LE, __imp_H5T_STD_U64LE_g);
474    extern_static!(H5T_STD_B8BE, __imp_H5T_STD_B8BE_g);
475    extern_static!(H5T_STD_B8LE, __imp_H5T_STD_B8LE_g);
476    extern_static!(H5T_STD_B16BE, __imp_H5T_STD_B16BE_g);
477    extern_static!(H5T_STD_B16LE, __imp_H5T_STD_B16LE_g);
478    extern_static!(H5T_STD_B32BE, __imp_H5T_STD_B32BE_g);
479    extern_static!(H5T_STD_B32LE, __imp_H5T_STD_B32LE_g);
480    extern_static!(H5T_STD_B64BE, __imp_H5T_STD_B64BE_g);
481    extern_static!(H5T_STD_B64LE, __imp_H5T_STD_B64LE_g);
482    extern_static!(H5T_STD_REF_OBJ, __imp_H5T_STD_REF_OBJ_g);
483    extern_static!(H5T_STD_REF_DSETREG, __imp_H5T_STD_REF_DSETREG_g);
484    extern_static!(H5T_UNIX_D32BE, __imp_H5T_UNIX_D32BE_g);
485    extern_static!(H5T_UNIX_D32LE, __imp_H5T_UNIX_D32LE_g);
486    extern_static!(H5T_UNIX_D64BE, __imp_H5T_UNIX_D64BE_g);
487    extern_static!(H5T_UNIX_D64LE, __imp_H5T_UNIX_D64LE_g);
488    extern_static!(H5T_C_S1, __imp_H5T_C_S1_g);
489    extern_static!(H5T_FORTRAN_S1, __imp_H5T_FORTRAN_S1_g);
490    extern_static!(H5T_VAX_F32, __imp_H5T_VAX_F32_g);
491    extern_static!(H5T_VAX_F64, __imp_H5T_VAX_F64_g);
492    extern_static!(H5T_NATIVE_SCHAR, __imp_H5T_NATIVE_SCHAR_g);
493    extern_static!(H5T_NATIVE_UCHAR, __imp_H5T_NATIVE_UCHAR_g);
494    extern_static!(H5T_NATIVE_SHORT, __imp_H5T_NATIVE_SHORT_g);
495    extern_static!(H5T_NATIVE_USHORT, __imp_H5T_NATIVE_USHORT_g);
496    extern_static!(H5T_NATIVE_INT, __imp_H5T_NATIVE_INT_g);
497    extern_static!(H5T_NATIVE_UINT, __imp_H5T_NATIVE_UINT_g);
498    extern_static!(H5T_NATIVE_LONG, __imp_H5T_NATIVE_LONG_g);
499    extern_static!(H5T_NATIVE_ULONG, __imp_H5T_NATIVE_ULONG_g);
500    extern_static!(H5T_NATIVE_LLONG, __imp_H5T_NATIVE_LLONG_g);
501    extern_static!(H5T_NATIVE_ULLONG, __imp_H5T_NATIVE_ULLONG_g);
502    extern_static!(H5T_NATIVE_FLOAT, __imp_H5T_NATIVE_FLOAT_g);
503    extern_static!(H5T_NATIVE_DOUBLE, __imp_H5T_NATIVE_DOUBLE_g);
504    extern_static!(H5T_NATIVE_LDOUBLE, __imp_H5T_NATIVE_LDOUBLE_g);
505    extern_static!(H5T_NATIVE_B8, __imp_H5T_NATIVE_B8_g);
506    extern_static!(H5T_NATIVE_B16, __imp_H5T_NATIVE_B16_g);
507    extern_static!(H5T_NATIVE_B32, __imp_H5T_NATIVE_B32_g);
508    extern_static!(H5T_NATIVE_B64, __imp_H5T_NATIVE_B64_g);
509    extern_static!(H5T_NATIVE_OPAQUE, __imp_H5T_NATIVE_OPAQUE_g);
510    extern_static!(H5T_NATIVE_HADDR, __imp_H5T_NATIVE_HADDR_g);
511    extern_static!(H5T_NATIVE_HSIZE, __imp_H5T_NATIVE_HSIZE_g);
512    extern_static!(H5T_NATIVE_HSSIZE, __imp_H5T_NATIVE_HSSIZE_g);
513    extern_static!(H5T_NATIVE_HERR, __imp_H5T_NATIVE_HERR_g);
514    extern_static!(H5T_NATIVE_HBOOL, __imp_H5T_NATIVE_HBOOL_g);
515    extern_static!(H5T_NATIVE_INT8, __imp_H5T_NATIVE_INT8_g);
516    extern_static!(H5T_NATIVE_UINT8, __imp_H5T_NATIVE_UINT8_g);
517    extern_static!(H5T_NATIVE_INT_LEAST8, __imp_H5T_NATIVE_INT_LEAST8_g);
518    extern_static!(H5T_NATIVE_UINT_LEAST8, __imp_H5T_NATIVE_UINT_LEAST8_g);
519    extern_static!(H5T_NATIVE_INT_FAST8, __imp_H5T_NATIVE_INT_FAST8_g);
520    extern_static!(H5T_NATIVE_UINT_FAST8, __imp_H5T_NATIVE_UINT_FAST8_g);
521    extern_static!(H5T_NATIVE_INT16, __imp_H5T_NATIVE_INT16_g);
522    extern_static!(H5T_NATIVE_UINT16, __imp_H5T_NATIVE_UINT16_g);
523    extern_static!(H5T_NATIVE_INT_LEAST16, __imp_H5T_NATIVE_INT_LEAST16_g);
524    extern_static!(H5T_NATIVE_UINT_LEAST16, __imp_H5T_NATIVE_UINT_LEAST16_g);
525    extern_static!(H5T_NATIVE_INT_FAST16, __imp_H5T_NATIVE_INT_FAST16_g);
526    extern_static!(H5T_NATIVE_UINT_FAST16, __imp_H5T_NATIVE_UINT_FAST16_g);
527    extern_static!(H5T_NATIVE_INT32, __imp_H5T_NATIVE_INT32_g);
528    extern_static!(H5T_NATIVE_UINT32, __imp_H5T_NATIVE_UINT32_g);
529    extern_static!(H5T_NATIVE_INT_LEAST32, __imp_H5T_NATIVE_INT_LEAST32_g);
530    extern_static!(H5T_NATIVE_UINT_LEAST32, __imp_H5T_NATIVE_UINT_LEAST32_g);
531    extern_static!(H5T_NATIVE_INT_FAST32, __imp_H5T_NATIVE_INT_FAST32_g);
532    extern_static!(H5T_NATIVE_UINT_FAST32, __imp_H5T_NATIVE_UINT_FAST32_g);
533    extern_static!(H5T_NATIVE_INT64, __imp_H5T_NATIVE_INT64_g);
534    extern_static!(H5T_NATIVE_UINT64, __imp_H5T_NATIVE_UINT64_g);
535    extern_static!(H5T_NATIVE_INT_LEAST64, __imp_H5T_NATIVE_INT_LEAST64_g);
536    extern_static!(H5T_NATIVE_UINT_LEAST64, __imp_H5T_NATIVE_UINT_LEAST64_g);
537    extern_static!(H5T_NATIVE_INT_FAST64, __imp_H5T_NATIVE_INT_FAST64_g);
538    extern_static!(H5T_NATIVE_UINT_FAST64, __imp_H5T_NATIVE_UINT_FAST64_g);
539    #[cfg(feature = "1.12.0")]
540    extern_static!(H5T_STD_REF, __imp_H5T_STD_REF_g);
541}
542
543#[cfg(feature = "1.10.0")]
544extern "C" {
545    pub fn H5Tflush(type_id: hid_t) -> herr_t;
546    pub fn H5Trefresh(type_id: hid_t) -> herr_t;
547}
548
549#[cfg(feature = "1.12.0")]
550extern "C" {
551    pub fn H5Treclaim(type_id: hid_t, space_id: hid_t, dxpl_id: hid_t, buf: *mut c_void) -> herr_t;
552}