Index: XMLIO_V2/dev/dev_rv/src/XMLIO/attribut.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/attribut.hpp	(revision 122)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/attribut.hpp	(revision 126)
@@ -15,4 +15,24 @@
    {
       public :
+
+         Attribut(void)
+            : BaseAttribut(), _hasValue(false)
+         { /* Ne rien faire de plus */ }
+
+         Attribut(const Ctype& value_)
+            : BaseAttribut(), _hasValue(true), value(value_)
+         { /* Ne rien faire de plus */ }
+
+         Attribut(const Attribut& attr)
+            : BaseAttribut(attr), _hasValue(attr._hasValue)
+         { if (_hasValue) value = attr.value ; }
+
+         Attribut& operator = (const Attribut & attr)
+         {
+            _hasValue = attr._hasValue ;
+            if (_hasValue) this->setValue(attr.value) ;
+            return (*this) ;
+         }
+
          operator Ctype() const
          {
@@ -21,22 +41,11 @@
          }
 
-         Ctype* operator ->() { return (&value) ; }
-         Ctype& operator *() { return (value) ; }
+         Ctype* operator ->(void) { return (&value); }
+         Ctype& operator * (void) { return (value) ; }
 
-         virtual bool hasValue() const { return (_hasValue); }
+      public : /* virtual */
+
+         virtual bool hasValue(void) const { return (_hasValue); }
          virtual const char * getType(void) const = 0;
-
-         Attribut(void) : _hasValue(false) {} ;
-         Attribut(const Ctype& value_) : _hasValue(true), value(value_) {} ;
-
-         Attribut(const Attribut& attr) : _hasValue(attr._hasValue)
-         {  if (_hasValue) value = attr.value ; }
-
-         Attribut& operator = (const Attribut & attr)
-         {
-            _hasValue = attr._hasValue ;
-            if (_hasValue) setValue(attr.value) ;
-            return (*this) ;
-         }
 
          virtual void setFromString(const std::string& str)
@@ -50,6 +59,6 @@
          { value = ((Attribut*)_ba) -> value; _hasValue = true; }
 
-         virtual ostream& print(ostream & o) const
-         { if (_hasValue) o << " " << getName() << "=\"" << boolalpha << value << "\"" ; return o ; }
+         virtual ostream& print(std::ostream & _out) const
+         { if (_hasValue) _out << " " << getName() << "=\"" << boolalpha << value << "\"" ; return (_out) ; }
 
          virtual void setValue(const Ctype & value_)
@@ -62,4 +71,7 @@
          }
 
+         virtual ~Attribut()
+         { /* Ne rien faire de plus */ }
+
       private :
 
@@ -69,5 +81,5 @@
    }; // class Attribut
 
-#define SET_ARRAY_DIM(type,dim)                                              \
+#define SET_ARRAY_DIM(type, dim)                                             \
    template<>                                                                \
       void Attribut<Array<type,dim> >::setValue (const Array<type,dim>& val) \
@@ -88,5 +100,7 @@
    {
       if (_hasValue) o << " " << getName() << "=\"" << value(0);
-      for (int i = 1; i < value.size(); i++) { o << "," << value(i); }
+      /*for (int i = 1; i < value.size(); i++)
+      { o << "," << value(i); }*/
+      o << value(0) << "..." << value(value.size()-1);
       o << "\"" ;
       return (o) ;
@@ -94,16 +108,49 @@
 
    template <>
-      void Attribut<Array<double,1> >::setFromString(const std::string& str)
+      void Attribut<Array<double,1> >::setFromString(const std::string& _str)
    {
-      istringstream iss(str) ;
-      char c = '\0'; double d = 0.;
-      vector<double> vect;
-      Array<double, 1> arr;
+      istringstream iss(_str) ;
+      char c = '\0'; int size = 0;
+      double d = 0.,valsup = 0., valinf = 0.;
+      std::vector<double> vect; Array<double, 1> arr;
 
       iss >> d; vect.push_back(d);
-      while(!iss.eof ()) { iss >> c >> d; vect.push_back(d); }
+      if (!iss.eof ())
+      {
+         iss >> c;
+         switch (c)
+         {
+            case ',' : // Le tableau est gÃ©nÃ©rÃ© valeur par valeur.
+               iss.unget();
+               while(!iss.eof ())
+               { // On rÃ©cupÃšre chacune des valeurs une par une jusqu'Ã  ce que le buffer soit vide.
+                  iss >> c >> d;
+                  if (c != ',')
+                     throw XMLIOUndefinedValueException("Le tableau de valeur est mal dÃ©fini !");
+                  vect.push_back(d);
+               }
+               size = vect.size();
+               break;
+            case '(' : // Le tableau est gÃ©nÃ©rÃ© automatiquement.
+               if (!iss.eof ())
+               { // on rÃ©cupÃšre la borne supÃ©rieure
+                  valinf = d;
+                  iss >> size >> c >> d;
+                  if ((c != ')') || (size <= 0))
+                     throw XMLIOUndefinedValueException("Le tableau de valeur est mal dÃ©fini !");
+                  valsup = d;
+               }
+               d = (valsup - valinf) / (double)(size - 1);
+               for (int j = 1; j <= size; j++)
+                  vect.push_back(valinf + j * d);
+               break;
+            default :
+               throw XMLIOUndefinedValueException("Le tableau de valeur est mal dÃ©fini !");
+         }
+      }
 
-      arr.resize(vect.size());
-      for (unsigned int i = 0; i < vect.size(); i++) arr(i) = vect[i];
+      arr.resize(size);
+      for (int i = 0; i < size; i++)
+         arr(i) = vect[i];
 
       this->setValue(arr);
@@ -114,5 +161,5 @@
    {
       istringstream iss(str) ;
-      bool val = (! iss.str().compare(string(".TRUE."))) ? true : false;
+      const bool val = (! iss.str().compare(string(".TRUE."))) ? true : false;
       this->setValue(val);
    }
