 165b814f5d
			
		
	
	
		165b814f5d
		
	
	
	
	
		
			
			this is necessary in order to get Furnace to build using CMake 4.0. you should do: git submodule deinit extern/portaudio
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef INCLUDED_PORTAUDIO_EXCEPTION_HXX
 | |
| #define INCLUDED_PORTAUDIO_EXCEPTION_HXX
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| #include <exception>
 | |
| 
 | |
| #include "portaudio.h"
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| namespace portaudio
 | |
| {
 | |
| 
 | |
|     //////
 | |
|     /// @brief Base class for all exceptions PortAudioCpp can throw.
 | |
|     ///
 | |
|     /// Class is derived from std::exception.
 | |
|     //////
 | |
|     class Exception : public std::exception
 | |
|     {
 | |
|     public:
 | |
|         virtual ~Exception() throw() {}
 | |
| 
 | |
|         virtual const char *what() const throw() = 0;
 | |
|     };
 | |
| 
 | |
|     // -----------------------------------------------------------------------------------
 | |
| 
 | |
|     //////
 | |
|     /// @brief Wrapper for PortAudio error codes to C++ exceptions.
 | |
|     ///
 | |
|     /// It wraps up PortAudio's error handling mechanism using
 | |
|     /// C++ exceptions and is derived from std::exception for
 | |
|     /// easy exception handling and to ease integration with
 | |
|     /// other code.
 | |
|     ///
 | |
|     /// To know what exceptions each function may throw, look up
 | |
|     /// the errors that can occur in the PortAudio documentation
 | |
|     /// for the equivalent functions.
 | |
|     ///
 | |
|     /// Some functions are likely to throw an exception (such as
 | |
|     /// Stream::open(), etc) and these should always be called in
 | |
|     /// try{} catch{} blocks and the thrown exceptions should be
 | |
|     /// handled properly (ie. the application shouldn't just abort,
 | |
|     /// but merely display a warning dialog to the user or something).
 | |
|     /// However nearly all functions in PortAudioCpp are capable
 | |
|     /// of throwing exceptions. When a function like Stream::isStopped()
 | |
|     /// throws an exception, it's such an exceptional state that it's
 | |
|     /// not likely that it can be recovered. PaExceptions such as these
 | |
|     /// can ``safely'' be left to be handled by some outer catch-all-like
 | |
|     /// mechanism for unrecoverable errors.
 | |
|     //////
 | |
|     class PaException : public Exception
 | |
|     {
 | |
|     public:
 | |
|         explicit PaException(PaError error);
 | |
| 
 | |
|         const char *what() const throw();
 | |
| 
 | |
|         PaError paError() const;
 | |
|         const char *paErrorText() const;
 | |
| 
 | |
|         bool isHostApiError() const; // extended
 | |
|         long lastHostApiError() const;
 | |
|         const char *lastHostApiErrorText() const;
 | |
| 
 | |
|         bool operator==(const PaException &rhs) const;
 | |
|         bool operator!=(const PaException &rhs) const;
 | |
| 
 | |
|     private:
 | |
|         PaError error_;
 | |
|     };
 | |
| 
 | |
|     // -----------------------------------------------------------------------------------
 | |
| 
 | |
|     //////
 | |
|     /// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an
 | |
|     /// equivalent PortAudio error code).
 | |
|     //////
 | |
|     class PaCppException : public Exception
 | |
|     {
 | |
|     public:
 | |
|         enum ExceptionSpecifier
 | |
|         {
 | |
|             UNABLE_TO_ADAPT_DEVICE
 | |
|         };
 | |
| 
 | |
|         PaCppException(ExceptionSpecifier specifier);
 | |
| 
 | |
|         const char *what() const throw();
 | |
| 
 | |
|         ExceptionSpecifier specifier() const;
 | |
| 
 | |
|         bool operator==(const PaCppException &rhs) const;
 | |
|         bool operator!=(const PaCppException &rhs) const;
 | |
| 
 | |
|     private:
 | |
|         ExceptionSpecifier specifier_;
 | |
|     };
 | |
| 
 | |
| 
 | |
| } // namespace portaudio
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| #endif // INCLUDED_PORTAUDIO_EXCEPTION_HXX
 |