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);