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 
00027 
00028 #ifndef _H5Oprivate_H
00029 #define _H5Oprivate_H
00030 
00031 
00032 #include "H5Opublic.h"          
00033 
00034 
00035 #include "H5Dpublic.h"          
00036 #include "H5Lpublic.h"          
00037 #include "H5Spublic.h"          
00038 
00039 
00040 #include "H5Fprivate.h"         
00041 #include "H5SLprivate.h"        
00042 #include "H5Tprivate.h"         
00043 #include "H5Zprivate.h"         
00044 
00045 
00046 typedef struct H5O_msg_class_t H5O_msg_class_t;
00047 typedef struct H5O_mesg_t H5O_mesg_t;
00048 typedef struct H5O_t H5O_t;
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 #define H5O_FHEAP_MAN_WIDTH                     4
00057 #define H5O_FHEAP_MAN_START_BLOCK_SIZE          1024
00058 #define H5O_FHEAP_MAN_MAX_DIRECT_SIZE           (64 * 1024)
00059 #define H5O_FHEAP_MAN_MAX_INDEX                 40
00060 #define H5O_FHEAP_MAN_START_ROOT_ROWS           1
00061 #define H5O_FHEAP_CHECKSUM_DBLOCKS              TRUE
00062 #define H5O_FHEAP_MAX_MAN_SIZE                  (4 * 1024)
00063 #define H5O_FHEAP_ID_LEN                        8
00064 
00065 
00066 #define H5O_MESG_MAX_SIZE       65536   
00067 #define H5O_ALL         (-1)            
00068 #define H5O_FIRST       (-2)            
00069 
00070 
00071 #define H5O_MSG_FLAG_CONSTANT   0x01u
00072 #define H5O_MSG_FLAG_SHARED     0x02u
00073 #define H5O_MSG_FLAG_DONTSHARE  0x04u
00074 #define H5O_MSG_FLAG_FAIL_IF_UNKNOWN 0x08u
00075 #define H5O_MSG_FLAG_MARK_IF_UNKNOWN 0x10u
00076 #define H5O_MSG_FLAG_WAS_UNKNOWN 0x20u
00077 #define H5O_MSG_FLAG_SHAREABLE  0x40u
00078 #define H5O_MSG_FLAG_BITS       (H5O_MSG_FLAG_CONSTANT|H5O_MSG_FLAG_SHARED|H5O_MSG_FLAG_DONTSHARE|H5O_MSG_FLAG_FAIL_IF_UNKNOWN|H5O_MSG_FLAG_MARK_IF_UNKNOWN|H5O_MSG_FLAG_WAS_UNKNOWN|H5O_MSG_FLAG_SHAREABLE)
00079 
00080 
00081 #define H5O_UPDATE_TIME         0x01u
00082 #define H5O_UPDATE_FORCE        0x02u   
00083 
00084 
00085 #define H5O_HASH_SIZE 32
00086 
00087 
00088 #define H5O_CRT_ATTR_MAX_COMPACT_NAME   "max compact attr"      
00089 #define H5O_CRT_ATTR_MIN_DENSE_NAME     "min dense attr"        
00090 #define H5O_CRT_OHDR_FLAGS_NAME         "object header flags"   
00091 #define H5O_CRT_PIPELINE_NAME           "pline"                 
00092 #define H5O_CRT_PIPELINE_DEF            {{0, NULL, H5O_NULL_ID, {{0, HADDR_UNDEF}}}, H5O_PLINE_VERSION_1, 0, 0, NULL}
00093 #ifdef H5O_ENABLE_BOGUS
00094 #define H5O_BOGUS_MSG_FLAGS_NAME        "bogus msg flags"       
00095 #define H5O_BOGUS_MSG_FLAGS_SIZE        sizeof(uint8_t)
00096 #endif 
00097 #ifdef H5O_ENABLE_BAD_MESG_COUNT
00098 #define H5O_BAD_MESG_COUNT_NAME         "bad message count"       
00099 #define H5O_BAD_MESG_COUNT_SIZE         sizeof(hbool_t)
00100 #endif 
00101 
00102 
00103 #define H5O_CPY_OPTION_NAME             "copy object"           
00104 
00105 
00106 #ifdef H5O_PACKAGE
00107 #define H5O_OH_GET_ADDR(O)    ((O)->chunk[0].addr)
00108 #else 
00109 #define H5O_OH_GET_ADDR(O)    (H5O_get_oh_addr(O))
00110 #endif 
00111 
00112 
00113 #define H5O_UPDATE_SHARED(SH_MESG, SH_TYPE, F, MSG_TYPE, CRT_IDX, OH_ADDR)    \
00114     (SH_MESG)->type = (SH_TYPE);                                              \
00115     (SH_MESG)->file = (F);                                                    \
00116     (SH_MESG)->msg_type_id = (MSG_TYPE);                                      \
00117     (SH_MESG)->u.loc.index = (CRT_IDX);                                       \
00118     (SH_MESG)->u.loc.oh_addr = (OH_ADDR);
00119 
00120 
00121 
00122 typedef union {
00123     uint8_t id[H5O_FHEAP_ID_LEN];       
00124     uint64_t val;                       
00125 } H5O_fheap_id_t;
00126 
00127 
00128 typedef struct H5O_loc_t {
00129     H5F_t       *file;          
00130     haddr_t     addr;           
00131     hbool_t     holding_file;   
00132 
00133 } H5O_loc_t;
00134 
00135 
00136 typedef struct H5O_copy_t {
00137     hbool_t copy_shallow;               
00138     hbool_t expand_soft_link;           
00139     hbool_t expand_ext_link;            
00140     hbool_t expand_ref;                 
00141     hbool_t copy_without_attr;          
00142     hbool_t preserve_null;              
00143     int     curr_depth;                 
00144     int     max_depth;                  
00145     H5SL_t  *map_list;                  
00146     H5O_t   *oh_dst;                    
00147 } H5O_copy_t;
00148 
00149 
00150 #define H5O_NULL_ID     0x0000          
00151 #define H5O_SDSPACE_ID  0x0001          
00152 #define H5O_LINFO_ID    0x0002          
00153 #define H5O_DTYPE_ID    0x0003          
00154 #define H5O_FILL_ID     0x0004          
00155 #define H5O_FILL_NEW_ID 0x0005          
00156 #define H5O_LINK_ID     0x0006          
00157 #define H5O_EFL_ID      0x0007          
00158 #define H5O_LAYOUT_ID   0x0008          
00159 #define H5O_BOGUS_ID    0x0009          
00160 #define H5O_GINFO_ID    0x000a          
00161 #define H5O_PLINE_ID    0x000b          
00162 #define H5O_ATTR_ID     0x000c          
00163 #define H5O_NAME_ID     0x000d          
00164 #define H5O_MTIME_ID    0x000e          
00165 #define H5O_SHMESG_ID   0x000f          
00166 #define H5O_CONT_ID     0x0010          
00167 #define H5O_STAB_ID     0x0011          
00168 #define H5O_MTIME_NEW_ID 0x0012         
00169 #define H5O_BTREEK_ID   0x0013          
00170 #define H5O_DRVINFO_ID  0x0014          
00171 #define H5O_AINFO_ID    0x0015          
00172 #define H5O_REFCOUNT_ID 0x0016          
00173 #define H5O_UNKNOWN_ID  0x0017          
00174                                         
00175 
00176 
00177 
00178 
00179 
00180 
00181 
00182 #define H5O_SHARE_TYPE_UNSHARED     0           
00183 #define H5O_SHARE_TYPE_SOHM         1           
00184 #define H5O_SHARE_TYPE_COMMITTED    2           
00185 #define H5O_SHARE_TYPE_HERE         3           
00186 
00187 
00188 #define H5O_IS_STORED_SHARED(T) ((((T) == H5O_SHARE_TYPE_SOHM) || ((T) == H5O_SHARE_TYPE_COMMITTED)) ? TRUE : FALSE)
00189 
00190 
00191 #define H5O_IS_TRACKED_SHARED(T) ((T) > 0)
00192 
00193 
00194 
00195 
00196 
00197 typedef struct H5O_mesg_loc_t {
00198     H5O_msg_crt_idx_t index;            
00199     haddr_t oh_addr;                    
00200 } H5O_mesg_loc_t;
00201 
00202 
00203 
00204 
00205 
00206 
00207 
00208 
00209 typedef struct H5O_shared_t {
00210     unsigned type;                      
00211     H5F_t *file;                        
00212     unsigned msg_type_id;               
00213     union {
00214         H5O_mesg_loc_t  loc;            
00215         H5O_fheap_id_t  heap_id;        
00216     } u;
00217 } H5O_shared_t;
00218 
00219 
00220 
00221 
00222 
00223 
00224 
00225 
00226 
00227 
00228 
00229 
00230 
00231 
00232 typedef struct H5O_linfo_t {
00233     
00234     hbool_t     track_corder;           
00235     hbool_t     index_corder;           
00236     int64_t     max_corder;             
00237     haddr_t     corder_bt2_addr;        
00238 
00239     
00240     hsize_t     nlinks;                 
00241     haddr_t     fheap_addr;             
00242     haddr_t     name_bt2_addr;          
00243 } H5O_linfo_t;
00244 
00245 
00246 
00247 #define H5O_FILL_VERSION_1      1
00248 
00249 #define H5O_FILL_VERSION_2      2
00250 
00251 #define H5O_FILL_VERSION_3      3
00252 
00253 
00254 
00255 #define H5O_FILL_VERSION_LATEST H5O_FILL_VERSION_3
00256 
00257 
00258 
00259 
00260 
00261 
00262 
00263 
00264 
00265 
00266 typedef struct H5O_fill_t {
00267     H5O_shared_t        sh_loc;         
00268 
00269     unsigned            version;        
00270     H5T_t               *type;          
00271     ssize_t             size;           
00272     void                *buf;           
00273     H5D_alloc_time_t    alloc_time;     
00274     H5D_fill_time_t     fill_time;      
00275     hbool_t             fill_defined;   
00276 } H5O_fill_t;
00277 
00278 
00279 
00280 
00281 
00282 typedef struct H5O_link_hard_t {
00283     haddr_t     addr;                   
00284 } H5O_link_hard_t;
00285 
00286 typedef struct H5O_link_soft_t {
00287     char        *name;                  
00288 } H5O_link_soft_t;
00289 
00290 typedef struct H5O_link_ud_t {
00291     void        *udata;                 
00292     size_t       size;                  
00293 } H5O_link_ud_t;
00294 
00295 typedef struct H5O_link_t {
00296     H5L_type_t  type;                   
00297     hbool_t     corder_valid;           
00298     int64_t     corder;                 
00299     H5T_cset_t  cset;                   
00300     char        *name;                  
00301     union {
00302         H5O_link_hard_t hard;           
00303         H5O_link_soft_t soft;           
00304         H5O_link_ud_t ud;               
00305     } u;
00306 } H5O_link_t;
00307 
00308 
00309 
00310 
00311 
00312 #define H5O_EFL_ALLOC           16      
00313 #define H5O_EFL_UNLIMITED       H5F_UNLIMITED 
00314 
00315 typedef struct H5O_efl_entry_t {
00316     size_t      name_offset;            
00317     char        *name;                  
00318     off_t       offset;                 
00319     hsize_t     size;                   
00320 } H5O_efl_entry_t;
00321 
00322 typedef struct H5O_efl_t {
00323     haddr_t     heap_addr;              
00324     size_t      nalloc;                 
00325     size_t      nused;                  
00326     H5O_efl_entry_t *slot;              
00327 } H5O_efl_t;
00328 
00329 
00330 
00331 
00332 
00333 
00334 #define H5O_LAYOUT_NDIMS        (H5S_MAX_RANK+1)
00335 
00336 
00337 #define H5O_LAYOUT_VERSION_1    1
00338 
00339 
00340 #define H5O_LAYOUT_VERSION_2    2
00341 
00342 
00343 
00344 
00345 
00346 
00347 #define H5O_LAYOUT_VERSION_3    3
00348 
00349 
00350 
00351 struct H5D_layout_ops_t;                
00352 struct H5D_chunk_ops_t;                 
00353 
00354 typedef struct H5O_storage_contig_t {
00355     haddr_t     addr;                   
00356     hsize_t     size;                   
00357 } H5O_storage_contig_t;
00358 
00359 typedef struct H5O_storage_chunk_btree_t {
00360     H5RC_t     *shared;                 
00361 } H5O_storage_chunk_btree_t;
00362 
00363 typedef struct H5O_storage_chunk_t {
00364     H5D_chunk_index_t idx_type;         
00365     haddr_t     idx_addr;               
00366     const struct H5D_chunk_ops_t *ops;  
00367     union {
00368         H5O_storage_chunk_btree_t btree; 
00369     } u;
00370 } H5O_storage_chunk_t;
00371 
00372 typedef struct H5O_storage_compact_t {
00373     hbool_t     dirty;                  
00374     size_t      size;                   
00375     void        *buf;                   
00376 } H5O_storage_compact_t;
00377 
00378 typedef struct H5O_storage_t {
00379     H5D_layout_t type;                  
00380     union {
00381         H5O_storage_contig_t contig;    
00382         H5O_storage_chunk_t chunk;      
00383         H5O_storage_compact_t compact;  
00384     } u;
00385 } H5O_storage_t;
00386 
00387 typedef struct H5O_layout_chunk_t {
00388     unsigned    ndims;                  
00389     uint32_t    dim[H5O_LAYOUT_NDIMS];  
00390     uint32_t    size;                   
00391     hsize_t     nchunks;                
00392     hsize_t     chunks[H5O_LAYOUT_NDIMS]; 
00393     hsize_t     down_chunks[H5O_LAYOUT_NDIMS];  
00394 } H5O_layout_chunk_t;
00395 
00396 typedef struct H5O_layout_t {
00397     H5D_layout_t type;                  
00398     unsigned version;                   
00399     const struct H5D_layout_ops_t *ops; 
00400     union {
00401         H5O_layout_chunk_t chunk;       
00402     } u;
00403     H5O_storage_t storage;              
00404 } H5O_layout_t;
00405 
00406 
00407 
00408 
00409 #ifdef H5O_ENABLE_BOGUS
00410 
00411 
00412 
00413 
00414 #define H5O_BOGUS_VALUE         0xdeadbeef
00415 typedef struct H5O_bogus_t {
00416     unsigned u;                         
00417 } H5O_bogus_t;
00418 #endif 
00419 
00420 
00421 
00422 
00423 
00424 
00425 
00426 
00427 typedef struct H5O_ginfo_t {
00428     
00429     uint32_t    lheap_size_hint;        
00430 
00431     
00432 
00433     
00434     hbool_t     store_link_phase_change;
00435     uint16_t    max_compact;            
00436     uint16_t    min_dense;              
00437 
00438     
00439     hbool_t     store_est_entry_info;   
00440     uint16_t    est_num_entries;        
00441     uint16_t    est_name_len;           
00442 } H5O_ginfo_t;
00443 
00444 
00445 
00446 
00447 
00448 
00449 
00450 #define H5O_PLINE_VERSION_1     1
00451 
00452 
00453 
00454 
00455 
00456 #define H5O_PLINE_VERSION_2     2
00457 
00458 
00459 
00460 #define H5O_PLINE_VERSION_LATEST H5O_PLINE_VERSION_2
00461 
00462 typedef struct H5O_pline_t {
00463     H5O_shared_t        sh_loc;         
00464 
00465     unsigned    version;                
00466     size_t      nalloc;                 
00467     size_t      nused;                  
00468     H5Z_filter_info_t *filter;          
00469 } H5O_pline_t;
00470 
00471 
00472 
00473 
00474 
00475 
00476 typedef struct H5O_name_t {
00477     char        *s;                     
00478 } H5O_name_t;
00479 
00480 
00481 
00482 
00483 
00484 
00485 
00486 typedef struct H5O_shmesg_table_t {
00487     haddr_t             addr;           
00488     unsigned            version;        
00489     unsigned            nindexes;       
00490 } H5O_shmesg_table_t;
00491 
00492 
00493 
00494 
00495 
00496 
00497 typedef struct H5O_cont_t {
00498     haddr_t     addr;                   
00499     size_t      size;                   
00500 
00501     
00502     unsigned    chunkno;                
00503 } H5O_cont_t;
00504 
00505 
00506 
00507 
00508 
00509 typedef struct H5O_stab_t {
00510     haddr_t     btree_addr;             
00511     haddr_t     heap_addr;              
00512 } H5O_stab_t;
00513 
00514 
00515 
00516 
00517 
00518 
00519 
00520 typedef struct H5O_btreek_t {
00521     unsigned        btree_k[H5B_NUM_BTREE_ID];  
00522     unsigned        sym_leaf_k;                 
00523 } H5O_btreek_t;
00524 
00525 
00526 
00527 
00528 
00529 
00530 typedef struct H5O_drvinfo_t {
00531     char                name[9];                
00532     size_t              len;                    
00533     uint8_t            *buf;                    
00534 } H5O_drvinfo_t;
00535 
00536 
00537 
00538 
00539 
00540 
00541 typedef struct H5O_ainfo_t {
00542     
00543     hbool_t     track_corder;           
00544     hbool_t     index_corder;           
00545     H5O_msg_crt_idx_t max_crt_idx;      
00546     haddr_t     corder_bt2_addr;        
00547 
00548     
00549     hsize_t     nattrs;                 
00550     haddr_t     fheap_addr;             
00551     haddr_t     name_bt2_addr;          
00552 } H5O_ainfo_t;
00553 
00554 
00555 
00556 
00557 
00558 typedef uint32_t H5O_refcount_t;        
00559 
00560 
00561 
00562 
00563 
00564 typedef unsigned H5O_unknown_t;         
00565 
00566 
00567 
00568 typedef herr_t (*H5O_operator_t)(const void *mesg, unsigned idx,
00569     void *operator_data);
00570 
00571 
00572 typedef herr_t (*H5O_lib_operator_t)(H5O_t *oh, H5O_mesg_t *mesg,
00573     unsigned sequence, hbool_t *oh_modified, void *operator_data);
00574 
00575 
00576 typedef enum H5O_mesg_operator_type_t {
00577     H5O_MESG_OP_APP,            
00578     H5O_MESG_OP_LIB             
00579 } H5O_mesg_operator_type_t;
00580 
00581 typedef struct {
00582     H5O_mesg_operator_type_t op_type;
00583     union {
00584         H5O_operator_t app_op;      
00585         H5O_lib_operator_t lib_op;  
00586     } u;
00587 } H5O_mesg_operator_t;
00588 
00589 
00590 
00591 typedef struct {
00592     H5O_type_t obj_type;        
00593     void *crt_info;             
00594     void *new_obj;              
00595 } H5O_obj_create_t;
00596 
00597 
00598 struct H5P_genplist_t;
00599 
00600 
00601 H5_DLL herr_t H5O_init(void);
00602 H5_DLL herr_t H5O_create(H5F_t *f, hid_t dxpl_id, size_t size_hint,
00603     hid_t ocpl_id, H5O_loc_t *loc);
00604 H5_DLL herr_t H5O_open(H5O_loc_t *loc);
00605 H5_DLL herr_t H5O_close(H5O_loc_t *loc);
00606 H5_DLL int H5O_link(const H5O_loc_t *loc, int adjust, hid_t dxpl_id);
00607 H5_DLL int H5O_link_oh(H5F_t *f, int adjust, hid_t dxpl_id, H5O_t *oh, unsigned *oh_flags);
00608 H5_DLL H5O_t *H5O_pin(H5O_loc_t *loc, hid_t dxpl_id);
00609 H5_DLL herr_t H5O_unpin(H5O_t *oh);
00610 H5_DLL herr_t H5O_touch(const H5O_loc_t *loc, hbool_t force, hid_t dxpl_id);
00611 H5_DLL herr_t H5O_touch_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
00612     hbool_t force);
00613 #ifdef H5O_ENABLE_BOGUS
00614 H5_DLL herr_t H5O_bogus_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned mesg_flags);
00615 #endif 
00616 H5_DLL herr_t H5O_delete(H5F_t *f, hid_t dxpl_id, haddr_t addr);
00617 H5_DLL herr_t H5O_get_hdr_info(const H5O_loc_t *oloc, hid_t dxpl_id, H5O_hdr_info_t *hdr);
00618 H5_DLL herr_t H5O_get_info(const H5O_loc_t *oloc, hid_t dxpl_id, hbool_t want_ih_info,
00619     H5O_info_t *oinfo);
00620 H5_DLL herr_t H5O_obj_type(const H5O_loc_t *loc, H5O_type_t *obj_type, hid_t dxpl_id);
00621 H5_DLL herr_t H5O_get_create_plist(const H5O_loc_t *loc, hid_t dxpl_id, struct H5P_genplist_t *oc_plist);
00622 H5_DLL hid_t H5O_open_name(H5G_loc_t *loc, const char *name, hid_t lapl_id, hbool_t app_ref);
00623 H5_DLL herr_t H5O_get_nlinks(const H5O_loc_t *loc, hid_t dxpl_id, hsize_t *nlinks);
00624 H5_DLL void *H5O_obj_create(H5F_t *f, H5O_type_t obj_type, void *crt_info, H5G_loc_t *obj_loc, hid_t dxpl_id);
00625 H5_DLL haddr_t H5O_get_oh_addr(const H5O_t *oh);
00626 H5_DLL herr_t H5O_get_rc_and_type(const H5O_loc_t *oloc, hid_t dxpl_id, unsigned *rc, H5O_type_t *otype);
00627 
00628 
00629 H5_DLL herr_t H5O_msg_create(const H5O_loc_t *loc, unsigned type_id, unsigned mesg_flags,
00630     unsigned update_flags, void *mesg, hid_t dxpl_id);
00631 H5_DLL herr_t H5O_msg_append_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned type_id,
00632     unsigned mesg_flags, unsigned update_flags, void *mesg);
00633 H5_DLL herr_t H5O_msg_write(const H5O_loc_t *loc, unsigned type_id,
00634     unsigned mesg_flags, unsigned update_flags, void *mesg, hid_t dxpl_id);
00635 H5_DLL herr_t H5O_msg_write_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
00636     unsigned type_id, unsigned mesg_flags, unsigned update_flags, void *mesg);
00637 H5_DLL void *H5O_msg_read(const H5O_loc_t *loc, unsigned type_id, void *mesg,
00638     hid_t dxpl_id);
00639 H5_DLL void *H5O_msg_read_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned type_id,
00640     void *mesg);
00641 H5_DLL herr_t H5O_msg_reset(unsigned type_id, void *native);
00642 H5_DLL void *H5O_msg_free(unsigned type_id, void *mesg);
00643 H5_DLL void *H5O_msg_copy(unsigned type_id, const void *mesg, void *dst);
00644 H5_DLL int H5O_msg_count(const H5O_loc_t *loc, unsigned type_id, hid_t dxpl_id);
00645 H5_DLL htri_t H5O_msg_exists(const H5O_loc_t *loc, unsigned type_id, hid_t dxpl_id);
00646 H5_DLL htri_t H5O_msg_exists_oh(const H5O_t *oh, unsigned type_id);
00647 H5_DLL herr_t H5O_msg_remove(const H5O_loc_t *loc, unsigned type_id, int sequence,
00648     hbool_t adj_link, hid_t dxpl_id);
00649 H5_DLL herr_t H5O_msg_remove_op(const H5O_loc_t *loc, unsigned type_id, int sequence,
00650     H5O_operator_t op, void *op_data, hbool_t adj_link, hid_t dxpl_id);
00651 H5_DLL herr_t H5O_msg_iterate(const H5O_loc_t *loc, unsigned type_id,
00652     const H5O_mesg_operator_t *op, void *op_data, hid_t dxpl_id);
00653 H5_DLL size_t H5O_msg_raw_size(const H5F_t *f, unsigned type_id,
00654     hbool_t disable_shared, const void *mesg);
00655 H5_DLL size_t H5O_msg_size_f(const H5F_t *f, hid_t ocpl_id, unsigned type_id,
00656     const void *mesg, size_t extra_raw);
00657 H5_DLL size_t H5O_msg_size_oh(const H5F_t *f, const H5O_t *oh, unsigned type_id,
00658     const void *mesg, size_t extra_raw);
00659 H5_DLL htri_t H5O_msg_is_shared(unsigned type_id, const void *mesg);
00660 H5_DLL htri_t H5O_msg_can_share(unsigned type_id, const void *mesg);
00661 H5_DLL htri_t H5O_msg_can_share_in_ohdr(unsigned type_id);
00662 H5_DLL herr_t H5O_msg_set_share(unsigned type_id, const H5O_shared_t *share,
00663     void *mesg);
00664 H5_DLL herr_t H5O_msg_reset_share(unsigned type_id, void *mesg);
00665 H5_DLL herr_t H5O_msg_get_crt_index(unsigned type_id, const void *mesg,
00666     H5O_msg_crt_idx_t *crt_idx);
00667 H5_DLL herr_t H5O_msg_encode(H5F_t *f, unsigned type_id, hbool_t disable_shared,
00668     unsigned char *buf, const void *obj);
00669 H5_DLL void* H5O_msg_decode(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh,
00670     unsigned type_id, const unsigned char *buf);
00671 H5_DLL herr_t H5O_msg_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh,
00672     unsigned type_id, void *mesg);
00673 
00674 
00675 H5_DLL herr_t H5O_copy_header_map(const H5O_loc_t *oloc_src, H5O_loc_t *oloc_dst ,
00676     hid_t dxpl_id, H5O_copy_t *cpy_info, hbool_t inc_depth);
00677 H5_DLL herr_t H5O_copy_expand_ref(H5F_t *file_src, void *_src_ref, hid_t dxpl_id,
00678     H5F_t *file_dst, void *_dst_ref, size_t ref_count, H5R_type_t ref_type,
00679     H5O_copy_t *cpy_info);
00680 
00681 
00682 H5_DLL herr_t H5O_debug_id(unsigned type_id, H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream, int indent, int fwidth);
00683 H5_DLL herr_t H5O_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent,
00684                          int fwidth);
00685 
00686 
00687 H5_DLL herr_t H5O_loc_reset(H5O_loc_t *loc);
00688 H5_DLL herr_t H5O_loc_copy(H5O_loc_t *dst, const H5O_loc_t *src, H5_copy_depth_t depth);
00689 H5_DLL herr_t H5O_loc_hold_file(H5O_loc_t *loc);
00690 H5_DLL herr_t H5O_loc_free(H5O_loc_t *loc);
00691 
00692 
00693 H5_DLL hsize_t H5O_efl_total_size(H5O_efl_t *efl);
00694 
00695 
00696 H5_DLL herr_t H5O_fill_reset_dyn(H5O_fill_t *fill);
00697 H5_DLL herr_t H5O_fill_convert(H5O_fill_t *fill, H5T_t *type, hbool_t *fill_changed, hid_t dxpl_id);
00698 H5_DLL herr_t H5O_fill_set_latest_version(H5O_fill_t *fill);
00699 
00700 
00701 H5_DLL herr_t H5O_link_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh,
00702     void *_mesg);
00703 
00704 
00705 H5_DLL herr_t H5O_pline_set_latest_version(H5O_pline_t *pline);
00706 
00707 
00708 H5_DLL herr_t H5O_set_shared(H5O_shared_t *dst, const H5O_shared_t *src);
00709 
00710 #endif 
00711