summaryrefslogtreecommitdiffstats
path: root/c++/src/H5Exception.C
diff options
context:
space:
mode:
Diffstat (limited to 'c++/src/H5Exception.C')
-rw-r--r--c++/src/H5Exception.C188
1 files changed, 188 insertions, 0 deletions
diff --git a/c++/src/H5Exception.C b/c++/src/H5Exception.C
new file mode 100644
index 0000000..6302fe5
--- /dev/null
+++ b/c++/src/H5Exception.C
@@ -0,0 +1,188 @@
+#ifdef OLD_HEADER_FILENAME
+#include <iostream.h>
+#else
+#include <iostream>
+#endif
+
+#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("") {}
+
+Exception::Exception( const char* message) : detailMessage(static_cast<string>(message)) {}
+
+Exception::Exception( const string& message ) : detailMessage( message ) {}
+
+// copy constructor
+Exception::Exception( const Exception& orig )
+{
+ detailMessage = orig.detailMessage;
+}
+
+// Returns the character string that describes an error specified by
+// a major error number.
+string Exception::getMajorString( H5E_major_t major_num ) const
+{
+ // calls the C API routine to get the major string - Note: in the
+ // failure case, the string "Invalid major error number" will be returned.
+ string major_str( H5Eget_major( major_num ));
+ return( major_str );
+}
+
+// Returns the character string that describes an error specified by
+// a minor error number.
+string Exception::getMinorString( H5E_minor_t minor_num ) const
+{
+ // calls the C API routine to get the minor string - Note: in the
+ // failure case, the string "Invalid minor error number" will be returned.
+ string minor_str( H5Eget_minor( minor_num ));
+ return( minor_str );
+}
+
+// Turns on the automatic error printing.
+void Exception::setAutoPrint( H5E_auto_t func, void* client_data ) const
+{
+ // calls the C API routine H5Eset_auto to set the auto printing to
+ // the specified function.
+ herr_t ret_value = H5Eset_auto( func, client_data );
+ if( ret_value < 0 )
+ throw Exception( "setAutoPrint: H5Eset_auto fails" );
+}
+
+// Turns off the automatic error printing.
+void Exception::dontPrint()
+{
+ // calls the C API routine H5Eset_auto with NULL parameters to turn
+ // off the automatic error printing.
+ herr_t ret_value = H5Eset_auto( NULL, NULL );
+ if( ret_value < 0 )
+ throw Exception( "dontPrint: H5Eset_auto fails" );
+}
+
+// Retrieves the current settings for the automatic error stack traversal
+// function and its data.
+void Exception::getAutoPrint( H5E_auto_t& func, void** client_data ) const
+{
+ // calls the C API routine H5Eget_auto to get the current setting of
+ // the automatic error printing
+ herr_t ret_value = H5Eget_auto( &func, client_data );
+ if( ret_value < 0 )
+ throw Exception( "getAutoPrint: H5Eget_auto fails" );
+}
+
+// Clears the error stack for the current thread.
+void Exception::clearErrorStack() const
+{
+ // calls the C API routine H5Eclear to clear the error stack
+ herr_t ret_value = H5Eclear();
+ if( ret_value < 0 )
+ throw Exception( "clearErrorStack: H5Eclear fails" );
+}
+
+// Walks the error stack for the current thread, calling the specified function.
+void Exception::walkErrorStack( H5E_direction_t direction, H5E_walk_t func, void* client_data ) const
+{
+ // 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( "walkErrorStack: H5Ewalk fails" );
+}
+
+// Default error stack traversal callback function that prints error
+// messages to the specified output stream.
+void Exception::walkDefErrorStack( int n, H5E_error_t& err_desc, void* client_data ) const
+{
+ // 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( "walkDefErrorStack: H5Ewalk_cb fails" );
+}
+
+// Returns the detailed message set at the time the exception is thrown
+string Exception::getDetailMesg() const
+{
+ return( detailMessage );
+}
+
+// Prints the error stack in a default manner.
+void Exception::printError( FILE* stream ) const
+{
+ herr_t ret_value = H5Eprint( NULL ); // print to stderr
+ if( ret_value < 0 )
+ throw Exception( "printError: H5Eprint fails" );
+}
+
+FileIException::FileIException():Exception(){};
+FileIException::FileIException( string message ):
+Exception( message ){};
+
+GroupIException::GroupIException():Exception(){};
+GroupIException::GroupIException( string message ):
+Exception( message ){};
+
+ObjectHeaderException::ObjectHeaderException():Exception(){};
+ObjectHeaderException::ObjectHeaderException( string message ): Exception( message ) {};
+
+DataSpaceIException::DataSpaceIException():Exception(){};
+DataSpaceIException::DataSpaceIException( string message ): Exception( message ) {};
+
+DataTypeIException::DataTypeIException():Exception(){};
+DataTypeIException::DataTypeIException( string message ): Exception( message ) {};
+
+PropListIException::PropListIException():Exception(){};
+PropListIException::PropListIException( string message ): Exception( message ) {};
+
+DataSetIException::DataSetIException():Exception(){};
+DataSetIException::DataSetIException( string message ): Exception( message ) {};
+
+AttributeIException::AttributeIException():Exception(){};
+AttributeIException::AttributeIException( string message ): Exception( message ) {};
+
+FunctionArgumentException::FunctionArgumentException():Exception(){};
+FunctionArgumentException::FunctionArgumentException( string message ): Exception( message ) {};
+
+ReferenceException::ReferenceException():Exception(){};
+ReferenceException::ReferenceException( string message ):
+Exception( message ) {};
+
+DataStorageException::DataStorageException():Exception(){};
+DataStorageException::DataStorageException( string message ):
+Exception( message ) {};
+
+LibraryIException::LibraryIException():Exception(){};
+LibraryIException::LibraryIException( string message ):
+Exception( message ) {};
+
+IdComponentException::IdComponentException(): Exception() {};
+IdComponentException::IdComponentException( string message ): Exception( message ) {};
+
+// The following are from Java API but not done here:
+// AtomException, BtreeException, DataFiltersException,
+// ExternalFileListException, FunctionEntryExitException,
+// HeapException, InternalErrorException, LowLevelIOException,
+// MetaDataCacheException, ResourceUnavailableException,
+// SymbolTableException
+
+File_GroupException::File_GroupException()
+{
+ // for now, do nothing
+}
+
+File_GroupException::File_GroupException( string message )
+{
+ // for now, do nothing
+}
+
+
+#ifndef H5_NO_NAMESPACE
+} // end namespace
+#endif