1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group.                                               *
3  * Copyright by the Board of Trustees of the University of Illinois.         *
4  * All rights reserved.                                                      *
5  *                                                                           *
6  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
7  * terms governing use, modification, and redistribution, is contained in    *
8  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
9  * of the source code distribution tree; Copyright.html can be found at the  *
10  * root level of an installed copy of the electronic HDF5 document set and   *
11  * is linked from the top-level documents page.  It can also be found at     *
12  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
13  * access to either file, you may request a copy from help@hdfgroup.org.     *
14  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 module hdf5.H5Ppublic;
17 
18 /*
19  * This file contains function prototypes for each exported function in the
20  * H5P module.
21  */
22 
23 /* System headers needed by this file */
24 
25 /* Public headers needed by this file */
26 /++ HEADERS
27 #include "H5ACpublic.h"
28 #include "H5FDpublic.h"
29 #include "H5Lpublic.h"
30 #include "H5Opublic.h"
31 #include "H5MMpublic.h"
32 +/
33 
34 import hdf5.H5public;
35 import hdf5.H5Dpublic;
36 import hdf5.H5Fpublic;
37 import hdf5.H5Ipublic;
38 import hdf5.H5Tpublic;
39 import hdf5.H5Zpublic;
40 
41 extern(C):
42 
43 /*****************/
44 /* Public Macros */
45 /*****************/
46 
47 /*
48  * The library's property list classes
49  */
50 alias H5P_ROOT = H5P_CLS_ROOT_g;
51 alias H5P_OBJECT_CREATE = H5P_CLS_OBJECT_CREATE_g;
52 alias H5P_FILE_CREATE = H5P_CLS_FILE_CREATE_g;
53 alias H5P_FILE_ACCESS = H5P_CLS_FILE_ACCESS_g;
54 alias H5P_DATASET_CREATE = H5P_CLS_DATASET_CREATE_g;
55 alias H5P_DATASET_ACCESS = H5P_CLS_DATASET_ACCESS_g;
56 alias H5P_DATASET_XFER = H5P_CLS_DATASET_XFER_g;
57 alias H5P_FILE_MOUNT = H5P_CLS_FILE_MOUNT_g;
58 alias H5P_GROUP_CREATE = H5P_CLS_GROUP_CREATE_g;
59 alias H5P_GROUP_ACCESS = H5P_CLS_GROUP_ACCESS_g;
60 alias H5P_DATATYPE_CREATE = H5P_CLS_DATATYPE_CREATE_g;
61 alias H5P_DATATYPE_ACCESS = H5P_CLS_DATATYPE_ACCESS_g;
62 alias H5P_STRING_CREATE = H5P_CLS_STRING_CREATE_g;
63 alias H5P_ATTRIBUTE_CREATE = H5P_CLS_ATTRIBUTE_CREATE_g;
64 alias H5P_OBJECT_COPY = H5P_CLS_OBJECT_COPY_g;
65 alias H5P_LINK_CREATE = H5P_CLS_LINK_CREATE_g;
66 alias H5P_LINK_ACCESS = H5P_CLS_LINK_ACCESS_g;
67 
68 /*
69  * The library's default property lists
70  */
71 alias H5P_FILE_CREATE_DEFAULT = H5P_LST_FILE_CREATE_g;
72 alias H5P_FILE_ACCESS_DEFAULT = H5P_LST_FILE_ACCESS_g;
73 alias H5P_DATASET_CREATE_DEFAULT = H5P_LST_DATASET_CREATE_g;
74 alias H5P_DATASET_ACCESS_DEFAULT = H5P_LST_DATASET_ACCESS_g;
75 alias H5P_DATASET_XFER_DEFAULT = H5P_LST_DATASET_XFER_g;
76 alias H5P_FILE_MOUNT_DEFAULT = H5P_LST_FILE_MOUNT_g;
77 alias H5P_GROUP_CREATE_DEFAULT = H5P_LST_GROUP_CREATE_g;
78 alias H5P_GROUP_ACCESS_DEFAULT = H5P_LST_GROUP_ACCESS_g;
79 alias H5P_DATATYPE_CREATE_DEFAULT = H5P_LST_DATATYPE_CREATE_g;
80 alias H5P_DATATYPE_ACCESS_DEFAULT = H5P_LST_DATATYPE_ACCESS_g;
81 alias H5P_ATTRIBUTE_CREATE_DEFAULT = H5P_LST_ATTRIBUTE_CREATE_g;
82 alias H5P_OBJECT_COPY_DEFAULT = H5P_LST_OBJECT_COPY_g;
83 alias H5P_LINK_CREATE_DEFAULT = H5P_LST_LINK_CREATE_g;
84 alias H5P_LINK_ACCESS_DEFAULT = H5P_LST_LINK_ACCESS_g;
85 
86 /* Common creation order flags (for links in groups and attributes on objects) */
87 enum H5P_CRT_ORDER_TRACKED = 0x0001;
88 enum H5P_CRT_ORDER_INDEXED = 0x0002;
89 
90 /*******************/
91 /* Public Typedefs */
92 /*******************/
93 
94 /* Define property list class callback function pointer types */
95 alias H5P_cls_create_func_t = herr_t function(hid_t prop_id, void *create_data);
96 alias H5P_cls_copy_func_t = herr_t function(hid_t new_prop_id, hid_t old_prop_id, void *copy_data);
97 alias H5P_cls_close_func_t = herr_t function(hid_t prop_id, void *close_data);
98 
99 /* Define property list callback function pointer types */
100 alias H5P_prp_cb1_t = herr_t function(const char *name, size_t size, void *value);
101 alias H5P_prp_cb2_t = herr_t function(hid_t prop_id, const char *name, size_t size, void *value);
102 alias H5P_prp_create_func_t = H5P_prp_cb1_t;
103 alias H5P_prp_set_func_t = H5P_prp_cb2_t;
104 alias H5P_prp_get_func_t = H5P_prp_cb2_t;
105 alias H5P_prp_delete_func_t = H5P_prp_cb2_t;
106 alias H5P_prp_copy_func_t = H5P_prp_cb1_t;
107 alias H5P_prp_compare_func_t = int function(const void *value1, const void *value2, size_t size);
108 alias H5P_prp_close_func_t = H5P_prp_cb1_t;
109 
110 /* Define property list iteration function type */
111 alias H5P_iterate_t = herr_t function(hid_t id, const char *name, void *iter_data);
112 
113 /* Actual IO mode property */
114 enum H5D_mpio_actual_chunk_opt_mode_t {
115     /* The default value, H5D_MPIO_NO_CHUNK_OPTIMIZATION, is used for all I/O
116      * operations that do not use chunk optimizations, including non-collective
117      * I/O and contiguous collective I/O.
118      */
119     H5D_MPIO_NO_CHUNK_OPTIMIZATION = 0,
120     H5D_MPIO_LINK_CHUNK,
121     H5D_MPIO_MULTI_CHUNK
122 }
123 
124 enum H5D_mpio_actual_io_mode_t {
125     /* The following four values are conveniently defined as a bit field so that
126      * we can switch from the default to indpendent or collective and then to
127      * mixed without having to check the original value. 
128      * 
129      * NO_COLLECTIVE means that either collective I/O wasn't requested or that 
130      * no I/O took place.
131      *
132      * CHUNK_INDEPENDENT means that collective I/O was requested, but the
133      * chunk optimization scheme chose independent I/O for each chunk.
134      */
135     H5D_MPIO_NO_COLLECTIVE = 0x0,
136     H5D_MPIO_CHUNK_INDEPENDENT = 0x1,
137     H5D_MPIO_CHUNK_COLLECTIVE = 0x2,
138     H5D_MPIO_CHUNK_MIXED = 0x1 | 0x2,
139 
140     /* The contiguous case is separate from the bit field. */
141     H5D_MPIO_CONTIGUOUS_COLLECTIVE = 0x4
142 }
143 
144 /* Broken collective IO property */
145 enum H5D_mpio_no_collective_cause_t {
146     H5D_MPIO_COLLECTIVE = 0x00,
147     H5D_MPIO_SET_INDEPENDENT = 0x01,
148     H5D_MPIO_DATATYPE_CONVERSION = 0x02,
149     H5D_MPIO_DATA_TRANSFORMS = 0x04,
150     H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED = 0x08,
151     H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES = 0x10,
152     H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 0x20,
153     H5D_MPIO_FILTERS = 0x40
154 }
155 
156 /********************/
157 /* Public Variables */
158 /********************/
159 
160 /* Property list class IDs */
161 /* (Internal to library, do not use!  Use macros above) */
162 extern __gshared hid_t H5P_CLS_ROOT_g;
163 extern __gshared hid_t H5P_CLS_OBJECT_CREATE_g;
164 extern __gshared hid_t H5P_CLS_FILE_CREATE_g;
165 extern __gshared hid_t H5P_CLS_FILE_ACCESS_g;
166 extern __gshared hid_t H5P_CLS_DATASET_CREATE_g;
167 extern __gshared hid_t H5P_CLS_DATASET_ACCESS_g;
168 extern __gshared hid_t H5P_CLS_DATASET_XFER_g;
169 extern __gshared hid_t H5P_CLS_FILE_MOUNT_g;
170 extern __gshared hid_t H5P_CLS_GROUP_CREATE_g;
171 extern __gshared hid_t H5P_CLS_GROUP_ACCESS_g;
172 extern __gshared hid_t H5P_CLS_DATATYPE_CREATE_g;
173 extern __gshared hid_t H5P_CLS_DATATYPE_ACCESS_g;
174 extern __gshared hid_t H5P_CLS_STRING_CREATE_g;
175 extern __gshared hid_t H5P_CLS_ATTRIBUTE_CREATE_g;
176 extern __gshared hid_t H5P_CLS_OBJECT_COPY_g;
177 extern __gshared hid_t H5P_CLS_LINK_CREATE_g;
178 extern __gshared hid_t H5P_CLS_LINK_ACCESS_g;
179 
180 /* Default roperty list IDs */
181 /* (Internal to library, do not use!  Use macros above) */
182 extern __gshared hid_t H5P_LST_FILE_CREATE_g;
183 extern __gshared hid_t H5P_LST_FILE_ACCESS_g;
184 extern __gshared hid_t H5P_LST_DATASET_CREATE_g;
185 extern __gshared hid_t H5P_LST_DATASET_ACCESS_g;
186 extern __gshared hid_t H5P_LST_DATASET_XFER_g;
187 extern __gshared hid_t H5P_LST_FILE_MOUNT_g;
188 extern __gshared hid_t H5P_LST_GROUP_CREATE_g;
189 extern __gshared hid_t H5P_LST_GROUP_ACCESS_g;
190 extern __gshared hid_t H5P_LST_DATATYPE_CREATE_g;
191 extern __gshared hid_t H5P_LST_DATATYPE_ACCESS_g;
192 extern __gshared hid_t H5P_LST_ATTRIBUTE_CREATE_g;
193 extern __gshared hid_t H5P_LST_OBJECT_COPY_g;
194 extern __gshared hid_t H5P_LST_LINK_CREATE_g;
195 extern __gshared hid_t H5P_LST_LINK_ACCESS_g;
196 
197 /*********************/
198 /* Public Prototypes */
199 /*********************/
200 
201 version(Posix) {
202 
203 /* Generic property list routines */
204 hid_t H5Pcreate_class(hid_t parent, const char *name,
205     H5P_cls_create_func_t cls_create, void *create_data,
206     H5P_cls_copy_func_t cls_copy, void *copy_data,
207     H5P_cls_close_func_t cls_close, void *close_data);
208 char *H5Pget_class_name(hid_t pclass_id);
209 hid_t H5Pcreate(hid_t cls_id);
210 herr_t H5Pregister2(hid_t cls_id, const char *name, size_t size,
211     void *def_value, H5P_prp_create_func_t prp_create,
212     H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
213     H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy,
214     H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
215 herr_t H5Pinsert2(hid_t plist_id, const char *name, size_t size,
216     void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
217     H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
218     H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
219 herr_t H5Pset(hid_t plist_id, const char *name, void *value);
220 htri_t H5Pexist(hid_t plist_id, const char *name);
221 herr_t H5Pget_size(hid_t id, const char *name, size_t *size);
222 herr_t H5Pget_nprops(hid_t id, size_t *nprops);
223 hid_t H5Pget_class(hid_t plist_id);
224 hid_t H5Pget_class_parent(hid_t pclass_id);
225 herr_t H5Pget(hid_t plist_id, const char *name, void * value);
226 htri_t H5Pequal(hid_t id1, hid_t id2);
227 htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id);
228 int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func,
229             void *iter_data);
230 herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name);
231 herr_t H5Premove(hid_t plist_id, const char *name);
232 herr_t H5Punregister(hid_t pclass_id, const char *name);
233 herr_t H5Pclose_class(hid_t plist_id);
234 herr_t H5Pclose(hid_t plist_id);
235 hid_t H5Pcopy(hid_t plist_id);
236 
237 /* Object creation property list (OCPL) routines */
238 herr_t H5Pset_attr_phase_change(hid_t plist_id, uint max_compact, uint min_dense);
239 herr_t H5Pget_attr_phase_change(hid_t plist_id, uint *max_compact, uint *min_dense);
240 herr_t H5Pset_attr_creation_order(hid_t plist_id, uint crt_order_flags);
241 herr_t H5Pget_attr_creation_order(hid_t plist_id, uint *crt_order_flags);
242 herr_t H5Pset_obj_track_times(hid_t plist_id, hbool_t track_times);
243 herr_t H5Pget_obj_track_times(hid_t plist_id, hbool_t *track_times);
244 herr_t H5Pmodify_filter(hid_t plist_id, H5Z_filter_t filter,
245         int flags, size_t cd_nelmts,
246         const int[/*cd_nelmts*/] cd_values);
247 herr_t H5Pset_filter(hid_t plist_id, H5Z_filter_t filter,
248         int flags, size_t cd_nelmts,
249         const int[] c_values);
250 int H5Pget_nfilters(hid_t plist_id);
251 H5Z_filter_t H5Pget_filter2(hid_t plist_id, uint filter,
252        int *flags/*out*/,
253        size_t *cd_nelmts/*out*/,
254        uint[] cd_values/*out*/,
255        size_t namelen, char[] name,
256        uint *filter_config /*out*/);
257 herr_t H5Pget_filter_by_id2(hid_t plist_id, H5Z_filter_t id,
258        uint *flags/*out*/, size_t *cd_nelmts/*out*/,
259        int[] cd_values/*out*/, size_t namelen, char[] name/*out*/,
260        int *filter_config/*out*/);
261 htri_t H5Pall_filters_avail(hid_t plist_id);
262 herr_t H5Premove_filter(hid_t plist_id, H5Z_filter_t filter);
263 herr_t H5Pset_deflate(hid_t plist_id, int aggression);
264 herr_t H5Pset_fletcher32(hid_t plist_id);
265 
266 /* File creation property list (FCPL) routines */
267 herr_t H5Pget_version(hid_t plist_id, uint *boot/*out*/,
268          uint *freelist/*out*/, uint *stab/*out*/,
269          uint *shhdr/*out*/);
270 herr_t H5Pset_userblock(hid_t plist_id, hsize_t size);
271 herr_t H5Pget_userblock(hid_t plist_id, hsize_t *size);
272 herr_t H5Pset_sizes(hid_t plist_id, size_t sizeof_addr,
273        size_t sizeof_size);
274 herr_t H5Pget_sizes(hid_t plist_id, size_t *sizeof_addr/*out*/,
275        size_t *sizeof_size/*out*/);
276 herr_t H5Pset_sym_k(hid_t plist_id, uint ik, uint lk);
277 herr_t H5Pget_sym_k(hid_t plist_id, uint *ik/*out*/, uint *lk/*out*/);
278 herr_t H5Pset_istore_k(hid_t plist_id, uint ik);
279 herr_t H5Pget_istore_k(hid_t plist_id, uint *ik/*out*/);
280 herr_t H5Pset_shared_mesg_nindexes(hid_t plist_id, uint nindexes);
281 herr_t H5Pget_shared_mesg_nindexes(hid_t plist_id, uint *nindexes);
282 herr_t H5Pset_shared_mesg_index(hid_t plist_id, uint index_num, uint mesg_type_flags, uint min_mesg_size);
283 herr_t H5Pget_shared_mesg_index(hid_t plist_id, uint index_num, uint *mesg_type_flags, uint *min_mesg_size);
284 herr_t H5Pset_shared_mesg_phase_change(hid_t plist_id, uint max_list, uint min_btree);
285 herr_t H5Pget_shared_mesg_phase_change(hid_t plist_id, uint *max_list, uint *min_btree);
286 
287 /* File access property list (FAPL) routines */
288 herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold,
289     hsize_t alignment);
290 herr_t H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/,
291     hsize_t *alignment/*out*/);
292 herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id,
293         const void *driver_info);
294 hid_t H5Pget_driver(hid_t plist_id);
295 void *H5Pget_driver_info(hid_t plist_id);
296 herr_t H5Pset_family_offset(hid_t fapl_id, hsize_t offset);
297 herr_t H5Pget_family_offset(hid_t fapl_id, hsize_t *offset);
298 /++
299 herr_t H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type);
300 herr_t H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type);
301 +/
302 herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts,
303        size_t rdcc_nslots, size_t rdcc_nbytes,
304        double rdcc_w0);
305 herr_t H5Pget_cache(hid_t plist_id,
306        int *mdc_nelmts, /* out */
307        size_t *rdcc_nslots/*out*/,
308        size_t *rdcc_nbytes/*out*/, double *rdcc_w0);
309 /++
310 herr_t H5Pset_mdc_config(hid_t    plist_id,
311        H5AC_cache_config_t * config_ptr);
312 herr_t H5Pget_mdc_config(hid_t     plist_id,
313        H5AC_cache_config_t * config_ptr);	/* out */
314 +/
315 herr_t H5Pset_gc_references(hid_t fapl_id, uint gc_ref);
316 herr_t H5Pget_gc_references(hid_t fapl_id, uint *gc_ref/*out*/);
317 herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t degree);
318 herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *degree);
319 herr_t H5Pset_meta_block_size(hid_t fapl_id, hsize_t size);
320 herr_t H5Pget_meta_block_size(hid_t fapl_id, hsize_t *size/*out*/);
321 herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size);
322 herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size/*out*/);
323 herr_t H5Pset_small_data_block_size(hid_t fapl_id, hsize_t size);
324 herr_t H5Pget_small_data_block_size(hid_t fapl_id, hsize_t *size/*out*/);
325 herr_t H5Pset_libver_bounds(hid_t plist_id, H5F_libver_t low,
326     H5F_libver_t high);
327 herr_t H5Pget_libver_bounds(hid_t plist_id, H5F_libver_t *low,
328     H5F_libver_t *high);
329 herr_t H5Pset_elink_file_cache_size(hid_t plist_id, uint efc_size);
330 herr_t H5Pget_elink_file_cache_size(hid_t plist_id, uint *efc_size);
331 herr_t H5Pset_file_image(hid_t fapl_id, void *buf_ptr, size_t buf_len);
332 herr_t H5Pget_file_image(hid_t fapl_id, void **buf_ptr_ptr, size_t *buf_len_ptr);
333 /++
334 herr_t H5Pset_file_image_callbacks(hid_t fapl_id,
335        H5FD_file_image_callbacks_t *callbacks_ptr);
336 herr_t H5Pget_file_image_callbacks(hid_t fapl_id,
337        H5FD_file_image_callbacks_t *callbacks_ptr);
338 +/
339 
340 herr_t H5Pset_core_write_tracking(hid_t fapl_id, hbool_t is_enabled, size_t page_size);
341 herr_t H5Pget_core_write_tracking(hid_t fapl_id, hbool_t *is_enabled, size_t *page_size);
342 
343 /* Dataset creation property list (DCPL) routines */
344 herr_t H5Pset_layout(hid_t plist_id, H5D_layout_t layout);
345 H5D_layout_t H5Pget_layout(hid_t plist_id);
346 herr_t H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t *dim/*ndims*/);
347 int H5Pget_chunk(hid_t plist_id, int max_ndims, hsize_t *dim/*out*/);
348 herr_t H5Pset_external(hid_t plist_id, const char *name, off_t offset,
349           hsize_t size);
350 int H5Pget_external_count(hid_t plist_id);
351 herr_t H5Pget_external(hid_t plist_id, uint idx, size_t name_size,
352           char *name/*out*/, off_t *offset/*out*/,
353           hsize_t *size/*out*/);
354 herr_t H5Pset_szip(hid_t plist_id, uint options_mask, uint pixels_per_block);
355 herr_t H5Pset_shuffle(hid_t plist_id);
356 herr_t H5Pset_nbit(hid_t plist_id);
357 herr_t H5Pset_scaleoffset(hid_t plist_id, H5Z_SO_scale_type_t scale_type, int scale_factor);
358 herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id,
359      const void *value);
360 herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id,
361      void *value/*out*/);
362 herr_t H5Pfill_value_defined(hid_t plist, H5D_fill_value_t *status);
363 herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t
364 	alloc_time);
365 herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t
366 	*alloc_time/*out*/);
367 herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time);
368 herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t
369 	*fill_time/*out*/);
370 
371 /* Dataset access property list (DAPL) routines */
372 herr_t H5Pset_chunk_cache(hid_t dapl_id, size_t rdcc_nslots,
373        size_t rdcc_nbytes, double rdcc_w0);
374 herr_t H5Pget_chunk_cache(hid_t dapl_id,
375        size_t *rdcc_nslots/*out*/,
376        size_t *rdcc_nbytes/*out*/,
377        double *rdcc_w0/*out*/);
378 
379 /* Dataset xfer property list (DXPL) routines */
380 herr_t H5Pset_data_transform(hid_t plist_id, const char* expression);
381 ssize_t H5Pget_data_transform(hid_t plist_id, char* expression /*out*/, size_t size);
382 herr_t H5Pset_buffer(hid_t plist_id, size_t size, void *tconv,
383         void *bkg);
384 size_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/,
385         void **bkg/*out*/);
386 herr_t H5Pset_preserve(hid_t plist_id, hbool_t status);
387 int H5Pget_preserve(hid_t plist_id);
388 herr_t H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check);
389 H5Z_EDC_t H5Pget_edc_check(hid_t plist_id);
390 herr_t H5Pset_filter_callback(hid_t plist_id, H5Z_filter_func_t func,
391                                      void* op_data);
392 herr_t H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
393        double right);
394 herr_t H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/,
395        double *middle/*out*/,
396        double *right/*out*/);
397 /++
398 herr_t H5Pset_vlen_mem_manager(hid_t plist_id,
399                                        H5MM_allocate_t alloc_func,
400                                        void *alloc_info, H5MM_free_t free_func,
401                                        void *free_info);
402 herr_t H5Pget_vlen_mem_manager(hid_t plist_id,
403                                        H5MM_allocate_t *alloc_func,
404                                        void **alloc_info,
405                                        H5MM_free_t *free_func,
406                                        void **free_info);
407 +/
408 herr_t H5Pset_hyper_vector_size(hid_t fapl_id, size_t size);
409 herr_t H5Pget_hyper_vector_size(hid_t fapl_id, size_t *size/*out*/);
410 herr_t H5Pset_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t op, void* operate_data);
411 herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, void** operate_data);
412 //#ifdef H5_HAVE_PARALLEL
413 herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode);
414 herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode);
415 herr_t H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause);
416 //#endif /* H5_HAVE_PARALLEL */
417 
418 /* Link creation property list (LCPL) routines */
419 herr_t H5Pset_create_intermediate_group(hid_t plist_id, uint crt_intmd);
420 herr_t H5Pget_create_intermediate_group(hid_t plist_id, uint *crt_intmd /*out*/);
421 
422 /* Group creation property list (GCPL) routines */
423 herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint);
424 herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint /*out*/);
425 herr_t H5Pset_link_phase_change(hid_t plist_id, uint max_compact, uint min_dense);
426 herr_t H5Pget_link_phase_change(hid_t plist_id, uint *max_compact /*out*/, uint *min_dense /*out*/);
427 herr_t H5Pset_est_link_info(hid_t plist_id, uint est_num_entries, uint est_name_len);
428 herr_t H5Pget_est_link_info(hid_t plist_id, uint *est_num_entries /* out */, uint *est_name_len /* out */);
429 herr_t H5Pset_link_creation_order(hid_t plist_id, uint crt_order_flags);
430 herr_t H5Pget_link_creation_order(hid_t plist_id, uint *crt_order_flags /* out */);
431 
432 /* String creation property list (STRCPL) routines */
433 herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding);
434 herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding /*out*/);
435 
436 /* Link access property list (LAPL) routines */
437 herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks);
438 herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks);
439 herr_t H5Pset_elink_prefix(hid_t plist_id, const char *prefix);
440 ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size);
441 hid_t H5Pget_elink_fapl(hid_t lapl_id);
442 herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id);
443 herr_t H5Pset_elink_acc_flags(hid_t lapl_id, uint flags);
444 herr_t H5Pget_elink_acc_flags(hid_t lapl_id, uint *flags);
445 /++
446 herr_t H5Pset_elink_cb(hid_t lapl_id, H5L_elink_traverse_t func, void *op_data);
447 herr_t H5Pget_elink_cb(hid_t lapl_id, H5L_elink_traverse_t *func, void **op_data);
448 +/
449 
450 /* Object copy property list (OCPYPL) routines */
451 herr_t H5Pset_copy_object(hid_t plist_id, uint crt_intmd);
452 herr_t H5Pget_copy_object(hid_t plist_id, uint *crt_intmd /*out*/);
453 herr_t H5Padd_merge_committed_dtype_path(hid_t plist_id, const char *path);
454 herr_t H5Pfree_merge_committed_dtype_paths(hid_t plist_id);
455 /++
456 herr_t H5Pset_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t func, void *op_data);
457 herr_t H5Pget_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t *func, void **op_data);
458 +/
459 
460 }
461 
462 /++ DEPRECATED
463 /* Symbols defined for compatibility with previous versions of the HDF5 API.
464  *
465  * Use of these symbols is deprecated.
466  */
467 #ifndef H5_NO_DEPRECATED_SYMBOLS
468 
469 /* Macros */
470 
471 /* We renamed the "root" of the property list class hierarchy */
472 #define H5P_NO_CLASS            H5P_ROOT
473 
474 
475 /* Typedefs */
476 
477 /* Function prototypes */
478 herr_t H5Pregister1(hid_t cls_id, const char *name, size_t size,
479     void *def_value, H5P_prp_create_func_t prp_create,
480     H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
481     H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy,
482     H5P_prp_close_func_t prp_close);
483 herr_t H5Pinsert1(hid_t plist_id, const char *name, size_t size,
484     void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
485     H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
486     H5P_prp_close_func_t prp_close);
487 H5Z_filter_t H5Pget_filter1(hid_t plist_id, uint filter,
488     int *flags/*out*/, size_t *cd_nelmts/*out*/,
489     uint[] cd_values/*out*/, size_t namelen, char[] name);
490 herr_t H5Pget_filter_by_id1(hid_t plist_id, H5Z_filter_t id,
491     int *flags/*out*/, size_t *cd_nelmts/*out*/,
492     uint[] cd_values/*out*/, size_t namelen, char[] name/*out*/);
493 
494 #endif /* H5_NO_DEPRECATED_SYMBOLS */
495 +/
496