Index: trunk/SophyaLib/BaseTools/pexceptions.h
===================================================================
--- trunk/SophyaLib/BaseTools/pexceptions.h	(revision 2505)
+++ trunk/SophyaLib/BaseTools/pexceptions.h	(revision 3585)
@@ -10,6 +10,8 @@
 // Petit utilitaire pour accoler numero de ligne et nom de fichier aux messages
 // d'exception
+//! Utiliy macro to append file name and line number to a const char* string  
 #define PExcLongMessage(a) BuildLongExceptionMessage(a,__FILE__,__LINE__)
 
+#define SEXC_MAXMSGLEN 160
 namespace SOPHYA {
 
@@ -17,26 +19,19 @@
   string BuildLongExceptionMessage(const char * s, const char *file, int line);
 
-/*! \ingroup BaseTools
-    \brief Base exception class in Sophya
-
-    Ancestor for PError and PException
-    It has a message, and an id to give more
-    information on the exception.
-*/
-  class PThrowable {
+  class PThrowable : public std::exception {
   public:
     //! Constructor with the message and error-id (optional) specification
-    explicit PThrowable(const string& m, int ident=0) 
-      : msg(m), id(ident) {}
-    explicit PThrowable(const char* m, int ident=0) 
-      : msg(m), id(ident) {}
-    virtual ~PThrowable() { }
+    explicit PThrowable(const string& m, int ident=0) throw() ; 
+    explicit PThrowable(const char* m, int ident=0) throw() ; 
+    virtual ~PThrowable() throw();
+    //! Implementation of std::exception what() method, returning the exception message
+    virtual const char* what() const throw();
     //! Returns the associated message string
-    virtual string const& Msg() const  {return msg;}
+    virtual string const Msg() const; 
     //! Returns the associated error-id
-    virtual int Id() const {return id; }
+    virtual int Id() const;
   private:
-    string msg;
-    int    id;
+    char msg_[SEXC_MAXMSGLEN];
+    int    id_;
   };
 
@@ -49,6 +44,6 @@
   class PError : public PThrowable {
   public:
-    explicit PError(const string& m, int id=0) : PThrowable(m,id) {}
-    explicit PError(const char* m, int id=0) : PThrowable(m,id) {}
+    explicit PError(const string& m, int id=0) throw() : PThrowable(m,id) {}
+    explicit PError(const char* m, int id=0) throw() : PThrowable(m,id) {}
   };
   
@@ -57,5 +52,6 @@
   class PException : public PThrowable {
   public:
-    explicit PException(const string& m, int id=0) : PThrowable(m,id) {}
+    explicit PException(const string& m, int id=0) throw() : PThrowable(m,id) {}
+    explicit PException(const char* m, int id=0) throw() : PThrowable(m,id) {}
   };
   
@@ -71,6 +67,6 @@
   class AllocationError : public PError {
   public:
-    explicit AllocationError(const string& m, int id=0) : PError(m,id) {}
-    explicit AllocationError(const char* m, int id=0) : PError(m,id) {}
+    explicit AllocationError(const string& m, int id=0) throw() : PError(m,id) {}
+    explicit AllocationError(const char* m, int id=0) throw() : PError(m,id) {}
   };
   
@@ -79,6 +75,6 @@
   class NullPtrError : public PError {
   public:
-    explicit NullPtrError(const string& m, int id=0) : PError(m,id) {}
-    explicit NullPtrError(const char* m, int id=0) : PError(m,id) {}
+    explicit NullPtrError(const string& m, int id=0) throw() : PError(m,id) {}
+    explicit NullPtrError(const char* m, int id=0) throw() : PError(m,id) {}
   };
   
@@ -88,6 +84,6 @@
   class ForbiddenError : public PError {
   public:
-    explicit ForbiddenError(const string& m, int id=0) : PError(m,id) {}
-    explicit ForbiddenError(const char* m, int id=0) : PError(m,id) {}
+    explicit ForbiddenError(const string& m, int id=0) throw() : PError(m,id) {}
+    explicit ForbiddenError(const char* m, int id=0) throw() : PError(m,id) {}
   };
 
@@ -97,6 +93,6 @@
   class AssertionFailedError : public PError {
   public:
-    explicit AssertionFailedError(const string& m, int id=0) : PError(m,id) {}
-    explicit AssertionFailedError(const char* m, int id=0) : PError(m,id) {}
+    explicit AssertionFailedError(const string& m, int id=0) throw() : PError(m,id) {}
+    explicit AssertionFailedError(const char* m, int id=0) throw() : PError(m,id) {}
   };
   
@@ -120,6 +116,6 @@
   class IOExc : public PException {
   public:
-    explicit IOExc(const string& m, int id=0) : PException(m,id) {}
-    explicit IOExc(const char* m, int id=0) : PException(m,id) {}
+    explicit IOExc(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit IOExc(const char* m, int id=0) throw() : PException(m,id) {}
   };
 
@@ -128,6 +124,6 @@
   class FileFormatExc : public IOExc {
   public:
-    explicit FileFormatExc(const string& m, int id=0) : IOExc(m,id) {}
-    explicit FileFormatExc(const char* m, int id=0) : IOExc(m,id) {}
+    explicit FileFormatExc(const string& m, int id=0) throw() : IOExc(m,id) {}
+    explicit FileFormatExc(const char* m, int id=0) throw() : IOExc(m,id) {}
   };
 
@@ -136,6 +132,6 @@
   class SzMismatchError : public PException {
   public:
-    explicit SzMismatchError(const string& m, int id=0) : PException(m,id) {}
-    explicit SzMismatchError(const char* m, int id=0) : PException(m,id) {}
+    explicit SzMismatchError(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit SzMismatchError(const char* m, int id=0) throw() : PException(m,id) {}
   };
   
@@ -144,6 +140,6 @@
   class RangeCheckError : public PException {
   public:
-    explicit RangeCheckError(const string& m, int id=0) : PException(m,id) {}
-    explicit RangeCheckError(const char* m, int id=0) : PException(m,id) {}
+    explicit RangeCheckError(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit RangeCheckError(const char* m, int id=0) throw() : PException(m,id) {}
   };
   
@@ -152,6 +148,6 @@
   class ParmError : public PException {
   public:
-    explicit ParmError(const string& m, int id=0) : PException(m,id) {}
-    explicit ParmError(const char* m, int id=0) : PException(m,id) {}
+    explicit ParmError(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit ParmError(const char* m, int id=0) throw() : PException(m,id) {}
   };
 
@@ -160,6 +156,6 @@
   class NotAvailableOperation : public PException {
   public:
-    explicit NotAvailableOperation(const string& m, int id=0) : PException(m,id) {}
-    explicit NotAvailableOperation(const char* m, int id=0) : PException(m,id) {}
+    explicit NotAvailableOperation(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit NotAvailableOperation(const char* m, int id=0) throw() : PException(m,id) {}
   };
 
@@ -168,6 +164,6 @@
   class TypeMismatchExc : public PException {
   public:
-    explicit TypeMismatchExc(const string& m, int id=0) : PException(m,id) {}
-    explicit TypeMismatchExc(const char* m, int id=0) : PException(m,id) {}
+    explicit TypeMismatchExc(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit TypeMismatchExc(const char* m, int id=0) throw() : PException(m,id) {}
   };
 
@@ -176,6 +172,6 @@
   class MathExc : public PException {
   public:
-    explicit MathExc(const string& m, int id=0) : PException(m,id) {}
-    explicit MathExc(const char* m, int id=0) : PException(m,id) {}
+    explicit MathExc(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit MathExc(const char* m, int id=0) throw() : PException(m,id) {}
   };
   
@@ -184,6 +180,6 @@
   class SingMatrixExc : public MathExc {
   public:
-    explicit SingMatrixExc(const string& m, int id=0) : MathExc(m,id) {}
-    explicit SingMatrixExc(const char* m, int id=0) : MathExc(m,id) {}
+    explicit SingMatrixExc(const string& m, int id=0) throw() : MathExc(m,id) {}
+    explicit SingMatrixExc(const char* m, int id=0) throw() : MathExc(m,id) {}
   };
 
@@ -192,6 +188,6 @@
   class DuplicateIdExc : public PException {
   public:
-    explicit DuplicateIdExc(const string& m, int id=0) : PException(m,id) {}
-    explicit DuplicateIdExc(const char* m, int id=0) : PException(m,id) {}
+    explicit DuplicateIdExc(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit DuplicateIdExc(const char* m, int id=0) throw() : PException(m,id) {}
   };
   
@@ -200,6 +196,6 @@
   class NotFoundExc : public PException {
   public:
-    explicit NotFoundExc(const string& m, int id=0) : PException(m,id) {}
-    explicit NotFoundExc(const char* m, int id=0) : PException(m,id) {}
+    explicit NotFoundExc(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit NotFoundExc(const char* m, int id=0) throw() : PException(m,id) {}
   };
   
@@ -208,6 +204,6 @@
   class CaughtSignalExc : public PException {
   public:
-    explicit CaughtSignalExc(const string& m, int id=0) : PException(m,id) {}
-    explicit CaughtSignalExc(const char* m, int id=0) : PException(m,id) {}
+    explicit CaughtSignalExc(const string& m, int id=0) throw() : PException(m,id) {}
+    explicit CaughtSignalExc(const char* m, int id=0) throw() : PException(m,id) {}
  };
     
@@ -223,23 +219,5 @@
        {if (!(_x_)) throw(NullPtrError(#_x_))}
 
-void InitFailNewHandler();
-  
+
      
-// Compatibility with EROS-PEIDA exceptions
-
-
-#define TRY try
-#define CATCH(_var) catch(long _var)
-#define CATCHALL catch(...)
-#define ENDTRY
-
-#define THROW(_i) throw( _i);
-
-#define THROW_ THROW(0)
-
-#define THROW_SAME throw;
-
-
-#define DBASSERT(_x_) ASSERT(_x_)
-
 #endif
