Index: XMLIO_V2/dev/common/src/fortran/icxml_tree.cpp
===================================================================
--- XMLIO_V2/dev/common/src/fortran/icxml_tree.cpp	(revision 290)
+++ XMLIO_V2/dev/common/src/fortran/icxml_tree.cpp	(revision 300)
@@ -43,12 +43,16 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CFieldGroup> fieldgroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFieldGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateChild(fieldgroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateChild(fieldgroup).get();
-   }
+
+      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
@@ -56,11 +60,14 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CGridGroup> gridgroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CGridGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateChild(gridgroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateChild(gridgroup).get();
+      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() ;
+      }
    }
    
@@ -69,11 +76,14 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CFileGroup> filegroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFileGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateChild(filegroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateChild(filegroup).get();
+      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() ;
+      }
    }
    
@@ -82,11 +92,14 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CAxisGroup> axisgroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CAxisGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateChild(axisgroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateChild(axisgroup).get();
+      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() ;
+      }
    }
    
@@ -95,11 +108,14 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CDomainGroup> domaingroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomainGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateChild(domaingroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateChild(domaingroup).get();
+      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() ;
+      }
    }
    
@@ -108,14 +124,15 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CFile> file =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFile>(parent_);
-
-      if (file->getVirtualFieldGroup().get() == 0 )
-          file->setVirtualFieldGroup(file->getId());
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateChild(file->getVirtualFieldGroup(), child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateChild(file->getVirtualFieldGroup()).get();
+ 
+      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() ;
+      }
    }
 
@@ -125,12 +142,16 @@
       (XFieldGroupPtr  parent_, XFieldGroupPtr * child_, const char * child_id, int child_id_size)
    {
-      std::string child_id_str;
-      boost::shared_ptr<xmlioserver::tree::CFieldGroup> fieldgroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFieldGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(fieldgroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(fieldgroup).get();
+     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) ;
+      }
    }
 
@@ -139,11 +160,15 @@
    {
       std::string child_id_str;
-      boost::shared_ptr<xmlioserver::tree::CGridGroup> gridgroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CGridGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(gridgroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(gridgroup).get();
+ 
+      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) ;
+      }
    }
 
@@ -152,11 +177,14 @@
    {
       std::string child_id_str;
-      boost::shared_ptr<xmlioserver::tree::CFileGroup> filegroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFileGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(filegroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(filegroup).get();
+      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) ;
+      }
    }
 
@@ -165,11 +193,14 @@
    {
       std::string child_id_str;
-      boost::shared_ptr<xmlioserver::tree::CAxisGroup> axisgroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CAxisGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(axisgroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(axisgroup).get();
+      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) ;
+      }
    }
 
@@ -178,11 +209,14 @@
    {
       std::string child_id_str;
-      boost::shared_ptr<xmlioserver::tree::CDomainGroup> domaingroup =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomainGroup>(parent_);
-
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(domaingroup, child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(domaingroup).get();
+      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) ;
+      }
    }
 
@@ -191,14 +225,15 @@
    {
       std::string child_id_str; 
-      boost::shared_ptr<xmlioserver::tree::CFile> file =
-         xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CFile>(parent_);
-
-      if (file->getVirtualFieldGroup().get() == 0 )
-          file->setVirtualFieldGroup(file->getId());
-      
-      if (cstr2string(child_id, child_id_size, child_id_str))
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(file->getVirtualFieldGroup(), child_id_str).get();
-      else
-         *child_ = xmlioserver::CGroupFactory::CreateGroup(file->getVirtualFieldGroup()).get();
+ 
+      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() ;
+      }
    }
    
