Index: trunk/SophyaLib/NTools/tmatrix.cc
===================================================================
--- trunk/SophyaLib/NTools/tmatrix.cc	(revision 304)
+++ trunk/SophyaLib/NTools/tmatrix.cc	(revision 306)
@@ -1,3 +1,3 @@
-// $Id: tmatrix.cc,v 1.8 1999-05-18 17:19:36 ansari Exp $
+// $Id: tmatrix.cc,v 1.9 1999-05-19 10:17:41 ansari Exp $
 //                         C.Magneville          04/99
 #include "machdefs.h"
@@ -390,9 +390,8 @@
 }
 
-
 template <class T>
 void FIO_TMatrix<T>::ReadSelf(PInPersist& is)
 {
-// On lit les 3 premiers uint_8
+// On lit les 3 premiers uint_4
 //  0: Numero de version,  1 : NRows,  2 : NCol
 uint_4 itab[3];
Index: trunk/SophyaLib/NTools/tvector.cc
===================================================================
--- trunk/SophyaLib/NTools/tvector.cc	(revision 304)
+++ trunk/SophyaLib/NTools/tvector.cc	(revision 306)
@@ -1,3 +1,3 @@
-// $Id: tvector.cc,v 1.3 1999-05-18 12:58:26 ansari Exp $
+// $Id: tvector.cc,v 1.4 1999-05-19 10:17:42 ansari Exp $
 //                         C.Magneville          04/99
 #include "machdefs.h"
@@ -99,4 +99,81 @@
 }
 
+///////////////////////////////////////////////////////////
+// --------------------------------------------------------
+//   Les objets delegues pour la gestion de persistance 
+// --------------------------------------------------------
+///////////////////////////////////////////////////////////
+
+template <class T>
+FIO_TVector<T>::FIO_TVector()
+{
+dobj=new TVector<T>;
+ownobj=true;
+}
+
+template <class T>
+FIO_TVector<T>::FIO_TVector(string const & filename) 
+{
+dobj=new TVector<T>;
+ownobj=true; 
+Read(filename);
+}
+
+template <class T>
+FIO_TVector<T>::FIO_TVector(const TVector<T> & obj) 
+{ 
+dobj = new TVector<T>(obj);
+ownobj=true; 
+}
+
+template <class T>
+FIO_TVector<T>::FIO_TVector(TVector<T> * obj) 
+{ 
+dobj = obj;
+ownobj=false; 
+}
+
+template <class T>
+FIO_TVector<T>::~FIO_TVector()
+{
+if (ownobj && dobj) delete dobj;
+}
+
+template <class T>
+AnyDataObj* FIO_TVector<T>::DataObj()
+{
+return(dobj);
+}
+
+template <class T>
+void FIO_TVector<T>::ReadSelf(PInPersist& is)
+{
+// On lit les 3 premiers uint_4
+//  0: Numero de version,  1 : NRows=NElts,  2 : NCol=1
+uint_4 itab[3];
+is.Get(itab,3);
+if (dobj == NULL) dobj = new TVector<T>(itab[1]);
+else dobj->ReSize(itab[1]);
+// On lit le NDataBlock
+FIO_NDataBlock<T> fio_nd(&dobj->DataBlock());
+fio_nd.Read(is);
+}
+
+template <class T>
+void FIO_TVector<T>::WriteSelf(POutPersist& os) const
+{
+if (dobj == NULL)   return;
+//  On ecrit 3 uint_4 .... 
+//  0: Numero de version,  1 : NRows=NElts,  2 : NCol=1
+uint_4 itab[3];
+ itab[0] = 1;  // Numero de version a 1
+itab[1] = dobj->NElts();
+itab[2] = 1;
+os.Put(itab,3);
+// On ecrit le NDataBlock
+FIO_NDataBlock<T> fio_nd(&dobj->DataBlock());
+fio_nd.Write(os);
+}
+
 ///////////////////////////////////////////////////////////////
 #ifdef __CXX_PRAGMA_TEMPLATES__
@@ -112,4 +189,16 @@
 #pragma define_template TVector< complex<float> > 
 #pragma define_template TVector< complex<double> > 
+// Instances des delegues FileIO (PPersist)
+#pragma define_template FIO_TVector<uint_1>
+#pragma define_template FIO_TVector<uint_2>
+#pragma define_template FIO_TVector<int_2>
+#pragma define_template FIO_TVector<int_4>
+#pragma define_template FIO_TVector<int_8>
+#pragma define_template FIO_TVector<uint_4>
+#pragma define_template FIO_TVector<uint_8>
+#pragma define_template FIO_TVector<r_8>
+#pragma define_template FIO_TVector<r_4>
+#pragma define_template FIO_TVector< complex<float> >
+#pragma define_template FIO_TVector< complex<double> >
 #endif
 
@@ -126,3 +215,15 @@
 template class TVector< complex<float> >;
 template class TVector< complex<double> >;
+// Instances des delegues FileIO (PPersist)
+template class FIO_TVector<uint_1>;
+template class FIO_TVector<uint_2>;
+template class FIO_TVector<int_2>;
+template class FIO_TVector<int_4>;
+template class FIO_TVector<int_8>;
+template class FIO_TVector<uint_4>;
+template class FIO_TVector<uint_8>;
+template class FIO_TVector<r_8>;
+template class FIO_TVector<r_4>;
+template class FIO_TVector< complex<float> >;
+template class FIO_TVector< complex<double> >;
 #endif
Index: trunk/SophyaLib/NTools/tvector.h
===================================================================
--- trunk/SophyaLib/NTools/tvector.h	(revision 304)
+++ trunk/SophyaLib/NTools/tvector.h	(revision 306)
@@ -72,4 +72,23 @@
 }
 
+/////////////////////////////////////////////////////////////////////////
+// Classe pour la gestion de persistance
+template <class T>
+class FIO_TVector : public  PPersist  {
+public:
+  FIO_TVector();
+  FIO_TVector(string const & filename); 
+  FIO_TVector(const TVector<T> & obj);
+  FIO_TVector(TVector<T> * obj);
+  virtual ~FIO_TVector();
+  virtual AnyDataObj* DataObj();
+  inline operator TVector<T>() { return(*dobj); }
+protected :
+  virtual void ReadSelf(PInPersist&);           
+  virtual void WriteSelf(POutPersist&) const;  
+  TVector<T> * dobj;
+  bool ownobj;
+};
+
 } // Fin du namespace
 
