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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use libc::{c_char, c_uint, c_void, size_t};

use H5Ipublic::hid_t;
use H5public::{herr_t, hsize_t, haddr_t};

pub type H5D_operator_t = extern "C" fn(*mut c_void, hid_t, c_uint, *const hsize_t, *mut c_void);
pub type H5D_gather_func_t = extern "C" fn(*const c_void, size_t, *mut c_void);
pub type H5D_scatter_func_t = extern "C" fn(*mut *const c_void, *mut size_t, *mut c_void);

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5D_layout_t {
    H5D_LAYOUT_ERROR = -1,
    H5D_COMPACT = 0,
    H5D_CONTIGUOUS = 1,
    H5D_CHUNKED = 2,
    H5D_NLAYOUTS = 3,
}
pub use self::H5D_layout_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5D_alloc_time_t {
    H5D_ALLOC_TIME_ERROR = -1,
    H5D_ALLOC_TIME_DEFAULT = 0,
    H5D_ALLOC_TIME_EARLY = 1,
    H5D_ALLOC_TIME_LATE = 2,
    H5D_ALLOC_TIME_INCR = 3,
}
pub use self::H5D_alloc_time_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5D_space_status_t {
    H5D_SPACE_STATUS_ERROR = -1,
    H5D_SPACE_STATUS_NOT_ALLOCATED = 0,
    H5D_SPACE_STATUS_PART_ALLOCATED = 1,
    H5D_SPACE_STATUS_ALLOCATED = 2,
}
pub use self::H5D_space_status_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5D_fill_time_t {
    H5D_FILL_TIME_ERROR = -1,
    H5D_FILL_TIME_ALLOC = 0,
    H5D_FILL_TIME_NEVER = 1,
    H5D_FILL_TIME_IFSET = 2,
}
pub use self::H5D_fill_time_t::*;

#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub enum H5D_fill_value_t {
    H5D_FILL_VALUE_ERROR = -1,
    H5D_FILL_VALUE_UNDEFINED = 0,
    H5D_FILL_VALUE_DEFAULT = 1,
    H5D_FILL_VALUE_USER_DEFINED = 2,
}
pub use self::H5D_fill_value_t::*;

extern "C" {
    pub fn H5Dcreate2(loc_id: hid_t, name: *const c_char, type_id: hid_t, space_id: hid_t,
                      lcpl_id: hid_t, dcpl_id: hid_t, dapl_id: hid_t) -> hid_t;
    pub fn H5Dcreate_anon(loc_id: hid_t, type_id: hid_t, space_id: hid_t, dcpl_id: hid_t,
                          dapl_id: hid_t) -> hid_t;
    pub fn H5Dopen2(loc_id: hid_t, name: *const c_char, dapl_id: hid_t) -> hid_t;
    pub fn H5Dclose(dset_id: hid_t) -> herr_t;
    pub fn H5Dget_space(dset_id: hid_t) -> hid_t;
    pub fn H5Dget_space_status(dset_id: hid_t, status: *mut H5D_space_status_t) -> herr_t;
    pub fn H5Dget_type(dataset_id: hid_t) -> hid_t;
    pub fn H5Dget_create_plist(dataset_id: hid_t) -> hid_t;
    pub fn H5Dget_access_plist(dataset_id: hid_t) -> hid_t;
    pub fn H5Dget_offset(dset_id: hid_t) -> haddr_t;
    pub fn H5Dget_storage_size(dataset_id: hid_t) -> hsize_t;
    pub fn H5Dvlen_get_buf_size(dataset_id: hid_t, type_id: hid_t, space_id: hid_t,
                                size: *mut hsize_t) -> herr_t;
    pub fn H5Dvlen_reclaim(type_id: hid_t, space_id: hid_t, plist_id: hid_t, buf: *const c_void)
                           -> herr_t;
    pub fn H5Dread(dataset_id: hid_t, mem_type_id: hid_t, mem_space_id: hid_t,
                   file_space_id: hid_t, xfer_plist_id: hid_t, buf: *mut c_void) -> herr_t;
    pub fn H5Dwrite(dset_id: hid_t, mem_type_id: hid_t, mem_space_id: hid_t, file_space_id: hid_t,
                    plist_id: hid_t, buf: *const c_void) -> herr_t;
    pub fn H5Dgather(src_space_id: hid_t, src_buf: *const c_void, type_id: hid_t,
                     dst_buf_size: size_t, dst_buf: *mut c_void, op: H5D_gather_func_t,
                     op_data: *const c_void) -> herr_t;
    pub fn H5Dscatter(op: H5D_scatter_func_t, op_data: *const c_void, type_id: hid_t,
                      dst_space_id: hid_t, dst_buf: *mut c_void) -> herr_t;
    pub fn H5Diterate(buf: *mut c_void, type_id: hid_t, space_id: hid_t, operator: H5D_operator_t,
                      operator_data: *mut c_void);
    pub fn H5Dset_extent(dset_id: hid_t, size: *const hsize_t) -> herr_t;
    pub fn H5Dfill(fill: *const c_void, fill_type_id: hid_t, buf: *mut c_void, buf_type_id: hid_t,
                   space_id: hid_t) -> herr_t;
}