1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use libc::{c_int, c_longlong, c_uint, c_ulonglong, c_void, size_t};

pub type herr_t = c_int;
pub type htri_t = c_int;
pub type hsize_t = c_ulonglong;
pub type hssize_t = c_longlong;
pub type hbool_t = c_uint;

#[cfg(target_pointer_width = "32")]
pub type haddr_t = u32;
#[cfg(target_pointer_width = "64")]
pub type haddr_t = u64;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5_iter_order_t {
    H5_ITER_UNKNOWN = -1,
    H5_ITER_INC,
    H5_ITER_DEC,
    H5_ITER_NATIVE,
    H5_ITER_N,
}
pub use self::H5_iter_order_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5_index_t {
    H5_INDEX_UNKNOWN = -1,
    H5_INDEX_NAME,
    H5_INDEX_CRT_ORDER,
    H5_INDEX_N,
}
pub use self::H5_index_t::*;

#[derive(Debug)]
#[repr(C)]
pub struct H5_ih_info_t {
    pub index_size: hsize_t,
    pub heap_size: hsize_t,
}

extern "C" {
    pub fn H5open() -> herr_t;
    pub fn H5dont_atexit() -> herr_t;
    pub fn H5set_free_list_limits(reg_global_lim: c_int, reg_list_lim: c_int,
                                  arr_global_lim: c_int, arr_list_lim: c_int,
                                  blk_global_lim: c_int, blk_list_lim: c_int) -> herr_t;
    pub fn H5garbage_collect() -> herr_t;
    pub fn H5allocate_memory(size: size_t, clear: hbool_t) -> *mut c_void;
    pub fn H5resize_memory(mem: *mut c_void, size: size_t ) -> *mut c_void;
    pub fn H5free_memory(buf: *mut c_void) -> herr_t;
    pub fn H5get_libversion(majnum: *mut c_uint, minnum: *mut c_uint, relnum: *mut c_uint)
                            -> herr_t;
    pub fn H5check_version(majnum: c_uint, minnum: c_uint, relnum: c_uint) -> herr_t;
    pub fn H5is_library_threadsafe(is_ts: *mut hbool_t) -> herr_t;
}