00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 #ifndef _H5Lpublic_H
00027 #define _H5Lpublic_H
00028 
00029 
00030 #include "H5public.h"           
00031 #include "H5Ipublic.h"          
00032 #include "H5Tpublic.h"          
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 #define H5L_MAX_LINK_NAME_LEN   ((uint32_t)(-1))  
00041 
00042 
00043 #define H5L_SAME_LOC 0
00044 
00045 
00046 #define H5L_LINK_CLASS_T_VERS 0
00047 
00048 #ifdef __cplusplus
00049 extern "C" {
00050 #endif
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 typedef enum {
00065     H5L_TYPE_ERROR = (-1),      
00066     H5L_TYPE_HARD = 0,          
00067     H5L_TYPE_SOFT = 1,          
00068     H5L_TYPE_EXTERNAL = 64,     
00069     H5L_TYPE_MAX = 255          
00070 } H5L_type_t;
00071 #define H5L_TYPE_BUILTIN_MAX H5L_TYPE_SOFT      
00072 #define H5L_TYPE_UD_MIN      H5L_TYPE_EXTERNAL  
00073 
00074 
00075 typedef struct {
00076     H5L_type_t          type;           
00077     hbool_t             corder_valid;   
00078     int64_t             corder;         
00079     H5T_cset_t          cset;           
00080     union {
00081         haddr_t         address;        
00082         size_t          val_size;       
00083     } u;
00084 } H5L_info_t;
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 typedef herr_t (*H5L_create_func_t)(const char *link_name, hid_t loc_group,
00093     const void *lnkdata, size_t lnkdata_size, hid_t lcpl_id);
00094 
00095 
00096 typedef herr_t (*H5L_move_func_t)(const char *new_name, hid_t new_loc,
00097     const void *lnkdata, size_t lnkdata_size);
00098 
00099 
00100 typedef herr_t (*H5L_copy_func_t)(const char *new_name, hid_t new_loc,
00101     const void *lnkdata, size_t lnkdata_size);
00102 
00103 
00104 typedef herr_t (*H5L_traverse_func_t)(const char *link_name, hid_t cur_group,
00105     const void *lnkdata, size_t lnkdata_size, hid_t lapl_id);
00106 
00107 
00108 typedef herr_t (*H5L_delete_func_t)(const char *link_name, hid_t file,
00109     const void *lnkdata, size_t lnkdata_size);
00110 
00111 
00112 
00113 typedef ssize_t (*H5L_query_func_t)(const char *link_name, const void *lnkdata,
00114     size_t lnkdata_size, void *buf , size_t buf_size);
00115 
00116 
00117 typedef struct {
00118     int version;                    
00119     H5L_type_t id;                  
00120     const char *comment;            
00121     H5L_create_func_t create_func;  
00122     H5L_move_func_t move_func;      
00123     H5L_copy_func_t copy_func;      
00124     H5L_traverse_func_t trav_func;  
00125     H5L_delete_func_t del_func;     
00126     H5L_query_func_t query_func;    
00127 } H5L_class_t;
00128 
00129 
00130 typedef herr_t (*H5L_iterate_t)(hid_t group, const char *name, const H5L_info_t *info,
00131     void *op_data);
00132 
00133 
00134 typedef herr_t (*H5L_elink_traverse_t)(const char *parent_file_name,
00135     const char *parent_group_name, const char *child_file_name,
00136     const char *child_object_name, unsigned *acc_flags, hid_t fapl_id,
00137     void *op_data);
00138 
00139 
00140 
00141 
00142 
00143 
00144 
00145 
00146 
00147 
00148 H5_DLL herr_t H5Lmove(hid_t src_loc, const char *src_name, hid_t dst_loc,
00149     const char *dst_name, hid_t lcpl_id, hid_t lapl_id);
00150 H5_DLL herr_t H5Lcopy(hid_t src_loc, const char *src_name, hid_t dst_loc,
00151     const char *dst_name, hid_t lcpl_id, hid_t lapl_id);
00152 H5_DLL herr_t H5Lcreate_hard(hid_t cur_loc, const char *cur_name,
00153     hid_t dst_loc, const char *dst_name, hid_t lcpl_id, hid_t lapl_id);
00154 H5_DLL herr_t H5Lcreate_soft(const char *link_target, hid_t link_loc_id,
00155     const char *link_name, hid_t lcpl_id, hid_t lapl_id);
00156 H5_DLL herr_t H5Ldelete(hid_t loc_id, const char *name, hid_t lapl_id);
00157 H5_DLL herr_t H5Ldelete_by_idx(hid_t loc_id, const char *group_name,
00158     H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id);
00159 H5_DLL herr_t H5Lget_val(hid_t loc_id, const char *name, void *buf,
00160     size_t size, hid_t lapl_id);
00161 H5_DLL herr_t H5Lget_val_by_idx(hid_t loc_id, const char *group_name,
00162     H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
00163     void *buf, size_t size, hid_t lapl_id);
00164 H5_DLL htri_t H5Lexists(hid_t loc_id, const char *name, hid_t lapl_id);
00165 H5_DLL herr_t H5Lget_info(hid_t loc_id, const char *name,
00166     H5L_info_t *linfo , hid_t lapl_id);
00167 H5_DLL herr_t H5Lget_info_by_idx(hid_t loc_id, const char *group_name,
00168     H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
00169     H5L_info_t *linfo , hid_t lapl_id);
00170 H5_DLL ssize_t H5Lget_name_by_idx(hid_t loc_id, const char *group_name,
00171     H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
00172     char *name , size_t size, hid_t lapl_id);
00173 H5_DLL herr_t H5Literate(hid_t grp_id, H5_index_t idx_type,
00174     H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data);
00175 H5_DLL herr_t H5Literate_by_name(hid_t loc_id, const char *group_name,
00176     H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx,
00177     H5L_iterate_t op, void *op_data, hid_t lapl_id);
00178 H5_DLL herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order,
00179     H5L_iterate_t op, void *op_data);
00180 H5_DLL herr_t H5Lvisit_by_name(hid_t loc_id, const char *group_name,
00181     H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op,
00182     void *op_data, hid_t lapl_id);
00183 
00184 
00185 H5_DLL herr_t H5Lcreate_ud(hid_t link_loc_id, const char *link_name,
00186     H5L_type_t link_type, const void *udata, size_t udata_size, hid_t lcpl_id,
00187     hid_t lapl_id);
00188 H5_DLL herr_t H5Lregister(const H5L_class_t *cls);
00189 H5_DLL herr_t H5Lunregister(H5L_type_t id);
00190 H5_DLL htri_t H5Lis_registered(H5L_type_t id);
00191 
00192 
00193 H5_DLL herr_t H5Lunpack_elink_val(const void *ext_linkval, size_t link_size,
00194    unsigned *flags, const char **filename, const char **obj_path );
00195 H5_DLL herr_t H5Lcreate_external(const char *file_name, const char *obj_name,
00196     hid_t link_loc_id, const char *link_name, hid_t lcpl_id, hid_t lapl_id);
00197 
00198 #ifdef __cplusplus
00199 }
00200 #endif
00201 #endif 
00202