diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2001-11-14 22:14:05 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2001-11-14 22:14:05 (GMT) |
commit | 5077ac0c90290efc9611fcfca7c689f9b66b6d0d (patch) | |
tree | 2c249fb9918464c43166722945d02d7841a0042e /c++/src | |
parent | c84ad4179d7b7c858d4309f1056fc1f0b497b84c (diff) | |
download | hdf5-5077ac0c90290efc9611fcfca7c689f9b66b6d0d.zip hdf5-5077ac0c90290efc9611fcfca7c689f9b66b6d0d.tar.gz hdf5-5077ac0c90290efc9611fcfca7c689f9b66b6d0d.tar.bz2 |
[svn-r4605]
Purpose:
Bug fix
Description:
Add the overloaded member function Attribute::getName to return
the attribute name's length as in C API. This functionality was
missing. Note that the current getName that returns "string"
is not removed, for different way of using getName.
Platforms tested:
SunOS 5.7 (arabica)
Windows 98
Diffstat (limited to 'c++/src')
-rw-r--r-- | c++/src/H5Attribute.cpp | 21 | ||||
-rw-r--r-- | c++/src/H5Attribute.h | 3 |
2 files changed, 17 insertions, 7 deletions
diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp index 86f1377..fa37059 100644 --- a/c++/src/H5Attribute.cpp +++ b/c++/src/H5Attribute.cpp @@ -76,23 +76,32 @@ hid_t Attribute::p_getType() const } } -// Gets the name of this attribute. -string Attribute::getName( size_t buf_size ) const +// Gets the name of this attribute, returning its length. +ssize_t Attribute::getName( size_t buf_size, string& attr_name ) const { char* name_C = new char[buf_size+1]; // temporary C-string for C API // Calls C routine H5Aget_name to get the name of the attribute - herr_t name_size = H5Aget_name( id, buf_size, name_C ); + ssize_t name_size = H5Aget_name( id, buf_size, name_C ); // If H5Aget_name returns a negative value, raise an exception, if( name_size < 0 ) { throw AttributeIException("Attribute::getName", "H5Aget_name failed"); } - // otherwise, create the string to hold the attribute name and return it - string name = string( name_C ); + // otherwise, convert the C string attribute name and return + attr_name = string( name_C ); delete name_C; - return( name ); + return( name_size ); +} + +// Gets the name of this attribute, returning the name, not the length. +string Attribute::getName( size_t buf_size ) const +{ + string attr_name; + ssize_t name_size = getName( buf_size, attr_name ); + return( attr_name ); + // let caller catch exception if any } // This private function calls the C API H5Aclose to close this attribute. diff --git a/c++/src/H5Attribute.h b/c++/src/H5Attribute.h index 9f1435b..7c509d5 100644 --- a/c++/src/H5Attribute.h +++ b/c++/src/H5Attribute.h @@ -18,7 +18,8 @@ class Attribute : public AbstractDs { virtual DataSpace getSpace() const; // Gets the name of this attribute. - string getName( size_t buf_size ) const; + ssize_t getName( size_t buf_size, string& attr_name ) const; + string getName( size_t buf_size ) const; // returns name, not its length // do not inherit iterateAttrs from H5Object int iterateAttrs() { return 0; } |