mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
[svn-r5428]
Purpose: New Feature - per library change Description: Added the new member function getMemberIndex to classes EnumType and CompType to match the new C API H5Tget_member_index. Given the name of a member of an enumeration or compound datatype, this new function queries the index of the member. Platforms: SunOS 5.7 (arabica) Linux 6.2 (eirene)
This commit is contained in:
parent
97a2a55cf4
commit
567c042761
@ -68,11 +68,53 @@ string CompType::getMemberName( int member_num ) const
|
||||
return( member_name ); // return the member name string
|
||||
}
|
||||
|
||||
// Retrieves the offset of a member of a compound datatype.
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: getMemberIndex
|
||||
*
|
||||
* Purpose: Returns the index of a member in a compound data type.
|
||||
* Members are stored in no particular order with numbers 0
|
||||
* through N-1, where N is the value returned by the member
|
||||
* function getNmembers.
|
||||
*
|
||||
* Return: Success: index of the member if exists.
|
||||
* Failure: DataTypeIException
|
||||
*
|
||||
* BMR - May 16, 2002
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int CompType::getMemberIndex(const char* name) const
|
||||
{
|
||||
int member_index = H5Tget_member_index(id, name);
|
||||
if( member_index < 0 )
|
||||
{
|
||||
throw DataTypeIException("CompType::getMemberIndex",
|
||||
"H5Tget_member_index returns negative value");
|
||||
}
|
||||
return( member_index );
|
||||
}
|
||||
int CompType::getMemberIndex(const string& name) const
|
||||
{
|
||||
return(getMemberIndex(name.c_str()));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: getMemberOffset
|
||||
*
|
||||
* Purpose: Returns the byte offset of the beginning of a member with
|
||||
* respect to the beginning of the compound data type datum.
|
||||
* Members are stored in no particular order with numbers 0
|
||||
* through N-1, where N is the value returned by the member
|
||||
* function getNmembers.
|
||||
*
|
||||
* Return: Success: Byte offset.
|
||||
* Failure: Quincey: for now, 0 is not a failure
|
||||
*
|
||||
* BMR - 2000
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
size_t CompType::getMemberOffset( int member_num ) const
|
||||
{
|
||||
size_t offset = H5Tget_member_offset( id, member_num );
|
||||
// Q. said: for now, 0 is not a failure
|
||||
//if( offset == 0 )
|
||||
//{
|
||||
//throw DataTypeIException("CompType::getMemberOffset",
|
||||
|
@ -23,6 +23,10 @@ class __DLLCPP__ CompType : public DataType {
|
||||
// Returns the name of a member of this compound datatype.
|
||||
string getMemberName( int member_num ) const;
|
||||
|
||||
// Returns the index of a member in this compound data type.
|
||||
int getMemberIndex(const char* name) const;
|
||||
int getMemberIndex(const string& name) const;
|
||||
|
||||
// Returns the offset of a member of this compound datatype.
|
||||
size_t getMemberOffset( int memb_no ) const;
|
||||
|
||||
|
@ -108,6 +108,35 @@ void EnumType::valueOf( const char* name, void *value ) const
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: getMemberIndex
|
||||
*
|
||||
* Purpose: Returns the index of a member in an enumeration data type.
|
||||
* Members are stored in no particular order with numbers 0
|
||||
* through N-1, where N is the value returned by the member
|
||||
* function getNmembers.
|
||||
*
|
||||
* Return: Success: index of the member if exists.
|
||||
* Failure: DataTypeIException
|
||||
*
|
||||
* BMR - May 16, 2002
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int EnumType::getMemberIndex(const char *name) const
|
||||
{
|
||||
int member_index = H5Tget_member_index(id, name);
|
||||
if( member_index < 0 )
|
||||
{
|
||||
throw DataTypeIException("EnumType::getMemberIndex",
|
||||
"H5Tget_member_index returns negative value");
|
||||
}
|
||||
return( member_index );
|
||||
}
|
||||
int EnumType::getMemberIndex(const string& name) const
|
||||
{
|
||||
return(EnumType::getMemberIndex(name.c_str()));
|
||||
}
|
||||
|
||||
// Retrieves the value of a member in this enumeration datatype, given the
|
||||
// member's index.
|
||||
void EnumType::getMemberValue( int memb_no, void *value ) const
|
||||
|
@ -41,6 +41,10 @@ class __DLLCPP__ EnumType : public DataType {
|
||||
void valueOf( const string& name, void *value ) const;
|
||||
void valueOf( const char* name, void *value ) const;
|
||||
|
||||
// Returns the index of a member in this enumeration data type.
|
||||
int getMemberIndex(const char* name) const;
|
||||
int getMemberIndex(const string& name) const;
|
||||
|
||||
// Returns the value of an enumeration datatype member
|
||||
void getMemberValue( int memb_no, void *value ) const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user