Index: trunk/SophyaPI/PIext/nomhistadapter.cc
===================================================================
--- trunk/SophyaPI/PIext/nomhistadapter.cc	(revision 3218)
+++ trunk/SophyaPI/PIext/nomhistadapter.cc	(revision 3221)
@@ -752,5 +752,16 @@
   return string(buff);   
 }
-else return "BaseDataTable.Att: nlines/nentry/nrows nvar/ncols";
+else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info()
+  if (opts.size() < 2)  return string(""); 
+  else if (mDT->Info().HasKey(opts[1]) == false) return string(""); 
+  else return mDT->Info().GetS(opts[1]);
+}
+else if (opts[0] == "row") { // Pour recuperer une ligne de la table
+  if (opts.size() < 2)  return string(""); 
+  long num = atol(opts[1].c_str());
+  return mDT->TableRowToString(num, true);
+}
+
+else return "BaseDataTable.Att: nlines/nentry/nrows nvar/ncols info.varname row.num ";
 }
 
Index: trunk/SophyaPI/PIext/nomtarradapter.cc
===================================================================
--- trunk/SophyaPI/PIext/nomtarradapter.cc	(revision 3218)
+++ trunk/SophyaPI/PIext/nomtarradapter.cc	(revision 3221)
@@ -93,4 +93,9 @@
       string s;
       return mtv.Convert(s);
+    }
+    else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info()
+      if (opts.size() < 2)  return string(""); 
+      else if (mArr->Info().HasKey(opts[1]) == false) return string(""); 
+      else return mArr->Info().GetS(opts[1]);
     }
     else return "TArray.Att: rank sizes size/nelts sum";
Index: trunk/SophyaPI/PIext/nomtmatvecadapter.cc
===================================================================
--- trunk/SophyaPI/PIext/nomtmatvecadapter.cc	(revision 3218)
+++ trunk/SophyaPI/PIext/nomtmatvecadapter.cc	(revision 3221)
@@ -15,4 +15,7 @@
 #include "pitvmaad.h"
 
+#include "cimage.h"  // Pour la prise en charge des Image<T> (Avr 2007)
+#include "pimgadapter.h"  // Adaptateur de tableaux PIImage pour Image<T>
+
 #include "fioarr.h"
 
@@ -55,5 +58,8 @@
 TVector<T>* v = dynamic_cast<TVector<T> *>(mMtx);
 if (v != NULL) type = "TVector< ";
-
+else {
+  Image<T>* img = dynamic_cast<Image<T> *>(mMtx);
+  if (img != NULL) type = "Image< ";
+}
 // type +=  DecodeTypeIdName(typeid(T).name());
 type += DataTypeInfo<T>::getTypeName();
@@ -69,5 +75,10 @@
 TVector<T>* v = dynamic_cast<TVector<T> *>(mMtx);
 if (v != NULL) return( new TVector<T>(*v, share) );
-else return ( new TMatrix<T>(*mMtx, share) );
+else {
+  Image<T>* img = dynamic_cast<Image<T> *>(mMtx);
+  if (img != NULL) return ( new Image<T>(*img, share) );
+  else return ( new TMatrix<T>(*mMtx, share) );
+}
+
 }
 
@@ -106,5 +117,10 @@
       return mtv.Convert(s);
     }
-    else return "TMatrix.Att: rank size/nelts nrow/nrows ncol/ncols sum";
+    else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info()
+      if (opts.size() < 2)  return string(""); 
+      else if (mMtx->Info().HasKey(opts[1]) == false) return string(""); 
+      else return mMtx->Info().GetS(opts[1]);
+    }
+    else return "TMatrix.Att: rank size/nelts nrow/nrows ncol/ncols sum info.varname";
   }
 }
@@ -155,9 +171,17 @@
   FIO_TArray<T> fio(v);
   fio.Write(pos, nom);
-  }
+}
 else {
-  FIO_TArray<T> fio(mMtx);
-  fio.Write(pos, nom);
-  }
+  Image<T>* img = dynamic_cast<Image<T> *>(mMtx);
+  if (img != NULL) {
+    FIO_Image<T> fio(img);
+    fio.Write(pos, nom);
+  }
+  else {
+    FIO_TArray<T> fio(mMtx);
+    fio.Write(pos, nom);
+  }
+}
+return;
 }
 
@@ -187,6 +211,21 @@
 P2DArrayAdapter* NOMAdapter_TMatrix<T>::Get2DArray(string &)
 {
-return ( new POTMatrixAdapter<T>(mMtx, false) );
-}
+Image<T>* img = dynamic_cast<Image<T> *>(mMtx);
+if (img != NULL) return ( new ImageAdapter<T>(img, false) );
+else return ( new POTMatrixAdapter<T>(mMtx, false) );
+}
+
+// ---- Specialisation pour complexes -----
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+P2DArrayAdapter* NOMAdapter_TMatrix< complex<r_4> >::Get2DArray(string &)
+{
+return ( new POTMatrixAdapter< complex<r_4> >(mMtx, false) );
+}
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+P2DArrayAdapter* NOMAdapter_TMatrix< complex<r_8> >::Get2DArray(string &)
+{
+return ( new POTMatrixAdapter< complex<r_8> >(mMtx, false) );
+}
+// -------------------------------------------------------------
 
 /* --Methode-- */
Index: trunk/SophyaPI/PIext/piinit.cc
===================================================================
--- trunk/SophyaPI/PIext/piinit.cc	(revision 3218)
+++ trunk/SophyaPI/PIext/piinit.cc	(revision 3221)
@@ -100,11 +100,21 @@
 #endif
 
+  /*  Avril 2007 : Prise en charge des images par NOMAdapter_TMatrix  au lieu de
+      NOMAdapter_Image<T> , deplace ci-dessous */
+  serv->RegisterClass(new Image<uint_2>, new NOMAdapter_TMatrix<uint_2> );
+  serv->RegisterClass(new Image<int_2>, new NOMAdapter_TMatrix<int_2> );
+  serv->RegisterClass(new Image<int_4>, new NOMAdapter_TMatrix<int_4> );
+  serv->RegisterClass(new Image<int_8>, new NOMAdapter_TMatrix<int_8> );
+  serv->RegisterClass(new Image<r_4>, new NOMAdapter_TMatrix<r_4> );
+  serv->RegisterClass(new Image<r_8>, new NOMAdapter_TMatrix<r_8> );
+  serv->RegisterClass(new Image<complex<r_4> >, new NOMAdapter_TMatrix<complex<r_4> > );
+  serv->RegisterClass(new Image<complex<r_8> >, new NOMAdapter_TMatrix<complex<r_8> > );
+
+#ifdef SANS_EVOLPLANCK
   serv->RegisterClass(new Image<uint_2>, new  NOMAdapter_Image<uint_2> );
+  serv->RegisterClass(new Image<int_2>, new  NOMAdapter_Image<int_2> );
   serv->RegisterClass(new Image<int_4>, new  NOMAdapter_Image<int_4> );
   serv->RegisterClass(new Image<r_4>, new  NOMAdapter_Image<r_4> );
   serv->RegisterClass(new Image<r_8>, new  NOMAdapter_Image<r_8> );
- 
-#ifdef SANS_EVOLPLANCK
-  serv->RegisterClass(new Image<int_2>, new  NOMAdapter_Image<int_2> );
 
   serv->RegisterClass(new FitsImage<uint_2>, new  NOMAdapter_Image<uint_2> );
