122 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			122 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #include "portaudiocpp/Exception.hxx"
 | ||
|  | 
 | ||
|  | namespace portaudio | ||
|  | { | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  |     // PaException:
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     ///  Wraps a PortAudio error into a PortAudioCpp PaException.
 | ||
|  |     //////
 | ||
|  |     PaException::PaException(PaError error) : error_(error) | ||
|  |     { | ||
|  |     } | ||
|  | 
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// Alias for paErrorText(), to have std::exception compliance.
 | ||
|  |     //////
 | ||
|  |     const char *PaException::what() const throw() | ||
|  |     { | ||
|  |         return paErrorText(); | ||
|  |     } | ||
|  | 
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// Returns the PortAudio error code (PaError).
 | ||
|  |     //////
 | ||
|  |     PaError PaException::paError() const | ||
|  |     { | ||
|  |         return error_; | ||
|  |     } | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// Returns the error as a (zero-terminated) text string.
 | ||
|  |     //////
 | ||
|  |     const char *PaException::paErrorText() const | ||
|  |     { | ||
|  |         return Pa_GetErrorText(error_); | ||
|  |     } | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// Returns true is the error is a HostApi error.
 | ||
|  |     //////
 | ||
|  |     bool PaException::isHostApiError() const | ||
|  |     { | ||
|  |         return (error_ == paUnanticipatedHostError); | ||
|  |     } | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// Returns the last HostApi error (which is the current one if
 | ||
|  |     /// isHostApiError() returns true) as an error code.
 | ||
|  |     //////
 | ||
|  |     long PaException::lastHostApiError() const | ||
|  |     { | ||
|  |         return Pa_GetLastHostErrorInfo()->errorCode; | ||
|  |     } | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// Returns the last HostApi error (which is the current one if
 | ||
|  |     /// isHostApiError() returns true) as a (zero-terminated) text
 | ||
|  |     /// string, if it's available.
 | ||
|  |     //////
 | ||
|  |     const char *PaException::lastHostApiErrorText() const | ||
|  |     { | ||
|  |         return Pa_GetLastHostErrorInfo()->errorText; | ||
|  |     } | ||
|  | 
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  |     bool PaException::operator==(const PaException &rhs) const | ||
|  |     { | ||
|  |         return (error_ == rhs.error_); | ||
|  |     } | ||
|  | 
 | ||
|  |     bool PaException::operator!=(const PaException &rhs) const | ||
|  |     { | ||
|  |         return !(*this == rhs); | ||
|  |     } | ||
|  | 
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  |     // PaCppException:
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  |     PaCppException::PaCppException(ExceptionSpecifier specifier) : specifier_(specifier) | ||
|  |     { | ||
|  |     } | ||
|  | 
 | ||
|  |     const char *PaCppException::what() const throw() | ||
|  |     { | ||
|  |         switch (specifier_) | ||
|  |         { | ||
|  |             case UNABLE_TO_ADAPT_DEVICE: | ||
|  |             { | ||
|  |                 return "Unable to adapt the given device to the specified host api specific device extension"; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         return "Unknown exception"; | ||
|  |     } | ||
|  | 
 | ||
|  |     PaCppException::ExceptionSpecifier PaCppException::specifier() const | ||
|  |     { | ||
|  |         return specifier_; | ||
|  |     } | ||
|  | 
 | ||
|  |     bool PaCppException::operator==(const PaCppException &rhs) const | ||
|  |     { | ||
|  |         return (specifier_ == rhs.specifier_); | ||
|  |     } | ||
|  | 
 | ||
|  |     bool PaCppException::operator!=(const PaCppException &rhs) const | ||
|  |     { | ||
|  |         return !(*this == rhs); | ||
|  |     } | ||
|  | 
 | ||
|  |     // -----------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | } // namespace portaudio
 |