Index: XIOS/trunk/src/declare_ref_func.hpp
===================================================================
--- XIOS/trunk/src/declare_ref_func.hpp	(revision 770)
+++ XIOS/trunk/src/declare_ref_func.hpp	(revision 771)
@@ -14,15 +14,9 @@
 #define DECLARE_REF_FUNC(type, name_)                       \
 public:                                                     \
+  void solveRefInheritance(bool apply = true);              \
+  void removeRefInheritance();                              \
   bool hasDirect##type##Reference(void) const;              \
   C##type* getDirect##type##Reference(void) const;          \
-  C##type* getBase##type##Reference(void) const;            \
-  void removeRefInheritance();                              \
-  const StdString& getBase##type##Id(void) const;           \
-  void solveRefInheritance(bool apply = true);              \
-  void solveBaseReference(void);                            \
   const StdString& get##type##OutputName(void) const;       \
-                                                            \
-private:                                                    \
-  C##type* baseRefObject;                                   \
 
 // Definitions
@@ -57,22 +51,7 @@
 }                                                                      \
                                                                        \
-void C##type::solveBaseReference(void)                                 \
+bool C##type::hasDirect##type##Reference(void) const                   \
 {                                                                      \
-  std::set<C##type*> refObjects;                                       \
-  baseRefObject = C##type::get(this);                                  \
-                                                                       \
-  while (baseRefObject->hasDirect##type##Reference())                  \
-  {                                                                    \
-    refObjects.insert(baseRefObject);                                  \
-                                                                       \
-    baseRefObject = baseRefObject->getDirect##type##Reference();       \
-                                                                       \
-    if (refObjects.end() != refObjects.find(baseRefObject))            \
-    {                                                                  \
-      ERROR("void C" #type "::solveBaseReference(void)",               \
-            << "Circular dependency stopped for " #name_ " object "    \
-            << "with id = \"" << baseRefObject->getId() << "\".");     \
-    }                                                                  \
-  }                                                                    \
+  return !this->name_##_ref.isEmpty();                                 \
 }                                                                      \
                                                                        \
@@ -80,5 +59,7 @@
 {                                                                      \
   if (this->name_##_ref.isEmpty())                                     \
-    return this->getBase##type##Reference();                           \
+    ERROR("C" #type "* C" #type "::getDirect" #type "Reference(void)", \
+          << "The " #name_ " with id = '" << getId() << "'"            \
+          << " has no " #name_ "_ref.");                               \
                                                                        \
   if (!C##type::has(this->name_##_ref))                                \
@@ -88,18 +69,4 @@
                                                                        \
   return C##type::get(this->name_##_ref);                              \
-}                                                                      \
-                                                                       \
-C##type* C##type::getBase##type##Reference(void) const                 \
-{                                                                      \
-  return baseRefObject;                                                \
-}                                                                      \
-                                                                       \
-const StdString& C##type::getBase##type##Id(void) const                \
-{                                                                      \
-  return this->getBase##type##Reference()->getId();                    \
-}                                                                      \
-bool C##type::hasDirect##type##Reference(void) const                   \
-{                                                                      \
-  return !this->name_##_ref.isEmpty();                                 \
 }                                                                      \
                                                                        \
Index: XIOS/trunk/src/node/axis.cpp
===================================================================
--- XIOS/trunk/src/node/axis.cpp	(revision 770)
+++ XIOS/trunk/src/node/axis.cpp	(revision 771)
@@ -23,5 +23,5 @@
    CAxis::CAxis(void)
       : CObjectTemplate<CAxis>()
-      , CAxisAttributes(), isChecked(false), relFiles(), baseRefObject(), areClientAttributesChecked_(false)
+      , CAxisAttributes(), isChecked(false), relFiles(), areClientAttributesChecked_(false)
       , isDistributed_(false), hasBounds_(false), isCompressible_(false)
       , numberWrittenIndexes_(0), totalNumberWrittenIndexes_(0), offsetWrittenIndexes_(0)
@@ -32,5 +32,5 @@
    CAxis::CAxis(const StdString & id)
       : CObjectTemplate<CAxis>(id)
-      , CAxisAttributes(), isChecked(false), relFiles(), baseRefObject(), areClientAttributesChecked_(false)
+      , CAxisAttributes(), isChecked(false), relFiles(), areClientAttributesChecked_(false)
       , isDistributed_(false), hasBounds_(false), isCompressible_(false)
       , numberWrittenIndexes_(0), totalNumberWrittenIndexes_(0), offsetWrittenIndexes_(0)
Index: XIOS/trunk/src/node/field.cpp
===================================================================
--- XIOS/trunk/src/node/field.cpp	(revision 770)
+++ XIOS/trunk/src/node/field.cpp	(revision 771)
@@ -30,5 +30,4 @@
    CField::CField(void)
       : CObjectTemplate<CField>(), CFieldAttributes()
-      , baseRefObject()
       , grid(), file()
       , written(false)
@@ -42,5 +41,4 @@
    CField::CField(const StdString& id)
       : CObjectTemplate<CField>(id), CFieldAttributes()
-      , baseRefObject()
       , grid(), file()
       , written(false)
@@ -504,5 +502,4 @@
         {
           solveRefInheritance(true);
-          solveBaseReference();
           if (hasDirectFieldReference()) getDirectFieldReference()->solveAllReferenceEnabledField(false);
         }
Index: XIOS/trunk/src/node/file.cpp
===================================================================
--- XIOS/trunk/src/node/file.cpp	(revision 770)
+++ XIOS/trunk/src/node/file.cpp	(revision 771)
@@ -161,6 +161,4 @@
          // Le champ est finalement actif, on y ajoute la rÃ©fÃ©rence au champ de base.
          (*it)->setRelFile(CFile::get(this));
-//         (*it)->baseRefObject->refObject.push_back(*it);
-         // A faire, ajouter les references intermediaires...
       }
       enabledFields = newEnabledFields;
Index: XIOS/trunk/src/node/grid.cpp
===================================================================
--- XIOS/trunk/src/node/grid.cpp	(revision 770)
+++ XIOS/trunk/src/node/grid.cpp	(revision 771)
@@ -1221,5 +1221,4 @@
       {
         pDom->solveRefInheritance(apply);
-        pDom->solveBaseReference();
         pDom->solveSrcInheritance();
         pDom->solveInheritanceTransformation();
@@ -1235,5 +1234,4 @@
       {
         pAxis->solveRefInheritance(apply);
-        pAxis->solveBaseReference();
         pAxis->solveInheritanceTransformation();
       }
