WSJT-X/portaudio-v19/bindings/cpp/source/portaudiocpp/Exception.cxx
Diane Bruce 39f88b793d - Add missing bits of portaudio
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@249 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2006-08-09 20:08:01 +00:00

124 lines
3.0 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