[svn-r11206] Purpose: Additional wrapper/Code improvement

Description:
    Added wrapper for H5Iget_type.
    Added try/catch to many APIs that call private functions so that more
        specific information can be provided at failure.
    Added IdComponent::inMemFunc to help providing specific info.
    Added const to parameters of several functions that missed that.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.8 64-bit (sol)
    AIX 5.1 (copper)
    IRIX64 with -n32 (modi4)
    HPUX 11.00 (kelgia)
This commit is contained in:
Binh-Minh Ribler
2005-08-07 22:53:58 -05:00
parent e49bb1feea
commit 07592ad7c3
26 changed files with 606 additions and 182 deletions

View File

@@ -62,15 +62,24 @@ H5T_class_t AbstractDs::getTypeClass() const
// Gets the datatype used by this dataset or attribute.
// p_get_type calls either H5Dget_type or H5Aget_type depending on
// which object invokes getTypeClass
DataType datatype(p_get_type());
hid_t datatype_id;
try {
datatype_id = p_get_type(); // returned value is already validated
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getTypeClass", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getTypeClass", E.getDetailMsg());
}
// Gets the class of the datatype and validate it before returning
H5T_class_t type_class = H5Tget_class( datatype.getId());
H5T_class_t type_class = H5Tget_class(datatype_id);
if( type_class != H5T_NO_CLASS )
return( type_class );
else
{
throw DataTypeIException("AbstractDs::getTypeClass",
throw DataTypeIException(inMemFunc("getTypeClass"),
"H5Tget_class returns H5T_NO_CLASS");
}
}
@@ -85,19 +94,25 @@ H5T_class_t AbstractDs::getTypeClass() const
//--------------------------------------------------------------------------
DataType AbstractDs::getDataType() const
{
// Gets the id of the datatype used by this dataset or attribute.
// p_get_type calls either H5Dget_type or H5Aget_type depending on
// which object invokes getTypeClass
hid_t datatype_id = p_get_type(); // returned value is already validated
// Create and return the DataType object
DataType datatype( datatype_id );
return( datatype );
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getDataType. Then, create and
// return the DataType object
try {
DataType datatype(p_get_type());
return(datatype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getDataType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getDataType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
// Function: AbstractDs::getArrayType
///\brief Returns the compound datatype of this abstract dataset which
///\brief Returns the array datatype of this abstract dataset which
/// can be a dataset or an attribute.
///\return ArrayType instance
///\exception H5::DataTypeIException
@@ -105,8 +120,20 @@ DataType AbstractDs::getDataType() const
//--------------------------------------------------------------------------
ArrayType AbstractDs::getArrayType() const
{
ArrayType arraytype(p_get_type());
return(arraytype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getArrayType. Then, create and
// return the ArrayType object
try {
ArrayType arraytype(p_get_type());
return(arraytype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getArrayType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getArrayType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
@@ -119,8 +146,20 @@ ArrayType AbstractDs::getArrayType() const
//--------------------------------------------------------------------------
CompType AbstractDs::getCompType() const
{
CompType comptype(p_get_type());
return(comptype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getCompType. Then, create and
// return the CompType object
try {
CompType comptype(p_get_type());
return(comptype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getCompType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getCompType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
@@ -133,8 +172,20 @@ CompType AbstractDs::getCompType() const
//--------------------------------------------------------------------------
EnumType AbstractDs::getEnumType() const
{
EnumType enumtype(p_get_type());
return(enumtype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getEnumType. Then, create and
// return the EnumType object
try {
EnumType enumtype(p_get_type());
return(enumtype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getEnumType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getEnumType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
@@ -147,8 +198,20 @@ EnumType AbstractDs::getEnumType() const
//--------------------------------------------------------------------------
IntType AbstractDs::getIntType() const
{
IntType inttype(p_get_type());
return(inttype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getIntType. Then, create and
// return the IntType object
try {
IntType inttype(p_get_type());
return(inttype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getIntType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getIntType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
@@ -161,8 +224,20 @@ IntType AbstractDs::getIntType() const
//--------------------------------------------------------------------------
FloatType AbstractDs::getFloatType() const
{
FloatType floatype(p_get_type());
return(floatype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getFloatType. Then, create and
// return the FloatType object
try {
FloatType floatype(p_get_type());
return(floatype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getFloatType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getFloatType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
@@ -175,8 +250,20 @@ FloatType AbstractDs::getFloatType() const
//--------------------------------------------------------------------------
StrType AbstractDs::getStrType() const
{
StrType strtype(p_get_type());
return(strtype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getStrType. Then, create and
// return the StrType object
try {
StrType strtype(p_get_type());
return(strtype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getStrType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getStrType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------
@@ -189,8 +276,20 @@ StrType AbstractDs::getStrType() const
//--------------------------------------------------------------------------
VarLenType AbstractDs::getVarLenType() const
{
VarLenType varlentype(p_get_type());
return(varlentype);
// Gets the id of the datatype used by this dataset or attribute using
// p_get_type. p_get_type calls either H5Dget_type or H5Aget_type
// depending on which object invokes getVarLenType. Then, create and
// return the VarLenType object
try {
VarLenType varlentype(p_get_type());
return(varlentype);
}
catch (DataSetIException E) {
throw DataTypeIException("DataSet::getVarLenType", E.getDetailMsg());
}
catch (AttributeIException E) {
throw DataTypeIException("Attribute::getVarLenType", E.getDetailMsg());
}
}
//--------------------------------------------------------------------------