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