summaryrefslogtreecommitdiffstats
path: root/c++/src
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2018-07-21 05:40:57 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2018-07-21 05:40:57 (GMT)
commit4f37cdcd36adb1bafcdf9af49b611180a64d157b (patch)
tree9111eecc09e15c8b70dd830ce23797d0e5bf0abf /c++/src
parentdd0a040ec807912b80a9f1779fbf46c65d01cd57 (diff)
downloadhdf5-4f37cdcd36adb1bafcdf9af49b611180a64d157b.zip
hdf5-4f37cdcd36adb1bafcdf9af49b611180a64d157b.tar.gz
hdf5-4f37cdcd36adb1bafcdf9af49b611180a64d157b.tar.bz2
Code improvement
Description: Moved the new H5Object::getInfo member functions to H5Location and made them overloaded with the existing H5Location::getObjinfo. This way is cleaner than the previous approach. Platforms tested: Linux/64 (jelly) Linux/32 (jam) Darwin (osx1010test)
Diffstat (limited to 'c++/src')
-rw-r--r--c++/src/H5Location.cpp143
-rw-r--r--c++/src/H5Location.h23
-rw-r--r--c++/src/H5Object.cpp124
-rw-r--r--c++/src/H5Object.h20
4 files changed, 142 insertions, 168 deletions
diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp
index 8df7467..dd82a54 100644
--- a/c++/src/H5Location.cpp
+++ b/c++/src/H5Location.cpp
@@ -1356,58 +1356,154 @@ void H5Location::move(const H5std_string& src, const H5std_string& dst) const
moveLink(src.c_str(), dst.c_str(), LinkCreatPropList::DEFAULT, LinkAccPropList::DEFAULT);
}
-#if 0
//--------------------------------------------------------------------------
-// Function: H5Location::deleteLink
+// Function: H5Location::unlink
///\brief Removes the specified link from this group.
///\param name - IN: Name of the object to be removed
///\exception H5::FileIException/H5::GroupIException/H5::LocationException
// March, 2018
//--------------------------------------------------------------------------
-void H5Location::deleteLink(const char* name, const LinkAccPropList& lapl) const
+void H5Location::unlink(const char* name, const LinkAccPropList& lapl) const
{
- herr_t ret_value = H5Ldelete(getId(), name, H5P_DEFAULT);
+ herr_t ret_value = H5Ldelete(getId(), name, lapl.getId());
if (ret_value < 0)
- throwException("deleteLink", "H5Ldelete failed");
+ throwException("unlink", "H5Ldelete failed");
}
//--------------------------------------------------------------------------
-// Function: H5Location::deleteLink
+// Function: H5Location::unlink
///\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 name.
// March, 2018
//--------------------------------------------------------------------------
-void H5Location::deleteLink(const H5std_string& name, const LinkAccPropList& lapl) const
+void H5Location::unlink(const H5std_string& name, const LinkAccPropList& lapl) const
{
- deleteLink(name.c_str());
+ unlink(name.c_str(), lapl);
}
-#endif
//--------------------------------------------------------------------------
-// Function: H5Location::unlink
-///\brief Removes the specified link from this group.
-///\param name - IN: Name of the object to be removed
-///\exception H5::FileIException/H5::GroupIException/H5::LocationException
-// March, 2018
+// Function: H5Location::getObjinfo
+///\brief Retrieves information about an HDF5 object.
+///\param objinfo - OUT: Struct containing the object info
+///\param fields - IN: Indicates the group of information to be retrieved
+///\par Description
+/// Valid values of \a fields are as follows:
+/// \li \c H5O_INFO_BASIC (default)
+/// \li \c H5O_INFO_TIME
+/// \li \c H5O_INFO_NUM_ATTRS
+/// \li \c H5O_INFO_HDR
+/// \li \c H5O_INFO_META_SIZE
+/// \li \c H5O_INFO_ALL
+// July, 2018
//--------------------------------------------------------------------------
-void H5Location::unlink(const char* name, const LinkAccPropList& lapl) const
+void H5Location::getObjinfo(H5O_info_t& objinfo, unsigned fields) const
{
- herr_t ret_value = H5Ldelete(getId(), name, lapl.getId());
+
+ // Use C API to get information of the object
+ herr_t ret_value = H5Oget_info2(getId(), &objinfo, fields);
+
+ // Throw exception if C API returns failure
if (ret_value < 0)
- throwException("unlink", "H5Ldelete failed");
+ throwException(inMemFunc("getObjinfo"), "H5Oget_info2 failed");
}
//--------------------------------------------------------------------------
-// Function: H5Location::unlink
+// Function: H5Location::getObjinfo
+///\brief Retrieves information about an HDF5 object given its name.
+///\param name - IN: Name of the object to be queried - \c char *
+///\param objinfo - OUT: Struct containing the object info
+///\param fields - IN: Indicates the group of information to be retrieved
+/// - default to H5O_INFO_BASIC
+///\param lapl - IN: Link access property list
+///\par Description
+/// Valid values of \a fields are as follows:
+/// \li \c H5O_INFO_BASIC (default)
+/// \li \c H5O_INFO_TIME
+/// \li \c H5O_INFO_NUM_ATTRS
+/// \li \c H5O_INFO_HDR
+/// \li \c H5O_INFO_META_SIZE
+/// \li \c H5O_INFO_ALL
+// July, 2018
+//--------------------------------------------------------------------------
+void H5Location::getObjinfo(const char* name, H5O_info_t& objinfo, unsigned fields, const LinkAccPropList& lapl) const
+{
+ // Use C API to get information of the object
+ herr_t ret_value = H5Oget_info_by_name2(getId(), name, &objinfo, fields, lapl.getId());
+
+ // Throw exception if C API returns failure
+ if (ret_value < 0)
+ throwException(inMemFunc("getObjinfo"), "H5Oget_info_by_name2 failed");
+}
+
+//--------------------------------------------------------------------------
+// Function: H5Location::getObjinfo
///\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 name.
-// March, 2018
+/// It differs from the above function in that it takes
+/// a reference to an \c H5std_string for \a name.
+///\param name - IN: Name of the object to be queried - \c H5std_string
+///\param objinfo - OUT: Struct containing the object info
+///\param fields - IN: Indicates the group of information to be retrieved
+/// - default to H5O_INFO_BASIC
+///\param lapl - IN: Link access property list
+// July, 2018
//--------------------------------------------------------------------------
-void H5Location::unlink(const H5std_string& name, const LinkAccPropList& lapl) const
+void H5Location::getObjinfo(const H5std_string& name, H5O_info_t& objinfo, unsigned fields, const LinkAccPropList& lapl) const
{
- unlink(name.c_str(), lapl);
+ getObjinfo(name.c_str(), objinfo, fields, lapl);
+}
+
+//--------------------------------------------------------------------------
+// Function: H5Location::getObjinfo
+///\brief Retrieves information about an HDF5 object given its index.
+///\param grp_name - IN: Group name where the object belongs - \c char *
+///\param idx_type - IN: Type of index
+///\param order - IN: Order to traverse
+///\param idx - IN: Object position
+///\param objinfo - OUT: Struct containing the object info
+///\param fields - IN: Indicates the group of information to be retrieved
+/// - default to H5O_INFO_BASIC
+///\param lapl - IN: Link access property list
+///\par Description
+/// Valid values of \a fields are as follows:
+/// \li \c H5O_INFO_BASIC (default)
+/// \li \c H5O_INFO_TIME
+/// \li \c H5O_INFO_NUM_ATTRS
+/// \li \c H5O_INFO_HDR
+/// \li \c H5O_INFO_META_SIZE
+/// \li \c H5O_INFO_ALL
+// July, 2018
+//--------------------------------------------------------------------------
+void H5Location::getObjinfo(const char* grp_name, H5_index_t idx_type,
+ H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo, unsigned fields,
+ const LinkAccPropList& lapl) const
+{
+ // Use C API to get information of the object
+ herr_t ret_value = H5Oget_info_by_idx2(getId(), grp_name, idx_type, order,
+ idx, &objinfo, fields, lapl.getId());
+
+ // Throw exception if C API returns failure
+ if (ret_value < 0)
+ throwException(inMemFunc("getObjinfo"), "H5Oget_info_by_idx2 failed");
+}
+
+//--------------------------------------------------------------------------
+// Function: H5Location::getObjinfo
+///\brief This is an overloaded member function, provided for convenience.
+/// It differs from the above function in that it takes
+/// a reference to an \c H5std_string for \a name.
+///\param name - IN: Name of the object to be queried - \c H5std_string
+///\param objinfo - OUT: Struct containing the object info
+///\param fields - IN: Indicates a group of information to be retrieved
+/// - default to H5O_INFO_BASIC
+///\param lapl - IN: Link access property list
+// July, 2018
+//--------------------------------------------------------------------------
+void H5Location::getObjinfo(const H5std_string& grp_name, H5_index_t idx_type,
+ H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo, unsigned fields,
+ const LinkAccPropList& lapl) const
+{
+ getObjinfo(grp_name.c_str(), idx_type, order, idx, objinfo, fields, lapl);
}
#ifndef H5_NO_DEPRECATED_SYMBOLS
@@ -1467,6 +1563,7 @@ void H5Location::getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const
{
getObjinfo(name.c_str(), statbuf);
}
+
#endif /* H5_NO_DEPRECATED_SYMBOLS */
//--------------------------------------------------------------------------
diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h
index 19c49ea..0b41493 100644
--- a/c++/src/H5Location.h
+++ b/c++/src/H5Location.h
@@ -141,6 +141,27 @@ class H5_DLLCPP H5Location : public IdComponent {
unsigned childObjVersion(const char* objname) const;
unsigned childObjVersion(const H5std_string& objname) const;
+ // Retrieves information about an HDF5 object.
+ void getObjinfo(H5O_info_t& objinfo, unsigned fields = H5O_INFO_BASIC) const;
+
+ // Retrieves information about an HDF5 object, given its name.
+ void getObjinfo(const char* name, H5O_info_t& objinfo,
+ unsigned fields = H5O_INFO_BASIC,
+ const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
+ void getObjinfo(const H5std_string& name, H5O_info_t& objinfo,
+ unsigned fields = H5O_INFO_BASIC,
+ const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
+
+ // Retrieves information about an HDF5 object, given its index.
+ void getObjinfo(const char* grp_name, H5_index_t idx_type,
+ H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo,
+ unsigned fields = H5O_INFO_BASIC,
+ const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
+ void getObjinfo(const H5std_string& grp_name, H5_index_t idx_type,
+ H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo,
+ unsigned fields = H5O_INFO_BASIC,
+ const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
+
#ifndef H5_NO_DEPRECATED_SYMBOLS
// Returns the type of an object in this group, given the
// object's index.
@@ -149,7 +170,7 @@ class H5_DLLCPP H5Location : public IdComponent {
H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const;
// Returns information about an HDF5 object, given by its name,
- // at this location.
+ // at this location. - Deprecated dues to performance issues
void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const;
void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const;
void getObjinfo(const char* name, H5G_stat_t& statbuf) const;
diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp
index a33acb3..b95e222 100644
--- a/c++/src/H5Object.cpp
+++ b/c++/src/H5Object.cpp
@@ -227,130 +227,6 @@ int H5Object::iterateAttrs(attr_operator_t user_op, unsigned *_idx, void *op_dat
}
//--------------------------------------------------------------------------
-// Function: H5Object::getInfo
-///\brief Retrieves information about an HDF5 object.
-///\param objinfo - OUT: Struct containing the object info
-///\param fields - IN: Indicates the group of information to be retrieved
-///\par Description
-/// Valid values of \a fields are as follows:
-/// \li \c H5O_INFO_BASIC (default)
-/// \li \c H5O_INFO_TIME
-/// \li \c H5O_INFO_NUM_ATTRS
-/// \li \c H5O_INFO_HDR
-/// \li \c H5O_INFO_META_SIZE
-/// \li \c H5O_INFO_ALL
-// July, 2018
-//--------------------------------------------------------------------------
-void H5Object::getInfo(H5O_info_t& objinfo, unsigned fields) const
-{
-
- // Use C API to get information of the object
- herr_t ret_value = H5Oget_info2(getId(), &objinfo, fields);
-
- // Throw exception if C API returns failure
- if (ret_value < 0)
- throwException(inMemFunc("getInfo"), "H5Oget_info2 failed");
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Object::getInfo
-///\brief Retrieves information about an HDF5 object given its name.
-///\param name - IN: Name of the object to be queried - \c char *
-///\param objinfo - OUT: Struct containing the object info
-///\param fields - IN: Indicates the group of information to be retrieved
-/// - default to H5O_INFO_BASIC
-///\param lapl - IN: Link access property list
-///\par Description
-/// Valid values of \a fields are as follows:
-/// \li \c H5O_INFO_BASIC (default)
-/// \li \c H5O_INFO_TIME
-/// \li \c H5O_INFO_NUM_ATTRS
-/// \li \c H5O_INFO_HDR
-/// \li \c H5O_INFO_META_SIZE
-/// \li \c H5O_INFO_ALL
-// July, 2018
-//--------------------------------------------------------------------------
-void H5Object::getInfo(const char* name, H5O_info_t& objinfo, unsigned fields, const LinkAccPropList& lapl) const
-{
- // Use C API to get information of the object
- herr_t ret_value = H5Oget_info_by_name2(getId(), name, &objinfo, fields, lapl.getId());
-
- // Throw exception if C API returns failure
- if (ret_value < 0)
- throwException(inMemFunc("getInfo"), "H5Oget_info_by_name2 failed");
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Object::getInfo
-///\brief This is an overloaded member function, provided for convenience.
-/// It differs from the above function in that it takes
-/// a reference to an \c H5std_string for \a name.
-///\param name - IN: Name of the object to be queried - \c H5std_string
-///\param objinfo - OUT: Struct containing the object info
-///\param fields - IN: Indicates the group of information to be retrieved
-/// - default to H5O_INFO_BASIC
-///\param lapl - IN: Link access property list
-// July, 2018
-//--------------------------------------------------------------------------
-void H5Object::getInfo(const H5std_string& name, H5O_info_t& objinfo, unsigned fields, const LinkAccPropList& lapl) const
-{
- getInfo(name.c_str(), objinfo, fields, lapl);
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Object::getInfo
-///\brief Retrieves information about an HDF5 object given its index.
-///\param grp_name - IN: Group name where the object belongs - \c char *
-///\param idx_type - IN: Type of index
-///\param order - IN: Order to traverse
-///\param idx - IN: Object position
-///\param objinfo - OUT: Struct containing the object info
-///\param fields - IN: Indicates the group of information to be retrieved
-/// - default to H5O_INFO_BASIC
-///\param lapl - IN: Link access property list
-///\par Description
-/// Valid values of \a fields are as follows:
-/// \li \c H5O_INFO_BASIC (default)
-/// \li \c H5O_INFO_TIME
-/// \li \c H5O_INFO_NUM_ATTRS
-/// \li \c H5O_INFO_HDR
-/// \li \c H5O_INFO_META_SIZE
-/// \li \c H5O_INFO_ALL
-// July, 2018
-//--------------------------------------------------------------------------
-void H5Object::getInfo(const char* grp_name, H5_index_t idx_type,
- H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo, unsigned fields,
- const LinkAccPropList& lapl) const
-{
- // Use C API to get information of the object
- herr_t ret_value = H5Oget_info_by_idx2(getId(), grp_name, idx_type, order,
- idx, &objinfo, fields, lapl.getId());
-
- // Throw exception if C API returns failure
- if (ret_value < 0)
- throwException(inMemFunc("getInfo"), "H5Oget_info_by_idx2 failed");
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Object::getInfo
-///\brief This is an overloaded member function, provided for convenience.
-/// It differs from the above function in that it takes
-/// a reference to an \c H5std_string for \a name.
-///\param name - IN: Name of the object to be queried - \c H5std_string
-///\param objinfo - OUT: Struct containing the object info
-///\param fields - IN: Indicates a group of information to be retrieved
-/// - default to H5O_INFO_BASIC
-///\param lapl - IN: Link access property list
-// July, 2018
-//--------------------------------------------------------------------------
-void H5Object::getInfo(const H5std_string& grp_name, H5_index_t idx_type,
- H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo, unsigned fields,
- const LinkAccPropList& lapl) const
-{
- getInfo(grp_name.c_str(), idx_type, order, idx, objinfo, fields, lapl);
-}
-
-//--------------------------------------------------------------------------
// Function: H5Object::objVersion
///\brief Returns the header version of this HDF5 object.
///\return Object version, which can have the following values:
diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h
index 268fe58..10b3865 100644
--- a/c++/src/H5Object.h
+++ b/c++/src/H5Object.h
@@ -92,26 +92,6 @@ class H5_DLLCPP H5Object : public H5Location {
// Returns an identifier.
virtual hid_t getId() const = 0;
- // Returns information about an HDF5 object.
- void getInfo(H5O_info_t& objinfo, unsigned fields = H5O_INFO_BASIC) const;
- // Returns information about an HDF5 object, given its name.
- void getInfo(const char* name, H5O_info_t& objinfo,
- unsigned fields = H5O_INFO_BASIC,
- const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
- void getInfo(const H5std_string& name, H5O_info_t& objinfo,
- unsigned fields = H5O_INFO_BASIC,
- const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
-
- // Retrieves information about an HDF5 object, given its index.
- void getInfo(const char* grp_name, H5_index_t idx_type,
- H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo,
- unsigned fields = H5O_INFO_BASIC,
- const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
- void getInfo(const H5std_string& grp_name, H5_index_t idx_type,
- H5_iter_order_t order, hsize_t idx, H5O_info_t& objinfo,
- unsigned fields = H5O_INFO_BASIC,
- const LinkAccPropList& lapl = LinkAccPropList::DEFAULT) const;
-
// Gets the name of this HDF5 object, i.e., Group, DataSet, or
// DataType.
ssize_t getObjName(char *obj_name, size_t buf_size = 0) const;