[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:
Binh-Minh Ribler 2002-05-16 17:41:00 -05:00
parent 97a2a55cf4
commit 567c042761
4 changed files with 81 additions and 2 deletions

View File

@ -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",

View File

@ -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;

View File

@ -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

View File

@ -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;