Index: trunk/SophyaLib/NTools/ntuple.h
===================================================================
--- trunk/SophyaLib/NTools/ntuple.h	(revision 475)
+++ trunk/SophyaLib/NTools/ntuple.h	(revision 490)
@@ -1,9 +1,11 @@
+// This may look like C code, but it is really -*- C++ -*-
 // Class NTuple
 //  CMV+Reza     Juillet 97
 //  CEA-DAPNIA      LAL-IN2P3/CNRS
-//  added overloading of operator =      F. Touze, Guy Le Meur 19-OCT-99 
 
 #ifndef NTUPLE_H_SEEN
 #define NTUPLE_H_SEEN
+
+#include "objfio.h"
 
 #include <iostream.h>
@@ -11,44 +13,39 @@
 #include <vector>
 
-#if defined(__KCC__)
-using std::string ;
-#include <vector.h>
-#endif
-
+#include "ntupintf.h"
 #include "ppersist.h"
 #include "dvlist.h"
 
+namespace PlanckDPC {
 
-class NTuple : public PPersist {
+class NTuple : public AnyDataObj , public NTupleInterface {
 public:
-  enum {classId = ClassId_NTuple };
+//  enum {classId = ClassId_NTuple };
 
   		    NTuple(int nvar, char** noms, int blk=512);
 		    NTuple();
+                    NTuple(const NTuple& NT);
 		    NTuple(char* flnm);
   virtual           ~NTuple();
 
-  NTuple &operator=(const NTuple &ntpl);
-
+  NTuple&           operator = (const NTuple& NT);
+ 
   void              Fill(r_4* x);
 
-  inline int_4      NEntry() { return(mNEnt); }
-  inline int_4      NVar() { return(mNVar); }
-  inline int_4      BLock() { return(mBlk); }
+  inline int_4      NEntry() const  { return(mNEnt); }  
+  inline int_4      NVar() const { return(mNVar); }  
+  inline int_4      BLock() const { return(mBlk); }  
+// $CHECK$ Reza 21/10/99 Pourquoi faire BLock() ?
 
   float             GetVal(int n, int k)   const;
-  inline float	    GetVal(int n, char* nom) const 
-                         { return(GetVal(n, IndexNom(nom)) ); }
+  inline float	    GetVal(int n, const char* nom) const 
+                            { return(GetVal(n, IndexNom(nom)) ); }
   int               IndexNom(const char* nom)  const ;
   char*             NomIndex(int k) const;
-  string            VarList_C(const char* nomx=NULL)  const;
 
   r_4*	            GetVec(int n, r_4* ret=NULL)  const ;
   r_8*	            GetVecD(int n, r_8* ret=NULL)  const ;
 
-  void              GetMinMax(int k, float& min, float& max)   const ; 
-  inline void       GetMinMax(const char* nom, float& min, float& max)  const 
-                         { GetMinMax(IndexNom(nom), min, max); }
-
+// Impression, I/O
   void              Print(int num, int nmax=1)  const ;
   void              Show(ostream& os) const;
@@ -57,10 +54,24 @@
   DVList&           Info();
 
-  int_4             ClassId() const        { return classId; }
-  static PPersist*  Create()               { return new NTuple;}
+// Remplissage depuis fichier ASCII 
+  int		    FillFromASCIIFile(string const& fn, float defval=0.);
 
-  virtual void      WriteSelf(POutPersist&) const;
-  virtual void      ReadSelf(PInPersist&);
 
+// Declaration de l interface NTuple
+  virtual uint_4        NbLines() const ;
+  virtual uint_4        NbColumns() const ;
+  virtual r_8 *         GetLineD(int n) const ;
+  virtual r_8		GetCell(int n, int k) const ;
+  virtual r_8		GetCell(int n, string const & nom) const ;
+  virtual void		GetMinMax(int k, double& min, double& max)   const ; 
+  virtual void		GetMinMax(string const & nom, double& min, double& max)   const ; 
+  virtual int           ColumnIndex(string const & nom)  const ;
+  virtual string        ColumnName(int k) const;
+  virtual string	VarList_C(const char* nomx=NULL) const ;
+  virtual string        LineHeaderToString() const;
+  virtual string        LineToString(int n) const;  
+
+//  Pour la gestion de persistance
+  friend class ObjFileIO<NTuple> ;
 
 private:
@@ -81,8 +92,18 @@
   {  nt.Show(s);  return(s);  }
 
+inline POutPersist& operator << (POutPersist& os, NTuple & obj)
+{ ObjFileIO<NTuple> fio(&obj);  fio.Write(os);  return(os); }
+inline PInPersist& operator >> (PInPersist& is, NTuple & obj)
+{ ObjFileIO<NTuple> fio(&obj);  fio.Read(is);  return(is); }
+
+// Classe pour la gestion de persistance
+// ObjFileIO<NTuple>
+
 #ifdef __MWERKS__
 __MSL_FIX_ITERATORS__(r_4*);
 #endif
 
+} // namespace PlanckDPC
+
 #endif
   
