Logo Search packages:      
Sourcecode: gdcm version File versions  Download package



  Program: GDCM (Grassroots DICOM). A DICOM library
  Module:  $URL$

  Copyright (c) 2006-2010 Mathieu Malaterre
  All rights reserved.
  See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.


#include <cassert>
#include <cstdlib> // NULL
#include <exception>
#include <sstream> // ostringstream
#include <stdexcept> // logic_error
#include <string>

namespace gdcm

 * \brief Exception
 * \details Standard exception handling object.
 * \note Its copy-constructor and assignment operator are generated by the
 * compiler.
00034 class Exception : public std::exception
  /// std::logic_error is used to internally hold a string.
  /// It has the nice property of having a copy-constructor
  /// that never fails. Thereby it provides the same guarantee to
  /// the copy-constructor of gdcm::Exception.
00040   typedef std::logic_error StringHolder;

  /// Creates the text to be returned by Exception:what().
00043   static StringHolder CreateWhat(const char* const desc,
                                 const char* const file,
                                 const unsigned int lineNumber,
                                 const char* const func)
    assert(desc != NULL);
    assert(file != NULL);
    assert(func != NULL);
    std::ostringstream oswhat;
    oswhat << file << ":" << lineNumber << " (" << func << "):\n";
    oswhat << desc;
    return StringHolder( oswhat.str() );

  /// Explicit constructor, initializing the description and the
  /// text returned by what().
  /// \note The last parameter is ignored for the time being.
  /// It may be used to specify the function where the exception
  /// was thrown.
00063   explicit Exception(const char *desc = "None",
            const char *file = __FILE__,
            unsigned int lineNumber = __LINE__,
            // FIXME:  __PRETTY_FUNCTION__ is the non-mangled version for __GNUC__ compiler
            const char *func = "" /*__FUNCTION__*/)
  What( CreateWhat(desc, file, lineNumber, func) ),

  virtual ~Exception() throw() {}

  /// what implementation
00077   const char* what() const throw()
    return What.what();

  /// Return the Description
00083   const char * GetDescription() const { return Description.what(); }

  StringHolder  What;
  StringHolder  Description;

} // end namespace gdcm


Generated by  Doxygen 1.6.0   Back to index