Index: /XIOS/trunk/src/interface/c/icaxis.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icaxis.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icaxis.cpp	(revision 325)
@@ -0,0 +1,61 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "attribute_template_impl.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+   
+   typedef xmlioserver::tree::CAxis      * XAxisPtr;
+   typedef xmlioserver::tree::CAxisGroup * XAxisGroupPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   
+   void cxios_axis_handle_create (XAxisPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CAxis>(id).get();
+   }
+   
+   void cxios_axisgroup_handle_create (XAxisGroupPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CAxisGroup>(id).get();
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+
+   void cxios_axis_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CAxis>(id);
+   }
+
+   void cxios_axisgroup_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CAxisGroup>(id);
+   }
+   
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/iccontext.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/iccontext.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/iccontext.cpp	(revision 325)
@@ -0,0 +1,72 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "calendar_type.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef enum { D360 = 0 , ALLLEAP, NOLEAP, JULIAN, GREGORIAN } XCalendarType ;
+
+   typedef xmlioserver::tree::CContext * XContextPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   
+   void cxios_context_handle_create (XContextPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      std::vector<boost::shared_ptr<xmlioserver::tree::CContext> > def_vector =
+            xmlioserver::tree::CContext::GetContextGroup()->getChildList();
+
+      for (std::size_t i = 0; i < def_vector.size(); i++)
+	   {
+          if (def_vector[i]->getId().compare(id) == 0)
+          *_ret = def_vector[i].get();
+          return;
+      }
+      // Lever une exeception ici
+   }
+   
+   // ------------------------ Changements de contextes ------------------------
+   
+   void cxios_context_set_current(XContextPtr context, bool withswap)
+   {
+      CTreeManager::SetCurrentContextId(context->getId());
+   }
+   
+ 
+   // -------------------- VÃ©rification des identifiants -----------------------
+
+   void cxios_context_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      std::vector<boost::shared_ptr<xmlioserver::tree::CContext> > def_vector =
+            xmlioserver::tree::CContext::GetContextGroup()->getChildList();
+
+      for (std::size_t i = 0; i < def_vector.size(); i++)
+	   {
+          if (def_vector[i]->getId().compare(id) == 0)
+          *_ret = true;
+      }
+     *_ret = false;
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icdata.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icdata.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icdata.cpp	(revision 325)
@@ -0,0 +1,197 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+#include <iostream>
+
+
+#include "xmlioserver.hpp"
+#include "oasis_cinterface.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "icutil.hpp"
+#include "cxios.hpp"
+#include "client_ym.hpp"
+#include "field.hpp"
+#include "field_impl.hpp"
+#include <mpi.h>
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+   
+   typedef enum { NETCDF4 = 0 } XFileType;
+   
+   typedef xmlioserver::tree::CContext * XContextPtr;
+
+   // -------------------- Traitement des donnÃ©es ------------------------------
+   void cxios_init_server(void)
+   {
+     CXios::initServerSide();      
+   }
+
+   void cxios_init_client(const char * client_id , int len_client_id, MPI_Fint* f_local_comm, MPI_Fint* f_return_comm )
+   {
+      std::string str; 
+      MPI_Comm local_comm ;
+      MPI_Comm return_comm ;
+      
+      if (!cstr2string(client_id, len_client_id, str)) return;
+      
+      int initialized ;
+      MPI_Initialized(&initialized) ;
+      if (initialized) local_comm=MPI_Comm_f2c(*f_local_comm) ;
+      else local_comm=MPI_COMM_NULL ;
+      CXios::initClientSide(str,local_comm,return_comm);
+      *f_return_comm=MPI_Comm_c2f(return_comm) ;
+   }
+
+   void cxios_context_initialize(const char * context_id , int len_context_id, MPI_Fint* f_comm)
+   {
+     std::string str; 
+     MPI_Comm comm ;
+     
+     if (!cstr2string(context_id, len_context_id, str)) return;
+     comm=MPI_Comm_f2c(*f_comm) ;
+     ym::CClient::registerContext(str,comm) ;
+   }
+ 
+    void cxios_context_close_definition()
+   {
+     boost::shared_ptr<CContext> context =
+            CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+     context->closeDefinition() ;
+   }  
+
+   void cxios_context_finalize()
+   {
+     boost::shared_ptr<CContext> context =
+            CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+     context->finalize() ;
+   }
+   
+   void cxios_finalize()
+   {
+     CXios::clientFinalize() ;
+   }
+
+ 
+   
+   // ---------------------- Ecriture des donnÃ©es ------------------------------
+   
+   void cxios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize)
+   {
+      std::string fieldid_str;
+      boost::shared_ptr<CContext> context =
+      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
+      
+//      boost::const_multi_array_ref<double, 1> array_(data_k8,
+//          boost::extents [data_Xsize],
+//          boost::fortran_storage_order());
+      ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize]));
+      std::copy(data_k8, &(data_k8[data->num_elements()]), data->data());
+      
+//      dtreat->write_data(fieldid_str, data);
+      CField::get(fieldid_str)->setData(data) ;
+   }
+   
+   void cxios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize)
+   {
+      std::string fieldid_str;
+      boost::shared_ptr<CContext> context =
+      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      
+//      boost::const_multi_array_ref<double, 2> array_(data_k8,
+//          boost::extents [data_Xsize][data_Ysize],
+//          boost::fortran_storage_order());
+      ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize]));
+      std::copy(data_k8, &(data_k8[data->num_elements()]), data->data());
+//      dtreat->write_data(fieldid_str, data);
+      CField::get(fieldid_str)->setData(data) ;
+   }
+   
+   void cxios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
+   {
+      std::string fieldid_str;
+      boost::shared_ptr<CContext> context =
+      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
+      
+//      boost::const_multi_array_ref<double, 3> array_(data_k8,
+//          boost::extents [data_Xsize][data_Ysize][data_Zsize],
+//          boost::fortran_storage_order());
+      ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize]));
+      std::copy(data_k8, &(data_k8[data->num_elements()]), data->data());
+//      dtreat->write_data(fieldid_str, data);
+      CField::get(fieldid_str)->setData(data) ;
+
+   }
+   
+   void cxios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize)
+   {
+      std::string fieldid_str;
+      boost::shared_ptr<CContext> context =
+      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
+      
+//      boost::const_multi_array_ref<float, 1> array_(data_k4,
+//          boost::extents [data_Xsize],
+//          boost::fortran_storage_order());
+//      ARRAY(float, 1) data(new CArray<float, 1>(boost::extents [data_Xsize]));
+//      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data());
+//      dtreat->write_data(fieldid_str, data);
+      ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize]));
+      double* ptr_data=data->data() ; 
+      for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i];
+      CField::get(fieldid_str)->setData(data) ;
+   }
+   
+   void cxios_write_data_k42(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize)
+   {
+      std::string fieldid_str;
+      boost::shared_ptr<CContext> context =
+      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
+      
+//      boost::const_multi_array_ref<float, 2> array_(data_k4,
+//          boost::extents [data_Xsize][data_Ysize],
+//          boost::fortran_storage_order());
+//      ARRAY(float, 2) data(new CArray<float, 2>(boost::extents [data_Xsize][data_Ysize]));
+//      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data());
+//      dtreat->write_data(fieldid_str, data);
+      ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize]));
+      double* ptr_data=data->data() ; 
+      for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i];
+      CField::get(fieldid_str)->setData(data) ;
+   }
+   
+   void cxios_write_data_k43(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
+   {
+      std::string fieldid_str;
+      boost::shared_ptr<CContext> context =
+      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId());
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
+      
+//      boost::const_multi_array_ref<float, 3> array_(data_k4,
+//          boost::extents [data_Xsize][data_Ysize][data_Zsize],
+//          boost::fortran_storage_order());
+//      ARRAY(float, 3) data(new CArray<float, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize]));
+//      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data());
+//      dtreat->write_data(fieldid_str, data);
+      ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize]));
+      double* ptr_data=data->data() ; 
+      for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i];
+      CField::get(fieldid_str)->setData(data) ;
+    } 
+
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icdate.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icdate.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icdate.cpp	(revision 325)
@@ -0,0 +1,52 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "calendar_type.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   void cxios_set_timestep(double ts_year, double ts_month,  double ts_day,
+                          double ts_hour, double ts_minute, double ts_second)
+   {
+      try
+      {
+         date::CDuration dur = {ts_year, ts_month, ts_day, ts_hour, ts_minute, ts_second};
+         boost::shared_ptr<xmlioserver::tree::CContext> context =
+         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CContext>
+            (CObjectFactory::GetCurrentContextId());
+         
+            context->timestep.setValue(dur.toString());
+            context->sendAttributToServer("timestep") ;
+      }
+      catch (xmlioserver::CException & exc)
+      {
+         std::cerr << exc.getMessage() << std::endl;
+         exit (EXIT_FAILURE);
+      }
+   }
+   
+   void cxios_update_calendar(int step)
+   {
+      boost::shared_ptr<xmlioserver::tree::CContext> context =
+            xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CContext>
+            (CObjectFactory::GetCurrentContextId());
+      context->updateCalendar(step) ;
+      context->sendUpdateCalendar(step) ;
+      
+   }
+
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icdomain.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icdomain.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icdomain.cpp	(revision 325)
@@ -0,0 +1,60 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xmlioserver::tree::CDomain      * XDomainPtr;
+   typedef xmlioserver::tree::CDomainGroup * XDomainGroupPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   
+   void cxios_domain_handle_create (XDomainPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomain>(id).get();
+   }
+   
+   void cxios_domaingroup_handle_create (XDomainGroupPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomainGroup>(id).get();
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+
+   void cxios_domain_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomain>(id);
+   }
+
+   void cxios_domaingroup_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomainGroup>(id);
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icfield.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icfield.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icfield.cpp	(revision 325)
@@ -0,0 +1,73 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+   
+   typedef xmlioserver::tree::CField      * XFieldPtr;
+   typedef xmlioserver::tree::CFieldGroup * XFieldGroupPtr;
+   
+// --------------------------------------------------------------------------   
+// ------------------------ CrÃ©ation des handle -----------------------------
+// --------------------------------------------------------------------------   
+   
+   void cxios_field_handle_create (XFieldPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CField>(id).get();
+   }
+   
+   void cxios_fieldgroup_handle_create (XFieldGroupPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFieldGroup>(id).get();
+   }
+
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+
+   void cxios_field_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CField>(id);
+   }
+
+   void cxios_fieldgroup_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CFieldGroup>(id);
+   }
+
+// -----------------------------------------------------------------------------------------------------   
+// ------------------------- other function----------  --------------------------- ---------------------
+// -----------------------------------------------------------------------------------------------------   
+
+  void cxios_field_is_active (XFieldPtr field_hdl, bool* ret)
+  {
+    *ret = field_hdl->isActive();
+  }
+   
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icfile.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icfile.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icfile.cpp	(revision 325)
@@ -0,0 +1,60 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+   
+   typedef xmlioserver::tree::CFile      * XFilePtr;
+   typedef xmlioserver::tree::CFileGroup * XFileGroupPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   
+   void cxios_file_handle_create (XFilePtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFile>(id).get();
+   }
+   
+   void cxios_filegroup_handle_create (XFileGroupPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFileGroup>(id).get();
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+
+   void cxios_file_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CFile>(id);
+   }
+
+   void cxios_filegroup_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CFileGroup>(id);
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icgrid.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icgrid.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icgrid.cpp	(revision 325)
@@ -0,0 +1,60 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+   
+   typedef xmlioserver::tree::CGrid      * XGridPtr;
+   typedef xmlioserver::tree::CGridGroup * XGridGroupPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+  
+   void cxios_grid_handle_create (XGridPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CGrid>(id).get();
+   }
+   
+   void cxios_gridgroup_handle_create (XGridGroupPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id; 
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CGridGroup>(id).get();
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+
+   void cxios_grid_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CGrid>(id);
+   }
+
+   void cxios_gridgroup_valid_id (bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CGridGroup>(id);
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icutil.hpp
===================================================================
--- /XIOS/trunk/src/interface/c/icutil.hpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icutil.hpp	(revision 325)
@@ -0,0 +1,67 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+
+#ifndef __ICUTIL_HPP__
+#define __ICUTIL_HPP__
+
+#include <string>
+#include <string.h>
+// ///////////////////////// DÃ©finitions/DÃ©clarations /////////////////////// //
+
+inline bool cstr2string(const char * cstr, int cstr_size, std::string & str)
+{
+  std::string valtemp;
+  std::size_t d, f = 0;
+  if (cstr_size != -1) 
+  { 
+     valtemp.append (cstr, cstr_size);
+     d = valtemp.find_first_not_of(' ');
+     f = valtemp.find_last_not_of (' ');
+     str = valtemp.substr(d, f-d+1); 
+     return (true);
+  }
+  else
+  {
+     return (false);
+  }  
+}
+
+inline bool string_copy(const string& str, char* cstr,int cstr_size)
+{
+  
+  if (str.size()>cstr_size) return false ;
+  else
+  {
+    std::memset (cstr,' ',cstr_size);
+    str.copy(cstr,cstr_size) ;
+    return true ;
+  }
+}
+  template<class T>
+  inline  bool array_copy(ARRAY(T,1) array_in, T* array_out, size_t extent1)
+  {
+    if (array_in->num_elements() != extent1) return false ;
+    std::copy(array_in->data(), array_in->data() + array_in->num_elements(), array_out);
+    return true ;
+  }
+
+  template<class T>
+  inline  bool array_copy(ARRAY(T,2) array_in, T* array_out, size_t extent1, size_t extent2)
+  {
+    if (array_in->num_elements() != extent1*extent2) return false ;
+    std::copy(array_in->data(), array_in->data() + array_in->num_elements(), array_out);
+    return true ;
+  }
+
+  template<class T>
+  inline  bool array_copy(ARRAY(T,3) array_in, T* array_out, size_t extent1, size_t extent2, size_t extent3)
+  {
+    if (array_in->num_elements() != extent1*extent2*extent3) return false ;
+    std::copy(array_in->data(), array_in->data() + array_in->num_elements(), array_out);
+    return true ;
+  }        
+
+
+#endif // __ICUTIL_HPP__
Index: /XIOS/trunk/src/interface/c/icxml_tree.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icxml_tree.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/icxml_tree.cpp	(revision 325)
@@ -0,0 +1,297 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xmlioserver.hpp"
+
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+
+#include "icutil.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xmlioserver::tree::CContext * XContextPtr;
+
+   typedef xmlioserver::tree::CGrid      * XGridPtr;
+   typedef xmlioserver::tree::CGridGroup * XGridGroupPtr;
+
+   typedef xmlioserver::tree::CFile      * XFilePtr;
+   typedef xmlioserver::tree::CFileGroup * XFileGroupPtr;
+
+   typedef xmlioserver::tree::CField      * XFieldPtr;
+   typedef xmlioserver::tree::CFieldGroup * XFieldGroupPtr;
+
+   typedef xmlioserver::tree::CDomain      * XDomainPtr;
+   typedef xmlioserver::tree::CDomainGroup * XDomainGroupPtr;
+
+   typedef xmlioserver::tree::CAxis      * XAxisPtr;
+   typedef xmlioserver::tree::CAxisGroup * XAxisGroupPtr;
+   
+   // ----------------------- Ajout d'enfant Ã  un parent -----------------------
+   
+   void cxios_xml_tree_add_field
+      (XFieldGroupPtr  parent_, XFieldPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChild(child_id_str).get() ;
+         parent_->sendCreateChild(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChild().get() ;
+         parent_->sendCreateChild() ;
+      }
+  }
+   
+   void cxios_xml_tree_add_grid
+      (XGridGroupPtr   parent_, XGridPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChild(child_id_str).get() ;
+         parent_->sendCreateChild(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChild().get() ;
+         parent_->sendCreateChild() ;
+      }
+   }
+   
+   void cxios_xml_tree_add_file
+      (XFileGroupPtr parent_, XFilePtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChild(child_id_str).get() ;
+         parent_->sendCreateChild(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChild().get() ;
+         parent_->sendCreateChild() ;
+      }
+   }
+   
+   void cxios_xml_tree_add_axis
+      (XAxisGroupPtr parent_, XAxisPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChild(child_id_str).get() ;
+         parent_->sendCreateChild(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChild().get() ;
+         parent_->sendCreateChild() ;
+      }
+   }
+   
+   void cxios_xml_tree_add_domain
+      (XDomainGroupPtr parent_, XDomainPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChild(child_id_str).get() ;
+         parent_->sendCreateChild(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChild().get() ;
+         parent_->sendCreateChild() ;
+      }
+   }
+   
+   void cxios_xml_tree_add_fieldtofile
+      (XFilePtr parent_, XFieldPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+ 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->addField(child_id_str).get();
+         parent_->sendAddField(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->addField().get();
+         parent_->sendAddField() ;
+      }
+   }
+
+   // ----------------------- Ajout de groupe Ã  un parent ----------------------
+
+   void cxios_xml_tree_add_fieldgroup
+      (XFieldGroupPtr  parent_, XFieldGroupPtr * child_, const char * child_id, int child_id_size)
+   {
+     std::string child_id_str; 
+
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChildGroup(child_id_str).get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChildGroup().get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+   }
+
+   void cxios_xml_tree_add_gridgroup
+      (XGridGroupPtr   parent_, XGridGroupPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+ 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChildGroup(child_id_str).get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChildGroup().get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+   }
+
+   void cxios_xml_tree_add_filegroup
+      (XFileGroupPtr parent_, XFileGroupPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChildGroup(child_id_str).get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChildGroup().get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+   }
+
+   void cxios_xml_tree_add_axisgroup
+      (XAxisGroupPtr parent_, XAxisGroupPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChildGroup(child_id_str).get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChildGroup().get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+   }
+
+   void cxios_xml_tree_add_domaingroup
+      (XDomainGroupPtr parent_, XDomainGroupPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->createChildGroup(child_id_str).get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->createChildGroup().get() ;
+         parent_->sendCreateChildGroup(child_id_str) ;
+      }
+   }
+
+   void cxios_xml_tree_add_fieldgrouptofile
+      (XFilePtr parent_, XFieldGroupPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str; 
+ 
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         *child_ = parent_->addFieldGroup(child_id_str).get();
+         parent_->sendAddFieldGroup(child_id_str) ;
+      }
+      else
+      {
+         *child_ = parent_->addFieldGroup().get();
+         parent_->sendAddFieldGroup() ;
+      }
+   }
+   
+   
+   // ----------------------- Affichage de l'arborescence ----------------------
+   
+   void cxios_xml_tree_show   (const char * filename, int filename_size) 
+   {
+      std::string filename_str;
+      try
+      {
+         if (cstr2string(filename, filename_size, filename_str))
+            xmlioserver::CTreeManager::PrintTreeToFile(filename_str);
+         else
+            xmlioserver::CTreeManager::PrintTreeToStream(std::clog);
+      }
+      catch (xmlioserver::CException & exc)
+      {
+         std::cerr << exc.getMessage() << std::endl;
+         exit (EXIT_FAILURE);
+      }
+   }
+     
+   
+   // ----------------------- Parsing de document xml --------------------------
+   
+   void cxios_xml_parse_file  (const char * filename  , int filename_size)
+   {
+      std::string filename_str; 
+      if (!cstr2string(filename, filename_size, filename_str)) return;
+
+      try
+      {
+         xmlioserver::CTreeManager::ParseFile(filename_str);
+      }
+      catch (xmlioserver::CException & exc)
+      {
+         std::cerr << exc.getMessage() << std::endl;
+         exit (EXIT_FAILURE);
+      }
+   }
+   
+   void cxios_xml_parse_string(const char * xmlcontent, int xmlcontent_size)
+   {
+      std::string xmlcontent_str; 
+      if (!cstr2string(xmlcontent, xmlcontent_size, xmlcontent_str)) return;
+
+      try
+      {
+         xmlioserver::CTreeManager::ParseString(xmlcontent_str);
+      }
+      catch (xmlioserver::CException & exc)
+      {
+         std::cerr << exc.getMessage() << std::endl;
+         exit (EXIT_FAILURE);
+      }
+   }
+   
+
+
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/oasis_cinterface.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/oasis_cinterface.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/oasis_cinterface.cpp	(revision 325)
@@ -0,0 +1,41 @@
+#include "oasis_cinterface.hpp"
+#include <string>
+#include <mpi.h>
+
+namespace xmlioserver
+{ 
+ 
+  void oasis_init(const std::string& server_id)
+  {
+    fxios_oasis_init(server_id.data(),server_id.size()) ;
+  }
+  
+  void oasis_finalize(void)
+  {
+    fxios_oasis_finalize() ;
+  }
+  
+  void oasis_get_localcomm(MPI_Comm& comm)
+  {
+    MPI_Fint f_comm ;
+    
+    fxios_oasis_get_localcomm(&f_comm) ;
+    comm=MPI_Comm_f2c(f_comm) ;
+  }
+ 
+  void oasis_get_intracomm(MPI_Comm& comm_client_server,const std::string& server_id)
+  {
+    MPI_Fint f_comm ;
+    
+    fxios_oasis_get_intracomm(&f_comm,server_id.data(),server_id.size()) ;
+    comm_client_server=MPI_Comm_f2c(f_comm) ;
+  }
+ 
+  void oasis_get_intercomm(MPI_Comm& comm_client_server,const std::string& server_id)
+  {
+    MPI_Fint f_comm ;
+    
+    fxios_oasis_get_intercomm(&f_comm,server_id.data(),server_id.size()) ;
+    comm_client_server=MPI_Comm_f2c(f_comm) ;
+  }
+}
Index: /XIOS/trunk/src/interface/c/oasis_cinterface.hpp
===================================================================
--- /XIOS/trunk/src/interface/c/oasis_cinterface.hpp	(revision 325)
+++ /XIOS/trunk/src/interface/c/oasis_cinterface.hpp	(revision 325)
@@ -0,0 +1,24 @@
+#ifndef __OASIS_CINTERFACE__
+#define __OASIS_CINTERFACE__
+#include <string>
+#include <mpi.h>
+
+extern "C"
+{
+
+  void fxios_oasis_init(const char* server_id,int str_len) ;
+  void fxios_oasis_finalize(void) ;
+  void fxios_oasis_get_localcomm(MPI_Fint* f_comm) ;
+  void fxios_oasis_get_intracomm(MPI_Fint* f_comm_client_server,const char* client_id,int str_len) ;
+  void fxios_oasis_get_intercomm(MPI_Fint* f_comm_client_server,const char* client_id,int str_len) ;
+}
+ 
+namespace xmlioserver
+{
+  void oasis_init(const std::string& server_id) ;
+  void oasis_finalize(void) ;
+  void oasis_get_localcomm(MPI_Comm& comm) ;
+  void oasis_get_intracomm(MPI_Comm& comm_client_server,const std::string& server_id) ;
+  void oasis_get_intercomm(MPI_Comm& comm_client_server,const std::string& server_id) ;
+}
+#endif
Index: /XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 325)
@@ -0,0 +1,105 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CAxis*  axis_Ptr;
+  
+  void cxios_set_axis_long_name(axis_Ptr axis_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    axis_hdl->long_name.setValue(long_name_str);
+    axis_hdl->sendAttributToServer(axis_hdl->long_name);
+  }
+  
+  void cxios_get_axis_long_name(axis_Ptr axis_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(axis_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_axis_long_name(axis_Ptr axis_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_name(axis_Ptr axis_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    axis_hdl->name.setValue(name_str);
+    axis_hdl->sendAttributToServer(axis_hdl->name);
+  }
+  
+  void cxios_get_axis_name(axis_Ptr axis_hdl, char * name, int name_size)
+  {
+    if(!string_copy(axis_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_axis_name(axis_Ptr axis_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_size(axis_Ptr axis_hdl, int size)
+  {
+    axis_hdl->size.setValue(size);
+    axis_hdl->sendAttributToServer(axis_hdl->size);
+  }
+  
+  void cxios_get_axis_size(axis_Ptr axis_hdl, int* size)
+  {
+    *size = axis_hdl->size.getValue();
+  }
+  
+  
+  void cxios_set_axis_standard_name(axis_Ptr axis_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    axis_hdl->standard_name.setValue(standard_name_str);
+    axis_hdl->sendAttributToServer(axis_hdl->standard_name);
+  }
+  
+  void cxios_get_axis_standard_name(axis_Ptr axis_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(axis_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_axis_standard_name(axis_Ptr axis_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_unit(axis_Ptr axis_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    axis_hdl->unit.setValue(unit_str);
+    axis_hdl->sendAttributToServer(axis_hdl->unit);
+  }
+  
+  void cxios_get_axis_unit(axis_Ptr axis_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(axis_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_axis_unit(axis_Ptr axis_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axis_value(axis_Ptr axis_hdl, double* value, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(value, &(value[array_tmp->num_elements()]), array_tmp->data());
+    axis_hdl->value.setValue(array_tmp);
+    axis_hdl->sendAttributToServer(axis_hdl->value);
+  }
+  
+  void cxios_get_axis_value(axis_Ptr axis_hdl, double* value, int extent1)
+  {
+    if (!array_copy(axis_hdl->value.getValue(), value, extent1))
+     ERROR("void cxios_set_axis_value(axis_Ptr axis_hdl, double* value, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 325)
@@ -0,0 +1,120 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CAxisGroup*  axisgroup_Ptr;
+  
+  void cxios_set_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    axisgroup_hdl->group_ref.setValue(group_ref_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->group_ref);
+  }
+  
+  void cxios_get_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(axisgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    axisgroup_hdl->long_name.setValue(long_name_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->long_name);
+  }
+  
+  void cxios_get_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(axisgroup_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_axisgroup_long_name(axisgroup_Ptr axisgroup_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_name(axisgroup_Ptr axisgroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    axisgroup_hdl->name.setValue(name_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->name);
+  }
+  
+  void cxios_get_axisgroup_name(axisgroup_Ptr axisgroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(axisgroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_axisgroup_name(axisgroup_Ptr axisgroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_size(axisgroup_Ptr axisgroup_hdl, int size)
+  {
+    axisgroup_hdl->size.setValue(size);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->size);
+  }
+  
+  void cxios_get_axisgroup_size(axisgroup_Ptr axisgroup_hdl, int* size)
+  {
+    *size = axisgroup_hdl->size.getValue();
+  }
+  
+  
+  void cxios_set_axisgroup_standard_name(axisgroup_Ptr axisgroup_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    axisgroup_hdl->standard_name.setValue(standard_name_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->standard_name);
+  }
+  
+  void cxios_get_axisgroup_standard_name(axisgroup_Ptr axisgroup_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(axisgroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_axisgroup_standard_name(axisgroup_Ptr axisgroup_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    axisgroup_hdl->unit.setValue(unit_str);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->unit);
+  }
+  
+  void cxios_get_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(axisgroup_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_axisgroup_value(axisgroup_Ptr axisgroup_hdl, double* value, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(value, &(value[array_tmp->num_elements()]), array_tmp->data());
+    axisgroup_hdl->value.setValue(array_tmp);
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->value);
+  }
+  
+  void cxios_get_axisgroup_value(axisgroup_Ptr axisgroup_hdl, double* value, int extent1)
+  {
+    if (!array_copy(axisgroup_hdl->value.getValue(), value, extent1))
+     ERROR("void cxios_set_axisgroup_value(axisgroup_Ptr axisgroup_hdl, double* value, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/iccontext_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/iccontext_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/iccontext_attr.cpp	(revision 325)
@@ -0,0 +1,78 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CContext*  context_Ptr;
+  
+  void cxios_set_context_calendar_type(context_Ptr context_hdl, const char * calendar_type, int calendar_type_size)
+  {
+    std::string calendar_type_str;
+    if(!cstr2string(calendar_type, calendar_type_size, calendar_type_str)) return;
+    context_hdl->calendar_type.setValue(calendar_type_str);
+    context_hdl->sendAttributToServer(context_hdl->calendar_type);
+  }
+  
+  void cxios_get_context_calendar_type(context_Ptr context_hdl, char * calendar_type, int calendar_type_size)
+  {
+    if(!string_copy(context_hdl->calendar_type.getValue(),calendar_type , calendar_type_size))
+      ERROR("void cxios_get_context_calendar_type(context_Ptr context_hdl, char * calendar_type, int calendar_type_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_context_output_dir(context_Ptr context_hdl, const char * output_dir, int output_dir_size)
+  {
+    std::string output_dir_str;
+    if(!cstr2string(output_dir, output_dir_size, output_dir_str)) return;
+    context_hdl->output_dir.setValue(output_dir_str);
+    context_hdl->sendAttributToServer(context_hdl->output_dir);
+  }
+  
+  void cxios_get_context_output_dir(context_Ptr context_hdl, char * output_dir, int output_dir_size)
+  {
+    if(!string_copy(context_hdl->output_dir.getValue(),output_dir , output_dir_size))
+      ERROR("void cxios_get_context_output_dir(context_Ptr context_hdl, char * output_dir, int output_dir_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_context_start_date(context_Ptr context_hdl, const char * start_date, int start_date_size)
+  {
+    std::string start_date_str;
+    if(!cstr2string(start_date, start_date_size, start_date_str)) return;
+    context_hdl->start_date.setValue(start_date_str);
+    context_hdl->sendAttributToServer(context_hdl->start_date);
+  }
+  
+  void cxios_get_context_start_date(context_Ptr context_hdl, char * start_date, int start_date_size)
+  {
+    if(!string_copy(context_hdl->start_date.getValue(),start_date , start_date_size))
+      ERROR("void cxios_get_context_start_date(context_Ptr context_hdl, char * start_date, int start_date_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_context_timestep(context_Ptr context_hdl, const char * timestep, int timestep_size)
+  {
+    std::string timestep_str;
+    if(!cstr2string(timestep, timestep_size, timestep_str)) return;
+    context_hdl->timestep.setValue(timestep_str);
+    context_hdl->sendAttributToServer(context_hdl->timestep);
+  }
+  
+  void cxios_get_context_timestep(context_Ptr context_hdl, char * timestep, int timestep_size)
+  {
+    if(!string_copy(context_hdl->timestep.getValue(),timestep , timestep_size))
+      ERROR("void cxios_get_context_timestep(context_Ptr context_hdl, char * timestep, int timestep_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp	(revision 325)
@@ -0,0 +1,417 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CDomain*  domain_Ptr;
+  
+  void cxios_set_domain_data_dim(domain_Ptr domain_hdl, int data_dim)
+  {
+    domain_hdl->data_dim.setValue(data_dim);
+    domain_hdl->sendAttributToServer(domain_hdl->data_dim);
+  }
+  
+  void cxios_get_domain_data_dim(domain_Ptr domain_hdl, int* data_dim)
+  {
+    *data_dim = domain_hdl->data_dim.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_i_index, &(data_i_index[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->data_i_index.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->data_i_index);
+  }
+  
+  void cxios_get_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)
+  {
+    if (!array_copy(domain_hdl->data_i_index.getValue(), data_i_index, extent1))
+     ERROR("void cxios_set_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_data_ibegin(domain_Ptr domain_hdl, int data_ibegin)
+  {
+    domain_hdl->data_ibegin.setValue(data_ibegin);
+    domain_hdl->sendAttributToServer(domain_hdl->data_ibegin);
+  }
+  
+  void cxios_get_domain_data_ibegin(domain_Ptr domain_hdl, int* data_ibegin)
+  {
+    *data_ibegin = domain_hdl->data_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_j_index, &(data_j_index[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->data_j_index.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->data_j_index);
+  }
+  
+  void cxios_get_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)
+  {
+    if (!array_copy(domain_hdl->data_j_index.getValue(), data_j_index, extent1))
+     ERROR("void cxios_set_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_data_jbegin(domain_Ptr domain_hdl, int data_jbegin)
+  {
+    domain_hdl->data_jbegin.setValue(data_jbegin);
+    domain_hdl->sendAttributToServer(domain_hdl->data_jbegin);
+  }
+  
+  void cxios_get_domain_data_jbegin(domain_Ptr domain_hdl, int* data_jbegin)
+  {
+    *data_jbegin = domain_hdl->data_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_n_index(domain_Ptr domain_hdl, int data_n_index)
+  {
+    domain_hdl->data_n_index.setValue(data_n_index);
+    domain_hdl->sendAttributToServer(domain_hdl->data_n_index);
+  }
+  
+  void cxios_get_domain_data_n_index(domain_Ptr domain_hdl, int* data_n_index)
+  {
+    *data_n_index = domain_hdl->data_n_index.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_ni(domain_Ptr domain_hdl, int data_ni)
+  {
+    domain_hdl->data_ni.setValue(data_ni);
+    domain_hdl->sendAttributToServer(domain_hdl->data_ni);
+  }
+  
+  void cxios_get_domain_data_ni(domain_Ptr domain_hdl, int* data_ni)
+  {
+    *data_ni = domain_hdl->data_ni.getValue();
+  }
+  
+  
+  void cxios_set_domain_data_nj(domain_Ptr domain_hdl, int data_nj)
+  {
+    domain_hdl->data_nj.setValue(data_nj);
+    domain_hdl->sendAttributToServer(domain_hdl->data_nj);
+  }
+  
+  void cxios_get_domain_data_nj(domain_Ptr domain_hdl, int* data_nj)
+  {
+    *data_nj = domain_hdl->data_nj.getValue();
+  }
+  
+  
+  void cxios_set_domain_domain_group_ref(domain_Ptr domain_hdl, const char * domain_group_ref, int domain_group_ref_size)
+  {
+    std::string domain_group_ref_str;
+    if(!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
+    domain_hdl->domain_group_ref.setValue(domain_group_ref_str);
+    domain_hdl->sendAttributToServer(domain_hdl->domain_group_ref);
+  }
+  
+  void cxios_get_domain_domain_group_ref(domain_Ptr domain_hdl, char * domain_group_ref, int domain_group_ref_size)
+  {
+    if(!string_copy(domain_hdl->domain_group_ref.getValue(),domain_group_ref , domain_group_ref_size))
+      ERROR("void cxios_get_domain_domain_group_ref(domain_Ptr domain_hdl, char * domain_group_ref, int domain_group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_ibegin(domain_Ptr domain_hdl, int ibegin)
+  {
+    domain_hdl->ibegin.setValue(ibegin);
+    domain_hdl->sendAttributToServer(domain_hdl->ibegin);
+  }
+  
+  void cxios_get_domain_ibegin(domain_Ptr domain_hdl, int* ibegin)
+  {
+    *ibegin = domain_hdl->ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_iend(domain_Ptr domain_hdl, int iend)
+  {
+    domain_hdl->iend.setValue(iend);
+    domain_hdl->sendAttributToServer(domain_hdl->iend);
+  }
+  
+  void cxios_get_domain_iend(domain_Ptr domain_hdl, int* iend)
+  {
+    *iend = domain_hdl->iend.getValue();
+  }
+  
+  
+  void cxios_set_domain_jbegin(domain_Ptr domain_hdl, int jbegin)
+  {
+    domain_hdl->jbegin.setValue(jbegin);
+    domain_hdl->sendAttributToServer(domain_hdl->jbegin);
+  }
+  
+  void cxios_get_domain_jbegin(domain_Ptr domain_hdl, int* jbegin)
+  {
+    *jbegin = domain_hdl->jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_jend(domain_Ptr domain_hdl, int jend)
+  {
+    domain_hdl->jend.setValue(jend);
+    domain_hdl->sendAttributToServer(domain_hdl->jend);
+  }
+  
+  void cxios_get_domain_jend(domain_Ptr domain_hdl, int* jend)
+  {
+    *jend = domain_hdl->jend.getValue();
+  }
+  
+  
+  void cxios_set_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(latvalue, &(latvalue[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->latvalue.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->latvalue);
+  }
+  
+  void cxios_get_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)
+  {
+    if (!array_copy(domain_hdl->latvalue.getValue(), latvalue, extent1))
+     ERROR("void cxios_set_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_long_name(domain_Ptr domain_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    domain_hdl->long_name.setValue(long_name_str);
+    domain_hdl->sendAttributToServer(domain_hdl->long_name);
+  }
+  
+  void cxios_get_domain_long_name(domain_Ptr domain_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(domain_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_domain_long_name(domain_Ptr domain_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(lonvalue, &(lonvalue[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->lonvalue.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->lonvalue);
+  }
+  
+  void cxios_get_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)
+  {
+    if (!array_copy(domain_hdl->lonvalue.getValue(), lonvalue, extent1))
+     ERROR("void cxios_set_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)
+  {
+    ARRAY(bool,2) array_tmp(new CArray<bool,2>(boost::extents[extent1][extent2]));
+    std::copy(mask, &(mask[array_tmp->num_elements()]), array_tmp->data());
+    domain_hdl->mask.setValue(array_tmp);
+    domain_hdl->sendAttributToServer(domain_hdl->mask);
+  }
+  
+  void cxios_get_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)
+  {
+    if (!array_copy(domain_hdl->mask.getValue(), mask, extent1, extent2))
+     ERROR("void cxios_set_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domain_name(domain_Ptr domain_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    domain_hdl->name.setValue(name_str);
+    domain_hdl->sendAttributToServer(domain_hdl->name);
+  }
+  
+  void cxios_get_domain_name(domain_Ptr domain_hdl, char * name, int name_size)
+  {
+    if(!string_copy(domain_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_domain_name(domain_Ptr domain_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_ni(domain_Ptr domain_hdl, int ni)
+  {
+    domain_hdl->ni.setValue(ni);
+    domain_hdl->sendAttributToServer(domain_hdl->ni);
+  }
+  
+  void cxios_get_domain_ni(domain_Ptr domain_hdl, int* ni)
+  {
+    *ni = domain_hdl->ni.getValue();
+  }
+  
+  
+  void cxios_set_domain_ni_glo(domain_Ptr domain_hdl, int ni_glo)
+  {
+    domain_hdl->ni_glo.setValue(ni_glo);
+    domain_hdl->sendAttributToServer(domain_hdl->ni_glo);
+  }
+  
+  void cxios_get_domain_ni_glo(domain_Ptr domain_hdl, int* ni_glo)
+  {
+    *ni_glo = domain_hdl->ni_glo.getValue();
+  }
+  
+  
+  void cxios_set_domain_nj(domain_Ptr domain_hdl, int nj)
+  {
+    domain_hdl->nj.setValue(nj);
+    domain_hdl->sendAttributToServer(domain_hdl->nj);
+  }
+  
+  void cxios_get_domain_nj(domain_Ptr domain_hdl, int* nj)
+  {
+    *nj = domain_hdl->nj.getValue();
+  }
+  
+  
+  void cxios_set_domain_nj_glo(domain_Ptr domain_hdl, int nj_glo)
+  {
+    domain_hdl->nj_glo.setValue(nj_glo);
+    domain_hdl->sendAttributToServer(domain_hdl->nj_glo);
+  }
+  
+  void cxios_get_domain_nj_glo(domain_Ptr domain_hdl, int* nj_glo)
+  {
+    *nj_glo = domain_hdl->nj_glo.getValue();
+  }
+  
+  
+  void cxios_set_domain_standard_name(domain_Ptr domain_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    domain_hdl->standard_name.setValue(standard_name_str);
+    domain_hdl->sendAttributToServer(domain_hdl->standard_name);
+  }
+  
+  void cxios_get_domain_standard_name(domain_Ptr domain_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(domain_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_domain_standard_name(domain_Ptr domain_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domain_zoom_ibegin(domain_Ptr domain_hdl, int zoom_ibegin)
+  {
+    domain_hdl->zoom_ibegin.setValue(zoom_ibegin);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin);
+  }
+  
+  void cxios_get_domain_zoom_ibegin(domain_Ptr domain_hdl, int* zoom_ibegin)
+  {
+    *zoom_ibegin = domain_hdl->zoom_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_ibegin_loc(domain_Ptr domain_hdl, int zoom_ibegin_loc)
+  {
+    domain_hdl->zoom_ibegin_loc.setValue(zoom_ibegin_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin_loc);
+  }
+  
+  void cxios_get_domain_zoom_ibegin_loc(domain_Ptr domain_hdl, int* zoom_ibegin_loc)
+  {
+    *zoom_ibegin_loc = domain_hdl->zoom_ibegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_jbegin(domain_Ptr domain_hdl, int zoom_jbegin)
+  {
+    domain_hdl->zoom_jbegin.setValue(zoom_jbegin);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin);
+  }
+  
+  void cxios_get_domain_zoom_jbegin(domain_Ptr domain_hdl, int* zoom_jbegin)
+  {
+    *zoom_jbegin = domain_hdl->zoom_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_jbegin_loc(domain_Ptr domain_hdl, int zoom_jbegin_loc)
+  {
+    domain_hdl->zoom_jbegin_loc.setValue(zoom_jbegin_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin_loc);
+  }
+  
+  void cxios_get_domain_zoom_jbegin_loc(domain_Ptr domain_hdl, int* zoom_jbegin_loc)
+  {
+    *zoom_jbegin_loc = domain_hdl->zoom_jbegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_ni(domain_Ptr domain_hdl, int zoom_ni)
+  {
+    domain_hdl->zoom_ni.setValue(zoom_ni);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ni);
+  }
+  
+  void cxios_get_domain_zoom_ni(domain_Ptr domain_hdl, int* zoom_ni)
+  {
+    *zoom_ni = domain_hdl->zoom_ni.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_ni_loc(domain_Ptr domain_hdl, int zoom_ni_loc)
+  {
+    domain_hdl->zoom_ni_loc.setValue(zoom_ni_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_ni_loc);
+  }
+  
+  void cxios_get_domain_zoom_ni_loc(domain_Ptr domain_hdl, int* zoom_ni_loc)
+  {
+    *zoom_ni_loc = domain_hdl->zoom_ni_loc.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_nj(domain_Ptr domain_hdl, int zoom_nj)
+  {
+    domain_hdl->zoom_nj.setValue(zoom_nj);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_nj);
+  }
+  
+  void cxios_get_domain_zoom_nj(domain_Ptr domain_hdl, int* zoom_nj)
+  {
+    *zoom_nj = domain_hdl->zoom_nj.getValue();
+  }
+  
+  
+  void cxios_set_domain_zoom_nj_loc(domain_Ptr domain_hdl, int zoom_nj_loc)
+  {
+    domain_hdl->zoom_nj_loc.setValue(zoom_nj_loc);
+    domain_hdl->sendAttributToServer(domain_hdl->zoom_nj_loc);
+  }
+  
+  void cxios_get_domain_zoom_nj_loc(domain_Ptr domain_hdl, int* zoom_nj_loc)
+  {
+    *zoom_nj_loc = domain_hdl->zoom_nj_loc.getValue();
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 325)
@@ -0,0 +1,432 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CDomainGroup*  domaingroup_Ptr;
+  
+  void cxios_set_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int data_dim)
+  {
+    domaingroup_hdl->data_dim.setValue(data_dim);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_dim);
+  }
+  
+  void cxios_get_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int* data_dim)
+  {
+    *data_dim = domaingroup_hdl->data_dim.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_i_index(domaingroup_Ptr domaingroup_hdl, int* data_i_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_i_index, &(data_i_index[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->data_i_index.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_i_index);
+  }
+  
+  void cxios_get_domaingroup_data_i_index(domaingroup_Ptr domaingroup_hdl, int* data_i_index, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->data_i_index.getValue(), data_i_index, extent1))
+     ERROR("void cxios_set_domaingroup_data_i_index(domaingroup_Ptr domaingroup_hdl, int* data_i_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_data_ibegin(domaingroup_Ptr domaingroup_hdl, int data_ibegin)
+  {
+    domaingroup_hdl->data_ibegin.setValue(data_ibegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ibegin);
+  }
+  
+  void cxios_get_domaingroup_data_ibegin(domaingroup_Ptr domaingroup_hdl, int* data_ibegin)
+  {
+    *data_ibegin = domaingroup_hdl->data_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_j_index(domaingroup_Ptr domaingroup_hdl, int* data_j_index, int extent1)
+  {
+    ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1]));
+    std::copy(data_j_index, &(data_j_index[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->data_j_index.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_j_index);
+  }
+  
+  void cxios_get_domaingroup_data_j_index(domaingroup_Ptr domaingroup_hdl, int* data_j_index, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->data_j_index.getValue(), data_j_index, extent1))
+     ERROR("void cxios_set_domaingroup_data_j_index(domaingroup_Ptr domaingroup_hdl, int* data_j_index, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_data_jbegin(domaingroup_Ptr domaingroup_hdl, int data_jbegin)
+  {
+    domaingroup_hdl->data_jbegin.setValue(data_jbegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_jbegin);
+  }
+  
+  void cxios_get_domaingroup_data_jbegin(domaingroup_Ptr domaingroup_hdl, int* data_jbegin)
+  {
+    *data_jbegin = domaingroup_hdl->data_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_n_index(domaingroup_Ptr domaingroup_hdl, int data_n_index)
+  {
+    domaingroup_hdl->data_n_index.setValue(data_n_index);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_n_index);
+  }
+  
+  void cxios_get_domaingroup_data_n_index(domaingroup_Ptr domaingroup_hdl, int* data_n_index)
+  {
+    *data_n_index = domaingroup_hdl->data_n_index.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_ni(domaingroup_Ptr domaingroup_hdl, int data_ni)
+  {
+    domaingroup_hdl->data_ni.setValue(data_ni);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ni);
+  }
+  
+  void cxios_get_domaingroup_data_ni(domaingroup_Ptr domaingroup_hdl, int* data_ni)
+  {
+    *data_ni = domaingroup_hdl->data_ni.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_data_nj(domaingroup_Ptr domaingroup_hdl, int data_nj)
+  {
+    domaingroup_hdl->data_nj.setValue(data_nj);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_nj);
+  }
+  
+  void cxios_get_domaingroup_data_nj(domaingroup_Ptr domaingroup_hdl, int* data_nj)
+  {
+    *data_nj = domaingroup_hdl->data_nj.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_domain_group_ref(domaingroup_Ptr domaingroup_hdl, const char * domain_group_ref, int domain_group_ref_size)
+  {
+    std::string domain_group_ref_str;
+    if(!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
+    domaingroup_hdl->domain_group_ref.setValue(domain_group_ref_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->domain_group_ref);
+  }
+  
+  void cxios_get_domaingroup_domain_group_ref(domaingroup_Ptr domaingroup_hdl, char * domain_group_ref, int domain_group_ref_size)
+  {
+    if(!string_copy(domaingroup_hdl->domain_group_ref.getValue(),domain_group_ref , domain_group_ref_size))
+      ERROR("void cxios_get_domaingroup_domain_group_ref(domaingroup_Ptr domaingroup_hdl, char * domain_group_ref, int domain_group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_group_ref(domaingroup_Ptr domaingroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    domaingroup_hdl->group_ref.setValue(group_ref_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->group_ref);
+  }
+  
+  void cxios_get_domaingroup_group_ref(domaingroup_Ptr domaingroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(domaingroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_domaingroup_group_ref(domaingroup_Ptr domaingroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_ibegin(domaingroup_Ptr domaingroup_hdl, int ibegin)
+  {
+    domaingroup_hdl->ibegin.setValue(ibegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ibegin);
+  }
+  
+  void cxios_get_domaingroup_ibegin(domaingroup_Ptr domaingroup_hdl, int* ibegin)
+  {
+    *ibegin = domaingroup_hdl->ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_iend(domaingroup_Ptr domaingroup_hdl, int iend)
+  {
+    domaingroup_hdl->iend.setValue(iend);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->iend);
+  }
+  
+  void cxios_get_domaingroup_iend(domaingroup_Ptr domaingroup_hdl, int* iend)
+  {
+    *iend = domaingroup_hdl->iend.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_jbegin(domaingroup_Ptr domaingroup_hdl, int jbegin)
+  {
+    domaingroup_hdl->jbegin.setValue(jbegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jbegin);
+  }
+  
+  void cxios_get_domaingroup_jbegin(domaingroup_Ptr domaingroup_hdl, int* jbegin)
+  {
+    *jbegin = domaingroup_hdl->jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_jend(domaingroup_Ptr domaingroup_hdl, int jend)
+  {
+    domaingroup_hdl->jend.setValue(jend);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jend);
+  }
+  
+  void cxios_get_domaingroup_jend(domaingroup_Ptr domaingroup_hdl, int* jend)
+  {
+    *jend = domaingroup_hdl->jend.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_latvalue(domaingroup_Ptr domaingroup_hdl, double* latvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(latvalue, &(latvalue[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->latvalue.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->latvalue);
+  }
+  
+  void cxios_get_domaingroup_latvalue(domaingroup_Ptr domaingroup_hdl, double* latvalue, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->latvalue.getValue(), latvalue, extent1))
+     ERROR("void cxios_set_domaingroup_latvalue(domaingroup_Ptr domaingroup_hdl, double* latvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    domaingroup_hdl->long_name.setValue(long_name_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->long_name);
+  }
+  
+  void cxios_get_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(domaingroup_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_lonvalue(domaingroup_Ptr domaingroup_hdl, double* lonvalue, int extent1)
+  {
+    ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1]));
+    std::copy(lonvalue, &(lonvalue[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->lonvalue.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->lonvalue);
+  }
+  
+  void cxios_get_domaingroup_lonvalue(domaingroup_Ptr domaingroup_hdl, double* lonvalue, int extent1)
+  {
+    if (!array_copy(domaingroup_hdl->lonvalue.getValue(), lonvalue, extent1))
+     ERROR("void cxios_set_domaingroup_lonvalue(domaingroup_Ptr domaingroup_hdl, double* lonvalue, int extent1)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_mask(domaingroup_Ptr domaingroup_hdl, bool* mask, int extent1, int extent2)
+  {
+    ARRAY(bool,2) array_tmp(new CArray<bool,2>(boost::extents[extent1][extent2]));
+    std::copy(mask, &(mask[array_tmp->num_elements()]), array_tmp->data());
+    domaingroup_hdl->mask.setValue(array_tmp);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->mask);
+  }
+  
+  void cxios_get_domaingroup_mask(domaingroup_Ptr domaingroup_hdl, bool* mask, int extent1, int extent2)
+  {
+    if (!array_copy(domaingroup_hdl->mask.getValue(), mask, extent1, extent2))
+     ERROR("void cxios_set_domaingroup_mask(domaingroup_Ptr domaingroup_hdl, bool* mask, int extent1, int extent2)",<<"Output array size is not conform to array size attribute") ;
+  }
+  
+  
+  void cxios_set_domaingroup_name(domaingroup_Ptr domaingroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    domaingroup_hdl->name.setValue(name_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->name);
+  }
+  
+  void cxios_get_domaingroup_name(domaingroup_Ptr domaingroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(domaingroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_domaingroup_name(domaingroup_Ptr domaingroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_ni(domaingroup_Ptr domaingroup_hdl, int ni)
+  {
+    domaingroup_hdl->ni.setValue(ni);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni);
+  }
+  
+  void cxios_get_domaingroup_ni(domaingroup_Ptr domaingroup_hdl, int* ni)
+  {
+    *ni = domaingroup_hdl->ni.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_ni_glo(domaingroup_Ptr domaingroup_hdl, int ni_glo)
+  {
+    domaingroup_hdl->ni_glo.setValue(ni_glo);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni_glo);
+  }
+  
+  void cxios_get_domaingroup_ni_glo(domaingroup_Ptr domaingroup_hdl, int* ni_glo)
+  {
+    *ni_glo = domaingroup_hdl->ni_glo.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_nj(domaingroup_Ptr domaingroup_hdl, int nj)
+  {
+    domaingroup_hdl->nj.setValue(nj);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj);
+  }
+  
+  void cxios_get_domaingroup_nj(domaingroup_Ptr domaingroup_hdl, int* nj)
+  {
+    *nj = domaingroup_hdl->nj.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_nj_glo(domaingroup_Ptr domaingroup_hdl, int nj_glo)
+  {
+    domaingroup_hdl->nj_glo.setValue(nj_glo);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj_glo);
+  }
+  
+  void cxios_get_domaingroup_nj_glo(domaingroup_Ptr domaingroup_hdl, int* nj_glo)
+  {
+    *nj_glo = domaingroup_hdl->nj_glo.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    domaingroup_hdl->standard_name.setValue(standard_name_str);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->standard_name);
+  }
+  
+  void cxios_get_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(domaingroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ibegin(domaingroup_Ptr domaingroup_hdl, int zoom_ibegin)
+  {
+    domaingroup_hdl->zoom_ibegin.setValue(zoom_ibegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin);
+  }
+  
+  void cxios_get_domaingroup_zoom_ibegin(domaingroup_Ptr domaingroup_hdl, int* zoom_ibegin)
+  {
+    *zoom_ibegin = domaingroup_hdl->zoom_ibegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ibegin_loc(domaingroup_Ptr domaingroup_hdl, int zoom_ibegin_loc)
+  {
+    domaingroup_hdl->zoom_ibegin_loc.setValue(zoom_ibegin_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_ibegin_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_ibegin_loc)
+  {
+    *zoom_ibegin_loc = domaingroup_hdl->zoom_ibegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_jbegin(domaingroup_Ptr domaingroup_hdl, int zoom_jbegin)
+  {
+    domaingroup_hdl->zoom_jbegin.setValue(zoom_jbegin);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin);
+  }
+  
+  void cxios_get_domaingroup_zoom_jbegin(domaingroup_Ptr domaingroup_hdl, int* zoom_jbegin)
+  {
+    *zoom_jbegin = domaingroup_hdl->zoom_jbegin.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_jbegin_loc(domaingroup_Ptr domaingroup_hdl, int zoom_jbegin_loc)
+  {
+    domaingroup_hdl->zoom_jbegin_loc.setValue(zoom_jbegin_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_jbegin_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_jbegin_loc)
+  {
+    *zoom_jbegin_loc = domaingroup_hdl->zoom_jbegin_loc.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ni(domaingroup_Ptr domaingroup_hdl, int zoom_ni)
+  {
+    domaingroup_hdl->zoom_ni.setValue(zoom_ni);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni);
+  }
+  
+  void cxios_get_domaingroup_zoom_ni(domaingroup_Ptr domaingroup_hdl, int* zoom_ni)
+  {
+    *zoom_ni = domaingroup_hdl->zoom_ni.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_ni_loc(domaingroup_Ptr domaingroup_hdl, int zoom_ni_loc)
+  {
+    domaingroup_hdl->zoom_ni_loc.setValue(zoom_ni_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_ni_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_ni_loc)
+  {
+    *zoom_ni_loc = domaingroup_hdl->zoom_ni_loc.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_nj(domaingroup_Ptr domaingroup_hdl, int zoom_nj)
+  {
+    domaingroup_hdl->zoom_nj.setValue(zoom_nj);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj);
+  }
+  
+  void cxios_get_domaingroup_zoom_nj(domaingroup_Ptr domaingroup_hdl, int* zoom_nj)
+  {
+    *zoom_nj = domaingroup_hdl->zoom_nj.getValue();
+  }
+  
+  
+  void cxios_set_domaingroup_zoom_nj_loc(domaingroup_Ptr domaingroup_hdl, int zoom_nj_loc)
+  {
+    domaingroup_hdl->zoom_nj_loc.setValue(zoom_nj_loc);
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj_loc);
+  }
+  
+  void cxios_get_domaingroup_zoom_nj_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_nj_loc)
+  {
+    *zoom_nj_loc = domaingroup_hdl->zoom_nj_loc.getValue();
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icfield_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icfield_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icfield_attr.cpp	(revision 325)
@@ -0,0 +1,231 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CField*  field_Ptr;
+  
+  void cxios_set_field_axis_ref(field_Ptr field_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    field_hdl->axis_ref.setValue(axis_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->axis_ref);
+  }
+  
+  void cxios_get_field_axis_ref(field_Ptr field_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(field_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_field_axis_ref(field_Ptr field_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_default_value(field_Ptr field_hdl, double default_value)
+  {
+    field_hdl->default_value.setValue(default_value);
+    field_hdl->sendAttributToServer(field_hdl->default_value);
+  }
+  
+  void cxios_get_field_default_value(field_Ptr field_hdl, double* default_value)
+  {
+    *default_value = field_hdl->default_value.getValue();
+  }
+  
+  
+  void cxios_set_field_domain_ref(field_Ptr field_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    field_hdl->domain_ref.setValue(domain_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->domain_ref);
+  }
+  
+  void cxios_get_field_domain_ref(field_Ptr field_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(field_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_field_domain_ref(field_Ptr field_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_enabled(field_Ptr field_hdl, bool enabled)
+  {
+    field_hdl->enabled.setValue(enabled);
+    field_hdl->sendAttributToServer(field_hdl->enabled);
+  }
+  
+  void cxios_get_field_enabled(field_Ptr field_hdl, bool* enabled)
+  {
+    *enabled = field_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_field_field_ref(field_Ptr field_hdl, const char * field_ref, int field_ref_size)
+  {
+    std::string field_ref_str;
+    if(!cstr2string(field_ref, field_ref_size, field_ref_str)) return;
+    field_hdl->field_ref.setValue(field_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->field_ref);
+  }
+  
+  void cxios_get_field_field_ref(field_Ptr field_hdl, char * field_ref, int field_ref_size)
+  {
+    if(!string_copy(field_hdl->field_ref.getValue(),field_ref , field_ref_size))
+      ERROR("void cxios_get_field_field_ref(field_Ptr field_hdl, char * field_ref, int field_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_freq_offset(field_Ptr field_hdl, const char * freq_offset, int freq_offset_size)
+  {
+    std::string freq_offset_str;
+    if(!cstr2string(freq_offset, freq_offset_size, freq_offset_str)) return;
+    field_hdl->freq_offset.setValue(freq_offset_str);
+    field_hdl->sendAttributToServer(field_hdl->freq_offset);
+  }
+  
+  void cxios_get_field_freq_offset(field_Ptr field_hdl, char * freq_offset, int freq_offset_size)
+  {
+    if(!string_copy(field_hdl->freq_offset.getValue(),freq_offset , freq_offset_size))
+      ERROR("void cxios_get_field_freq_offset(field_Ptr field_hdl, char * freq_offset, int freq_offset_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_freq_op(field_Ptr field_hdl, const char * freq_op, int freq_op_size)
+  {
+    std::string freq_op_str;
+    if(!cstr2string(freq_op, freq_op_size, freq_op_str)) return;
+    field_hdl->freq_op.setValue(freq_op_str);
+    field_hdl->sendAttributToServer(field_hdl->freq_op);
+  }
+  
+  void cxios_get_field_freq_op(field_Ptr field_hdl, char * freq_op, int freq_op_size)
+  {
+    if(!string_copy(field_hdl->freq_op.getValue(),freq_op , freq_op_size))
+      ERROR("void cxios_get_field_freq_op(field_Ptr field_hdl, char * freq_op, int freq_op_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_grid_ref(field_Ptr field_hdl, const char * grid_ref, int grid_ref_size)
+  {
+    std::string grid_ref_str;
+    if(!cstr2string(grid_ref, grid_ref_size, grid_ref_str)) return;
+    field_hdl->grid_ref.setValue(grid_ref_str);
+    field_hdl->sendAttributToServer(field_hdl->grid_ref);
+  }
+  
+  void cxios_get_field_grid_ref(field_Ptr field_hdl, char * grid_ref, int grid_ref_size)
+  {
+    if(!string_copy(field_hdl->grid_ref.getValue(),grid_ref , grid_ref_size))
+      ERROR("void cxios_get_field_grid_ref(field_Ptr field_hdl, char * grid_ref, int grid_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_level(field_Ptr field_hdl, int level)
+  {
+    field_hdl->level.setValue(level);
+    field_hdl->sendAttributToServer(field_hdl->level);
+  }
+  
+  void cxios_get_field_level(field_Ptr field_hdl, int* level)
+  {
+    *level = field_hdl->level.getValue();
+  }
+  
+  
+  void cxios_set_field_long_name(field_Ptr field_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    field_hdl->long_name.setValue(long_name_str);
+    field_hdl->sendAttributToServer(field_hdl->long_name);
+  }
+  
+  void cxios_get_field_long_name(field_Ptr field_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(field_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_field_long_name(field_Ptr field_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_name(field_Ptr field_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    field_hdl->name.setValue(name_str);
+    field_hdl->sendAttributToServer(field_hdl->name);
+  }
+  
+  void cxios_get_field_name(field_Ptr field_hdl, char * name, int name_size)
+  {
+    if(!string_copy(field_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_field_name(field_Ptr field_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_operation(field_Ptr field_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if(!cstr2string(operation, operation_size, operation_str)) return;
+    field_hdl->operation.setValue(operation_str);
+    field_hdl->sendAttributToServer(field_hdl->operation);
+  }
+  
+  void cxios_get_field_operation(field_Ptr field_hdl, char * operation, int operation_size)
+  {
+    if(!string_copy(field_hdl->operation.getValue(),operation , operation_size))
+      ERROR("void cxios_get_field_operation(field_Ptr field_hdl, char * operation, int operation_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_prec(field_Ptr field_hdl, int prec)
+  {
+    field_hdl->prec.setValue(prec);
+    field_hdl->sendAttributToServer(field_hdl->prec);
+  }
+  
+  void cxios_get_field_prec(field_Ptr field_hdl, int* prec)
+  {
+    *prec = field_hdl->prec.getValue();
+  }
+  
+  
+  void cxios_set_field_standard_name(field_Ptr field_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    field_hdl->standard_name.setValue(standard_name_str);
+    field_hdl->sendAttributToServer(field_hdl->standard_name);
+  }
+  
+  void cxios_get_field_standard_name(field_Ptr field_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(field_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_field_standard_name(field_Ptr field_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_field_unit(field_Ptr field_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    field_hdl->unit.setValue(unit_str);
+    field_hdl->sendAttributToServer(field_hdl->unit);
+  }
+  
+  void cxios_get_field_unit(field_Ptr field_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(field_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_field_unit(field_Ptr field_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 325)
@@ -0,0 +1,246 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CFieldGroup*  fieldgroup_Ptr;
+  
+  void cxios_set_fieldgroup_axis_ref(fieldgroup_Ptr fieldgroup_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    fieldgroup_hdl->axis_ref.setValue(axis_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->axis_ref);
+  }
+  
+  void cxios_get_fieldgroup_axis_ref(fieldgroup_Ptr fieldgroup_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_fieldgroup_axis_ref(fieldgroup_Ptr fieldgroup_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_default_value(fieldgroup_Ptr fieldgroup_hdl, double default_value)
+  {
+    fieldgroup_hdl->default_value.setValue(default_value);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->default_value);
+  }
+  
+  void cxios_get_fieldgroup_default_value(fieldgroup_Ptr fieldgroup_hdl, double* default_value)
+  {
+    *default_value = fieldgroup_hdl->default_value.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_domain_ref(fieldgroup_Ptr fieldgroup_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    fieldgroup_hdl->domain_ref.setValue(domain_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->domain_ref);
+  }
+  
+  void cxios_get_fieldgroup_domain_ref(fieldgroup_Ptr fieldgroup_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_fieldgroup_domain_ref(fieldgroup_Ptr fieldgroup_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_enabled(fieldgroup_Ptr fieldgroup_hdl, bool enabled)
+  {
+    fieldgroup_hdl->enabled.setValue(enabled);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->enabled);
+  }
+  
+  void cxios_get_fieldgroup_enabled(fieldgroup_Ptr fieldgroup_hdl, bool* enabled)
+  {
+    *enabled = fieldgroup_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, const char * field_ref, int field_ref_size)
+  {
+    std::string field_ref_str;
+    if(!cstr2string(field_ref, field_ref_size, field_ref_str)) return;
+    fieldgroup_hdl->field_ref.setValue(field_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->field_ref);
+  }
+  
+  void cxios_get_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, char * field_ref, int field_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->field_ref.getValue(),field_ref , field_ref_size))
+      ERROR("void cxios_get_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, char * field_ref, int field_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_freq_offset(fieldgroup_Ptr fieldgroup_hdl, const char * freq_offset, int freq_offset_size)
+  {
+    std::string freq_offset_str;
+    if(!cstr2string(freq_offset, freq_offset_size, freq_offset_str)) return;
+    fieldgroup_hdl->freq_offset.setValue(freq_offset_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->freq_offset);
+  }
+  
+  void cxios_get_fieldgroup_freq_offset(fieldgroup_Ptr fieldgroup_hdl, char * freq_offset, int freq_offset_size)
+  {
+    if(!string_copy(fieldgroup_hdl->freq_offset.getValue(),freq_offset , freq_offset_size))
+      ERROR("void cxios_get_fieldgroup_freq_offset(fieldgroup_Ptr fieldgroup_hdl, char * freq_offset, int freq_offset_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_freq_op(fieldgroup_Ptr fieldgroup_hdl, const char * freq_op, int freq_op_size)
+  {
+    std::string freq_op_str;
+    if(!cstr2string(freq_op, freq_op_size, freq_op_str)) return;
+    fieldgroup_hdl->freq_op.setValue(freq_op_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->freq_op);
+  }
+  
+  void cxios_get_fieldgroup_freq_op(fieldgroup_Ptr fieldgroup_hdl, char * freq_op, int freq_op_size)
+  {
+    if(!string_copy(fieldgroup_hdl->freq_op.getValue(),freq_op , freq_op_size))
+      ERROR("void cxios_get_fieldgroup_freq_op(fieldgroup_Ptr fieldgroup_hdl, char * freq_op, int freq_op_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_grid_ref(fieldgroup_Ptr fieldgroup_hdl, const char * grid_ref, int grid_ref_size)
+  {
+    std::string grid_ref_str;
+    if(!cstr2string(grid_ref, grid_ref_size, grid_ref_str)) return;
+    fieldgroup_hdl->grid_ref.setValue(grid_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->grid_ref);
+  }
+  
+  void cxios_get_fieldgroup_grid_ref(fieldgroup_Ptr fieldgroup_hdl, char * grid_ref, int grid_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->grid_ref.getValue(),grid_ref , grid_ref_size))
+      ERROR("void cxios_get_fieldgroup_grid_ref(fieldgroup_Ptr fieldgroup_hdl, char * grid_ref, int grid_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_group_ref(fieldgroup_Ptr fieldgroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    fieldgroup_hdl->group_ref.setValue(group_ref_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->group_ref);
+  }
+  
+  void cxios_get_fieldgroup_group_ref(fieldgroup_Ptr fieldgroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(fieldgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_fieldgroup_group_ref(fieldgroup_Ptr fieldgroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_level(fieldgroup_Ptr fieldgroup_hdl, int level)
+  {
+    fieldgroup_hdl->level.setValue(level);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->level);
+  }
+  
+  void cxios_get_fieldgroup_level(fieldgroup_Ptr fieldgroup_hdl, int* level)
+  {
+    *level = fieldgroup_hdl->level.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_long_name(fieldgroup_Ptr fieldgroup_hdl, const char * long_name, int long_name_size)
+  {
+    std::string long_name_str;
+    if(!cstr2string(long_name, long_name_size, long_name_str)) return;
+    fieldgroup_hdl->long_name.setValue(long_name_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->long_name);
+  }
+  
+  void cxios_get_fieldgroup_long_name(fieldgroup_Ptr fieldgroup_hdl, char * long_name, int long_name_size)
+  {
+    if(!string_copy(fieldgroup_hdl->long_name.getValue(),long_name , long_name_size))
+      ERROR("void cxios_get_fieldgroup_long_name(fieldgroup_Ptr fieldgroup_hdl, char * long_name, int long_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    fieldgroup_hdl->name.setValue(name_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->name);
+  }
+  
+  void cxios_get_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(fieldgroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if(!cstr2string(operation, operation_size, operation_str)) return;
+    fieldgroup_hdl->operation.setValue(operation_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->operation);
+  }
+  
+  void cxios_get_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, char * operation, int operation_size)
+  {
+    if(!string_copy(fieldgroup_hdl->operation.getValue(),operation , operation_size))
+      ERROR("void cxios_get_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, char * operation, int operation_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_prec(fieldgroup_Ptr fieldgroup_hdl, int prec)
+  {
+    fieldgroup_hdl->prec.setValue(prec);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->prec);
+  }
+  
+  void cxios_get_fieldgroup_prec(fieldgroup_Ptr fieldgroup_hdl, int* prec)
+  {
+    *prec = fieldgroup_hdl->prec.getValue();
+  }
+  
+  
+  void cxios_set_fieldgroup_standard_name(fieldgroup_Ptr fieldgroup_hdl, const char * standard_name, int standard_name_size)
+  {
+    std::string standard_name_str;
+    if(!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
+    fieldgroup_hdl->standard_name.setValue(standard_name_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->standard_name);
+  }
+  
+  void cxios_get_fieldgroup_standard_name(fieldgroup_Ptr fieldgroup_hdl, char * standard_name, int standard_name_size)
+  {
+    if(!string_copy(fieldgroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+      ERROR("void cxios_get_fieldgroup_standard_name(fieldgroup_Ptr fieldgroup_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, const char * unit, int unit_size)
+  {
+    std::string unit_str;
+    if(!cstr2string(unit, unit_size, unit_str)) return;
+    fieldgroup_hdl->unit.setValue(unit_str);
+    fieldgroup_hdl->sendAttributToServer(fieldgroup_hdl->unit);
+  }
+  
+  void cxios_get_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, char * unit, int unit_size)
+  {
+    if(!string_copy(fieldgroup_hdl->unit.getValue(),unit , unit_size))
+      ERROR("void cxios_get_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, char * unit, int unit_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icfile_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icfile_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icfile_attr.cpp	(revision 325)
@@ -0,0 +1,147 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CFile*  file_Ptr;
+  
+  void cxios_set_file_description(file_Ptr file_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    file_hdl->description.setValue(description_str);
+    file_hdl->sendAttributToServer(file_hdl->description);
+  }
+  
+  void cxios_get_file_description(file_Ptr file_hdl, char * description, int description_size)
+  {
+    if(!string_copy(file_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_file_description(file_Ptr file_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_enabled(file_Ptr file_hdl, bool enabled)
+  {
+    file_hdl->enabled.setValue(enabled);
+    file_hdl->sendAttributToServer(file_hdl->enabled);
+  }
+  
+  void cxios_get_file_enabled(file_Ptr file_hdl, bool* enabled)
+  {
+    *enabled = file_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_file_name(file_Ptr file_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    file_hdl->name.setValue(name_str);
+    file_hdl->sendAttributToServer(file_hdl->name);
+  }
+  
+  void cxios_get_file_name(file_Ptr file_hdl, char * name, int name_size)
+  {
+    if(!string_copy(file_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_file_name(file_Ptr file_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_name_suffix(file_Ptr file_hdl, const char * name_suffix, int name_suffix_size)
+  {
+    std::string name_suffix_str;
+    if(!cstr2string(name_suffix, name_suffix_size, name_suffix_str)) return;
+    file_hdl->name_suffix.setValue(name_suffix_str);
+    file_hdl->sendAttributToServer(file_hdl->name_suffix);
+  }
+  
+  void cxios_get_file_name_suffix(file_Ptr file_hdl, char * name_suffix, int name_suffix_size)
+  {
+    if(!string_copy(file_hdl->name_suffix.getValue(),name_suffix , name_suffix_size))
+      ERROR("void cxios_get_file_name_suffix(file_Ptr file_hdl, char * name_suffix, int name_suffix_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_output_freq(file_Ptr file_hdl, const char * output_freq, int output_freq_size)
+  {
+    std::string output_freq_str;
+    if(!cstr2string(output_freq, output_freq_size, output_freq_str)) return;
+    file_hdl->output_freq.setValue(output_freq_str);
+    file_hdl->sendAttributToServer(file_hdl->output_freq);
+  }
+  
+  void cxios_get_file_output_freq(file_Ptr file_hdl, char * output_freq, int output_freq_size)
+  {
+    if(!string_copy(file_hdl->output_freq.getValue(),output_freq , output_freq_size))
+      ERROR("void cxios_get_file_output_freq(file_Ptr file_hdl, char * output_freq, int output_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_output_level(file_Ptr file_hdl, int output_level)
+  {
+    file_hdl->output_level.setValue(output_level);
+    file_hdl->sendAttributToServer(file_hdl->output_level);
+  }
+  
+  void cxios_get_file_output_level(file_Ptr file_hdl, int* output_level)
+  {
+    *output_level = file_hdl->output_level.getValue();
+  }
+  
+  
+  void cxios_set_file_split_freq(file_Ptr file_hdl, const char * split_freq, int split_freq_size)
+  {
+    std::string split_freq_str;
+    if(!cstr2string(split_freq, split_freq_size, split_freq_str)) return;
+    file_hdl->split_freq.setValue(split_freq_str);
+    file_hdl->sendAttributToServer(file_hdl->split_freq);
+  }
+  
+  void cxios_get_file_split_freq(file_Ptr file_hdl, char * split_freq, int split_freq_size)
+  {
+    if(!string_copy(file_hdl->split_freq.getValue(),split_freq , split_freq_size))
+      ERROR("void cxios_get_file_split_freq(file_Ptr file_hdl, char * split_freq, int split_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_sync_freq(file_Ptr file_hdl, const char * sync_freq, int sync_freq_size)
+  {
+    std::string sync_freq_str;
+    if(!cstr2string(sync_freq, sync_freq_size, sync_freq_str)) return;
+    file_hdl->sync_freq.setValue(sync_freq_str);
+    file_hdl->sendAttributToServer(file_hdl->sync_freq);
+  }
+  
+  void cxios_get_file_sync_freq(file_Ptr file_hdl, char * sync_freq, int sync_freq_size)
+  {
+    if(!string_copy(file_hdl->sync_freq.getValue(),sync_freq , sync_freq_size))
+      ERROR("void cxios_get_file_sync_freq(file_Ptr file_hdl, char * sync_freq, int sync_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_file_type(file_Ptr file_hdl, const char * type, int type_size)
+  {
+    std::string type_str;
+    if(!cstr2string(type, type_size, type_str)) return;
+    file_hdl->type.setValue(type_str);
+    file_hdl->sendAttributToServer(file_hdl->type);
+  }
+  
+  void cxios_get_file_type(file_Ptr file_hdl, char * type, int type_size)
+  {
+    if(!string_copy(file_hdl->type.getValue(),type , type_size))
+      ERROR("void cxios_get_file_type(file_Ptr file_hdl, char * type, int type_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp	(revision 325)
@@ -0,0 +1,162 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CFileGroup*  filegroup_Ptr;
+  
+  void cxios_set_filegroup_description(filegroup_Ptr filegroup_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    filegroup_hdl->description.setValue(description_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->description);
+  }
+  
+  void cxios_get_filegroup_description(filegroup_Ptr filegroup_hdl, char * description, int description_size)
+  {
+    if(!string_copy(filegroup_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_filegroup_description(filegroup_Ptr filegroup_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_enabled(filegroup_Ptr filegroup_hdl, bool enabled)
+  {
+    filegroup_hdl->enabled.setValue(enabled);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->enabled);
+  }
+  
+  void cxios_get_filegroup_enabled(filegroup_Ptr filegroup_hdl, bool* enabled)
+  {
+    *enabled = filegroup_hdl->enabled.getValue();
+  }
+  
+  
+  void cxios_set_filegroup_group_ref(filegroup_Ptr filegroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    filegroup_hdl->group_ref.setValue(group_ref_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->group_ref);
+  }
+  
+  void cxios_get_filegroup_group_ref(filegroup_Ptr filegroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(filegroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_filegroup_group_ref(filegroup_Ptr filegroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_name(filegroup_Ptr filegroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    filegroup_hdl->name.setValue(name_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->name);
+  }
+  
+  void cxios_get_filegroup_name(filegroup_Ptr filegroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(filegroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_filegroup_name(filegroup_Ptr filegroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_name_suffix(filegroup_Ptr filegroup_hdl, const char * name_suffix, int name_suffix_size)
+  {
+    std::string name_suffix_str;
+    if(!cstr2string(name_suffix, name_suffix_size, name_suffix_str)) return;
+    filegroup_hdl->name_suffix.setValue(name_suffix_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->name_suffix);
+  }
+  
+  void cxios_get_filegroup_name_suffix(filegroup_Ptr filegroup_hdl, char * name_suffix, int name_suffix_size)
+  {
+    if(!string_copy(filegroup_hdl->name_suffix.getValue(),name_suffix , name_suffix_size))
+      ERROR("void cxios_get_filegroup_name_suffix(filegroup_Ptr filegroup_hdl, char * name_suffix, int name_suffix_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_output_freq(filegroup_Ptr filegroup_hdl, const char * output_freq, int output_freq_size)
+  {
+    std::string output_freq_str;
+    if(!cstr2string(output_freq, output_freq_size, output_freq_str)) return;
+    filegroup_hdl->output_freq.setValue(output_freq_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->output_freq);
+  }
+  
+  void cxios_get_filegroup_output_freq(filegroup_Ptr filegroup_hdl, char * output_freq, int output_freq_size)
+  {
+    if(!string_copy(filegroup_hdl->output_freq.getValue(),output_freq , output_freq_size))
+      ERROR("void cxios_get_filegroup_output_freq(filegroup_Ptr filegroup_hdl, char * output_freq, int output_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_output_level(filegroup_Ptr filegroup_hdl, int output_level)
+  {
+    filegroup_hdl->output_level.setValue(output_level);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->output_level);
+  }
+  
+  void cxios_get_filegroup_output_level(filegroup_Ptr filegroup_hdl, int* output_level)
+  {
+    *output_level = filegroup_hdl->output_level.getValue();
+  }
+  
+  
+  void cxios_set_filegroup_split_freq(filegroup_Ptr filegroup_hdl, const char * split_freq, int split_freq_size)
+  {
+    std::string split_freq_str;
+    if(!cstr2string(split_freq, split_freq_size, split_freq_str)) return;
+    filegroup_hdl->split_freq.setValue(split_freq_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->split_freq);
+  }
+  
+  void cxios_get_filegroup_split_freq(filegroup_Ptr filegroup_hdl, char * split_freq, int split_freq_size)
+  {
+    if(!string_copy(filegroup_hdl->split_freq.getValue(),split_freq , split_freq_size))
+      ERROR("void cxios_get_filegroup_split_freq(filegroup_Ptr filegroup_hdl, char * split_freq, int split_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_sync_freq(filegroup_Ptr filegroup_hdl, const char * sync_freq, int sync_freq_size)
+  {
+    std::string sync_freq_str;
+    if(!cstr2string(sync_freq, sync_freq_size, sync_freq_str)) return;
+    filegroup_hdl->sync_freq.setValue(sync_freq_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->sync_freq);
+  }
+  
+  void cxios_get_filegroup_sync_freq(filegroup_Ptr filegroup_hdl, char * sync_freq, int sync_freq_size)
+  {
+    if(!string_copy(filegroup_hdl->sync_freq.getValue(),sync_freq , sync_freq_size))
+      ERROR("void cxios_get_filegroup_sync_freq(filegroup_Ptr filegroup_hdl, char * sync_freq, int sync_freq_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_filegroup_type(filegroup_Ptr filegroup_hdl, const char * type, int type_size)
+  {
+    std::string type_str;
+    if(!cstr2string(type, type_size, type_str)) return;
+    filegroup_hdl->type.setValue(type_str);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->type);
+  }
+  
+  void cxios_get_filegroup_type(filegroup_Ptr filegroup_hdl, char * type, int type_size)
+  {
+    if(!string_copy(filegroup_hdl->type.getValue(),type , type_size))
+      ERROR("void cxios_get_filegroup_type(filegroup_Ptr filegroup_hdl, char * type, int type_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp	(revision 325)
@@ -0,0 +1,78 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CGrid*  grid_Ptr;
+  
+  void cxios_set_grid_axis_ref(grid_Ptr grid_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    grid_hdl->axis_ref.setValue(axis_ref_str);
+    grid_hdl->sendAttributToServer(grid_hdl->axis_ref);
+  }
+  
+  void cxios_get_grid_axis_ref(grid_Ptr grid_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(grid_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_grid_axis_ref(grid_Ptr grid_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_grid_description(grid_Ptr grid_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    grid_hdl->description.setValue(description_str);
+    grid_hdl->sendAttributToServer(grid_hdl->description);
+  }
+  
+  void cxios_get_grid_description(grid_Ptr grid_hdl, char * description, int description_size)
+  {
+    if(!string_copy(grid_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_grid_description(grid_Ptr grid_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_grid_domain_ref(grid_Ptr grid_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    grid_hdl->domain_ref.setValue(domain_ref_str);
+    grid_hdl->sendAttributToServer(grid_hdl->domain_ref);
+  }
+  
+  void cxios_get_grid_domain_ref(grid_Ptr grid_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(grid_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_grid_domain_ref(grid_Ptr grid_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_grid_name(grid_Ptr grid_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    grid_hdl->name.setValue(name_str);
+    grid_hdl->sendAttributToServer(grid_hdl->name);
+  }
+  
+  void cxios_get_grid_name(grid_Ptr grid_hdl, char * name, int name_size)
+  {
+    if(!string_copy(grid_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_grid_name(grid_Ptr grid_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp	(revision 325)
+++ /XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp	(revision 325)
@@ -0,0 +1,93 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                   *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xmlioserver.hpp"
+#include "attribute_template_impl.hpp"
+#include "object_template_impl.hpp"
+#include "group_template_impl.hpp"
+#include "icutil.hpp"
+
+extern "C"
+{
+  typedef xmlioserver::tree::CGridGroup*  gridgroup_Ptr;
+  
+  void cxios_set_gridgroup_axis_ref(gridgroup_Ptr gridgroup_hdl, const char * axis_ref, int axis_ref_size)
+  {
+    std::string axis_ref_str;
+    if(!cstr2string(axis_ref, axis_ref_size, axis_ref_str)) return;
+    gridgroup_hdl->axis_ref.setValue(axis_ref_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->axis_ref);
+  }
+  
+  void cxios_get_gridgroup_axis_ref(gridgroup_Ptr gridgroup_hdl, char * axis_ref, int axis_ref_size)
+  {
+    if(!string_copy(gridgroup_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+      ERROR("void cxios_get_gridgroup_axis_ref(gridgroup_Ptr gridgroup_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_description(gridgroup_Ptr gridgroup_hdl, const char * description, int description_size)
+  {
+    std::string description_str;
+    if(!cstr2string(description, description_size, description_str)) return;
+    gridgroup_hdl->description.setValue(description_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->description);
+  }
+  
+  void cxios_get_gridgroup_description(gridgroup_Ptr gridgroup_hdl, char * description, int description_size)
+  {
+    if(!string_copy(gridgroup_hdl->description.getValue(),description , description_size))
+      ERROR("void cxios_get_gridgroup_description(gridgroup_Ptr gridgroup_hdl, char * description, int description_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_domain_ref(gridgroup_Ptr gridgroup_hdl, const char * domain_ref, int domain_ref_size)
+  {
+    std::string domain_ref_str;
+    if(!cstr2string(domain_ref, domain_ref_size, domain_ref_str)) return;
+    gridgroup_hdl->domain_ref.setValue(domain_ref_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->domain_ref);
+  }
+  
+  void cxios_get_gridgroup_domain_ref(gridgroup_Ptr gridgroup_hdl, char * domain_ref, int domain_ref_size)
+  {
+    if(!string_copy(gridgroup_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+      ERROR("void cxios_get_gridgroup_domain_ref(gridgroup_Ptr gridgroup_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_group_ref(gridgroup_Ptr gridgroup_hdl, const char * group_ref, int group_ref_size)
+  {
+    std::string group_ref_str;
+    if(!cstr2string(group_ref, group_ref_size, group_ref_str)) return;
+    gridgroup_hdl->group_ref.setValue(group_ref_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->group_ref);
+  }
+  
+  void cxios_get_gridgroup_group_ref(gridgroup_Ptr gridgroup_hdl, char * group_ref, int group_ref_size)
+  {
+    if(!string_copy(gridgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+      ERROR("void cxios_get_gridgroup_group_ref(gridgroup_Ptr gridgroup_hdl, char * group_ref, int group_ref_size)", <<"Input string is to short");
+  }
+  
+  
+  void cxios_set_gridgroup_name(gridgroup_Ptr gridgroup_hdl, const char * name, int name_size)
+  {
+    std::string name_str;
+    if(!cstr2string(name, name_size, name_str)) return;
+    gridgroup_hdl->name.setValue(name_str);
+    gridgroup_hdl->sendAttributToServer(gridgroup_hdl->name);
+  }
+  
+  void cxios_get_gridgroup_name(gridgroup_Ptr gridgroup_hdl, char * name, int name_size)
+  {
+    if(!string_copy(gridgroup_hdl->name.getValue(),name , name_size))
+      ERROR("void cxios_get_gridgroup_name(gridgroup_Ptr gridgroup_hdl, char * name, int name_size)", <<"Input string is to short");
+  }
+  
+  
+  
+}
Index: /XIOS/trunk/src/interface/fortran/axis_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/axis_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/axis_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE cxios_axis_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_axis_handle_create
+
+      SUBROUTINE cxios_axis_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_axis_valid_id
+
+   END INTERFACE
+     
+END MODULE AXIS_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/axisgroup_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/axisgroup_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/axisgroup_interface.f90	(revision 325)
@@ -0,0 +1,23 @@
+MODULE AXISGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+  
+      SUBROUTINE cxios_axisgroup_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_axisgroup_handle_create
+
+      SUBROUTINE cxios_axisgroup_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_axisgroup_valid_id
+
+   END INTERFACE
+     
+END MODULE AXISGROUP_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/context_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/context_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/context_interface.f90	(revision 325)
@@ -0,0 +1,28 @@
+MODULE CONTEXT_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE cxios_context_handle_create(ret, idt, idt_size) BIND(C)
+         import C_CHAR, C_INTPTR_T, C_INT
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_context_handle_create
+      
+      SUBROUTINE cxios_context_set_current(context, withswap) BIND(C)
+         import C_BOOL, C_INT, C_INTPTR_T
+         INTEGER (kind = C_INTPTR_T), VALUE :: context
+         LOGICAL (kind = C_BOOL)    , VALUE :: withswap
+      END SUBROUTINE cxios_context_set_current
+
+      SUBROUTINE cxios_context_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_context_valid_id
+
+   END INTERFACE
+     
+END MODULE CONTEXT_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/domain_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/domain_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/domain_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE DOMAIN_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+       
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+       
+      SUBROUTINE cxios_domain_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_domain_handle_create
+
+      SUBROUTINE cxios_domain_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_domain_valid_id
+
+   END INTERFACE
+       
+END MODULE DOMAIN_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/domaingroup_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/domaingroup_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/domaingroup_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE DOMAINGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+       
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+       
+      SUBROUTINE cxios_domaingroup_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_domaingroup_handle_create
+
+      SUBROUTINE cxios_domaingroup_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_domaingroup_valid_id
+
+   END INTERFACE
+       
+END MODULE DOMAINGROUP_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/field_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/field_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/field_interface.f90	(revision 325)
@@ -0,0 +1,28 @@
+MODULE FIELD_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE cxios_field_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_field_handle_create
+
+      SUBROUTINE cxios_field_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_field_valid_id
+
+      SUBROUTINE cxios_field_is_active(field_hdl, ret) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: field_hdl
+         LOGICAL  (kind = C_BOOL)                   :: ret
+      END SUBROUTINE cxios_field_is_active
+
+   END INTERFACE
+   
+END MODULE FIELD_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/fieldgroup_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/fieldgroup_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/fieldgroup_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE FIELDGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE cxios_fieldgroup_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_fieldgroup_handle_create
+
+      SUBROUTINE cxios_fieldgroup_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_fieldgroup_valid_id
+   
+   END INTERFACE
+   
+END MODULE FIELDGROUP_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/file_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/file_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/file_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE FILE_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE cxios_file_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_file_handle_create
+
+      SUBROUTINE cxios_file_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_file_valid_id
+
+   END INTERFACE
+   
+END MODULE FILE_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/filegroup_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/filegroup_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/filegroup_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE FILEGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE cxios_filegroup_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_filegroup_handle_create
+
+      SUBROUTINE cxios_filegroup_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_filegroup_valid_id
+
+   END INTERFACE
+   
+END MODULE FILEGROUP_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/grid_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/grid_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/grid_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE GRID_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_grid_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_grid_handle_create
+
+      SUBROUTINE cxios_grid_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_grid_valid_id
+
+   END INTERFACE
+     
+END MODULE GRID_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/gridgroup_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/gridgroup_interface.f90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/gridgroup_interface.f90	(revision 325)
@@ -0,0 +1,22 @@
+MODULE GRIDGROUP_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE cxios_domaingroup_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_domaingroup_handle_create
+
+      SUBROUTINE cxios_gridgroup_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_gridgroup_valid_id
+
+   END INTERFACE
+     
+END MODULE GRIDGROUP_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/iaxis.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/iaxis.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/iaxis.F90	(revision 325)
@@ -0,0 +1,56 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IAXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE AXIS_INTERFACE
+   USE AXISGROUP_INTERFACE
+   
+   TYPE txios(axis)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(axis)
+   
+   TYPE txios(axisgroup)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(axisgroup)
+   
+
+         
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_axis_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt      
+      TYPE(txios(axis)) , INTENT(OUT):: ret
+      CALL cxios_axis_handle_create(ret%daddr, idt, len(idt))            
+   END SUBROUTINE xios(get_axis_handle)
+   
+   SUBROUTINE xios(get_axisgroup_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)    , INTENT(IN) :: idt      
+      TYPE(txios(axisgroup)), INTENT(OUT):: ret
+
+      CALL cxios_axisgroup_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_axisgroup_handle)
+
+   LOGICAL FUNCTION xios(is_valid_axis)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+      
+      CALL cxios_axis_valid_id(val, idt, len(idt))
+      xios(is_valid_axis) = val
+
+   END FUNCTION  xios(is_valid_axis)
+
+   LOGICAL FUNCTION xios(is_valid_axisgroup)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_axisgroup_valid_id(val, idt, len(idt))
+      xios(is_valid_axisgroup) = val
+
+   END FUNCTION  xios(is_valid_axisgroup)
+
+END MODULE IAXIS
Index: /XIOS/trunk/src/interface/fortran/icontext.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/icontext.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/icontext.F90	(revision 325)
@@ -0,0 +1,52 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE ICONTEXT
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE CONTEXT_INTERFACE
+!   USE icontext_attr
+   USE IDATE
+
+    
+   TYPE txios(context)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(context)
+      
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+   
+   SUBROUTINE xios(get_context_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)  , INTENT(IN)  :: idt      
+      TYPE(txios(context)), INTENT(OUT):: ret
+
+      CALL cxios_context_handle_create(ret%daddr, idt, len(idt))            
+   END SUBROUTINE xios(get_context_handle)
+   
+   SUBROUTINE xios(set_current_context)(context, withswap)
+      IMPLICIT NONE
+
+      TYPE(txios(context))          , INTENT(IN) :: context
+      LOGICAL             , OPTIONAL, INTENT(IN) :: withswap
+      LOGICAL (kind = 1)                       :: wswap
+
+      IF (PRESENT(withswap)) THEN
+         wswap = withswap
+      ELSE
+         wswap = .FALSE.
+      END IF
+      CALL cxios_context_set_current(context%daddr, wswap)
+
+   END SUBROUTINE xios(set_current_context)
+ 
+   LOGICAL FUNCTION xios(is_valid_context)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_context_valid_id(val, idt, len(idt));
+      xios(is_valid_context) = val
+
+   END FUNCTION  xios(is_valid_context)
+
+   
+END MODULE ICONTEXT
Index: /XIOS/trunk/src/interface/fortran/idata.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/idata.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/idata.F90	(revision 325)
@@ -0,0 +1,195 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IDATA
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE ICONTEXT
+   
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE  cxios_init_server() BIND(C)
+      END SUBROUTINE cxios_init_server
+
+     SUBROUTINE cxios_init_client(client_id, len_client_id, f_local_comm, f_return_comm) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: client_id
+         INTEGER  (kind = C_INT)     , VALUE        :: len_client_id
+         INTEGER  (kind = C_INT)                    :: f_local_comm
+         INTEGER  (kind = C_INT)                    :: f_return_comm
+      END SUBROUTINE cxios_init_client
+      
+      SUBROUTINE  cxios_context_initialize(context_id,len_context_id,f_comm) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: context_id
+         INTEGER  (kind = C_INT)     , VALUE        :: len_context_id
+         INTEGER  (kind = C_INT)                    :: f_comm
+      END SUBROUTINE cxios_context_initialize
+
+       SUBROUTINE  cxios_context_close_definition() BIND(C)
+         USE ISO_C_BINDING
+      END SUBROUTINE cxios_context_close_definition
+     
+
+       SUBROUTINE  cxios_context_finalize() BIND(C)
+         USE ISO_C_BINDING
+      END SUBROUTINE cxios_context_finalize
+     
+ 
+      SUBROUTINE  cxios_finalize() BIND(C)
+      END SUBROUTINE cxios_finalize
+
+ 
+      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_write_data_k81
+      
+      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
+      END SUBROUTINE cxios_write_data_k82
+      
+      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
+      END SUBROUTINE cxios_write_data_k83
+      
+      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_write_data_k41
+      
+      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
+      END SUBROUTINE cxios_write_data_k42
+      
+      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
+      END SUBROUTINE cxios_write_data_k43
+      
+   END INTERFACE
+   
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE  xios(init_server)()
+   IMPLICIT NONE
+     CALL cxios_init_server()
+   END SUBROUTINE xios(init_server)
+   
+   SUBROUTINE  xios(initialize)(client_id, local_comm, return_comm)
+   IMPLICIT NONE
+   INCLUDE 'mpif.h'
+   CHARACTER(LEN=*),INTENT(IN) :: client_id
+   INTEGER,INTENT(IN),OPTIONAL         :: local_comm  
+   INTEGER,INTENT(OUT),OPTIONAL        :: return_comm
+   INTEGER :: f_local_comm
+   INTEGER :: f_return_comm
+   
+      IF (PRESENT(local_comm)) THEN
+        f_local_comm=local_comm 
+      ELSE
+        f_local_comm = MPI_COMM_NULL 
+      ENDIF
+      
+      CALL cxios_init_client(client_id,LEN(client_id),f_local_comm,f_return_comm)
+ 
+      IF (PRESENT(return_comm)) return_comm=f_return_comm
+
+   END SUBROUTINE  xios(initialize)
+
+
+   SUBROUTINE  xios(context_initialize)(context_id,comm)
+   IMPLICIT NONE
+   CHARACTER(LEN=*),INTENT(IN)  :: context_id
+   INTEGER, INTENT(IN)          :: comm
+      
+      CALL cxios_context_initialize(context_id,LEN(context_id),comm)
+ 
+    END SUBROUTINE  xios(context_initialize)
+    
+    
+   SUBROUTINE  xios(finalize)
+   IMPLICIT NONE
+
+      CALL cxios_finalize
+
+    END SUBROUTINE  xios(finalize)
+
+   
+   SUBROUTINE xios(close_context_definition)()
+   IMPLICIT NONE
+      CALL cxios_context_close_definition()
+   END SUBROUTINE xios(close_context_definition)
+
+   
+   SUBROUTINE xios(context_finalize)()
+   IMPLICIT NONE
+      CALL cxios_context_finalize()
+   END SUBROUTINE xios(context_finalize)
+   
+
+   
+   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
+   IMPLICIT NONE
+      CHARACTER(len = *)               , INTENT(IN) :: fieldid
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
+      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
+   END SUBROUTINE xios(send_field_r8_1d)
+   
+   SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8)
+   IMPLICIT NONE
+      CHARACTER(len = *)               , INTENT(IN) :: fieldid
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
+      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
+   END SUBROUTINE  xios(send_field_r8_2d)
+   
+   SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8)
+   IMPLICIT NONE
+      CHARACTER(len = *)               , INTENT(IN) :: fieldid
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
+      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
+   END SUBROUTINE  xios(send_field_r8_3d)
+   
+   SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4)
+   IMPLICIT NONE
+      CHARACTER(len = *)               , INTENT(IN) :: fieldid
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
+      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
+   END SUBROUTINE xios(send_field_r4_1d)
+   
+   SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4)
+   IMPLICIT NONE
+      CHARACTER(len = *)               , INTENT(IN) :: fieldid
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
+      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
+   END SUBROUTINE xios(send_field_r4_2d)
+   
+   SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4)
+   IMPLICIT NONE
+      CHARACTER(len = *)               , INTENT(IN) :: fieldid
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
+      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
+   END SUBROUTINE xios(send_field_r4_3d)
+   
+   
+END MODULE IDATA
Index: /XIOS/trunk/src/interface/fortran/idate.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/idate.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/idate.F90	(revision 325)
@@ -0,0 +1,58 @@
+#include "xios_fortran_prefix.hpp"
+MODULE IDATE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   ! enum XCalendarType
+   INTEGER(kind = C_INT), PARAMETER :: D360 = 0 , ALLLEAP = 1 , NOLEAP = 2 , JULIAN = 3 , GREGORIAN = 4
+
+   TYPE txios(date)
+      INTEGER :: year, month, day, hour, minute, second
+   END TYPE txios(date)
+
+   TYPE txios(time)
+      REAL(kind = 8) :: year=0, month=0, day=0, hour=0, minute=0, second=0
+   END TYPE txios(time)   
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+   
+      SUBROUTINE cxios_set_timestep(ts_year, ts_month, ts_day, ts_hour, ts_minute, ts_second) BIND(C)
+         IMPORT C_DOUBLE
+         REAL (kind = C_DOUBLE), VALUE :: ts_year, ts_month , ts_day   , &
+                                          ts_hour, ts_minute, ts_second
+      END SUBROUTINE cxios_set_timestep
+
+      SUBROUTINE cxios_update_calendar(step) BIND(C)
+         IMPORT C_INT
+         INTEGER (kind = C_INT), VALUE :: step
+      END SUBROUTINE cxios_update_calendar
+      
+   END INTERFACE
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+
+   SUBROUTINE xios(set_timestep)(timestep)
+      IMPLICIT NONE
+      TYPE(txios(time)), INTENT(IN):: timestep
+
+      CALL cxios_set_timestep(timestep%year, timestep%month , timestep%day, &
+                             timestep%hour, timestep%minute, timestep%second)
+
+   END SUBROUTINE xios(set_timestep)
+
+
+   
+   SUBROUTINE xios(update_calendar)(step)
+     IMPLICIT NONE
+     INTEGER, INTENT(IN):: step
+      
+      IF (step < 0) THEN
+         PRINT *, "L'argument 'step' ne peut Ãªtre nÃ©gatif"
+         STOP
+      END IF
+      CALL cxios_update_calendar(step)
+      
+   END SUBROUTINE xios(update_calendar)
+
+   
+END MODULE IDATE
Index: /XIOS/trunk/src/interface/fortran/idomain.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/idomain.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/idomain.F90	(revision 325)
@@ -0,0 +1,55 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IDOMAIN
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE DOMAIN_INTERFACE
+   USE DOMAINGROUP_INTERFACE
+!   USE IDOMAIN_ATTR
+!   USE IDOMAINGROUP_ATTR
+      
+   TYPE txios(domain)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(domain)
+   
+   TYPE txios(domaingroup)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(domaingroup)
+   
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_domain_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *) , INTENT(IN) :: idt      
+      TYPE(txios(domain)), INTENT(OUT):: ret
+ 
+      CALL cxios_domain_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_domain_handle)
+   
+   SUBROUTINE xios(get_domaingroup_handle)(idt, ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)      , INTENT(IN) :: idt      
+      TYPE(txios(domaingroup)), INTENT(OUT):: ret
+
+      CALL cxios_domaingroup_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_domaingroup_handle)
+
+   LOGICAL FUNCTION xios(is_valid_domain)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+      CALL cxios_domain_valid_id(val, idt, len(idt));
+      xios(is_valid_domain) = val
+   END FUNCTION  xios(is_valid_domain)
+
+   LOGICAL FUNCTION xios(is_valid_domaingroup)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+      CALL cxios_domaingroup_valid_id(val, idt, len(idt));
+      xios(is_valid_domaingroup) = val
+   END FUNCTION  xios(is_valid_domaingroup)
+   
+END MODULE IDOMAIN
Index: /XIOS/trunk/src/interface/fortran/ifield.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ifield.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/ifield.F90	(revision 325)
@@ -0,0 +1,79 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IFIELD
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE FIELD_INTERFACE
+   USE FIELDGROUP_INTERFACE
+!   USE IFIELD_ATTR
+!   USE IFIELDGROUP_ATTR
+   
+   TYPE txios(field)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(field)
+   
+   TYPE txios(fieldgroup)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(fieldgroup)
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_field_handle)(idt, ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN)   :: idt      
+      TYPE(txios(field)), INTENT(OUT) :: ret
+      CALL cxios_field_handle_create(ret%daddr, idt, len(idt))            
+   END SUBROUTINE xios(get_field_handle)
+   
+   SUBROUTINE xios(get_fieldgroup_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)     , INTENT(IN) :: idt      
+      TYPE(txios(fieldgroup)), INTENT(OUT):: ret
+
+      CALL cxios_fieldgroup_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_fieldgroup_handle)
+   
+
+   LOGICAL FUNCTION xios(is_valid_field)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+      
+      CALL cxios_field_valid_id(val, idt, len(idt));
+      xios(is_valid_field) = val
+
+   END FUNCTION  xios(is_valid_field)
+
+   LOGICAL FUNCTION xios(is_valid_fieldgroup)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+      CALL cxios_fieldgroup_valid_id(val, idt, len(idt));
+      xios(is_valid_fieldgroup) = val
+
+   END FUNCTION  xios(is_valid_fieldgroup)
+   
+  LOGICAL FUNCTION xios(field_is_active_id(field_id))
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: field_id
+      LOGICAL  (kind = 1)                 :: val
+      TYPE(txios(field))                 :: field_hdl
+      
+      CALL xios(get_field_handle)(field_id,field_hdl)
+      xios(field_is_active_id)=xios(field_is_active_hdl(field_hdl))
+
+   END FUNCTION  xios(field_is_active_id)
+   
+   
+   LOGICAL FUNCTION xios(field_is_active_hdl(field_hdl))
+      IMPLICIT NONE
+      TYPE(txios(field)),INTENT(IN)       :: field_hdl
+      LOGICAL  (kind = 1)                 :: ret
+      
+      CALL cxios_field_is_active(field_hdl%daddr, ret);
+      xios(field_is_active_hdl) = ret
+      
+   END FUNCTION  xios(field_is_active_hdl) 
+ 
+
+END MODULE IFIELD
Index: /XIOS/trunk/src/interface/fortran/ifile.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ifile.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/ifile.F90	(revision 325)
@@ -0,0 +1,59 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IFILE
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE FILE_INTERFACE
+   USE FILEGROUP_INTERFACE
+!   USE IFILE_ATTR
+!   USE IFILEGROUP_ATTR
+   
+   TYPE txios(file)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(file)
+   
+   TYPE txios(filegroup)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(filegroup)
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_file_handle)( idt, ret)
+      IMPLICIT NONE
+      CHARACTER(len = *),   INTENT(IN) :: idt      
+      TYPE(txios(file)) , INTENT(OUT):: ret
+
+      CALL cxios_file_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_file_handle)
+   
+   SUBROUTINE xios(get_filegroup_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)    ,   INTENT(IN) :: idt      
+      TYPE(txios(filegroup)), INTENT(OUT):: ret
+
+      CALL cxios_filegroup_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_filegroup_handle)
+
+   LOGICAL FUNCTION xios(is_valid_file)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_file_valid_id(val, idt, len(idt));
+      xios(is_valid_file) = val
+
+   END FUNCTION  xios(is_valid_file)
+
+   LOGICAL FUNCTION xios(is_valid_filegroup)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_filegroup_valid_id(val, idt, len(idt));
+      xios(is_valid_filegroup) = val
+
+   END FUNCTION  xios(is_valid_filegroup)
+
+   
+END MODULE IFILE
Index: /XIOS/trunk/src/interface/fortran/igrid.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/igrid.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/igrid.F90	(revision 325)
@@ -0,0 +1,60 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IGRID
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE GRID_INTERFACE
+   USE GRIDGROUP_INTERFACE
+!   USE IGRID_ATTR
+!   USE IGRIDGROUP_ATTR
+   
+   TYPE txios(grid)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(grid)
+   
+   TYPE txios(gridgroup)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(gridgroup)
+   
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_grid_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt      
+      TYPE(txios(grid)), INTENT(OUT):: ret
+
+      CALL cxios_grid_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_grid_handle)
+   
+   SUBROUTINE xios(get_gridgroup_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)     , INTENT(IN) :: idt      
+      TYPE(txios(gridgroup))     , INTENT(OUT):: ret
+
+      CALL cxios_gridgroup_handle_create(ret%daddr, idt, len(idt))            
+
+   END SUBROUTINE xios(get_gridgroup_handle)
+
+   LOGICAL FUNCTION xios(is_valid_grid)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_grid_valid_id(val, idt, len(idt));
+      xios(is_valid_grid) = val
+
+   END FUNCTION  xios(is_valid_grid)
+
+   LOGICAL FUNCTION xios(is_valid_gridgroup)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_gridgroup_valid_id(val, idt, len(idt));
+      xios(is_valid_gridgroup) = val
+
+   END FUNCTION  xios(is_valid_gridgroup)
+
+   
+END MODULE IGRID
Index: /XIOS/trunk/src/interface/fortran/ixios.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixios.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/ixios.F90	(revision 325)
@@ -0,0 +1,137 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE XIOS
+
+
+USE icontext, ONLY : txios(context), xios(get_context_handle), xios(set_current_context),    &
+                     xios(is_valid_context)
+
+USE icontext_attr, ONLY : xios(set_context_attr), xios(set_context_attr_hdl), &
+                          xios(get_context_attr), xios(get_context_attr_hdl)
+                                               
+USE idata, ONLY : xios(initialize),xios(init_server), xios(finalize), xios(context_initialize),  &
+                  xios(close_context_definition),       &
+                  xios(context_finalize), xios(send_field_r8_1d), xios(send_field_r8_2d), &
+                  xios(send_field_r8_3d), xios(send_field_r4_1d), xios(send_field_r4_2d), &
+                  xios(send_field_r4_3d)
+
+USE idate, ONLY : txios(date),txios(time), xios(set_timestep),xios(update_calendar)
+
+USE idomain, ONLY : txios(domain), txios(domaingroup), xios(get_domain_handle),  &
+                    xios(get_domaingroup_handle),xios(is_valid_domain),     &
+                    xios(is_valid_domaingroup)
+
+USE idomain_attr, ONLY :  xios(set_domain_attr), xios(set_domain_attr_hdl),  &
+                          xios(get_domain_attr), xios(get_domain_attr_hdl)
+
+USE idomaingroup_attr, ONLY : xios(set_domaingroup_attr), xios(set_domaingroup_attr_hdl),  & 
+                              xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl) 
+                    
+USE ifield, ONLY : txios(field), txios(fieldgroup), xios(get_field_handle),  &
+                   xios(get_fieldgroup_handle), xios(is_valid_field),        &
+                   xios(is_valid_fieldgroup),xios(field_is_active_id),xios(field_is_active_hdl)  
+
+USE ifield_attr, ONLY : xios(set_field_attr),xios(set_field_attr_hdl),    &
+                        xios(get_field_attr),xios(get_field_attr_hdl)
+  
+USE ifieldgroup_attr, ONLY : xios(set_fieldgroup_attr), xios(set_fieldgroup_attr_hdl),  &
+                             xios(get_fieldgroup_attr), xios(get_fieldgroup_attr_hdl)
+
+USE ifile, ONLY : txios(file), txios(filegroup), xios(get_file_handle),    & 
+                  xios(get_filegroup_handle), xios(is_valid_file), xios(is_valid_filegroup)
+
+USE ifile_attr, ONLY : xios(set_file_attr),xios(set_file_attr_hdl), &
+                       xios(get_file_attr),xios(get_file_attr_hdl)
+
+USE ifilegroup_attr, ONLY : xios(set_filegroup_attr), xios(set_filegroup_attr_hdl), &
+                            xios(get_filegroup_attr), xios(get_filegroup_attr_hdl)
+                  
+USE igrid, ONLY : txios(grid), txios(gridgroup), xios(get_grid_handle),     &
+                  xios(get_gridgroup_handle), xios(is_valid_grid), xios(is_valid_gridgroup) 
+
+USE igrid_attr, ONLY : xios(set_grid_attr_hdl), xios(set_grid_attr), &
+                       xios(get_grid_attr_hdl), xios(get_grid_attr)
+
+USE igridgroup_attr, ONLY : xios(set_gridgroup_attr), xios(set_gridgroup_attr_hdl),  &
+                            xios(get_gridgroup_attr), xios(get_gridgroup_attr_hdl)
+
+USE iaxis, ONLY : txios(axis), txios(axisgroup), xios(get_axis_handle),     &
+                  xios(get_axisgroup_handle), xios(is_valid_axis), xios(is_valid_axisgroup) 
+
+USE iaxis_attr, ONLY :  xios(set_axis_attr), xios(set_axis_attr_hdl), &
+                        xios(get_axis_attr), xios(get_axis_attr_hdl)
+
+USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr), xios(set_axisgroup_attr_hdl), &
+                            xios(get_axisgroup_attr), xios(get_axisgroup_attr_hdl)
+
+USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),          &
+                     xios(add_fieldtofile), xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), &
+                     xios(add_fieldgroup), xios(add_domaingroup), xios(add_fieldgrouptofile)
+                  
+
+PRIVATE
+
+
+INTERFACE xios(set_attr)
+  MODULE PROCEDURE xios(set_domaingroup_attr_hdl), xios(set_domain_attr_hdl), xios(set_fieldgroup_attr_hdl), &
+                   xios(set_field_attr_hdl), xios(set_file_attr_hdl), xios(set_filegroup_attr_hdl),          &
+                   xios(set_grid_attr_hdl), xios(set_gridgroup_attr_hdl), xios(set_axis_attr_hdl) ,          &
+                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl)
+END INTERFACE xios(set_attr)
+
+INTERFACE xios(get_attr)
+  MODULE PROCEDURE xios(get_domaingroup_attr_hdl), xios(get_domain_attr_hdl), xios(get_fieldgroup_attr_hdl), &
+                   xios(get_field_attr_hdl), xios(get_file_attr_hdl), xios(get_filegroup_attr_hdl),          &
+                   xios(get_grid_attr_hdl), xios(get_gridgroup_attr_hdl), xios(get_axis_attr_hdl) ,          &
+                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl)
+END INTERFACE xios(get_attr)
+
+INTERFACE xios(get_handle)
+  MODULE PROCEDURE  xios(get_context_handle), xios(get_domain_handle), xios(get_domaingroup_handle),        &
+                    xios(get_file_handle), xios(get_filegroup_handle), xios(get_grid_handle),               &
+                    xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),          &
+                    xios(get_field_handle), xios(get_fieldgroup_handle)
+END INTERFACE xios(get_handle) 
+
+INTERFACE xios(add_child)
+  MODULE PROCEDURE xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),    &
+                   xios(add_fieldtofile), xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), &
+                   xios(add_fieldgroup), xios(add_domaingroup), xios(add_fieldgrouptofile)
+END INTERFACE xios(add_child)
+
+
+INTERFACE xios(send_field)
+  MODULE PROCEDURE  xios(send_field_r8_1d), xios(send_field_r8_2d), xios(send_field_r8_3d),              &
+                    xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d)
+END INTERFACE xios(send_field)
+
+INTERFACE xios(field_is_active)
+  MODULE PROCEDURE xios(field_is_active_id),xios(field_is_active_hdl)
+END INTERFACE
+  
+ PUBLIC :: txios(domain), txios(domaingroup),txios(field), txios(fieldgroup),txios(file), txios(filegroup), &
+          txios(grid), txios(gridgroup), txios(axis), txios(axisgroup),txios(context), txios(date),txios(time)  
+
+ PUBLIC :: xios(set_attr), xios(set_domain_attr), xios(set_domaingroup_attr), xios(set_fieldgroup_attr), &
+          xios(set_field_attr), xios(set_file_attr), xios(set_filegroup_attr),          &
+          xios(set_grid_attr), xios(set_gridgroup_attr), xios(set_axis_attr) ,          &
+          xios(set_axisgroup_attr), xios(set_context_attr)
+
+ PUBLIC :: xios(get_attr), xios(get_domain_attr), xios(get_domaingroup_attr), xios(get_fieldgroup_attr), &
+          xios(get_field_attr), xios(get_file_attr), xios(get_filegroup_attr),          &
+          xios(get_grid_attr), xios(get_gridgroup_attr), xios(get_axis_attr) ,          &
+          xios(get_axisgroup_attr), xios(get_context_attr)
+
+ PUBLIC :: xios(get_handle) 
+ PUBLIC :: xios(add_child) 
+
+ PUBLIC :: xios(is_valid_context),xios(is_valid_domain), xios(is_valid_domaingroup),xios(is_valid_field),        &
+          xios(is_valid_fieldgroup), xios(is_valid_file), xios(is_valid_filegroup), xios(is_valid_grid),         &
+          xios(is_valid_gridgroup), xios(is_valid_axis), xios(is_valid_axisgroup)
+          
+ PUBLIC :: xios(set_current_context)  
+ PUBLIC :: xios(set_timestep),xios(update_calendar)
+ PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),                       &
+           xios(close_context_definition), xios(context_finalize), xios(send_field),xios(field_is_active)
+
+END MODULE XIOS
Index: /XIOS/trunk/src/interface/fortran/ixml_tree.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixml_tree.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/ixml_tree.F90	(revision 325)
@@ -0,0 +1,291 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IXML_TREE
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE IAXIS
+   USE IFILE
+   USE IFIELD
+   USE IGRID
+   USE IDOMAIN
+     
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+     
+      SUBROUTINE cxios_xml_tree_add_field(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_field
+      
+      SUBROUTINE cxios_xml_tree_add_grid(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_grid
+      
+      SUBROUTINE cxios_xml_tree_add_file(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_file
+      
+      SUBROUTINE cxios_xml_tree_add_axis(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_axis
+      
+      SUBROUTINE cxios_xml_tree_add_domain(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_domain
+      
+      SUBROUTINE cxios_xml_tree_add_fieldtofile(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_fieldtofile
+
+      SUBROUTINE cxios_xml_tree_add_fieldgroup(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_fieldgroup
+
+      SUBROUTINE cxios_xml_tree_add_gridgroup(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_gridgroup
+
+      SUBROUTINE cxios_xml_tree_add_filegroup(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_filegroup
+
+      SUBROUTINE cxios_xml_tree_add_axisgroup(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_axisgroup
+
+      SUBROUTINE cxios_xml_tree_add_domaingroup(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_domaingroup
+      
+      SUBROUTINE cxios_xml_tree_add_fieldgrouptofile(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_fieldgrouptofile    
+
+      SUBROUTINE cxios_xml_tree_show(filename, filename_size) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR), DIMENSION(*) :: filename
+         INTEGER  (kind = C_INT) , VALUE        :: filename_size
+      END SUBROUTINE cxios_xml_tree_show
+
+      SUBROUTINE cxios_xml_parse_file(filename, filename_size) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR), DIMENSION(*) :: filename
+         INTEGER  (kind = C_INT) , VALUE        :: filename_size
+      END SUBROUTINE cxios_xml_parse_file
+
+      SUBROUTINE cxios_xml_parse_string(xmlcontent, xmlcontent_size) BIND(C)
+         USE ISO_C_BINDING
+         CHARACTER(kind = C_CHAR), DIMENSION(*) :: xmlcontent
+         INTEGER  (kind = C_INT) , VALUE        :: xmlcontent_size
+      END SUBROUTINE cxios_xml_parse_string
+     
+   END INTERFACE
+
+   
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+
+   SUBROUTINE xios(add_axis)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(axisgroup))     , INTENT(IN) :: parent_hdl
+      TYPE(txios(axis))          , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_axis)
+   
+   SUBROUTINE xios(add_file)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(filegroup))      , INTENT(IN) :: parent_hdl
+      TYPE(txios(file))           , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN)  :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_file)
+   
+   SUBROUTINE xios(add_grid)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(gridgroup))     , INTENT(IN) :: parent_hdl
+      TYPE(txios(grid))          , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_grid)
+   
+   
+   SUBROUTINE xios(add_field)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(fieldgroup))     , INTENT(IN) :: parent_hdl
+      TYPE(txios(field))          , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_field)
+   
+   
+   SUBROUTINE xios(add_domain)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(domaingroup))     , INTENT(IN) :: parent_hdl
+      TYPE(txios(domain))     , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_domain)
+   
+   SUBROUTINE xios(add_fieldtofile)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(file))            , INTENT(IN) :: parent_hdl
+      TYPE(txios(field))           , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_fieldtofile)
+
+
+   SUBROUTINE xios(add_axisgroup)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(axisgroup))      , INTENT(IN) :: parent_hdl
+      TYPE(txios(axisgroup))      , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_axisgroup)
+
+
+   SUBROUTINE xios(add_filegroup)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(filegroup))      , INTENT(IN) :: parent_hdl
+      TYPE(txios(filegroup))      , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_filegroup)
+
+   SUBROUTINE xios(add_gridgroup)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(gridgroup))      , INTENT(IN) :: parent_hdl
+      TYPE(txios(gridgroup))      , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+      
+   END SUBROUTINE xios(add_gridgroup)
+
+
+   SUBROUTINE xios(add_fieldgroup)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(fieldgroup))     , INTENT(IN) :: parent_hdl
+      TYPE(txios(fieldgroup))     , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+   END SUBROUTINE xios(add_fieldgroup)
+
+   SUBROUTINE xios(add_domaingroup)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(domaingroup))     , INTENT(IN) :: parent_hdl
+      TYPE(txios(domaingroup))     , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_domaingroup)
+
+   SUBROUTINE xios(add_fieldgrouptofile)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(file))            , INTENT(IN) :: parent_hdl
+      TYPE(txios(fieldgroup))     , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_fieldgrouptofile)
+      
+END MODULE IXML_TREE
Index: /XIOS/trunk/src/interface/fortran/oasis_interface.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/oasis_interface.F90	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/oasis_interface.F90	(revision 325)
@@ -0,0 +1,114 @@
+SUBROUTINE fxios_oasis_init(server_id,str_len) BIND(C,NAME="fxios_oasis_init")
+  USE, INTRINSIC :: ISO_C_BINDING
+#ifdef USE_OASIS
+  USE mod_prism_proto
+#endif
+    CHARACTER(kind = C_CHAR),DIMENSION(*) :: server_id
+    INTEGER(kind = C_INT),VALUE   :: str_len
+    
+    INTEGER                :: comp_id
+    CHARACTER(len=str_len) :: oasis_server_id
+    INTEGER                :: ierr
+    INTEGER :: i
+    
+    DO i=1,str_len
+      oasis_server_id(i:i)=server_id(i)
+    ENDDO
+
+#ifdef USE_OASIS
+    CALL prism_init_comp_proto (comp_id, oasis_server_id, ierr)
+#endif
+    PRINT *,"---> prism_init",oasis_server_id,ierr
+
+END SUBROUTINE fxios_oasis_init
+
+
+SUBROUTINE fxios_oasis_finalize() BIND(C,NAME="fxios_oasis_finalize")
+  USE, INTRINSIC :: ISO_C_BINDING
+#ifdef USE_OASIS
+  USE mod_prism_proto
+#endif
+  IMPLICIT NONE
+  INTEGER :: ierr
+  
+#ifdef USE_OASIS
+    CALL prism_terminate_proto(ierr)
+#endif
+    
+END SUBROUTINE fxios_oasis_finalize
+
+
+SUBROUTINE fxios_oasis_get_localcomm(f_comm) BIND(C,NAME="fxios_oasis_get_localcomm")
+  USE, INTRINSIC :: ISO_C_BINDING
+#ifdef USE_OASIS
+!  USE mod_prism_get_localcomm_proto 
+#endif
+  IMPLICIT NONE
+  INTEGER(kind=C_INT) :: f_comm
+  
+  INTEGER :: comm
+  INTEGER :: ierr
+    
+#ifdef USE_OASIS
+    CALL prism_get_localcomm_proto(comm,ierr)
+#endif
+    f_comm=comm
+
+END SUBROUTINE fxios_oasis_get_localcomm
+
+
+
+
+SUBROUTINE fxios_oasis_get_intracomm(f_comm_client_server,client_id,str_len) BIND(C,NAME="fxios_oasis_get_intracomm")
+  USE, INTRINSIC :: ISO_C_BINDING
+#ifdef USE_OASIS
+  USE mod_prism_get_comm 
+#endif
+  IMPLICIT NONE
+  INTEGER(kind=C_INT) :: f_comm_client_server
+  CHARACTER,DIMENSION(*) :: client_id
+  INTEGER,VALUE          :: str_len
+  
+  INTEGER :: comm_client_server
+  CHARACTER(len=str_len) :: oasis_client_id
+  INTEGER :: ierr
+  INTEGER :: i
+    
+    DO i=1,str_len
+      oasis_client_id(i:i)=client_id(i)
+    ENDDO
+    
+#ifdef USE_OASIS
+    CALL prism_get_intracomm(comm_client_server,oasis_client_id,ierr)
+#endif
+
+    f_comm_client_server=comm_client_server
+
+END SUBROUTINE fxios_oasis_get_intracomm
+
+SUBROUTINE fxios_oasis_get_intercomm(f_comm_client_server,client_id,str_len) BIND(C,NAME="fxios_oasis_get_intercomm")
+  USE, INTRINSIC :: ISO_C_BINDING
+#ifdef USE_OASIS
+  USE mod_prism_get_comm 
+#endif
+  IMPLICIT NONE
+  INTEGER(kind=C_INT) :: f_comm_client_server
+  CHARACTER,DIMENSION(*) :: client_id
+  INTEGER,VALUE          :: str_len
+  
+  INTEGER :: comm_client_server
+  CHARACTER(len=str_len) :: oasis_client_id
+  INTEGER :: ierr
+  INTEGER :: i
+    
+    DO i=1,str_len
+      oasis_client_id(i:i)=client_id(i)
+    ENDDO
+    
+#ifdef USE_OASIS
+    CALL prism_get_intercomm(comm_client_server,oasis_client_id,ierr)
+#endif
+
+    f_comm_client_server=comm_client_server
+
+END SUBROUTINE fxios_oasis_get_intercomm
Index: /XIOS/trunk/src/interface/fortran/xios_fortran_prefix.hpp
===================================================================
--- /XIOS/trunk/src/interface/fortran/xios_fortran_prefix.hpp	(revision 325)
+++ /XIOS/trunk/src/interface/fortran/xios_fortran_prefix.hpp	(revision 325)
@@ -0,0 +1,7 @@
+#ifndef __XIOS_SUFFIX__
+#define __XIOS_SUFFIX__
+
+#define xios(arg) xios_##arg
+#define txios(arg) xios_##arg
+
+#endif
