diff options
author | Allen Byrne <byrn@hdfgroup.org> | 2020-10-01 15:29:53 (GMT) |
---|---|---|
committer | Allen Byrne <byrn@hdfgroup.org> | 2020-10-01 15:29:53 (GMT) |
commit | ec8ad09125032c9c232878d02e90aa86df162841 (patch) | |
tree | 5d63105d3a0db7d5bbee41c5b74b097649a2115e /src/H5Adense.c | |
parent | 453238e90e1574ef1c15e3c79f7fb3d77920e77c (diff) | |
download | hdf5-ec8ad09125032c9c232878d02e90aa86df162841.zip hdf5-ec8ad09125032c9c232878d02e90aa86df162841.tar.gz hdf5-ec8ad09125032c9c232878d02e90aa86df162841.tar.bz2 |
Source formatted
Diffstat (limited to 'src/H5Adense.c')
-rw-r--r-- | src/H5Adense.c | 1051 |
1 files changed, 516 insertions, 535 deletions
diff --git a/src/H5Adense.c b/src/H5Adense.c index bb7f122..81e9749 100644 --- a/src/H5Adense.c +++ b/src/H5Adense.c @@ -27,39 +27,36 @@ /* Module Setup */ /****************/ -#include "H5Amodule.h" /* This source code file is part of the H5A module */ -#define H5O_FRIEND /*suppress error about including H5Opkg */ - +#include "H5Amodule.h" /* This source code file is part of the H5A module */ +#define H5O_FRIEND /*suppress error about including H5Opkg */ /***********/ /* Headers */ /***********/ -#include "H5private.h" /* Generic Functions */ -#include "H5Apkg.h" /* Attributes */ -#include "H5Eprivate.h" /* Error handling */ -#include "H5MMprivate.h" /* Memory management */ -#include "H5Opkg.h" /* Object headers */ -#include "H5SMprivate.h" /* Shared object header messages */ -#include "H5WBprivate.h" /* Wrapped Buffers */ - +#include "H5private.h" /* Generic Functions */ +#include "H5Apkg.h" /* Attributes */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5MMprivate.h" /* Memory management */ +#include "H5Opkg.h" /* Object headers */ +#include "H5SMprivate.h" /* Shared object header messages */ +#include "H5WBprivate.h" /* Wrapped Buffers */ /****************/ /* Local Macros */ /****************/ /* v2 B-tree creation macros for 'name' field index */ -#define H5A_NAME_BT2_NODE_SIZE 512 -#define H5A_NAME_BT2_MERGE_PERC 40 -#define H5A_NAME_BT2_SPLIT_PERC 100 +#define H5A_NAME_BT2_NODE_SIZE 512 +#define H5A_NAME_BT2_MERGE_PERC 40 +#define H5A_NAME_BT2_SPLIT_PERC 100 /* v2 B-tree creation macros for 'corder' field index */ -#define H5A_CORDER_BT2_NODE_SIZE 512 -#define H5A_CORDER_BT2_MERGE_PERC 40 -#define H5A_CORDER_BT2_SPLIT_PERC 100 +#define H5A_CORDER_BT2_NODE_SIZE 512 +#define H5A_CORDER_BT2_MERGE_PERC 40 +#define H5A_CORDER_BT2_SPLIT_PERC 100 /* Size of stack buffer for serialized attributes */ -#define H5A_ATTR_BUF_SIZE 128 - +#define H5A_ATTR_BUF_SIZE 128 /******************/ /* Local Typedefs */ @@ -71,11 +68,11 @@ */ typedef struct H5A_bt2_od_wrt_t { /* downward */ - H5F_t *f; /* Pointer to file that fractal heap is in */ - H5HF_t *fheap; /* Fractal heap handle to operate on */ - H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */ - H5A_t *attr; /* Attribute to write */ - haddr_t corder_bt2_addr; /* v2 B-tree address of creation order index */ + H5F_t * f; /* Pointer to file that fractal heap is in */ + H5HF_t *fheap; /* Fractal heap handle to operate on */ + H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */ + H5A_t * attr; /* Attribute to write */ + haddr_t corder_bt2_addr; /* v2 B-tree address of creation order index */ } H5A_bt2_od_wrt_t; /* @@ -84,19 +81,19 @@ typedef struct H5A_bt2_od_wrt_t { */ typedef struct { /* downward (internal) */ - H5F_t *f; /* Pointer to file that fractal heap is in */ - H5HF_t *fheap; /* Fractal heap handle */ - H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */ - hsize_t count; /* # of attributes examined */ + H5F_t * f; /* Pointer to file that fractal heap is in */ + H5HF_t *fheap; /* Fractal heap handle */ + H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */ + hsize_t count; /* # of attributes examined */ /* downward (from application) */ - hid_t loc_id; /* Object ID for application callback */ - hsize_t skip; /* Number of attributes to skip */ - const H5A_attr_iter_op_t *attr_op; /* Callback for each attribute */ - void *op_data; /* Callback data for each attribute */ + hid_t loc_id; /* Object ID for application callback */ + hsize_t skip; /* Number of attributes to skip */ + const H5A_attr_iter_op_t *attr_op; /* Callback for each attribute */ + void * op_data; /* Callback data for each attribute */ /* upward */ - int op_ret; /* Return value from callback */ + int op_ret; /* Return value from callback */ } H5A_bt2_ud_it_t; /* @@ -106,11 +103,11 @@ typedef struct { */ typedef struct { /* downward (internal) */ - H5F_t *f; /* Pointer to file that fractal heap is in */ - const H5A_dense_bt2_name_rec_t *record; /* v2 B-tree record for attribute */ + H5F_t * f; /* Pointer to file that fractal heap is in */ + const H5A_dense_bt2_name_rec_t *record; /* v2 B-tree record for attribute */ /* upward */ - H5A_t *attr; /* Copy of attribute */ + H5A_t *attr; /* Copy of attribute */ } H5A_fh_ud_cp_t; /* @@ -119,8 +116,8 @@ typedef struct { */ typedef struct H5A_bt2_ud_rm_t { /* downward */ - H5A_bt2_ud_common_t common; /* Common info for B-tree user data (must be first) */ - haddr_t corder_bt2_addr; /* v2 B-tree address of creation order index */ + H5A_bt2_ud_common_t common; /* Common info for B-tree user data (must be first) */ + haddr_t corder_bt2_addr; /* v2 B-tree address of creation order index */ } H5A_bt2_ud_rm_t; /* @@ -129,40 +126,33 @@ typedef struct H5A_bt2_ud_rm_t { */ typedef struct H5A_bt2_ud_rmbi_t { /* downward */ - H5F_t *f; /* Pointer to file that fractal heap is in */ - H5HF_t *fheap; /* Fractal heap handle */ - H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */ - H5_index_t idx_type; /* Index type for operation */ - haddr_t other_bt2_addr; /* v2 B-tree address of "other" index */ + H5F_t * f; /* Pointer to file that fractal heap is in */ + H5HF_t * fheap; /* Fractal heap handle */ + H5HF_t * shared_fheap; /* Fractal heap handle for shared messages */ + H5_index_t idx_type; /* Index type for operation */ + haddr_t other_bt2_addr; /* v2 B-tree address of "other" index */ } H5A_bt2_ud_rmbi_t; - /********************/ /* Package Typedefs */ /********************/ - /********************/ /* Local Prototypes */ /********************/ - /*********************/ /* Package Variables */ /*********************/ - /*****************************/ /* Library Private Variables */ /*****************************/ - /*******************/ /* Local Variables */ /*******************/ - - /*------------------------------------------------------------------------- * Function: H5A__dense_create * @@ -180,10 +170,10 @@ H5A__dense_create(H5F_t *f, H5O_ainfo_t *ainfo) { H5HF_create_t fheap_cparam; /* Fractal heap creation parameters */ H5B2_create_t bt2_cparam; /* v2 B-tree creation parameters */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for names */ - H5B2_t *bt2_corder = NULL; /* v2 B-tree handle for creation order */ - herr_t ret_value = SUCCEED; /* Return value */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for names */ + H5B2_t * bt2_corder = NULL; /* v2 B-tree handle for creation order */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -192,84 +182,83 @@ H5A__dense_create(H5F_t *f, H5O_ainfo_t *ainfo) HDassert(ainfo); /* Set fractal heap creation parameters */ -/* XXX: Give some control of these to applications? */ + /* XXX: Give some control of these to applications? */ HDmemset(&fheap_cparam, 0, sizeof(fheap_cparam)); - fheap_cparam.managed.width = H5O_FHEAP_MAN_WIDTH; + fheap_cparam.managed.width = H5O_FHEAP_MAN_WIDTH; fheap_cparam.managed.start_block_size = H5O_FHEAP_MAN_START_BLOCK_SIZE; - fheap_cparam.managed.max_direct_size = H5O_FHEAP_MAN_MAX_DIRECT_SIZE; - fheap_cparam.managed.max_index = H5O_FHEAP_MAN_MAX_INDEX; - fheap_cparam.managed.start_root_rows = H5O_FHEAP_MAN_START_ROOT_ROWS; - fheap_cparam.checksum_dblocks = H5O_FHEAP_CHECKSUM_DBLOCKS; - fheap_cparam.max_man_size = H5O_FHEAP_MAX_MAN_SIZE; + fheap_cparam.managed.max_direct_size = H5O_FHEAP_MAN_MAX_DIRECT_SIZE; + fheap_cparam.managed.max_index = H5O_FHEAP_MAN_MAX_INDEX; + fheap_cparam.managed.start_root_rows = H5O_FHEAP_MAN_START_ROOT_ROWS; + fheap_cparam.checksum_dblocks = H5O_FHEAP_CHECKSUM_DBLOCKS; + fheap_cparam.max_man_size = H5O_FHEAP_MAX_MAN_SIZE; /* Create fractal heap for storing attributes */ - if(NULL == (fheap = H5HF_create(f, &fheap_cparam))) + if (NULL == (fheap = H5HF_create(f, &fheap_cparam))) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "unable to create fractal heap") /* Retrieve the heap's address in the file */ - if(H5HF_get_heap_addr(fheap, &ainfo->fheap_addr) < 0) + if (H5HF_get_heap_addr(fheap, &ainfo->fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get fractal heap address") #ifndef NDEBUG -{ - size_t fheap_id_len; /* Fractal heap ID length */ + { + size_t fheap_id_len; /* Fractal heap ID length */ - /* Retrieve the heap's ID length in the file */ - if(H5HF_get_id_len(fheap, &fheap_id_len) < 0) - HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get fractal heap ID length") - HDassert(fheap_id_len == H5O_FHEAP_ID_LEN); -} + /* Retrieve the heap's ID length in the file */ + if (H5HF_get_id_len(fheap, &fheap_id_len) < 0) + HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get fractal heap ID length") + HDassert(fheap_id_len == H5O_FHEAP_ID_LEN); + } #endif /* NDEBUG */ /* Create the name index v2 B-tree */ HDmemset(&bt2_cparam, 0, sizeof(bt2_cparam)); - bt2_cparam.cls = H5A_BT2_NAME; + bt2_cparam.cls = H5A_BT2_NAME; bt2_cparam.node_size = (size_t)H5A_NAME_BT2_NODE_SIZE; - bt2_cparam.rrec_size = 4 + /* Name's hash value */ - 4 + /* Creation order index */ - 1 + /* Message flags */ - H5O_FHEAP_ID_LEN; /* Fractal heap ID */ + bt2_cparam.rrec_size = 4 + /* Name's hash value */ + 4 + /* Creation order index */ + 1 + /* Message flags */ + H5O_FHEAP_ID_LEN; /* Fractal heap ID */ bt2_cparam.split_percent = H5A_NAME_BT2_SPLIT_PERC; bt2_cparam.merge_percent = H5A_NAME_BT2_MERGE_PERC; - if(NULL == (bt2_name = H5B2_create(f, &bt2_cparam, NULL))) + if (NULL == (bt2_name = H5B2_create(f, &bt2_cparam, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "unable to create v2 B-tree for name index") /* Retrieve the v2 B-tree's address in the file */ - if(H5B2_get_addr(bt2_name, &ainfo->name_bt2_addr) < 0) + if (H5B2_get_addr(bt2_name, &ainfo->name_bt2_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get v2 B-tree address for name index") /* Check if we should create a creation order index v2 B-tree */ - if(ainfo->index_corder) { + if (ainfo->index_corder) { /* Create the creation order index v2 B-tree */ HDmemset(&bt2_cparam, 0, sizeof(bt2_cparam)); - bt2_cparam.cls = H5A_BT2_CORDER; + bt2_cparam.cls = H5A_BT2_CORDER; bt2_cparam.node_size = (size_t)H5A_CORDER_BT2_NODE_SIZE; - bt2_cparam.rrec_size = 4 + /* Creation order index */ - 1 + /* Message flags */ - H5O_FHEAP_ID_LEN; /* Fractal heap ID */ + bt2_cparam.rrec_size = 4 + /* Creation order index */ + 1 + /* Message flags */ + H5O_FHEAP_ID_LEN; /* Fractal heap ID */ bt2_cparam.split_percent = H5A_CORDER_BT2_SPLIT_PERC; bt2_cparam.merge_percent = H5A_CORDER_BT2_MERGE_PERC; - if(NULL == (bt2_corder = H5B2_create(f, &bt2_cparam, NULL))) + if (NULL == (bt2_corder = H5B2_create(f, &bt2_cparam, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "unable to create v2 B-tree for creation order index") /* Retrieve the v2 B-tree's address in the file */ - if(H5B2_get_addr(bt2_corder, &ainfo->corder_bt2_addr) < 0) + if (H5B2_get_addr(bt2_corder, &ainfo->corder_bt2_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get v2 B-tree address for creation order index") } /* end if */ done: /* Release resources */ - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for name index") - if(bt2_corder && H5B2_close(bt2_corder) < 0) + if (bt2_corder && H5B2_close(bt2_corder) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for creation order index") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_create() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_fnd_cb * @@ -286,7 +275,7 @@ static herr_t H5A__dense_fnd_cb(const H5A_t *attr, hbool_t *took_ownership, void *_user_attr) { H5A_t const **user_attr = (H5A_t const **)_user_attr; /* User data from v2 B-tree attribute lookup */ - herr_t ret_value = SUCCEED; /* Return value */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -310,11 +299,11 @@ H5A__dense_fnd_cb(const H5A_t *attr, hbool_t *took_ownership, void *_user_attr) * which may be merged/redistributed, we need to free the dynamically * allocated spaces for the intermediate decoded attribute. */ - if(*user_attr != NULL) { + if (*user_attr != NULL) { H5A_t *old_attr = *user_attr; - if(old_attr->shared) { + if (old_attr->shared) { /* Free any dynamically allocated items */ - if(H5A__free(old_attr) < 0) + if (H5A__free(old_attr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTRELEASE, FAIL, "can't release attribute info") /* Destroy shared attribute struct */ @@ -322,17 +311,16 @@ H5A__dense_fnd_cb(const H5A_t *attr, hbool_t *took_ownership, void *_user_attr) } /* end if */ old_attr = H5FL_FREE(H5A_t, old_attr); - } /* end if */ + } /* end if */ /* Take over attribute ownership */ - *user_attr = attr; + *user_attr = attr; *took_ownership = TRUE; done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_fnd_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_open * @@ -348,13 +336,13 @@ done: H5A_t * H5A__dense_open(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name) { - H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ - htri_t attr_exists; /* Attribute exists in v2 B-tree */ - H5A_t *ret_value = NULL; /* Return value */ + H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for name index */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ + htri_t attr_exists; /* Attribute exists in v2 B-tree */ + H5A_t * ret_value = NULL; /* Return value */ FUNC_ENTER_PACKAGE @@ -364,63 +352,62 @@ H5A__dense_open(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name) HDassert(name); /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, NULL, "unable to open fractal heap") /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, NULL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, NULL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, NULL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) + if (NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, NULL, "unable to open v2 B-tree for name index") /* Create the "udata" information for v2 B-tree record find */ - udata.f = f; - udata.fheap = fheap; - udata.shared_fheap = shared_fheap; - udata.name = name; - udata.name_hash = H5_checksum_lookup3(name, HDstrlen(name), 0); - udata.flags = 0; - udata.corder = 0; - udata.found_op = H5A__dense_fnd_cb; /* v2 B-tree comparison callback */ + udata.f = f; + udata.fheap = fheap; + udata.shared_fheap = shared_fheap; + udata.name = name; + udata.name_hash = H5_checksum_lookup3(name, HDstrlen(name), 0); + udata.flags = 0; + udata.corder = 0; + udata.found_op = H5A__dense_fnd_cb; /* v2 B-tree comparison callback */ udata.found_op_data = &ret_value; /* Find & copy the attribute in the 'name' index */ - if((attr_exists = H5B2_find(bt2_name, &udata, NULL, NULL)) < 0) + if ((attr_exists = H5B2_find(bt2_name, &udata, NULL, NULL)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, NULL, "can't search for attribute in name index") - else if(attr_exists == FALSE) + else if (attr_exists == FALSE) HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, NULL, "can't locate attribute in name index") done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, NULL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, NULL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, NULL, "can't close v2 B-tree for name index") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_open() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_insert * @@ -436,16 +423,16 @@ done: herr_t H5A__dense_insert(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr) { - H5A_bt2_ud_ins_t udata; /* User data for v2 B-tree insertion */ - H5HF_t *fheap = NULL; /* Fractal heap handle for attributes */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ - H5B2_t *bt2_corder = NULL; /* v2 B-tree handle for creation order index */ - H5WB_t *wb = NULL; /* Wrapped buffer for attribute data */ - uint8_t attr_buf[H5A_ATTR_BUF_SIZE]; /* Buffer for serializing message */ - unsigned mesg_flags = 0; /* Flags for storing message */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_ins_t udata; /* User data for v2 B-tree insertion */ + H5HF_t * fheap = NULL; /* Fractal heap handle for attributes */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for name index */ + H5B2_t * bt2_corder = NULL; /* v2 B-tree handle for creation order index */ + H5WB_t * wb = NULL; /* Wrapped buffer for attribute data */ + uint8_t attr_buf[H5A_ATTR_BUF_SIZE]; /* Buffer for serializing message */ + unsigned mesg_flags = 0; /* Flags for storing message */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -455,23 +442,23 @@ H5A__dense_insert(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr) HDassert(attr); /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ - htri_t shared_mesg; /* Should this message be stored in the Shared Message table? */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + htri_t shared_mesg; /* Should this message be stored in the Shared Message table? */ /* Check if message is already shared */ - if((shared_mesg = H5O_msg_is_shared(H5O_ATTR_ID, attr)) < 0) + if ((shared_mesg = H5O_msg_is_shared(H5O_ATTR_ID, attr)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "error determining if message is shared") - else if(shared_mesg > 0) + else if (shared_mesg > 0) /* Mark the message as shared */ mesg_flags |= H5O_MSG_FLAG_SHARED; else { /* Should this attribute be written as a SOHM? */ - if(H5SM_try_share(f, NULL, 0, H5O_ATTR_ID, attr, &mesg_flags) < 0) + if (H5SM_try_share(f, NULL, 0, H5O_ATTR_ID, attr, &mesg_flags) < 0) HGOTO_ERROR(H5E_ATTR, H5E_WRITEERROR, FAIL, "error determining if message should be shared") /* Attributes can't be "unique be shareable" yet */ @@ -479,23 +466,23 @@ H5A__dense_insert(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr) } /* end else */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Check for inserting shared attribute */ - if(mesg_flags & H5O_MSG_FLAG_SHARED) { + if (mesg_flags & H5O_MSG_FLAG_SHARED) { /* Sanity check */ HDassert(attr_sharable); @@ -503,80 +490,79 @@ H5A__dense_insert(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr) udata.id = attr->sh_loc.u.heap_id; } /* end if */ else { - void *attr_ptr; /* Pointer to serialized message */ - size_t attr_size; /* Size of serialized attribute in the heap */ + void * attr_ptr; /* Pointer to serialized message */ + size_t attr_size; /* Size of serialized attribute in the heap */ /* Find out the size of buffer needed for serialized message */ - if((attr_size = H5O_msg_raw_size(f, H5O_ATTR_ID, FALSE, attr)) == 0) + if ((attr_size = H5O_msg_raw_size(f, H5O_ATTR_ID, FALSE, attr)) == 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get message size") /* Wrap the local buffer for serialized attributes */ - if(NULL == (wb = H5WB_wrap(attr_buf, sizeof(attr_buf)))) + if (NULL == (wb = H5WB_wrap(attr_buf, sizeof(attr_buf)))) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't wrap buffer") /* Get a pointer to a buffer that's large enough for attribute */ - if(NULL == (attr_ptr = H5WB_actual(wb, attr_size))) + if (NULL == (attr_ptr = H5WB_actual(wb, attr_size))) HGOTO_ERROR(H5E_ATTR, H5E_NOSPACE, FAIL, "can't get actual buffer") /* Create serialized form of attribute or shared message */ - if(H5O_msg_encode(f, H5O_ATTR_ID, FALSE, (unsigned char *)attr_ptr, attr) < 0) + if (H5O_msg_encode(f, H5O_ATTR_ID, FALSE, (unsigned char *)attr_ptr, attr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTENCODE, FAIL, "can't encode attribute") /* Insert the serialized attribute into the fractal heap */ /* (sets the heap ID in the user data) */ - if(H5HF_insert(fheap, attr_size, attr_ptr, &udata.id) < 0) + if (H5HF_insert(fheap, attr_size, attr_ptr, &udata.id) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINSERT, FAIL, "unable to insert attribute into fractal heap") } /* end else */ /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) + if (NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Create the callback information for v2 B-tree record insertion */ - udata.common.f = f; - udata.common.fheap = fheap; + udata.common.f = f; + udata.common.fheap = fheap; udata.common.shared_fheap = shared_fheap; - udata.common.name = attr->shared->name; - udata.common.name_hash = H5_checksum_lookup3(attr->shared->name, HDstrlen(attr->shared->name), 0); + udata.common.name = attr->shared->name; + udata.common.name_hash = H5_checksum_lookup3(attr->shared->name, HDstrlen(attr->shared->name), 0); H5_CHECKED_ASSIGN(udata.common.flags, uint8_t, mesg_flags, unsigned); - udata.common.corder = attr->shared->crt_idx; - udata.common.found_op = NULL; + udata.common.corder = attr->shared->crt_idx; + udata.common.found_op = NULL; udata.common.found_op_data = NULL; /* udata.id already set */ /* Insert attribute into 'name' tracking v2 B-tree */ - if(H5B2_insert(bt2_name, &udata) < 0) + if (H5B2_insert(bt2_name, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINSERT, FAIL, "unable to insert record into v2 B-tree") /* Check if we should create a creation order index v2 B-tree record */ - if(ainfo->index_corder) { + if (ainfo->index_corder) { /* Open the creation order index v2 B-tree */ HDassert(H5F_addr_defined(ainfo->corder_bt2_addr)); - if(NULL == (bt2_corder = H5B2_open(f, ainfo->corder_bt2_addr, NULL))) + if (NULL == (bt2_corder = H5B2_open(f, ainfo->corder_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for creation order index") /* Insert the record into the creation order index v2 B-tree */ - if(H5B2_insert(bt2_corder, &udata) < 0) + if (H5B2_insert(bt2_corder, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINSERT, FAIL, "unable to insert record into v2 B-tree") } /* end if */ done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for name index") - if(bt2_corder && H5B2_close(bt2_corder) < 0) + if (bt2_corder && H5B2_close(bt2_corder) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for creation order index") - if(wb && H5WB_unwrap(wb) < 0) + if (wb && H5WB_unwrap(wb) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close wrapped buffer") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_insert() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_write_bt2_cb2 * @@ -594,7 +580,7 @@ static herr_t H5A__dense_write_bt2_cb2(void *_record, void *_op_data, hbool_t *changed) { H5A_dense_bt2_corder_rec_t *record = (H5A_dense_bt2_corder_rec_t *)_record; /* Record from B-tree */ - H5O_fheap_id_t *new_heap_id = (H5O_fheap_id_t *)_op_data; /* "op data" from v2 B-tree modify */ + H5O_fheap_id_t *new_heap_id = (H5O_fheap_id_t *)_op_data; /* "op data" from v2 B-tree modify */ FUNC_ENTER_STATIC_NOERR @@ -611,7 +597,6 @@ H5A__dense_write_bt2_cb2(void *_record, void *_op_data, hbool_t *changed) FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5A__dense_write_bt2_cb2() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_write_bt2_cb * @@ -627,12 +612,12 @@ H5A__dense_write_bt2_cb2(void *_record, void *_op_data, hbool_t *changed) static herr_t H5A__dense_write_bt2_cb(void *_record, void *_op_data, hbool_t *changed) { - H5A_dense_bt2_name_rec_t *record = (H5A_dense_bt2_name_rec_t *)_record; /* Record from B-tree */ - H5A_bt2_od_wrt_t *op_data = (H5A_bt2_od_wrt_t *)_op_data; /* "op data" from v2 B-tree modify */ - H5B2_t *bt2_corder = NULL; /* v2 B-tree handle for creation order index */ - H5WB_t *wb = NULL; /* Wrapped buffer for attribute data */ - uint8_t attr_buf[H5A_ATTR_BUF_SIZE]; /* Buffer for serializing attribute */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_dense_bt2_name_rec_t *record = (H5A_dense_bt2_name_rec_t *)_record; /* Record from B-tree */ + H5A_bt2_od_wrt_t * op_data = (H5A_bt2_od_wrt_t *)_op_data; /* "op data" from v2 B-tree modify */ + H5B2_t * bt2_corder = NULL; /* v2 B-tree handle for creation order index */ + H5WB_t * wb = NULL; /* Wrapped buffer for attribute data */ + uint8_t attr_buf[H5A_ATTR_BUF_SIZE]; /* Buffer for serializing attribute */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -641,35 +626,37 @@ H5A__dense_write_bt2_cb(void *_record, void *_op_data, hbool_t *changed) HDassert(op_data); /* Check for modifying shared attribute */ - if(record->flags & H5O_MSG_FLAG_SHARED) { + if (record->flags & H5O_MSG_FLAG_SHARED) { /* Update the shared attribute in the SOHM info */ - if(H5O__attr_update_shared(op_data->f, NULL, op_data->attr, NULL) < 0) + if (H5O__attr_update_shared(op_data->f, NULL, op_data->attr, NULL) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTUPDATE, FAIL, "unable to update attribute in shared storage") /* Update record's heap ID */ record->id = op_data->attr->sh_loc.u.heap_id; /* Check if we need to modify the creation order index with new heap ID */ - if(H5F_addr_defined(op_data->corder_bt2_addr)) { - H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ + if (H5F_addr_defined(op_data->corder_bt2_addr)) { + H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ /* Open the creation order index v2 B-tree */ - if(NULL == (bt2_corder = H5B2_open(op_data->f, op_data->corder_bt2_addr, NULL))) - HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for creation order index") + if (NULL == (bt2_corder = H5B2_open(op_data->f, op_data->corder_bt2_addr, NULL))) + HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, + "unable to open v2 B-tree for creation order index") /* Create the "udata" information for v2 B-tree record modify */ - udata.f = op_data->f; - udata.fheap = NULL; - udata.shared_fheap = NULL; - udata.name = NULL; - udata.name_hash = 0; - udata.flags = 0; - udata.corder = op_data->attr->shared->crt_idx; - udata.found_op = NULL; + udata.f = op_data->f; + udata.fheap = NULL; + udata.shared_fheap = NULL; + udata.name = NULL; + udata.name_hash = 0; + udata.flags = 0; + udata.corder = op_data->attr->shared->crt_idx; + udata.found_op = NULL; udata.found_op_data = NULL; /* Modify record for creation order index */ - if(H5B2_modify(bt2_corder, &udata, H5A__dense_write_bt2_cb2, &op_data->attr->sh_loc.u.heap_id) < 0) + if (H5B2_modify(bt2_corder, &udata, H5A__dense_write_bt2_cb2, &op_data->attr->sh_loc.u.heap_id) < + 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINSERT, FAIL, "unable to modify record in v2 B-tree") } /* end if */ @@ -677,52 +664,51 @@ H5A__dense_write_bt2_cb(void *_record, void *_op_data, hbool_t *changed) *changed = TRUE; } /* end if */ else { - void *attr_ptr; /* Pointer to serialized message */ - size_t attr_size; /* Size of serialized attribute in the heap */ + void * attr_ptr; /* Pointer to serialized message */ + size_t attr_size; /* Size of serialized attribute in the heap */ /* Find out the size of buffer needed for serialized attribute */ - if((attr_size = H5O_msg_raw_size(op_data->f, H5O_ATTR_ID, FALSE, op_data->attr)) == 0) + if ((attr_size = H5O_msg_raw_size(op_data->f, H5O_ATTR_ID, FALSE, op_data->attr)) == 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get attribute size") /* Wrap the local buffer for serialized attributes */ - if(NULL == (wb = H5WB_wrap(attr_buf, sizeof(attr_buf)))) + if (NULL == (wb = H5WB_wrap(attr_buf, sizeof(attr_buf)))) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't wrap buffer") /* Get a pointer to a buffer that's large enough for attribute */ - if(NULL == (attr_ptr = H5WB_actual(wb, attr_size))) + if (NULL == (attr_ptr = H5WB_actual(wb, attr_size))) HGOTO_ERROR(H5E_ATTR, H5E_NOSPACE, FAIL, "can't get actual buffer") /* Create serialized form of attribute */ - if(H5O_msg_encode(op_data->f, H5O_ATTR_ID, FALSE, (unsigned char *)attr_ptr, op_data->attr) < 0) + if (H5O_msg_encode(op_data->f, H5O_ATTR_ID, FALSE, (unsigned char *)attr_ptr, op_data->attr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTENCODE, FAIL, "can't encode attribute") /* Sanity check */ #ifndef NDEBUG -{ - size_t obj_len; /* Length of existing encoded attribute */ + { + size_t obj_len; /* Length of existing encoded attribute */ - if(H5HF_get_obj_len(op_data->fheap, &record->id, &obj_len) < 0) - HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get object size") - HDassert(obj_len == attr_size); -} + if (H5HF_get_obj_len(op_data->fheap, &record->id, &obj_len) < 0) + HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get object size") + HDassert(obj_len == attr_size); + } #endif /* NDEBUG */ /* Update existing attribute in heap */ /* (might be more efficient as fractal heap 'op' callback, but leave that for later -QAK) */ - if(H5HF_write(op_data->fheap, &record->id, changed, attr_ptr) < 0) + if (H5HF_write(op_data->fheap, &record->id, changed, attr_ptr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTUPDATE, FAIL, "unable to update attribute in heap") } /* end else */ done: /* Release resources */ - if(bt2_corder && H5B2_close(bt2_corder) < 0) + if (bt2_corder && H5B2_close(bt2_corder) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for creation order index") - if(wb && H5WB_unwrap(wb) < 0) + if (wb && H5WB_unwrap(wb) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close wrapped buffer") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_write_bt2_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_write * @@ -738,13 +724,13 @@ done: herr_t H5A__dense_write(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr) { - H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ - H5A_bt2_od_wrt_t op_data; /* "Op data" for v2 B-tree modify */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ + H5A_bt2_od_wrt_t op_data; /* "Op data" for v2 B-tree modify */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for name index */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -756,68 +742,67 @@ H5A__dense_write(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr) HDassert(attr); /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) + if (NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Create the "udata" information for v2 B-tree record modify */ - udata.f = f; - udata.fheap = fheap; - udata.shared_fheap = shared_fheap; - udata.name = attr->shared->name; - udata.name_hash = H5_checksum_lookup3(attr->shared->name, HDstrlen(attr->shared->name), 0); - udata.flags = 0; - udata.corder = 0; - udata.found_op = NULL; + udata.f = f; + udata.fheap = fheap; + udata.shared_fheap = shared_fheap; + udata.name = attr->shared->name; + udata.name_hash = H5_checksum_lookup3(attr->shared->name, HDstrlen(attr->shared->name), 0); + udata.flags = 0; + udata.corder = 0; + udata.found_op = NULL; udata.found_op_data = NULL; /* Create the "op_data" for the v2 B-tree record 'modify' callback */ - op_data.f = f; - op_data.fheap = fheap; - op_data.shared_fheap = shared_fheap; - op_data.attr = attr; + op_data.f = f; + op_data.fheap = fheap; + op_data.shared_fheap = shared_fheap; + op_data.attr = attr; op_data.corder_bt2_addr = ainfo->corder_bt2_addr; /* Modify attribute through 'name' tracking v2 B-tree */ - if(H5B2_modify(bt2_name, &udata, H5A__dense_write_bt2_cb, &op_data) < 0) + if (H5B2_modify(bt2_name, &udata, H5A__dense_write_bt2_cb, &op_data) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINSERT, FAIL, "unable to modify record in v2 B-tree") done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for name index") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_write() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_copy_fh_cb * @@ -834,8 +819,8 @@ done: static herr_t H5A__dense_copy_fh_cb(const void *obj, size_t obj_len, void *_udata) { - H5A_fh_ud_cp_t *udata = (H5A_fh_ud_cp_t *)_udata; /* User data for fractal heap 'op' callback */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_fh_ud_cp_t *udata = (H5A_fh_ud_cp_t *)_udata; /* User data for fractal heap 'op' callback */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC @@ -846,21 +831,21 @@ H5A__dense_copy_fh_cb(const void *obj, size_t obj_len, void *_udata) * HDF5 routine, it could attempt to re-protect that direct block for the * heap, causing the HDF5 routine called to fail) */ - if(NULL == (udata->attr = (H5A_t *)H5O_msg_decode(udata->f, NULL, H5O_ATTR_ID, obj_len, (const unsigned char *)obj))) + if (NULL == (udata->attr = (H5A_t *)H5O_msg_decode(udata->f, NULL, H5O_ATTR_ID, obj_len, + (const unsigned char *)obj))) HGOTO_ERROR(H5E_ATTR, H5E_CANTDECODE, FAIL, "can't decode attribute") /* Set the creation order index for the attribute */ udata->attr->shared->crt_idx = udata->record->corder; /* Check whether we should "reconstitute" the shared message info */ - if(udata->record->flags & H5O_MSG_FLAG_SHARED) + if (udata->record->flags & H5O_MSG_FLAG_SHARED) H5SM_reconstitute(&(udata->attr->sh_loc), udata->f, H5O_ATTR_ID, udata->record->id); done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_copy_fh_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_rename * @@ -874,19 +859,18 @@ done: *------------------------------------------------------------------------- */ herr_t -H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, - const char *new_name) +H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, const char *new_name) { - H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ - H5B2_t *bt2_corder = NULL; /* v2 B-tree handle for creation order ndex */ - H5A_t *attr_copy = NULL; /* Copy of attribute to rename */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ - htri_t shared_mesg; /* Should this message be stored in the Shared Message table? */ - htri_t attr_exists; /* Attribute exists in v2 B-tree */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for name index */ + H5B2_t * bt2_corder = NULL; /* v2 B-tree handle for creation order ndex */ + H5A_t * attr_copy = NULL; /* Copy of attribute to rename */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ + htri_t shared_mesg; /* Should this message be stored in the Shared Message table? */ + htri_t attr_exists; /* Attribute exists in v2 B-tree */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -897,55 +881,55 @@ H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, HDassert(new_name); /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) + if (NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Create the "udata" information for v2 B-tree record modify */ - udata.f = f; - udata.fheap = fheap; - udata.shared_fheap = shared_fheap; - udata.name = old_name; - udata.name_hash = H5_checksum_lookup3(old_name, HDstrlen(old_name), 0); - udata.flags = 0; - udata.corder = 0; - udata.found_op = H5A__dense_fnd_cb; /* v2 B-tree comparison callback */ + udata.f = f; + udata.fheap = fheap; + udata.shared_fheap = shared_fheap; + udata.name = old_name; + udata.name_hash = H5_checksum_lookup3(old_name, HDstrlen(old_name), 0); + udata.flags = 0; + udata.corder = 0; + udata.found_op = H5A__dense_fnd_cb; /* v2 B-tree comparison callback */ udata.found_op_data = &attr_copy; /* Get copy of attribute through 'name' tracking v2 B-tree */ - if((attr_exists = H5B2_find(bt2_name, &udata, NULL, NULL)) < 0) + if ((attr_exists = H5B2_find(bt2_name, &udata, NULL, NULL)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "can't search for attribute in name index") - else if(attr_exists == FALSE) + else if (attr_exists == FALSE) HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "can't locate attribute in name index") HDassert(attr_copy); /* Check if message is already shared */ - if((shared_mesg = H5O_msg_is_shared(H5O_ATTR_ID, attr_copy)) < 0) + if ((shared_mesg = H5O_msg_is_shared(H5O_ATTR_ID, attr_copy)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "error determining if message is shared") - else if(shared_mesg > 0) { + else if (shared_mesg > 0) { /* Reset shared status of copy */ /* (so it will get shared again if necessary) */ attr_copy->sh_loc.type = H5O_SHARE_TYPE_UNSHARED; @@ -956,47 +940,48 @@ H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, attr_copy->shared->name = H5MM_xstrdup(new_name); /* Recompute the version to encode the attribute with */ - if(H5A__set_version(f, attr_copy) < 0) + if (H5A__set_version(f, attr_copy) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTSET, FAIL, "unable to update attribute version") /* Need to remove the attribute from the creation order index v2 B-tree */ - if(ainfo->index_corder) { - htri_t corder_attr_exists; /* Attribute exists in v2 B-tree */ + if (ainfo->index_corder) { + htri_t corder_attr_exists; /* Attribute exists in v2 B-tree */ /* Open the creation order index v2 B-tree */ HDassert(H5F_addr_defined(ainfo->corder_bt2_addr)); - if(NULL == (bt2_corder = H5B2_open(f, ainfo->corder_bt2_addr, NULL))) + if (NULL == (bt2_corder = H5B2_open(f, ainfo->corder_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for creation index") /* Set up the creation order to search for */ udata.corder = attr_copy->shared->crt_idx; - if((corder_attr_exists = H5B2_find(bt2_corder, &udata, NULL, NULL)) < 0) + if ((corder_attr_exists = H5B2_find(bt2_corder, &udata, NULL, NULL)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "can't search for attribute in name index") - if(corder_attr_exists) { + if (corder_attr_exists) { H5A_bt2_ud_rm_t rm_udata; /* Set up the creation order in user data for the v2 B-tree 'record remove' callback */ rm_udata.common.corder = attr_copy->shared->crt_idx; /* Remove the record from the creation order index v2 B-tree */ - if(H5B2_remove(bt2_corder, &rm_udata, NULL, NULL) < 0) - HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove attribute from creation order index v2 B-tree") + if (H5B2_remove(bt2_corder, &rm_udata, NULL, NULL) < 0) + HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, + "unable to remove attribute from creation order index v2 B-tree") } } /* Insert renamed attribute back into dense storage */ /* (Possibly making it shared) */ - if(H5A__dense_insert(f, ainfo, attr_copy) < 0) + if (H5A__dense_insert(f, ainfo, attr_copy) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINSERT, FAIL, "unable to add to dense storage") /* Was this attribute shared? */ - if((shared_mesg = H5O_msg_is_shared(H5O_ATTR_ID, attr_copy)) > 0) { - hsize_t attr_rc; /* Attribute's ref count in shared message storage */ + if ((shared_mesg = H5O_msg_is_shared(H5O_ATTR_ID, attr_copy)) > 0) { + hsize_t attr_rc; /* Attribute's ref count in shared message storage */ /* Retrieve ref count for shared attribute */ - if(H5SM_get_refcount(f, H5O_ATTR_ID, &attr_copy->sh_loc, &attr_rc) < 0) + if (H5SM_get_refcount(f, H5O_ATTR_ID, &attr_copy->sh_loc, &attr_rc) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't retrieve shared message ref count") /* If the newly shared attribute needs to share "ownership" of the shared @@ -1006,42 +991,41 @@ H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, * * *ick* -QAK, 2007/01/08 */ - if(attr_rc == 1) { + if (attr_rc == 1) { /* Increment reference count on attribute components */ - if(H5O__attr_link(f, NULL, attr_copy) < 0) + if (H5O__attr_link(f, NULL, attr_copy) < 0) HGOTO_ERROR(H5E_ATTR, H5E_LINKCOUNT, FAIL, "unable to adjust attribute link count") } /* end if */ - } /* end if */ - else if(shared_mesg == 0) { + } /* end if */ + else if (shared_mesg == 0) { /* Increment reference count on attribute components */ /* (so that they aren't deleted when the attribute is removed shortly) */ - if(H5O__attr_link(f, NULL, attr_copy) < 0) + if (H5O__attr_link(f, NULL, attr_copy) < 0) HGOTO_ERROR(H5E_ATTR, H5E_LINKCOUNT, FAIL, "unable to adjust attribute link count") } /* end if */ - else if(shared_mesg < 0) + else if (shared_mesg < 0) HGOTO_ERROR(H5E_ATTR, H5E_WRITEERROR, FAIL, "error determining if message should be shared") /* Delete old attribute from dense storage */ - if(H5A__dense_remove(f, ainfo, old_name) < 0) + if (H5A__dense_remove(f, ainfo, old_name) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute in dense storage") done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for name index") - if(bt2_corder && H5B2_close(bt2_corder) < 0) + if (bt2_corder && H5B2_close(bt2_corder) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for creation order index") - if(attr_copy) + if (attr_copy) H5O_msg_free(H5O_ATTR_ID, attr_copy); FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_rename() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_iterate_bt2_cb * @@ -1057,54 +1041,56 @@ done: static herr_t H5A__dense_iterate_bt2_cb(const void *_record, void *_bt2_udata) { - const H5A_dense_bt2_name_rec_t *record = (const H5A_dense_bt2_name_rec_t *)_record; /* Record from B-tree */ - H5A_bt2_ud_it_t *bt2_udata = (H5A_bt2_ud_it_t *)_bt2_udata; /* User data for callback */ - herr_t ret_value = H5_ITER_CONT; /* Return value */ + const H5A_dense_bt2_name_rec_t *record = + (const H5A_dense_bt2_name_rec_t *)_record; /* Record from B-tree */ + H5A_bt2_ud_it_t *bt2_udata = (H5A_bt2_ud_it_t *)_bt2_udata; /* User data for callback */ + herr_t ret_value = H5_ITER_CONT; /* Return value */ FUNC_ENTER_STATIC /* Check for skipping attributes */ - if(bt2_udata->skip > 0) + if (bt2_udata->skip > 0) --bt2_udata->skip; else { - H5A_fh_ud_cp_t fh_udata; /* User data for fractal heap 'op' callback */ - H5HF_t *fheap; /* Fractal heap handle for attribute storage */ + H5A_fh_ud_cp_t fh_udata; /* User data for fractal heap 'op' callback */ + H5HF_t * fheap; /* Fractal heap handle for attribute storage */ /* Check for iterating over shared attribute */ - if(record->flags & H5O_MSG_FLAG_SHARED) + if (record->flags & H5O_MSG_FLAG_SHARED) fheap = bt2_udata->shared_fheap; else fheap = bt2_udata->fheap; /* Prepare user data for callback */ /* down */ - fh_udata.f = bt2_udata->f; + fh_udata.f = bt2_udata->f; fh_udata.record = record; - fh_udata.attr = NULL; + fh_udata.attr = NULL; /* Call fractal heap 'op' routine, to copy the attribute information */ - if(H5HF_op(fheap, &record->id, H5A__dense_copy_fh_cb, &fh_udata) < 0) + if (H5HF_op(fheap, &record->id, H5A__dense_copy_fh_cb, &fh_udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPERATE, H5_ITER_ERROR, "heap op callback failed") /* Check which type of callback to make */ - switch(bt2_udata->attr_op->op_type) { - case H5A_ATTR_OP_APP2: - { - H5A_info_t ainfo; /* Info for attribute */ + switch (bt2_udata->attr_op->op_type) { + case H5A_ATTR_OP_APP2: { + H5A_info_t ainfo; /* Info for attribute */ /* Get the attribute information */ - if(H5A__get_info(fh_udata.attr, &ainfo) < 0) + if (H5A__get_info(fh_udata.attr, &ainfo) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, H5_ITER_ERROR, "unable to get attribute info") /* Make the application callback */ - ret_value = (bt2_udata->attr_op->u.app_op2)(bt2_udata->loc_id, fh_udata.attr->shared->name, &ainfo, bt2_udata->op_data); + ret_value = (bt2_udata->attr_op->u.app_op2)(bt2_udata->loc_id, fh_udata.attr->shared->name, + &ainfo, bt2_udata->op_data); break; } #ifndef H5_NO_DEPRECATED_SYMBOLS case H5A_ATTR_OP_APP: /* Make the application callback */ - ret_value = (bt2_udata->attr_op->u.app_op)(bt2_udata->loc_id, fh_udata.attr->shared->name, bt2_udata->op_data); + ret_value = (bt2_udata->attr_op->u.app_op)(bt2_udata->loc_id, fh_udata.attr->shared->name, + bt2_udata->op_data); break; #endif /* H5_NO_DEPRECATED_SYMBOLS */ @@ -1117,7 +1103,7 @@ H5A__dense_iterate_bt2_cb(const void *_record, void *_bt2_udata) HDassert("unknown attribute op type" && 0); #ifdef NDEBUG HGOTO_ERROR(H5E_ATTR, H5E_UNSUPPORTED, FAIL, "unsupported attribute op type") -#endif /* NDEBUG */ +#endif /* NDEBUG */ } /* end switch */ /* Release the space allocated for the attribute */ @@ -1129,14 +1115,13 @@ H5A__dense_iterate_bt2_cb(const void *_record, void *_bt2_udata) bt2_udata->count++; /* Check for callback failure and pass along return value */ - if(ret_value < 0) + if (ret_value < 0) HERROR(H5E_ATTR, H5E_CANTNEXT, "iteration operator failed"); done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_iterate_bt2_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_iterate * @@ -1150,16 +1135,16 @@ done: *------------------------------------------------------------------------- */ herr_t -H5A__dense_iterate(H5F_t *f, hid_t loc_id, const H5O_ainfo_t *ainfo, - H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_attr, - const H5A_attr_iter_op_t *attr_op, void *op_data) +H5A__dense_iterate(H5F_t *f, hid_t loc_id, const H5O_ainfo_t *ainfo, H5_index_t idx_type, + H5_iter_order_t order, hsize_t skip, hsize_t *last_attr, const H5A_attr_iter_op_t *attr_op, + void *op_data) { - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5A_attr_table_t atable = {0, NULL}; /* Table of attributes */ - H5B2_t *bt2 = NULL; /* v2 B-tree handle for index */ - haddr_t bt2_addr; /* Address of v2 B-tree to use for lookup */ - herr_t ret_value = FAIL; /* Return value */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5A_attr_table_t atable = {0, NULL}; /* Table of attributes */ + H5B2_t * bt2 = NULL; /* v2 B-tree handle for index */ + haddr_t bt2_addr; /* Address of v2 B-tree to use for lookup */ + herr_t ret_value = FAIL; /* Return value */ FUNC_ENTER_PACKAGE @@ -1171,12 +1156,12 @@ H5A__dense_iterate(H5F_t *f, hid_t loc_id, const H5O_ainfo_t *ainfo, HDassert(attr_op); /* Determine the address of the index to use */ - if(idx_type == H5_INDEX_NAME) { + if (idx_type == H5_INDEX_NAME) { /* Check if "native" order is OK - since names are hashed, getting them * in strictly increasing or decreasing order requires building a * table and sorting it. */ - if(order == H5_ITER_NATIVE) { + if (order == H5_ITER_NATIVE) { HDassert(H5F_addr_defined(ainfo->name_bt2_addr)); bt2_addr = ainfo->name_bt2_addr; } /* end if */ @@ -1194,83 +1179,82 @@ H5A__dense_iterate(H5F_t *f, hid_t loc_id, const H5O_ainfo_t *ainfo, } /* end else */ /* Check on iteration order */ - if(order == H5_ITER_NATIVE && H5F_addr_defined(bt2_addr)) { - H5A_bt2_ud_it_t udata; /* User data for iterator callback */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ + if (order == H5_ITER_NATIVE && H5F_addr_defined(bt2_addr)) { + H5A_bt2_ud_it_t udata; /* User data for iterator callback */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the index v2 B-tree */ - if(NULL == (bt2 = H5B2_open(f, bt2_addr, NULL))) + if (NULL == (bt2 = H5B2_open(f, bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for index") /* Construct the user data for v2 B-tree iterator callback */ - udata.f = f; - udata.fheap = fheap; + udata.f = f; + udata.fheap = fheap; udata.shared_fheap = shared_fheap; - udata.loc_id = loc_id; - udata.skip = skip; - udata.count = 0; - udata.attr_op = attr_op; - udata.op_data = op_data; + udata.loc_id = loc_id; + udata.skip = skip; + udata.count = 0; + udata.attr_op = attr_op; + udata.op_data = op_data; /* Iterate over the records in the v2 B-tree's "native" order */ /* (by hash of name) */ - if((ret_value = H5B2_iterate(bt2, H5A__dense_iterate_bt2_cb, &udata)) < 0) + if ((ret_value = H5B2_iterate(bt2, H5A__dense_iterate_bt2_cb, &udata)) < 0) HERROR(H5E_ATTR, H5E_BADITER, "attribute iteration failed"); /* Update the last attribute examined, if requested */ - if(last_attr) + if (last_attr) *last_attr = udata.count; } /* end if */ else { /* Build the table of attributes for this object */ /* (build table using the name index, but sort according to idx_type) */ - if(H5A__dense_build_table(f, ainfo, idx_type, order, &atable) < 0) + if (H5A__dense_build_table(f, ainfo, idx_type, order, &atable) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "error building table of attributes") /* Iterate over attributes in table */ - if((ret_value = H5A__attr_iterate_table(&atable, skip, last_attr, loc_id, attr_op, op_data)) < 0) + if ((ret_value = H5A__attr_iterate_table(&atable, skip, last_attr, loc_id, attr_op, op_data)) < 0) HERROR(H5E_ATTR, H5E_CANTNEXT, "iteration operator failed"); } /* end else */ done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2 && H5B2_close(bt2) < 0) + if (bt2 && H5B2_close(bt2) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for index") - if(atable.attrs && H5A__attr_release_table(&atable) < 0) + if (atable.attrs && H5A__attr_release_table(&atable) < 0) HDONE_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "unable to release attribute table") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_iterate() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_remove_bt2_cb * @@ -1287,53 +1271,53 @@ static herr_t H5A__dense_remove_bt2_cb(const void *_record, void *_udata) { const H5A_dense_bt2_name_rec_t *record = (const H5A_dense_bt2_name_rec_t *)_record; - H5A_bt2_ud_rm_t *udata = (H5A_bt2_ud_rm_t *)_udata; /* User data for callback */ - H5A_t *attr = *(H5A_t **)udata->common.found_op_data; /* Pointer to attribute to remove */ - H5B2_t *bt2_corder = NULL; /* v2 B-tree handle for creation order index */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_rm_t * udata = (H5A_bt2_ud_rm_t *)_udata; /* User data for callback */ + H5A_t * attr = *(H5A_t **)udata->common.found_op_data; /* Pointer to attribute to remove */ + H5B2_t *bt2_corder = NULL; /* v2 B-tree handle for creation order index */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check for removing the link from the creation order index */ - if(H5F_addr_defined(udata->corder_bt2_addr)) { + if (H5F_addr_defined(udata->corder_bt2_addr)) { /* Open the creation order index v2 B-tree */ - if(NULL == (bt2_corder = H5B2_open(udata->common.f, udata->corder_bt2_addr, NULL))) + if (NULL == (bt2_corder = H5B2_open(udata->common.f, udata->corder_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for creation order index") /* Set up the user data for the v2 B-tree 'record remove' callback */ udata->common.corder = attr->shared->crt_idx; /* Remove the record from the creation order index v2 B-tree */ - if(H5B2_remove(bt2_corder, udata, NULL, NULL) < 0) - HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove attribute from creation order index v2 B-tree") + if (H5B2_remove(bt2_corder, udata, NULL, NULL) < 0) + HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, + "unable to remove attribute from creation order index v2 B-tree") } /* end if */ /* Check for removing shared attribute */ - if(record->flags & H5O_MSG_FLAG_SHARED) { + if (record->flags & H5O_MSG_FLAG_SHARED) { /* Decrement the reference count on the shared attribute message */ - if(H5SM_delete(udata->common.f, NULL, &(attr->sh_loc)) < 0) + if (H5SM_delete(udata->common.f, NULL, &(attr->sh_loc)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "unable to delete shared attribute") } /* end if */ else { /* Perform the deletion action on the attribute */ /* (takes care of shared & committed datatype/dataspace components) */ - if(H5O__attr_delete(udata->common.f, NULL, attr) < 0) + if (H5O__attr_delete(udata->common.f, NULL, attr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute") /* Remove record from fractal heap */ - if(H5HF_remove(udata->common.fheap, &record->id) < 0) + if (H5HF_remove(udata->common.fheap, &record->id) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove attribute from fractal heap") } /* end else */ done: /* Release resources */ - if(bt2_corder && H5B2_close(bt2_corder) < 0) + if (bt2_corder && H5B2_close(bt2_corder) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for creation order index") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_remove_bt2_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_remove * @@ -1349,13 +1333,13 @@ done: herr_t H5A__dense_remove(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name) { - H5A_bt2_ud_rm_t udata; /* User data for v2 B-tree record removal */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ - H5A_t *attr_copy = NULL; /* Copy of attribute to remove */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_rm_t udata; /* User data for v2 B-tree record removal */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for name index */ + H5A_t * attr_copy = NULL; /* Copy of attribute to remove */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -1365,62 +1349,61 @@ H5A__dense_remove(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name) HDassert(name && *name); /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) + if (NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Set up the user data for the v2 B-tree 'record remove' callback */ - udata.common.f = f; - udata.common.fheap = fheap; - udata.common.shared_fheap = shared_fheap; - udata.common.name = name; - udata.common.name_hash = H5_checksum_lookup3(name, HDstrlen(name), 0); - udata.common.found_op = H5A__dense_fnd_cb; /* v2 B-tree comparison callback */ + udata.common.f = f; + udata.common.fheap = fheap; + udata.common.shared_fheap = shared_fheap; + udata.common.name = name; + udata.common.name_hash = H5_checksum_lookup3(name, HDstrlen(name), 0); + udata.common.found_op = H5A__dense_fnd_cb; /* v2 B-tree comparison callback */ udata.common.found_op_data = &attr_copy; - udata.corder_bt2_addr = ainfo->corder_bt2_addr; + udata.corder_bt2_addr = ainfo->corder_bt2_addr; /* Remove the record from the name index v2 B-tree */ - if(H5B2_remove(bt2_name, &udata, H5A__dense_remove_bt2_cb, &udata) < 0) + if (H5B2_remove(bt2_name, &udata, H5A__dense_remove_bt2_cb, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove attribute from name index v2 B-tree") done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for name index") - if(attr_copy) + if (attr_copy) H5O__msg_free_real(H5O_MSG_ATTR, attr_copy); FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_remove() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_remove_by_idx_bt2_cb * @@ -1436,32 +1419,32 @@ done: static herr_t H5A__dense_remove_by_idx_bt2_cb(const void *_record, void *_bt2_udata) { - H5HF_t *fheap; /* Fractal heap handle */ - H5B2_t *bt2 = NULL; /* v2 B-tree handle for index */ + H5HF_t * fheap; /* Fractal heap handle */ + H5B2_t * bt2 = NULL; /* v2 B-tree handle for index */ const H5A_dense_bt2_name_rec_t *record = (const H5A_dense_bt2_name_rec_t *)_record; /* v2 B-tree record */ - H5A_bt2_ud_rmbi_t *bt2_udata = (H5A_bt2_ud_rmbi_t *)_bt2_udata; /* User data for callback */ - H5A_fh_ud_cp_t fh_udata; /* User data for fractal heap 'op' callback */ - H5O_shared_t sh_loc; /* Shared message info for attribute */ - hbool_t use_sh_loc; /* Whether to use the attribute's shared location or the separate one */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_rmbi_t * bt2_udata = (H5A_bt2_ud_rmbi_t *)_bt2_udata; /* User data for callback */ + H5A_fh_ud_cp_t fh_udata; /* User data for fractal heap 'op' callback */ + H5O_shared_t sh_loc; /* Shared message info for attribute */ + hbool_t use_sh_loc; /* Whether to use the attribute's shared location or the separate one */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Set up the user data for fractal heap 'op' callback */ - fh_udata.f = bt2_udata->f; + fh_udata.f = bt2_udata->f; fh_udata.record = record; - fh_udata.attr = NULL; + fh_udata.attr = NULL; /* Get correct fractal heap handle to use for operations */ - if(record->flags & H5O_MSG_FLAG_SHARED) + if (record->flags & H5O_MSG_FLAG_SHARED) fheap = bt2_udata->shared_fheap; else fheap = bt2_udata->fheap; /* Check whether to make a copy of the attribute or just need the shared location info */ - if(H5F_addr_defined(bt2_udata->other_bt2_addr) || !(record->flags & H5O_MSG_FLAG_SHARED)) { + if (H5F_addr_defined(bt2_udata->other_bt2_addr) || !(record->flags & H5O_MSG_FLAG_SHARED)) { /* Call fractal heap 'op' routine, to make copy of attribute to remove */ - if(H5HF_op(fheap, &record->id, H5A__dense_copy_fh_cb, &fh_udata) < 0) + if (H5HF_op(fheap, &record->id, H5A__dense_copy_fh_cb, &fh_udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPERATE, FAIL, "attribute removal callback failed") HDassert(fh_udata.attr); @@ -1477,11 +1460,11 @@ H5A__dense_remove_by_idx_bt2_cb(const void *_record, void *_bt2_udata) } /* end else */ /* Check for removing the link from the "other" index (creation order, when name used and vice versa) */ - if(H5F_addr_defined(bt2_udata->other_bt2_addr)) { - H5A_bt2_ud_common_t other_bt2_udata; /* Info for B-tree callbacks */ + if (H5F_addr_defined(bt2_udata->other_bt2_addr)) { + H5A_bt2_ud_common_t other_bt2_udata; /* Info for B-tree callbacks */ /* Determine the index being used */ - if(bt2_udata->idx_type == H5_INDEX_NAME) { + if (bt2_udata->idx_type == H5_INDEX_NAME) { /* Set up the user data for the v2 B-tree 'record remove' callback */ other_bt2_udata.corder = fh_udata.attr->shared->crt_idx; } /* end if */ @@ -1489,62 +1472,63 @@ H5A__dense_remove_by_idx_bt2_cb(const void *_record, void *_bt2_udata) HDassert(bt2_udata->idx_type == H5_INDEX_CRT_ORDER); /* Set up the user data for the v2 B-tree 'record remove' callback */ - other_bt2_udata.f = bt2_udata->f; - other_bt2_udata.fheap = bt2_udata->fheap; + other_bt2_udata.f = bt2_udata->f; + other_bt2_udata.fheap = bt2_udata->fheap; other_bt2_udata.shared_fheap = bt2_udata->shared_fheap; - other_bt2_udata.name = fh_udata.attr->shared->name; - other_bt2_udata.name_hash = H5_checksum_lookup3(fh_udata.attr->shared->name, HDstrlen(fh_udata.attr->shared->name), 0); - other_bt2_udata.found_op = NULL; + other_bt2_udata.name = fh_udata.attr->shared->name; + other_bt2_udata.name_hash = + H5_checksum_lookup3(fh_udata.attr->shared->name, HDstrlen(fh_udata.attr->shared->name), 0); + other_bt2_udata.found_op = NULL; other_bt2_udata.found_op_data = NULL; } /* end else */ /* Open the index v2 B-tree */ - if(NULL == (bt2 = H5B2_open(bt2_udata->f, bt2_udata->other_bt2_addr, NULL))) + if (NULL == (bt2 = H5B2_open(bt2_udata->f, bt2_udata->other_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for index") /* Set the common information for the v2 B-tree remove operation */ /* Remove the record from the "other" index v2 B-tree */ - if(H5B2_remove(bt2, &other_bt2_udata, NULL, NULL) < 0) - HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove record from 'other' index v2 B-tree") + if (H5B2_remove(bt2, &other_bt2_udata, NULL, NULL) < 0) + HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, + "unable to remove record from 'other' index v2 B-tree") } /* end if */ /* Check for removing shared attribute */ - if(record->flags & H5O_MSG_FLAG_SHARED) { - H5O_shared_t *sh_loc_ptr; /* Pointer to shared message info for attribute */ + if (record->flags & H5O_MSG_FLAG_SHARED) { + H5O_shared_t *sh_loc_ptr; /* Pointer to shared message info for attribute */ /* Set up pointer to correct shared location */ - if(use_sh_loc) + if (use_sh_loc) sh_loc_ptr = &sh_loc; else sh_loc_ptr = &(fh_udata.attr->sh_loc); /* Decrement the reference count on the shared attribute message */ - if(H5SM_delete(bt2_udata->f, NULL, sh_loc_ptr) < 0) + if (H5SM_delete(bt2_udata->f, NULL, sh_loc_ptr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "unable to delete shared attribute") } /* end if */ else { /* Perform the deletion action on the attribute */ /* (takes care of shared & committed datatype/dataspace components) */ - if(H5O__attr_delete(bt2_udata->f, NULL, fh_udata.attr) < 0) + if (H5O__attr_delete(bt2_udata->f, NULL, fh_udata.attr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute") /* Remove record from fractal heap */ - if(H5HF_remove(fheap, &record->id) < 0) + if (H5HF_remove(fheap, &record->id) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove attribute from fractal heap") } /* end else */ done: /* Release resources */ - if(bt2 && H5B2_close(bt2) < 0) + if (bt2 && H5B2_close(bt2) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for index") - if(fh_udata.attr) + if (fh_udata.attr) H5O_msg_free(H5O_ATTR_ID, fh_udata.attr); FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_remove_by_idx_bt2_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_remove_by_idx * @@ -1559,15 +1543,15 @@ done: *------------------------------------------------------------------------- */ herr_t -H5A__dense_remove_by_idx(H5F_t *f, const H5O_ainfo_t *ainfo, H5_index_t idx_type, - H5_iter_order_t order, hsize_t n) +H5A__dense_remove_by_idx(H5F_t *f, const H5O_ainfo_t *ainfo, H5_index_t idx_type, H5_iter_order_t order, + hsize_t n) { - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5A_attr_table_t atable = {0, NULL}; /* Table of attributes */ - H5B2_t *bt2 = NULL; /* v2 B-tree handle for index */ - haddr_t bt2_addr; /* Address of v2 B-tree to use for operation */ - herr_t ret_value = SUCCEED; /* Return value */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5A_attr_table_t atable = {0, NULL}; /* Table of attributes */ + H5B2_t * bt2 = NULL; /* v2 B-tree handle for index */ + haddr_t bt2_addr; /* Address of v2 B-tree to use for operation */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -1576,12 +1560,12 @@ H5A__dense_remove_by_idx(H5F_t *f, const H5O_ainfo_t *ainfo, H5_index_t idx_type HDassert(ainfo); /* Determine the address of the index to use */ - if(idx_type == H5_INDEX_NAME) { + if (idx_type == H5_INDEX_NAME) { /* Check if "native" order is OK - since names are hashed, getting them * in strictly increasing or decreasing order requires building a * table and sorting it. */ - if(order == H5_ITER_NATIVE) { + if (order == H5_ITER_NATIVE) { bt2_addr = ainfo->name_bt2_addr; HDassert(H5F_addr_defined(bt2_addr)); } /* end if */ @@ -1599,79 +1583,78 @@ H5A__dense_remove_by_idx(H5F_t *f, const H5O_ainfo_t *ainfo, H5_index_t idx_type } /* end else */ /* If there is an index defined for the field, use it */ - if(H5F_addr_defined(bt2_addr)) { - H5A_bt2_ud_rmbi_t udata; /* User data for v2 B-tree record removal */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ + if (H5F_addr_defined(bt2_addr)) { + H5A_bt2_ud_rmbi_t udata; /* User data for v2 B-tree record removal */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the index v2 B-tree */ - if(NULL == (bt2 = H5B2_open(f, bt2_addr, NULL))) + if (NULL == (bt2 = H5B2_open(f, bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for index") /* Set up the user data for the v2 B-tree 'record remove' callback */ - udata.f = f; - udata.fheap = fheap; - udata.shared_fheap = shared_fheap; - udata.idx_type = idx_type; + udata.f = f; + udata.fheap = fheap; + udata.shared_fheap = shared_fheap; + udata.idx_type = idx_type; udata.other_bt2_addr = idx_type == H5_INDEX_NAME ? ainfo->corder_bt2_addr : ainfo->name_bt2_addr; /* Remove the record from the name index v2 B-tree */ - if(H5B2_remove_by_idx(bt2, order, n, H5A__dense_remove_by_idx_bt2_cb, &udata) < 0) + if (H5B2_remove_by_idx(bt2, order, n, H5A__dense_remove_by_idx_bt2_cb, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTREMOVE, FAIL, "unable to remove attribute from v2 B-tree index") } /* end if */ else { /* Build the table of attributes for this object */ /* (build table using the name index, but sort according to idx_type) */ - if(H5A__dense_build_table(f, ainfo, idx_type, order, &atable) < 0) + if (H5A__dense_build_table(f, ainfo, idx_type, order, &atable) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "error building table of attributes") /* Check for skipping too many attributes */ - if(n >= atable.nattrs) + if (n >= atable.nattrs) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid index specified") /* Delete appropriate attribute from dense storage */ - if(H5A__dense_remove(f, ainfo, ((atable.attrs[n])->shared)->name) < 0) + if (H5A__dense_remove(f, ainfo, ((atable.attrs[n])->shared)->name) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute in dense storage") } /* end else */ done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2 && H5B2_close(bt2) < 0) + if (bt2 && H5B2_close(bt2) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for index") - if(atable.attrs && H5A__attr_release_table(&atable) < 0) + if (atable.attrs && H5A__attr_release_table(&atable) < 0) HDONE_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "unable to release attribute table") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_remove_by_idx() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_exists * @@ -1688,12 +1671,12 @@ done: htri_t H5A__dense_exists(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name) { - H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - H5HF_t *shared_fheap = NULL; /* Fractal heap handle for shared header messages */ - H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ - htri_t attr_sharable; /* Flag indicating attributes are sharable */ - htri_t ret_value = TRUE; /* Return value */ + H5A_bt2_ud_common_t udata; /* User data for v2 B-tree modify */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + H5HF_t * shared_fheap = NULL; /* Fractal heap handle for shared header messages */ + H5B2_t * bt2_name = NULL; /* v2 B-tree handle for name index */ + htri_t attr_sharable; /* Flag indicating attributes are sharable */ + htri_t ret_value = TRUE; /* Return value */ FUNC_ENTER_PACKAGE @@ -1703,61 +1686,60 @@ H5A__dense_exists(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name) HDassert(name); /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Check if attributes are shared in this file */ - if((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) + if ((attr_sharable = H5SM_type_shared(f, H5O_ATTR_ID)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't determine if attributes are shared") /* Get handle for shared message heap, if attributes are sharable */ - if(attr_sharable) { - haddr_t shared_fheap_addr; /* Address of fractal heap to use */ + if (attr_sharable) { + haddr_t shared_fheap_addr; /* Address of fractal heap to use */ /* Retrieve the address of the shared message's fractal heap */ - if(H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) + if (H5SM_get_fheap_addr(f, H5O_ATTR_ID, &shared_fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get shared message heap address") /* Check if there are any shared messages currently */ - if(H5F_addr_defined(shared_fheap_addr)) { + if (H5F_addr_defined(shared_fheap_addr)) { /* Open the fractal heap for shared header messages */ - if(NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) + if (NULL == (shared_fheap = H5HF_open(f, shared_fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") } /* end if */ - } /* end if */ + } /* end if */ /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) + if (NULL == (bt2_name = H5B2_open(f, ainfo->name_bt2_addr, NULL))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Create the "udata" information for v2 B-tree record 'find' */ - udata.f = f; - udata.fheap = fheap; - udata.shared_fheap = shared_fheap; - udata.name = name; - udata.name_hash = H5_checksum_lookup3(name, HDstrlen(name), 0); - udata.flags = 0; - udata.corder = 0; - udata.found_op = NULL; /* v2 B-tree comparison callback */ + udata.f = f; + udata.fheap = fheap; + udata.shared_fheap = shared_fheap; + udata.name = name; + udata.name_hash = H5_checksum_lookup3(name, HDstrlen(name), 0); + udata.flags = 0; + udata.corder = 0; + udata.found_op = NULL; /* v2 B-tree comparison callback */ udata.found_op_data = NULL; /* Find the attribute in the 'name' index */ - if((ret_value = H5B2_find(bt2_name, &udata, NULL, NULL)) < 0) + if ((ret_value = H5B2_find(bt2_name, &udata, NULL, NULL)) < 0) HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "can't search for attribute in name index") done: /* Release resources */ - if(shared_fheap && H5HF_close(shared_fheap) < 0) + if (shared_fheap && H5HF_close(shared_fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") - if(bt2_name && H5B2_close(bt2_name) < 0) + if (bt2_name && H5B2_close(bt2_name) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for name index") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_exists() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_delete_bt2_cb * @@ -1773,54 +1755,54 @@ done: static herr_t H5A__dense_delete_bt2_cb(const void *_record, void *_bt2_udata) { - const H5A_dense_bt2_name_rec_t *record = (const H5A_dense_bt2_name_rec_t *)_record; /* Record from B-tree */ - H5A_bt2_ud_common_t *bt2_udata = (H5A_bt2_ud_common_t *)_bt2_udata; /* User data for callback */ - H5A_t *attr = NULL; /* Attribute being removed */ - herr_t ret_value = SUCCEED; /* Return value */ + const H5A_dense_bt2_name_rec_t *record = + (const H5A_dense_bt2_name_rec_t *)_record; /* Record from B-tree */ + H5A_bt2_ud_common_t *bt2_udata = (H5A_bt2_ud_common_t *)_bt2_udata; /* User data for callback */ + H5A_t * attr = NULL; /* Attribute being removed */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check for shared attribute */ - if(record->flags & H5O_MSG_FLAG_SHARED) { - H5O_shared_t sh_mesg; /* Temporary shared message info */ + if (record->flags & H5O_MSG_FLAG_SHARED) { + H5O_shared_t sh_mesg; /* Temporary shared message info */ /* "reconstitute" the shared message info for the attribute */ H5SM_reconstitute(&sh_mesg, bt2_udata->f, H5O_ATTR_ID, record->id); /* Decrement the reference count on the shared attribute message */ - if(H5SM_delete(bt2_udata->f, NULL, &sh_mesg) < 0) + if (H5SM_delete(bt2_udata->f, NULL, &sh_mesg) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "unable to delete shared attribute") } /* end if */ else { - H5A_fh_ud_cp_t fh_udata; /* User data for fractal heap 'op' callback */ + H5A_fh_ud_cp_t fh_udata; /* User data for fractal heap 'op' callback */ /* Prepare user data for callback */ /* down */ - fh_udata.f = bt2_udata->f; + fh_udata.f = bt2_udata->f; fh_udata.record = record; /* up */ fh_udata.attr = NULL; /* Call fractal heap 'op' routine, to copy the attribute information */ - if(H5HF_op(bt2_udata->fheap, &record->id, H5A__dense_copy_fh_cb, &fh_udata) < 0) + if (H5HF_op(bt2_udata->fheap, &record->id, H5A__dense_copy_fh_cb, &fh_udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPERATE, FAIL, "heap op callback failed") attr = fh_udata.attr; /* Perform the deletion action on the attribute */ /* (takes care of shared/committed datatype & dataspace components) */ - if(H5O__attr_delete(bt2_udata->f, NULL, fh_udata.attr) < 0) + if (H5O__attr_delete(bt2_udata->f, NULL, fh_udata.attr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute") } /* end else */ done: /* Release resources */ - if(attr) + if (attr) H5O__msg_free_real(H5O_MSG_ATTR, attr); FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_delete_bt2_cb() */ - /*------------------------------------------------------------------------- * Function: H5A__dense_delete * @@ -1836,9 +1818,9 @@ done: herr_t H5A__dense_delete(H5F_t *f, H5O_ainfo_t *ainfo) { - H5A_bt2_ud_common_t udata; /* v2 B-tree user data for deleting attributes */ - H5HF_t *fheap = NULL; /* Fractal heap handle */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_bt2_ud_common_t udata; /* v2 B-tree user data for deleting attributes */ + H5HF_t * fheap = NULL; /* Fractal heap handle */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -1847,47 +1829,46 @@ H5A__dense_delete(H5F_t *f, H5O_ainfo_t *ainfo) HDassert(ainfo); /* Open the fractal heap */ - if(NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) + if (NULL == (fheap = H5HF_open(f, ainfo->fheap_addr))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open fractal heap") /* Create the "udata" information for v2 B-tree 'delete' */ - udata.f = f; - udata.fheap = fheap; - udata.shared_fheap = NULL; - udata.name = NULL; - udata.name_hash = 0; - udata.flags = 0; - udata.found_op = NULL; /* v2 B-tree comparison callback */ + udata.f = f; + udata.fheap = fheap; + udata.shared_fheap = NULL; + udata.name = NULL; + udata.name_hash = 0; + udata.flags = 0; + udata.found_op = NULL; /* v2 B-tree comparison callback */ udata.found_op_data = NULL; /* Delete name index v2 B-tree */ - if(H5B2_delete(f, ainfo->name_bt2_addr, NULL, H5A__dense_delete_bt2_cb, &udata) < 0) + if (H5B2_delete(f, ainfo->name_bt2_addr, NULL, H5A__dense_delete_bt2_cb, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete v2 B-tree for name index") ainfo->name_bt2_addr = HADDR_UNDEF; /* Release resources */ - if(H5HF_close(fheap) < 0) + if (H5HF_close(fheap) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") fheap = NULL; /* Check if we should delete the creation order index v2 B-tree */ - if(H5F_addr_defined(ainfo->corder_bt2_addr)) { + if (H5F_addr_defined(ainfo->corder_bt2_addr)) { /* Delete the creation order index, without adjusting the ref. count on the attributes */ - if(H5B2_delete(f, ainfo->corder_bt2_addr, NULL, NULL, NULL) < 0) + if (H5B2_delete(f, ainfo->corder_bt2_addr, NULL, NULL, NULL) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete v2 B-tree for creation order index") ainfo->corder_bt2_addr = HADDR_UNDEF; } /* end if */ /* Delete fractal heap */ - if(H5HF_delete(f, ainfo->fheap_addr) < 0) + if (H5HF_delete(f, ainfo->fheap_addr) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete fractal heap") ainfo->fheap_addr = HADDR_UNDEF; done: /* Release resources */ - if(fheap && H5HF_close(fheap) < 0) + if (fheap && H5HF_close(fheap) < 0) HDONE_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "can't close fractal heap") FUNC_LEAVE_NOAPI(ret_value) } /* end H5A__dense_delete() */ - |