|
Packit |
8c9aa0 |
#include <cppunit/Exception.h>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_BEGIN
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
|
|
Packit |
8c9aa0 |
/*!
|
|
Packit |
8c9aa0 |
* \deprecated Use SourceLine::isValid() instead.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
const std::string Exception::UNKNOWNFILENAME = "<unknown>";
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*!
|
|
Packit |
8c9aa0 |
* \deprecated Use SourceLine::isValid() instead.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
const long Exception::UNKNOWNLINENUMBER = -1;
|
|
Packit |
8c9aa0 |
#endif
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
Exception::Exception( const Exception &other )
|
|
Packit |
8c9aa0 |
: std::exception( other )
|
|
Packit |
8c9aa0 |
, m_message(other.m_message)
|
|
Packit |
8c9aa0 |
, m_sourceLine(other.m_sourceLine)
|
|
Packit |
8c9aa0 |
, m_whatMessage(other.m_whatMessage)
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
Exception::Exception( const Message &message,
|
|
Packit |
8c9aa0 |
const SourceLine &sourceLine )
|
|
Packit |
8c9aa0 |
: m_message( message )
|
|
Packit |
8c9aa0 |
, m_sourceLine( sourceLine )
|
|
Packit |
8c9aa0 |
, m_whatMessage()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
|
|
Packit |
8c9aa0 |
Exception::Exception( std::string message,
|
|
Packit |
8c9aa0 |
long lineNumber,
|
|
Packit |
8c9aa0 |
std::string fileName )
|
|
Packit |
8c9aa0 |
: m_message( message )
|
|
Packit |
8c9aa0 |
, m_sourceLine( fileName, lineNumber )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
#endif
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
Exception::~Exception() throw()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
Exception &
|
|
Packit |
8c9aa0 |
Exception::operator =( const Exception& other )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
// Don't call superclass operator =(). VC++ STL implementation
|
|
Packit |
8c9aa0 |
// has a bug. It calls the destructor and copy constructor of
|
|
Packit |
8c9aa0 |
// std::exception() which reset the virtual table to std::exception.
|
|
Packit |
8c9aa0 |
// SuperClass::operator =(other);
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
if ( &other != this )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_message = other.m_message;
|
|
Packit |
8c9aa0 |
m_sourceLine = other.m_sourceLine;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
return *this;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
const char*
|
|
Packit |
8c9aa0 |
Exception::what() const throw()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
Exception *mutableThis = CPPUNIT_CONST_CAST( Exception *, this );
|
|
Packit |
8c9aa0 |
mutableThis->m_whatMessage = m_message.shortDescription() + "\n" +
|
|
Packit |
8c9aa0 |
m_message.details();
|
|
Packit |
8c9aa0 |
return m_whatMessage.c_str();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
SourceLine
|
|
Packit |
8c9aa0 |
Exception::sourceLine() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_sourceLine;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
Message
|
|
Packit |
8c9aa0 |
Exception::message() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_message;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
Exception::setMessage( const Message &message )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_message = message;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
|
|
Packit |
8c9aa0 |
long
|
|
Packit |
8c9aa0 |
Exception::lineNumber() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_sourceLine.isValid() ? m_sourceLine.lineNumber() :
|
|
Packit |
8c9aa0 |
UNKNOWNLINENUMBER;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string
|
|
Packit |
8c9aa0 |
Exception::fileName() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_sourceLine.isValid() ? m_sourceLine.fileName() :
|
|
Packit |
8c9aa0 |
UNKNOWNFILENAME;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
#endif
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
Exception *
|
|
Packit |
8c9aa0 |
Exception::clone() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return new Exception( *this );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_END
|