Index: /trunk/Poubelle/PI/lut.cc
===================================================================
--- /trunk/Poubelle/PI/lut.cc	(revision 248)
+++ /trunk/Poubelle/PI/lut.cc	(revision 249)
@@ -4,5 +4,5 @@
 // LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
 
-#include "defs.h"
+#include "machdefs.h"
 #include <stdlib.h>
 #include <stdio.h>
Index: /trunk/Poubelle/PI/parradapter.h
===================================================================
--- /trunk/Poubelle/PI/parradapter.h	(revision 248)
+++ /trunk/Poubelle/PI/parradapter.h	(revision 249)
@@ -7,6 +7,5 @@
 #define PARRADAPTER_SEEN
 
-#include "defs.h"
-#include "machine.h"
+#include "machdefs.h"
 #include "lut.h"
 
Index: /trunk/Poubelle/PI/pidrawer.cc
===================================================================
--- /trunk/Poubelle/PI/pidrawer.cc	(revision 248)
+++ /trunk/Poubelle/PI/pidrawer.cc	(revision 249)
@@ -5,4 +5,5 @@
 
 #include "pidrawer.h"
+#include <math.h>
 
 //++
Index: /trunk/Poubelle/PI/pimsghandler.h
===================================================================
--- /trunk/Poubelle/PI/pimsghandler.h	(revision 248)
+++ /trunk/Poubelle/PI/pimsghandler.h	(revision 249)
@@ -4,7 +4,7 @@
 /* Classe de gestion de messages */
 
+#include "machdefs.h"
 #include <stdlib.h>
 
-#include "defs.h"
 
 enum {
Index: /trunk/Poubelle/PI/psfile.h
===================================================================
--- /trunk/Poubelle/PI/psfile.h	(revision 248)
+++ /trunk/Poubelle/PI/psfile.h	(revision 249)
@@ -18,7 +18,7 @@
  */
 
+#include "machdefs.h"
 #include <stdio.h>
 #include <stdlib.h>
-#include "defs.h"
 #ifdef __mac__
 #include <stat.h>
Index: /trunk/Poubelle/PIext/piacmd.h
===================================================================
--- /trunk/Poubelle/PIext/piacmd.h	(revision 248)
+++ /trunk/Poubelle/PIext/piacmd.h	(revision 249)
@@ -7,5 +7,5 @@
 #define PIACMD_H_SEEN
 
-#include "defs.h"
+#include "machdefs.h"
 
 #include <fstream.h>
Index: /trunk/Poubelle/PIext/piinit.cc
===================================================================
--- /trunk/Poubelle/PIext/piinit.cc	(revision 248)
+++ /trunk/Poubelle/PIext/piinit.cc	(revision 249)
@@ -1,3 +1,3 @@
-#include "defs.h"
+#include "machdefs.h"
 #include "piinit.h"
 
Index: /trunk/Poubelle/PIext/pisiadw.cc
===================================================================
--- /trunk/Poubelle/PIext/pisiadw.cc	(revision 248)
+++ /trunk/Poubelle/PIext/pisiadw.cc	(revision 249)
@@ -1,6 +1,6 @@
+#include "machdefs.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
-#include "machine.h"
 
 #include "perrors.h"
Index: /trunk/Poubelle/PIext/pistdimgapp.cc
===================================================================
--- /trunk/Poubelle/PIext/pistdimgapp.cc	(revision 248)
+++ /trunk/Poubelle/PIext/pistdimgapp.cc	(revision 249)
@@ -1,2 +1,3 @@
+#include "machdefs.h"
 #include <stdlib.h>
 #include <stdio.h>
@@ -10,5 +11,4 @@
 #endif
 
-#include "machine.h"
 
 #include "strutil.h"
Index: /trunk/Poubelle/PIext/servnobjm.h
===================================================================
--- /trunk/Poubelle/PIext/servnobjm.h	(revision 248)
+++ /trunk/Poubelle/PIext/servnobjm.h	(revision 249)
@@ -7,5 +7,5 @@
 #define SERVNOBJM_H_SEEN
 
-#include "defs.h"
+#include "machdefs.h"
 #include <string>
 
Index: /trunk/SophyaLib/BaseTools/SysTools.o.list
===================================================================
--- /trunk/SophyaLib/BaseTools/SysTools.o.list	(revision 248)
+++ /trunk/SophyaLib/BaseTools/SysTools.o.list	(revision 249)
@@ -1,4 +1,5 @@
 ctimer.o
 md5.o
+ndatablock.o
 pdlmgr.o
 periodic.o
Index: /trunk/SophyaLib/BaseTools/ndatablock.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/ndatablock.cc	(revision 248)
+++ /trunk/SophyaLib/BaseTools/ndatablock.cc	(revision 249)
@@ -104,5 +104,5 @@
 if(!a.mSRef) {mSz=0; mSRef=NULL;} // cas ou "a" est cree par defaut
 else if(a.IsTemp()) Share(a);
-else {Alloc(a.mSz); memcpy(Dtata(),a.Dtata(),mSz*sizeof(T));}
+else {Alloc(a.mSz); memcpy(Data(),a.Data(),mSz*sizeof(T));}
 }
 
@@ -132,5 +132,5 @@
 cout<<"NDataBlock::Delete() mSRef="<<mSRef;
 if(mSRef) cout<<" mSRef->nref"<<mSRef->nref<<" mSRef->data"<<mSRef->data;
-cour<<endl;
+cout<<endl;
 #endif
 if(mSRef==NULL) return; // cas du createur par defaut
@@ -172,5 +172,5 @@
 if(mSRef) {nr = mSRef->nref; p = mSRef->data;}
 cout<<"NDataBlock::Print nel=%ld nref=%d (%p)\n",mSz,nr,p;
-if(i1<0 || i1>=mSz || n<=0 || !p) return;
+if(i1>=mSz || n<=0 || !p) return;
 size_t i2 = i1+n; if(i2>mSz) i2=mSz;
 size_t im = 1;
@@ -184,5 +184,5 @@
 
 template <class T>
-NDataBlock<T>& NDataBlock<T>::operator = (const NDataBlock<T>& a)
+NDataBlock<T>& NDataBlock<T>::operator = (NDataBlock<T>& a)
 // surcharge avec partage des donnees
 // Ecriture:  NDataBlock a; a = b;
@@ -196,5 +196,5 @@
 
 template <class T>
-NDataBlock<T>& NDataBlock<T>::operator = (const T v)
+NDataBlock<T>& NDataBlock<T>::operator = (T v)
 // surcharge avec copie des donnees (pas de partage)
 // "this" est sur-ecrit, attention au partage de reference!
@@ -202,5 +202,5 @@
 {
 if(mSz==0) throw(SzMismatchError("NDataBlock::operator=v null size\n"));
-T* p=Begin(), pe=End();
+T *p=Begin(), *pe=End();
 while (p<pe) *p++ = v;
 return *this;
@@ -213,5 +213,5 @@
 {
 if(mSz==0) throw(SzMismatchError("NDataBlock::operator+=v null size\n"));
-T* p=Begin(), pe=End();
+T *p=Begin(), *pe=End();
 while (p<pe) *p++ += b;
 return *this;
@@ -222,5 +222,5 @@
 {
 if(mSz==0) throw(SzMismatchError("NDataBlock::operator-=v null size\n"));
-T* p=Begin(), pe=End();
+T *p=Begin(), *pe=End();
 while (p<pe) *p++ -= b;
 return *this;
@@ -231,5 +231,5 @@
 {
 if(mSz==0) throw(SzMismatchError("NDataBlock::operator*=v null size\n"));
-T* p=Begin(), pe=End();
+T *p=Begin(), *pe=End();
 while (p<pe) *p++ *= b;
 return *this;
@@ -239,7 +239,7 @@
 NDataBlock<T>& NDataBlock<T>::operator /= (T b)
 {
-if(b==(<T>) 0) throw(ParmError("NDataBlock::operator/=v divide by zero\n"));
+if(b==(T) 0) throw(ParmError("NDataBlock::operator/=v divide by zero\n"));
 if(mSz==0) throw(SzMismatchError("NDataBlock::operator/=v null size\n"));
-T* p=Begin(), pe=End();
+T *p=Begin(), *pe=End();
 while (p<pe) *p++ /= b;
 return *this;
@@ -249,8 +249,8 @@
 
 template <class T>
-NDataBlock<T>& NDataBlock<T>::operator += (const NDataBlock<T>& a)
+NDataBlock<T>& NDataBlock<T>::operator += (NDataBlock<T>& a)
 {
 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator+=A size mismatch/null"));
-T* p=Begin(), pe=End(), pa=a.Begin();
+T *p=Begin(), *pe=End(), *pa=a.Begin();
 while (p<pe) *p++ += *pa++; // ca marche meme si *this=a
 return *this;
@@ -258,8 +258,8 @@
 
 template <class T>
-NDataBlock<T>& NDataBlock<T>::operator -= (const NDataBlock<T>& a)
+NDataBlock<T>& NDataBlock<T>::operator -= (NDataBlock<T>& a)
 {
 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator-=A size mismatch/null"));
-T* p=Begin(), pe=End(), pa=a.Begin();
+T *p=Begin(), *pe=End(), *pa=a.Begin();
 while (p<pe) *p++ -= *pa++; // ca marche meme si *this=a
 return *this;
@@ -267,8 +267,8 @@
 
 template <class T>
-NDataBlock<T>& NDataBlock<T>::operator *= (const NDataBlock<T>& a)
+NDataBlock<T>& NDataBlock<T>::operator *= (NDataBlock<T>& a)
 {
 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator*=A size mismatch/null"));
-T* p=Begin(), pe=End(), pa=a.Begin();
+T *p=Begin(), *pe=End(), *pa=a.Begin();
 while (p<pe) *p++ *= *pa++; // ca marche meme si *this=a
 return *this;
@@ -276,8 +276,8 @@
 
 template <class T>
-NDataBlock<T>& NDataBlock<T>::operator /= (const NDataBlock<T>& a)
+NDataBlock<T>& NDataBlock<T>::operator /= (NDataBlock<T>& a)
 {
 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator/=A size mismatch/null"));
-T* p=Begin(), pe=End(), pa=a.Begin();
+T *p=Begin(), *pe=End(), *pa=a.Begin();
 while (p<pe) *p++ /= *pa++;
 return *this;
@@ -314,5 +314,5 @@
 {
 NDataBlock<T> result(a,false); result.SetTemp(true);
-T* p=result.Begin(), pe=result.End(), pa=a.Begin();
+T *p=result.Begin(), *pe=result.End(), *pa=a.Begin();
 while(p<pe) {*p++ = b - *pa++;}
 return result;
@@ -344,5 +344,5 @@
 {
 NDataBlock<T> result(a,false); result.SetTemp(true);
-T* p=result.Begin(), pe=result.End(), pa=a.Begin();
+T *p=result.Begin(), *pe=result.End(), *pa=a.Begin();
 while(p<pe) {*p++ = b / *pa++;}
 return result;
@@ -383,5 +383,5 @@
 if(b.IsTemp()) {
   NDataBlock<T> result(b,true); result.SetTemp(true);
-  T* p=result.Begin(), pe=result.End(), pa=a.Begin();
+  T *p=result.Begin(), *pe=result.End(), *pa=a.Begin();
   while(p<pe) {*p = *pa++  - *p; p++;}
   return result;
@@ -398,5 +398,5 @@
 if(b.IsTemp()) {
   NDataBlock<T> result(b,true); result.SetTemp(true);
-  T* p=result.Begin(), pe=result.End(), pa=a.Begin();
+  T *p=result.Begin(), *pe=result.End(), *pa=a.Begin();
   while(p<pe) {*p = *pa++  / *p; p++;}
   return result;
@@ -421,6 +421,6 @@
 #pragma define_template NDataBlock<r_4>
 #pragma define_template NDataBlock<r_8>
-#pragma define_template NDataBlock<complex<float>>
-#pragma define_template NDataBlock<complex<double>>
+#pragma define_template NDataBlock< complex<float> >
+#pragma define_template NDataBlock< complex<double> >
 #endif
 
@@ -436,6 +436,6 @@
 template class NDataBlock<r_4>;
 template class NDataBlock<r_8>;
-template class NDataBlock<complex<float>>;
-template class NDataBlock<complex<double>>;
+template class NDataBlock< complex<float> >;
+template class NDataBlock< complex<double> >;
 #endif
 
@@ -451,13 +451,14 @@
 template class NDataBlock<r_4>;
 template class NDataBlock<r_8>;
-template class NDataBlock<complex<float>>;
-template class NDataBlock<complex<double>>;
+template class NDataBlock< complex<float> >;
+template class NDataBlock< complex<double> >;
 #endif
 
 #ifdef __CXX_PRAGMA_TEMPLATES__
-#pragma define_template template<class uint_1> NDataBlock<uint_1> operator + (const NDataBlock<uint_1>& a, uint_1 b);
+#pragma define_template (operator+) <float,float> mais comment on fait ca! CMV_A_FAIRE
 #endif
 
 #ifdef __GNU_TEMPLATES__
+template NDataBlock<T> operator + (const NDataBlock<T>&, const NDataBlock<T>&); mais comment on fait ca! CMV_A_FAIRE
 #endif
 
Index: /trunk/SophyaLib/BaseTools/ndatablock.h
===================================================================
--- /trunk/SophyaLib/BaseTools/ndatablock.h	(revision 248)
+++ /trunk/SophyaLib/BaseTools/ndatablock.h	(revision 249)
@@ -37,6 +37,6 @@
   inline T* Data()
          {if(mSRef) return mSRef->data; else return NULL;}
-  inline size_t  Size() const    {return mSz;}
-  inline T& operator()(size_t i) {return mSRef->data+i;}
+  inline size_t Size() const    {return mSz;}
+  inline T& operator()(size_t i) {return *(mSRef->data+i);}
 
   inline T*        Begin()        {return mSRef->data;}
@@ -49,5 +49,5 @@
 
   // Surcharge d operateurs
-  NDataBlock<T>& operator = (const NDataBlock<T>& a);
+  NDataBlock<T>& operator = (NDataBlock<T>& a);
   NDataBlock<T>& operator = (T v);
 
@@ -57,8 +57,8 @@
   NDataBlock<T>& operator /= (T b);
 
-  NDataBlock<T>& operator += (const NDataBlock<T>& a);
-  NDataBlock<T>& operator -= (const NDataBlock<T>& a);
-  NDataBlock<T>& operator *= (const NDataBlock<T>& a);
-  NDataBlock<T>& operator /= (const NDataBlock<T>& a);
+  NDataBlock<T>& operator += (NDataBlock<T>& a);
+  NDataBlock<T>& operator -= (NDataBlock<T>& a);
+  NDataBlock<T>& operator *= (NDataBlock<T>& a);
+  NDataBlock<T>& operator /= (NDataBlock<T>& a);
 
 
