Index: trunk/SophyaLib/NTools/generaldata.h
===================================================================
--- trunk/SophyaLib/NTools/generaldata.h	(revision 2683)
+++ trunk/SophyaLib/NTools/generaldata.h	(revision 3062)
@@ -13,4 +13,7 @@
 namespace SOPHYA {
 
+//  Forward class declaration for Fits handler
+template <class T>  class FitsHandler;
+
 class GeneralFit;
 
@@ -23,4 +26,5 @@
   friend class GeneralFit;
   friend class ObjFileIO<GeneralFitData>;
+  friend class FitsHandler<GeneralFitData>;
 public:
   //! Valeurs par defaut pour l'utilisation des erreurs
@@ -30,23 +34,22 @@
     };
 
-  GeneralFitData(unsigned int nVar, unsigned int nDataAlloc, uint_2 errx=0);
+  GeneralFitData(uint_4 nVar, uint_4 nDataAlloc, uint_2 errx=0);
   GeneralFitData(const GeneralFitData& data, bool clean=false);
   GeneralFitData();
   virtual ~GeneralFitData();
 
-  void Alloc(unsigned int nVar, unsigned int nDataAlloc, int_2 errx=-1);
-  void SetDataPtr(int ptr = 0);
-
-  void KillData(int i);
-  void KillData(int i1,int i2);
-
-  void ValidData(int i);
-  void ValidData(int i1,int i2);
+  void SetDataPtr(int_4 ptr = 0);
+
+  void KillData(int_4 i);
+  void KillData(int_4 i1,int_4 i2);
+
+  void ValidData(int_4 i);
+  void ValidData(int_4 i1,int_4 i2);
   void ValidData();
 
-  void RedefineData1(int i,double x,double f,double err=Def_ErrF,double errx=Def_ErrX);
-  void RedefineData2(int i,double x,double y,double f,double err=Def_ErrF
+  void RedefineData1(int_4 i,double x,double f,double err=Def_ErrF,double errx=Def_ErrX);
+  void RedefineData2(int_4 i,double x,double y,double f,double err=Def_ErrF
                     ,double errx=Def_ErrX,double erry=Def_ErrX);
-  void RedefineData(int i,double* xp,double f,double err=Def_ErrF,double* errxp=NULL);
+  void RedefineData(int_4 i,double* xp,double f,double err=Def_ErrF,double* errxp=NULL);
 
   void AddData1(double x, double f, double err=Def_ErrF,double errx=Def_ErrX);
@@ -56,33 +59,36 @@
   void AddData(float* xp, float f, float err=Def_ErrF,float* errxp=NULL);
 
-  void SetData1(int nData,double* x,double* f,double *err=NULL,double *errx=NULL);
-  void SetData1(int nData,float* x,float* f,float* err=NULL,float *errx=NULL);
-  void SetData2(int nData,double* x,double* y,double* f,double *err=NULL
+  void SetData1(int_4 nData,double* x,double* f,double *err=NULL,double *errx=NULL);
+  void SetData1(int_4 nData,float* x,float* f,float* err=NULL,float *errx=NULL);
+  void SetData2(int_4 nData,double* x,double* y,double* f,double *err=NULL
                ,double *errx=NULL,double *erry=NULL);
-  void SetData2(int nData,float* x,float* y,float* f,float* err=NULL
+  void SetData2(int_4 nData,float* x,float* y,float* f,float* err=NULL
                ,float *errx=NULL,float *erry=NULL);
-  void SetData(int nData,double** xp,double *f,double *err=NULL,double** errxp=NULL);
-  void SetData(int nData,float** xp,float* f,float* err=NULL,float** errxp=NULL);
+  void SetData(int_4 nData,double** xp,double *f,double *err=NULL,double** errxp=NULL);
+  void SetData(int_4 nData,float** xp,float* f,float* err=NULL,float** errxp=NULL);
 
   void PrintStatus() const;
-  void PrintData(int i) const;
-  void PrintData(int i1,int i2) const;
+  void PrintData(int_4 i) const;
+  void PrintData(int_4 i1,int_4 i2) const;
   void PrintData() const;
   void Show(ostream& os) const;
   inline void Show() const {Show(cout);}
 
+  //! Operator equal
+  GeneralFitData& operator = (const GeneralFitData& g);
+
   //! Retourne la place restante dans la structure (nombre de donnees que l'on peut encore stoquer).
-  inline int GetSpaceFree() const { return mNDataAlloc - mNData; }
+  inline int_4 GetSpaceFree() const { return mNDataAlloc - mNData; }
   //! Retourne le nombre de variables Xi
-  inline int NVar()       const {return mNVar;}
+  inline int_4 NVar()       const {return mNVar;}
   //! Retourne le nombre de donnees
-  inline int NData()      const {return mNData;}
+  inline int_4 NData()      const {return mNData;}
   //! Retourne le nombre de bonnes donnees (utilisees pour le fit)
-  inline int NDataGood()  const {return mNDataGood;}
+  inline int_4 NDataGood()  const {return mNDataGood;}
   //! Retourne la place maximale allouee pour les donnees
-  inline int NDataAlloc() const {return mNDataAlloc;}
+  inline int_4 NDataAlloc() const {return mNDataAlloc;}
 
   //! Retourne 1 si point valide, sinon 0
-  inline unsigned short int IsValid(int i) const
+  inline unsigned short IsValid(int_4 i) const
                 {if(i>=0 && i<mNData) return mOK[i]; else return 0;}
   //! Retourne ``true'' si il y a des erreurs sur les variables d'abscisse, ``false'' sinon.
@@ -90,54 +96,54 @@
 
   //! Retourne l'abscisse pour 1 dimension (y=f(x)) donnee I
-  inline double X1(int i) const
+  inline double X1(int_4 i) const
                 {if(i>=0 && i<mNData) return mXP[i]; else return 0.;}
   //! Retourne la 1er abscisse (X) pour (v=f(x,y,z,...)) donnee I
-  inline double X(int i) const
+  inline double X(int_4 i) const
                 {if(i>=0 && i<mNData) return mXP[i*mNVar]; else return 0.;}
   //! Retourne la 2sd abscisse (Y) pour (v=f(x,y,z,...)) donnee I
-  inline double Y(int i) const
+  inline double Y(int_4 i) const
                 {if(i>=0 && i<mNData && 1<mNVar) return mXP[i*mNVar+1]; else return 0.;}
   //! etourne la 3ieme abscisse (Z) pour (v=f(x,y,z,...)) donnee I
-  inline double Z(int i) const
+  inline double Z(int_4 i) const
                 {if(i>=0 && i<mNData && 2<mNVar) return mXP[i*mNVar+2]; else return 0.;}
   //! Retourne la Jieme abscisse (Xj) pour (v=f(x0,x1,x2,...)) donnee I
-  inline double Absc(int j,int i) const
+  inline double Absc(int_4 j,int_4 i) const
                 {if(i>=0 && i<mNData && j<mNVar)return mXP[i*mNVar+j]; else return 0.;}
   //! Retourne la valeur de la Ieme donnee
-  inline double Val(int i) const
+  inline double Val(int_4 i) const
                 {if(i>=0 && i<mNData) return mF[i]; else return 0.;}
 
   //! Retourne l'erreur (dx) sur l'abscisse pour 1 dimension (y=f(x)) donnee I
-  inline double EX1(int i) const
+  inline double EX1(int_4 i) const
                 {if(mErrXP && i>=0 && i<mNData) return mErrXP[i]; else return 0.;}
   //! Retourne l'erreur (dx) sur la 1er abscisse (X) pour (v=f(x,y,z,...)) donnee I
-  inline double EX(int i) const
+  inline double EX(int_4 i) const
                 {if(mErrXP && i>=0 && i<mNData) return mErrXP[i*mNVar]; else return 0.;}
   //! Retourne l'erreur (dy) sur la 2sd abscisse (Y) pour (v=f(x,y,z,...)) donnee I
-  inline double EY(int i) const
+  inline double EY(int_4 i) const
                 {if(mErrXP && i>=0 && i<mNData && 1<mNVar) return mErrXP[i*mNVar+1];
                  else return 0.;}
   //! Retourne l'erreur (dz) sur la 3ieme abscisse (Z) pour (v=f(x,y,z,...)) donnee I
-  inline double EZ(int i) const
+  inline double EZ(int_4 i) const
                 {if(mErrXP && i>=0 && i<mNData && 2<mNVar) return mErrXP[i*mNVar+2];
                  else return 0.;}
   //! Retourne l'erreur (dxj) sur la Jieme abscisse (Xj) pour (v=f(x0,x1,x2,...)) donnee I
-  inline double EAbsc(int j,int i) const
+  inline double EAbsc(int_4 j,int_4 i) const
                 {if(mErrXP && i>=0 && i<mNData && j<mNVar) return mErrXP[i*mNVar+j];
                  else return 0.;}
   //! Retourne l'erreur de la Ieme donnee
-  inline double EVal(int i) const
+  inline double EVal(int_4 i) const
                 {if(i>=0 && i<mNData) return mErr[i]; else return 0.;}
 
-  r_8* GetVec(int n, r_8* ret=NULL) const;
-  r_4* GetVecR4(int n, r_4* ret=NULL) const;
-  int GetMnMx(int var,int& imin,int& imax) const;
-  int GetMnMx(int var,double& min,double& max) const;
-  int GetMeanSigma(int var,double& mean,double& sigma,double min=1.,double max=-1.) const;
-  int GetMoMeMed(int var,double& mode,double& mean,double& median,
+  r_8* GetVec(int_4 n, r_8* ret=NULL) const;
+  r_4* GetVecR4(int_4 n, r_4* ret=NULL) const;
+  int_4 GetMnMx(int_4 var,int_4& imin,int_4& imax) const;
+  int_4 GetMnMx(int_4 var,double& min,double& max) const;
+  int_4 GetMeanSigma(int_4 var,double& mean,double& sigma,double min=1.,double max=-1.) const;
+  int_4 GetMoMeMed(int_4 var,double& mode,double& mean,double& median,
                  double min=1.,double max=-1.,double coeff=0.8) const;
-  int GetMode(int var,double& mode,double min=1.,double max=-1.,double coeff=0.8) const;
-  double PolFit(int varx,Poly& pol,int degre,bool ey=true,double xc=0.) const;
-  double PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2=-1,bool ez=true
+  int_4 GetMode(int_4 var,double& mode,double min=1.,double max=-1.,double coeff=0.8) const;
+  double PolFit(int_4 varx,Poly& pol,int_4 degre,bool ey=true,double xc=0.) const;
+  double PolFit(int_4 varx,int_4 vary,Poly2& pol,int_4 degre1,int_4 degre2=-1,bool ez=true
                ,double xc=0.,double yc=0.) const;
   GeneralFitData FitResidus(GeneralFit& gfit) const;
@@ -161,4 +167,5 @@
 
 protected:
+  void Alloc(uint_4 nVar, uint_4 nDataAlloc, uint_2 errx=0);
   void Delete();
 
