diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2005-06-19 21:57:34 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2005-06-19 21:57:34 (GMT) |
commit | f649d42b461830840eab6b3a958a897fbe311fe7 (patch) | |
tree | 3054e2801b84cc7d25fb4e6e82af2104a425482e /c++ | |
parent | 828c6646a1b2bf0c7ddcf551996d44e9fd876715 (diff) | |
download | hdf5-f649d42b461830840eab6b3a958a897fbe311fe7.zip hdf5-f649d42b461830840eab6b3a958a897fbe311fe7.tar.gz hdf5-f649d42b461830840eab6b3a958a897fbe311fe7.tar.bz2 |
[svn-r10955] Purpose: Added more APIs
Description:
- Added another overloaded CommonFG::getComment so the user will not
have to provide the comment's length.
- Added wrappers for H5Gget_comment when the comment is to be removed,
CommonFG::removeComment.
- Corrected several 'delete' statements
Platforms tested:
Linux 2.4 (heping)
AIX 5.1 (copper)
Diffstat (limited to 'c++')
-rw-r--r-- | c++/src/H5CommonFG.cpp | 89 | ||||
-rw-r--r-- | c++/src/H5CommonFG.h | 5 |
2 files changed, 83 insertions, 11 deletions
diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp index 61fa5a1..7771c40 100644 --- a/c++/src/H5CommonFG.cpp +++ b/c++/src/H5CommonFG.cpp @@ -355,7 +355,7 @@ string CommonFG::getLinkval( const char* name, size_t size ) const throwException("getLinkval", "H5Gget_linkval failed"); } string value = string( value_C ); - delete value_C; + delete []value_C; return( value ); } @@ -408,9 +408,76 @@ void CommonFG::setComment( const string& name, const string& comment ) const } //-------------------------------------------------------------------------- +// Function: CommonFG::removeComment +///\brief Removes the comment from an object specified by its name. +///\param name - IN: Name of the object +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - May 2005 +//-------------------------------------------------------------------------- +void CommonFG::removeComment(const char* name) const +{ + herr_t ret_value = H5Gset_comment(getLocId(), name, NULL); + if( ret_value < 0 ) + { + throwException("removeComment", "H5Gset_comment failed"); + } +} + +//-------------------------------------------------------------------------- +// Function: CommonFG::removeComment +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c std::string for \a name. +// Programmer Binh-Minh Ribler - May 2005 +//-------------------------------------------------------------------------- +void CommonFG::removeComment(const string& name) const +{ + removeComment (name.c_str()); +} + +//-------------------------------------------------------------------------- // Function: CommonFG::getComment ///\brief Retrieves comment for the specified object. ///\param name - IN: Name of the object +///\return Comment string +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - May 2005 +//-------------------------------------------------------------------------- +string CommonFG::getComment (const string& name) const +{ + size_t bufsize = 256; // anticipating the comment's length + hid_t loc_id = getLocId(); // temporary variable + + // temporary C-string for the object's comment + char* comment_C = new char[bufsize+1]; + herr_t ret_value = H5Gget_comment (loc_id, name.c_str(), bufsize, comment_C); + + // if the actual length of the comment is longer than the anticipated + // value, then call H5Gget_comment again with the correct value + if (ret_value > bufsize) + { + bufsize = ret_value; + delete []comment_C; + comment_C = new char[bufsize+1]; + ret_value = H5Gget_comment (loc_id, name.c_str(), bufsize, comment_C); + } + + // if H5Gget_comment returns SUCCEED, return the string comment, + // otherwise, throw an exception + if( ret_value < 0 ) + { + throwException("getComment", "H5Gget_comment failed"); + } + string comment = string( comment_C ); + delete []comment_C; + return (comment); +} + +//-------------------------------------------------------------------------- +// Function: CommonFG::getComment +///\brief Retrieves comment for the specified object and its comment's +/// length. +///\param name - IN: Name of the object ///\param bufsize - IN: Length of the comment to retrieve ///\return Comment string ///\exception H5::FileIException or H5::GroupIException @@ -429,7 +496,7 @@ string CommonFG::getComment( const char* name, size_t bufsize ) const throwException("getComment", "H5Gget_comment failed"); } string comment = string( comment_C ); - delete comment_C; + delete []comment_C; return( comment ); } @@ -762,10 +829,10 @@ hsize_t CommonFG::getNumObjs() const ///\return Object name ///\exception H5::FileIException or H5::GroupIException ///\par Description -/// The value of idx can be any nonnegative number less than the -/// total number of objects in the group, which is returned by -/// the function \c CommonFG::getNumObjs. Note that this is a -/// transient index; thus, an object may have a different index +/// The value of idx can be any nonnegative number less than the +/// total number of objects in the group, which is returned by +/// the function \c CommonFG::getNumObjs. Note that this is a +/// transient index; thus, an object may have a different index /// each time the group is opened. // Programmer Binh-Minh Ribler - Mar, 2005 //-------------------------------------------------------------------------- @@ -784,7 +851,7 @@ string CommonFG::getObjnameByIdx(hsize_t idx) const // clean up and return the string string name = string(name_C); - delete [] name_C; + delete []name_C; return (name); } @@ -798,10 +865,10 @@ string CommonFG::getObjnameByIdx(hsize_t idx) const ///\return Actual size of the object name or 0, if object has no name ///\exception H5::FileIException or H5::GroupIException ///\par Description -/// The value of idx can be any nonnegative number less than the -/// total number of objects in the group, which is returned by -/// the function \c CommonFG::getNumObjs. Note that this is a -/// transient index; thus, an object may have a different index +/// The value of idx can be any nonnegative number less than the +/// total number of objects in the group, which is returned by +/// the function \c CommonFG::getNumObjs. Note that this is a +/// transient index; thus, an object may have a different index /// each time the group is opened. // Programmer Binh-Minh Ribler - January, 2003 //-------------------------------------------------------------------------- diff --git a/c++/src/H5CommonFG.h b/c++/src/H5CommonFG.h index 075aca2..7541627 100644 --- a/c++/src/H5CommonFG.h +++ b/c++/src/H5CommonFG.h @@ -47,9 +47,14 @@ class H5_DLLCPP CommonFG { DataSet openDataSet(const string& name) const; // Retrieves comment for the HDF5 object specified by its name. + string getComment(const string& name) const; string getComment(const char* name, size_t bufsize) const; string getComment(const string& name, size_t bufsize) const; + // Removes the comment for the HDF5 object specified by its name. + void removeComment(const char* name) const; + void removeComment(const string& name) const; + // Sets the comment for an HDF5 object specified by its name. void setComment(const char* name, const char* comment) const; void setComment(const string& name, const string& comment) const; |