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
 |