Blame src/cppunit/Exception.cpp

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