]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOTree.h
move directory
[creaImageIO.git] / src / creaImageIOTree.h
diff --git a/src/creaImageIOTree.h b/src/creaImageIOTree.h
new file mode 100644 (file)
index 0000000..de5b94a
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef __creaImageIOTree_h_INCLUDED__
+#define __creaImageIOTree_h_INCLUDED__
+
+#include <creaImageIOTreeNode.h>
+
+namespace creaImageIO
+{
+
+  namespace tree
+  {
+    /**
+     * \ingroup Tree
+     */
+    //=====================================================================
+    /// Abstract class to store user data on a Tree
+    struct TreeData
+    { 
+      TreeData() {}
+      virtual ~TreeData() {}
+    };
+    //=====================================================================
+    
+    //=====================================================================
+    /// An attributed Tree structure
+    /** \ingroup Tree
+     */
+    class Tree : public Node
+    {
+    public:
+      /// Ctor
+      Tree();
+      /// Virtual destructor
+      virtual ~Tree();
+      
+      /// Returns the descriptor of the tree
+    
+      /// Returns the tree to which the node belongs
+      virtual Tree* GetTree() { return this; }
+      /// Returns the tree to which the node belongs
+      virtual const Tree* GetTree() const { return this; }
+      /// Returns the level of the node in the tree
+      virtual int GetLevel() const { return 0; }
+      
+      /// Returns the Descriptor of the tree (const)
+      const Descriptor& GetDescriptor() const { return mDescriptor; }
+      /// Returns the descriptor of the tree 
+      Descriptor& GetDescriptor() { return mDescriptor; }
+
+     /// Returns the number of levels of the tree
+      unsigned int GetNumberOfLevels() 
+      { return GetDescriptor().GetNumberOfLevels(); }
+
+      /// Returns the LevelDescriptor of a given level (const ref)
+      const LevelDescriptor& GetLevelDescriptor(int level) const
+      { return GetDescriptor().GetLevelDescriptor(level); }
+
+      /// Returns the AttributeDescriptorList of a given level (const ref)
+      const LevelDescriptor::AttributeDescriptorListType& 
+      GetAttributeDescriptorList(int level) const
+      { return GetDescriptor().GetAttributeDescriptorList(level); }
+  
+      virtual void Print() const;
+
+    private:
+      Descriptor mDescriptor;
+
+    };
+    // EO class Tree
+    //=====================================================================
+
+  } // EO namespace tree
+  
+} // EO namespace creaImageIO
+
+// EOF
+#endif