--- /dev/null
+#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