mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-14 15:48:21 +02:00
Ensures that all files that Git considers to be text will have normalized (LF) line endings in the repository. When core.eol is set to native (which is the default), Git will convert the line endings of normalized files in your working directory back to your platform's native line ending. See also https://git-scm.com/docs/gitattributes
109 lines
3.0 KiB
C++
109 lines
3.0 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 occure 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
|
|
|