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
use libc::{c_int, c_uint, c_void, size_t};

use H5public::{herr_t, htri_t};

pub type H5Z_filter_t = c_int;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5Z_SO_scale_type_t {
    H5Z_SO_FLOAT_DSCALE = 0,
    H5Z_SO_FLOAT_ESCALE = 1,
    H5Z_SO_INT = 2,
}
pub use self::H5Z_SO_scale_type_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5Z_EDC_t {
    H5Z_ERROR_EDC = -1,
    H5Z_DISABLE_EDC = 0,
    H5Z_ENABLE_EDC = 1,
    H5Z_NO_EDC = 2,
}
pub use self::H5Z_EDC_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5Z_cb_return_t {
    H5Z_CB_ERROR = -1,
    H5Z_CB_FAIL = 0,
    H5Z_CB_CONT = 1,
    H5Z_CB_NO = 2,
}
pub use self::H5Z_cb_return_t::*;

pub type H5Z_filter_func_t = extern "C" fn(H5Z_filter_t,*mut c_void, size_t, *mut c_void)
                                           -> H5Z_cb_return_t;

#[repr(C)]
pub struct H5Z_cb_t {
    func: H5Z_filter_func_t,
    op_data: *const c_void,
}

extern "C" {
    pub fn H5Zregister(cls: *const c_void) -> herr_t;
    pub fn H5Zunregister(id: H5Z_filter_t) -> herr_t;
    pub fn H5Zfilter_avail(id: H5Z_filter_t) -> htri_t;
    pub fn H5Zget_filter_info(filter: H5Z_filter_t, filter_config_flags: *mut c_uint) -> herr_t;
}