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 /*
17  * This file contains function prototypes for each exported function in the
18  * H5P module.
19  */
20 #ifndef _H5Ppublic_H
21 #define _H5Ppublic_H
22 
23 /* System headers needed by this file */
24 
25 /* Public headers needed by this file */
26 #include "H5public.h"
27 #include "H5ACpublic.h"
28 #include "H5Dpublic.h"
29 #include "H5Fpublic.h"
30 #include "H5FDpublic.h"
31 #include "H5Ipublic.h"
32 #include "H5Lpublic.h"
33 #include "H5MMpublic.h"
34 #include "H5Tpublic.h"
35 #include "H5Zpublic.h"
36 
37 
38 /*****************/
39 /* Public Macros */
40 /*****************/
41 
42 /* When this header is included from a private HDF5 header, don't make calls to H5open() */
43 #undef H5OPEN
44 #ifndef _H5private_H
45 #define H5OPEN        H5open(),
46 #else   /* _H5private_H */
47 #define H5OPEN
48 #endif  /* _H5private_H */
49 
50 /*
51  * The library's property list classes
52  */
53 
54 #define H5P_ROOT		   	(H5OPEN H5P_CLS_ROOT_g)
55 #define H5P_OBJECT_CREATE 		(H5OPEN H5P_CLS_OBJECT_CREATE_g)
56 #define H5P_FILE_CREATE 		(H5OPEN H5P_CLS_FILE_CREATE_g)
57 #define H5P_FILE_ACCESS 		(H5OPEN H5P_CLS_FILE_ACCESS_g)
58 #define H5P_DATASET_CREATE     		(H5OPEN H5P_CLS_DATASET_CREATE_g)
59 #define H5P_DATASET_ACCESS     		(H5OPEN H5P_CLS_DATASET_ACCESS_g)
60 #define H5P_DATASET_XFER       		(H5OPEN H5P_CLS_DATASET_XFER_g)
61 #define H5P_FILE_MOUNT       		(H5OPEN H5P_CLS_FILE_MOUNT_g)
62 #define H5P_GROUP_CREATE 		(H5OPEN H5P_CLS_GROUP_CREATE_g)
63 #define H5P_GROUP_ACCESS 		(H5OPEN H5P_CLS_GROUP_ACCESS_g)
64 #define H5P_DATATYPE_CREATE 		(H5OPEN H5P_CLS_DATATYPE_CREATE_g)
65 #define H5P_DATATYPE_ACCESS 		(H5OPEN H5P_CLS_DATATYPE_ACCESS_g)
66 #define H5P_STRING_CREATE 		(H5OPEN H5P_CLS_STRING_CREATE_g)
67 #define H5P_ATTRIBUTE_CREATE 		(H5OPEN H5P_CLS_ATTRIBUTE_CREATE_g)
68 #define H5P_OBJECT_COPY	 		(H5OPEN H5P_CLS_OBJECT_COPY_g)
69 #define H5P_LINK_CREATE 		(H5OPEN H5P_CLS_LINK_CREATE_g)
70 #define H5P_LINK_ACCESS 		(H5OPEN H5P_CLS_LINK_ACCESS_g)
71 
72 /*
73  * The library's default property lists
74  */
75 #define H5P_FILE_CREATE_DEFAULT		(H5OPEN H5P_LST_FILE_CREATE_g)
76 #define H5P_FILE_ACCESS_DEFAULT 	(H5OPEN H5P_LST_FILE_ACCESS_g)
77 #define H5P_DATASET_CREATE_DEFAULT  	(H5OPEN H5P_LST_DATASET_CREATE_g)
78 #define H5P_DATASET_ACCESS_DEFAULT  	(H5OPEN H5P_LST_DATASET_ACCESS_g)
79 #define H5P_DATASET_XFER_DEFAULT   	(H5OPEN H5P_LST_DATASET_XFER_g)
80 #define H5P_FILE_MOUNT_DEFAULT       	(H5OPEN H5P_LST_FILE_MOUNT_g)
81 #define H5P_GROUP_CREATE_DEFAULT	(H5OPEN H5P_LST_GROUP_CREATE_g)
82 #define H5P_GROUP_ACCESS_DEFAULT 	(H5OPEN H5P_LST_GROUP_ACCESS_g)
83 #define H5P_DATATYPE_CREATE_DEFAULT	(H5OPEN H5P_LST_DATATYPE_CREATE_g)
84 #define H5P_DATATYPE_ACCESS_DEFAULT 	(H5OPEN H5P_LST_DATATYPE_ACCESS_g)
85 #define H5P_ATTRIBUTE_CREATE_DEFAULT	(H5OPEN H5P_LST_ATTRIBUTE_CREATE_g)
86 #define H5P_OBJECT_COPY_DEFAULT		(H5OPEN H5P_LST_OBJECT_COPY_g)
87 #define H5P_LINK_CREATE_DEFAULT		(H5OPEN H5P_LST_LINK_CREATE_g)
88 #define H5P_LINK_ACCESS_DEFAULT		(H5OPEN H5P_LST_LINK_ACCESS_g)
89 
90 /* Common creation order flags (for links in groups and attributes on objects) */
91 #define H5P_CRT_ORDER_TRACKED           0x0001
92 #define H5P_CRT_ORDER_INDEXED           0x0002
93 
94 #ifdef __cplusplus
95 extern "C" {
96 #endif
97 
98 /*******************/
99 /* Public Typedefs */
100 /*******************/
101 
102 
103 /* Define property list class callback function pointer types */
104 typedef herr_t (*H5P_cls_create_func_t)(hid_t prop_id, void *create_data);
105 typedef herr_t (*H5P_cls_copy_func_t)(hid_t new_prop_id, hid_t old_prop_id,
106                                       void *copy_data);
107 typedef herr_t (*H5P_cls_close_func_t)(hid_t prop_id, void *close_data);
108 
109 /* Define property list callback function pointer types */
110 typedef herr_t (*H5P_prp_cb1_t)(const char *name, size_t size, void *value);
111 typedef herr_t (*H5P_prp_cb2_t)(hid_t prop_id, const char *name, size_t size, void *value);
112 typedef H5P_prp_cb1_t H5P_prp_create_func_t;
113 typedef H5P_prp_cb2_t H5P_prp_set_func_t;
114 typedef H5P_prp_cb2_t H5P_prp_get_func_t;
115 typedef H5P_prp_cb2_t H5P_prp_delete_func_t;
116 typedef H5P_prp_cb1_t H5P_prp_copy_func_t;
117 typedef int (*H5P_prp_compare_func_t)(const void *value1, const void *value2, size_t size);
118 typedef H5P_prp_cb1_t H5P_prp_close_func_t;
119 
120 /* Define property list iteration function type */
121 typedef herr_t (*H5P_iterate_t)(hid_t id, const char *name, void *iter_data);
122 
123 /********************/
124 /* Public Variables */
125 /********************/
126 
127 /* Property list class IDs */
128 /* (Internal to library, do not use!  Use macros above) */
129 H5_DLLVAR hid_t H5P_CLS_ROOT_g;
130 H5_DLLVAR hid_t H5P_CLS_OBJECT_CREATE_g;
131 H5_DLLVAR hid_t H5P_CLS_FILE_CREATE_g;
132 H5_DLLVAR hid_t H5P_CLS_FILE_ACCESS_g;
133 H5_DLLVAR hid_t H5P_CLS_DATASET_CREATE_g;
134 H5_DLLVAR hid_t H5P_CLS_DATASET_ACCESS_g;
135 H5_DLLVAR hid_t H5P_CLS_DATASET_XFER_g;
136 H5_DLLVAR hid_t H5P_CLS_FILE_MOUNT_g;
137 H5_DLLVAR hid_t H5P_CLS_GROUP_CREATE_g;
138 H5_DLLVAR hid_t H5P_CLS_GROUP_ACCESS_g;
139 H5_DLLVAR hid_t H5P_CLS_DATATYPE_CREATE_g;
140 H5_DLLVAR hid_t H5P_CLS_DATATYPE_ACCESS_g;
141 H5_DLLVAR hid_t H5P_CLS_STRING_CREATE_g;
142 H5_DLLVAR hid_t H5P_CLS_ATTRIBUTE_CREATE_g;
143 H5_DLLVAR hid_t H5P_CLS_OBJECT_COPY_g;
144 H5_DLLVAR hid_t H5P_CLS_LINK_CREATE_g;
145 H5_DLLVAR hid_t H5P_CLS_LINK_ACCESS_g;
146 
147 /* Default roperty list IDs */
148 /* (Internal to library, do not use!  Use macros above) */
149 H5_DLLVAR hid_t H5P_LST_FILE_CREATE_g;
150 H5_DLLVAR hid_t H5P_LST_FILE_ACCESS_g;
151 H5_DLLVAR hid_t H5P_LST_DATASET_CREATE_g;
152 H5_DLLVAR hid_t H5P_LST_DATASET_ACCESS_g;
153 H5_DLLVAR hid_t H5P_LST_DATASET_XFER_g;
154 H5_DLLVAR hid_t H5P_LST_FILE_MOUNT_g;
155 H5_DLLVAR hid_t H5P_LST_GROUP_CREATE_g;
156 H5_DLLVAR hid_t H5P_LST_GROUP_ACCESS_g;
157 H5_DLLVAR hid_t H5P_LST_DATATYPE_CREATE_g;
158 H5_DLLVAR hid_t H5P_LST_DATATYPE_ACCESS_g;
159 H5_DLLVAR hid_t H5P_LST_ATTRIBUTE_CREATE_g;
160 H5_DLLVAR hid_t H5P_LST_OBJECT_COPY_g;
161 H5_DLLVAR hid_t H5P_LST_LINK_CREATE_g;
162 H5_DLLVAR hid_t H5P_LST_LINK_ACCESS_g;
163 
164 /*********************/
165 /* Public Prototypes */
166 /*********************/
167 
168 /* Generic property list routines */
169 H5_DLL hid_t H5Pcreate_class(hid_t parent, const char *name,
170     H5P_cls_create_func_t cls_create, void *create_data,
171     H5P_cls_copy_func_t cls_copy, void *copy_data,
172     H5P_cls_close_func_t cls_close, void *close_data);
173 H5_DLL char *H5Pget_class_name(hid_t pclass_id);
174 H5_DLL hid_t H5Pcreate(hid_t cls_id);
175 H5_DLL herr_t H5Pregister2(hid_t cls_id, const char *name, size_t size,
176     void *def_value, H5P_prp_create_func_t prp_create,
177     H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
178     H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy,
179     H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
180 H5_DLL herr_t H5Pinsert2(hid_t plist_id, const char *name, size_t size,
181     void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
182     H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
183     H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
184 H5_DLL herr_t H5Pset(hid_t plist_id, const char *name, void *value);
185 H5_DLL htri_t H5Pexist(hid_t plist_id, const char *name);
186 H5_DLL herr_t H5Pget_size(hid_t id, const char *name, size_t *size);
187 H5_DLL herr_t H5Pget_nprops(hid_t id, size_t *nprops);
188 H5_DLL hid_t H5Pget_class(hid_t plist_id);
189 H5_DLL hid_t H5Pget_class_parent(hid_t pclass_id);
190 H5_DLL herr_t H5Pget(hid_t plist_id, const char *name, void * value);
191 H5_DLL htri_t H5Pequal(hid_t id1, hid_t id2);
192 H5_DLL htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id);
193 H5_DLL int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func,
194             void *iter_data);
195 H5_DLL herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name);
196 H5_DLL herr_t H5Premove(hid_t plist_id, const char *name);
197 H5_DLL herr_t H5Punregister(hid_t pclass_id, const char *name);
198 H5_DLL herr_t H5Pclose_class(hid_t plist_id);
199 H5_DLL herr_t H5Pclose(hid_t plist_id);
200 H5_DLL hid_t H5Pcopy(hid_t plist_id);
201 
202 /* Object creation property list (OCPL) routines */
203 H5_DLL herr_t H5Pset_attr_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense);
204 H5_DLL herr_t H5Pget_attr_phase_change(hid_t plist_id, unsigned *max_compact, unsigned *min_dense);
205 H5_DLL herr_t H5Pset_attr_creation_order(hid_t plist_id, unsigned crt_order_flags);
206 H5_DLL herr_t H5Pget_attr_creation_order(hid_t plist_id, unsigned *crt_order_flags);
207 H5_DLL herr_t H5Pset_obj_track_times(hid_t plist_id, hbool_t track_times);
208 H5_DLL herr_t H5Pget_obj_track_times(hid_t plist_id, hbool_t *track_times);
209 H5_DLL herr_t H5Pmodify_filter(hid_t plist_id, H5Z_filter_t filter,
210         unsigned int flags, size_t cd_nelmts,
211         const unsigned int cd_values[/*cd_nelmts*/]);
212 H5_DLL herr_t H5Pset_filter(hid_t plist_id, H5Z_filter_t filter,
213         unsigned int flags, size_t cd_nelmts,
214         const unsigned int c_values[]);
215 H5_DLL int H5Pget_nfilters(hid_t plist_id);
216 H5_DLL H5Z_filter_t H5Pget_filter2(hid_t plist_id, unsigned filter,
217        unsigned int *flags/*out*/,
218        size_t *cd_nelmts/*out*/,
219        unsigned cd_values[]/*out*/,
220        size_t namelen, char name[],
221        unsigned *filter_config /*out*/);
222 H5_DLL herr_t H5Pget_filter_by_id2(hid_t plist_id, H5Z_filter_t id,
223        unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/,
224        unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/,
225        unsigned *filter_config/*out*/);
226 H5_DLL htri_t H5Pall_filters_avail(hid_t plist_id);
227 H5_DLL herr_t H5Premove_filter(hid_t plist_id, H5Z_filter_t filter);
228 H5_DLL herr_t H5Pset_deflate(hid_t plist_id, unsigned aggression);
229 H5_DLL herr_t H5Pset_fletcher32(hid_t plist_id);
230 
231 /* File creation property list (FCPL) routines */
232 H5_DLL herr_t H5Pget_version(hid_t plist_id, unsigned *boot/*out*/,
233          unsigned *freelist/*out*/, unsigned *stab/*out*/,
234          unsigned *shhdr/*out*/);
235 H5_DLL herr_t H5Pset_userblock(hid_t plist_id, hsize_t size);
236 H5_DLL herr_t H5Pget_userblock(hid_t plist_id, hsize_t *size);
237 H5_DLL herr_t H5Pset_sizes(hid_t plist_id, size_t sizeof_addr,
238        size_t sizeof_size);
239 H5_DLL herr_t H5Pget_sizes(hid_t plist_id, size_t *sizeof_addr/*out*/,
240        size_t *sizeof_size/*out*/);
241 H5_DLL herr_t H5Pset_sym_k(hid_t plist_id, unsigned ik, unsigned lk);
242 H5_DLL herr_t H5Pget_sym_k(hid_t plist_id, unsigned *ik/*out*/, unsigned *lk/*out*/);
243 H5_DLL herr_t H5Pset_istore_k(hid_t plist_id, unsigned ik);
244 H5_DLL herr_t H5Pget_istore_k(hid_t plist_id, unsigned *ik/*out*/);
245 H5_DLL herr_t H5Pset_shared_mesg_nindexes(hid_t plist_id, unsigned nindexes);
246 H5_DLL herr_t H5Pget_shared_mesg_nindexes(hid_t plist_id, unsigned *nindexes);
247 H5_DLL herr_t H5Pset_shared_mesg_index(hid_t plist_id, unsigned index_num, unsigned mesg_type_flags, unsigned min_mesg_size);
248 H5_DLL herr_t H5Pget_shared_mesg_index(hid_t plist_id, unsigned index_num, unsigned *mesg_type_flags, unsigned *min_mesg_size);
249 H5_DLL herr_t H5Pset_shared_mesg_phase_change(hid_t plist_id, unsigned max_list, unsigned min_btree);
250 H5_DLL herr_t H5Pget_shared_mesg_phase_change(hid_t plist_id, unsigned *max_list, unsigned *min_btree);
251 
252 
253 /* File access property list (FAPL) routines */
254 H5_DLL herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold,
255     hsize_t alignment);
256 H5_DLL herr_t H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/,
257     hsize_t *alignment/*out*/);
258 H5_DLL herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id,
259         const void *driver_info);
260 H5_DLL hid_t H5Pget_driver(hid_t plist_id);
261 H5_DLL void *H5Pget_driver_info(hid_t plist_id);
262 H5_DLL herr_t H5Pset_family_offset(hid_t fapl_id, hsize_t offset);
263 H5_DLL herr_t H5Pget_family_offset(hid_t fapl_id, hsize_t *offset);
264 H5_DLL herr_t H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type);
265 H5_DLL herr_t H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type);
266 H5_DLL herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts,
267        size_t rdcc_nslots, size_t rdcc_nbytes,
268        double rdcc_w0);
269 H5_DLL herr_t H5Pget_cache(hid_t plist_id,
270        int *mdc_nelmts, /* out */
271        size_t *rdcc_nslots/*out*/,
272        size_t *rdcc_nbytes/*out*/, double *rdcc_w0);
273 H5_DLL herr_t H5Pset_mdc_config(hid_t    plist_id,
274        H5AC_cache_config_t * config_ptr);
275 H5_DLL herr_t H5Pget_mdc_config(hid_t     plist_id,
276        H5AC_cache_config_t * config_ptr);	/* out */
277 H5_DLL herr_t H5Pset_gc_references(hid_t fapl_id, unsigned gc_ref);
278 H5_DLL herr_t H5Pget_gc_references(hid_t fapl_id, unsigned *gc_ref/*out*/);
279 H5_DLL herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t degree);
280 H5_DLL herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *degree);
281 H5_DLL herr_t H5Pset_meta_block_size(hid_t fapl_id, hsize_t size);
282 H5_DLL herr_t H5Pget_meta_block_size(hid_t fapl_id, hsize_t *size/*out*/);
283 H5_DLL herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size);
284 H5_DLL herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size/*out*/);
285 H5_DLL herr_t H5Pset_small_data_block_size(hid_t fapl_id, hsize_t size);
286 H5_DLL herr_t H5Pget_small_data_block_size(hid_t fapl_id, hsize_t *size/*out*/);
287 H5_DLL herr_t H5Pset_libver_bounds(hid_t plist_id, H5F_libver_t low,
288     H5F_libver_t high);
289 H5_DLL herr_t H5Pget_libver_bounds(hid_t plist_id, H5F_libver_t *low,
290     H5F_libver_t *high);
291 
292 /* Dataset creation property list (DCPL) routines */
293 H5_DLL herr_t H5Pset_layout(hid_t plist_id, H5D_layout_t layout);
294 H5_DLL H5D_layout_t H5Pget_layout(hid_t plist_id);
295 H5_DLL herr_t H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[/*ndims*/]);
296 H5_DLL int H5Pget_chunk(hid_t plist_id, int max_ndims, hsize_t dim[]/*out*/);
297 H5_DLL herr_t H5Pset_external(hid_t plist_id, const char *name, off_t offset,
298           hsize_t size);
299 H5_DLL int H5Pget_external_count(hid_t plist_id);
300 H5_DLL herr_t H5Pget_external(hid_t plist_id, unsigned idx, size_t name_size,
301           char *name/*out*/, off_t *offset/*out*/,
302           hsize_t *size/*out*/);
303 H5_DLL herr_t H5Pset_szip(hid_t plist_id, unsigned options_mask, unsigned pixels_per_block);
304 H5_DLL herr_t H5Pset_shuffle(hid_t plist_id);
305 H5_DLL herr_t H5Pset_nbit(hid_t plist_id);
306 H5_DLL herr_t H5Pset_scaleoffset(hid_t plist_id, H5Z_SO_scale_type_t scale_type, int scale_factor);
307 H5_DLL herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id,
308      const void *value);
309 H5_DLL herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id,
310      void *value/*out*/);
311 H5_DLL herr_t H5Pfill_value_defined(hid_t plist, H5D_fill_value_t *status);
312 H5_DLL herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t
313 	alloc_time);
314 H5_DLL herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t
315 	*alloc_time/*out*/);
316 H5_DLL herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time);
317 H5_DLL herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t
318 	*fill_time/*out*/);
319 
320 /* Dataset access property list (DAPL) routines */
321 H5_DLL herr_t H5Pset_chunk_cache(hid_t dapl_id, size_t rdcc_nslots,
322        size_t rdcc_nbytes, double rdcc_w0);
323 H5_DLL herr_t H5Pget_chunk_cache(hid_t dapl_id,
324        size_t *rdcc_nslots/*out*/,
325        size_t *rdcc_nbytes/*out*/,
326        double *rdcc_w0/*out*/);
327 
328 /* Dataset xfer property list (DXPL) routines */
329 H5_DLL herr_t H5Pset_data_transform(hid_t plist_id, const char* expression);
330 H5_DLL ssize_t H5Pget_data_transform(hid_t plist_id, char* expression /*out*/, size_t size);
331 H5_DLL herr_t H5Pset_buffer(hid_t plist_id, size_t size, void *tconv,
332         void *bkg);
333 H5_DLL size_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/,
334         void **bkg/*out*/);
335 H5_DLL herr_t H5Pset_preserve(hid_t plist_id, hbool_t status);
336 H5_DLL int H5Pget_preserve(hid_t plist_id);
337 H5_DLL herr_t H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check);
338 H5_DLL H5Z_EDC_t H5Pget_edc_check(hid_t plist_id);
339 H5_DLL herr_t H5Pset_filter_callback(hid_t plist_id, H5Z_filter_func_t func,
340                                      void* op_data);
341 H5_DLL herr_t H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
342        double right);
343 H5_DLL herr_t H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/,
344        double *middle/*out*/,
345        double *right/*out*/);
346 H5_DLL herr_t H5Pset_vlen_mem_manager(hid_t plist_id,
347                                        H5MM_allocate_t alloc_func,
348                                        void *alloc_info, H5MM_free_t free_func,
349                                        void *free_info);
350 H5_DLL herr_t H5Pget_vlen_mem_manager(hid_t plist_id,
351                                        H5MM_allocate_t *alloc_func,
352                                        void **alloc_info,
353                                        H5MM_free_t *free_func,
354                                        void **free_info);
355 H5_DLL herr_t H5Pset_hyper_vector_size(hid_t fapl_id, size_t size);
356 H5_DLL herr_t H5Pget_hyper_vector_size(hid_t fapl_id, size_t *size/*out*/);
357 H5_DLL herr_t H5Pset_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t op, void* operate_data);
358 H5_DLL herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, void** operate_data);
359 
360 /* Link creation property list (LCPL) routines */
361 H5_DLL herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd);
362 H5_DLL herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd /*out*/);
363 
364 /* Group creation property list (GCPL) routines */
365 H5_DLL herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint);
366 H5_DLL herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint /*out*/);
367 H5_DLL herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense);
368 H5_DLL herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact /*out*/, unsigned *min_dense /*out*/);
369 H5_DLL herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len);
370 H5_DLL herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries /* out */, unsigned *est_name_len /* out */);
371 H5_DLL herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags);
372 H5_DLL herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags /* out */);
373 
374 /* String creation property list (STRCPL) routines */
375 H5_DLL herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding);
376 H5_DLL herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding /*out*/);
377 
378 /* Link access property list (LAPL) routines */
379 H5_DLL herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks);
380 H5_DLL herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks);
381 H5_DLL herr_t H5Pset_elink_prefix(hid_t plist_id, const char *prefix);
382 H5_DLL ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size);
383 H5_DLL hid_t H5Pget_elink_fapl(hid_t lapl_id);
384 H5_DLL herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id);
385 H5_DLL herr_t H5Pset_elink_acc_flags(hid_t lapl_id, unsigned flags);
386 H5_DLL herr_t H5Pget_elink_acc_flags(hid_t lapl_id, unsigned *flags);
387 H5_DLL herr_t H5Pset_elink_cb(hid_t lapl_id, H5L_elink_traverse_t func, void *op_data);
388 H5_DLL herr_t H5Pget_elink_cb(hid_t lapl_id, H5L_elink_traverse_t *func, void **op_data);
389 
390 /* Object copy property list (OCPYPL) routines */
391 H5_DLL herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd);
392 H5_DLL herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd /*out*/);
393 
394 /* Symbols defined for compatibility with previous versions of the HDF5 API.
395  *
396  * Use of these symbols is deprecated.
397  */
398 #ifndef H5_NO_DEPRECATED_SYMBOLS
399 
400 /* Macros */
401 
402 /* We renamed the "root" of the property list class hierarchy */
403 #define H5P_NO_CLASS            H5P_ROOT
404 
405 
406 /* Typedefs */
407 
408 
409 /* Function prototypes */
410 H5_DLL herr_t H5Pregister1(hid_t cls_id, const char *name, size_t size,
411     void *def_value, H5P_prp_create_func_t prp_create,
412     H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
413     H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy,
414     H5P_prp_close_func_t prp_close);
415 H5_DLL herr_t H5Pinsert1(hid_t plist_id, const char *name, size_t size,
416     void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
417     H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
418     H5P_prp_close_func_t prp_close);
419 H5_DLL H5Z_filter_t H5Pget_filter1(hid_t plist_id, unsigned filter,
420     unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/,
421     unsigned cd_values[]/*out*/, size_t namelen, char name[]);
422 H5_DLL herr_t H5Pget_filter_by_id1(hid_t plist_id, H5Z_filter_t id,
423     unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/,
424     unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/);
425 
426 #endif /* H5_NO_DEPRECATED_SYMBOLS */
427 
428 #ifdef __cplusplus
429 }
430 #endif
431 #endif /* _H5Ppublic_H */
432 
433