mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-25 17:00:45 +08:00
[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
This commit is contained in:
parent
c84ad4179d
commit
5077ac0c90
@ -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.
|
||||
|
@ -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; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user