diff options
author | James Laird <jlaird@hdfgroup.org> | 2006-07-05 19:01:50 (GMT) |
---|---|---|
committer | James Laird <jlaird@hdfgroup.org> | 2006-07-05 19:01:50 (GMT) |
commit | 801ca2f9cb803b368b36a6c280684c1f6624f169 (patch) | |
tree | ed2543e9bc1f2beb9857f442fc8b52b3c371299f /src/H5Gdeprec.c | |
parent | d582c7bc8ac8679911e4787f5f92cc37b1c9989c (diff) | |
download | hdf5-801ca2f9cb803b368b36a6c280684c1f6624f169.zip hdf5-801ca2f9cb803b368b36a6c280684c1f6624f169.tar.gz hdf5-801ca2f9cb803b368b36a6c280684c1f6624f169.tar.bz2 |
[svn-r12452] Purpose:
Feature
Description:
Revised Link APIs.
Solution:
New link APIs use H5L*
H5*create_expand do not create links to the objects created; this must
be done manually with H5Llink.
Added APIs to link an object given its ID (H5Llink), to copy links (H5Lcopy),
and changed creation APIs (H5Lcreate_hard and H5Lcreate_soft) and query
API (H5Lget_linkinfo instead of H5Gget_objinfo).
All old APIs are still supported in H5Gdeprec.c .
Platforms tested:
sol, mir, copper
Misc. update:
Forgot to update MANIFEST and release docs. Will do after checkin.
Diffstat (limited to 'src/H5Gdeprec.c')
-rw-r--r-- | src/H5Gdeprec.c | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/src/H5Gdeprec.c b/src/H5Gdeprec.c new file mode 100644 index 0000000..c27826e --- /dev/null +++ b/src/H5Gdeprec.c @@ -0,0 +1,193 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Gdeprec.c + * June 21 2006 + * James Laird <jlaird@ncsa.uiuc.edu> + * + * Purpose: Deprecated functions from the H5G interface. These + * functions are here for compatibility purposes and may be + * removed in the future. Applications should switch to the + * newer APIs. + * + *------------------------------------------------------------------------- + */ + +/* Packages needed by this file... */ +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5Gpublic.h" /* Public Group APIs */ +#include "H5Lpublic.h" /* Public Link APIs */ +#include "H5Ppublic.h" /* Property lists */ + + +/*------------------------------------------------------------------------- + * Function: H5Glink + * + * Purpose: Creates a link between two existing objects. The new + * APIs to do this are H5Lcreate_hard and H5Lcreate_soft. + * + *------------------------------------------------------------------------- + */ +herr_t +H5Glink(hid_t cur_loc_id, H5L_link_t type, const char *cur_name, const char *new_name) +{ + herr_t ret_value; + + FUNC_ENTER_API(H5Glink, FAIL) + H5TRACE4("e","iLlss",cur_loc_id,type,cur_name,new_name); + + if(type == H5L_LINK_HARD) + { + if((ret_value = H5Lcreate_hard(cur_loc_id, cur_name, H5L_SAME_LOC, new_name, H5P_DEFAULT)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "Couldn't create link") + } + else if(type == H5L_LINK_SOFT) + { + if((ret_value = H5Lcreate_soft(cur_name, cur_loc_id, new_name, H5P_DEFAULT)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "Couldn't create link") + } + else + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Not a valid link type") + +done: + FUNC_LEAVE_API(ret_value) +} + +/*------------------------------------------------------------------------- + * Function: H5Glink2 + * + * Purpose: Creates a link between two existing objects. The new + * API to do this is H5Llink. + * + *------------------------------------------------------------------------- + */ +H5Glink2(hid_t cur_loc_id, const char *cur_name, + H5L_link_t type, hid_t new_loc_id, const char *new_name) +{ + herr_t ret_value; + + FUNC_ENTER_API(H5Glink2, FAIL) + + if(type == H5L_LINK_HARD) + { + if((ret_value = H5Lcreate_hard(cur_loc_id, cur_name, new_loc_id, new_name, H5P_DEFAULT)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "Couldn't create link") + } + else if(type == H5L_LINK_SOFT) + { + /* Soft links only need one location, the new_loc_id, but it's possible that + * new_loc_id is H5L_SAME_LOC */ + if(new_loc_id == H5L_SAME_LOC) + new_loc_id = cur_loc_id; + + if((ret_value = H5Lcreate_soft(cur_name, new_loc_id, new_name, H5P_DEFAULT)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "Couldn't create link") + } + else + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Not a valid link type") + +done: + FUNC_LEAVE_API(ret_value) +} + +/*------------------------------------------------------------------------- + * Function: H5Gmove + * + * Purpose: Moves and renames a link. The new API to do this is H5Lmove. + * + *------------------------------------------------------------------------- + */ +herr_t +H5Gmove(hid_t src_loc_id, const char *src_name, const char *dst_name) +{ + herr_t ret_value; + + FUNC_ENTER_API(H5Gmove, FAIL) + H5TRACE3("e","iss",src_loc_id,src_name,dst_name); + + if((ret_value=H5Lmove(src_loc_id, src_name, H5L_SAME_LOC, dst_name, H5P_DEFAULT)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "Couldn't move link") + +done: + FUNC_LEAVE_API(ret_value) +} + +/*------------------------------------------------------------------------- + * Function: H5Gmove2 + * + * Purpose: Moves and renames a link. The new API to do this is H5Lmove. + * + *------------------------------------------------------------------------- + */ +herr_t H5Gmove2(hid_t src_loc_id, const char *src_name, + hid_t dst_loc_id, const char *dst_name) +{ + herr_t ret_value; + + FUNC_ENTER_API(H5Gmove2, FAIL) + + if((ret_value=H5Lmove(src_loc_id, src_name, dst_loc_id, dst_name, H5P_DEFAULT)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "Couldn't move link") + +done: + FUNC_LEAVE_API(ret_value) +} + +/*------------------------------------------------------------------------- + * Function: H5Gunlink + * + * Purpose: Removes a link. The new API is H5Lunlink. + * + *------------------------------------------------------------------------- + */ +herr_t +H5Gunlink(hid_t loc_id, const char *name) +{ + herr_t ret_value; + + FUNC_ENTER_API(H5Gunlink, FAIL) + H5TRACE2("e","is",loc_id,name); + + if((ret_value=H5Lunlink(loc_id, name)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_CANTDELETE, FAIL, "Couldn't delete link") + +done: + FUNC_LEAVE_API(ret_value) +} + +/*------------------------------------------------------------------------- + * Function: H5Gget_linkval + * + * Purpose: Retrieve's a soft link's data. The new API is + * H5Lget_linkval. + * + *------------------------------------------------------------------------- + */ +herr_t H5Gget_linkval(hid_t loc_id, const char *name, + size_t size, char *buf/*out*/) +{ + herr_t ret_value; + + FUNC_ENTER_API(H5Gget_linkval, FAIL) + + if((ret_value=H5Lget_linkval(loc_id, name, size, buf)) < 0) + HGOTO_ERROR(H5E_LINK, H5E_NOTFOUND, FAIL, "Couldn't get link info") + +done: + FUNC_LEAVE_API(ret_value) +} + |