00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef H5G_PACKAGE
00025 #error "Do not include this file outside the H5G package!"
00026 #endif
00027 
00028 #ifndef _H5Gpkg_H
00029 #define _H5Gpkg_H
00030 
00031 
00032 #include "H5Gprivate.h"
00033 
00034 
00035 #include "H5ACprivate.h"        
00036 #include "H5B2private.h"        
00037 #include "H5FLprivate.h"        
00038 #include "H5HFprivate.h"        
00039 #include "H5HLprivate.h"        
00040 #include "H5Oprivate.h"         
00041 #include "H5SLprivate.h"        
00042 
00043 
00044 
00045 
00046 
00047 
00048 #define H5G_DENSE_FHEAP_ID_LEN  7
00049 
00050 
00051 
00052 
00053 
00054 
00055 #define H5G_TARGET_NORMAL       0x0000
00056 #define H5G_TARGET_SLINK        0x0001
00057 #define H5G_TARGET_MOUNT        0x0002
00058 #define H5G_TARGET_UDLINK       0x0004
00059 #define H5G_TARGET_EXISTS       0x0008
00060 #define H5G_CRT_INTMD_GROUP     0x0010
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 typedef enum H5G_cache_type_t {
00073     H5G_CACHED_ERROR    = -1,   
00074     H5G_NOTHING_CACHED  = 0,    
00075     H5G_CACHED_STAB     = 1,    
00076     H5G_CACHED_SLINK    = 2,    
00077 
00078     H5G_NCACHED                 
00079 } H5G_cache_type_t;
00080 
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 typedef union H5G_cache_t {
00089     struct {
00090         haddr_t btree_addr;             
00091         haddr_t heap_addr;              
00092     } stab;
00093 
00094     struct {
00095         size_t  lval_offset;            
00096     } slink;
00097 } H5G_cache_t;
00098 
00099 
00100 
00101 
00102 
00103 
00104 
00105 struct H5G_entry_t {
00106     hbool_t     dirty;                  
00107     H5G_cache_type_t type;              
00108     H5G_cache_t cache;                  
00109     size_t      name_off;               
00110     haddr_t     header;                 
00111     H5F_t       *file;                  
00112 };
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 typedef struct H5G_node_t {
00121     H5AC_info_t cache_info; 
00122                             
00123     unsigned nsyms;                     
00124     H5G_entry_t *entry;                 
00125 } H5G_node_t;
00126 
00127 
00128 
00129 
00130 struct H5G_shared_t {
00131     int fo_count;                   
00132     hbool_t mounted;                
00133 };
00134 
00135 
00136 
00137 
00138 
00139 struct H5G_t {
00140     H5G_shared_t *shared;               
00141     H5O_loc_t oloc;                     
00142     H5G_name_t path;                    
00143 };
00144 
00145 
00146 typedef herr_t (*H5G_lib_iterate_t)(const H5O_link_t *lnk, void *op_data);
00147 
00148 
00149 typedef enum H5G_link_iterate_op_type_t {
00150 #ifndef H5_NO_DEPRECATED_SYMBOLS
00151     H5G_LINK_OP_OLD,                
00152 #endif 
00153     H5G_LINK_OP_NEW                 
00154 } H5G_link_iterate_op_type_t;
00155 
00156 typedef struct {
00157     H5G_link_iterate_op_type_t op_type;
00158     union {
00159 #ifndef H5_NO_DEPRECATED_SYMBOLS
00160         H5G_iterate_t op_old;           
00161 #endif 
00162         H5L_iterate_t op_new;           
00163     } op_func;
00164 } H5G_link_iterate_t;
00165 
00166 
00167 typedef struct {
00168     size_t      nlinks;         
00169     H5O_link_t *lnks;           
00170 } H5G_link_table_t;
00171 
00172 
00173 
00174 
00175 
00176 
00177 
00178 
00179 
00180 typedef struct H5G_bt_common_t {
00181     
00182     const char  *name;                  
00183     H5HL_t *heap;                       
00184 } H5G_bt_common_t;
00185 
00186 
00187 
00188 
00189 
00190 typedef struct H5G_bt_ins_t {
00191     
00192     H5G_bt_common_t common;          
00193     const H5O_link_t *lnk;              
00194 } H5G_bt_ins_t;
00195 
00196 
00197 
00198 
00199 
00200 typedef struct H5G_bt_rm_t {
00201     
00202     H5G_bt_common_t common;         
00203     H5RS_str_t *grp_full_path_r;    
00204 } H5G_bt_rm_t;
00205 
00206 
00207 typedef herr_t (*H5G_bt_find_op_t)(const H5G_entry_t *ent, void *operator_data);
00208 
00209 
00210 
00211 
00212 
00213 typedef struct H5G_bt_lkp_t {
00214     
00215     H5G_bt_common_t common;         
00216     H5G_bt_find_op_t op;            
00217     void *op_data;                  
00218 
00219     
00220 } H5G_bt_lkp_t;
00221 
00222 
00223 
00224 
00225 
00226 typedef struct H5G_bt_it_it_t {
00227     
00228     H5HL_t      *heap;          
00229     hsize_t     skip;           
00230     H5G_lib_iterate_t op;       
00231     void        *op_data;       
00232 
00233     
00234     hsize_t     *final_ent;     
00235 } H5G_bt_it_it_t;
00236 
00237 
00238 typedef struct H5G_bt_it_cpy_t {
00239     const H5O_loc_t *src_oloc;  
00240     haddr_t     src_heap_addr;  
00241     H5F_t       *dst_file;      
00242     H5O_stab_t  *dst_stab;      
00243     H5O_copy_t  *cpy_info;      
00244 } H5G_bt_it_cpy_t;
00245 
00246 
00247 typedef struct H5G_bt_it_idx_common_t {
00248     
00249     hsize_t     idx;            
00250     hsize_t     num_objs;       
00251     H5G_bt_find_op_t op;        
00252 } H5G_bt_it_idx_common_t;
00253 
00254 
00255 typedef struct H5G_bt_it_bt_t {
00256     
00257     size_t alloc_nlinks;        
00258     H5HL_t *heap;               
00259 
00260     
00261     H5G_link_table_t *ltable;   
00262 } H5G_bt_it_bt_t;
00263 
00264 
00265 
00266 
00267 
00268 
00269 typedef struct H5G_dense_bt2_name_rec_t {
00270     uint8_t id[H5G_DENSE_FHEAP_ID_LEN]; 
00271     uint32_t hash;                      
00272 } H5G_dense_bt2_name_rec_t;
00273 
00274 
00275 
00276 typedef struct H5G_dense_bt2_corder_rec_t {
00277     uint8_t id[H5G_DENSE_FHEAP_ID_LEN]; 
00278     int64_t corder;                     
00279 } H5G_dense_bt2_corder_rec_t;
00280 
00281 
00282 
00283 
00284 
00285 
00286 typedef struct H5G_bt2_ud_common_t {
00287     
00288     H5F_t       *f;                     
00289     hid_t       dxpl_id;                
00290     H5HF_t      *fheap;                 
00291     const char  *name;                  
00292     uint32_t    name_hash;              
00293     int64_t     corder;                 
00294     H5B2_found_t found_op;              
00295     void        *found_op_data;         
00296 } H5G_bt2_ud_common_t;
00297 
00298 
00299 
00300 
00301 
00302 typedef struct H5G_bt2_ud_ins_t {
00303     
00304     H5G_bt2_ud_common_t common;         
00305     uint8_t id[H5G_DENSE_FHEAP_ID_LEN]; 
00306 } H5G_bt2_ud_ins_t;
00307 
00308 
00309 
00310 
00311 
00312 
00313 
00314 
00315 
00316 
00317 
00318 typedef herr_t (*H5G_traverse_t)(H5G_loc_t *grp_loc, const char *name,
00319     const H5O_link_t *lnk, H5G_loc_t *obj_loc, void *operator_data,
00320     H5G_own_loc_t *own_loc);
00321 
00322 
00323 typedef struct {
00324     hid_t gcpl_id;              
00325 } H5G_obj_create_t;
00326 
00327 
00328 
00329 
00330 
00331 
00332 
00333 
00334 
00335 H5_DLLVAR H5B_class_t H5B_SNODE[1];
00336 
00337 
00338 H5_DLLVAR const H5AC_class_t H5AC_SNODE[1];
00339 
00340 
00341 H5_DLLVAR const H5B2_class_t H5G_BT2_NAME[1];
00342 
00343 
00344 H5_DLLVAR const H5B2_class_t H5G_BT2_CORDER[1];
00345 
00346 
00347 H5FL_EXTERN(H5G_t);
00348 
00349 
00350 H5FL_EXTERN(H5G_shared_t);
00351 
00352 
00353 
00354 
00355 
00356 
00357 
00358 
00359 H5_DLL H5G_t *H5G_create(H5F_t *file, hid_t gcpl_id, hid_t dxpl_id);
00360 H5_DLL H5G_t *H5G_create_named(const H5G_loc_t *loc, const char *name,
00361     hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id, hid_t dxpl_id);
00362 H5_DLL H5G_t *H5G_open_name(const H5G_loc_t *loc, const char *name,
00363     hid_t gapl_id, hid_t dxpl_id);
00364 H5_DLL herr_t H5G_iterate(hid_t loc_id, const char *group_name,
00365     H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_lnk,
00366     const H5G_link_iterate_t *lnk_op, void *op_data, hid_t lapl_id, hid_t dxpl_id);
00367 
00368 
00369 
00370 
00371 H5_DLL herr_t H5G_traverse_term_interface(void);
00372 H5_DLL herr_t H5G_traverse_special(const H5G_loc_t *grp_loc,
00373     const H5O_link_t *lnk, unsigned target, size_t *nlinks, hbool_t last_comp,
00374     H5G_loc_t *obj_loc, hbool_t *obj_exists, hid_t lapl_id, hid_t dxpl_id);
00375 H5_DLL herr_t H5G_traverse(const H5G_loc_t *loc, const char *name,
00376     unsigned target, H5G_traverse_t op, void *op_data, hid_t lapl_id,
00377     hid_t dxpl_id);
00378 
00379 
00380 
00381 
00382 H5_DLL herr_t H5G_init(void);
00383 H5_DLL char *H5G_normalize(const char *name);
00384 H5_DLL const char *H5G_component(const char *name, size_t *size_p);
00385 
00386 
00387 
00388 
00389 
00390 
00391 H5_DLL herr_t H5G_stab_create(H5O_loc_t *grp_oloc, hid_t dxpl_id,
00392     const H5O_ginfo_t *ginfo, H5O_stab_t *stab);
00393 H5_DLL herr_t H5G_stab_create_components(H5F_t *f, H5O_stab_t *stab, size_t size_hint, hid_t dxpl_id);
00394 H5_DLL herr_t H5G_stab_insert(const H5O_loc_t *grp_oloc, const char *name,
00395     H5O_link_t *obj_lnk, hid_t dxpl_id);
00396 H5_DLL herr_t H5G_stab_insert_real(H5F_t *f, H5O_stab_t *stab, const char *name,
00397     H5O_link_t *obj_lnk, hid_t dxpl_id);
00398 H5_DLL herr_t H5G_stab_delete(H5F_t *f, hid_t dxpl_id, const H5O_stab_t *stab);
00399 H5_DLL herr_t H5G_stab_iterate(const H5O_loc_t *oloc, hid_t dxpl_id, H5_iter_order_t order,
00400     hsize_t skip, hsize_t *last_lnk, H5G_lib_iterate_t op, void *op_data);
00401 H5_DLL herr_t H5G_stab_count(struct H5O_loc_t *oloc, hsize_t *num_objs, hid_t dxpl_id);
00402 H5_DLL herr_t H5G_stab_bh_size(H5F_t *f, hid_t dxpl_id, const H5O_stab_t *stab,
00403     H5_ih_info_t *bh_info);
00404 H5_DLL ssize_t H5G_stab_get_name_by_idx(H5O_loc_t *oloc, H5_iter_order_t order,
00405     hsize_t n, char* name, size_t size, hid_t dxpl_id);
00406 H5_DLL herr_t H5G_stab_remove(H5O_loc_t *oloc, hid_t dxpl_id,
00407     H5RS_str_t *grp_full_path_r, const char *name);
00408 H5_DLL herr_t H5G_stab_remove_by_idx(H5O_loc_t *oloc, hid_t dxpl_id,
00409     H5RS_str_t *grp_full_path_r, H5_iter_order_t order, hsize_t n);
00410 H5_DLL herr_t H5G_stab_lookup(H5O_loc_t *grp_oloc, const char *name,
00411     H5O_link_t *lnk, hid_t dxpl_id);
00412 H5_DLL herr_t H5G_stab_lookup_by_idx(H5O_loc_t *grp_oloc, H5_iter_order_t order,
00413     hsize_t n, H5O_link_t *lnk, hid_t dxpl_id);
00414 #ifndef H5_STRICT_FORMAT_CHECKS
00415 H5_DLL herr_t H5G_stab_valid(H5O_loc_t *grp_oloc, hid_t dxpl_id,
00416     H5O_stab_t *alt_stab);
00417 #endif 
00418 #ifndef H5_NO_DEPRECATED_SYMBOLS
00419 H5_DLL H5G_obj_t H5G_stab_get_type_by_idx(H5O_loc_t *oloc, hsize_t idx,
00420     hid_t dxpl_id);
00421 #endif 
00422 
00423 
00424 
00425 
00426 
00427 H5_DLL herr_t H5G_ent_copy(H5G_entry_t *dst, const H5G_entry_t *src,
00428             H5_copy_depth_t depth);
00429 H5_DLL herr_t H5G_ent_reset(H5G_entry_t *ent);
00430 H5_DLL herr_t H5G_ent_decode_vec(const H5F_t *f, const uint8_t **pp,
00431                                   H5G_entry_t *ent, unsigned n);
00432 H5_DLL herr_t H5G_ent_encode_vec(const H5F_t *f, uint8_t **pp,
00433                                   const H5G_entry_t *ent, unsigned n);
00434 H5_DLL herr_t H5G_ent_convert(H5F_t *f, hid_t dxpl_id, H5HL_t *heap,
00435     const char *name, const H5O_link_t *lnk, H5G_entry_t *ent);
00436 H5_DLL herr_t H5G_ent_debug(const H5G_entry_t *ent, FILE * stream, int indent,
00437     int fwidth, H5HL_t *heap);
00438 
00439 
00440 H5_DLL herr_t H5G_node_init(H5F_t *f);
00441 H5_DLL size_t H5G_node_size_real(const H5F_t *f);
00442 H5_DLL int H5G_node_iterate(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr,
00443                      const void *_rt_key, void *_udata);
00444 H5_DLL int H5G_node_sumup(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr,
00445                      const void *_rt_key, void *_udata);
00446 H5_DLL int H5G_node_by_idx(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr,
00447                      const void *_rt_key, void *_udata);
00448 H5_DLL int H5G_node_copy(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr,
00449                      const void *_rt_key, void *_udata);
00450 H5_DLL int H5G_node_build_table(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr,
00451                      const void *_rt_key, void *_udata);
00452 H5_DLL herr_t H5G_node_iterate_size(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr,
00453                      const void *_rt_key, void *_udata);
00454 
00455 
00456 H5_DLL int H5G_link_cmp_name_inc(const void *lnk1, const void *lnk2);
00457 H5_DLL int H5G_link_cmp_name_dec(const void *lnk1, const void *lnk2);
00458 H5_DLL int H5G_link_cmp_corder_inc(const void *lnk1, const void *lnk2);
00459 H5_DLL int H5G_link_cmp_corder_dec(const void *lnk1, const void *lnk2);
00460 H5_DLL herr_t H5G_ent_to_link(H5O_link_t *lnk, const H5HL_t *heap,
00461     const H5G_entry_t *ent, const char *name);
00462 H5_DLL herr_t H5G_link_to_info(const H5O_link_t *lnk, H5L_info_t *linfo);
00463 H5_DLL herr_t H5G_link_to_loc(const H5G_loc_t *grp_loc, const H5O_link_t *lnk,
00464     H5G_loc_t *obj_loc);
00465 H5_DLL herr_t H5G_link_copy_file(H5F_t *dst_file, hid_t dxpl_id,
00466     const H5O_link_t *_src_lnk, const H5O_loc_t *src_oloc, H5O_link_t *dst_lnk,
00467     H5O_copy_t *cpy_info);
00468 H5_DLL herr_t H5G_link_sort_table(H5G_link_table_t *ltable, H5_index_t idx_type,
00469     H5_iter_order_t order);
00470 H5_DLL herr_t H5G_link_iterate_table(const H5G_link_table_t *ltable,
00471     hsize_t skip, hsize_t *last_lnk, const H5G_lib_iterate_t op, void *op_data);
00472 H5_DLL herr_t H5G_link_release_table(H5G_link_table_t *ltable);
00473 H5_DLL herr_t H5G_link_name_replace(H5F_t *file, hid_t dxpl_id,
00474     H5RS_str_t *grp_full_path_r, const H5O_link_t *lnk);
00475 
00476 
00477 H5_DLL herr_t H5G_compact_insert(const H5O_loc_t *grp_oloc, H5O_link_t *obj_lnk,
00478     hid_t dxpl_id);
00479 H5_DLL ssize_t H5G_compact_get_name_by_idx(H5O_loc_t *oloc, hid_t dxpl_id,
00480     const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order,
00481     hsize_t idx, char *name, size_t size);
00482 H5_DLL herr_t H5G_compact_remove(const H5O_loc_t *oloc, hid_t dxpl_id,
00483     H5RS_str_t *grp_full_path_r, const char *name);
00484 H5_DLL herr_t H5G_compact_remove_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id,
00485     const H5O_linfo_t *linfo, H5RS_str_t *grp_full_path_r, H5_index_t idx_type,
00486     H5_iter_order_t order, hsize_t n);
00487 H5_DLL herr_t H5G_compact_iterate(const H5O_loc_t *oloc, hid_t dxpl_id,
00488     const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order,
00489     hsize_t skip, hsize_t *last_lnk, H5G_lib_iterate_t op, void *op_data);
00490 H5_DLL htri_t H5G_compact_lookup(H5O_loc_t *grp_oloc, const char *name,
00491     H5O_link_t *lnk, hid_t dxpl_id);
00492 H5_DLL herr_t H5G_compact_lookup_by_idx(H5O_loc_t *oloc, hid_t dxpl_id,
00493     const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order,
00494     hsize_t n, H5O_link_t *lnk);
00495 #ifndef H5_NO_DEPRECATED_SYMBOLS
00496 H5_DLL H5G_obj_t H5G_compact_get_type_by_idx(H5O_loc_t *oloc, hid_t dxpl_id,
00497     const H5O_linfo_t *linfo, hsize_t idx);
00498 #endif 
00499 
00500 
00501 H5_DLL herr_t H5G_dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_linfo_t *linfo,
00502     H5_index_t idx_type, H5_iter_order_t order, H5G_link_table_t *ltable);
00503 H5_DLL herr_t H5G_dense_create(H5F_t *f, hid_t dxpl_id, H5O_linfo_t *linfo,
00504     const H5O_pline_t *pline);
00505 H5_DLL herr_t H5G_dense_insert(H5F_t *f, hid_t dxpl_id,
00506     const H5O_linfo_t *linfo, const H5O_link_t *lnk);
00507 H5_DLL htri_t H5G_dense_lookup(H5F_t *f, hid_t dxpl_id,
00508     const H5O_linfo_t *linfo, const char *name, H5O_link_t *lnk);
00509 H5_DLL herr_t H5G_dense_lookup_by_idx(H5F_t *f, hid_t dxpl_id,
00510     const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order,
00511     hsize_t n, H5O_link_t *lnk);
00512 H5_DLL herr_t H5G_dense_iterate(H5F_t *f, hid_t dxpl_id, const H5O_linfo_t *linfo,
00513     H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_lnk,
00514     H5G_lib_iterate_t op, void *op_data);
00515 H5_DLL ssize_t H5G_dense_get_name_by_idx(H5F_t  *f, hid_t dxpl_id,
00516     H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
00517     char *name, size_t size);
00518 H5_DLL herr_t H5G_dense_remove(H5F_t *f, hid_t dxpl_id, const H5O_linfo_t *linfo,
00519     H5RS_str_t *grp_full_path_r, const char *name);
00520 H5_DLL herr_t H5G_dense_remove_by_idx(H5F_t *f, hid_t dxpl_id,
00521     const H5O_linfo_t *linfo, H5RS_str_t *grp_full_path_r, H5_index_t idx_type,
00522     H5_iter_order_t order, hsize_t n);
00523 H5_DLL herr_t H5G_dense_delete(H5F_t *f, hid_t dxpl_id, H5O_linfo_t *linfo,
00524     hbool_t adj_link);
00525 #ifndef H5_NO_DEPRECATED_SYMBOLS
00526 H5_DLL H5G_obj_t H5G_dense_get_type_by_idx(H5F_t  *f, hid_t dxpl_id,
00527     H5O_linfo_t *linfo, hsize_t idx);
00528 #endif 
00529 
00530 
00531 H5_DLL herr_t H5G_obj_create(H5F_t *f, hid_t dxpl_id, hid_t gcpl_id,
00532     H5O_loc_t *oloc);
00533 H5_DLL herr_t H5G_obj_create_real(H5F_t *f, hid_t dxpl_id, const H5O_ginfo_t *ginfo,
00534     const H5O_linfo_t *linfo, const H5O_pline_t *pline, hid_t gcpl_id,
00535     H5O_loc_t *oloc);
00536 H5_DLL htri_t H5G_obj_get_linfo(const H5O_loc_t *grp_oloc, H5O_linfo_t *linfo,
00537     hid_t dxpl_id);
00538 H5_DLL herr_t H5G_obj_insert(const H5O_loc_t *grp_oloc, const char *name,
00539     H5O_link_t *obj_lnk, hbool_t adj_link, hid_t dxpl_id);
00540 H5_DLL herr_t H5G_obj_iterate(const H5O_loc_t *grp_oloc,
00541     H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_lnk,
00542     H5G_lib_iterate_t op, void *op_data, hid_t dxpl_id);
00543 H5_DLL herr_t H5G_obj_info(H5O_loc_t *oloc, H5G_info_t *grp_info, hid_t dxpl_id);
00544 H5_DLL ssize_t H5G_obj_get_name_by_idx(H5O_loc_t *oloc, H5_index_t idx_type,
00545     H5_iter_order_t order, hsize_t n, char* name, size_t size, hid_t dxpl_id);
00546 H5_DLL herr_t H5G_obj_remove(H5O_loc_t *oloc, H5RS_str_t *grp_full_path_r,
00547     const char *name, hid_t dxpl_id);
00548 H5_DLL herr_t H5G_obj_remove_by_idx(H5O_loc_t *grp_oloc, H5RS_str_t *grp_full_path_r,
00549     H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t dxpl_id);
00550 H5_DLL htri_t H5G_obj_lookup(H5O_loc_t *grp_oloc, const char *name,
00551     H5O_link_t *lnk, hid_t dxpl_id);
00552 H5_DLL herr_t H5G_obj_lookup_by_idx(H5O_loc_t *grp_oloc, H5_index_t idx_type,
00553     H5_iter_order_t order, hsize_t n, H5O_link_t *lnk, hid_t dxpl_id);
00554 
00555 
00556 
00557 
00558 H5_DLL herr_t H5G_name_init(H5G_name_t *name, const char *path);
00559 H5_DLL herr_t H5G_name_set(H5G_name_t *loc, H5G_name_t *obj, const char *name);
00560 H5_DLL H5RS_str_t *H5G_build_fullpath_refstr_str(H5RS_str_t *path_r, const char *name);
00561 
00562 
00563 
00564 
00565 H5_DLL herr_t H5G_loc_root(H5F_t *f, H5G_loc_t *loc);
00566 H5_DLL herr_t H5G_loc_copy(H5G_loc_t *dst, const H5G_loc_t *src, H5_copy_depth_t depth);
00567 H5_DLL herr_t H5G_loc_insert(H5G_loc_t *grp_loc, const char *name,
00568     H5G_loc_t *obj_loc, hid_t dxpl_id);
00569 
00570 
00571 #ifdef H5G_TESTING
00572 H5_DLL htri_t H5G_is_empty_test(hid_t gid);
00573 H5_DLL htri_t H5G_has_links_test(hid_t gid, unsigned *nmsgs);
00574 H5_DLL htri_t H5G_has_stab_test(hid_t gid);
00575 H5_DLL htri_t H5G_is_new_dense_test(hid_t gid);
00576 H5_DLL herr_t H5G_new_dense_info_test(hid_t gid, hsize_t *name_count, hsize_t *corder_count);
00577 H5_DLL herr_t H5G_lheap_size_test(hid_t gid, size_t *lheap_size);
00578 H5_DLL herr_t H5G_user_path_test(hid_t obj_id, char *user_path, size_t *user_path_len, unsigned *user_path_hidden);
00579 H5_DLL herr_t H5G_verify_cached_stab_test(H5O_loc_t *grp_oloc, H5G_entry_t *ent);
00580 #endif 
00581 
00582 #endif 
00583