diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2002-08-28 18:34:12 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2002-08-28 18:34:12 (GMT) |
commit | 7bff4eb559d3f28f27ab29ced0d1e46ada1df620 (patch) | |
tree | 26415f62114ac52c107ef88cacfb58218facbefa /src/H5Gstab.c | |
parent | fc5e3b4897f695b2d61518954047cc783c8baa1d (diff) | |
download | hdf5-7bff4eb559d3f28f27ab29ced0d1e46ada1df620.zip hdf5-7bff4eb559d3f28f27ab29ced0d1e46ada1df620.tar.gz hdf5-7bff4eb559d3f28f27ab29ced0d1e46ada1df620.tar.bz2 |
[svn-r5904]
Purpose:
Added 'ID to name' support
Description:
There is a new API function H5Iget_name
Most of the changes are on H5G.c , regarding the symbol table entry struct H5G_entry_t
which has 2 new fields 'name' and 'old_name'
A new private function was introduced H5G_ent_copy, that does a deep copy
between 2 symbol table entries
The test file is getname.c
Platforms tested:
windows 2000, Linux, Solaris
Diffstat (limited to 'src/H5Gstab.c')
-rw-r--r-- | src/H5Gstab.c | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/src/H5Gstab.c b/src/H5Gstab.c index 9c4311c..72c0d25 100644 --- a/src/H5Gstab.c +++ b/src/H5Gstab.c @@ -121,6 +121,10 @@ done: * * Modifications: * + * Pedro Vicente, <pvn@ncsa.uiuc.edu> 22 Aug 2002 + * Added `id to name' support. + * Added a deep copy of the symbol table entry + * *------------------------------------------------------------------------- */ herr_t @@ -131,6 +135,8 @@ H5G_stab_find(H5G_entry_t *grp_ent, const char *name, H5O_stab_t stab; /*symbol table message */ herr_t ret_value=SUCCEED; /* Return value */ + obj_ent->name=NULL; + FUNC_ENTER_NOAPI(H5G_stab_find, FAIL); /* Check arguments */ @@ -146,10 +152,28 @@ H5G_stab_find(H5G_entry_t *grp_ent, const char *name, udata.heap_addr = stab.heap_addr; /* search the B-tree */ - if (H5B_find(grp_ent->file, H5B_SNODE, stab.btree_addr, &udata) < 0) - HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "not found"); - if (obj_ent) - *obj_ent = udata.ent; + if (H5B_find(grp_ent->file, H5B_SNODE, stab.btree_addr, &udata) < 0) { + HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "not found"); + } + + /* change OBJ_ENT only if found */ + else + { + if (obj_ent) { + + /* do a deep copy */ + if (H5G_ent_copy( &(udata.ent), obj_ent )<0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, FAIL, "unable to copy entry"); + + /* insert the name into the symbol entry OBJ_ENT */ + if (H5G_insert_name( grp_ent, obj_ent, name ) < 0) { + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, + "cannot insert name"); + } + + } + } + done: FUNC_LEAVE(ret_value); @@ -173,6 +197,9 @@ done: * * Modifications: * + * Pedro Vicente, <pvn@ncsa.uiuc.edu> 22 Aug 2002 + * Added `id to name' support. + * *------------------------------------------------------------------------- */ herr_t @@ -207,6 +234,12 @@ H5G_stab_insert(H5G_entry_t *grp_ent, const char *name, H5G_entry_t *obj_ent) /* update the name offset in the entry */ obj_ent->name_off = udata.ent.name_off; + /* insert the name into the symbol entry OBJ_ENT */ + if (H5G_insert_name( grp_ent, obj_ent, name ) < 0) { + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, + "cannot insert name"); + } + done: FUNC_LEAVE(ret_value); } |