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
							 |