Index: XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp	(revision 128)
@@ -45,6 +45,6 @@
             {
                string domid = ((*itt)->name.hasValue()) ? (string)(*itt)->name : (*itt)->getId();
-               string lonid = string("lon_").append(domid);
-               string latid = string("lat_").append(domid);
+               string lonid = (sdom.size() == 1)? string("lon"): string("lon_").append(domid);
+               string latid = (sdom.size() == 1)? string("lat"): string("lat_").append(domid);
                dims[lonid]  = (*itt)->ni;
                dims[latid]  = (*itt)->nj;
@@ -129,4 +129,5 @@
 
             Poco::HashMap<string, string> hm;
+            Poco::HashMap<string, float>  hmf;
 
             const std::set<const CDomain*> sdom = this->getRelFile()->getEnabledDomains();
@@ -137,6 +138,6 @@
             {
                string domid = ((*itt)->name.hasValue()) ? (string)(*itt)->name : (*itt)->getId();
-               string lonid = string("lon_").append(domid);
-               string latid = string("lat_").append(domid);
+               string lonid = (sdom.size() == 1)? string("lon"): string("lon_").append(domid);
+               string latid = (sdom.size() == 1)? string("lat"): string("lat_").append(domid);
 
                if (!(latVar = dataFile->add_var(latid.c_str(), ncFloat, dataFile->get_dim(latid.c_str()))))
@@ -151,13 +152,29 @@
                hm["units"]         = "degrees_north";
                hm["long_name"]     = "Latitude" ;
-               this->addStringAttributesToVar(latVar, hm);
+               hm["nav_model"]     = domid ;
+               if ((*itt)->yvalue.hasValue())
+               {
+                  hmf["valid_min"] = ((Array<double, 1>)(*itt)->yvalue)(0);
+                  hmf["valid_max"] = ((Array<double, 1>)(*itt)->yvalue)(((Array<double, 1>)(*itt)->yvalue).size()-1);
+                  this->addStringAttributesToVar(latVar, hmf);
+                  hmf.clear();
+               }
+               this->addStringAttributesToVar_str(latVar, hm);
                hm.clear();
 
                // Attribut de longitude.
-               hm["axis"]           = "X" ;
-               hm["standard_name"]  = "longitude" ;
-               hm["units"]          = "degrees_east";
-               hm["long_name"]      = "Longitude" ;
-               this->addStringAttributesToVar(lonVar, hm);
+               hm["axis"]          = "X" ;
+               hm["standard_name"] = "longitude" ;
+               hm["units"]         = "degrees_east";
+               hm["long_name"]     = "Longitude" ;
+               hm["nav_model"]     = domid ;
+               if ((*itt)->xvalue.hasValue())
+               {
+                  hmf["valid_min"] = ((Array<double, 1>)(*itt)->xvalue)(0);
+                  hmf["valid_max"] = ((Array<double, 1>)(*itt)->xvalue)(((Array<double, 1>)(*itt)->xvalue).size()-1);
+                  this->addStringAttributesToVar(lonVar, hmf);
+                  hmf.clear();
+               }
+               this->addStringAttributesToVar_str(lonVar, hm);
                hm.clear();
 
@@ -179,9 +196,19 @@
                   throw XMLIOUndefinedValueException("Impossible d'ajouter la variable "+ (*it)->getId() +" !");
 
-               hm["axis"] = "Z" ;
+               hm["axis"]     = "Z" ;
+               hm["title"]    = axisid ;
+               hm["positive"] = "unknown" ;
+
                if ((*it)->standard_name.hasValue())hm["standard_name"] = (*it)->standard_name ;
                if ((*it)->long_name.hasValue())    hm["long_name"]     = (*it)->long_name ;
                if ((*it)->unit.hasValue())         hm["units"]         = (*it)->unit;
-               this->addStringAttributesToVar(othvar, hm);
+               if ((*it)->value.hasValue())
+               {
+                  hmf["valid_min"] = ((Array<double, 1>)(*it)->value)(0);
+                  hmf["valid_max"] = ((Array<double, 1>)(*it)->value)(((Array<double, 1>)(*it)->value).size()-1);
+                  this->addStringAttributesToVar(othvar, hmf);
+                  hmf.clear();
+               }
+               this->addStringAttributesToVar_str(othvar, hm);
                hm.clear();
 
@@ -197,6 +224,8 @@
             NcVar *var  = NULL;
             Poco::HashMap<string, string> hm;
+            Poco::HashMap<string, float>  hmf;
             bool lonlat = false, wtime = true;
             const std::vector<CField*>& enabledFields = getRelFile()->getEnabledFields();
+            const std::set<const CDomain*> sdom = this->getRelFile()->getEnabledDomains();
 
             std::vector<CField*>::const_iterator it;
@@ -204,8 +233,10 @@
             for ( it = enabledFields.begin() ; it != enabledFields.end(); it++ )
             {
-                     CField*  field = (*it);
-               const CField* bfield = (*it)->getBaseObject();
-               const CDomain*  rdom = field->getGrid()->getRelDomain();
-               const CAxis*   raxis = field->getGrid()->getRelAxis();
+                     CField  *  field = (*it);
+               const CField  * bfield = (*it)->getBaseObject();
+               const CDomain *   rdom = field->getGrid()->getRelDomain();
+               const CAxis   *  raxis = field->getGrid()->getRelAxis();
+               FieldOperation*   fope = field->operation.getValue();
+               Duration      *  ffope = field->freq_op.getValue();
 
                string fieldid = (field->name.hasValue()) ? (string)field->name : bfield->getId();
@@ -213,12 +244,14 @@
                string axisid  = (raxis->name.hasValue()) ? (string)raxis->name : raxis ->getId();
 
-               string lonid = string("lon_").append(domid); // Nom de la coordonnÃ©e longitudinale associÃ©e.
-               string latid = string("lat_").append(domid); // Nom de la coordonnÃ©e latitudinale  associÃ©e.
+               string lonid = (sdom.size() == 1)? string("lon"): string("lon_").append(domid); // Nom de la coordonnÃ©e longitudinale associÃ©e.
+               string latid = (sdom.size() == 1)? string("lat"): string("lat_").append(domid); // Nom de la coordonnÃ©e latitudinale  associÃ©e.
 
                lonlat = !field->getGrid()->_hasAxis();
 
-               if (field->operation.hasValue())
+
+               ////////////////////////////////////// A DEPLACER
+               if (fope != NULL)
                { // Si une opÃ©ration sur le champ est dÃ©finie ...
-                  if (field->operation.getId().compare("once") == 0)
+                  if (fope->getId().compare("once") == 0)
                   { wtime = false; field->freq_op.setValue(NoneDu); }
                }
@@ -231,7 +264,9 @@
                // Si la frÃ©quence d'opÃ©ration n'est pas dÃ©finie, on l'initialise Ã  0s.
                // Une frÃ©quence Ã  0s signifie que l'opÃ©ration se fera Ã  chaque Ã©criture de donnÃ©es depuis la simulation.
-               if (!field->freq_op.hasValue())
+               if (ffope == NULL)
                   field->freq_op.setValue(NoneDu);
-               ((FieldOperation)field->operation).setFreqOp(Duration(field->freq_op));
+
+               field->operation.getValue()->setFreqOp(field->freq_op);
+               /////////////////////////////////////////////
 
                tvar = ncFloat;
@@ -271,8 +306,20 @@
                }
 
-               if (field->standard_name.hasValue())hm["standard_name"] = field->standard_name ;
-               if (field->long_name.hasValue())    hm["long_name"]     = field->long_name ;
-               if (field->unit.hasValue())         hm["units"]         = field->unit;
-               this->addStringAttributesToVar(var, hm);
+               if (field->standard_name.hasValue())hm["standard_name"]     = field->standard_name ;
+               if (field->long_name.hasValue())    hm["long_name"]         = field->long_name ;
+               if (field->unit.hasValue())         hm["units"]             = field->unit;
+
+               if (field->operation.hasValue())
+               {
+                  hm["online_operation"]   = field->operation.getValue()->getId();
+
+                  if (!field->operation.getValue()->getFreqOp().isNone())
+                     hm["interval_operation"] = field->operation.getValue()->getFreqOp().toString();
+                  else
+                     hm["interval_operation"] = ((Duration)this->getRelFile()->output_freq).toString();
+               }
+               hm["interval_write"] = ((Duration)this->getRelFile()->output_freq).toString();
+
+               this->addStringAttributesToVar_str(var, hm);
                hm.clear();
             }
@@ -281,5 +328,15 @@
       private :
 
-         void addStringAttributesToVar(NcVar * const var, const Poco::HashMap<string, string>& attr)
+         template <class U>
+            void addStringAttributesToVar(NcVar * const var, const Poco::HashMap<string, U>& attr)
+         {
+            typename Poco::HashMap<string, U>::ConstIterator it;
+
+            for ( it = attr.begin() ; it != attr.end(); it++ )
+               if (!var->add_att((*it).first.c_str(), (*it).second))
+                  throw XMLIOUndefinedValueException("Impossible d'ajouter l'attribut' "+ (*it).first +" Ã  la variable "+ var->name() +" !");
+         }
+
+         void addStringAttributesToVar_str(NcVar * const var, const Poco::HashMap<string, string>& attr)
          {
             Poco::HashMap<string, string>::ConstIterator it;
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/attribut.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/attribut.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/attribut.hpp	(revision 128)
@@ -64,4 +64,7 @@
          virtual void setValue(const Ctype & value_)
          { _hasValue = true ; value = value_ ;}
+
+         Ctype* getValue(void)
+         { if (!_hasValue) return(NULL); return (&value); }
 
          virtual void getValue(Ctype & value_) const
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp	(revision 128)
@@ -67,9 +67,12 @@
          }
 
-         std::cout << std::endl << " * ----------- Affichage de l'arborescence ----------- * " << std::endl << std::endl;
+         // Ecriture des avertissements obtenus jusqu'Ã  prÃ©sent.
+         std::cout << std::endl; ILogger::Flush(std::cout);
+
+         /*std::cout << " * ----------- Affichage de l'arborescence ----------- * " << std::endl << std::endl;
 
          // On Ã©crit l'arborescence rÃ©sultante du traitement sur la sortie de log.
          Context::ShowTree(std::clog);
-         std::cout << std::endl;
+         std::cout << std::endl;*/
       }
 
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp	(revision 128)
@@ -111,13 +111,13 @@
          }
 
-         virtual void resolveDescInheritance(const AttributRegistrar* const _parent = 0)
+         virtual void solveDescInheritance(const AttributRegistrar* const _parent = 0)
          {
             if (_parent != 0) return;
             // RÃ©solution des hÃ©ritages descendants pour chacun des groupes de dÃ©finitions.
-            if(fieldDef  != NULL) fieldDef ->resolveDescInheritance();
-            if(fileDef   != NULL) fileDef  ->resolveDescInheritance();
-            if(axisDef   != NULL) axisDef  ->resolveDescInheritance();
-            if(gridDef   != NULL) gridDef  ->resolveDescInheritance();
-            if(domainDef != NULL) domainDef->resolveDescInheritance();
+            if(fieldDef  != NULL) fieldDef ->solveDescInheritance();
+            if(fileDef   != NULL) fileDef  ->solveDescInheritance();
+            if(axisDef   != NULL) axisDef  ->solveDescInheritance();
+            if(gridDef   != NULL) gridDef  ->solveDescInheritance();
+            if(domainDef != NULL) domainDef->solveDescInheritance();
          }
 
@@ -154,5 +154,5 @@
 
          // Ne plus utiliser, disponible dans les classe treatment.
-         static void ResolveInheritance(void)
+         static void SolveInheritance(void)
          {
             Poco::HashMap<string, StrHashMap<Context> > &AllListContext = Context::GetAllListObject();
@@ -161,9 +161,9 @@
                // RÃ©solution des hÃ©ritages descendants (cÃ d des hÃ©ritages de groupes) pour chacun des contextes.
                Context::SetCurrentContext((*it).first);
-               ((*it).second)[(*it).first]->resolveDescInheritance();
+               ((*it).second)[(*it).first]->solveDescInheritance();
 
                // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
                const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector();
-               for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->resolveFieldRefInheritance();
+               for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->solveFieldRefInheritance();
             }
          }
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/data_treatment.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/data_treatment.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/data_treatment.hpp	(revision 128)
@@ -81,5 +81,5 @@
          void doTreatment(const AbstractCalendar& cal)
          {
-            // RÃ©solution des hÃ©ritages pour le context actuel (Context::ResolveInheritance() rÃ©soud les hÃ©ritages pour tous les contextes).
+            // RÃ©solution des hÃ©ritages pour le context actuel (Context::SolveInheritance() rÃ©soud les hÃ©ritages pour tous les contextes).
             //std::cout << "(Message temporaire) RÃ©solution des hÃ©ritages ..." << std::endl;
             this->solveAllInheritance();
@@ -119,9 +119,9 @@
          {
             // RÃ©solution des hÃ©ritages descendants (cÃ d des hÃ©ritages de groupes) pour chacun des contextes.
-            currentContext->resolveDescInheritance();
+            currentContext->solveDescInheritance();
 
             // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
             const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector();
-            for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->resolveFieldRefInheritance();
+            for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->solveFieldRefInheritance();
          }
 
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/declare_attribut.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/declare_attribut.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/declare_attribut.hpp	(revision 128)
@@ -29,5 +29,5 @@
                                                                                     \
    void setAttr##att_name(const Attr_##att_name& _newattr) { att_name = _newattr; } \
-   void set_##att_name    (const Attr_##att_name& _newattr) { att_name = _newattr; }\
+   void set_##att_name   (const Attr_##att_name& _newattr) { att_name = _newattr; }\
                                                                                     \
    void setAttr##att_name(const att_type& _newattr) { att_name.setValue(_newattr); }\
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/duration.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/duration.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/duration.hpp	(revision 128)
@@ -11,4 +11,11 @@
    {
       public :
+
+         struct _duration& operator=(const struct _duration& ddr)
+         {
+            year = ddr.year;  month  = ddr.month ; day    = ddr.day;
+            hour = ddr.hour;  minute = ddr.minute; second = ddr.second;
+            return (*this);
+         }
 
          friend std::ostream& operator<<(std::ostream& out, const struct _duration& d)
@@ -58,4 +65,22 @@
          }
 
+         bool isNone(void) const
+         {
+            if ((year==0) && (month ==0) && (day   ==0) &&
+                (hour==0) && (minute==0) && (second==0))
+               return (true);
+            return (false);
+         }
+
+         struct _duration& resolve(const AbstractCalendar&);
+
+         std::string toString(void) const
+         {
+            const struct _duration& own = *this;
+            std::ostringstream oss; oss << own; return (oss.str());
+         }
+
+      public: /* static */
+
          static struct _duration FromString(const string& str)
          {
@@ -64,6 +89,4 @@
             iss >> dr; return dr;
          }
-
-         struct _duration& resolve(const AbstractCalendar&);
 
          double year, month, day, hour, minute, second;
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp	(revision 128)
@@ -18,7 +18,4 @@
          CField(const string& _id) : ObjectTemplate<CField>(_id), FieldAttribut(), lastStored(NULL), grid(NULL), file(NULL)
          {/* Ne rien faire de plus */}
-
-         static string GetName(void) { return ("field"); }
-         static string GetDefName(void)  { return (CField::GetName()); }
 
          inline void solveGridRef(void) ;
@@ -48,4 +45,6 @@
          void setRelFile(CFile* _file) { file = _file; }
 
+      public: /* virtual */
+
          virtual CField* getReference(void) const
          {
@@ -59,4 +58,9 @@
          virtual ~CField(void)
          { if(lastStored !=  NULL) delete lastStored; }
+
+      public: /* static */
+
+         static string GetName(void) { return ("field"); }
+         static string GetDefName(void)  { return (CField::GetName()); }
 
       private :
@@ -75,3 +79,39 @@
 DECLARE_GROUP(Field)
 
+/* Pour la gestion des rÃ©fÃ©rences aux groupes de champs */
+namespace XMLIOSERVER
+{
+   template <>
+      CField& GroupTemplate<CField, FieldAttribut>::createChildRef(const CField* const _ori)
+   {
+      if (!_ori->hasId())
+         throw (new XMLIOUndefinedValueException("Impossible de crÃ©er une rÃ©fÃ©rence Ã  un Ã©lÃ©ment sans identifiant !"));
+
+      CField& obj = *ObjectTemplate<CField>::CreateObject();
+      obj.field_ref = _ori->getId();
+      childList.addObject(&obj);
+      return (obj);
+   }
+
+   template <>
+      void GroupTemplate<CField, FieldAttribut>::solveRefInheritance (void)
+   {
+      std::vector<CField*> _allf ;
+
+      if(!group_ref.hasValue() || (GetName().compare("field_group") != 0)) return;
+      if (!GroupTemplate<CField, FieldAttribut>::HasObject(group_ref))
+      { WARNING("RÃ©fÃ©rence invalide sur l'objet "+GetName()+" nommÃ© \""+((string)group_ref)+"\""); return; }
+
+      const GroupTemplate<CField, FieldAttribut>* const gref
+               = GroupTemplate<CField, FieldAttribut>::GetObject(group_ref);
+
+      gref->getAllChildren(_allf);
+      std::vector<CField*>::iterator it ;
+      for ( it = _allf.begin() ; it != _allf.end(); it++ )
+         this->createChildRef(*it);
+   }
+
+
+} // namespace XMLIOSERVER
+
 #endif // __FIELD__
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp	(revision 128)
@@ -77,8 +77,8 @@
          }
 
-         void resolveFieldRefInheritance(void)
+         void solveFieldRefInheritance(void)
          { // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence de chacun des champs contenus dans le fichier.
             std::vector<CField*> allF; this->getAllFields(allF);
-            for (unsigned int i = 0; i < allF.size(); i++) allF[i]->resolveRefInheritance();
+            for (unsigned int i = 0; i < allF.size(); i++) allF[i]->solveRefInheritance();
          }
 
@@ -153,6 +153,6 @@
          virtual void printChild(ostream& out) const { out << *vfieldGroup << std::endl; }
 
-         virtual void resolveDescInheritance(const AttributRegistrar* const _parent = 0)
-         { addAttributes(*_parent); if(vfieldGroup != NULL) vfieldGroup->resolveDescInheritance(); }
+         virtual void solveDescInheritance(const AttributRegistrar* const _parent = 0)
+         { addAttributes(*_parent); if(vfieldGroup != NULL) vfieldGroup->solveDescInheritance(); }
 
          virtual  ~CFile(void)
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/group_template.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/group_template.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/group_template.hpp	(revision 128)
@@ -5,15 +5,17 @@
 {
    template <class T, class U>
-      class GroupTemplate : public ObjectTemplate<GroupTemplate<T, U> >, public U
+      class GroupTemplate : public ObjectTemplate<GroupTemplate<T, U> >, public virtual U
    {
       public:
 
+         DECLARE_ATTR(group_ref, string) ; // Attribut prÃ©sent uniqument dans les groupes.
+
          GroupTemplate(void)
-            : ObjectTemplate<GroupTemplate<T, U> >(),  U(), childList(), groupList()
-         { /* Ne rien faire de plus */ }
+            : ObjectTemplate<GroupTemplate<T, U> >()/*,  U()*/, childList(), groupList()
+         { RegisterAttribut(&group_ref) ; }
 
          GroupTemplate(const string& _id)
-            : ObjectTemplate<GroupTemplate<T, U> >(_id), U(), childList(), groupList()
-         { /* Ne rien faire de plus */ }
+            : ObjectTemplate<GroupTemplate<T, U> >(_id)/*, U()*/, childList(), groupList()
+         { RegisterAttribut(&group_ref) ; }
 
          /// Pour les groupes d'objets enfants ///
@@ -62,4 +64,7 @@
             return (obj);
          }
+
+         T& createChildRef(const T* const _ori)
+         { return (*_ori); }
 
          T& getChild(const string& _id) const
@@ -97,4 +102,7 @@
                delete groupList.getVector()[i];
          }
+
+         virtual void solveRefInheritance (void)
+         { /* Ne rien faire de plus */ }
 
          virtual bool hasChild(void) const { return ((getNbGroup() + getNbChild())>0); }
@@ -109,5 +117,5 @@
          }
 
-         virtual void resolveDescInheritance(const AttributRegistrar* const _parent = 0)
+         virtual void solveDescInheritance(const AttributRegistrar* const _parent = 0)
          {
             const vector<T*>&  childvect = childList.getVector();
@@ -119,9 +127,11 @@
             for(unsigned int i = 0; i < childvect.size() ; i++)
             // on complÃšte les attributs des enfants.
-               childvect[i] -> resolveDescInheritance(this);
+               childvect[i] -> solveDescInheritance(this);
 
             for(unsigned int i = 0; i < groupvect.size() ; i++)
-            // on complÃšte les attributs des groupes enfants.
-               groupvect[i] -> resolveDescInheritance(this);
+            { // on complÃšte les attributs des groupes enfants.
+               groupvect[i] -> solveRefInheritance ();
+               groupvect[i] -> solveDescInheritance(this);
+            }
          }
 
@@ -144,4 +154,5 @@
                   _parse<W> (_node_inc);
                }
+
                attributes.clear();
             }
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/logger.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/logger.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/logger.hpp	(revision 128)
@@ -18,12 +18,17 @@
       private :
 
-         ILogger()
+         ILogger(void)
          { signal(SIGSEGV, SigHandler); }
+
+      private : /* static */
 
          static ILogger LOGGER;
 
-      public :
+      public : /* static */
 
          static ILogger& GetLogger(void) { return (ILogger::LOGGER); }
+
+         static void Flush(std::ostream& out = std::clog)
+         { ILogger::GetLogger().flush(out); }
 
          static void ShowBTrace(std::ostream& out = std::clog)
@@ -63,6 +68,10 @@
          }
 
-         ~ILogger(void)
-         { std::cout << str() << std::endl; }
+      public :
+
+         void flush(std::ostream& out = std::clog)
+         { out << str() << std::endl; str(""); }
+
+         ~ILogger(void) { this->flush(); }
 
    }; // class XMLIOLogger
@@ -84,12 +93,15 @@
 
    std::ostream& IncIndent(std::ostream& out) { Indent++; return (NIndent(out)); }
-   std::ostream& DecEndl(std::ostream& out) { Indent--; return (out); }
+   std::ostream& DecEndl  (std::ostream& out) { Indent--; return (out); }
    /////////////////////////////////////////////////////////////////////
 
 } // namespace XMLIOSERVER
 
-#define   ERROR(MSG)   (ILogger::GetLogger() << __FILE__ << ":" << __LINE__ << ": error : "   << MSG << std::endl)
-#define   WARNING(MSG) (ILogger::GetLogger() << __FILE__ << ":" << __LINE__ << ": warning : " << MSG << std::endl)
-#define   INFO(MSG)    (ILogger::GetLogger() << __FILE__ << ":" << __LINE__ << ": info : "    << MSG << std::endl)
+#define   ERROR(MSG)\
+   (ILogger::GetLogger() << __FILE__ << ":" << __LINE__ << ": error : "   << MSG << std::endl)
+#define   WARNING(MSG)\
+   (ILogger::GetLogger() << __FILE__ << ":" << __LINE__ << ": warning : " << MSG << std::endl)
+#define   INFO(MSG)\
+   (ILogger::GetLogger() << __FILE__ << ":" << __LINE__ << ": info : "    << MSG << std::endl)
 // A complÃ©ter.
 
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp	(revision 128)
@@ -81,8 +81,8 @@
          { out << NIndent << "<!-- No child -->" << std::endl; }
 
-         virtual void resolveDescInheritance(const AttributRegistrar* _parent = 0)
+         virtual void solveDescInheritance(const AttributRegistrar* _parent = 0)
          { this->addAttributes(*_parent); }
 
-         virtual void resolveRefInheritance (void)
+         virtual void solveRefInheritance (void)
          {
             std::set<T*> sset;
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp	(revision 127)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp	(revision 128)
@@ -67,6 +67,4 @@
 #include "file_attribut.hpp"
 
-#undef DECLARE_ATTR
-
 #include "group_template.hpp"
 #include "declare_group.hpp"
@@ -79,4 +77,5 @@
 #include "file.hpp"
 
+#undef DECLARE_ATTR
 #undef DECLARE_GROUP
 
