mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-25 17:00:45 +08:00
[svn-r3602]
Purpose: Usability enhancement Description: - Added more information about the failure to all the throw's, i.e, member function name and more detail about the failure, where appropriate. Also, added exception throws for private functions, such as p_close to provide more specific details. - Added two api functions: Exception::getFuncName() and Exception::getCFuncName() to provide the name of the member function where failure occurs. - Fixed some typos, one of which caused segn. fault in some situations (resetIdComponent was accidentally called twice in a couple of places :) Platforms: arabica (sparc-sun-solaris 2.7)
This commit is contained in:
parent
cd29e12e02
commit
9cd9f7f521
@ -37,7 +37,8 @@ H5T_class_t AbstractDs::getTypeClass() const
|
||||
return( type_class );
|
||||
else
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AbstractDs::getTypeClass",
|
||||
"H5Tget_class returns something different than H5T_NO_CLASS");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ void AtomType::setSize( size_t size ) const
|
||||
herr_t ret_value = H5Tset_size( id, size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::setSize", "H5Tset_size failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,7 +42,8 @@ H5T_order_t AtomType::getOrder( string& order_string ) const
|
||||
// return a byte order constant if successful
|
||||
if( type_order == H5T_ORDER_ERROR )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::getOrder",
|
||||
"H5Tget_order returns H5T_ORDER_ERROR");
|
||||
}
|
||||
if( type_order == H5T_ORDER_LE )
|
||||
order_string = "Little endian byte ordering (0)";
|
||||
@ -60,7 +61,7 @@ void AtomType::setOrder( H5T_order_t order ) const
|
||||
herr_t ret_value = H5Tset_order( id, order );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::setOrder", "H5Tset_order failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +73,8 @@ size_t AtomType::getPrecision() const
|
||||
// returns number of significant bits if successful
|
||||
if( num_signi_bits == 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::getPrecision",
|
||||
"H5Tget_precision returns invalid number of significant bits");
|
||||
}
|
||||
return( num_signi_bits );
|
||||
}
|
||||
@ -84,7 +86,7 @@ void AtomType::setPrecision( size_t precision ) const
|
||||
herr_t ret_value = H5Tset_precision( id, precision );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::setPrecision", "H5Tset_precision failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,7 +101,8 @@ int AtomType::getOffset() const
|
||||
// returns a non-negative offset value if successful
|
||||
if( offset == -1 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::getOffset",
|
||||
"H5Tget_offset returns a negative offset value");
|
||||
}
|
||||
return( offset );
|
||||
}
|
||||
@ -111,7 +114,7 @@ void AtomType::setOffset( size_t offset ) const
|
||||
herr_t ret_value = H5Tset_offset( id, offset );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("AtomType::setOffset", "H5Tset_offset failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -123,7 +126,7 @@ void AtomType::setOffset( size_t offset ) const
|
||||
//herr_t ret_value = H5Tget_pad( id, &lsb, &msb );
|
||||
//if( ret_value < 0 )
|
||||
//{
|
||||
//throw DataTypeIException();
|
||||
//throw DataTypeIException("AtomType::getPad", "H5Tget_pad failed");
|
||||
//}
|
||||
//}
|
||||
|
||||
@ -134,7 +137,7 @@ void AtomType::setOffset( size_t offset ) const
|
||||
//herr_t ret_value = H5Tset_pad( id, lsb, msb );
|
||||
//if( ret_value < 0 )
|
||||
//{
|
||||
//throw DataTypeIException();
|
||||
//throw DataTypeIException("AtomType::setPad", "H5Tset_pad failed");
|
||||
//}
|
||||
//}
|
||||
|
||||
|
@ -29,7 +29,7 @@ void Attribute::write( const DataType& mem_type, void *buf ) const
|
||||
herr_t ret_value = H5Awrite( id, mem_type.getId(), buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("Attribute::write", "H5Awrite failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ void Attribute::read( const DataType& mem_type, void *buf ) const
|
||||
herr_t ret_value = H5Aread( id, mem_type.getId(), buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("Attribute::read", "H5Aread failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ DataSpace Attribute::getSpace() const
|
||||
}
|
||||
else
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("Attribute::getSpace", "H5Aget_space failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ hid_t Attribute::p_getType() const
|
||||
return( type_id );
|
||||
else
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException(NULL, "H5Aget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ string Attribute::getName( size_t buf_size ) const
|
||||
// If H5Aget_name returns a negative value, raise an exception,
|
||||
if( name_size < 0 )
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("Attribute::getName", "H5Aget_name failed");
|
||||
}
|
||||
// otherwise, create the string to hold the attribute name and return it
|
||||
string name = string( name_C );
|
||||
@ -102,7 +102,7 @@ void Attribute::p_close() const
|
||||
herr_t ret_value = H5Aclose( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException(NULL, "H5Aclose failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,7 +114,11 @@ void Attribute::p_close() const
|
||||
Attribute::~Attribute()
|
||||
{
|
||||
// The attribute id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw AttributeIException("Attribute::~Attribute", close_error.getDetailMsg());
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -55,8 +55,7 @@ Group CommonFG::createGroup( const char* name, size_t size_hint ) const
|
||||
}
|
||||
else
|
||||
{
|
||||
//throw File_GroupException();
|
||||
throwException();
|
||||
throwException("createGroup", "H5Gcreate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,7 +78,7 @@ Group CommonFG::openGroup( const char* name ) const
|
||||
}
|
||||
else
|
||||
{
|
||||
throwException();
|
||||
throwException("openGroup", "H5Gopen failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,7 +105,7 @@ DataSet CommonFG::createDataSet( const char* name, const DataType& data_type, co
|
||||
}
|
||||
else
|
||||
{
|
||||
throwException();
|
||||
throwException("createDataSet", "H5Dcreate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,7 +128,7 @@ DataSet CommonFG::openDataSet( const char* name ) const
|
||||
}
|
||||
else
|
||||
{
|
||||
throwException();
|
||||
throwException("openDataSet", "H5Dopen failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -144,7 +143,7 @@ void CommonFG::link( H5G_link_t link_type, const char* curr_name, const char* ne
|
||||
herr_t ret_value = H5Glink( getLocId(), link_type, curr_name, new_name );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("link", "H5Glink failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,7 +157,7 @@ void CommonFG::unlink( const char* name ) const
|
||||
herr_t ret_value = H5Gunlink( getLocId(), name );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("unlink", "H5Gunlink failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -172,7 +171,7 @@ void CommonFG::move( const char* src, const char* dst ) const
|
||||
herr_t ret_value = H5Gmove( getLocId(), src, dst );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("move", "H5Gmove failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,7 +185,7 @@ void CommonFG::getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& st
|
||||
herr_t ret_value = H5Gget_objinfo( getLocId(), name, follow_link, &statbuf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("getObjinfo", "H5Gget_objinfo failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,7 +201,7 @@ string CommonFG::getLinkval( const char* name, size_t size ) const
|
||||
herr_t ret_value = H5Gget_linkval( getLocId(), name, size, value_C );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("getLinkval", "H5Gget_linkval failed");
|
||||
}
|
||||
string value = string( value_C );
|
||||
delete value_C;
|
||||
@ -219,7 +218,7 @@ void CommonFG::setComment( const char* name, const char* comment ) const
|
||||
herr_t ret_value = H5Gset_comment( getLocId(), name, comment );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("setComment", "H5Gset_comment failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -238,7 +237,7 @@ string CommonFG::getComment( const char* name, size_t bufsize ) const
|
||||
// if H5Gget_comment returns SUCCEED, return the string comment
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("getComment", "H5Gget_comment failed");
|
||||
}
|
||||
string comment = string( comment_C );
|
||||
delete comment_C;
|
||||
@ -262,7 +261,7 @@ void CommonFG::mount( const char* name, H5File& child, PropList& plist ) const
|
||||
// Raise exception if H5Fmount returns negative value
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("mount", "H5Fmount failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -279,7 +278,7 @@ void CommonFG::unmount( const char* name ) const
|
||||
// Raise exception if H5Funmount returns negative value
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throwException();
|
||||
throwException("unmount", "H5Funmount failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -289,7 +288,7 @@ void CommonFG::unmount( const char* name ) const
|
||||
hid_t CommonFG::p_openDataType( const char* name ) const
|
||||
{
|
||||
// Call C function H5Topen to open the named datatype in this group,
|
||||
// giving the group id
|
||||
// giving either the file or group id
|
||||
hid_t datatype_id = H5Topen( getLocId(), name );
|
||||
|
||||
// If the datatype id is valid, return it, otherwise, throw an exception.
|
||||
@ -297,7 +296,7 @@ hid_t CommonFG::p_openDataType( const char* name ) const
|
||||
return( datatype_id );
|
||||
else
|
||||
{
|
||||
throwException();
|
||||
throwException("openDataType", "H5Topen failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -382,9 +381,9 @@ int CommonFG::iterateElems( const char* name, int *idx, H5G_iterate_t op , void*
|
||||
int ret_value = H5Giterate( getLocId(), name, idx, op, op_data );
|
||||
if( ret_value >= 0 )
|
||||
return( ret_value );
|
||||
else // raise exception when H5Aiterate returns a negative value
|
||||
else // raise exception when H5Giterate returns a negative value
|
||||
{
|
||||
throwException();
|
||||
throwException("iterateElems", "H5Giterate failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ class CommonFG {
|
||||
StrType openStrType( const char* name ) const;
|
||||
|
||||
// for H5File and Group to throw appropriate exception
|
||||
virtual void throwException() const = 0;
|
||||
virtual void throwException(const string& func_name, const string& msg) const = 0;
|
||||
|
||||
CommonFG();
|
||||
virtual ~CommonFG();
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "H5DxferProp.h"
|
||||
#include "H5DataSpace.h"
|
||||
#include "H5DataSet.h"
|
||||
#include "H5private.h"
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
namespace H5 {
|
||||
@ -37,7 +38,7 @@ CompType::CompType( const DataSet& dataset ) : DataType()
|
||||
// If the datatype id is invalid, throw exception
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("CompType constructor", "H5Dget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,7 +48,8 @@ int CompType::getNmembers() const
|
||||
int num_members = H5Tget_nmembers( id );
|
||||
if( num_members < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("CompType::getNmembers",
|
||||
"H5Tget_nmembers returns negative number of members");
|
||||
}
|
||||
return( num_members );
|
||||
}
|
||||
@ -55,13 +57,15 @@ int CompType::getNmembers() const
|
||||
// Retrieves the name of a member of this compound datatype.
|
||||
string CompType::getMemberName( int member_num ) const
|
||||
{
|
||||
char* member_name_C = H5Tget_member_name( id, member_num );
|
||||
if( member_name_C == NULL ) // should this be returned also???
|
||||
{
|
||||
throw DataTypeIException();
|
||||
}
|
||||
string member_name = string( member_name_C );
|
||||
return( member_name );
|
||||
char* member_name_C = H5Tget_member_name( id, member_num );
|
||||
if( member_name_C == NULL ) // NULL means failure
|
||||
{
|
||||
throw DataTypeIException("CompType::getMemberName",
|
||||
"H5Tget_member_name returns NULL for member name");
|
||||
}
|
||||
string member_name = string(member_name_C); // convert C string to string
|
||||
HDfree(member_name_C); // free the C string
|
||||
return( member_name ); // return the member name string
|
||||
}
|
||||
|
||||
// Retrieves the offset of a member of a compound datatype.
|
||||
@ -71,7 +75,8 @@ size_t CompType::getMemberOffset( int member_num ) const
|
||||
// Q. said: for now, 0 is not a failure
|
||||
//if( offset == 0 )
|
||||
//{
|
||||
//throw DataTypeIException();
|
||||
//throw DataTypeIException("CompType::getMemberOffset",
|
||||
//"H5Tget_member_offset failed");
|
||||
//}
|
||||
return( offset );
|
||||
}
|
||||
@ -80,7 +85,8 @@ size_t CompType::getMemberOffset( int member_num ) const
|
||||
int CompType::getMemberDims( int member_num, size_t* dims, int* perm ) const
|
||||
{
|
||||
throw DataTypeIException( "Error: getMemberDims is no longer supported." );
|
||||
return (-1);
|
||||
return (-1); // unreachable statement; but without it, the compiler
|
||||
// will complain
|
||||
}
|
||||
|
||||
// Gets the type class of the specified member.
|
||||
@ -90,29 +96,35 @@ H5T_class_t CompType::getMemberClass( int member_num ) const
|
||||
hid_t member_type_id = H5Tget_member_type( id, member_num );
|
||||
if( member_type_id <= 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("CompType::getMemberClass",
|
||||
"H5Tget_member_type failed");
|
||||
}
|
||||
|
||||
// then get its class
|
||||
H5T_class_t member_class = H5Tget_class( member_type_id );
|
||||
if( member_class == H5T_NO_CLASS )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("CompType::getMemberClass",
|
||||
"H5Tget_class returns H5T_NO_CLASS");
|
||||
}
|
||||
return( member_class );
|
||||
}
|
||||
|
||||
// This private member function calls the C API to get the identifier
|
||||
// of the specified member. It is used by the getMemberXxxType
|
||||
// below for the sub-types.
|
||||
// of the specified member. It provides the id to construct appropriate
|
||||
// sub-types in the functions getMemberXxxType below, where Xxx indicates
|
||||
// the sub-types.
|
||||
hid_t CompType::p_getMemberType( int member_num ) const
|
||||
{
|
||||
// get the id of the specified member first
|
||||
hid_t member_type_id = H5Tget_member_type( id, member_num );
|
||||
if( member_type_id > 0 )
|
||||
return( member_type_id );
|
||||
else
|
||||
{
|
||||
throw DataTypeIException();
|
||||
// p_getMemberType is private, use caller's function name for api
|
||||
throw DataTypeIException("CompType::getMemberDataType",
|
||||
"H5Tget_member_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,6 +167,7 @@ StrType CompType::getMemberStrType( int member_num ) const
|
||||
|
||||
/* old style of getMemberType - using overloads; new style above
|
||||
returns the appropriate datatypes but has different named functions.
|
||||
In the old style, a datatype must be passed into the function.
|
||||
// Returns the datatype of the specified member in this compound datatype.
|
||||
// Several overloading of getMemberType are for different datatypes
|
||||
void CompType::getMemberType( int member_num, EnumType& enumtype ) const
|
||||
@ -197,7 +210,7 @@ void CompType::insertMember( const string name, size_t offset, const DataType& n
|
||||
herr_t ret_value = H5Tinsert( id, name_C, offset, new_member_id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("CompType::insertMember", "H5Tinsert failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -208,7 +221,7 @@ void CompType::pack() const
|
||||
herr_t ret_value = H5Tpack( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("CompType::pack", "H5Tpack failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ DataSpace DataSet::getSpace() const
|
||||
// If the dataspace id is invalid, throw an exception
|
||||
if( dataspace_id <= 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::getSpace", "H5Dget_space failed");
|
||||
}
|
||||
//create dataspace object using the existing id then return the object
|
||||
DataSpace data_space( dataspace_id );
|
||||
@ -55,7 +55,7 @@ hid_t DataSet::p_getType() const
|
||||
return( type_id );
|
||||
else
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException(NULL, "H5Dget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ DSetCreatPropList DataSet::getCreatePlist() const
|
||||
hid_t create_plist_id = H5Dget_create_plist( id );
|
||||
if( create_plist_id <= 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::getCreatePlist", "H5Dget_create_plist failed");
|
||||
}
|
||||
// create and return the DSetCreatPropList object
|
||||
DSetCreatPropList create_plist( create_plist_id );
|
||||
@ -77,47 +77,46 @@ hsize_t DataSet::getStorageSize() const
|
||||
{
|
||||
hsize_t storage_size = H5Dget_storage_size( id );
|
||||
|
||||
if( storage_size > 0 )
|
||||
if( storage_size > 0 ) // checking with Quincey for failure value - BMR
|
||||
return( storage_size );
|
||||
else
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::getStorageSize", "H5Dget_storage_size failed");
|
||||
}
|
||||
}
|
||||
|
||||
// Returns the number of bytes required to store VL data.
|
||||
hsize_t DataSet::getVlenBufSize( DataType& type, DataSpace& space ) const
|
||||
{
|
||||
//herr_t ret_value;
|
||||
// Obtain identifiers for C API
|
||||
//hid_t type_id = type.getId();
|
||||
//hid_t space_id = space.getId();
|
||||
//hsize_t size;
|
||||
|
||||
throw DataSetIException( "getVlenBufSize: Currently not implemented yet.");
|
||||
//ret_value = H5Dget_vlen_buf_size( id, type_id, space_id, &size );
|
||||
//herr_t ret_value = H5Dget_vlen_buf_size( id, type_id, space_id, &size );
|
||||
//if( ret_value >= 0 )
|
||||
// return( size );
|
||||
//else
|
||||
//{
|
||||
//throw DataSetIException();
|
||||
//}
|
||||
throw DataSetIException( "DataSet::getVlenBufSize",
|
||||
"Currently not implemented yet.");
|
||||
return (0);
|
||||
}
|
||||
|
||||
// Reclaims VL datatype memory buffers.
|
||||
void DataSet::vlenReclaim( DataType& type, DataSpace& space, DSetMemXferPropList& xfer_plist, void* buf ) const
|
||||
{
|
||||
herr_t ret_value;
|
||||
// Obtain identifiers for C API
|
||||
hid_t type_id = type.getId();
|
||||
hid_t space_id = space.getId();
|
||||
hid_t xfer_plist_id = xfer_plist.getId();
|
||||
|
||||
ret_value = H5Dvlen_reclaim( type_id, space_id, xfer_plist_id, buf );
|
||||
herr_t ret_value = H5Dvlen_reclaim( type_id, space_id, xfer_plist_id, buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::vlenReclaim", "H5Dvlen_reclaim failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -134,7 +133,7 @@ void DataSet::read( void* buf, const DataType& mem_type, const DataSpace& mem_sp
|
||||
herr_t ret_value = H5Dread( id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::read", "H5Dread failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -152,7 +151,7 @@ void DataSet::write( const void* buf, const DataType& mem_type, const DataSpace&
|
||||
herr_t ret_value = H5Dwrite( id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::write", "H5Dwrite failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,7 +166,7 @@ int DataSet::iterateElems( void* buf, const DataType& type, const DataSpace& spa
|
||||
return( ret_value );
|
||||
else // raise exception when H5Diterate returns a negative value
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::iterateElems", "H5Diterate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,7 +176,7 @@ void DataSet::extend( const hsize_t* size ) const
|
||||
herr_t ret_value = H5Dextend( id, size );
|
||||
if( ret_value < 0 ) // raise exception when H5Dextend returns a neg value
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("DataSet::extend", "H5Dextend failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,7 +187,7 @@ void DataSet::p_close() const
|
||||
herr_t ret_value = H5Dclose( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException(NULL, "H5Dclose failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,7 +199,11 @@ void DataSet::p_close() const
|
||||
DataSet::~DataSet()
|
||||
{
|
||||
// The dataset id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw DataSetIException("DataSet::~DataSet", close_error.getDetailMsg());
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -22,7 +22,7 @@ DataSpace::DataSpace( H5S_class_t type ) : IdComponent()
|
||||
id = H5Screate( type );
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace constructor", "H5Screate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ DataSpace::DataSpace( int rank, const hsize_t * dims, const hsize_t * maxdims) :
|
||||
id = H5Screate_simple( rank, dims, maxdims );
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace constructor", "H5Screate_simple failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,17 +50,21 @@ void DataSpace::copy( const DataSpace& like_space )
|
||||
{
|
||||
// reset the identifier of this instance - send 'this' in so that
|
||||
// H5Sclose can be called appropriately
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw DataSpaceIException("DataSpace::copy", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
// call C routine to copy the dataspace
|
||||
id = H5Scopy( like_space.getId() );
|
||||
|
||||
// points to the same ref counter
|
||||
// new ref counter for this id
|
||||
ref_count = new RefCounter;
|
||||
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::copy", "H5Scopy failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,7 +78,8 @@ bool DataSpace::isSimple () const
|
||||
return false;
|
||||
else
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::isSimple",
|
||||
"H5Sis_simple returns negative value");
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,7 +89,7 @@ void DataSpace::offsetSimple ( const hssize_t* offset ) const
|
||||
herr_t ret_value = H5Soffset_simple( id, offset );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::offsetSimple", "H5Soffset_simple failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,7 +99,8 @@ int DataSpace::getSimpleExtentDims ( hsize_t *dims, hsize_t *maxdims ) const
|
||||
int ndims = H5Sget_simple_extent_dims( id, dims, maxdims );
|
||||
if( ndims < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSimpleExtentDims",
|
||||
"H5Sget_simple_extent_dims returns negative number of dimensions");
|
||||
}
|
||||
return( ndims );
|
||||
}
|
||||
@ -105,7 +111,8 @@ int DataSpace::getSimpleExtentNdims () const
|
||||
int ndims = H5Sget_simple_extent_ndims( id );
|
||||
if( ndims < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSimpleExtentNdims",
|
||||
"H5Sget_simple_extent_ndims returns negative value for dimensionality of the dataspace");
|
||||
}
|
||||
return( ndims );
|
||||
}
|
||||
@ -122,7 +129,8 @@ hssize_t DataSpace::getSimpleExtentNpoints () const
|
||||
return( num_elements );
|
||||
else
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSimpleExtentNpoints",
|
||||
"H5Sget_simple_extent_npoints returns negative value for the number of elements in the dataspace");
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,7 +140,8 @@ H5S_class_t DataSpace::getSimpleExtentType () const
|
||||
H5S_class_t class_name = H5Sget_simple_extent_type( id );
|
||||
if( class_name == H5S_NO_CLASS )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSimpleExtentType",
|
||||
"H5Sget_simple_extent_type returns H5S_NO_CLASS");
|
||||
}
|
||||
return( class_name );
|
||||
}
|
||||
@ -144,7 +153,7 @@ void DataSpace::extentCopy ( DataSpace& dest_space ) const
|
||||
herr_t ret_value = H5Sextent_copy( dest_space_id, id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::extentCopy", "H5Sextent_copy failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,7 +164,7 @@ void DataSpace::setExtentSimple( int rank, const hsize_t *current_size, const hs
|
||||
ret_value = H5Sset_extent_simple( id, rank, current_size, maximum_size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::setExtentSimple", "H5Sset_extent_simple failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,7 +174,7 @@ void DataSpace::setExtentNone () const
|
||||
herr_t ret_value = H5Sset_extent_none( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::setExtentNone", "H5Sset_extent_none failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,7 +184,8 @@ hssize_t DataSpace::getSelectNpoints () const
|
||||
hssize_t num_elements = H5Sget_select_npoints( id );
|
||||
if( num_elements < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSelectNpoints",
|
||||
"H5Sget_select_npoints returns negative value for number of elements in the dataspace selection");
|
||||
}
|
||||
return( num_elements );
|
||||
}
|
||||
@ -186,7 +196,8 @@ hssize_t DataSpace::getSelectHyperNblocks () const
|
||||
hssize_t num_blocks = H5Sget_select_hyper_nblocks( id );
|
||||
if( num_blocks < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSelectHyperNblocks",
|
||||
"H5Sget_select_hyper_nblocks returns negative value for the number of hyperslab blocks");
|
||||
}
|
||||
return( num_blocks );
|
||||
}
|
||||
@ -198,7 +209,8 @@ void DataSpace::getSelectHyperBlocklist( hsize_t startblock, hsize_t numblocks,
|
||||
ret_value = H5Sget_select_hyper_blocklist( id, startblock, numblocks, buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSelectHyperBlocklist",
|
||||
"H5Sget_select_hyper_blocklist failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -208,7 +220,8 @@ hssize_t DataSpace::getSelectElemNpoints () const
|
||||
hssize_t num_points = H5Sget_select_elem_npoints( id );
|
||||
if( num_points < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSelectElemNpoints",
|
||||
"H5Sget_select_elem_npoints failed");
|
||||
}
|
||||
return( num_points );
|
||||
}
|
||||
@ -220,7 +233,8 @@ void DataSpace::getSelectElemPointlist ( hsize_t startpoint, hsize_t numpoints,
|
||||
ret_value = H5Sget_select_elem_pointlist( id, startpoint, numpoints, buf );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSelectElemPointlist",
|
||||
"H5Sget_select_elem_pointlist failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,7 +244,8 @@ void DataSpace::getSelectBounds ( hsize_t* start, hsize_t* end ) const
|
||||
herr_t ret_value = H5Sget_select_bounds( id, start, end );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::getSelectBounds",
|
||||
"H5Sget_select_bounds failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -241,7 +256,8 @@ void DataSpace::selectElements ( H5S_seloper_t op, const size_t num_elements, co
|
||||
ret_value = H5Sselect_elements( id, op, num_elements, coord );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::selectElements",
|
||||
"H5Sselect_elements failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -251,7 +267,7 @@ void DataSpace::selectAll () const
|
||||
herr_t ret_value = H5Sselect_all( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::selectAll", "H5Sselect_all failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -261,7 +277,8 @@ void DataSpace::selectNone () const
|
||||
herr_t ret_value = H5Sselect_none( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::selectNone",
|
||||
"H5Sselect_none failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -275,7 +292,8 @@ bool DataSpace::selectValid () const
|
||||
return false;
|
||||
else
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::selectValid",
|
||||
"H5Sselect_valid returns negative value");
|
||||
}
|
||||
}
|
||||
|
||||
@ -286,7 +304,8 @@ void DataSpace::selectHyperslab( H5S_seloper_t op, const hsize_t *count, const h
|
||||
ret_value = H5Sselect_hyperslab( id, op, start, stride, count, block );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException("DataSpace::selectHyperslab",
|
||||
"H5Sselect_hyperslab failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -299,7 +318,7 @@ void DataSpace::p_close() const
|
||||
herr_t ret_value = H5Sclose( space_id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataSpaceIException();
|
||||
throw DataSpaceIException(NULL, "H5Sclose failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -312,7 +331,11 @@ void DataSpace::p_close() const
|
||||
DataSpace::~DataSpace()
|
||||
{
|
||||
// The dataspace id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw DataSpaceIException("DataSpace::~DataSpace", close_error.getDetailMsg());
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "H5DataType.h"
|
||||
#include "H5AtomType.h"
|
||||
#include "H5PredType.h"
|
||||
#include "H5private.h"
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
namespace H5 {
|
||||
@ -29,7 +30,7 @@ DataType::DataType( const H5T_class_t type_class, size_t size ) : H5Object(), is
|
||||
id = H5Tcreate( type_class, size );
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType constructor", "H5Tcreate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,28 +50,25 @@ void DataType::copy( const DataType& like_type )
|
||||
{
|
||||
// reset the identifier of this instance, H5Tclose will be called
|
||||
// if needed
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw DataTypeIException("DataType::copy", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
// call C routine to copy the datatype
|
||||
id = H5Tcopy( like_type.getId() );
|
||||
|
||||
// new reference counter for this id
|
||||
ref_count = new RefCounter;
|
||||
|
||||
/*
|
||||
id != like_type.id so this object has a different ref_count than
|
||||
like_type
|
||||
ref_count = like_type.ref_count;
|
||||
|
||||
// increment ref counter to indicate additional references to this id
|
||||
ref_count->increment();
|
||||
*/
|
||||
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::copy", "H5Tcopy failed");
|
||||
}
|
||||
}
|
||||
|
||||
// Determines whether two datatypes are the same. ???
|
||||
// Determines whether two datatypes refer to the same actual datatype.
|
||||
bool DataType::operator==(const DataType& compared_type ) const
|
||||
{
|
||||
// Call C routine H5Tequal to determines whether two datatype
|
||||
@ -82,18 +80,20 @@ bool DataType::operator==(const DataType& compared_type ) const
|
||||
return false;
|
||||
else
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::operator==",
|
||||
"H5Tequal returns negative value");
|
||||
}
|
||||
}
|
||||
|
||||
// Operates a user's function on each attribute of an object - commented
|
||||
// out because it should use the one from H5Object; need to check
|
||||
// the parameter list???
|
||||
// the parameter list??? - work in progress
|
||||
//int DataType::iterate( unsigned * idx, H5A_operator_t op, void *op_data )
|
||||
//{
|
||||
//}
|
||||
|
||||
// Creates a new variable-length datatype - Note: make it inheritance???
|
||||
// work in progress
|
||||
//DataType DataType::vlenCreate( const DataType& base_type )
|
||||
//{
|
||||
//}
|
||||
@ -111,7 +111,7 @@ void DataType::commit( H5Object& loc, const char* name ) const
|
||||
herr_t ret_value = H5Tcommit( loc_id, name, id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::commit", "H5Tcommit failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ bool DataType::committed() const
|
||||
return false;
|
||||
else
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::committed", "H5Tcommitted return negative value");
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,7 +137,7 @@ H5T_conv_t DataType::find( const DataType& dest, H5T_cdata_t **pcdata ) const
|
||||
H5T_conv_t func = H5Tfind( id, dest.getId(), pcdata );
|
||||
if( func == NULL )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::find", "H5Tfind returns a NULL function");
|
||||
}
|
||||
return( func );
|
||||
}
|
||||
@ -154,7 +154,7 @@ void DataType::convert( const DataType& dest, size_t nelmts, void *buf, void *ba
|
||||
ret_value = H5Tconvert( id, dest_id, nelmts, buf, background, plist_id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::convert", "H5Tconvert failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ void DataType::setOverflow( H5T_overflow_t func ) const
|
||||
herr_t ret_value = H5Tset_overflow( func );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::setOverflow", "H5Tset_overflow failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -183,7 +183,7 @@ void DataType::lock() const
|
||||
herr_t ret_value = H5Tlock( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::lock", "H5Tlock failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -195,7 +195,8 @@ H5T_class_t DataType::getClass() const
|
||||
// Return datatype class identifier if successful
|
||||
if( type_class == H5T_NO_CLASS )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::getClass",
|
||||
"H5Tget_class returns H5T_NO_CLASS");
|
||||
}
|
||||
return( type_class );
|
||||
}
|
||||
@ -205,9 +206,10 @@ size_t DataType::getSize() const
|
||||
{
|
||||
// Call C routine to get the datatype size
|
||||
size_t type_size = H5Tget_size( id );
|
||||
if( type_size <= 0 ) // Is 0 valid value ???
|
||||
if( type_size <= 0 ) // valid data types are never zero size
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::getSize",
|
||||
"H5Tget_size returns invalid datatype size");
|
||||
}
|
||||
return( type_size );
|
||||
}
|
||||
@ -229,7 +231,7 @@ DataType DataType::getSuper() const
|
||||
}
|
||||
else
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::getSuper", "H5Tget_super failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -246,7 +248,7 @@ void DataType::registerFunc( H5T_pers_t pers, const char* name, const DataType&
|
||||
herr_t ret_value = H5Tregister( pers, name, id, dest_id, func );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::registerFunc", "H5Tregister failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -263,7 +265,7 @@ void DataType::unregister( H5T_pers_t pers, const char* name, const DataType& de
|
||||
herr_t ret_value = H5Tunregister( pers, name, id, dest_id, func );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::unregister", "H5Tunregister failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -278,7 +280,7 @@ void DataType::setTag( const char* tag ) const
|
||||
herr_t ret_value = H5Tset_tag( id, tag );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::setTag", "H5Tset_tag failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,12 +293,14 @@ string DataType::getTag() const
|
||||
// and return it, otherwise, raise an exception
|
||||
if( tag_Cstr != NULL )
|
||||
{
|
||||
string tag = string( tag_Cstr );
|
||||
return( tag );
|
||||
string tag = string(tag_Cstr); // convert C string to string object
|
||||
HDfree(tag_Cstr); // free the C string
|
||||
return (tag); // return the tag
|
||||
}
|
||||
else
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("DataType::getTag",
|
||||
"H5Tget_tag returns NULL for tag");
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,7 +314,7 @@ void DataType::p_close() const
|
||||
herr_t ret_value = H5Tclose( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException(NULL, "H5Tclose failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -323,7 +327,11 @@ void DataType::p_close() const
|
||||
DataType::~DataType()
|
||||
{
|
||||
// The datatype id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw DataTypeIException("DataType::~DataType", close_error.getDetailMsg());
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -24,7 +24,7 @@ void DSetCreatPropList::setChunk( int ndims, const hsize_t* dim ) const
|
||||
herr_t ret_value = H5Pset_chunk( id, ndims, dim );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::setChunk", "H5Pset_chunk failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,7 +35,8 @@ H5D_layout_t DSetCreatPropList::getLayout() const
|
||||
H5D_layout_t layout = H5Pget_layout( id );
|
||||
if( layout == H5D_LAYOUT_ERROR )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getLayout",
|
||||
"H5Pget_layout returns H5D_LAYOUT_ERROR");
|
||||
}
|
||||
return( layout );
|
||||
}
|
||||
@ -46,7 +47,8 @@ int DSetCreatPropList::getChunk( int max_ndims, hsize_t* dim ) const
|
||||
int chunk_size = H5Pget_chunk( id, max_ndims, dim );
|
||||
if( chunk_size < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getChunk",
|
||||
"H5Pget_chunk returns negative chunk size");
|
||||
}
|
||||
return( chunk_size );
|
||||
}
|
||||
@ -57,7 +59,8 @@ void DSetCreatPropList::setLayout(hid_t plist, H5D_layout_t layout ) const
|
||||
herr_t ret_value = H5Pset_layout( id, layout );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::setLayout",
|
||||
"H5Pset_layout failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +70,8 @@ void DSetCreatPropList::setDeflate( int level ) const
|
||||
herr_t ret_value = H5Pset_deflate( id, level );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::setDeflate",
|
||||
"H5Pset_deflate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +81,8 @@ void DSetCreatPropList::setFillValue( DataType& fvalue_type, const void* value )
|
||||
herr_t ret_value = H5Pset_fill_value( id, fvalue_type.getId(), value );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::setFillValue",
|
||||
"H5Pset_fill_value failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,7 +92,8 @@ void DSetCreatPropList::getFillValue( DataType& fvalue_type, void* value ) const
|
||||
herr_t ret_value = H5Pget_fill_value( id, fvalue_type.getId(), value );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getFillValue",
|
||||
"H5Pget_fill_value failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,7 +103,8 @@ void DSetCreatPropList::setFilter( H5Z_filter_t filter, unsigned int flags, size
|
||||
herr_t ret_value = H5Pset_filter( id, filter, flags, cd_nelmts, cd_values );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::setFilter",
|
||||
"H5Pset_filter failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -107,7 +114,8 @@ int DSetCreatPropList::getNfilters() const
|
||||
int num_filters = H5Pget_nfilters( id );
|
||||
if( num_filters < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getNfilters",
|
||||
"H5Pget_nfilters returned negative number of filters");
|
||||
}
|
||||
else
|
||||
return( num_filters );
|
||||
@ -117,10 +125,12 @@ int DSetCreatPropList::getNfilters() const
|
||||
H5Z_filter_t DSetCreatPropList::getFilter( int filter_number, unsigned int& flags, size_t& cd_nelmts, unsigned int* cd_values, size_t namelen, char name[] ) const
|
||||
{
|
||||
H5Z_filter_t filter;
|
||||
filter = H5Pget_filter( id, filter_number, &flags, &cd_nelmts, cd_values, namelen, name );
|
||||
filter = H5Pget_filter( id, filter_number, &flags, &cd_nelmts,
|
||||
cd_values, namelen, name );
|
||||
if( filter == H5Z_FILTER_ERROR )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getFilter",
|
||||
"H5Pget_filter returned H5Z_FILTER_ERROR");
|
||||
}
|
||||
else
|
||||
return( filter );
|
||||
@ -132,7 +142,8 @@ void DSetCreatPropList::setExternal( const char* name, off_t offset, hsize_t siz
|
||||
herr_t ret_value = H5Pset_external( id, name, offset, size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::setExternal",
|
||||
"H5Pset_external failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,7 +153,8 @@ int DSetCreatPropList::getExternalCount() const
|
||||
int num_ext_files = H5Pget_external_count( id );
|
||||
if( num_ext_files < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getExternalCount",
|
||||
"H5Pget_external_count returns negative number of external files");
|
||||
}
|
||||
else
|
||||
return( num_ext_files );
|
||||
@ -154,7 +166,8 @@ void DSetCreatPropList::getExternal( int idx, size_t name_size, char* name, off_
|
||||
herr_t ret_value = H5Pget_external( id, idx, name_size, name, &offset, &size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetCreatPropList::getExternal",
|
||||
"H5Pget_external failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,8 @@ void DSetMemXferPropList::setBuffer( size_t size, void* tconv, void* bkg ) const
|
||||
herr_t ret_value = H5Pset_buffer( id, size, tconv, bkg );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::setBuffer",
|
||||
"H5Pset_buffer failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,7 +36,8 @@ size_t DSetMemXferPropList::getBuffer( void** tconv, void** bkg ) const
|
||||
size_t buffer_size = H5Pget_buffer( id, tconv, bkg );
|
||||
if( buffer_size == 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::getBuffer",
|
||||
"H5Pget_buffer returned 0 for buffer size - failure");
|
||||
}
|
||||
return( buffer_size );
|
||||
}
|
||||
@ -46,7 +48,8 @@ void DSetMemXferPropList::setPreserve( bool status ) const
|
||||
herr_t ret_value = H5Pset_preserve( id, (hbool_t) status );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::setPreserve",
|
||||
"H5Pset_preserve failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,7 +63,8 @@ bool DSetMemXferPropList::getPreserve() const
|
||||
return false;
|
||||
else
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::getPreserve",
|
||||
"H5Pget_preserve returned negative value for status");
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,7 +74,8 @@ void DSetMemXferPropList::setHyperCache( bool cache, unsigned limit ) const
|
||||
herr_t ret_value = H5Pset_hyper_cache( id, cache, limit );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::setHyperCache",
|
||||
"H5Pset_hyper_cache failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,7 +86,8 @@ void DSetMemXferPropList::getHyperCache( bool& cache, unsigned& limit ) const
|
||||
herr_t ret_value = H5Pget_hyper_cache( id, &temp_cache, &limit );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::getHyperCache",
|
||||
"H5Pget_hyper_cache failed");
|
||||
}
|
||||
if( temp_cache > 0 )
|
||||
cache = true;
|
||||
@ -95,7 +101,8 @@ void DSetMemXferPropList::setBtreeRatios( double left, double middle, double rig
|
||||
herr_t ret_value = H5Pset_btree_ratios( id, left, middle, right );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::setBtreeRatios",
|
||||
"H5Pset_btree_ratios failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +112,8 @@ void DSetMemXferPropList::getBtreeRatios( double& left, double& middle, double&
|
||||
herr_t ret_value = H5Pget_btree_ratios( id, &left, &middle, &right );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::getBtreeRatios",
|
||||
"H5Pget_btree_ratios failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,7 +124,8 @@ void DSetMemXferPropList::setVlenMemManager( H5MM_allocate_t alloc_func, void* a
|
||||
free_func, free_info );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::setVlenMemManager",
|
||||
"H5Pset_vlen_mem_manager failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,7 +137,8 @@ void DSetMemXferPropList::setVlenMemManager() const
|
||||
//herr_t ret_value = H5Pset_vlen_mem_manager( id, NULL, NULL, NULL, NULL );
|
||||
//if( ret_value < 0 )
|
||||
//{
|
||||
//throw PropListIException();
|
||||
//throw PropListIException("DSetMemXferPropList::setVlenMemManager",
|
||||
//"H5Pset_vlen_mem_manager failed");
|
||||
//}
|
||||
}
|
||||
|
||||
@ -138,7 +148,8 @@ void DSetMemXferPropList::getVlenMemManager( H5MM_allocate_t& alloc_func, void**
|
||||
herr_t ret_value = H5Pget_vlen_mem_manager( id, &alloc_func, alloc_info, &free_func, free_info );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::getVlenMemManager",
|
||||
"H5Pget_vlen_mem_manager failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,7 +160,8 @@ void DSetMemXferPropList::setXfer( H5D_transfer_t data_xfer_mode = H5D_XFER_INDE
|
||||
herr_t ret_value = H5Pset_xfer( ... );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::setXfer",
|
||||
"H5Pset_xfer failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,10 +170,12 @@ void DSetMemXferPropList::setXfer( H5D_transfer_t data_xfer_mode = H5D_XFER_INDE
|
||||
H5D_transfer_t DSetMemXferPropList::getXfer() const
|
||||
{
|
||||
H5D_transfer_t xfer = H5Pget_xfer( id );
|
||||
// remove when done - find out what the value is for ??
|
||||
// BMR - need to find out what the value is for ?? when this function
|
||||
// is supported
|
||||
if( xfer == ?? )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("DSetMemXferPropList::getXfer",
|
||||
"H5Pget_xfer failed");
|
||||
}
|
||||
return( xfer );
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ EnumType::EnumType( const DataSet& dataset ) : DataType()
|
||||
// If the datatype id is not valid, throw an exception
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSetIException("Getting datatype fails...");
|
||||
throw DataSetIException("EnumType constructor", "H5Dget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ EnumType::EnumType( const IntType& data_type ) : DataType()
|
||||
// If the datatype id is not valid, throw an exception
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSetIException("Creating enumeration datatype fails...");
|
||||
throw DataSetIException("EnumType constructor", "H5Tenum_create failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ void EnumType::insert( const char* name, void *value ) const
|
||||
herr_t ret_value = H5Tenum_insert( id, name, value );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("EnumType::insert", "H5Tenum_insert failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ string EnumType::nameOf( void *value, size_t size ) const
|
||||
// If H5Tenum_nameof returns a negative value, raise an exception,
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("EnumType::nameOf", "H5Tenum_nameof failed");
|
||||
}
|
||||
// otherwise, create the string to hold the datatype name and return it
|
||||
string name = string( name_C );
|
||||
@ -104,7 +104,7 @@ void EnumType::valueOf( const char* name, void *value ) const
|
||||
herr_t ret_value = H5Tenum_valueof( id, name, value );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("EnumType::valueOf", "H5Tenum_valueof failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ void EnumType::getMemberValue( int memb_no, void *value ) const
|
||||
hid_t ret_value = H5Tget_member_value( id, memb_no, value );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("EnumType::getMemberValue", "H5Tget_member_value failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,33 +6,43 @@
|
||||
|
||||
#include "H5Include.h"
|
||||
#include <string>
|
||||
|
||||
// Added this line for CC to work at this time. Will remove it when
|
||||
// the problem is fixed. BMR - 10/30/00
|
||||
|
||||
#include "H5Exception.h"
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
namespace H5 {
|
||||
#endif
|
||||
|
||||
Exception::Exception() : detailMessage("") {}
|
||||
// Default constructor
|
||||
Exception::Exception() : detailMessage(""), funcName("") {}
|
||||
|
||||
// Constructor taking only a detailed message as string object
|
||||
//Exception::Exception(const string& message) : detailMessage(message) {}
|
||||
|
||||
// Constructor taking a function name and a detailed message as string objects
|
||||
Exception::Exception(const string& func_name, const string& message) : detailMessage(message), funcName(func_name) {}
|
||||
|
||||
// Constructor taking a detailed message as character string
|
||||
// digital alpha (gondolin) produces compilation error at static_cast<string>
|
||||
// so I replaced this constructor by the one below it
|
||||
//Exception::Exception( const char* message) : detailMessage(static_cast<string>(message)) {}
|
||||
//Exception::Exception(const char* message)
|
||||
//{
|
||||
//detailMessage = string(message);
|
||||
//}
|
||||
|
||||
Exception::Exception( const char* message)
|
||||
// Constructor taking a function name and a detailed message as character
|
||||
// strings
|
||||
Exception::Exception(const char* func_name, const char* message)
|
||||
{
|
||||
detailMessage = string( message );
|
||||
detailMessage = string(message);
|
||||
funcName = string(func_name);
|
||||
}
|
||||
|
||||
Exception::Exception( const string& message ) : detailMessage( message ) {}
|
||||
|
||||
// copy constructor
|
||||
Exception::Exception( const Exception& orig )
|
||||
{
|
||||
detailMessage = orig.detailMessage;
|
||||
funcName = orig.funcName;
|
||||
}
|
||||
|
||||
// Returns the character string that describes an error specified by
|
||||
@ -62,7 +72,7 @@ void Exception::setAutoPrint( H5E_auto_t func, void* client_data )
|
||||
// the specified function.
|
||||
herr_t ret_value = H5Eset_auto( func, client_data );
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::setAutoPrint" );
|
||||
throw Exception( "Exception::setAutoPrint", "H5Eset_auto failed" );
|
||||
}
|
||||
|
||||
// Turns off the automatic error printing.
|
||||
@ -72,7 +82,7 @@ void Exception::dontPrint()
|
||||
// off the automatic error printing.
|
||||
herr_t ret_value = H5Eset_auto( NULL, NULL );
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::dontPrint" );
|
||||
throw Exception( "Exception::dontPrint", "H5Eset_auto failed" );
|
||||
}
|
||||
|
||||
// Retrieves the current settings for the automatic error stack traversal
|
||||
@ -83,7 +93,7 @@ void Exception::getAutoPrint( H5E_auto_t& func, void** client_data )
|
||||
// the automatic error printing
|
||||
herr_t ret_value = H5Eget_auto( &func, client_data );
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::getAutoPrint" );
|
||||
throw Exception( "Exception::getAutoPrint", "H5Eget_auto failed" );
|
||||
}
|
||||
|
||||
// Clears the error stack for the current thread.
|
||||
@ -92,7 +102,7 @@ void Exception::clearErrorStack()
|
||||
// calls the C API routine H5Eclear to clear the error stack
|
||||
herr_t ret_value = H5Eclear();
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::clearErrorStack" );
|
||||
throw Exception( "Exception::clearErrorStack", "H5Eclear failed" );
|
||||
}
|
||||
|
||||
// Walks the error stack for the current thread, calling the specified function.
|
||||
@ -101,7 +111,7 @@ void Exception::walkErrorStack( H5E_direction_t direction, H5E_walk_t func, void
|
||||
// calls the C API routine H5Ewalk to walk the error stack
|
||||
herr_t ret_value = H5Ewalk( direction, func, client_data );
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::walkErrorStack" );
|
||||
throw Exception( "Exception::walkErrorStack", "H5Ewalk failed" );
|
||||
}
|
||||
|
||||
// Default error stack traversal callback function that prints error
|
||||
@ -111,18 +121,28 @@ void Exception::walkDefErrorStack( int n, H5E_error_t& err_desc, void* client_da
|
||||
// calls the C API routine H5Ewalk_cb to walk the error stack
|
||||
herr_t ret_value = H5Ewalk_cb( n, &err_desc, client_data );
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::walkDefErrorStack" );
|
||||
throw Exception( "Exception::walkDefErrorStack", "H5Ewalk_cb failed" );
|
||||
}
|
||||
|
||||
// Returns the detailed message set at the time the exception is thrown
|
||||
string Exception::getDetailMesg() const
|
||||
string Exception::getDetailMsg() const
|
||||
{
|
||||
return( detailMessage );
|
||||
return(detailMessage);
|
||||
}
|
||||
|
||||
const char* Exception::getCDetailMesg() const
|
||||
const char* Exception::getCDetailMsg() const
|
||||
{
|
||||
return( detailMessage.c_str() );
|
||||
return(detailMessage.c_str());
|
||||
}
|
||||
|
||||
// Returns the function name where the exception is thrown
|
||||
string Exception::getFuncName() const
|
||||
{
|
||||
return(funcName);
|
||||
}
|
||||
const char* Exception::getCFuncName() const
|
||||
{
|
||||
return(funcName.c_str());
|
||||
}
|
||||
|
||||
// Prints the error stack in a default manner.
|
||||
@ -130,49 +150,59 @@ void Exception::printError( FILE* stream ) const
|
||||
{
|
||||
herr_t ret_value = H5Eprint( NULL ); // print to stderr
|
||||
if( ret_value < 0 )
|
||||
throw Exception( "Exception::printError" );
|
||||
throw Exception( "Exception::printError", "H5Eprint failed" );
|
||||
}
|
||||
|
||||
Exception::~Exception() {}
|
||||
|
||||
FileIException::FileIException():Exception(){}
|
||||
FileIException::FileIException( string message ): Exception( message ){}
|
||||
FileIException::FileIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
FileIException::FileIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
FileIException::~FileIException() {}
|
||||
|
||||
GroupIException::GroupIException():Exception(){}
|
||||
GroupIException::GroupIException( string message ): Exception( message ){}
|
||||
GroupIException::GroupIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
GroupIException::GroupIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
GroupIException::~GroupIException() {}
|
||||
|
||||
DataSpaceIException::DataSpaceIException():Exception(){}
|
||||
DataSpaceIException::DataSpaceIException( string message ): Exception( message ) {}
|
||||
DataSpaceIException::DataSpaceIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
DataSpaceIException::DataSpaceIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
DataSpaceIException::~DataSpaceIException() {}
|
||||
|
||||
DataTypeIException::DataTypeIException():Exception(){}
|
||||
DataTypeIException::DataTypeIException( string message ): Exception( message ) {}
|
||||
DataTypeIException::DataTypeIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
DataTypeIException::DataTypeIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
DataTypeIException::~DataTypeIException() {}
|
||||
|
||||
PropListIException::PropListIException():Exception(){}
|
||||
PropListIException::PropListIException( string message ): Exception( message ) {}
|
||||
PropListIException::PropListIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
PropListIException::PropListIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
PropListIException::~PropListIException() {}
|
||||
|
||||
DataSetIException::DataSetIException():Exception(){}
|
||||
DataSetIException::DataSetIException( string message ): Exception( message ) {}
|
||||
DataSetIException::DataSetIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
DataSetIException::DataSetIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
DataSetIException::~DataSetIException() {}
|
||||
|
||||
AttributeIException::AttributeIException():Exception(){}
|
||||
AttributeIException::AttributeIException( string message ): Exception( message ) {}
|
||||
AttributeIException::AttributeIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
AttributeIException::AttributeIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
AttributeIException::~AttributeIException() {}
|
||||
|
||||
ReferenceException::ReferenceException():Exception(){}
|
||||
ReferenceException::ReferenceException( string message ): Exception( message ) {}
|
||||
ReferenceException::ReferenceException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
ReferenceException::ReferenceException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
ReferenceException::~ReferenceException() {}
|
||||
|
||||
LibraryIException::LibraryIException():Exception(){}
|
||||
LibraryIException::LibraryIException( string message ): Exception( message ) {}
|
||||
LibraryIException::LibraryIException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
LibraryIException::LibraryIException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
LibraryIException::~LibraryIException() {}
|
||||
|
||||
IdComponentException::IdComponentException(): Exception() {}
|
||||
IdComponentException::IdComponentException( string message ): Exception( message ) {}
|
||||
IdComponentException::IdComponentException(const string& func_name, const string& message) : Exception(func_name, message) {}
|
||||
IdComponentException::IdComponentException(const char* func_name, const char* message) : Exception(func_name, message) {}
|
||||
IdComponentException::~IdComponentException() {}
|
||||
|
||||
// The following are from Java API but not done here:
|
||||
|
@ -1,4 +1,3 @@
|
||||
// C++ informative line for the emacs editor: -*- C++ -*-
|
||||
#ifndef _H5Exception_H
|
||||
#define _H5Exception_H
|
||||
|
||||
@ -11,16 +10,16 @@ using namespace std;
|
||||
|
||||
class Exception {
|
||||
public:
|
||||
// Creates an exception with no message
|
||||
// Default constructor
|
||||
Exception();
|
||||
|
||||
// Creates an exception with a detailed message
|
||||
Exception( const string& message );
|
||||
|
||||
Exception( const char* message);
|
||||
// Creates an exception with a function name where the failure occurs
|
||||
// and an optional detailed message
|
||||
Exception( const string& func_name, const string& message = NULL);
|
||||
Exception( const char* func_name, const char* message = NULL);
|
||||
|
||||
// copy constructor
|
||||
Exception( const Exception& orig );
|
||||
Exception( const Exception& orig);
|
||||
|
||||
// Returns the character string that describes an error specified by
|
||||
// a major error number.
|
||||
@ -31,18 +30,20 @@ class Exception {
|
||||
string getMinorString( H5E_minor_t minor_num ) const;
|
||||
|
||||
// Returns the detailed message set at the time the exception is thrown
|
||||
string getDetailMesg() const;
|
||||
const char* getCDetailMesg() const; // C string of detailed message
|
||||
string getDetailMsg() const;
|
||||
const char* getCDetailMsg() const; // C string of detailed message
|
||||
string getFuncName() const; // function name as a string object
|
||||
const char* getCFuncName() const; // function name as a char string
|
||||
|
||||
// Turns on the automatic error printing.
|
||||
static void setAutoPrint( H5E_auto_t func, void* client_data );
|
||||
static void setAutoPrint( H5E_auto_t func, void* client_data);
|
||||
|
||||
// Turns off the automatic error printing.
|
||||
static void dontPrint();
|
||||
|
||||
// Retrieves the current settings for the automatic error stack
|
||||
// traversal function and its data.
|
||||
static void getAutoPrint( H5E_auto_t& func, void** client_data );
|
||||
static void getAutoPrint( H5E_auto_t& func, void** client_data);
|
||||
|
||||
// Clears the error stack for the current thread.
|
||||
static void clearErrorStack();
|
||||
@ -50,12 +51,12 @@ class Exception {
|
||||
// Walks the error stack for the current thread, calling the
|
||||
// specified function.
|
||||
static void walkErrorStack( H5E_direction_t direction,
|
||||
H5E_walk_t func, void* client_data );
|
||||
H5E_walk_t func, void* client_data);
|
||||
|
||||
// Default error stack traversal callback function that prints
|
||||
// error messages to the specified output stream.
|
||||
static void walkDefErrorStack( int n, H5E_error_t& err_desc,
|
||||
void* client_data );
|
||||
void* client_data);
|
||||
|
||||
// Prints the error stack in a default manner.
|
||||
virtual void printError( FILE* stream = NULL ) const;
|
||||
@ -65,75 +66,86 @@ class Exception {
|
||||
|
||||
private:
|
||||
string detailMessage;
|
||||
string funcName;
|
||||
};
|
||||
|
||||
class FileIException : public Exception {
|
||||
public:
|
||||
FileIException();
|
||||
FileIException( string message );
|
||||
FileIException( const string& func_name, const string& message = NULL);
|
||||
FileIException( const char* func_name, const char* message = NULL);
|
||||
virtual ~FileIException();
|
||||
};
|
||||
|
||||
class GroupIException : public Exception {
|
||||
public:
|
||||
GroupIException();
|
||||
GroupIException( string message );
|
||||
GroupIException( const string& func_name, const string& message=NULL);
|
||||
GroupIException( const char* func_name, const char* message = NULL);
|
||||
virtual ~GroupIException();
|
||||
};
|
||||
|
||||
class DataSpaceIException : public Exception {
|
||||
public:
|
||||
DataSpaceIException();
|
||||
DataSpaceIException( string message );
|
||||
DataSpaceIException(const string& func_name, const string& message=NULL);
|
||||
DataSpaceIException(const char* func_name, const char* message = NULL);
|
||||
virtual ~DataSpaceIException();
|
||||
};
|
||||
|
||||
class DataTypeIException : public Exception {
|
||||
public:
|
||||
DataTypeIException();
|
||||
DataTypeIException( string message );
|
||||
DataTypeIException(const string& func_name, const string& message = NULL);
|
||||
DataTypeIException(const char* func_name, const char* message = NULL);
|
||||
virtual ~DataTypeIException();
|
||||
};
|
||||
|
||||
class PropListIException : public Exception {
|
||||
public:
|
||||
PropListIException();
|
||||
PropListIException( string message );
|
||||
PropListIException(const string& func_name, const string& message=NULL);
|
||||
PropListIException(const char* func_name, const char* message = NULL);
|
||||
virtual ~PropListIException();
|
||||
};
|
||||
|
||||
class DataSetIException : public Exception {
|
||||
public:
|
||||
DataSetIException();
|
||||
DataSetIException( string message );
|
||||
DataSetIException(const string& func_name, const string& message=NULL);
|
||||
DataSetIException(const char* func_name, const char* message = NULL);
|
||||
virtual ~DataSetIException();
|
||||
};
|
||||
|
||||
class AttributeIException : public Exception {
|
||||
public:
|
||||
AttributeIException();
|
||||
AttributeIException( string message );
|
||||
AttributeIException(const string& func_name, const string& message=NULL);
|
||||
AttributeIException(const char* func_name, const char* message = NULL);
|
||||
virtual ~AttributeIException();
|
||||
};
|
||||
|
||||
class ReferenceException : public Exception {
|
||||
public:
|
||||
ReferenceException();
|
||||
ReferenceException( string message );
|
||||
ReferenceException(const string& func_name, const string& message=NULL);
|
||||
ReferenceException(const char* func_name, const char* message = NULL);
|
||||
virtual ~ReferenceException();
|
||||
};
|
||||
|
||||
class LibraryIException : public Exception {
|
||||
public:
|
||||
LibraryIException();
|
||||
LibraryIException( string message );
|
||||
LibraryIException(const string& func_name, const string& message=NULL);
|
||||
LibraryIException(const char* func_name, const char* message = NULL);
|
||||
virtual ~LibraryIException();
|
||||
};
|
||||
|
||||
class IdComponentException : public Exception {
|
||||
public:
|
||||
IdComponentException();
|
||||
IdComponentException( string message );
|
||||
IdComponentException(const string& func_name, const string& message=NULL);
|
||||
IdComponentException(const char* func_name, const char* message = NULL);
|
||||
virtual ~IdComponentException();
|
||||
};
|
||||
|
||||
|
@ -25,7 +25,7 @@ void FileAccPropList::setStdio() const
|
||||
herr_t ret_value = H5Pset_stdio( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setStdio", "H5Pset_stdio failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ H5F_driver_t FileAccPropList::getDriver() const
|
||||
H5F_driver_t driver = H5Pget_driver( id );
|
||||
if( driver == H5F_LOW_ERROR )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::getDriver", "H5Pget_driver failed");
|
||||
}
|
||||
return( driver );
|
||||
}
|
||||
@ -53,7 +53,7 @@ void FileAccPropList::setSec2() const
|
||||
herr_t ret_value = H5Pset_sec2( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setSec2", "H5Pset_sec2 failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ void FileAccPropList::setCore( size_t increment ) const
|
||||
herr_t ret_value = H5Pset_core( id, increment );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setCore", "H5Pset_core failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ void FileAccPropList::setFamily( hsize_t memb_size, const FileAccPropList& memb_
|
||||
herr_t ret_value = H5Pset_family( id, memb_size, memb_plist.getId() );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setFamily", "H5Pset_family failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,7 +121,7 @@ void FileAccPropList::setSplit( FileAccPropList& meta_plist, FileAccPropList& ra
|
||||
herr_t ret_value = H5Pset_split( id, meta_ext, meta_pid, raw_ext, raw_pid );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setSplit", "H5Pset_split failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ void FileAccPropList::getSplit( size_t meta_ext_size, string& meta_ext, FileAccP
|
||||
&meta_plist_id, raw_ext_size, raw_ext_C, &raw_plist_id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::getSplit", "H5Pget_split failed");
|
||||
}
|
||||
meta_plist.setId( meta_plist_id );
|
||||
raw_plist.setId( raw_plist_id );
|
||||
@ -155,7 +155,7 @@ void FileAccPropList::setAlignment( hsize_t threshold, hsize_t alignment ) const
|
||||
herr_t ret_value = H5Pset_alignment( id, threshold, alignment );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setAlignment", "H5Pset_alignment failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,7 +164,7 @@ void FileAccPropList::getAlignment( hsize_t& threshold, hsize_t& alignment ) con
|
||||
herr_t ret_value = H5Pget_alignment( id, &threshold, &alignment );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::getAlignment", "H5Pget_alignment failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ void FileAccPropList::setMpi( MPI_Comm comm, MPI_Info info ) const
|
||||
herr_t ret_value = H5Pset_mpi( id, comm, info );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setMpi", "H5Pset_mpi failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -194,7 +194,7 @@ void FileAccPropList::setCache( int mdc_nelmts, int rdcc_nelmts, size_t rdcc_nby
|
||||
herr_t ret_value = H5Pset_cache( id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0 );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setCache", "H5Pset_cache failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -203,7 +203,7 @@ void FileAccPropList::getCache( int& mdc_nelmts, int& rdcc_nelmts, size_t& rdcc_
|
||||
herr_t ret_value = H5Pget_cache( id, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0 );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::getCache", "H5Pget_cache failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -212,7 +212,7 @@ void FileAccPropList::setGcReferences( unsigned gc_ref ) const
|
||||
herr_t ret_value = H5Pset_gc_references( id, gc_ref );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::setGcReferences", "H5Pset_gc_references failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -224,7 +224,7 @@ unsigned FileAccPropList::getGcReferences() const
|
||||
herr_t ret_value = H5Pget_gc_references( id, &gc_ref );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("FileAccPropList::getGcReferences", "H5Pget_gc_references failed");
|
||||
}
|
||||
return( gc_ref );
|
||||
}
|
||||
|
@ -25,7 +25,8 @@ void FileCreatPropList::getVersion(
|
||||
herr_t ret_value = H5Pget_version( id, &boot, &freelist, &stab, &shhdr );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList constructor");
|
||||
throw PropListIException("FileCreatPropList::getVersion",
|
||||
"H5Pget_version failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,7 +35,8 @@ void FileCreatPropList::setUserblock( hsize_t size ) const
|
||||
herr_t ret_value = H5Pset_userblock( id, size);
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::setUserblock");
|
||||
throw PropListIException("FileCreatPropList::setUserblock",
|
||||
"H5Pset_userblock failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,7 +46,8 @@ hsize_t FileCreatPropList::getUserblock() const
|
||||
herr_t ret_value = H5Pget_userblock( id, &userblock_size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::getUserblock");
|
||||
throw PropListIException("FileCreatPropList::getUserblock",
|
||||
"H5Pget_userblock failed");
|
||||
}
|
||||
return( userblock_size );
|
||||
}
|
||||
@ -54,7 +57,8 @@ void FileCreatPropList::setSizes( size_t sizeof_addr, size_t sizeof_size ) const
|
||||
herr_t ret_value = H5Pset_sizes( id, sizeof_addr, sizeof_size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::setSizes");
|
||||
throw PropListIException("FileCreatPropList::setSizes",
|
||||
"H5Pset_sizes failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,7 +67,8 @@ void FileCreatPropList::getSizes( size_t& sizeof_addr, size_t& sizeof_size ) con
|
||||
herr_t ret_value = H5Pget_sizes( id, &sizeof_addr, &sizeof_size );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::getSizes");
|
||||
throw PropListIException("FileCreatPropList::getSizes",
|
||||
"H5Pget_sizes failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +77,8 @@ void FileCreatPropList::setSymk( int ik, int lk ) const
|
||||
herr_t ret_value = H5Pset_sym_k( id, ik, lk );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::setSymk");
|
||||
throw PropListIException("FileCreatPropList::setSymk",
|
||||
"H5Pset_sym_k failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,7 +87,8 @@ void FileCreatPropList::getSymk( int& ik, int& lk ) const
|
||||
herr_t ret_value = H5Pget_sym_k( id, &ik, &lk );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::getSymk");
|
||||
throw PropListIException("FileCreatPropList::getSymk",
|
||||
"H5Pget_sym_k failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,7 +97,8 @@ void FileCreatPropList::setIstorek( int ik ) const
|
||||
herr_t ret_value = H5Pset_istore_k( id, ik );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::setIstorek");
|
||||
throw PropListIException("FileCreatPropList::setIstorek",
|
||||
"H5Pset_istore_k failed");
|
||||
}
|
||||
}
|
||||
int FileCreatPropList::getIstorek() const
|
||||
@ -99,7 +107,8 @@ int FileCreatPropList::getIstorek() const
|
||||
herr_t ret_value = H5Pget_istore_k( id, &ik );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("FileCreatPropList::getIstorek");
|
||||
throw PropListIException("FileCreatPropList::getIstorek",
|
||||
"H5Pget_istore_k failed");
|
||||
}
|
||||
return( ik );
|
||||
}
|
||||
|
@ -38,26 +38,29 @@ H5File::H5File( const char* name, unsigned int flags, const FileCreatPropList& c
|
||||
// constructors taking a string or a char*
|
||||
void H5File::getFile( const char* name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist )
|
||||
{
|
||||
// These bits only set for creation, so if any of them are set,
|
||||
// create the file.
|
||||
if( flags & (H5F_ACC_EXCL|H5F_ACC_TRUNC|H5F_ACC_DEBUG ))
|
||||
{
|
||||
hid_t create_plist_id = create_plist.getId();
|
||||
hid_t access_plist_id = access_plist.getId();
|
||||
id = H5Fcreate( name, flags, create_plist_id, access_plist_id );
|
||||
}
|
||||
// Open the file if none of the bits above are set.
|
||||
else
|
||||
{
|
||||
// use create_plist for access plist because of the default argument
|
||||
hid_t access_plist_id = create_plist.getId();
|
||||
id = H5Fopen( name, flags, access_plist_id );
|
||||
}
|
||||
|
||||
if( id <= 0 ) // throw an exception when open/create fail
|
||||
{
|
||||
throw FileIException( "H5File constructor" );
|
||||
}
|
||||
// These bits only set for creation, so if any of them are set,
|
||||
// create the file.
|
||||
if( flags & (H5F_ACC_EXCL|H5F_ACC_TRUNC|H5F_ACC_DEBUG ))
|
||||
{
|
||||
hid_t create_plist_id = create_plist.getId();
|
||||
hid_t access_plist_id = access_plist.getId();
|
||||
id = H5Fcreate( name, flags, create_plist_id, access_plist_id );
|
||||
if( id <= 0 ) // throw an exception when open/create fail
|
||||
{
|
||||
throw FileIException("H5File constructor", "H5Fcreate failed");
|
||||
}
|
||||
}
|
||||
// Open the file if none of the bits above are set.
|
||||
else
|
||||
{
|
||||
// use create_plist for access plist because of the default argument
|
||||
hid_t access_plist_id = create_plist.getId();
|
||||
id = H5Fopen( name, flags, access_plist_id );
|
||||
if( id <= 0 ) // throw an exception when open/create fail
|
||||
{
|
||||
throw FileIException("H5File constructor", "H5Fopen failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Copy constructor: makes a copy of the original H5File object.
|
||||
@ -79,7 +82,7 @@ bool H5File::isHdf5(const char* name )
|
||||
return false;
|
||||
else // Raise exception when H5Fis_hdf5 returns a negative value
|
||||
{
|
||||
throw FileIException( "H5File::isHdf5" );
|
||||
throw FileIException("H5File::isHdf5", "H5Fis_hdf5 returned negative value");
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,14 +98,18 @@ void H5File::reopen()
|
||||
{
|
||||
// reset the identifier of this H5File - send 'this' in so that
|
||||
// H5Fclose can be called appropriately
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw FileIException("H5File::reopen", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
// call C routine to reopen the file - Note: not sure about this
|
||||
// does id need to be closed later? which id to be the parameter?
|
||||
id = H5Freopen( id );
|
||||
if( id <= 0 ) // Raise exception when H5Freopen returns a neg value
|
||||
{
|
||||
throw FileIException( "H5File::reopen" );
|
||||
throw FileIException("H5File::reopen", "H5Freopen failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,7 +127,7 @@ FileCreatPropList H5File::getCreatePlist() const
|
||||
}
|
||||
else
|
||||
{
|
||||
throw FileIException( "H5File::getCreatePlist" );
|
||||
throw FileIException("H5File::getCreatePlist", "H5Fget_create_plist failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -138,7 +145,7 @@ FileAccPropList H5File::getAccessPlist() const
|
||||
}
|
||||
else // Raise an exception
|
||||
{
|
||||
throw FileIException( "H5File::getAccessPlist" );
|
||||
throw FileIException("H5File::getAccessPlist", "H5Fget_access_plist failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,14 +155,19 @@ void H5File::p_close() const
|
||||
herr_t ret_value = H5Fclose( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw FileIException( "H5File::p_close" );
|
||||
throw FileIException(NULL, "H5Fclose failed");
|
||||
}
|
||||
}
|
||||
|
||||
// Throw file exception
|
||||
void H5File::throwException() const
|
||||
// Throw file exception; used in CommonFG implementation so that proper
|
||||
// exception can be thrown for file or group. The func_name is a member
|
||||
// function of CommonFG and "H5File::" will be inserted to indicate the
|
||||
// function called is an implementation of H5File
|
||||
void H5File::throwException(const string& func_name, const string& msg) const
|
||||
{
|
||||
throw FileIException();
|
||||
string full_name = func_name;
|
||||
full_name.insert(0, "H5File::");
|
||||
throw FileIException(full_name, msg);
|
||||
}
|
||||
|
||||
// The destructor of this instance calls IdComponent::reset to
|
||||
@ -166,7 +178,11 @@ void H5File::throwException() const
|
||||
H5File::~H5File()
|
||||
{
|
||||
// The HDF5 file id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw FileIException("H5File::~H5File", close_error.getDetailMsg());
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -23,7 +23,8 @@ class H5File : public IdComponent, public CommonFG {
|
||||
virtual hid_t getLocId() const;
|
||||
|
||||
// Throw file exception
|
||||
virtual void throwException() const;
|
||||
virtual void throwException(const string& func_name, const string& msg) const;
|
||||
|
||||
|
||||
// Determines if a file, specified by its name, is in HDF5 format
|
||||
static bool isHdf5(const string& name );
|
||||
|
@ -43,7 +43,7 @@ FloatType::FloatType( const DataSet& dataset ) : AtomType()
|
||||
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("FloatType constructor", "H5Dget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ void FloatType::getFields( size_t& spos, size_t& epos, size_t& esize, size_t& mp
|
||||
herr_t ret_value = H5Tget_fields( id, &spos, &epos, &esize, &mpos, &msize );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::getFields", "H5Tget_fields failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ void FloatType::setFields( size_t spos, size_t epos, size_t esize, size_t mpos,
|
||||
herr_t ret_value = H5Tset_fields( id, spos, epos, esize, mpos, msize );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::setFields", "H5Tset_fields failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ size_t FloatType::getEbias() const
|
||||
// Returns the bias if successful
|
||||
if( ebias == 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::getEbias", "H5Tget_ebias failed - returned exponent bias as 0");
|
||||
}
|
||||
return( ebias );
|
||||
}
|
||||
@ -85,7 +85,7 @@ void FloatType::setEbias( size_t ebias ) const
|
||||
herr_t ret_value = H5Tset_ebias( id, ebias );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::setEbias", "H5Tset_ebias failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ H5T_norm_t FloatType::getNorm( string& norm_string ) const
|
||||
// Returns a valid normalization type if successful
|
||||
if( norm == H5T_NORM_ERROR )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::getNorm", "H5Tget_norm failed - returned H5T_NORM_ERROR");
|
||||
}
|
||||
if( norm == H5T_NORM_IMPLIED )
|
||||
norm_string = "H5T_NORM_IMPLIED (0)";
|
||||
@ -113,7 +113,7 @@ void FloatType::setNorm( H5T_norm_t norm ) const
|
||||
herr_t ret_value = H5Tset_norm( id, norm );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::setNorm", "H5Tset_norm failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ H5T_pad_t FloatType::getInpad( string& pad_string ) const
|
||||
// Returns a valid padding type if successful
|
||||
if( pad_type == H5T_PAD_ERROR )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::getInpad", "H5Tget_inpad failed - returned H5T_PAD_ERROR");
|
||||
}
|
||||
if( pad_type == H5T_PAD_ZERO )
|
||||
pad_string = "H5T_PAD_ZERO (0)";
|
||||
@ -141,7 +141,7 @@ void FloatType::setInpad( H5T_pad_t inpad ) const
|
||||
herr_t ret_value = H5Tset_inpad( id, inpad );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("FloatType::setInpad", "H5Tset_inpad failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ Group::Group( const hid_t group_id ) : H5Object( group_id ) {}
|
||||
//return( ret_value );
|
||||
//else // raise exception when H5Aiterate returns a negative value
|
||||
//{
|
||||
//throw GroupIException();
|
||||
//throw GroupIException("Group::iterateElems", "H5Giterate failed");
|
||||
//}
|
||||
//}
|
||||
|
||||
@ -61,14 +61,16 @@ void Group::p_close() const
|
||||
herr_t ret_value = H5Gclose( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw GroupIException();
|
||||
throw GroupIException(NULL, "H5Gclose failed");
|
||||
}
|
||||
}
|
||||
|
||||
// Throw file exception
|
||||
void Group::throwException() const
|
||||
void Group::throwException(const string& func_name, const string& msg) const
|
||||
{
|
||||
throw GroupIException();
|
||||
string full_name = func_name;
|
||||
full_name.insert(0, "Group::");
|
||||
throw GroupIException(full_name, msg);
|
||||
}
|
||||
|
||||
// The destructor of this instance calls IdComponent::reset to
|
||||
@ -79,7 +81,12 @@ void Group::throwException() const
|
||||
Group::~Group()
|
||||
{
|
||||
// The group id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw GroupIException("Group::~Group", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -18,7 +18,8 @@ class Group : public H5Object, public CommonFG {
|
||||
virtual hid_t getLocId() const;
|
||||
|
||||
// Throw group exception
|
||||
virtual void throwException() const;
|
||||
virtual void throwException(const string& func_name, const string& msg) const;
|
||||
|
||||
|
||||
// Used by the API to appropriately close a group
|
||||
void p_close() const;
|
||||
|
@ -63,7 +63,11 @@ IdComponent& IdComponent::operator=( const IdComponent& rhs )
|
||||
{
|
||||
// reset the identifier of this object - resetIdComponent will call the
|
||||
// appropriate H5xclose to close the id
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw IdComponentException("IdComponent::operator=", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
// copy the data members from the rhs object
|
||||
id = rhs.id;
|
||||
@ -85,7 +89,11 @@ IdComponent& IdComponent::operator=( const IdComponent& rhs )
|
||||
void IdComponent::setId( hid_t new_id )
|
||||
{
|
||||
// reset the identifier of this object, call appropriate H5Xclose
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw IdComponentException("IdComponent::setId", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
id = new_id;
|
||||
|
||||
|
@ -35,7 +35,7 @@ IntType::IntType( const PredType& pred_type ) : AtomType()
|
||||
// Creates a integer datatype using an existing id
|
||||
IntType::IntType( const hid_t existing_id ) : AtomType( existing_id ) {}
|
||||
|
||||
// Gets the integer datatype of the specified dataset - will reimplement
|
||||
// Gets the integer datatype of the specified dataset - will reimplement -BMR
|
||||
IntType::IntType( const DataSet& dataset ) : AtomType()
|
||||
{
|
||||
// Calls C function H5Dget_type to get the id of the datatype
|
||||
@ -43,7 +43,7 @@ IntType::IntType( const DataSet& dataset ) : AtomType()
|
||||
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("IntType constructor", "H5Dget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,8 @@ H5T_sign_t IntType::getSign() const
|
||||
// Returns a valid sign type if successful
|
||||
if( type_sign == H5T_SGN_ERROR )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("IntType::getSign",
|
||||
"H5Tget_sign failed - returned H5T_SGN_ERROR for the sign type");
|
||||
}
|
||||
return( type_sign );
|
||||
}
|
||||
@ -66,7 +67,7 @@ void IntType::setSign( H5T_sign_t sign ) const
|
||||
herr_t ret_value = H5Tset_sign( id, sign );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("IntType::setSign", "H5Tset_sign failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@ void H5Library::open()
|
||||
herr_t ret_value = H5open();
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw LibraryIException();
|
||||
throw LibraryIException("H5Library::open", "H5open failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ void H5Library::close()
|
||||
herr_t ret_value = H5close();
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw LibraryIException();
|
||||
throw LibraryIException("H5Library::close", "H5close failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ void H5Library::dontAtExit()
|
||||
herr_t ret_value = H5dont_atexit();
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw LibraryIException();
|
||||
throw LibraryIException("H5Library::dontAtExit", "H5dont_atexit failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ void H5Library::getLibVersion( unsigned& majnum, unsigned& minnum, unsigned& rel
|
||||
herr_t ret_value = H5get_libversion( &majnum, &minnum, &relnum );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw LibraryIException();
|
||||
throw LibraryIException("H5Library::getLibVersion", "H5get_libversion failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ void H5Library::checkVersion( unsigned majnum, unsigned minnum, unsigned relnum
|
||||
herr_t ret_value = H5check_version( majnum, minnum, relnum );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw LibraryIException();
|
||||
throw LibraryIException("H5Library::checkVersion", "H5check_version failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ Attribute H5Object::createAttribute( const char* name, const DataType& data_type
|
||||
}
|
||||
else
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("H5Object::createAttribute", "H5Acreate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ Attribute H5Object::openAttribute( const char* name ) const
|
||||
}
|
||||
else
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("H5Object::openAttribute", "H5Aopen_name failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ Attribute H5Object::openAttribute( const unsigned int idx ) const
|
||||
}
|
||||
else
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("H5Object::openAttribute", "H5Aopen_idx failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ int H5Object::iterateAttrs( attr_operator_t user_op, unsigned * idx, void *op_da
|
||||
return( ret_value );
|
||||
else // raise exception when H5Aiterate returns a negative value
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("H5Object::iterateAttrs", "H5Aiterate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,7 +132,8 @@ int H5Object::getNumAttrs() const
|
||||
int num_attrs = H5Aget_num_attrs( id );
|
||||
if( num_attrs < 0 )
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("H5Object::getNumAttrs",
|
||||
"H5Aget_num_attrs failed - returned negative number of attributes");
|
||||
}
|
||||
else
|
||||
return( num_attrs );
|
||||
@ -144,7 +145,7 @@ void H5Object::removeAttr( const char* name ) const
|
||||
herr_t ret_value = H5Adelete( id, name );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw AttributeIException();
|
||||
throw AttributeIException("H5Object::removeAttr", "H5Adelete failed");
|
||||
}
|
||||
}
|
||||
void H5Object::removeAttr( const string& name ) const
|
||||
@ -158,7 +159,7 @@ void H5Object::flush(H5F_scope_t scope ) const
|
||||
herr_t ret_value = H5Fflush( id, scope );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw FileIException();
|
||||
throw FileIException("H5Object::flush", "H5Fflush failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ const PredType PredType::NATIVE_UINT_FAST64( H5T_NATIVE_UINT_FAST64 );
|
||||
// throw an DataTypeIException if invoked.
|
||||
void PredType::commit( H5Object& loc, const char* name )
|
||||
{
|
||||
throw DataTypeIException( "Attempting to commit a predefined datatype. This operation is invalid" );
|
||||
throw DataTypeIException("PredType::commit", "Attempting to commit a predefined datatype. This operation is invalid" );
|
||||
}
|
||||
|
||||
void PredType::commit( H5Object& loc, const string& name )
|
||||
@ -181,7 +181,7 @@ void PredType::commit( H5Object& loc, const string& name )
|
||||
|
||||
bool PredType::committed()
|
||||
{
|
||||
throw DataTypeIException( "Error: Attempting to check for commit status on a predefined datatype." );
|
||||
throw DataTypeIException("PredType::committed", "Error: Attempting to check for commit status on a predefined datatype." );
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ PropList::PropList( H5P_class_t type ) : IdComponent( 0 )
|
||||
id = H5Pcreate(type );
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("PropList constructor", "H5Pcreate failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,7 +46,11 @@ void PropList::copy( const PropList& like_plist )
|
||||
{
|
||||
// reset the identifier of this PropList - send 'this' in so that
|
||||
// H5Pclose can be called appropriately
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw PropListIException("PropList::copy", close_error.getDetailMsg());
|
||||
}
|
||||
|
||||
// call C routine to copy the property list
|
||||
id = H5Pcopy( like_plist.getId() );
|
||||
@ -56,7 +60,7 @@ void PropList::copy( const PropList& like_plist )
|
||||
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("PropList::copy", "H5Pcopy failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +72,7 @@ void PropList::p_close() const
|
||||
herr_t ret_value = H5Pclose( id );
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw PropListIException("PropList::p_close: unable to close the property list. Please report this bug to HDF." );
|
||||
throw PropListIException(NULL, "H5Pclose failed" );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -79,7 +83,8 @@ H5P_class_t PropList::getClass() const
|
||||
H5P_class_t plist_class = H5Pget_class( id );
|
||||
if( plist_class == H5P_NO_CLASS )
|
||||
{
|
||||
throw PropListIException();
|
||||
throw PropListIException("PropList::getClass",
|
||||
"H5Pget_class failed - returned H5P_NO_CLASS");
|
||||
}
|
||||
return( plist_class );
|
||||
}
|
||||
@ -89,7 +94,11 @@ H5P_class_t PropList::getClass() const
|
||||
PropList::~PropList()
|
||||
{
|
||||
// The property list id will be closed properly
|
||||
resetIdComponent( this );
|
||||
try {
|
||||
resetIdComponent( this ); }
|
||||
catch (Exception close_error) { // thrown by p_close
|
||||
throw PropListIException("PropList::~PropList", close_error.getDetailMsg());
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef H5_NO_NAMESPACE
|
||||
|
@ -35,7 +35,7 @@ StrType::StrType( const hid_t existing_id ) : AtomType( existing_id ) {}
|
||||
// Copy constructor: makes copy of the original StrType object
|
||||
StrType::StrType( const StrType& original ) : AtomType ( original ) {}
|
||||
|
||||
// Gets the string datatype of the specified dataset - will reimplement
|
||||
// Gets the string datatype of the specified dataset - will reimplement - BMR
|
||||
StrType::StrType( const DataSet& dataset ) : AtomType ()
|
||||
{
|
||||
// Calls C function H5Dget_type to get the id of the datatype
|
||||
@ -43,7 +43,7 @@ StrType::StrType( const DataSet& dataset ) : AtomType ()
|
||||
|
||||
if( id <= 0 )
|
||||
{
|
||||
throw DataSetIException();
|
||||
throw DataSetIException("StrType constructor", "H5Dget_type failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ H5T_cset_t StrType::getCset() const
|
||||
// Returns a valid character set type if successful
|
||||
if( cset == H5T_CSET_ERROR )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("StrType::getCset", "H5Tget_cset failed");
|
||||
}
|
||||
return( cset );
|
||||
}
|
||||
@ -67,7 +67,7 @@ void StrType::setCset( H5T_cset_t cset ) const
|
||||
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("StrType::setCset", "H5Tset_cset failed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,7 +79,8 @@ H5T_str_t StrType::getStrpad() const
|
||||
// Returns a valid string padding type if successful
|
||||
if( strpad == H5T_STR_ERROR )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("StrType::getStrpad",
|
||||
"H5Tget_strpad failed - returned H5T_STR_ERROR");
|
||||
}
|
||||
return( strpad );
|
||||
}
|
||||
@ -91,7 +92,7 @@ void StrType::setStrpad( H5T_str_t strpad ) const
|
||||
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
throw DataTypeIException();
|
||||
throw DataTypeIException("StrType::setStrpad", "H5Tset_strpad failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user