X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOTreeNode.cpp;h=c78973b55b10fa50610a1d5de598bf7d5a817d2b;hb=da80530068246081505e9649523d10e8da8e6acd;hp=0b470fd702a7e9f430f6b29589019bdaffa26fb1;hpb=8258312326951266f02664ad2b042162e376e019;p=creaImageIO.git diff --git a/src2/creaImageIOTreeNode.cpp b/src2/creaImageIOTreeNode.cpp index 0b470fd..c78973b 100644 --- a/src2/creaImageIOTreeNode.cpp +++ b/src2/creaImageIOTreeNode.cpp @@ -1,9 +1,11 @@ #include #include #include -#include #include - +#include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { namespace tree @@ -12,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 "<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); } } @@ -35,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 "<second; } - GimmickMessage(5,"Setting attribute '"<GetName()<<"' = '" + GimmickDebugMessage(6,"Setting attribute '"<GetName()<<"' = '" <GetKey(), v ); } @@ -70,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(); } //============================================================= @@ -107,10 +106,31 @@ namespace creaImageIO { return GetTree()->GetLevelDescriptor(GetLevel()); } + + //============================================================= + + //============================================================= + /// Returns the attribute descriptor of the passed parameter + const AttributeDescriptor& Node::GetAttributeDescriptor(const std::string& k)const + { + LevelDescriptor::AttributeDescriptorListType::const_iterator a; + for (a = GetTree()->GetAttributeDescriptorList(GetLevel()).begin(); + a!= GetTree()->GetAttributeDescriptorList(GetLevel()).end(); + ++a) + { + + if(a->GetKey()==k) + { + return *a; + } + + } + return *a; + } //============================================================= //============================================================= - void Node::RemoveChildrenFromList(Node* node) + int Node::RemoveChildrenFromList(Node* node) { ChildrenListType::iterator i = find(GetChildrenList().begin(), GetChildrenList().end(), @@ -119,6 +139,7 @@ namespace creaImageIO { GetChildrenList().erase(i); } + return GetChildrenList().size(); } //============================================================= @@ -157,7 +178,7 @@ namespace creaImageIO //============================================================= bool Node::Matches( const AttributeMapType& m ) const { - GimmickMessage(2,"'"<& id = GetLevelDescriptor().GetIdentifierList(); std::vector::const_iterator i; @@ -165,10 +186,10 @@ namespace creaImageIO { if (mAttributeMap.find(*i)->second != m.find(*i)->second ) { - GimmickMessage(2,"IDENTIFIER '"<<*i<<"' values do not match"<Print(); + (*j)->Print(); } } //============================================================= @@ -199,7 +220,7 @@ namespace creaImageIO std::vector::const_iterator i; for (i = label.begin(); i != label.end(); ) { - GimmickMessage(3,"LABEL '"<<*i<<"'"<