Index: /trunk/SophyaLib/NTools/cspline.cc
===================================================================
--- /trunk/SophyaLib/NTools/cspline.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/cspline.cc	(revision 2506)
@@ -44,5 +44,4 @@
 if( x != NULL && y != NULL) ComputeCSpline();
 
-END_CONSTRUCTOR
 }
 
@@ -56,5 +55,4 @@
   , YP1(yp1), YPn(ypn), X(NULL), Y(NULL), Y2(NULL), tmp(NULL)
 {
-END_CONSTRUCTOR
 }
 
@@ -125,5 +123,5 @@
       printf("CSpline::SetNewTab_Erreur: X[%d]>=X[%d] (%g>=%g)\n"
             ,i-1,i,X[i-1],X[i]);
-      THROW(inconsistentErr);
+      throw ParmError(PExcLongMessage(""));
     }
   }
@@ -219,5 +217,5 @@
 if( corrupt_Y2 ) {
   cout<<"CSpline::CSplineInt: calcul des coef du spline corrupted"<<endl;
-  THROW(inconsistentErr);
+  throw ParmError(PExcLongMessage(""));
 }
 
@@ -234,5 +232,5 @@
   cout<<"CSpline::CSplineInt: pout khi="<<khi<<" klo="<<klo
       <<" memes valeurs de X[]: "<<X[khi]<<endl;
-  THROW(inconsistentErr);
+  throw ParmError(PExcLongMessage(""));
 }
 
@@ -293,5 +291,4 @@
 if( x1 != NULL && x2 != NULL && y != NULL) ComputeCSpline();
 
-END_CONSTRUCTOR
 }
 
@@ -306,5 +303,4 @@
   , Nel_S(0), S(NULL), Sint(NULL), tmp(NULL)
 {
-END_CONSTRUCTOR
 }
 
@@ -391,5 +387,5 @@
       { printf("CSpline::SetNewTab_Erreur: X1[%d]>=X1[%d] (%g>=%g)\n"
               ,i-1,i,X1[i-1],X1[i]);
-        THROW(inconsistentErr); }
+        throw ParmError(PExcLongMessage("")); }
     for(int j=0;j<Nel2;j++) Ytmp[j*Nel1+i]  = y[j*Nel1+ind[i]];
   }
@@ -402,5 +398,5 @@
       { printf("CSpline::SetNewTab_Erreur: X2[%d]>=X2[%d] (%g>=%g)\n"
               ,j-1,j,X2[j-1],X2[j]);
-        THROW(inconsistentErr); }
+        throw ParmError(PExcLongMessage("")); }
     for(int i=0;i<Nel1;i++) Y[j*Nel1+i] = Ytmp[j*Nel1+ind[i]];
   }
Index: /trunk/SophyaLib/NTools/dates.cc
===================================================================
--- /trunk/SophyaLib/NTools/dates.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/dates.cc	(revision 2506)
@@ -44,5 +44,4 @@
 #endif
   SetZone(p);
-  END_CONSTRUCTOR;
 }
 
@@ -54,5 +53,4 @@
 {
   SetZone(nom);
-  END_CONSTRUCTOR
 }
 
@@ -94,5 +92,5 @@
     dstStopMonth   = Date::mois_Mars;
     dstOffset      = 1;
-  } else THROW(parmErr);
+  } else throw ParmError("TimeZone::SetZone() ");
 }
 
@@ -104,5 +102,5 @@
 {
   Date dt = date;
-  if (dt.MM < 0 || dt.JJ < 0) THROW(inconsistentErr)
+  if (dt.MM < 0 || dt.JJ < 0) throw ParmError(PExcLongMessage(""));
   if (dt.hh >= 0) dt += gmtOffset/24.0; // date "fictive" en local d'hiver
   else dt.ss = dt.hh = dt.mm = 0;       // minuit local si heure indeterminee
@@ -185,5 +183,5 @@
 //--
 {
-  if (mois<1 || mois>12) THROW(inconsistentErr);
+  if (mois<1 || mois>12) throw ParmError(PExcLongMessage(""));
   
   switch(mois) {
@@ -265,6 +263,6 @@
 //--
 {
-   if (UndetTime() && !AllUndetTime()) THROW(inconsistentErr);
-   if (UndetDate() && !AllUndetDate()) THROW(inconsistentErr);
+   if (UndetTime() && !AllUndetTime()) throw ParmError(PExcLongMessage(""));
+   if (UndetDate() && !AllUndetDate()) throw ParmError(PExcLongMessage(""));
    double t=0;
    if (!UndetDate()) {
@@ -341,5 +339,4 @@
   ss = TM->tm_sec;
   nuit = 0;
-  END_CONSTRUCTOR
 }
 
@@ -351,5 +348,4 @@
 : JJ(J), MM(M), AA(A), hh(h), mm(m), ss(s), timeZone(gTimeZone), nuit(0)
 {
-  END_CONSTRUCTOR
 }
 
@@ -364,5 +360,4 @@
 {
   Set(t);
-  END_CONSTRUCTOR
 }
 
@@ -388,5 +383,4 @@
 {
   Set(date,heure,tOpt);
-  END_CONSTRUCTOR
 }
 
@@ -403,5 +397,4 @@
 {
   Set(date,heure,tOpt);
-  END_CONSTRUCTOR
 }
 
@@ -435,40 +428,40 @@
     if (p[0] == '?' && (p[1] == '?' || p[1] == '/'))   JJ = -1;
     else {
-      if (!isdigit(p[0])) THROW(inconsistentErr);
-      if (!isdigit(p[1]) && p[1] != '/') THROW(inconsistentErr);
+      if (!isdigit(p[0])) ParmError(PExcLongMessage(""));
+      if (!isdigit(p[1]) && p[1] != '/') ParmError(PExcLongMessage(""));
       JJ = atoi(p);
-      if (JJ <= 0) THROW(inconsistentErr);
+      if (JJ <= 0) ParmError(PExcLongMessage(""));
     }
     
     if (p[1] == '/') p += 2;
     else if (p[2] == '/') p+= 3;
-    else THROW(inconsistentErr);
+    else ParmError(PExcLongMessage(""));
 
     if (p[0] == '?' && (p[1] == '?' || p[1] == '/'))   MM = -1;
     else {
-      if (!isdigit(p[0])) THROW(inconsistentErr);
-      if (!isdigit(p[1]) && p[1] != '/') THROW(inconsistentErr);
+      if (!isdigit(p[0])) ParmError(PExcLongMessage(""));
+      if (!isdigit(p[1]) && p[1] != '/') ParmError(PExcLongMessage(""));
       MM = atoi(p);
-      if (MM <= 0 || MM >12) THROW(inconsistentErr);
+      if (MM <= 0 || MM >12) ParmError(PExcLongMessage(""));
     }
 
     if (p[1] == '/') p += 2;
     else if (p[2] == '/') p+= 3;
-    else THROW(inconsistentErr);
+    else ParmError(PExcLongMessage(""));
 
     if (p[0] == '?')  AA = -1;
     else {
-      if (!isdigit(p[0])) THROW(inconsistentErr);
-      if (!isdigit(p[1])) THROW(inconsistentErr);
+      if (!isdigit(p[0])) ParmError(PExcLongMessage(""));
+      if (!isdigit(p[1])) ParmError(PExcLongMessage(""));
       AA = atoi(p);
       if (AA < 100 && AA >= 0 && date[6] != '0') AA += 1900;
     }
     
-    if (AA > 0 && MM > 0 && JJ > 0 && JJ > MonthDays(MM,AA)) THROW(inconsistentErr);
+    if (AA > 0 && MM > 0 && JJ > 0 && JJ > MonthDays(MM,AA)) ParmError(PExcLongMessage(""));
     
    } else if (strlen(date)==4) {      // Code EROS de date
      if (date[0] == '?') AA = -1;
      else {
-       if (!isdigit(date[0])) THROW(inconsistentErr);
+       if (!isdigit(date[0])) ParmError(PExcLongMessage(""));
        AA = 1990 + date[0] - '0';
      }
@@ -476,22 +469,22 @@
      if (date[1] == '?') MM = -1;
      else {
-       if (!isalpha(date[1])) THROW(inconsistentErr);
+       if (!isalpha(date[1])) ParmError(PExcLongMessage(""));
        if (islower(date[1]))
          MM = date[1] - 'a' + 1;
        else
          MM = date[1] - 'A' + 1;
-       if (MM<1 || MM>12) THROW(inconsistentErr);
+       if (MM<1 || MM>12) ParmError(PExcLongMessage(""));
      }
      
      if (date[2] == '?' && date[3] == '?') JJ = -1;
      else {
-       if (!isdigit(date[2])) THROW(inconsistentErr);
-       if (!isdigit(date[3])) THROW(inconsistentErr);
+       if (!isdigit(date[2])) ParmError(PExcLongMessage(""));
+       if (!isdigit(date[3])) ParmError(PExcLongMessage(""));
        JJ = atoi(date+2);
      }
      
-     if (AA > 0 && MM > 0 && JJ > 0 && JJ > MonthDays(MM,AA)) THROW(inconsistentErr);
+     if (AA > 0 && MM > 0 && JJ > 0 && JJ > MonthDays(MM,AA)) ParmError(PExcLongMessage(""));
      nuit = 1;
-   } else THROW(inconsistentErr);   // Mauvaise longueur
+   } else ParmError(PExcLongMessage(""));   // Mauvaise longueur
   } else {                          // Pas de date
     JJ = MM = AA = -1;
@@ -502,6 +495,6 @@
     if (p[0] == '?' && (p[1] == '?' || p[1] == ':'))   hh = -1;
     else {
-      if (!isdigit(p[0])) THROW(inconsistentErr);
-      if (!isdigit(p[1]) && p[1] != ':') THROW(inconsistentErr);
+      if (!isdigit(p[0])) ParmError(PExcLongMessage(""));
+      if (!isdigit(p[1]) && p[1] != ':') ParmError(PExcLongMessage(""));
       hh = atoi(p);
     }
@@ -509,10 +502,10 @@
     if (p[1] == ':') p += 2;
     else if (p[2] == ':') p+= 3;
-    else THROW(inconsistentErr);
+    else ParmError(PExcLongMessage(""));
 
     if (p[0] == '?' && (p[1] == '?' || p[1] == ':'))   mm = -1;
     else {
-      if (!isdigit(p[0])) THROW(inconsistentErr);
-      if (!isdigit(p[1]) && p[1] != '/') THROW(inconsistentErr);
+      if (!isdigit(p[0])) ParmError(PExcLongMessage(""));
+      if (!isdigit(p[1]) && p[1] != '/') ParmError(PExcLongMessage(""));
       mm = atoi(p);
     }
@@ -520,9 +513,9 @@
     if (p[1] == ':') p += 2;
     else if (p[2] == ':') p+= 3;
-    else THROW(inconsistentErr);
+    else ParmError(PExcLongMessage(""));
 
     if (p[0] == '?')   ss = -1;
     else {
-      if (!isdigit(p[0])) THROW(inconsistentErr);
+      if (!isdigit(p[0])) ParmError(PExcLongMessage(""));
       ss = atoi(p);
     }
@@ -585,5 +578,5 @@
 
   if (dt.AA != -1) {
-    if (dt.AA < 1990 || dt.AA > 2016) THROW(inconsistentErr);
+    if (dt.AA < 1990 || dt.AA > 2016) ParmError(PExcLongMessage(""));
     int i = dt.AA - 1990;
     if (i<10)
@@ -771,6 +764,6 @@
 //--
 {
-  if (a.UndetTime() != b.UndetTime()) THROW(inconsistentErr);
-  if (a.UndetDate() != b.UndetDate()) THROW(inconsistentErr);
+  if (a.UndetTime() != b.UndetTime()) ParmError(PExcLongMessage(""));
+  if (a.UndetDate() != b.UndetDate()) ParmError(PExcLongMessage(""));
   return a.GetDays() - b.GetDays();
 }
Index: /trunk/SophyaLib/NTools/generaldata.cc
===================================================================
--- /trunk/SophyaLib/NTools/generaldata.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/generaldata.cc	(revision 2506)
@@ -95,5 +95,4 @@
  }
 
- END_CONSTRUCTOR
 }
 
@@ -106,5 +105,4 @@
   , BuffVar(NULL), BuffVarR4(NULL)
 {
- END_CONSTRUCTOR
 }
 
Index: /trunk/SophyaLib/NTools/generalfit.cc
===================================================================
--- /trunk/SophyaLib/NTools/generalfit.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/generalfit.cc	(revision 2506)
@@ -39,5 +39,4 @@
  deltaParm = new double[nPar];
  tmpParm   = new double[nPar];
- END_CONSTRUCTOR
 }
 
@@ -197,5 +196,4 @@
  ASSERT( nPar>0 );
  deltaParm = new double[nPar];
- END_CONSTRUCTOR
 }
 
@@ -329,5 +327,4 @@
  } ENDTRY
 
- END_CONSTRUCTOR
 }
 
@@ -371,5 +368,4 @@
  } ENDTRY
 
- END_CONSTRUCTOR
 }
 
@@ -452,5 +448,5 @@
 #endif
 FileStep = fopen(filename,"w");
-if(FileStep==NULL) THROW(nullPtrErr);
+if(FileStep==NULL) throw NullPtrError("GeneralFit::WriteStep()");
 }
 
Index: /trunk/SophyaLib/NTools/imageop.cc
===================================================================
--- /trunk/SophyaLib/NTools/imageop.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/imageop.cc	(revision 2506)
@@ -29,6 +29,6 @@
 #define CHECKIMG2(_img_,_x_,_y_)                                  \
       if ((_x_ >= (_img_).siz_x) || (_y_ >= (_img_).siz_y) ||              \
-          (_x_ < 0) || (_y_ < 0)) THROW(rangeCheckErr);  \
-      if (!(_img_).ImagePtr()) THROW(nullPtrErr)
+          (_x_ < 0) || (_y_ < 0)) throw RangeCheckError("imageop.cc - CHECKIMG2") ;  \
+      if (!(_img_).ImagePtr()) throw NullPtrError("imageop.cc - CHECKIMG2")
 #else
 #if defined(IMGVOIDCHECK)
Index: /trunk/SophyaLib/NTools/integ.cc
===================================================================
--- /trunk/SophyaLib/NTools/integ.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/integ.cc	(revision 2506)
@@ -444,5 +444,5 @@
 GLInteg::AddBound(double x)
 {
- if (x<=mXMin || x>=mXMax) THROW(rangeCheckErr); 
+ if (x<=mXMin || x>=mXMax) throw RangeCheckError("GLInteg::AddBound()") ; 
  // On introduira les classes d'exections apres reflexion et de maniere systematique (Rz+cmv)
  // if (x<=mXMin || x>=mXMax) throw range_error("GLInteg::AddBound  bound outside interval");
Index: /trunk/SophyaLib/NTools/perandom.cc
===================================================================
--- /trunk/SophyaLib/NTools/perandom.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/perandom.cc	(revision 2506)
@@ -27,5 +27,4 @@
   for(int_4 j=0; j<nBin; j++)
     (*this)(j) /= (*this)(nBin-1);
-  END_CONSTRUCTOR
 }
 
@@ -48,5 +47,4 @@
   for(int_4 j=0; j<nBin; j++)
     (*this)(j) /= (*this)(nBin-1);
-  END_CONSTRUCTOR
 }
 
@@ -65,5 +63,4 @@
   for(int_4 j=0; j<nBin; j++)
     (*this)(j) /= (*this)(nBin-1);
-  END_CONSTRUCTOR
 }
 
@@ -151,5 +148,4 @@
    
    nx = nBinX;
-  END_CONSTRUCTOR
 }
 
@@ -179,5 +175,4 @@
    delete[] tabX;
    nx = nBinX;
-  END_CONSTRUCTOR
 }
 
Index: /trunk/SophyaLib/NTools/poly.cc
===================================================================
--- /trunk/SophyaLib/NTools/poly.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/poly.cc	(revision 2506)
@@ -20,5 +20,4 @@
 : TVector<r_8>(degre+1), dirty(0), deg(0)
 {
-  END_CONSTRUCTOR
 }
 
@@ -27,5 +26,4 @@
 :TVector<r_8>(a), dirty(a.dirty), deg(a.deg)
 {
-  END_CONSTRUCTOR
 }
 
@@ -96,5 +94,5 @@
       return Root2(roots(0),roots(1));
     default :
-      THROW(parmErr);
+      throw ParmError("Poly::Roots()") ;
     }
 }
@@ -106,5 +104,5 @@
 {
   UpdateDegIfDirty();
-  if (deg != 1) THROW(sizeMismatchErr);
+  if (deg != 1) ParmError("Poly::Root1() deg!= 1") ;
 
   if (Element(1) == 0) return 0;
@@ -118,5 +116,5 @@
 {
   UpdateDegIfDirty();
-  if (deg != 2) THROW(sizeMismatchErr);
+  if (deg != 2) throw SzMismatchError("Poly::Root2() deg != 2") ;
 
   double delta = Element(1)*Element(1) - 4*Element(0)*Element(2);
@@ -227,5 +225,5 @@
 {
   int n = x.NElts();
-  if (n != (int)y.NElts()) THROW(sizeMismatchErr);
+  if (n != (int)y.NElts()) throw SzMismatchError("Poly::Fit() ");
 
   Realloc(degre);
@@ -262,6 +260,6 @@
 {
   int n = x.NElts();
-  if (n != (int)y.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)erry2.NElts()) THROW(sizeMismatchErr);
+  if (n != (int)y.NElts()) throw SzMismatchError("Poly::Fit() ");
+  if (n != (int)erry2.NElts()) throw SzMismatchError("Poly::Fit() ") ;
 
   Realloc(degre);
@@ -288,5 +286,5 @@
 Poly Poly::power(int n) const // a accelerer !!!
 {
-  if (n < 0) THROW(rangeCheckErr);
+  if (n < 0) throw RangeCheckError("Poly::power() n<0 ");
   if (n == 0) { Poly r(0); r[0] = 1; return r;}
   if (n == 1) { return *this; }
@@ -358,5 +356,4 @@
  maxDegX(degreX), maxDegY(degreY), degX(0), degY(0), deg(0)
 {
-  END_CONSTRUCTOR
 }
 
@@ -370,5 +367,4 @@
     for (int j=0; j<=degY; j++)
       Coef(i,j) = polX[i]*polY[j];
-  END_CONSTRUCTOR
 }
 
@@ -379,5 +375,4 @@
  degX(a.degX), degY(a.degY), deg(a.deg)
 {
-  END_CONSTRUCTOR
 }
 
@@ -467,6 +462,6 @@
 {
   int n = x.NElts();
-  if (n != (int)y.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)z.NElts()) THROW(sizeMismatchErr);
+  if (n != (int)y.NElts()) throw SzMismatchError("Poly2::Fit() - 1");
+  if (n != (int)z.NElts()) throw SzMismatchError("Poly2::Fit() - 2");
 
   Realloc(degreX, degreY);
@@ -510,7 +505,7 @@
 {
   int n = x.NElts();
-  if (n != (int)y.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)z.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)errz2.NElts()) THROW(sizeMismatchErr);
+  if (n != (int)y.NElts()) throw SzMismatchError("Poly2::Fit() - 3");
+  if (n != (int)z.NElts()) throw SzMismatchError("Poly2::Fit() - 4");
+  if (n != (int)errz2.NElts()) throw SzMismatchError("Poly2::Fit() - 5");
 
   Realloc(degreX, degreY);
@@ -551,6 +546,6 @@
 {
   int n = x.NElts();
-  if (n != (int)y.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)z.NElts()) THROW(sizeMismatchErr);
+  if (n != (int)y.NElts()) throw SzMismatchError("Poly2::Fit() - 6");
+  if (n != (int)z.NElts()) throw SzMismatchError("Poly2::Fit() - 7");
 
   Realloc(degre, degre);   // certains vaudront 0, impose.
@@ -604,7 +599,7 @@
 {
   int n = x.NElts();
-  if (n != (int)y.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)z.NElts()) THROW(sizeMismatchErr);
-  if (n != (int)errz2.NElts()) THROW(sizeMismatchErr);
+  if (n != (int)y.NElts()) throw SzMismatchError("Poly2::Fit() - 8");
+  if (n != (int)z.NElts()) throw SzMismatchError("Poly2::Fit() - 9");
+  if (n != (int)errz2.NElts()) throw SzMismatchError("Poly2::Fit() - 10");
 
   Realloc(degre, degre);
@@ -733,5 +728,5 @@
 Poly2 Poly2::power(int n) const
 {
-  if (n < 0) THROW(rangeCheckErr);
+  if (n < 0) throw RangeCheckError("Poly2::power(n<0) ");
   if (n == 0) { Poly2 r(0); r.Coef(0,0) = 1; return r;}
   if (n == 1) { return *this; }
Index: /trunk/SophyaLib/NTools/poly.h
===================================================================
--- /trunk/SophyaLib/NTools/poly.h	(revision 2505)
+++ /trunk/SophyaLib/NTools/poly.h	(revision 2506)
@@ -1,5 +1,5 @@
 // This may look like C code, but it is really -*- C++ -*-
 //
-// $Id: poly.h,v 1.10 2001-07-19 08:33:49 ansari Exp $
+// $Id: poly.h,v 1.11 2004-03-15 16:46:56 ansari Exp $
 //
 
@@ -176,5 +176,5 @@
   //! Return index of coefficient of X^dx * Y^dy in the vector
   inline int IndCoef(int dx, int dy) const {
-    if (dx>maxDegX || dy>maxDegY) THROW(rangeCheckErr);
+    if (dx>maxDegX || dy>maxDegY) throw RangeCheckError("Poly2::IndCoef()");
     return dx + (maxDegX+1)*dy;
   }
@@ -189,5 +189,5 @@
   //! Return coefficient of X^dx * Y^dy
   inline double& Coef(int dx, int dy) {
-    if (dx>maxDegX || dy>maxDegY) THROW(rangeCheckErr);
+    if (dx>maxDegX || dy>maxDegY) throw RangeCheckError("Poly2::Coef() ");
     dirty = 1; return Element(IndCoef(dx,dy));
   }
Index: /trunk/SophyaLib/NTools/simplesort.cc
===================================================================
--- /trunk/SophyaLib/NTools/simplesort.cc	(revision 2505)
+++ /trunk/SophyaLib/NTools/simplesort.cc	(revision 2506)
@@ -1,4 +1,4 @@
 //
-// $Id: simplesort.cc,v 1.2 1999-04-22 16:18:50 ansari Exp $
+// $Id: simplesort.cc,v 1.3 2004-03-15 16:46:56 ansari Exp $
 //
 
@@ -18,5 +18,6 @@
 SimpleSort::SimpleSort(int nElts)
 : numElts(nElts), index(new TRIPAIRE[nElts])
-{END_CONSTRUCTOR}
+{
+}
 			
 SimpleSort::~SimpleSort()
