Program: gdcm
Module: $RCSfile: gdcmException.cxx,v $
Language: C++
- Date: $Date: 2004/09/27 08:39:07 $
- Version: $Revision: 1.18 $
+ Date: $Date: 2007/05/23 14:18:10 $
+ Version: $Revision: 1.29 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmException.h"
#include <typeinfo>
-#include <stdio.h>
+#include <stdlib.h> // for exit
+namespace GDCM_NAME_SPACE
+{
//-----------------------------------------------------------------------------
-// gdcmException
-
+// Exception
/**
- * \ingroup gdcmException
* \brief constructor
- * @param f
- * @param msg
+ * @param f f
+ * @param msg msg
*/
-gdcmException::gdcmException(const std::string &f, const std::string& msg) throw()
+Exception::Exception(const std::string &f, const std::string &msg) throw()
#ifdef __GNUC__
- try
+ try
#endif
- : From(f), Error(msg) {
- }
+ : From(f), Error(msg)
+ {
+ }
#ifdef __GNUC__
-catch(...) {
- fatal("gdcmException::gdcmException(const std::string&, const std::string&, const std::string&)");
-}
+ catch(...)
+ {
+ fatal("Exception::Exception(const std::string&, const std::string&, const std::string&)");
+ }
#endif
-
/**
- * \ingroup gdcmException
* \brief fatal
- * @param from
+ * @param from from
*/
-void gdcmException::fatal(const char *from) throw() {
+void Exception::fatal(const char *from) throw()
+{
try
{
std::cerr << "Fatal: exception received in " << from
}
/**
- * \ingroup gdcmException
* \brief getName
* @return string
*/
-std::string gdcmException::getName() const throw()
+std::string Exception::getName() const throw()
{
try
{
-#ifdef __GNUC__ // GNU C++ compiler class name demangling
- unsigned int nested = 1, i, nb, offset;
+#if defined(__GNUC__) && 0 // GNU C++ compiler class name demangling
+ unsigned int nested = 1, i, nb;
+ int offset;
std::string one;
std::string name;
std::string iname = typeid(*this).name();
- if(iname[0] == 'Q')
+ if ( iname[0] == 'Q' )
{
nested = iname[1] - '0';
iname = std::string(iname, 2, std::string::npos);
::sscanf(iname.c_str(), "%u%n", &nb, &offset);
iname = std::string(iname, offset, std::string::npos);
name += std::string(iname, 0, nb);
- if(i + 1 < nested) name += "::";
- iname = std::string(iname, nb, std::string::npos);
+ if ( i + 1 < nested) name += "::";
+ iname = std::string(iname, nb, std::string::npos );
}
return name;
#else // no class name demangling
- //name = typeid(*this).name();
- return "Exception";
+ std::string name = typeid(*this).name();
+ return name;
#endif
- }
- catch(...) {
- fatal("Exception::getName(std::string &)");
- return "";
- }
+ }
+ catch(...)
+ {
+ fatal("Exception::getName(std::string &)");
+ return "";
+ }
}
/**
- * \ingroup gdcmException
- * \brief gdcmException
+ * \brief Exception
*/
- gdcmException::operator const char *() const throw() {
- return getName().c_str();
+Exception::operator const char *() const throw()
+{
+ return getName().c_str();
}
//-----------------------------------------------------------------------------
/**
- * \ingroup gdcmException
- * \brief gdcmException::operator <<
+ * \brief Exception::operator <<
+ * @param os ostream to write to
+ * @param e exception to raise
*/
- std::ostream& operator<<(std::ostream &os, const gdcmException &e) {
- try {
- os << "Exception " << e.getName() << " thrown: " << e.getError() << std::endl;
- }
- catch(...) {
- gdcmException::fatal("operator<<(std::ostream &, const gdcmException&)");
- }
- return os;
+std::ostream& operator<<(std::ostream &os, const Exception &e)
+{
+ try
+ {
+ os << "Exception " << e.getName() << " thrown: " << e.getError() << std::endl;
+ }
+ catch(...)
+ {
+ Exception::fatal("operator<<(std::ostream &, const Exception&)");
+ }
+ return os;
}
+} // end namespace gdcm
//-----------------------------------------------------------------------------