]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOTreeNode.h
No newline at end of file
[creaImageIO.git] / src2 / creaImageIOTreeNode.h
index 07b46cfb20efe18230ecf071bd23697ed205df90..fca904ca53a216609933bf7459d121fed0cce84a 100644 (file)
@@ -11,13 +11,16 @@ namespace creaImageIO
 
   namespace tree
   {
+         /**
+       * \ingroup Tree
+       */
     //=====================================================================
     /// Forward declaration of Tree
     class Tree;
     //=====================================================================  
     
     //=====================================================================
-    /// Abstract class to store user data on a tree node
+    /// Abstract class to store user data on a Tree node
     struct NodeData
     { 
       NodeData() {}
@@ -27,15 +30,22 @@ namespace creaImageIO
 
 
     //=====================================================================
-    /// Node of an attributed tree structure
+    /// Node of an attributed Tree structure
     class Node
     {
     public:
+      typedef std::map<std::string,std::string> AttributeMapType;
+
+
       /// Ctor with parent
       Node(Node* parent);
+      /// Ctor with parent and attributes map 
+      Node(Node* parent, const AttributeMapType& );
       /// Virtual destructor
       virtual ~Node();
 
+      /// Initializes the attribute map i.e. creates the entries
+      void InitializeAttributeMap();
  
       /// Returns the level descriptor of the node
       const LevelDescriptor& GetLevelDescriptor() const;
@@ -71,9 +81,8 @@ namespace creaImageIO
       const ChildrenListType& GetChildrenList() const { return mChildren; }
 
       /// Remove the given children from the children list
-      void RemoveChildrenFromList(Node*);
+      int RemoveChildrenFromList(Node*);
 
-      typedef std::map<std::string,std::string> AttributeMapType;
 
       AttributeMapType& GetAttributeMap() { return mAttributeMap; }
       const AttributeMapType& GetAttributeMap() const { return mAttributeMap; }
@@ -85,12 +94,13 @@ namespace creaImageIO
       void UnsafeSetAttribute(const std::string& k, const std::string& v)
       { mAttributeMap[k] = v; }
     
-      const AttributeDescriptor& GetAttributeDescriptor(const std::string& k)
-       const;
+      const AttributeDescriptor& GetAttributeDescriptor(const std::string& k)const;
       //      { return GetTypeDescription().GetFieldDescription(k); }
 
 
+      /// Returns true iff the KEY attributes of the node match those of the map provided
+      bool Matches( const AttributeMapType& ) const;
+
       /// Returns the node data casted into the type T
       template<class T> T GetData() const 
       { if (mData!=0) return dynamic_cast<T>(mData); return 0; }
@@ -101,9 +111,9 @@ namespace creaImageIO
       /// Sorts the children of the node 
       void SortChildren(const LexicographicalComparator&);
 
-      /*
-     virtual void Print() const;
+      virtual void Print() const;
       std::string GetLabel() const;
+      /*
        int ImageGetRows() const;
        int ImageGetColumns() const;
        int ImageGetFrames() const;