H5Pprivate.h

00001 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00002  * Copyright by The HDF Group.                                               *
00003  * Copyright by the Board of Trustees of the University of Illinois.         *
00004  * All rights reserved.                                                      *
00005  *                                                                           *
00006  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
00007  * terms governing use, modification, and redistribution, is contained in    *
00008  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
00009  * of the source code distribution tree; Copyright.html can be found at the  *
00010  * root level of an installed copy of the electronic HDF5 document set and   *
00011  * is linked from the top-level documents page.  It can also be found at     *
00012  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
00013  * access to either file, you may request a copy from help@hdfgroup.org.     *
00014  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00015 
00016 /*
00017  * This file contains private information about the H5P module
00018  */
00019 #ifndef _H5Pprivate_H
00020 #define _H5Pprivate_H
00021 
00022 /* Include package's public header */
00023 #include "H5Ppublic.h"
00024 
00025 /* Private headers needed by this file */
00026 #include "H5private.h"          /* Generic Functions                    */
00027 #include "H5Oprivate.h"         /* Object headers                       */
00028 
00029 /**************************/
00030 /* Library Private Macros */
00031 /**************************/
00032 
00033 /* ========  String creation property names ======== */
00034 #define H5P_STRCRT_CHAR_ENCODING_NAME  "character_encoding"     /* Character set encoding for string */
00035 
00036 
00037 /****************************/
00038 /* Library Private Typedefs */
00039 /****************************/
00040 
00041 /* Forward declarations for anonymous H5P objects */
00042 typedef struct H5P_genplist_t H5P_genplist_t;
00043 typedef struct H5P_genclass_t H5P_genclass_t;
00044 
00045 
00046 /*****************************/
00047 /* Library Private Variables */
00048 /*****************************/
00049 
00050 
00051 /******************************/
00052 /* Library Private Prototypes */
00053 /******************************/
00054 
00055 /* Package initialization routine */
00056 H5_DLL herr_t H5P_init(void);
00057 
00058 /* Internal versions of API routines */
00059 H5_DLL herr_t H5P_close(void *_plist);
00060 H5_DLL hid_t H5P_create_id(H5P_genclass_t *pclass, hbool_t app_ref);
00061 H5_DLL hid_t H5P_copy_plist(H5P_genplist_t *old_plist, hbool_t app_ref);
00062 H5_DLL herr_t H5P_get(const H5P_genplist_t *plist, const char *name, void *value);
00063 H5_DLL herr_t H5P_set(H5P_genplist_t *plist, const char *name, const void *value);
00064 H5_DLL herr_t H5P_insert(H5P_genplist_t *plist, const char *name, size_t size,
00065     void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
00066     H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
00067     H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
00068 H5_DLL herr_t H5P_remove(hid_t plist_id, H5P_genplist_t *plist, const char *name);
00069 H5_DLL htri_t H5P_exist_plist(H5P_genplist_t *plist, const char *name);
00070 H5_DLL char *H5P_get_class_name(H5P_genclass_t *pclass);
00071 H5_DLL herr_t H5P_get_nprops_pclass(const H5P_genclass_t *pclass, size_t *nprops,
00072     hbool_t recurse);
00073 H5_DLL herr_t H5P_register(H5P_genclass_t *pclass, const char *name, size_t size,
00074     const void *def_value, H5P_prp_create_func_t prp_create, H5P_prp_set_func_t prp_set,
00075     H5P_prp_get_func_t prp_get, H5P_prp_delete_func_t prp_delete,
00076     H5P_prp_copy_func_t prp_copy, H5P_prp_compare_func_t prp_cmp,
00077     H5P_prp_close_func_t prp_close);
00078 H5_DLL hid_t H5P_get_driver(H5P_genplist_t *plist);
00079 H5_DLL void * H5P_get_driver_info(H5P_genplist_t *plist);
00080 H5_DLL herr_t H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id,
00081             const void *new_driver_info);
00082 H5_DLL herr_t H5P_set_vlen_mem_manager(H5P_genplist_t *plist,
00083         H5MM_allocate_t alloc_func, void *alloc_info, H5MM_free_t free_func,
00084         void *free_info);
00085 H5_DLL herr_t H5P_is_fill_value_defined(const H5O_fill_t *fill,
00086         H5D_fill_value_t *status);
00087 H5_DLL int H5P_fill_value_cmp(const void *value1, const void *value2,
00088     size_t size);
00089 
00090 /* *SPECIAL* Don't make more of these! -QAK */
00091 H5_DLL htri_t H5P_isa_class(hid_t plist_id, hid_t pclass_id);
00092 H5_DLL H5P_genplist_t *H5P_object_verify(hid_t plist_id, hid_t pclass_id);
00093 
00094 /* Private functions to "peek" at properties of a certain type */
00095 H5_DLL unsigned H5P_peek_unsigned(H5P_genplist_t *plist, const char *name);
00096 H5_DLL hid_t H5P_peek_hid_t(H5P_genplist_t *plist, const char *name);
00097 H5_DLL void *H5P_peek_voidp(H5P_genplist_t *plist, const char *name);
00098 H5_DLL size_t H5P_peek_size_t(H5P_genplist_t *plist, const char *name);
00099 
00100 /* Private DCPL routines */
00101 H5_DLL herr_t H5P_modify_filter(H5P_genplist_t *plist, H5Z_filter_t filter,
00102     unsigned flags, size_t cd_nelmts, const unsigned cd_values[/*cd_nelmts*/]);
00103 H5_DLL herr_t H5P_get_filter_by_id(H5P_genplist_t *plist, H5Z_filter_t id,
00104     unsigned int *flags/*out*/, size_t *cd_nelmts/*in_out*/,
00105     unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/,
00106     unsigned *filter_config);
00107 H5_DLL herr_t H5P_fill_value_defined(H5P_genplist_t *plist,
00108     H5D_fill_value_t *status);
00109 H5_DLL herr_t H5P_get_fill_value(H5P_genplist_t *plist, const H5T_t *type,
00110     void *value, hid_t dxpl_id);
00111 
00112 #endif /* _H5Pprivate_H */
00113