summaryrefslogtreecommitdiffstats
path: root/c++
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2001-11-14 22:14:05 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2001-11-14 22:14:05 (GMT)
commit5077ac0c90290efc9611fcfca7c689f9b66b6d0d (patch)
tree2c249fb9918464c43166722945d02d7841a0042e /c++
parentc84ad4179d7b7c858d4309f1056fc1f0b497b84c (diff)
downloadhdf5-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++')
-rw-r--r--c++/src/H5Attribute.cpp21
-rw-r--r--c++/src/H5Attribute.h3
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; }