Index: trunk/SophyaLib/BaseTools/dvlist.cc
===================================================================
--- trunk/SophyaLib/BaseTools/dvlist.cc	(revision 1837)
+++ trunk/SophyaLib/BaseTools/dvlist.cc	(revision 1870)
@@ -163,14 +163,14 @@
     {
     case MuTyV::MTVInteger :
-      SetI((*it).first, (*it).second.elval.iv);
+      SetI((*it).first, (*it).second.elval.GetIntPart());
       break;
     case  MuTyV::MTVFloat : 
-      SetD((*it).first, (*it).second.elval.dv);
+      SetD((*it).first, (*it).second.elval.GetRealPart());
       break;
     case MuTyV::MTVComplex : 
-      SetZ((*it).first, complex<r_8>((*it).second.elval.dv, (*it).second.elval.dv_im));
+      SetZ((*it).first, complex<r_8>((*it).second.elval.GetRealPart(), (*it).second.elval.GetImagPart()));
       break;
     case MuTyV::MTVString : 
-      SetS((*it).first, *((*it).second.elval.strv));
+      SetS((*it).first, *((*it).second.elval.GetStringPointer()));
       break;
     default :
@@ -223,7 +223,7 @@
 if (it == mvlist.end())  return(def);
 #if defined(__GNUG__)
-complex<r_8> z;
-z = (*it).second.elval;
-return(z);
+// complex<r_8> z;
+// z = (*it).second.elval;
+return((*it).second.elval.ToComplexD());
 #else
 return( (complex<r_8>)(*it).second.elval );
@@ -407,17 +407,17 @@
     case MuTyV::MTVInteger :
       sprintf(buff, "%s = %ld (int) %s\n", (*it).first.substr(0,64).c_str(), 
-	      (long)((*it).second.elval.iv), (*it).second.elcomm.substr(0,128).c_str());
+	      (long)((*it).second.elval.GetIntPart()), (*it).second.elcomm.substr(0,128).c_str());
       break;
     case MuTyV::MTVFloat : 
       sprintf(buff, "%s = %.20g (double) %s\n", (*it).first.substr(0,64).c_str(), 
-	      (*it).second.elval.dv, (*it).second.elcomm.substr(0,128).c_str());
+	      (*it).second.elval.GetRealPart(), (*it).second.elcomm.substr(0,128).c_str());
       break;
     case MuTyV::MTVComplex : 
       sprintf(buff, "%s = %.20g %.20g i (complex) %s\n", (*it).first.substr(0,64).c_str(), 
-	      (*it).second.elval.dv, (*it).second.elval.dv_im, (*it).second.elcomm.substr(0,128).c_str());
+	      (*it).second.elval.GetRealPart(), (*it).second.elval.GetImagPart(), (*it).second.elcomm.substr(0,128).c_str());
       break;
     case MuTyV::MTVString : 
       sprintf(buff, "%s = %s (string) %s\n", (*it).first.substr(0,64).c_str(), 
-	      (*it).second.elval.strv->substr(0,800).c_str(), (*it).second.elcomm.substr(0,128).c_str());
+	      (*it).second.elval.GetStringPointer()->substr(0,800).c_str(), (*it).second.elcomm.substr(0,128).c_str());
       break;
     default :
@@ -490,18 +490,18 @@
   switch ((*it).second.elval.Type()) {
     case MuTyV::MTVInteger :
-      sprintf(buf,"I %s %ld\n", (*it).first.substr(0,64).c_str(), (long)((*it).second.elval.iv) );
+      sprintf(buf,"I %s %ld\n", (*it).first.substr(0,64).c_str(), (long)((*it).second.elval.GetIntPart()) );
       sfw = buf;  s.PutStr(sfw);
       break;
     case MuTyV::MTVFloat : 
-      sprintf(buf,"F %s %.20g\n", (*it).first.substr(0,64).c_str(), (*it).second.elval.dv );
+      sprintf(buf,"F %s %.20g\n", (*it).first.substr(0,64).c_str(), (*it).second.elval.GetRealPart() );
       sfw = buf;  s.PutStr(sfw);
       break;
     case MuTyV::MTVComplex : 
-      sprintf(buf,"Z %s %.20g %.20g\n", (*it).first.substr(0,64).c_str(), (*it).second.elval.dv, 
-                                      (*it).second.elval.dv_im);
+      sprintf(buf,"Z %s %.20g %.20g\n", (*it).first.substr(0,64).c_str(), (*it).second.elval.GetRealPart(), 
+                                      (*it).second.elval.GetImagPart());
       sfw = buf;  s.PutStr(sfw);
       break;
     case MuTyV::MTVString : 
-      sprintf(buf,"S %s %s\n", (*it).first.substr(0,64).c_str(), (*it).second.elval.strv->substr(0,960).c_str() );
+      sprintf(buf,"S %s %s\n", (*it).first.substr(0,64).c_str(), (*it).second.elval.GetStringPointer()->substr(0,960).c_str() );
       sfw = buf;  s.PutStr(sfw);
       break;
Index: trunk/SophyaLib/BaseTools/machdefs_ac.h
===================================================================
--- trunk/SophyaLib/BaseTools/machdefs_ac.h	(revision 1837)
+++ trunk/SophyaLib/BaseTools/machdefs_ac.h	(revision 1870)
@@ -204,20 +204,10 @@
 #define ANSI_TEMPLATES
 #endif
-/* Standard C++ library classes are in the namespace std  */
-#ifdef __cplusplus
-namespace std { }
-using namespace std;
-#endif
 #endif
 
 #if defined(__SGICC__)
-/* Standard C++ library classes are in the namespace std  */
 #define HAS_STR_NPOS
 #ifndef ANSI_TEMPLATES
 #define ANSI_TEMPLATES
-#endif
-#ifdef __cplusplus
-namespace std { }
-using namespace std;
 #endif
 #endif
@@ -294,4 +284,8 @@
 
 #ifdef __cplusplus
+/* Standard C++ library classes are in the namespace std  */
+namespace std { }
+using namespace std;
+/*  SOPHYA classes are in namespace SOPHYA  */
 namespace SOPHYA {}
 using namespace SOPHYA;
Index: trunk/SophyaLib/BaseTools/machdefs_mkmf.h
===================================================================
--- trunk/SophyaLib/BaseTools/machdefs_mkmf.h	(revision 1837)
+++ trunk/SophyaLib/BaseTools/machdefs_mkmf.h	(revision 1870)
@@ -301,20 +301,10 @@
 #define ANSI_TEMPLATES
 #endif
-/* Standard C++ library classes are in the namespace std  */
-#ifdef __cplusplus
-namespace std { }
-using namespace std;
-#endif
 #endif
 
 #if defined(__SGICC__)
-/* Standard C++ library classes are in the namespace std  */
 #define HAS_STR_NPOS
 #ifndef ANSI_TEMPLATES
 #define ANSI_TEMPLATES
-#endif
-#ifdef __cplusplus
-namespace std { }
-using namespace std;
 #endif
 #endif
@@ -397,4 +387,8 @@
 
 #ifdef __cplusplus
+/* Standard C++ library classes are in the namespace std  */
+namespace std { }
+using namespace std;
+/*  SOPHYA classes are in namespace SOPHYA  */
 namespace SOPHYA {}
 using namespace SOPHYA;
Index: trunk/SophyaLib/BaseTools/mutyv.h
===================================================================
--- trunk/SophyaLib/BaseTools/mutyv.h	(revision 1837)
+++ trunk/SophyaLib/BaseTools/mutyv.h	(revision 1870)
@@ -35,7 +35,7 @@
   inline MuTyV(r_4 f) { typ = MTVFloat; dv = (r_8)f; iv = (int_8)f;  dv_im = 0.;  strv = NULL; } 
   inline MuTyV(r_8 d) { typ = MTVFloat; dv = d;  iv = (int_8)d;  dv_im = 0.;  strv = NULL; } 
-  inline MuTyV(complex<r_4> z) { typ = MTVComplex; dv = (r_8)z.real();  dv_im = z.imag();  
+  inline MuTyV(complex<r_4> const& z) { typ = MTVComplex; dv = (r_8)z.real();  dv_im = z.imag();  
                                  iv = (int_8)dv;  strv = NULL; } 
-  inline MuTyV(complex<r_8> z) { typ = MTVComplex; dv = z.real();  dv_im = z.imag();  
+  inline MuTyV(complex<r_8> const& z) { typ = MTVComplex; dv = z.real();  dv_im = z.imag();  
                                  iv = (int_8)dv;  strv = NULL; } 
 
@@ -45,17 +45,15 @@
          ~MuTyV();
  
-  inline MTVType Type() const { return typ; }
-
          MuTyV & operator= (MuTyV const & a);
-  inline uint_2  operator= (uint_2 v)  { typ = MTVInteger; iv = (int_8)v;  dv = (r_8)v;  dv_im = 0.;  return(v); }
-  inline uint_2  operator= (uint_8 v)  { typ = MTVInteger; iv = (int_8)v;  dv = (r_8)v;  dv_im = 0.;  return(v); }
-  inline int_4  operator= (int_4 v)  { typ = MTVInteger; iv = (int_8)v;  dv = (r_8)v;  dv_im = 0.;  return(v); }
-  inline int_8  operator= (int_8 v)  { typ = MTVInteger; iv = v;  dv = (r_8)v; dv_im = 0.;  return(v); }
-  inline r_4  operator= (r_4 v)  { typ = MTVFloat; dv = (r_8)v; iv = (int_8)v;  dv_im = 0.;  return(v); }
-  inline r_8  operator= (r_8 v) { typ = MTVFloat; dv = v; iv = (int_8)v;  dv_im = 0.;  return(v); }
-  inline complex<r_4> operator= (complex<r_4> v) { typ = MTVComplex; dv = (r_8)v.real();  dv_im = v.imag();
-                                                    iv = (int_8)dv;  return(v); }
-  inline complex<r_8> operator= (complex<r_8> v) { typ = MTVComplex; dv = (r_8)v.real();  dv_im = v.imag();
-                                                    iv = (int_8)dv;  return(v); }
+  inline MuTyV & operator= (uint_2 v)  { typ = MTVInteger; iv = (int_8)v;  dv = (r_8)v;  dv_im = 0.;  return(*this); }
+  inline MuTyV & operator= (uint_8 v)  { typ = MTVInteger; iv = (int_8)v;  dv = (r_8)v;  dv_im = 0.;  return(*this); }
+  inline MuTyV & operator= (int_4 v)  { typ = MTVInteger; iv = (int_8)v;  dv = (r_8)v;  dv_im = 0.;  return(*this); }
+  inline MuTyV & operator= (int_8 v)  { typ = MTVInteger; iv = v;  dv = (r_8)v; dv_im = 0.;  return(*this); }
+  inline MuTyV & operator= (r_4 v)  { typ = MTVFloat; dv = (r_8)v; iv = (int_8)v;  dv_im = 0.;  return(*this); }
+  inline MuTyV & operator= (r_8 v) { typ = MTVFloat; dv = v; iv = (int_8)v;  dv_im = 0.;  return(*this); }
+  inline MuTyV & operator= (complex<r_4> const& v) { typ = MTVComplex; dv = (r_8)v.real();  dv_im = v.imag();
+                                                    iv = (int_8)dv;  return(*this); }
+  inline MuTyV & operator= (complex<r_8> const& v) { typ = MTVComplex; dv = (r_8)v.real();  dv_im = v.imag();
+                                                    iv = (int_8)dv;  return(*this); }
          char*  operator= (char* s);
          string& operator= (string& s);
@@ -72,4 +70,16 @@
          operator string() const ; 
 
+  /* g++ a du mal avec les operateurs de conversion complex<T>   */
+  /* On definit donc les deux methodes de conversion nommees explicitement */
+  inline complex<r_4> ToComplexF() const { return(complex<r_4>((r_4)dv, (r_4)dv_im)); }
+  inline complex<r_4> ToComplexD() const { return(complex<r_8>(dv, dv_im)); }
+
+  inline MTVType Type() const { return typ; }
+  inline int_8   GetIntPart() const { return iv; }
+  inline r_8     GetRealPart() const { return dv; }
+  inline r_8     GetImagPart() const { return dv_im; }
+  inline string*  GetStringPointer() const { return (strv); } 
+
+protected:
   int_8 iv;
   r_8 dv;
Index: trunk/SophyaLib/BaseTools/sversion.h
===================================================================
--- trunk/SophyaLib/BaseTools/sversion.h	(revision 1837)
+++ trunk/SophyaLib/BaseTools/sversion.h	(revision 1870)
@@ -3,6 +3,6 @@
 
 #define SOPHYA_VERSION   1.3
-#define SOPHYA_REVISION  50 
-#define SOPHYA_TAG       "V_Dec2001"
+#define SOPHYA_REVISION  52 
+#define SOPHYA_TAG       "V_Jan2002"
 
 #endif
