1 module hdf5.H5Fpublic;
2 
3 import core.sys.posix.sys.types;
4 import core.stdc.config;
5 
6 import hdf5.H5public;
7 import hdf5.H5Ipublic;
8 import hdf5.H5ACpublic;
9 
10 extern (C):
11 
12 //alias H5F_scope_t H5F_scope_t;
13 //alias H5F_close_degree_t H5F_close_degree_t;
14 //alias H5F_info2_t H5F_info2_t;
15 //alias H5F_mem_t H5F_mem_t;
16 //alias H5F_sect_info_t H5F_sect_info_t;
17 //alias H5F_libver_t H5F_libver_t;
18 //alias H5F_file_space_type_t H5F_file_space_type_t;
19 //alias H5F_retry_info_t H5F_retry_info_t;
20 alias int function (c_long, void*) H5F_flush_cb_t;
21 //alias H5F_info1_t H5F_info1_t;
22 
23 enum H5F_ACC_RDONLY     = 0x0000u;  /*absence of rdwr => rd-only */
24 enum H5F_ACC_RDWR       = 0x0001u;  /*open for read and write    */
25 enum H5F_ACC_TRUNC      = 0x0002u;  /*overwrite existing files   */
26 enum H5F_ACC_EXCL       = 0x0004u;  /*fail if file already exists*/
27 /* NOTE: 0x0008u was H5F_ACC_DEBUG, now deprecated */
28 enum H5F_ACC_CREAT      = 0x0010u;  /*create non-existing files  */
29 enum H5F_ACC_SWMR_WRITE = 0x0020u;  /*indicate that this file is
30                                      * open for writing in a
31                                      * single-writer/multi-reader (SWMR)
32                                      * scenario.  Note that the
33                                      * process(es) opening the file
34                                      * for reading must open the file
35                                      * with RDONLY access, and use
36                                      * the special "SWMR_READ" access
37                                      * flag. */
38 enum H5F_ACC_SWMR_READ  = 0x0040u;  /*indicate that this file is
39                                      * open for reading in a
40                                      * single-writer/multi-reader (SWMR)
41                                      * scenario.  Note that the
42                                      * process(es) opening the file
43                                      * for SWMR reading must also
44                                      * open the file with the RDONLY
45                                      * flag.  */
46 
47 /* Value passed to H5Pset_elink_acc_flags to cause flags to be taken from the
48  * parent file. */
49 enum H5F_ACC_DEFAULT    = 0xffffu;  /*ignore setting on lapl     */
50 
51 enum H5F_UNLIMITED = (cast(hsize_t)(-1L));
52 
53 enum H5F_scope_t
54 {
55     H5F_SCOPE_LOCAL = 0,
56     H5F_SCOPE_GLOBAL = 1
57 }
58 
59 enum H5F_close_degree_t
60 {
61     H5F_CLOSE_DEFAULT = 0,
62     H5F_CLOSE_WEAK = 1,
63     H5F_CLOSE_SEMI = 2,
64     H5F_CLOSE_STRONG = 3
65 }
66 
67 enum H5F_mem_t
68 {
69     H5FD_MEM_NOLIST = -1,
70     H5FD_MEM_DEFAULT = 0,
71     H5FD_MEM_SUPER = 1,
72     H5FD_MEM_BTREE = 2,
73     H5FD_MEM_DRAW = 3,
74     H5FD_MEM_GHEAP = 4,
75     H5FD_MEM_LHEAP = 5,
76     H5FD_MEM_OHDR = 6,
77     H5FD_MEM_NTYPES = 7
78 }
79 
80 enum H5F_libver_t
81 {
82     H5F_LIBVER_EARLIEST = 0,
83     H5F_LIBVER_LATEST = 1
84 }
85 
86 enum H5F_file_space_type_t
87 {
88     H5F_FILE_SPACE_DEFAULT = 0,
89     H5F_FILE_SPACE_ALL_PERSIST = 1,
90     H5F_FILE_SPACE_ALL = 2,
91     H5F_FILE_SPACE_AGGR_VFD = 3,
92     H5F_FILE_SPACE_VFD = 4,
93     H5F_FILE_SPACE_NTYPES = 5
94 }
95 
96 struct H5F_info2_t
97 {
98     static struct Super
99     {
100         uint version_;
101         hsize_t super_size;
102         hsize_t super_ext_size;
103     } 
104 
105     Super super_;
106     
107     static struct Free
108     {
109         uint version_;
110         hsize_t meta_size;
111         hsize_t tot_space;
112     }
113 
114     Free free;
115     
116     static struct Sohm
117     {
118         uint version_;
119         hsize_t hdr_size;
120         H5_ih_info_t msgs_info;
121     }
122 
123     Sohm sohm;
124 }
125 
126 struct H5F_sect_info_t
127 {
128     haddr_t addr;
129     hsize_t size;
130 }
131 
132 struct H5F_retry_info_t
133 {
134     uint nbins;
135     uint*[21] retries;
136 }
137 
138 struct H5F_info1_t
139 {
140     hsize_t super_ext_size;
141     struct
142     {
143         hsize_t hdr_size;
144         H5_ih_info_t msgs_info;
145     }
146 }
147 
148 htri_t H5Fis_hdf5 (const(char)* filename);
149 hid_t H5Fcreate (const(char)* filename, uint flags, hid_t create_plist, hid_t access_plist);
150 hid_t H5Fopen (const(char)* filename, uint flags, hid_t access_plist);
151 hid_t H5Freopen (hid_t file_id);
152 herr_t H5Fflush (hid_t object_id, H5F_scope_t scope_);
153 herr_t H5Fclose (hid_t file_id);
154 hid_t H5Fget_create_plist (hid_t file_id);
155 hid_t H5Fget_access_plist (hid_t file_id);
156 herr_t H5Fget_intent (hid_t file_id, uint* intent);
157 ssize_t H5Fget_obj_count (hid_t file_id, uint types);
158 ssize_t H5Fget_obj_ids (hid_t file_id, uint types, size_t max_objs, hid_t* obj_id_list);
159 herr_t H5Fget_vfd_handle (hid_t file_id, hid_t fapl, void** file_handle);
160 herr_t H5Fmount (hid_t loc, const(char)* name, hid_t child, hid_t plist);
161 herr_t H5Funmount (hid_t loc, const(char)* name);
162 hssize_t H5Fget_freespace (hid_t file_id);
163 herr_t H5Fget_filesize (hid_t file_id, hsize_t* size);
164 ssize_t H5Fget_file_image (hid_t file_id, void* buf_ptr, size_t buf_len);
165 herr_t H5Fget_mdc_config (hid_t file_id, H5AC_cache_config_t* config_ptr);
166 herr_t H5Fset_mdc_config (hid_t file_id, H5AC_cache_config_t* config_ptr);
167 herr_t H5Fget_mdc_hit_rate (hid_t file_id, double* hit_rate_ptr);
168 herr_t H5Fget_mdc_size (hid_t file_id, size_t* max_size_ptr, size_t* min_clean_size_ptr, size_t* cur_size_ptr, int* cur_num_entries_ptr);
169 herr_t H5Freset_mdc_hit_rate_stats (hid_t file_id);
170 ssize_t H5Fget_name (hid_t obj_id, char* name, size_t size);
171 herr_t H5Fget_info2 (hid_t obj_id, H5F_info2_t* finfo);
172 herr_t H5Fget_metadata_read_retry_info (hid_t file_id, H5F_retry_info_t* info);
173 herr_t H5Fstart_swmr_write (hid_t file_id);
174 ssize_t H5Fget_free_sections (hid_t file_id, H5F_mem_t type, size_t nsects, H5F_sect_info_t* sect_info);
175 herr_t H5Fclear_elink_file_cache (hid_t file_id);
176 herr_t H5Fstart_mdc_logging (hid_t file_id);
177 herr_t H5Fstop_mdc_logging (hid_t file_id);
178 herr_t H5Fget_mdc_logging_status (hid_t file_id, hbool_t* is_enabled, hbool_t* is_currently_logging);
179 herr_t H5Fformat_convert (hid_t fid);
180 herr_t H5Fget_info1 (hid_t obj_id, H5F_info1_t* finfo);