Index: XIOS/trunk/src/attribute.hpp
===================================================================
--- XIOS/trunk/src/attribute.hpp	(revision 444)
+++ XIOS/trunk/src/attribute.hpp	(revision 445)
@@ -66,5 +66,6 @@
             virtual void generateFortranInterfaceIsDefinedBody_(ostream& oss,const string& className) ;
 
-
+            virtual void setInheritedValue(const CAttribute& ) = 0 ;
+            virtual bool hasInheritedValue(void) const = 0;
             
          protected :
Index: XIOS/trunk/src/attribute_array.hpp
===================================================================
--- XIOS/trunk/src/attribute_array.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_array.hpp	(revision 445)
@@ -37,4 +37,9 @@
             void set(const CAttributeArray& attr) ;
             
+            void setInheritedValue(const CAttributeArray& attr );
+            void setInheritedValue(const CAttribute& attr );
+            CArray<T_numtype, N_rank> getInheritedValue(void) const ;
+            bool hasInheritedValue(void) const;            
+
             /// Destructeur ///
             virtual ~CAttributeArray(void) { }
@@ -62,4 +67,5 @@
 
          private :
+          CArray<T_numtype, N_rank> inheritedValue ;
           StdString _toString(void) const;
           void _fromString(const StdString & str);
Index: XIOS/trunk/src/attribute_array_impl.hpp
===================================================================
--- XIOS/trunk/src/attribute_array_impl.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_array_impl.hpp	(revision 445)
@@ -65,4 +65,31 @@
       this->setValue(attr) ;
     } 
+    
+    
+    template <typename T_numtype, int N_rank>
+    void CAttributeArray<T_numtype,N_rank>::setInheritedValue(const CAttribute& attr)
+    {
+      this->setInheritedValue(dynamic_cast<const CAttributeArray<T_numtype,N_rank>& >(attr)) ;
+    } 
+
+    template <typename T_numtype, int N_rank>
+    void CAttributeArray<T_numtype,N_rank>::setInheritedValue(const CAttributeArray& attr)
+    {
+      if (this->isEmpty() && attr.hasInheritedValue()) inheritedValue=attr ;
+     } 
+
+    template <typename T_numtype, int N_rank>
+    CArray<T_numtype,N_rank> CAttributeArray<T_numtype,N_rank>::getInheritedValue(void) const
+    {
+      if (this->isEmpty()) return inheritedValue.copy() ;
+      else return getValue() ;
+    } 
+    
+    template <typename T_numtype, int N_rank>
+    bool CAttributeArray<T_numtype,N_rank>::hasInheritedValue(void) const
+    {
+      return !this->isEmpty() || !inheritedValue.isEmpty() ;
+    } 
+    
 
     template <typename T_numtype, int N_rank>
Index: XIOS/trunk/src/attribute_enum.hpp
===================================================================
--- XIOS/trunk/src/attribute_enum.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_enum.hpp	(revision 445)
@@ -40,4 +40,10 @@
             void set(const CAttributeEnum& attr) ;
             
+            void setInheritedValue(const CAttributeEnum& attr );
+            void setInheritedValue(const CAttribute& attr );
+            T_enum getInheritedValue(void)  const;
+            string getInheritedStringValue(void) const;
+            bool hasInheritedValue(void) const;          
+          
             /// Destructeur ///
             virtual ~CAttributeEnum(void) { }
@@ -72,4 +78,5 @@
           bool _toBuffer  (CBufferOut& buffer) const;
           bool _fromBuffer(CBufferIn& buffer) ;
+          CEnum<T> inheritedValue ;
       }; // class CAttributeEnum    
    
Index: XIOS/trunk/src/attribute_enum_impl.hpp
===================================================================
--- XIOS/trunk/src/attribute_enum_impl.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_enum_impl.hpp	(revision 445)
@@ -75,4 +75,38 @@
     } 
 
+    
+    template <class T>
+    void CAttributeEnum<T>::setInheritedValue(const CAttribute& attr)
+    {
+      this->setInheritedValue(dynamic_cast<const CAttributeEnum<T>& >(attr)) ;
+    } 
+
+    template <class T>
+    void CAttributeEnum<T>::setInheritedValue(const CAttributeEnum& attr)
+    {
+      if (this->isEmpty() && attr.hasInheritedValue()) inheritedValue.set(attr.getInheritedValue()) ;
+    } 
+
+    template <class T>
+    typename T::t_enum CAttributeEnum<T>::getInheritedValue(void) const
+    {
+      if (this->isEmpty()) return inheritedValue.get() ;
+      else return getValue() ;
+    } 
+    
+    template <class T>
+    string CAttributeEnum<T>::getInheritedStringValue(void) const
+    {
+       return CEnum<T>::toString() ;
+       if (this->isEmpty()) return inheritedValue.toString() ;
+       else return CEnum<T>::toString() ; ;
+    }
+    
+    template <class T>
+    bool CAttributeEnum<T>::hasInheritedValue(void) const
+    {
+      return !this->isEmpty() || !inheritedValue.isEmpty() ;
+    } 
+    
       //---------------------------------------------------------------
 
Index: XIOS/trunk/src/attribute_map.cpp
===================================================================
--- XIOS/trunk/src/attribute_map.cpp	(revision 444)
+++ XIOS/trunk/src/attribute_map.cpp	(revision 445)
@@ -107,5 +107,5 @@
       //---------------------------------------------------------------
       
-      void CAttributeMap::setAttributes(const CAttributeMap * const _parent)
+      void CAttributeMap::setAttributes(const CAttributeMap * const _parent, bool apply)
       {
          typedef std::pair<StdString, CAttribute*> StdStrAttPair;
@@ -117,9 +117,14 @@
             if (this->hasAttribute(el.first))
             {
-               CAttribute * currAtt = CAttributeMap::operator[](el.first);
-               if (currAtt->isEmpty() && !el.second->isEmpty())
+               CAttribute * currentAtt = CAttributeMap::operator[](el.first);
+               CAttribute * parentAtt = el.second ;
+               if (apply)
                {
-                  this->setAttribute(el.first, el.second);
+                 if (currentAtt->isEmpty() && !el.second->isEmpty())
+                 {
+                    this->setAttribute(el.first, el.second);
+                 }
                }
+               else currentAtt->setInheritedValue(*parentAtt) ;
             }
          }
Index: XIOS/trunk/src/attribute_map.hpp
===================================================================
--- XIOS/trunk/src/attribute_map.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_map.hpp	(revision 445)
@@ -29,5 +29,5 @@
 
             void setAttributes(const xml::THashAttributes & attributes);
-            void setAttributes(const CAttributeMap * const _parent);
+            void setAttributes(const CAttributeMap * const _parent, bool apply=true);
 
             void clearAllAttributes(void);
Index: XIOS/trunk/src/attribute_template.hpp
===================================================================
--- XIOS/trunk/src/attribute_template.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_template.hpp	(revision 445)
@@ -48,4 +48,9 @@
             void set(const CAttribute& attr) ;
             void set(const CAttributeTemplate& attr) ;
+
+            void setInheritedValue(const CAttributeTemplate& attr );
+            void setInheritedValue(const CAttribute& attr );
+            T getInheritedValue(void) const ;
+            bool hasInheritedValue(void) const;
             
             /// Destructeur ///
@@ -87,4 +92,6 @@
           bool _toBuffer  (CBufferOut& buffer) const;
           bool _fromBuffer(CBufferIn& buffer) ;
+          
+          CType<T> inheritedValue ;
       }; // class CAttribute    
       
Index: XIOS/trunk/src/attribute_template_impl.hpp
===================================================================
--- XIOS/trunk/src/attribute_template_impl.hpp	(revision 444)
+++ XIOS/trunk/src/attribute_template_impl.hpp	(revision 445)
@@ -109,4 +109,29 @@
     } 
 
+    template <class T>
+    void CAttributeTemplate<T>::setInheritedValue(const CAttribute& attr)
+    {
+      this->setInheritedValue(dynamic_cast<const CAttributeTemplate<T>& >(attr)) ;
+    } 
+
+    template <class T>
+    void CAttributeTemplate<T>::setInheritedValue(const CAttributeTemplate& attr)
+    {
+      if (this->isEmpty() && attr.hasInheritedValue()) inheritedValue.set(attr.getInheritedValue()) ;
+    } 
+
+    template <class T>
+    T CAttributeTemplate<T>::getInheritedValue(void) const
+    {
+      if (this->isEmpty()) return inheritedValue.get() ;
+      else return getValue() ;
+    } 
+    
+    template <class T>
+    bool CAttributeTemplate<T>::hasInheritedValue(void) const
+    {
+      return !this->isEmpty() || !inheritedValue.isEmpty() ;
+    } 
+    
       //---------------------------------------------------------------
 
Index: XIOS/trunk/src/generate_interface_impl.hpp
===================================================================
--- XIOS/trunk/src/generate_interface_impl.hpp	(revision 444)
+++ XIOS/trunk/src/generate_interface_impl.hpp	(revision 445)
@@ -42,5 +42,5 @@
     oss<<"{"<<iendl ;
     oss<<"   CTimer::get(\"XIOS\").resume();"<<iendl ;
-    oss<<"  return !"<<className<<"_hdl->"<<name<<".isEmpty();"<<iendl ;
+    oss<<"  return "<<className<<"_hdl->"<<name<<".hasInheritedValue();"<<iendl ;
     oss<<"   CTimer::get(\"XIOS\").suspend();"<<iendl ;
     oss<<"}"<<iendl ;
@@ -64,5 +64,5 @@
     oss<<"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, "<< typeName<<"* "<<name<<")"<<iendl ;
     oss<<"{"<<iendl;
-    oss<<"  *"<<name<<" = "<<className<<"_hdl->"<<name<<".getValue();"<<iendl ;
+    oss<<"  *"<<name<<" = "<<className<<"_hdl->"<<name<<".getInheritedValue();"<<iendl ;
     oss<<"}"<<iendl ;
     oss<<iendl ;
@@ -88,5 +88,5 @@
     oss<<"{"<<iendl ;
     oss<<"   CTimer::get(\"XIOS\").resume();"<<iendl ;
-    oss<<"  if(!string_copy("<<className<<"_hdl->"<<name<<".getValue(),"<<name<<" , "<<name<<"_size))"<<iendl ;
+    oss<<"  if(!string_copy("<<className<<"_hdl->"<<name<<".getInheritedValue(),"<<name<<" , "<<name<<"_size))"<<iendl ;
     oss<<"    ERROR(\"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, char * "<<name<<", int "
        <<name<<"_size)\", <<\"Input string is to short\");"<<iendl ;
@@ -115,5 +115,5 @@
     oss<<"{"<<iendl ;
     oss<<"   CTimer::get(\"XIOS\").resume();"<<iendl ;
-    oss<<"  if(!string_copy("<<className<<"_hdl->"<<name<<".getStringValue(),"<<name<<" , "<<name<<"_size))"<<iendl ;
+    oss<<"  if(!string_copy("<<className<<"_hdl->"<<name<<".getInheritedStringValue(),"<<name<<" , "<<name<<"_size))"<<iendl ;
     oss<<"    ERROR(\"void cxios_get_"<<className<<"_"<<name<<"("<<className<<"_Ptr "<<className<<"_hdl, char * "<<name<<", int "
        <<name<<"_size)\", <<\"Input string is to short\");"<<iendl ;
@@ -610,5 +610,5 @@
     oss<<"  CTimer::get(\"XIOS\").resume();"<<iendl ; \
     oss<<"  CArray<"<<typeName<<",1> tmp("<<name<<",shape(extent1),neverDeleteData) ;"<<iendl ;\
-    oss<<"  tmp="<<className<<"_hdl->"<<name<<" ;"<<iendl ;\
+    oss<<"  tmp="<<className<<"_hdl->"<<name<<".getInheritedValue() ;"<<iendl ;\
     oss<<"   CTimer::get(\"XIOS\").suspend();"<<iendl ;\
     oss<<"}"<<iendl ;\
@@ -634,5 +634,5 @@
     oss<<"  CTimer::get(\"XIOS\").resume();"<<iendl ; \
     oss<<"  CArray<"<<typeName<<",2> tmp("<<name<<",shape(extent1,extent2),neverDeleteData) ;"<<iendl ;\
-    oss<<"  tmp="<<className<<"_hdl->"<<name<<" ;"<<iendl ;\
+    oss<<"  tmp="<<className<<"_hdl->"<<name<<".getInheritedValue() ;"<<iendl ;\
     oss<<"   CTimer::get(\"XIOS\").suspend();"<<iendl ;\
     oss<<"}"<<iendl ;\
@@ -658,5 +658,5 @@
     oss<<"  CTimer::get(\"XIOS\").resume();"<<iendl ; \
     oss<<"  CArray<"<<typeName<<",3> tmp("<<name<<",shape(extent1,extent2,extent3),neverDeleteData) ;"<<iendl ;\
-    oss<<"  tmp="<<className<<"_hdl->"<<name<<" ;"<<iendl ;\
+    oss<<"  tmp="<<className<<"_hdl->"<<name<<".getInheritedValue() ;"<<iendl ;\
     oss<<"   CTimer::get(\"XIOS\").suspend();"<<iendl ;\
     oss<<"}"<<iendl ;\
Index: XIOS/trunk/src/group_template.hpp
===================================================================
--- XIOS/trunk/src/group_template.hpp	(revision 444)
+++ XIOS/trunk/src/group_template.hpp	(revision 445)
@@ -59,5 +59,5 @@
 
          /// Traitements ///
-         virtual void solveDescInheritance(const CAttributeMap * const parent = 0);
+         virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
          void solveRefInheritance(void);
 //         static bool has(const string & id); 
Index: XIOS/trunk/src/group_template_impl.hpp
===================================================================
--- XIOS/trunk/src/group_template_impl.hpp	(revision 444)
+++ XIOS/trunk/src/group_template_impl.hpp	(revision 445)
@@ -263,8 +263,8 @@
    
    template <class U, class V, class W>
-      void CGroupTemplate<U, V, W>::solveDescInheritance(const CAttributeMap * const parent)
+      void CGroupTemplate<U, V, W>::solveDescInheritance(bool apply, const CAttributeMap * const parent)
    {
       if (parent != NULL)
-         SuperClassAttribute::setAttributes(parent);
+         SuperClassAttribute::setAttributes(parent, apply);
          
       typename std::vector<U*>::const_iterator 
@@ -276,5 +276,5 @@
       { 
          U* child = *itc;
-         child->solveDescInheritance(this);
+         child->solveDescInheritance(apply,this);
       }
             
@@ -283,5 +283,5 @@
          V* group = *itg;
          group->solveRefInheritance();
-         group->solveDescInheritance(this);
+         group->solveDescInheritance(apply,this);
       }
    }
Index: XIOS/trunk/src/interface/c/icdata.cpp
===================================================================
--- XIOS/trunk/src/interface/c/icdata.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c/icdata.cpp	(revision 445)
@@ -102,5 +102,11 @@
    }
 
- 
+   void cxios_solve_inheritance()
+   {
+     CTimer::get("XIOS").resume() ;
+     CContext* context = CContext::getCurrent() ;
+     context->solveAllInheritance(false) ;
+     CTimer::get("XIOS").suspend() ;
+   } 
    
    // ---------------------- Ecriture des donnÃ©es ------------------------------
Index: XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axis_hdl->long_name.getValue(),long_name , long_name_size))
+    if(!string_copy(axis_hdl->long_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->long_name.isEmpty();
+    return axis_hdl->long_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -57,5 +57,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axis_hdl->name.getValue(),name , name_size))
+    if(!string_copy(axis_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_axis_name(axis_Ptr axis_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -65,5 +65,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->name.isEmpty();
+    return axis_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -84,5 +84,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axis_hdl->positive.getStringValue(),positive , positive_size))
+    if(!string_copy(axis_hdl->positive.getInheritedStringValue(),positive , positive_size))
       ERROR("void cxios_get_axis_positive(axis_Ptr axis_hdl, char * positive, int positive_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -92,5 +92,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->positive.isEmpty();
+    return axis_hdl->positive.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -108,5 +108,5 @@
   void cxios_get_axis_size(axis_Ptr axis_hdl, int* size)
   {
-    *size = axis_hdl->size.getValue();
+    *size = axis_hdl->size.getInheritedValue();
   }
   
@@ -114,5 +114,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->size.isEmpty();
+    return axis_hdl->size.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -133,5 +133,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axis_hdl->standard_name.getValue(),standard_name , standard_name_size))
+    if(!string_copy(axis_hdl->standard_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -141,5 +141,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->standard_name.isEmpty();
+    return axis_hdl->standard_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -160,5 +160,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axis_hdl->unit.getValue(),unit , unit_size))
+    if(!string_copy(axis_hdl->unit.getInheritedValue(),unit , unit_size))
       ERROR("void cxios_get_axis_unit(axis_Ptr axis_hdl, char * unit, int unit_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -168,5 +168,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->unit.isEmpty();
+    return axis_hdl->unit.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -187,5 +187,5 @@
     CTimer::get("XIOS").resume();
     CArray<double,1> tmp(value,shape(extent1),neverDeleteData) ;
-    tmp=axis_hdl->value ;
+    tmp=axis_hdl->value.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -194,5 +194,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->value.isEmpty();
+    return axis_hdl->value.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -210,5 +210,5 @@
   void cxios_get_axis_zoom_begin(axis_Ptr axis_hdl, int* zoom_begin)
   {
-    *zoom_begin = axis_hdl->zoom_begin.getValue();
+    *zoom_begin = axis_hdl->zoom_begin.getInheritedValue();
   }
   
@@ -216,5 +216,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->zoom_begin.isEmpty();
+    return axis_hdl->zoom_begin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -232,5 +232,5 @@
   void cxios_get_axis_zoom_end(axis_Ptr axis_hdl, int* zoom_end)
   {
-    *zoom_end = axis_hdl->zoom_end.getValue();
+    *zoom_end = axis_hdl->zoom_end.getInheritedValue();
   }
   
@@ -238,5 +238,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->zoom_end.isEmpty();
+    return axis_hdl->zoom_end.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -254,5 +254,5 @@
   void cxios_get_axis_zoom_size(axis_Ptr axis_hdl, int* zoom_size)
   {
-    *zoom_size = axis_hdl->zoom_size.getValue();
+    *zoom_size = axis_hdl->zoom_size.getInheritedValue();
   }
   
@@ -260,5 +260,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axis_hdl->zoom_size.isEmpty();
+    return axis_hdl->zoom_size.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axisgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+    if(!string_copy(axisgroup_hdl->group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->group_ref.isEmpty();
+    return axisgroup_hdl->group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -57,5 +57,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axisgroup_hdl->long_name.getValue(),long_name , long_name_size))
+    if(!string_copy(axisgroup_hdl->long_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -65,5 +65,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->long_name.isEmpty();
+    return axisgroup_hdl->long_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -84,5 +84,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axisgroup_hdl->name.getValue(),name , name_size))
+    if(!string_copy(axisgroup_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_axisgroup_name(axisgroup_Ptr axisgroup_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -92,5 +92,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->name.isEmpty();
+    return axisgroup_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -111,5 +111,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axisgroup_hdl->positive.getStringValue(),positive , positive_size))
+    if(!string_copy(axisgroup_hdl->positive.getInheritedStringValue(),positive , positive_size))
       ERROR("void cxios_get_axisgroup_positive(axisgroup_Ptr axisgroup_hdl, char * positive, int positive_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -119,5 +119,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->positive.isEmpty();
+    return axisgroup_hdl->positive.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -135,5 +135,5 @@
   void cxios_get_axisgroup_size(axisgroup_Ptr axisgroup_hdl, int* size)
   {
-    *size = axisgroup_hdl->size.getValue();
+    *size = axisgroup_hdl->size.getInheritedValue();
   }
   
@@ -141,5 +141,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->size.isEmpty();
+    return axisgroup_hdl->size.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -160,5 +160,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axisgroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+    if(!string_copy(axisgroup_hdl->standard_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -168,5 +168,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->standard_name.isEmpty();
+    return axisgroup_hdl->standard_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -187,5 +187,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(axisgroup_hdl->unit.getValue(),unit , unit_size))
+    if(!string_copy(axisgroup_hdl->unit.getInheritedValue(),unit , unit_size))
       ERROR("void cxios_get_axisgroup_unit(axisgroup_Ptr axisgroup_hdl, char * unit, int unit_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -195,5 +195,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->unit.isEmpty();
+    return axisgroup_hdl->unit.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -214,5 +214,5 @@
     CTimer::get("XIOS").resume();
     CArray<double,1> tmp(value,shape(extent1),neverDeleteData) ;
-    tmp=axisgroup_hdl->value ;
+    tmp=axisgroup_hdl->value.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -221,5 +221,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->value.isEmpty();
+    return axisgroup_hdl->value.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -237,5 +237,5 @@
   void cxios_get_axisgroup_zoom_begin(axisgroup_Ptr axisgroup_hdl, int* zoom_begin)
   {
-    *zoom_begin = axisgroup_hdl->zoom_begin.getValue();
+    *zoom_begin = axisgroup_hdl->zoom_begin.getInheritedValue();
   }
   
@@ -243,5 +243,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->zoom_begin.isEmpty();
+    return axisgroup_hdl->zoom_begin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -259,5 +259,5 @@
   void cxios_get_axisgroup_zoom_end(axisgroup_Ptr axisgroup_hdl, int* zoom_end)
   {
-    *zoom_end = axisgroup_hdl->zoom_end.getValue();
+    *zoom_end = axisgroup_hdl->zoom_end.getInheritedValue();
   }
   
@@ -265,5 +265,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->zoom_end.isEmpty();
+    return axisgroup_hdl->zoom_end.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -281,5 +281,5 @@
   void cxios_get_axisgroup_zoom_size(axisgroup_Ptr axisgroup_hdl, int* zoom_size)
   {
-    *zoom_size = axisgroup_hdl->zoom_size.getValue();
+    *zoom_size = axisgroup_hdl->zoom_size.getInheritedValue();
   }
   
@@ -287,5 +287,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !axisgroup_hdl->zoom_size.isEmpty();
+    return axisgroup_hdl->zoom_size.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/iccontext_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/iccontext_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/iccontext_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(context_hdl->calendar_type.getValue(),calendar_type , calendar_type_size))
+    if(!string_copy(context_hdl->calendar_type.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !context_hdl->calendar_type.isEmpty();
+    return context_hdl->calendar_type.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -57,5 +57,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(context_hdl->output_dir.getValue(),output_dir , output_dir_size))
+    if(!string_copy(context_hdl->output_dir.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -65,5 +65,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !context_hdl->output_dir.isEmpty();
+    return context_hdl->output_dir.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -84,5 +84,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(context_hdl->start_date.getValue(),start_date , start_date_size))
+    if(!string_copy(context_hdl->start_date.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -92,5 +92,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !context_hdl->start_date.isEmpty();
+    return context_hdl->start_date.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -111,5 +111,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(context_hdl->time_origin.getValue(),time_origin , time_origin_size))
+    if(!string_copy(context_hdl->time_origin.getInheritedValue(),time_origin , time_origin_size))
       ERROR("void cxios_get_context_time_origin(context_Ptr context_hdl, char * time_origin, int time_origin_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -119,5 +119,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !context_hdl->time_origin.isEmpty();
+    return context_hdl->time_origin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -138,5 +138,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(context_hdl->timestep.getValue(),timestep , timestep_size))
+    if(!string_copy(context_hdl->timestep.getInheritedValue(),timestep , timestep_size))
       ERROR("void cxios_get_context_timestep(context_Ptr context_hdl, char * timestep, int timestep_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -146,5 +146,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !context_hdl->timestep.isEmpty();
+    return context_hdl->timestep.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp	(revision 445)
@@ -27,5 +27,5 @@
   void cxios_get_domain_data_dim(domain_Ptr domain_hdl, int* data_dim)
   {
-    *data_dim = domain_hdl->data_dim.getValue();
+    *data_dim = domain_hdl->data_dim.getInheritedValue();
   }
   
@@ -33,5 +33,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_dim.isEmpty();
+    return domain_hdl->data_dim.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -52,5 +52,5 @@
     CTimer::get("XIOS").resume();
     CArray<int,1> tmp(data_i_index,shape(extent1),neverDeleteData) ;
-    tmp=domain_hdl->data_i_index ;
+    tmp=domain_hdl->data_i_index.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -59,5 +59,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_i_index.isEmpty();
+    return domain_hdl->data_i_index.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -75,5 +75,5 @@
   void cxios_get_domain_data_ibegin(domain_Ptr domain_hdl, int* data_ibegin)
   {
-    *data_ibegin = domain_hdl->data_ibegin.getValue();
+    *data_ibegin = domain_hdl->data_ibegin.getInheritedValue();
   }
   
@@ -81,5 +81,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_ibegin.isEmpty();
+    return domain_hdl->data_ibegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -100,5 +100,5 @@
     CTimer::get("XIOS").resume();
     CArray<int,1> tmp(data_j_index,shape(extent1),neverDeleteData) ;
-    tmp=domain_hdl->data_j_index ;
+    tmp=domain_hdl->data_j_index.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -107,5 +107,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_j_index.isEmpty();
+    return domain_hdl->data_j_index.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -123,5 +123,5 @@
   void cxios_get_domain_data_jbegin(domain_Ptr domain_hdl, int* data_jbegin)
   {
-    *data_jbegin = domain_hdl->data_jbegin.getValue();
+    *data_jbegin = domain_hdl->data_jbegin.getInheritedValue();
   }
   
@@ -129,5 +129,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_jbegin.isEmpty();
+    return domain_hdl->data_jbegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -145,5 +145,5 @@
   void cxios_get_domain_data_n_index(domain_Ptr domain_hdl, int* data_n_index)
   {
-    *data_n_index = domain_hdl->data_n_index.getValue();
+    *data_n_index = domain_hdl->data_n_index.getInheritedValue();
   }
   
@@ -151,5 +151,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_n_index.isEmpty();
+    return domain_hdl->data_n_index.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -167,5 +167,5 @@
   void cxios_get_domain_data_ni(domain_Ptr domain_hdl, int* data_ni)
   {
-    *data_ni = domain_hdl->data_ni.getValue();
+    *data_ni = domain_hdl->data_ni.getInheritedValue();
   }
   
@@ -173,5 +173,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_ni.isEmpty();
+    return domain_hdl->data_ni.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -189,5 +189,5 @@
   void cxios_get_domain_data_nj(domain_Ptr domain_hdl, int* data_nj)
   {
-    *data_nj = domain_hdl->data_nj.getValue();
+    *data_nj = domain_hdl->data_nj.getInheritedValue();
   }
   
@@ -195,5 +195,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->data_nj.isEmpty();
+    return domain_hdl->data_nj.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -214,5 +214,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domain_hdl->domain_group_ref.getValue(),domain_group_ref , domain_group_ref_size))
+    if(!string_copy(domain_hdl->domain_group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -222,5 +222,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->domain_group_ref.isEmpty();
+    return domain_hdl->domain_group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -238,5 +238,5 @@
   void cxios_get_domain_ibegin(domain_Ptr domain_hdl, int* ibegin)
   {
-    *ibegin = domain_hdl->ibegin.getValue();
+    *ibegin = domain_hdl->ibegin.getInheritedValue();
   }
   
@@ -244,5 +244,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->ibegin.isEmpty();
+    return domain_hdl->ibegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -260,5 +260,5 @@
   void cxios_get_domain_iend(domain_Ptr domain_hdl, int* iend)
   {
-    *iend = domain_hdl->iend.getValue();
+    *iend = domain_hdl->iend.getInheritedValue();
   }
   
@@ -266,5 +266,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->iend.isEmpty();
+    return domain_hdl->iend.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -282,5 +282,5 @@
   void cxios_get_domain_jbegin(domain_Ptr domain_hdl, int* jbegin)
   {
-    *jbegin = domain_hdl->jbegin.getValue();
+    *jbegin = domain_hdl->jbegin.getInheritedValue();
   }
   
@@ -288,5 +288,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->jbegin.isEmpty();
+    return domain_hdl->jbegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -304,5 +304,5 @@
   void cxios_get_domain_jend(domain_Ptr domain_hdl, int* jend)
   {
-    *jend = domain_hdl->jend.getValue();
+    *jend = domain_hdl->jend.getInheritedValue();
   }
   
@@ -310,5 +310,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->jend.isEmpty();
+    return domain_hdl->jend.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -329,5 +329,5 @@
     CTimer::get("XIOS").resume();
     CArray<double,1> tmp(latvalue,shape(extent1),neverDeleteData) ;
-    tmp=domain_hdl->latvalue ;
+    tmp=domain_hdl->latvalue.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -336,5 +336,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->latvalue.isEmpty();
+    return domain_hdl->latvalue.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -355,5 +355,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domain_hdl->long_name.getValue(),long_name , long_name_size))
+    if(!string_copy(domain_hdl->long_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -363,5 +363,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->long_name.isEmpty();
+    return domain_hdl->long_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -382,5 +382,5 @@
     CTimer::get("XIOS").resume();
     CArray<double,1> tmp(lonvalue,shape(extent1),neverDeleteData) ;
-    tmp=domain_hdl->lonvalue ;
+    tmp=domain_hdl->lonvalue.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -389,5 +389,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->lonvalue.isEmpty();
+    return domain_hdl->lonvalue.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -408,5 +408,5 @@
     CTimer::get("XIOS").resume();
     CArray<bool,2> tmp(mask,shape(extent1,extent2),neverDeleteData) ;
-    tmp=domain_hdl->mask ;
+    tmp=domain_hdl->mask.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -415,5 +415,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->mask.isEmpty();
+    return domain_hdl->mask.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -434,5 +434,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domain_hdl->name.getValue(),name , name_size))
+    if(!string_copy(domain_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_domain_name(domain_Ptr domain_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -442,5 +442,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->name.isEmpty();
+    return domain_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -458,5 +458,5 @@
   void cxios_get_domain_ni(domain_Ptr domain_hdl, int* ni)
   {
-    *ni = domain_hdl->ni.getValue();
+    *ni = domain_hdl->ni.getInheritedValue();
   }
   
@@ -464,5 +464,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->ni.isEmpty();
+    return domain_hdl->ni.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -480,5 +480,5 @@
   void cxios_get_domain_ni_glo(domain_Ptr domain_hdl, int* ni_glo)
   {
-    *ni_glo = domain_hdl->ni_glo.getValue();
+    *ni_glo = domain_hdl->ni_glo.getInheritedValue();
   }
   
@@ -486,5 +486,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->ni_glo.isEmpty();
+    return domain_hdl->ni_glo.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -502,5 +502,5 @@
   void cxios_get_domain_nj(domain_Ptr domain_hdl, int* nj)
   {
-    *nj = domain_hdl->nj.getValue();
+    *nj = domain_hdl->nj.getInheritedValue();
   }
   
@@ -508,5 +508,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->nj.isEmpty();
+    return domain_hdl->nj.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -524,5 +524,5 @@
   void cxios_get_domain_nj_glo(domain_Ptr domain_hdl, int* nj_glo)
   {
-    *nj_glo = domain_hdl->nj_glo.getValue();
+    *nj_glo = domain_hdl->nj_glo.getInheritedValue();
   }
   
@@ -530,5 +530,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->nj_glo.isEmpty();
+    return domain_hdl->nj_glo.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -549,5 +549,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domain_hdl->standard_name.getValue(),standard_name , standard_name_size))
+    if(!string_copy(domain_hdl->standard_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -557,5 +557,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->standard_name.isEmpty();
+    return domain_hdl->standard_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -573,5 +573,5 @@
   void cxios_get_domain_zoom_ibegin(domain_Ptr domain_hdl, int* zoom_ibegin)
   {
-    *zoom_ibegin = domain_hdl->zoom_ibegin.getValue();
+    *zoom_ibegin = domain_hdl->zoom_ibegin.getInheritedValue();
   }
   
@@ -579,5 +579,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_ibegin.isEmpty();
+    return domain_hdl->zoom_ibegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -595,5 +595,5 @@
   void cxios_get_domain_zoom_ibegin_loc(domain_Ptr domain_hdl, int* zoom_ibegin_loc)
   {
-    *zoom_ibegin_loc = domain_hdl->zoom_ibegin_loc.getValue();
+    *zoom_ibegin_loc = domain_hdl->zoom_ibegin_loc.getInheritedValue();
   }
   
@@ -601,5 +601,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_ibegin_loc.isEmpty();
+    return domain_hdl->zoom_ibegin_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -617,5 +617,5 @@
   void cxios_get_domain_zoom_jbegin(domain_Ptr domain_hdl, int* zoom_jbegin)
   {
-    *zoom_jbegin = domain_hdl->zoom_jbegin.getValue();
+    *zoom_jbegin = domain_hdl->zoom_jbegin.getInheritedValue();
   }
   
@@ -623,5 +623,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_jbegin.isEmpty();
+    return domain_hdl->zoom_jbegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -639,5 +639,5 @@
   void cxios_get_domain_zoom_jbegin_loc(domain_Ptr domain_hdl, int* zoom_jbegin_loc)
   {
-    *zoom_jbegin_loc = domain_hdl->zoom_jbegin_loc.getValue();
+    *zoom_jbegin_loc = domain_hdl->zoom_jbegin_loc.getInheritedValue();
   }
   
@@ -645,5 +645,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_jbegin_loc.isEmpty();
+    return domain_hdl->zoom_jbegin_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -661,5 +661,5 @@
   void cxios_get_domain_zoom_ni(domain_Ptr domain_hdl, int* zoom_ni)
   {
-    *zoom_ni = domain_hdl->zoom_ni.getValue();
+    *zoom_ni = domain_hdl->zoom_ni.getInheritedValue();
   }
   
@@ -667,5 +667,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_ni.isEmpty();
+    return domain_hdl->zoom_ni.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -683,5 +683,5 @@
   void cxios_get_domain_zoom_ni_loc(domain_Ptr domain_hdl, int* zoom_ni_loc)
   {
-    *zoom_ni_loc = domain_hdl->zoom_ni_loc.getValue();
+    *zoom_ni_loc = domain_hdl->zoom_ni_loc.getInheritedValue();
   }
   
@@ -689,5 +689,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_ni_loc.isEmpty();
+    return domain_hdl->zoom_ni_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -705,5 +705,5 @@
   void cxios_get_domain_zoom_nj(domain_Ptr domain_hdl, int* zoom_nj)
   {
-    *zoom_nj = domain_hdl->zoom_nj.getValue();
+    *zoom_nj = domain_hdl->zoom_nj.getInheritedValue();
   }
   
@@ -711,5 +711,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_nj.isEmpty();
+    return domain_hdl->zoom_nj.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -727,5 +727,5 @@
   void cxios_get_domain_zoom_nj_loc(domain_Ptr domain_hdl, int* zoom_nj_loc)
   {
-    *zoom_nj_loc = domain_hdl->zoom_nj_loc.getValue();
+    *zoom_nj_loc = domain_hdl->zoom_nj_loc.getInheritedValue();
   }
   
@@ -733,5 +733,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domain_hdl->zoom_nj_loc.isEmpty();
+    return domain_hdl->zoom_nj_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 445)
@@ -27,5 +27,5 @@
   void cxios_get_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int* data_dim)
   {
-    *data_dim = domaingroup_hdl->data_dim.getValue();
+    *data_dim = domaingroup_hdl->data_dim.getInheritedValue();
   }
   
@@ -33,5 +33,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_dim.isEmpty();
+    return domaingroup_hdl->data_dim.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -52,5 +52,5 @@
     CTimer::get("XIOS").resume();
     CArray<int,1> tmp(data_i_index,shape(extent1),neverDeleteData) ;
-    tmp=domaingroup_hdl->data_i_index ;
+    tmp=domaingroup_hdl->data_i_index.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -59,5 +59,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_i_index.isEmpty();
+    return domaingroup_hdl->data_i_index.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -75,5 +75,5 @@
   void cxios_get_domaingroup_data_ibegin(domaingroup_Ptr domaingroup_hdl, int* data_ibegin)
   {
-    *data_ibegin = domaingroup_hdl->data_ibegin.getValue();
+    *data_ibegin = domaingroup_hdl->data_ibegin.getInheritedValue();
   }
   
@@ -81,5 +81,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_ibegin.isEmpty();
+    return domaingroup_hdl->data_ibegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -100,5 +100,5 @@
     CTimer::get("XIOS").resume();
     CArray<int,1> tmp(data_j_index,shape(extent1),neverDeleteData) ;
-    tmp=domaingroup_hdl->data_j_index ;
+    tmp=domaingroup_hdl->data_j_index.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -107,5 +107,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_j_index.isEmpty();
+    return domaingroup_hdl->data_j_index.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -123,5 +123,5 @@
   void cxios_get_domaingroup_data_jbegin(domaingroup_Ptr domaingroup_hdl, int* data_jbegin)
   {
-    *data_jbegin = domaingroup_hdl->data_jbegin.getValue();
+    *data_jbegin = domaingroup_hdl->data_jbegin.getInheritedValue();
   }
   
@@ -129,5 +129,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_jbegin.isEmpty();
+    return domaingroup_hdl->data_jbegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -145,5 +145,5 @@
   void cxios_get_domaingroup_data_n_index(domaingroup_Ptr domaingroup_hdl, int* data_n_index)
   {
-    *data_n_index = domaingroup_hdl->data_n_index.getValue();
+    *data_n_index = domaingroup_hdl->data_n_index.getInheritedValue();
   }
   
@@ -151,5 +151,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_n_index.isEmpty();
+    return domaingroup_hdl->data_n_index.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -167,5 +167,5 @@
   void cxios_get_domaingroup_data_ni(domaingroup_Ptr domaingroup_hdl, int* data_ni)
   {
-    *data_ni = domaingroup_hdl->data_ni.getValue();
+    *data_ni = domaingroup_hdl->data_ni.getInheritedValue();
   }
   
@@ -173,5 +173,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_ni.isEmpty();
+    return domaingroup_hdl->data_ni.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -189,5 +189,5 @@
   void cxios_get_domaingroup_data_nj(domaingroup_Ptr domaingroup_hdl, int* data_nj)
   {
-    *data_nj = domaingroup_hdl->data_nj.getValue();
+    *data_nj = domaingroup_hdl->data_nj.getInheritedValue();
   }
   
@@ -195,5 +195,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->data_nj.isEmpty();
+    return domaingroup_hdl->data_nj.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -214,5 +214,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domaingroup_hdl->domain_group_ref.getValue(),domain_group_ref , domain_group_ref_size))
+    if(!string_copy(domaingroup_hdl->domain_group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -222,5 +222,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->domain_group_ref.isEmpty();
+    return domaingroup_hdl->domain_group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -241,5 +241,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domaingroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+    if(!string_copy(domaingroup_hdl->group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -249,5 +249,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->group_ref.isEmpty();
+    return domaingroup_hdl->group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -265,5 +265,5 @@
   void cxios_get_domaingroup_ibegin(domaingroup_Ptr domaingroup_hdl, int* ibegin)
   {
-    *ibegin = domaingroup_hdl->ibegin.getValue();
+    *ibegin = domaingroup_hdl->ibegin.getInheritedValue();
   }
   
@@ -271,5 +271,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->ibegin.isEmpty();
+    return domaingroup_hdl->ibegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -287,5 +287,5 @@
   void cxios_get_domaingroup_iend(domaingroup_Ptr domaingroup_hdl, int* iend)
   {
-    *iend = domaingroup_hdl->iend.getValue();
+    *iend = domaingroup_hdl->iend.getInheritedValue();
   }
   
@@ -293,5 +293,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->iend.isEmpty();
+    return domaingroup_hdl->iend.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -309,5 +309,5 @@
   void cxios_get_domaingroup_jbegin(domaingroup_Ptr domaingroup_hdl, int* jbegin)
   {
-    *jbegin = domaingroup_hdl->jbegin.getValue();
+    *jbegin = domaingroup_hdl->jbegin.getInheritedValue();
   }
   
@@ -315,5 +315,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->jbegin.isEmpty();
+    return domaingroup_hdl->jbegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -331,5 +331,5 @@
   void cxios_get_domaingroup_jend(domaingroup_Ptr domaingroup_hdl, int* jend)
   {
-    *jend = domaingroup_hdl->jend.getValue();
+    *jend = domaingroup_hdl->jend.getInheritedValue();
   }
   
@@ -337,5 +337,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->jend.isEmpty();
+    return domaingroup_hdl->jend.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -356,5 +356,5 @@
     CTimer::get("XIOS").resume();
     CArray<double,1> tmp(latvalue,shape(extent1),neverDeleteData) ;
-    tmp=domaingroup_hdl->latvalue ;
+    tmp=domaingroup_hdl->latvalue.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -363,5 +363,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->latvalue.isEmpty();
+    return domaingroup_hdl->latvalue.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -382,5 +382,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domaingroup_hdl->long_name.getValue(),long_name , long_name_size))
+    if(!string_copy(domaingroup_hdl->long_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -390,5 +390,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->long_name.isEmpty();
+    return domaingroup_hdl->long_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -409,5 +409,5 @@
     CTimer::get("XIOS").resume();
     CArray<double,1> tmp(lonvalue,shape(extent1),neverDeleteData) ;
-    tmp=domaingroup_hdl->lonvalue ;
+    tmp=domaingroup_hdl->lonvalue.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -416,5 +416,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->lonvalue.isEmpty();
+    return domaingroup_hdl->lonvalue.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -435,5 +435,5 @@
     CTimer::get("XIOS").resume();
     CArray<bool,2> tmp(mask,shape(extent1,extent2),neverDeleteData) ;
-    tmp=domaingroup_hdl->mask ;
+    tmp=domaingroup_hdl->mask.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -442,5 +442,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->mask.isEmpty();
+    return domaingroup_hdl->mask.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -461,5 +461,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domaingroup_hdl->name.getValue(),name , name_size))
+    if(!string_copy(domaingroup_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_domaingroup_name(domaingroup_Ptr domaingroup_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -469,5 +469,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->name.isEmpty();
+    return domaingroup_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -485,5 +485,5 @@
   void cxios_get_domaingroup_ni(domaingroup_Ptr domaingroup_hdl, int* ni)
   {
-    *ni = domaingroup_hdl->ni.getValue();
+    *ni = domaingroup_hdl->ni.getInheritedValue();
   }
   
@@ -491,5 +491,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->ni.isEmpty();
+    return domaingroup_hdl->ni.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -507,5 +507,5 @@
   void cxios_get_domaingroup_ni_glo(domaingroup_Ptr domaingroup_hdl, int* ni_glo)
   {
-    *ni_glo = domaingroup_hdl->ni_glo.getValue();
+    *ni_glo = domaingroup_hdl->ni_glo.getInheritedValue();
   }
   
@@ -513,5 +513,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->ni_glo.isEmpty();
+    return domaingroup_hdl->ni_glo.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -529,5 +529,5 @@
   void cxios_get_domaingroup_nj(domaingroup_Ptr domaingroup_hdl, int* nj)
   {
-    *nj = domaingroup_hdl->nj.getValue();
+    *nj = domaingroup_hdl->nj.getInheritedValue();
   }
   
@@ -535,5 +535,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->nj.isEmpty();
+    return domaingroup_hdl->nj.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -551,5 +551,5 @@
   void cxios_get_domaingroup_nj_glo(domaingroup_Ptr domaingroup_hdl, int* nj_glo)
   {
-    *nj_glo = domaingroup_hdl->nj_glo.getValue();
+    *nj_glo = domaingroup_hdl->nj_glo.getInheritedValue();
   }
   
@@ -557,5 +557,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->nj_glo.isEmpty();
+    return domaingroup_hdl->nj_glo.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -576,5 +576,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(domaingroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+    if(!string_copy(domaingroup_hdl->standard_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -584,5 +584,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->standard_name.isEmpty();
+    return domaingroup_hdl->standard_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -600,5 +600,5 @@
   void cxios_get_domaingroup_zoom_ibegin(domaingroup_Ptr domaingroup_hdl, int* zoom_ibegin)
   {
-    *zoom_ibegin = domaingroup_hdl->zoom_ibegin.getValue();
+    *zoom_ibegin = domaingroup_hdl->zoom_ibegin.getInheritedValue();
   }
   
@@ -606,5 +606,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_ibegin.isEmpty();
+    return domaingroup_hdl->zoom_ibegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -622,5 +622,5 @@
   void cxios_get_domaingroup_zoom_ibegin_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_ibegin_loc)
   {
-    *zoom_ibegin_loc = domaingroup_hdl->zoom_ibegin_loc.getValue();
+    *zoom_ibegin_loc = domaingroup_hdl->zoom_ibegin_loc.getInheritedValue();
   }
   
@@ -628,5 +628,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_ibegin_loc.isEmpty();
+    return domaingroup_hdl->zoom_ibegin_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -644,5 +644,5 @@
   void cxios_get_domaingroup_zoom_jbegin(domaingroup_Ptr domaingroup_hdl, int* zoom_jbegin)
   {
-    *zoom_jbegin = domaingroup_hdl->zoom_jbegin.getValue();
+    *zoom_jbegin = domaingroup_hdl->zoom_jbegin.getInheritedValue();
   }
   
@@ -650,5 +650,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_jbegin.isEmpty();
+    return domaingroup_hdl->zoom_jbegin.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -666,5 +666,5 @@
   void cxios_get_domaingroup_zoom_jbegin_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_jbegin_loc)
   {
-    *zoom_jbegin_loc = domaingroup_hdl->zoom_jbegin_loc.getValue();
+    *zoom_jbegin_loc = domaingroup_hdl->zoom_jbegin_loc.getInheritedValue();
   }
   
@@ -672,5 +672,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_jbegin_loc.isEmpty();
+    return domaingroup_hdl->zoom_jbegin_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -688,5 +688,5 @@
   void cxios_get_domaingroup_zoom_ni(domaingroup_Ptr domaingroup_hdl, int* zoom_ni)
   {
-    *zoom_ni = domaingroup_hdl->zoom_ni.getValue();
+    *zoom_ni = domaingroup_hdl->zoom_ni.getInheritedValue();
   }
   
@@ -694,5 +694,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_ni.isEmpty();
+    return domaingroup_hdl->zoom_ni.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -710,5 +710,5 @@
   void cxios_get_domaingroup_zoom_ni_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_ni_loc)
   {
-    *zoom_ni_loc = domaingroup_hdl->zoom_ni_loc.getValue();
+    *zoom_ni_loc = domaingroup_hdl->zoom_ni_loc.getInheritedValue();
   }
   
@@ -716,5 +716,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_ni_loc.isEmpty();
+    return domaingroup_hdl->zoom_ni_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -732,5 +732,5 @@
   void cxios_get_domaingroup_zoom_nj(domaingroup_Ptr domaingroup_hdl, int* zoom_nj)
   {
-    *zoom_nj = domaingroup_hdl->zoom_nj.getValue();
+    *zoom_nj = domaingroup_hdl->zoom_nj.getInheritedValue();
   }
   
@@ -738,5 +738,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_nj.isEmpty();
+    return domaingroup_hdl->zoom_nj.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -754,5 +754,5 @@
   void cxios_get_domaingroup_zoom_nj_loc(domaingroup_Ptr domaingroup_hdl, int* zoom_nj_loc)
   {
-    *zoom_nj_loc = domaingroup_hdl->zoom_nj_loc.getValue();
+    *zoom_nj_loc = domaingroup_hdl->zoom_nj_loc.getInheritedValue();
   }
   
@@ -760,5 +760,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !domaingroup_hdl->zoom_nj_loc.isEmpty();
+    return domaingroup_hdl->zoom_nj_loc.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icfield_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icfield_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icfield_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+    if(!string_copy(field_hdl->axis_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->axis_ref.isEmpty();
+    return field_hdl->axis_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -54,5 +54,5 @@
   void cxios_get_field_default_value(field_Ptr field_hdl, double* default_value)
   {
-    *default_value = field_hdl->default_value.getValue();
+    *default_value = field_hdl->default_value.getInheritedValue();
   }
   
@@ -60,5 +60,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->default_value.isEmpty();
+    return field_hdl->default_value.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -79,5 +79,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+    if(!string_copy(field_hdl->domain_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -87,5 +87,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->domain_ref.isEmpty();
+    return field_hdl->domain_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -103,5 +103,5 @@
   void cxios_get_field_enabled(field_Ptr field_hdl, bool* enabled)
   {
-    *enabled = field_hdl->enabled.getValue();
+    *enabled = field_hdl->enabled.getInheritedValue();
   }
   
@@ -109,5 +109,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->enabled.isEmpty();
+    return field_hdl->enabled.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -128,5 +128,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->field_ref.getValue(),field_ref , field_ref_size))
+    if(!string_copy(field_hdl->field_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -136,5 +136,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->field_ref.isEmpty();
+    return field_hdl->field_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -155,5 +155,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->freq_offset.getValue(),freq_offset , freq_offset_size))
+    if(!string_copy(field_hdl->freq_offset.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -163,5 +163,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->freq_offset.isEmpty();
+    return field_hdl->freq_offset.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -182,5 +182,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->freq_op.getValue(),freq_op , freq_op_size))
+    if(!string_copy(field_hdl->freq_op.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -190,5 +190,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->freq_op.isEmpty();
+    return field_hdl->freq_op.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -209,5 +209,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->grid_ref.getValue(),grid_ref , grid_ref_size))
+    if(!string_copy(field_hdl->grid_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -217,5 +217,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->grid_ref.isEmpty();
+    return field_hdl->grid_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -233,5 +233,5 @@
   void cxios_get_field_level(field_Ptr field_hdl, int* level)
   {
-    *level = field_hdl->level.getValue();
+    *level = field_hdl->level.getInheritedValue();
   }
   
@@ -239,5 +239,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->level.isEmpty();
+    return field_hdl->level.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -258,5 +258,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->long_name.getValue(),long_name , long_name_size))
+    if(!string_copy(field_hdl->long_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -266,5 +266,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->long_name.isEmpty();
+    return field_hdl->long_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -285,5 +285,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->name.getValue(),name , name_size))
+    if(!string_copy(field_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_field_name(field_Ptr field_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -293,5 +293,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->name.isEmpty();
+    return field_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -312,5 +312,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->operation.getValue(),operation , operation_size))
+    if(!string_copy(field_hdl->operation.getInheritedValue(),operation , operation_size))
       ERROR("void cxios_get_field_operation(field_Ptr field_hdl, char * operation, int operation_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -320,5 +320,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->operation.isEmpty();
+    return field_hdl->operation.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -336,5 +336,5 @@
   void cxios_get_field_prec(field_Ptr field_hdl, int* prec)
   {
-    *prec = field_hdl->prec.getValue();
+    *prec = field_hdl->prec.getInheritedValue();
   }
   
@@ -342,5 +342,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->prec.isEmpty();
+    return field_hdl->prec.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -361,5 +361,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->standard_name.getValue(),standard_name , standard_name_size))
+    if(!string_copy(field_hdl->standard_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -369,5 +369,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->standard_name.isEmpty();
+    return field_hdl->standard_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -388,5 +388,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(field_hdl->unit.getValue(),unit , unit_size))
+    if(!string_copy(field_hdl->unit.getInheritedValue(),unit , unit_size))
       ERROR("void cxios_get_field_unit(field_Ptr field_hdl, char * unit, int unit_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -396,5 +396,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !field_hdl->unit.isEmpty();
+    return field_hdl->unit.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+    if(!string_copy(fieldgroup_hdl->axis_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->axis_ref.isEmpty();
+    return fieldgroup_hdl->axis_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -54,5 +54,5 @@
   void cxios_get_fieldgroup_default_value(fieldgroup_Ptr fieldgroup_hdl, double* default_value)
   {
-    *default_value = fieldgroup_hdl->default_value.getValue();
+    *default_value = fieldgroup_hdl->default_value.getInheritedValue();
   }
   
@@ -60,5 +60,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->default_value.isEmpty();
+    return fieldgroup_hdl->default_value.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -79,5 +79,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+    if(!string_copy(fieldgroup_hdl->domain_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -87,5 +87,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->domain_ref.isEmpty();
+    return fieldgroup_hdl->domain_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -103,5 +103,5 @@
   void cxios_get_fieldgroup_enabled(fieldgroup_Ptr fieldgroup_hdl, bool* enabled)
   {
-    *enabled = fieldgroup_hdl->enabled.getValue();
+    *enabled = fieldgroup_hdl->enabled.getInheritedValue();
   }
   
@@ -109,5 +109,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->enabled.isEmpty();
+    return fieldgroup_hdl->enabled.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -128,5 +128,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->field_ref.getValue(),field_ref , field_ref_size))
+    if(!string_copy(fieldgroup_hdl->field_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -136,5 +136,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->field_ref.isEmpty();
+    return fieldgroup_hdl->field_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -155,5 +155,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->freq_offset.getValue(),freq_offset , freq_offset_size))
+    if(!string_copy(fieldgroup_hdl->freq_offset.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -163,5 +163,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->freq_offset.isEmpty();
+    return fieldgroup_hdl->freq_offset.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -182,5 +182,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->freq_op.getValue(),freq_op , freq_op_size))
+    if(!string_copy(fieldgroup_hdl->freq_op.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -190,5 +190,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->freq_op.isEmpty();
+    return fieldgroup_hdl->freq_op.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -209,5 +209,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->grid_ref.getValue(),grid_ref , grid_ref_size))
+    if(!string_copy(fieldgroup_hdl->grid_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -217,5 +217,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->grid_ref.isEmpty();
+    return fieldgroup_hdl->grid_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -236,5 +236,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+    if(!string_copy(fieldgroup_hdl->group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -244,5 +244,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->group_ref.isEmpty();
+    return fieldgroup_hdl->group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -260,5 +260,5 @@
   void cxios_get_fieldgroup_level(fieldgroup_Ptr fieldgroup_hdl, int* level)
   {
-    *level = fieldgroup_hdl->level.getValue();
+    *level = fieldgroup_hdl->level.getInheritedValue();
   }
   
@@ -266,5 +266,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->level.isEmpty();
+    return fieldgroup_hdl->level.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -285,5 +285,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->long_name.getValue(),long_name , long_name_size))
+    if(!string_copy(fieldgroup_hdl->long_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -293,5 +293,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->long_name.isEmpty();
+    return fieldgroup_hdl->long_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -312,5 +312,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->name.getValue(),name , name_size))
+    if(!string_copy(fieldgroup_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_fieldgroup_name(fieldgroup_Ptr fieldgroup_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -320,5 +320,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->name.isEmpty();
+    return fieldgroup_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -339,5 +339,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->operation.getValue(),operation , operation_size))
+    if(!string_copy(fieldgroup_hdl->operation.getInheritedValue(),operation , operation_size))
       ERROR("void cxios_get_fieldgroup_operation(fieldgroup_Ptr fieldgroup_hdl, char * operation, int operation_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -347,5 +347,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->operation.isEmpty();
+    return fieldgroup_hdl->operation.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -363,5 +363,5 @@
   void cxios_get_fieldgroup_prec(fieldgroup_Ptr fieldgroup_hdl, int* prec)
   {
-    *prec = fieldgroup_hdl->prec.getValue();
+    *prec = fieldgroup_hdl->prec.getInheritedValue();
   }
   
@@ -369,5 +369,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->prec.isEmpty();
+    return fieldgroup_hdl->prec.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -388,5 +388,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->standard_name.getValue(),standard_name , standard_name_size))
+    if(!string_copy(fieldgroup_hdl->standard_name.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -396,5 +396,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->standard_name.isEmpty();
+    return fieldgroup_hdl->standard_name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -415,5 +415,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(fieldgroup_hdl->unit.getValue(),unit , unit_size))
+    if(!string_copy(fieldgroup_hdl->unit.getInheritedValue(),unit , unit_size))
       ERROR("void cxios_get_fieldgroup_unit(fieldgroup_Ptr fieldgroup_hdl, char * unit, int unit_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -423,5 +423,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !fieldgroup_hdl->unit.isEmpty();
+    return fieldgroup_hdl->unit.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icfile_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icfile_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icfile_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->description.getValue(),description , description_size))
+    if(!string_copy(file_hdl->description.getInheritedValue(),description , description_size))
       ERROR("void cxios_get_file_description(file_Ptr file_hdl, char * description, int description_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->description.isEmpty();
+    return file_hdl->description.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -54,5 +54,5 @@
   void cxios_get_file_enabled(file_Ptr file_hdl, bool* enabled)
   {
-    *enabled = file_hdl->enabled.getValue();
+    *enabled = file_hdl->enabled.getInheritedValue();
   }
   
@@ -60,5 +60,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->enabled.isEmpty();
+    return file_hdl->enabled.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -76,5 +76,5 @@
   void cxios_get_file_min_digits(file_Ptr file_hdl, int* min_digits)
   {
-    *min_digits = file_hdl->min_digits.getValue();
+    *min_digits = file_hdl->min_digits.getInheritedValue();
   }
   
@@ -82,5 +82,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->min_digits.isEmpty();
+    return file_hdl->min_digits.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -101,5 +101,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->name.getValue(),name , name_size))
+    if(!string_copy(file_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_file_name(file_Ptr file_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -109,5 +109,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->name.isEmpty();
+    return file_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -128,5 +128,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->name_suffix.getValue(),name_suffix , name_suffix_size))
+    if(!string_copy(file_hdl->name_suffix.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -136,5 +136,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->name_suffix.isEmpty();
+    return file_hdl->name_suffix.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -155,5 +155,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->output_freq.getValue(),output_freq , output_freq_size))
+    if(!string_copy(file_hdl->output_freq.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -163,5 +163,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->output_freq.isEmpty();
+    return file_hdl->output_freq.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -179,5 +179,5 @@
   void cxios_get_file_output_level(file_Ptr file_hdl, int* output_level)
   {
-    *output_level = file_hdl->output_level.getValue();
+    *output_level = file_hdl->output_level.getInheritedValue();
   }
   
@@ -185,5 +185,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->output_level.isEmpty();
+    return file_hdl->output_level.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -204,5 +204,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->par_access.getValue(),par_access , par_access_size))
+    if(!string_copy(file_hdl->par_access.getInheritedValue(),par_access , par_access_size))
       ERROR("void cxios_get_file_par_access(file_Ptr file_hdl, char * par_access, int par_access_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -212,5 +212,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->par_access.isEmpty();
+    return file_hdl->par_access.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -231,5 +231,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->split_freq.getValue(),split_freq , split_freq_size))
+    if(!string_copy(file_hdl->split_freq.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -239,5 +239,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->split_freq.isEmpty();
+    return file_hdl->split_freq.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -258,5 +258,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->split_freq_format.getValue(),split_freq_format , split_freq_format_size))
+    if(!string_copy(file_hdl->split_freq_format.getInheritedValue(),split_freq_format , split_freq_format_size))
       ERROR("void cxios_get_file_split_freq_format(file_Ptr file_hdl, char * split_freq_format, int split_freq_format_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -266,5 +266,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->split_freq_format.isEmpty();
+    return file_hdl->split_freq_format.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -285,5 +285,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->sync_freq.getValue(),sync_freq , sync_freq_size))
+    if(!string_copy(file_hdl->sync_freq.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -293,5 +293,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->sync_freq.isEmpty();
+    return file_hdl->sync_freq.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -312,5 +312,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(file_hdl->type.getStringValue(),type , type_size))
+    if(!string_copy(file_hdl->type.getInheritedStringValue(),type , type_size))
       ERROR("void cxios_get_file_type(file_Ptr file_hdl, char * type, int type_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -320,5 +320,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !file_hdl->type.isEmpty();
+    return file_hdl->type.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->description.getValue(),description , description_size))
+    if(!string_copy(filegroup_hdl->description.getInheritedValue(),description , description_size))
       ERROR("void cxios_get_filegroup_description(filegroup_Ptr filegroup_hdl, char * description, int description_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->description.isEmpty();
+    return filegroup_hdl->description.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -54,5 +54,5 @@
   void cxios_get_filegroup_enabled(filegroup_Ptr filegroup_hdl, bool* enabled)
   {
-    *enabled = filegroup_hdl->enabled.getValue();
+    *enabled = filegroup_hdl->enabled.getInheritedValue();
   }
   
@@ -60,5 +60,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->enabled.isEmpty();
+    return filegroup_hdl->enabled.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -79,5 +79,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+    if(!string_copy(filegroup_hdl->group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -87,5 +87,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->group_ref.isEmpty();
+    return filegroup_hdl->group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -103,5 +103,5 @@
   void cxios_get_filegroup_min_digits(filegroup_Ptr filegroup_hdl, int* min_digits)
   {
-    *min_digits = filegroup_hdl->min_digits.getValue();
+    *min_digits = filegroup_hdl->min_digits.getInheritedValue();
   }
   
@@ -109,5 +109,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->min_digits.isEmpty();
+    return filegroup_hdl->min_digits.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -128,5 +128,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->name.getValue(),name , name_size))
+    if(!string_copy(filegroup_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_filegroup_name(filegroup_Ptr filegroup_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -136,5 +136,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->name.isEmpty();
+    return filegroup_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -155,5 +155,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->name_suffix.getValue(),name_suffix , name_suffix_size))
+    if(!string_copy(filegroup_hdl->name_suffix.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -163,5 +163,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->name_suffix.isEmpty();
+    return filegroup_hdl->name_suffix.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -182,5 +182,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->output_freq.getValue(),output_freq , output_freq_size))
+    if(!string_copy(filegroup_hdl->output_freq.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -190,5 +190,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->output_freq.isEmpty();
+    return filegroup_hdl->output_freq.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -206,5 +206,5 @@
   void cxios_get_filegroup_output_level(filegroup_Ptr filegroup_hdl, int* output_level)
   {
-    *output_level = filegroup_hdl->output_level.getValue();
+    *output_level = filegroup_hdl->output_level.getInheritedValue();
   }
   
@@ -212,5 +212,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->output_level.isEmpty();
+    return filegroup_hdl->output_level.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -231,5 +231,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->par_access.getValue(),par_access , par_access_size))
+    if(!string_copy(filegroup_hdl->par_access.getInheritedValue(),par_access , par_access_size))
       ERROR("void cxios_get_filegroup_par_access(filegroup_Ptr filegroup_hdl, char * par_access, int par_access_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -239,5 +239,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->par_access.isEmpty();
+    return filegroup_hdl->par_access.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -258,5 +258,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->split_freq.getValue(),split_freq , split_freq_size))
+    if(!string_copy(filegroup_hdl->split_freq.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -266,5 +266,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->split_freq.isEmpty();
+    return filegroup_hdl->split_freq.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -285,5 +285,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->split_freq_format.getValue(),split_freq_format , split_freq_format_size))
+    if(!string_copy(filegroup_hdl->split_freq_format.getInheritedValue(),split_freq_format , split_freq_format_size))
       ERROR("void cxios_get_filegroup_split_freq_format(filegroup_Ptr filegroup_hdl, char * split_freq_format, int split_freq_format_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -293,5 +293,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->split_freq_format.isEmpty();
+    return filegroup_hdl->split_freq_format.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -312,5 +312,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->sync_freq.getValue(),sync_freq , sync_freq_size))
+    if(!string_copy(filegroup_hdl->sync_freq.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -320,5 +320,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->sync_freq.isEmpty();
+    return filegroup_hdl->sync_freq.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -339,5 +339,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(filegroup_hdl->type.getStringValue(),type , type_size))
+    if(!string_copy(filegroup_hdl->type.getInheritedStringValue(),type , type_size))
       ERROR("void cxios_get_filegroup_type(filegroup_Ptr filegroup_hdl, char * type, int type_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -347,5 +347,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !filegroup_hdl->type.isEmpty();
+    return filegroup_hdl->type.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icgrid_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(grid_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+    if(!string_copy(grid_hdl->axis_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !grid_hdl->axis_ref.isEmpty();
+    return grid_hdl->axis_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -57,5 +57,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(grid_hdl->description.getValue(),description , description_size))
+    if(!string_copy(grid_hdl->description.getInheritedValue(),description , description_size))
       ERROR("void cxios_get_grid_description(grid_Ptr grid_hdl, char * description, int description_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -65,5 +65,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !grid_hdl->description.isEmpty();
+    return grid_hdl->description.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -84,5 +84,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(grid_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+    if(!string_copy(grid_hdl->domain_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -92,5 +92,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !grid_hdl->domain_ref.isEmpty();
+    return grid_hdl->domain_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -111,5 +111,5 @@
     CTimer::get("XIOS").resume();
     CArray<bool,3> tmp(mask,shape(extent1,extent2,extent3),neverDeleteData) ;
-    tmp=grid_hdl->mask ;
+    tmp=grid_hdl->mask.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -118,5 +118,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !grid_hdl->mask.isEmpty();
+    return grid_hdl->mask.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -137,5 +137,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(grid_hdl->name.getValue(),name , name_size))
+    if(!string_copy(grid_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_grid_name(grid_Ptr grid_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -145,5 +145,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !grid_hdl->name.isEmpty();
+    return grid_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp	(revision 444)
+++ XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp	(revision 445)
@@ -30,5 +30,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(gridgroup_hdl->axis_ref.getValue(),axis_ref , axis_ref_size))
+    if(!string_copy(gridgroup_hdl->axis_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -38,5 +38,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !gridgroup_hdl->axis_ref.isEmpty();
+    return gridgroup_hdl->axis_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -57,5 +57,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(gridgroup_hdl->description.getValue(),description , description_size))
+    if(!string_copy(gridgroup_hdl->description.getInheritedValue(),description , description_size))
       ERROR("void cxios_get_gridgroup_description(gridgroup_Ptr gridgroup_hdl, char * description, int description_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -65,5 +65,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !gridgroup_hdl->description.isEmpty();
+    return gridgroup_hdl->description.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -84,5 +84,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(gridgroup_hdl->domain_ref.getValue(),domain_ref , domain_ref_size))
+    if(!string_copy(gridgroup_hdl->domain_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -92,5 +92,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !gridgroup_hdl->domain_ref.isEmpty();
+    return gridgroup_hdl->domain_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -111,5 +111,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(gridgroup_hdl->group_ref.getValue(),group_ref , group_ref_size))
+    if(!string_copy(gridgroup_hdl->group_ref.getInheritedValue(),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");
      CTimer::get("XIOS").suspend();
@@ -119,5 +119,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !gridgroup_hdl->group_ref.isEmpty();
+    return gridgroup_hdl->group_ref.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -138,5 +138,5 @@
     CTimer::get("XIOS").resume();
     CArray<bool,3> tmp(mask,shape(extent1,extent2,extent3),neverDeleteData) ;
-    tmp=gridgroup_hdl->mask ;
+    tmp=gridgroup_hdl->mask.getInheritedValue() ;
      CTimer::get("XIOS").suspend();
   }
@@ -145,5 +145,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !gridgroup_hdl->mask.isEmpty();
+    return gridgroup_hdl->mask.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
@@ -164,5 +164,5 @@
   {
      CTimer::get("XIOS").resume();
-    if(!string_copy(gridgroup_hdl->name.getValue(),name , name_size))
+    if(!string_copy(gridgroup_hdl->name.getInheritedValue(),name , name_size))
       ERROR("void cxios_get_gridgroup_name(gridgroup_Ptr gridgroup_hdl, char * name, int name_size)", <<"Input string is to short");
      CTimer::get("XIOS").suspend();
@@ -172,5 +172,5 @@
   {
      CTimer::get("XIOS").resume();
-    return !gridgroup_hdl->name.isEmpty();
+    return gridgroup_hdl->name.hasInheritedValue();
      CTimer::get("XIOS").suspend();
   }
Index: XIOS/trunk/src/interface/fortran/idata.F90
===================================================================
--- XIOS/trunk/src/interface/fortran/idata.F90	(revision 444)
+++ XIOS/trunk/src/interface/fortran/idata.F90	(revision 445)
@@ -37,4 +37,7 @@
       SUBROUTINE  cxios_finalize() BIND(C)
       END SUBROUTINE cxios_finalize
+
+      SUBROUTINE  cxios_solve_inheritance() BIND(C)
+      END SUBROUTINE cxios_solve_inheritance
 
  
@@ -148,5 +151,9 @@
    END SUBROUTINE xios(context_finalize)
    
-
+   SUBROUTINE xios(solve_inheritance)()
+   IMPLICIT NONE
+      CALL cxios_solve_inheritance()
+   END SUBROUTINE xios(solve_inheritance)
+  
    
    SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
Index: XIOS/trunk/src/interface/fortran/ixios.F90
===================================================================
--- XIOS/trunk/src/interface/fortran/ixios.F90	(revision 444)
+++ XIOS/trunk/src/interface/fortran/ixios.F90	(revision 445)
@@ -12,5 +12,5 @@
                                                
 USE idata, ONLY : xios(initialize),xios(init_server), xios(finalize), xios(context_initialize),  &
-                  xios(close_context_definition),       &
+                  xios(close_context_definition),xios(solve_inheritance),       &
                   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), &
@@ -155,5 +155,5 @@
  PUBLIC :: xios(set_current_context)  
  PUBLIC :: xios(set_timestep),xios(update_calendar)
- PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),                       &
+ PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),xios(solve_inheritance), &
            xios(close_context_definition), xios(context_finalize), xios(send_field),xios(field_is_active)
 
Index: XIOS/trunk/src/node/context.cpp
===================================================================
--- XIOS/trunk/src/node/context.cpp	(revision 444)
+++ XIOS/trunk/src/node/context.cpp	(revision 445)
@@ -245,9 +245,9 @@
    //----------------------------------------------------------------
 
-   void CContext::solveDescInheritance(const CAttributeMap * const UNUSED(parent))
+   void CContext::solveDescInheritance(bool apply, const CAttributeMap * const UNUSED(parent))
    {
 #define DECLARE_NODE(Name_, name_)    \
    if (C##Name_##Definition::has(C##Name_##Definition::GetDefName())) \
-     C##Name_##Definition::get(C##Name_##Definition::GetDefName())->solveDescInheritance();
+     C##Name_##Definition::get(C##Name_##Definition::GetDefName())->solveDescInheritance(apply);
 #define DECLARE_NODE_PAR(Name_, name_)
 #include "node_type.conf"
@@ -268,5 +268,5 @@
    //----------------------------------------------------------------
 
-   void CContext::solveFieldRefInheritance(void)
+   void CContext::solveFieldRefInheritance(bool apply)
    {
       if (!this->hasId()) return;
@@ -279,5 +279,5 @@
       {
          CField* field = *it;
-         field->solveRefInheritance();
+         field->solveRefInheritance(apply);
       }
    }
@@ -370,9 +370,9 @@
    }
 
-   void CContext::solveAllInheritance(void)
+   void CContext::solveAllInheritance(bool apply)
    {
      // RÃ©solution des hÃ©ritages descendants (cÃ d des hÃ©ritages de groupes)
      // pour chacun des contextes.
-      solveDescInheritance();
+      solveDescInheritance(apply);
 
      // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
@@ -380,5 +380,5 @@
 
       for (unsigned int i = 0; i < allFiles.size(); i++)
-         allFiles[i]->solveFieldRefInheritance();
+         allFiles[i]->solveFieldRefInheritance(apply);
    }
 
Index: XIOS/trunk/src/node/context.hpp
===================================================================
--- XIOS/trunk/src/node/context.hpp	(revision 444)
+++ XIOS/trunk/src/node/context.hpp	(revision 445)
@@ -87,6 +87,6 @@
 
          /// Traitements ///
-         virtual void solveDescInheritance(const CAttributeMap * const parent = 0);
-         void solveFieldRefInheritance(void);
+         virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
+         void solveFieldRefInheritance(bool apply);
          void solveCalendar(void);
 
@@ -112,5 +112,5 @@
          void solveAllGridRef(void);
          void solveAllOperation(void);
-         void solveAllInheritance(void) ;
+         void solveAllInheritance(bool apply=true) ;
          void findEnabledFiles(void);
          void closeAllFile(void) ;
Index: XIOS/trunk/src/node/field.cpp
===================================================================
--- XIOS/trunk/src/node/field.cpp	(revision 444)
+++ XIOS/trunk/src/node/field.cpp	(revision 445)
@@ -327,5 +327,5 @@
    //----------------------------------------------------------------
 
-   void CField::solveRefInheritance(void)
+   void CField::solveRefInheritance(bool apply)
    {
       std::set<CField *> sset;
@@ -347,5 +347,5 @@
          }
 
-         SuperClassAttribute::setAttributes(refer_ptr);
+         SuperClassAttribute::setAttributes(refer_ptr, apply);
          sset.insert(refer_ptr);
          baseRefObject = refer_sptr;
Index: XIOS/trunk/src/node/field.hpp
===================================================================
--- XIOS/trunk/src/node/field.hpp	(revision 444)
+++ XIOS/trunk/src/node/field.hpp	(revision 445)
@@ -104,5 +104,5 @@
 
          /// Traitements ///
-         void solveRefInheritance(void);
+         void solveRefInheritance(bool apply);
          void solveGridReference(void);
          void solveOperation(void);
Index: XIOS/trunk/src/node/file.cpp
===================================================================
--- XIOS/trunk/src/node/file.cpp	(revision 444)
+++ XIOS/trunk/src/node/file.cpp	(revision 445)
@@ -358,18 +358,18 @@
    //----------------------------------------------------------------
    
-   void CFile::solveDescInheritance(const CAttributeMap * const parent)
-   {
-      SuperClassAttribute::setAttributes(parent);
-      this->getVirtualFieldGroup()->solveDescInheritance(NULL);
-   }
-
-   //----------------------------------------------------------------
-
-   void CFile::solveFieldRefInheritance(void)
+   void CFile::solveDescInheritance(bool apply, const CAttributeMap * const parent)
+   {
+      SuperClassAttribute::setAttributes(parent,apply);
+      this->getVirtualFieldGroup()->solveDescInheritance(apply, NULL);
+   }
+
+   //----------------------------------------------------------------
+
+   void CFile::solveFieldRefInheritance(bool apply)
    {
       // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence de chacun des champs contenus dans le fichier.
       std::vector<CField*> allF = this->getAllFields();
       for (unsigned int i = 0; i < allF.size(); i++)
-         allF[i]->solveRefInheritance();
+         allF[i]->solveRefInheritance(apply);
    }
 
Index: XIOS/trunk/src/node/file.hpp
===================================================================
--- XIOS/trunk/src/node/file.hpp	(revision 444)
+++ XIOS/trunk/src/node/file.hpp	(revision 445)
@@ -73,6 +73,6 @@
          
          /// Traitements ///
-         virtual void solveDescInheritance(const CAttributeMap * const parent = 0);
-         void solveFieldRefInheritance(void);
+         virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
+         void solveFieldRefInheritance(bool apply);
          void solveEFGridRef(void);
          void solveEFOperation(void);
Index: XIOS/trunk/src/object_template.hpp
===================================================================
--- XIOS/trunk/src/object_template.hpp	(revision 444)
+++ XIOS/trunk/src/object_template.hpp	(revision 445)
@@ -50,5 +50,5 @@
 
          /// Traitements ///
-         virtual void solveDescInheritance(const CAttributeMap * const parent = 0);
+         virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
 
          /// Traitement statique ///
Index: XIOS/trunk/src/object_template_impl.hpp
===================================================================
--- XIOS/trunk/src/object_template_impl.hpp	(revision 444)
+++ XIOS/trunk/src/object_template_impl.hpp	(revision 445)
@@ -139,7 +139,7 @@
 
    template <class T>
-      void CObjectTemplate<T>::solveDescInheritance(const CAttributeMap * const parent)
+      void CObjectTemplate<T>::solveDescInheritance(bool apply, const CAttributeMap * const parent)
    { 
-      SuperClassMap::setAttributes(parent); 
+      SuperClassMap::setAttributes(parent, apply); 
    }
 
