diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2018-03-12 04:36:48 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2018-03-12 04:36:48 (GMT) |
commit | 3494282d42bf6147b32a10162353920f9e8b5a6a (patch) | |
tree | 843581557a75580be9a5387f7aaf92f574c42a6e /c++/src/H5Group.cpp | |
parent | 43158f3bb352f374c31556a5d0dc463a09e0b32e (diff) | |
download | hdf5-3494282d42bf6147b32a10162353920f9e8b5a6a.zip hdf5-3494282d42bf6147b32a10162353920f9e8b5a6a.tar.gz hdf5-3494282d42bf6147b32a10162353920f9e8b5a6a.tar.bz2 |
HDFFV-10149 continued
Description:
- Moved the new wrappers committed on Mar 9:
43158f3bb352f374c31556a5d0dc463a09e0b32e
to H5Location and renamed some of them for overloading.
This is because the loc_id in the C APIs can be file, group, dataset,
named datatype, and attribute. Previous implementation was wrong
following some inaccurate C API reference manual.
- Only the following wrappers are modified or added:
+ H5Lcreate_soft: changed name from newLink to link
// Creates a soft link from link_name to target_name.
void link(const char *target_name, const char *link_name,...)
void link(const H5std_string& target_name,...)
+ H5Lcreate_hard: changed name from newLink to link
// Creates a hard link from new_name to curr_name.
void link(const char *curr_name, const Group& new_loc,...)
void link(const H5std_string& curr_name, const Group& new_loc,...)
// Creates a hard link from new_name to curr_name in same location.
void link(const char *curr_name, const hid_t same_loc,...)
void link(const H5std_string& curr_name, const hid_t same_loc,...)
+ H5Ldelete: modified existing functions to add 2nd argument
// Removes the specified link from this location.
void unlink(const char *link_name,
const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
void unlink(const H5std_string& link_name,
const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
- copyLink and moveLink were only moved from Group to H5Location, no change
- Added class LinkCreatPropList
- Added overloaded functions H5Location::createGroup to take a link creation
property list
Group createGroup(const char* name, const LinkCreatPropList& lcpl)
Group createGroup(const H5std_string& name, const LinkCreatPropList& lcpl)
- Added wrapper for H5Lget_info() to H5Location
H5L_info_t getLinkInfo(const H5std_string& link_name,...)
Platforms tested:
Linux/64 (jelly)
Linux/ppc64 (ostrich)
Darwin (osx1010test)
Diffstat (limited to 'c++/src/H5Group.cpp')
-rw-r--r-- | c++/src/H5Group.cpp | 292 |
1 files changed, 1 insertions, 291 deletions
diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index aa27a18..c4c7017 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -27,6 +27,7 @@ #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" +#include "H5LcreatProp.h" #include "H5LaccProp.h" #include "H5Location.h" #include "H5Object.h" @@ -76,297 +77,6 @@ void Group::closeObjId(hid_t obj_id) const } } -/*** For H5L API ***/ - -//-------------------------------------------------------------------------- -// Function: Group::newLink -///\brief Creates a soft link from \a link_name to \a target_name. -///\param target_name - IN: Name of object, can be a non-existing object -///\param link_name - IN: Link name for the target name -///\param lcpl - IN: Link creation plist - default to PropList::DEFAULT -///\param lapl - IN: Link access plist - default to PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// Note that both names are interpreted relative to the current -/// location. -/// For information on creating a soft link, please refer to the -/// H5Lcreate_soft APIs in the HDF5 C Reference Manual. -// March 2018 -//-------------------------------------------------------------------------- -void Group::newLink(const char *target_name, const char *link_name, - const PropList& lcpl, const PropList& lapl) const -{ - herr_t ret_value = -1; - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lcreate_soft(target_name, id, link_name, lcpl_id, lapl_id); - if (ret_value < 0) - throwException("newLink", "creating soft link failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::newLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a target_name and \a link_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::newLink(const H5std_string& target_name, const H5std_string& - link_name, const PropList& lcpl, const PropList& lapl) const -{ - newLink(target_name.c_str(), link_name.c_str(), lcpl, lapl); -} - -//-------------------------------------------------------------------------- -// Function: Group::newLink -///\brief Creates a hard link from \a new_name to \a curr_name. -///\param curr_name - IN: Name of the existing object -///\param new_name - IN: New name for the object -///\param lcpl - IN: Link creation plist - default to PropList::DEFAULT -///\param lapl - IN: Link access plist - default to PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// Note that both names are interpreted relative to the -/// specified location. -/// For information on creating a hard link, please refer to the -/// H5Lcreate_hard APIs in the HDF5 C Reference Manual. -// March 2018 -//-------------------------------------------------------------------------- -void Group::newLink(const char *curr_name, const Group& new_loc, - const char *new_name, const PropList& lcpl, const PropList& lapl) const -{ - herr_t ret_value = -1; - hid_t new_loc_id = new_loc.getId(); - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lcreate_hard(getId(), curr_name, new_loc.getId(), new_name, H5P_DEFAULT, H5P_DEFAULT); - if (ret_value < 0) - throwException("newLink", "creating link failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::newLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a curr_name and \a new_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::newLink(const H5std_string& curr_name, const Group& new_loc, - const H5std_string& new_name, const PropList& lcpl, const PropList& lapl) const -{ - newLink(curr_name.c_str(), new_loc, new_name.c_str(), lcpl, lapl); -} - -//-------------------------------------------------------------------------- -// Function: Group::newLink -///\brief Creates a hard link from \a new_name to \a curr_name - can be -/// used to pass in H5L_SAME_LOC. -///\param curr_name - IN: Name of the existing object -///\param new_name - IN: New name for the object -///\param lcpl - IN: Link creation plist - default to PropList::DEFAULT -///\param lapl - IN: Link access plist - default to PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// Note that both names are interpreted relative to the -/// specified location. -/// For information on creating a hard link, please refer to the -/// H5Lcreate_hard APIs in the HDF5 C Reference Manual. -// March 2018 -//-------------------------------------------------------------------------- -void Group::newLink(const char *curr_name, const hid_t same_loc, - const char *new_name, const PropList& lcpl, const PropList& lapl) const -{ - herr_t ret_value = -1; - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lcreate_hard(getId(), curr_name, same_loc, new_name, H5P_DEFAULT, H5P_DEFAULT); - - if (ret_value < 0) - throwException("newLink", "creating link failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::newLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a curr_name and \a new_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::newLink(const H5std_string& curr_name, const hid_t same_loc, - const H5std_string& new_name, const PropList& lcpl, const PropList& lapl) const -{ - newLink(curr_name.c_str(), same_loc, new_name.c_str(), lcpl, lapl); -} - - -//-------------------------------------------------------------------------- -// Function: Group::copyLink -///\brief Copies a link from one location to another. -///\param src - IN: Source location -///\param src_name - IN: Original name -///\param dst - IN: Destination location -///\param dst_name - IN: New name -///\param lcpl - IN: Link creation plist - default PropList::DEFAULT -///\param lapl - IN: Link access plist - default PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::copyLink(const char *src_name, - const Group& dst, const char *dst_name, const PropList& lcpl, - const PropList& lapl) const -{ - herr_t ret_value; - hid_t dst_id = dst.getId(); - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lcopy(getId(), src_name, dst_id, dst_name, lcpl_id, lapl_id); - if(ret_value < 0) - throwException("copyLink", "H5Lcopy failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::copyLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a src_name and \a dst_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::copyLink(const H5std_string& src_name, - const Group& dst, const H5std_string& dst_name, const PropList& lcpl, - const PropList& lapl) const -{ - copyLink(src_name.c_str(), dst, dst_name.c_str(), lcpl, lapl); -} - -//-------------------------------------------------------------------------- -// Function: Group::copyLink -///\brief Copies a link to the same location. -///\param src - IN: Source location -///\param src_name - IN: Original name -///\param dst_name - IN: New name -///\param lcpl - IN: Link creation plist - default PropList::DEFAULT -///\param lapl - IN: Link access plist - default PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::copyLink(const char *src_name, - const char *dst_name, const PropList& lcpl, - const PropList& lapl) const -{ - herr_t ret_value; - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lcopy(getId(), src_name, H5L_SAME_LOC, dst_name, lcpl_id, lapl_id); - if(ret_value < 0) - throwException("copyLink", "H5Lcopy H5L_SAME_LOC failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::copyLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a src_name and \a dst_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::copyLink(const H5std_string& src_name, - const H5std_string& dst_name, const PropList& lcpl, - const PropList& lapl) const -{ - copyLink(src_name.c_str(), dst_name.c_str(), lcpl, lapl); -} - -//-------------------------------------------------------------------------- -// Function: Group::moveLink -///\brief Renames an object in a group/file and moves it to a new location. -///\param src - IN: Source location -///\param src_name - IN: Original name -///\param dst - IN: Destination location -///\param dst_name - IN: New name -///\param lcpl - IN: Link creation plist - default PropList::DEFAULT -///\param lapl - IN: Link access plist - default PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -///\note -/// Exercise care in moving groups as it is possible to render -/// data in a file inaccessible with Group::moveLink. Please refer -/// to the Group Interface in the HDF5 User's Guide for details. -// March, 2018 -//-------------------------------------------------------------------------- -void Group::moveLink(const char* src_name, const Group& dst, const char* dst_name, const PropList& lcpl, const PropList& lapl) const -{ - herr_t ret_value; - hid_t dst_id = dst.getId(); - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lmove(getId(), src_name, dst_id, dst_name, lcpl_id, lapl_id); - if (ret_value < 0) - throwException("moveLink", "H5Lmove failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::moveLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a src_name and \a dst_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::moveLink(const H5std_string& src_name, const Group& dst, const H5std_string& dst_name, const PropList& lcpl, const PropList& lapl) const -{ - moveLink(src_name.c_str(), dst, dst_name.c_str(), lcpl, lapl); -} - -//-------------------------------------------------------------------------- -// Function: Group::moveLink -///\brief Renames an object in a group or file to the same location. -///\param src - IN: Source location -///\param src_name - IN: Original name -///\param dst_name - IN: New name -///\param lcpl - IN: Link creation plist - default PropList::DEFAULT -///\param lapl - IN: Link access plist - default PropList::DEFAULT -///\exception H5::FileIException or H5::GroupIException -///\note -/// Exercise care in moving groups as it is possible to render -/// data in a file inaccessible with Group::moveLink. Please refer -/// to the Group Interface in the HDF5 User's Guide for details. -// March, 2018 -//-------------------------------------------------------------------------- -void Group::moveLink(const char* src_name, const char* dst_name, const PropList& lcpl, const PropList& lapl) const -{ - herr_t ret_value; - hid_t lcpl_id = lcpl.getId(); - hid_t lapl_id = lapl.getId(); - - ret_value = H5Lmove(getId(), src_name, H5L_SAME_LOC, dst_name, lcpl_id, lapl_id); - if (ret_value < 0) - throwException("moveLink", "H5Lmove H5L_SAME_LOC failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::moveLink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a src_name and \a dst_name. -///\exception H5::FileIException or H5::GroupIException -// March, 2018 -//-------------------------------------------------------------------------- -void Group::moveLink(const H5std_string& src_name, const H5std_string& dst_name, const PropList& lcpl, const PropList& lapl) const -{ - moveLink(src_name.c_str(), H5L_SAME_LOC, dst_name.c_str(), lcpl, lapl); -} - -/*** End of H5L API section ***/ - //-------------------------------------------------------------------------- // Function: Group::getLocId // Purpose: Get the id of this group |