Index: XMLIO_V2/dev/dev_rv/Makefile.wk
===================================================================
--- XMLIO_V2/dev/dev_rv/Makefile.wk	(revision 257)
+++ XMLIO_V2/dev/dev_rv/Makefile.wk	(revision 258)
@@ -410,5 +410,5 @@
 
 ifeq ($(VERSION), 4)
-	ELEMS_CPP = object exception xml_node xml_parser inetcdf4 inetcdf4_adv onetcdf4 lscereader mpi_interface\
+	ELEMS_CPP = object exception xml_node xml_parser inetcdf4 inetcdf4_adv onetcdf4  mpi_interface\
 	attribute attribute_template attribute_map
                
Index: XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.hpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.hpp	(revision 258)
@@ -12,7 +12,9 @@
 #define MPI_INCLUDED
 #include <netcdf.h>
-extern "C" {
+extern "C"
+{
 #include <netcdf_par.h>
 }
+>>>>>>> .r256
 
 
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/array_util.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/array_util.hpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/array_util.hpp	(revision 258)
@@ -125,8 +125,22 @@
 
    }; // CArrayUtil
+ 
+// ////////////////////////// DÃ©finitions d'opÃ©rations ////////////////////// //
    
    /// \brief Somme de _value_1 et _value_2
    template <typename DataType, typename ScalDataType>
-      DataType AUSum (DataType _value_1, ScalDataType _value_2);
+      inline DataType AUSum (DataType _value_1, ScalDataType _value_2);
+   
+   /// \brief Division de _value_1 et _value_2
+   template <typename DataType, typename ScalDataType>
+      inline DataType AUDiv (DataType _value_1, ScalDataType _value_2);
+   
+   /// \brief Maximum de _value_1 et _value_2
+   template <typename DataType, typename ScalDataType>
+      inline DataType AUMax (DataType _value_1, ScalDataType _value_2);
+   
+    /// \brief Minimum de _value_1 et _value_2
+   template <typename DataType, typename ScalDataType>
+      inline DataType AUMin (DataType _value_1, ScalDataType _value_2);
 
 } // namespace xmlioserver
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/array_util_impl.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/array_util_impl.hpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/array_util_impl.hpp	(revision 258)
@@ -13,4 +13,11 @@
  * \date    12 Juillet 2011
  */
+
+ #ifndef __XIOS_NO_EXTERN
+ 
+// standard Headers
+#include <algorithm>
+
+#endif // __XIOS_NO_EXTERN
 
 // ////////////////////////////// DÃ©clarations ////////////////////////////// //
@@ -75,4 +82,19 @@
       DataType AUSum (DataType _value_1, ScalDataType _value_2)
    { return (_value_1+_value_2); }
+   
+   // Division de _value_1 et _value_2
+   template <typename DataType, typename ScalDataType>
+      DataType AUDiv (DataType _value_1, ScalDataType _value_2)
+   { return (_value_1/_value_2); }
+   
+   // Maximum de _value_1 et _value_2
+   template <typename DataType, typename ScalDataType>
+      DataType AUMax (DataType _value_1, ScalDataType _value_2)
+   { return (std::max(_value_1, _value_2)); }
+   
+    // Minimum de _value_1 et _value_2
+   template <typename DataType, typename ScalDataType>
+      DataType AUMin (DataType _value_1, ScalDataType _value_2)
+   { return (std::min(_value_1, _value_2)); }
                                      
 } // namespace xmlioserver
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/buffer/buffer.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/buffer/buffer.cpp	(revision 258)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/buffer/buffer.cpp	(revision 258)
@@ -0,0 +1,15 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+ 
+// XMLIOServer headers
+#include "buffer.hpp" 
+
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+namespace xmlioserver {
+namespace comm {
+   
+   
+} // namespace comm
+} // namespace xmlioserver
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/buffer/buffer.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/buffer/buffer.hpp	(revision 258)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/buffer/buffer.hpp	(revision 258)
@@ -0,0 +1,121 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+ 
+#ifndef __BUFFER_HPP__
+#define __BUFFER_HPP__ 
+
+#ifndef __XIOS_NO_EXTERN
+
+// C++ standard headers
+#include <vector>
+
+// boost Headers
+#include <boost/multi_array.hpp>
+
+#endif // __XIOS_NO_EXTERN
+
+// XMLIOServer headers
+#include "xmlioserver_spl.hpp"
+
+// ////////////////////////////// DÃ©clarations ///////////////////////////// //
+
+namespace xmlioserver
+{
+   namespace comm
+   {
+      class CBuffer
+      {
+         public : // DÃ©finition de types
+
+            typedef enum buffer_data_type
+            { TBOOL8 = 0, TCHAR8, TINT32, TFLOAT32, TDOUBLE64
+            } CBufferDataType;
+            
+            typedef struct  buffer_data
+            { CBufferDataType type; bool isArray; std::size_t size; std::size_t pos;
+            } CBufferData;
+            
+         protected : // Construteurs            
+            
+            explicit CBuffer(std::size_t _size);
+            CBuffer(char * _data, std::size_t _size);            
+            CBuffer(const CBuffer & _buffer_ref);         // NIY
+            CBuffer(const CBuffer * const _buffer_ptr);   // NIY
+            
+         protected : // Destructeur
+            
+            virtual ~CBuffer(void);
+            
+         public : // Operateurs d'accÃšs
+         
+            operator char * (void);
+            char * operator[](std::size_t _position);
+            
+         public : // Accesseurs statiques
+            
+            template <class T>
+               static inline std::size_t getRequestedSize(T _data);
+            
+            template <class T>
+               static inline std::size_t getRequestedSize(boost::multi_array<T, 1> & _data);
+            
+            template <class T> static CBufferDataType getBufferDataType(void);
+            
+         public : // Accesseurs
+             
+            std::size_t getSize(std::size_t _position = 0) const;
+            char * getData(std::size_t _position = 0) const;
+            
+         public : // Accesseurs  de donnÃ©es
+
+            template <class T>
+               inline void getData(T & data, std::size_t position) const;
+            
+            template <class T>
+               inline void getDataArray(boost::multi_array<T, 1> & _data, std::size_t _position) const;
+
+         public : // Mutateurs de donnÃ©es
+            
+            template <class T>
+               inline CBufferData setData(const T & _data, std::size_t _position);
+            
+            template <class T>
+               inline CBufferData setDataArray(const boost::multi_array<T, 1> & _data, std::size_t _position);
+            
+         public : // Sortie fichier binaire
+             
+            void printToBinaryFile (const std::string & _filename);
+            
+            void printToBinaryStream (std::ostream & _ostr);
+
+         public : // Sortie fichier ascii
+             
+            virtual void printToTextFile (const std::string & _filename) = 0;
+            
+            virtual void printToTextStream (std::ostream & _ostr) = 0;
+            
+         protected : // Mutateurs de donnÃ©es privÃ©s
+            
+            void setData(const char * _data, std::size_t _size, std::size_t _position);
+            
+            void fillData(char _data, std::size_t _size, std::size_t _position);
+            
+            void setBufferData(const CBufferData & _bufdata, std::size_t _position);
+            
+         protected : // Accesseurs de donnÃ©es privÃ©s
+            
+            void getData(char * _data, std::size_t _size, std::size_t _position) const;
+            
+            void getBufferData(CBufferData & _bufdata, std::size_t  _position) const;
+            
+         private: // PropriÃ©tÃ©s privÃ©es
+            
+            bool delIdata;
+            std::size_t size;
+            const char * idata;
+            
+      }; // class CBuffer
+   } // namespace comm
+} // namespace xmlioserver
+#endif //__BUFFER_HPP__
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/exception.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/exception.cpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/exception.cpp	(revision 258)
@@ -15,4 +15,5 @@
 // Boost headers
 #include <boost/cast.hpp>
+#include <boost/format.hpp>
 
 #endif // __XIOS_NO_EXTERN
@@ -61,5 +62,6 @@
    {
       std::ostringstream oss;
-      oss << "> Error [" << this->getId() << "] : " << this->str();
+      // oss << "> Error [" << this->getId() << "] : " << this->str();
+      oss << boost::format("> Error [ %1% ] : %2%") % this->getId() % this->str(); 
       return (oss.str());
    }
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/exception_mac.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/exception_mac.hpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/exception_mac.hpp	(revision 258)
@@ -14,4 +14,11 @@
  */
 
+#ifndef __XIOS_NO_EXTERN
+
+// Boost headers
+#include <boost/format.hpp>
+
+#endif // __XIOS_NO_EXTERN
+
 // ///////////////////////////////// Macros //////////////////////////////// //
 
@@ -22,4 +29,7 @@
  *  \brief GÃ©nÃ©ration d'une exception dÃ©taillÃ©e durant l'exÃ©cution du programme.
  */
+/*! \def   XIOS_ERROR_FORMAT(id, , format_str, data)
+ *  \brief GÃ©nÃ©ration d'une exception formatÃ©e durant l'exÃ©cution du programme.
+ */
 /*! \def   XIOS_DEBUG(message)
  *  \brief Envoi d'un message de dÃ©bogage sur la sortie de logging durant l'exÃ©cution du programme.
@@ -27,8 +37,11 @@
 
 #define XIOS_INFO(message) \
-   "In file \'" __FILE__ "\', line " << __LINE__ << " -> " message << std::endl;
+   "In file \'" __FILE__ "\', line " << __LINE__ << " -> " message << std::endl
 
 #define XIOS_ERROR(id, message) \
-	CException(id).getStream() << XIOS_INFO(message)
+	xmlioserver::CException(id).getStream() << XIOS_INFO(message)
+
+#define XIOS_ERROR_FORMAT(id, format_str, data) \
+   xmlioserver::CException(id).getStream() << XIOS_INFO(<<boost::format(format_str)data)
 
 #ifdef  __XIOS_DEBUG
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/main_server.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/main_server.cpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/main_server.cpp	(revision 258)
@@ -30,4 +30,6 @@
 //~ using namespace xios::func;
 
+#include <boost/xpressive/xpressive.hpp>
+
 // Point d'entrÃ©e du programme serveur principal.
 int main (int argc, char ** argv, char ** XIOS_UNUSED (env))
@@ -37,5 +39,16 @@
       CMPIManager::Initialise(&argc, &argv);
       {
+          std::string hello( "1d 12mo 13mi" );
 
+          boost::xpressive::sregex rex = boost::xpressive::sregex::compile( "(\\d+)([ymodhis]+)" );
+          
+          boost::xpressive::sregex_iterator cur( hello.begin(), hello.end(), rex );
+          boost::xpressive::sregex_iterator end;
+
+          for( ; cur != end; ++cur )
+          {
+             boost::xpressive::smatch const &what = *cur;
+              std::cout << what[0] << '\n';
+          }
       }
       CMPIManager::Finalize();
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/onetcdf4.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/onetcdf4.cpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/onetcdf4.cpp	(revision 258)
@@ -49,7 +49,8 @@
       if (_status != NC_NOERR)
       {
-         std::string errormsg (nc_strerror(_status)); // fuite mÃ©moire ici ?
-         XIOS_ERROR("CONetCDF4::CheckError(int status)",
-              << "[ status = " << _status << " ] " << errormsg);
+         std::string errormsg (nc_strerror(_status));           // fuite mÃ©moire ici ?
+         XIOS_ERROR_FORMAT("CONetCDF4::CheckError(int status)", // Identifiant d'erreur
+                           "[ status = %1% ] %2%",              // Format du message d'erreur
+                           %_status % errormsg);                // Variables Ã©crites
       }
    }
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/onetcdf4.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/onetcdf4.hpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/onetcdf4.hpp	(revision 258)
@@ -14,5 +14,6 @@
 #define MPI_INCLUDED
 #include <netcdf.h>
-extern "C" {
+extern "C" 
+{
 #include <netcdf_par.h>
 }
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/object.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/object.hpp	(revision 257)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/object.hpp	(revision 258)
@@ -4,5 +4,5 @@
 
 #ifndef __OBJECT_HPP__
-#define	__OBJECT_HPP__
+#define __OBJECT_HPP__
 
 /**
@@ -27,6 +27,4 @@
 // ////////////////////////////// DÃ©clarations ///////////////////////////// //
 
-// Classe de gestion d'erreur.
-class CException;
 
 /// \brief Espace de nommage regroupant toutes les sources du projet.
Index: XMLIO_V2/dev/dev_rv/src4/xmlio/string_util.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src4/xmlio/string_util.hpp	(revision 258)
+++ XMLIO_V2/dev/dev_rv/src4/xmlio/string_util.hpp	(revision 258)
@@ -0,0 +1,39 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#ifndef __STRING_UTIL_HPP__
+#define __STRING_UTIL_HPP__
+
+/**
+ * \file    string_util.hpp
+ * \brief   DÃ©finition de quelques mÃ©thodes pratiques pour travailler avec les chaÃ®ne de caractÃšres (entÃªte).
+ * \author  HervÃ© Ozdoba
+ * \version 0.4
+ * \date    12 Juillet 2011
+ */
+
+ #ifndef __XIOS_NO_EXTERN
+ 
+// boost Headers
+#include <boost/multi_array.hpp>
+#include <boost/lexical_cast.hpp>
+
+#endif // __XIOS_NO_EXTERN
+
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+namespace xmlioserver
+{
+   /**
+    * \class CStringUtil
+    * \brief Classe regroupant quelques mÃ©thodes pratiques pour travailler avec les chaÃ®nes de caractÃšres.
+    */
+   class CStringUtil
+   {
+      
+   }; // CStringUtil
+   
+} // namespace xmlioserver
+
+#endif // __STRING_UTIL_HPP__
