summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2002-05-16 22:41:00 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2002-05-16 22:41:00 (GMT)
commit567c04276158059089d64e0e9fd5b9c7e1b8d7ba (patch)
tree2476a14df8ac8ab258d18a4b71caaf4e5d024407
parent97a2a55cf4a27e6fc15a43f3ffaba9f90dc42be4 (diff)
downloadhdf5-567c04276158059089d64e0e9fd5b9c7e1b8d7ba.zip
hdf5-567c04276158059089d64e0e9fd5b9c7e1b8d7ba.tar.gz
hdf5-567c04276158059089d64e0e9fd5b9c7e1b8d7ba.tar.bz2
[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)
-rw-r--r--c++/src/H5CompType.cpp46
-rw-r--r--c++/src/H5CompType.h4
-rw-r--r--c++/src/H5EnumType.cpp29
-rw-r--r--c++/src/H5EnumType.h4
4 files changed, 81 insertions, 2 deletions
diff --git a/c++/src/H5CompType.cpp b/c++/src/H5CompType.cpp
index 6fdba0b..3816751 100644
--- a/c++/src/H5CompType.cpp
+++ b/c++/src/H5CompType.cpp
@@ -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",
diff --git a/c++/src/H5CompType.h b/c++/src/H5CompType.h
index bca5722..42cd913 100644
--- a/c++/src/H5CompType.h
+++ b/c++/src/H5CompType.h
@@ -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;
diff --git a/c++/src/H5EnumType.cpp b/c++/src/H5EnumType.cpp
index 5bf9ece..f10ff18 100644
--- a/c++/src/H5EnumType.cpp
+++ b/c++/src/H5EnumType.cpp
@@ -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
diff --git a/c++/src/H5EnumType.h b/c++/src/H5EnumType.h
index b003e43..db4bbbb 100644
--- a/c++/src/H5EnumType.h
+++ b/c++/src/H5EnumType.h
@@ -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;