-// gdcm.h
-
-// gdcmlib Intro:
-// * gdcmlib is a library dedicated to reading and writing dicom files.
-// * LGPL for the license
-// * lightweigth as opposed to CTN or DCMTK which come bundled which try
-// to implement the full DICOM standard (networking...). gdcmlib concentrates
-// on reading and writing
-// * Formats: this lib should be able to read ACR-NEMA v1 and v2, Dicom v3 (as
-// stated in part10). [cf dcmtk/dcmdata/docs/datadict.txt]
-// * Targeted plateforms: Un*xes and Win32/VC++6.0
-//
-//
-
-#ifndef GDCM_EXCEPTION_H
-#define GDCM_EXCEPTION_H
+/*=========================================================================
+
+ Program: gdcm
+ Module: $RCSfile: gdcmException.h,v $
+ Language: C++
+ Date: $Date: 2007/08/22 16:14:04 $
+ Version: $Revision: 1.25 $
+
+ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+ l'Image). All rights reserved. See Doc/License.txt or
+ http://www.creatis.insa-lyon.fr/Public/Gdcm/License.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 notices for more information.
+
+=========================================================================*/
+
+#ifndef _GDCM_EXCEPTION_H_
+#define _GDCM_EXCEPTION_H_
+
+#include "gdcmCommon.h"
#include <string>
#include <iostream>
#include <exception>
-using namespace std;
-#ifdef _MSC_VER
-#define GDCM_EXPORT __declspec( dllexport )
-#else
-#define GDCM_EXPORT
-#endif
+namespace GDCM_NAME_SPACE
+{
+//-----------------------------------------------------------------------------
/**
- * Any exception thrown in the gdcm library
+ * \brief Any exception thrown in the gdcm library
*/
-class GDCM_EXPORT gdcmException : public exception {
- protected:
- /// error message
- string from;
- /// error message
- string error;
-
- public:
- /**
- * Builds an exception with minimal information: name of the thrower
- * method and error message
- *
- * @param from name of the thrower
- * @param error error description string
- */
- explicit gdcmException(const string &from, const string &error = "")
- throw();
-
-
- /**
- * virtual destructor makes this class dynamic
- */
- virtual ~gdcmException() {
- }
-
- /// returns error message
- const string &getError(void) const throw() {
- return error;
- }
-
- /// returns exception name string
- operator const char *() const throw();
-
- /// returns exception name string (overloads std::exception::what)
- virtual const char *what() const throw() {
- return (const char *) *this;
- }
-
-
- /// exception caught within exception class: print error message and die
- static void fatal(const char *from) throw();
-
- /// try to discover this (dynamic) class name
- virtual string getName() const throw();
-
- friend ostream& operator<<(ostream &os, const gdcmException &e);
-
+class GDCM_EXPORT Exception : public std::exception
+{
+public:
+ /*
+ * \brief Builds an exception with minimal information: name of the thrower
+ * method and error message
+ * @param from name of the thrower
+ * @param error error description string
+ */
+ explicit Exception(const std::string &from, const std::string &error = "")
+ throw();
+
+ /**
+ * \brief virtual destructor makes this class dynamic
+ */
+ virtual ~Exception() throw() {}
+
+ /// exception caught within exception class: print error message and die
+ static void fatal(const char *from) throw();
+
+ /// returns error message
+ const std::string &getError() const throw() { return Error;}
+
+ /// try to discover this (dynamic) class name
+ virtual std::string getName() const throw();
+
+ /// returns exception name string (overloads std::exception::what)
+ virtual const char *what() const throw() { return (const char *) *this;}
+
+ /// returns exception name string
+ operator const char *() const throw();
+
+ friend std::ostream &operator<<(std::ostream &os, const Exception &e);
+
+protected:
+ /// error message part 1
+ std::string From;
+ /// error message part 2
+ std::string Error;
};
-/** prints exception stack on output stream
- * @param os output stream
- * @param e exception to print
- * @returns output stream os
+//-----------------------------------------------------------------------------
+/**
+ * \brief File error exception thrown in the gdcm library
*/
-ostream& operator<<(ostream &os, const gdcmException &e);
+class GDCM_EXPORT FileError : public Exception
+{
+public:
+ /**
+ * \brief Builds an file-related exception with minimal information: name of
+ * the thrower method and error message
+ * @param from name of the thrower
+ * @param error error description string
+ */
+ explicit FileError(const std::string &from,
+ const std::string &error = "File error")
+ throw() : Exception(from, error) { }
+};
+//-----------------------------------------------------------------------------
/**
- * File error exception thrown in the gdcm library
+ * \brief Unexpected file format exception
*/
-class GDCM_EXPORT gdcmFileError : public gdcmException {
- public:
- /**
- * Builds an file-related exception with minimal information: name of
- * the thrower method and error message
- *
- * @param from name of the thrower
- * @param error error description string
- */
- explicit gdcmFileError(const string &from,
- const string &error = "File error")
- throw() : gdcmException(from, error) {
- }
+class GDCM_EXPORT FormatUnexpected : public Exception
+{
+public:
+ /// \brief Builds a file-related exception with minimal information:
+ /// name of the thrower method and error message
+ /// @param from name of the thrower
+ /// @param error error description string
+ explicit FormatUnexpected(const std::string &from,
+ const std::string &error = "Unexpected file format")
+ throw() : Exception( from, error ) { }
};
-
-
-
+//-----------------------------------------------------------------------------
/**
- * Invalid file format exception
+ * \brief Invalid file format exception
*/
-class GDCM_EXPORT gdcmFormatError : public gdcmException {
- public:
- /**
- * Builds an file-related exception with minimal information: name of
- * the thrower method and error message
- *
- * @param from name of the thrower
- * @param error error description string
- */
- explicit gdcmFormatError(const string &from,
- const string &error = "Invalid file format error")
- throw() : gdcmException(from, error) {
- }
+class GDCM_EXPORT FormatError : public FormatUnexpected
+{
+public:
+ /// \brief Builds a file-related exception with minimal information:
+ /// name of the thrower method and error message
+ /// @param from name of the thrower
+ /// @param error error description string
+ explicit FormatError(const std::string &from,
+ const std::string &error = "Invalid file format")
+ throw() : FormatUnexpected( from, error ) { }
};
+//-----------------------------------------------------------------------------
+/* prints exception stack on output stream
+ * @param os output stream
+ * @param e exception to print
+ * @returns output stream os
+ */
+std::ostream& operator<<(std::ostream &os, const Exception &e);
+
+} // end namespace gdcm
+//-----------------------------------------------------------------------------
#endif // GDCM_EXCEPTION_H