]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOTreeNode.cpp
_T
[creaImageIO.git] / src2 / creaImageIOTreeNode.cpp
index 09c89dcadb223442b82b474976708c9b4569c1bd..c78973b55b10fa50610a1d5de598bf7d5a817d2b 100644 (file)
@@ -2,7 +2,10 @@
 #include <creaImageIOTree.h>
 #include <creaImageIOSystem.h>
 #include <algorithm>
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
 namespace creaImageIO
 {
   namespace tree
@@ -11,21 +14,21 @@ namespace creaImageIO
     //=============================================================
     /// Ctor with parent
     Node::Node(Node* parent)
-      : mParent(parent),
-       mData(0),
+      : mParent(parent),//mData(0),
        mChildrenLoaded(false)
     {
+       mData.reset();
       if (parent) 
        {
-         GimmickMessage(5,"Default Node constructor (level "<<GetLevel()<<")"
+         GimmickDebugMessage(6,"Default Node constructor (level "<<GetLevel()<<")"
                         << std::endl);
          // Insert into parent's children list
-         parent->GetChildrenList().push_back(this);
          InitializeAttributeMap();
+        parent->GetChildrenList().push_back(this);
        }
       else
        {
-         GimmickMessage(5,"Default Node constructor without parent"    
+         GimmickDebugMessage(6,"Default Node constructor without parent"       
                         << std::endl);
        }
     }
@@ -34,12 +37,13 @@ namespace creaImageIO
     //=============================================================
     /// Ctor with parent and attributes map 
     Node::Node(Node* parent, const AttributeMapType& attr)
-     : mParent(parent),
-       mData(0),
+     : mParent(parent),//mData(0),
        mChildrenLoaded(false)
     {
-      GimmickMessage(5,"Node constructor (level "<<GetLevel()<<")"
+       mData.reset();
+      GimmickDebugMessage(6,"Node constructor (level "<<GetLevel()<<")"
                     << std::endl);
+
      if (parent) 
        {
          // Insert into parent's children list
@@ -56,7 +60,7 @@ namespace creaImageIO
                {
                  v = i->second;
                }
-             GimmickMessage(5,"Setting attribute '"<<a->GetName()<<"' = '"
+             GimmickDebugMessage(6,"Setting attribute '"<<a->GetName()<<"' = '"
                             <<v<<"'"<<std::endl);
              UnsafeSetAttribute( a->GetKey(), v );
            }
@@ -69,18 +73,14 @@ namespace creaImageIO
     //=============================================================
     Node::~Node()
     {
-      GimmickMessage(5,"Node destructor"
+      GimmickDebugMessage(6,"Node destructor"
                     << std::endl);
       ChildrenListType::iterator i;
       for (i=GetChildrenList().begin(); i!=GetChildrenList().end(); i++)
        {
          delete *i;
        }
-      if (mData) 
-       {
-         delete mData;
-         mData = 0;
-       }
+       mData.reset();
     }
     //=============================================================
 
@@ -118,10 +118,7 @@ namespace creaImageIO
           a!= GetTree()->GetAttributeDescriptorList(GetLevel()).end();
           ++a)
                {
-                       GimmickMessage(1,"Hello my type is"<<a->GetType()<<std::endl);
-                       GimmickMessage(1,"Hello my group is"<<a->GetGroup()<<std::endl);
-                       GimmickMessage(1,"Hello my element is"<<a->GetElement()<<std::endl);
-                       
+               
                        if(a->GetKey()==k)
                        {
                                return *a;
@@ -133,7 +130,7 @@ namespace creaImageIO
     //=============================================================
 
     //=============================================================
-    void Node::RemoveChildrenFromList(Node* node)
+    int Node::RemoveChildrenFromList(Node* node)
     {
       ChildrenListType::iterator i = find(GetChildrenList().begin(),
                                          GetChildrenList().end(),
@@ -142,6 +139,7 @@ namespace creaImageIO
        {
          GetChildrenList().erase(i);
        }
+       return GetChildrenList().size();
     }
     //=============================================================
 
@@ -180,7 +178,7 @@ namespace creaImageIO
     //=============================================================
     bool Node::Matches(  const AttributeMapType& m ) const
     {
-      GimmickMessage(2,"'"<<GetLabel()<<"' matching..."<<std::endl);
+      GimmickDebugMessage(2,"'"<<GetLabel()<<"' matching..."<<std::endl);
       const std::vector<std::string>& id 
        = GetLevelDescriptor().GetIdentifierList();
       std::vector<std::string>::const_iterator i;
@@ -188,10 +186,10 @@ namespace creaImageIO
        {
          if (mAttributeMap.find(*i)->second != m.find(*i)->second ) 
            {
-             GimmickMessage(2,"IDENTIFIER '"<<*i<<"' values do not match"<<std::endl);
+             GimmickDebugMessage(2,"IDENTIFIER '"<<*i<<"' values do not match"<<std::endl);
              return false;
            }
-         GimmickMessage(2,"IDENTIFIER '"<<*i<<"' values match"<<std::endl);
+         GimmickDebugMessage(2,"IDENTIFIER '"<<*i<<"' values match"<<std::endl);
        }
       return true;
     }
@@ -222,7 +220,7 @@ namespace creaImageIO
       std::vector<std::string>::const_iterator i;
       for (i = label.begin(); i != label.end(); )
        {
-         GimmickMessage(3,"LABEL '"<<*i<<"'"<<std::endl);
+         GimmickDebugMessage(9,"LABEL '"<<*i<<"'"<<std::endl);
          AttributeMapType::const_iterator j = mAttributeMap.find(*i);
          if (j != mAttributeMap.end())
            {