]> Creatis software - creaImageIO.git/blob - src2/creaImageIOTreeDescriptor.h
26bbc5edbd7d5679d5f65f1760de9e47ba1018ac
[creaImageIO.git] / src2 / creaImageIOTreeDescriptor.h
1 #ifndef __creaImageIOTreeDescriptor_h_INCLUDED__
2 #define __creaImageIOTreeDescriptor_h_INCLUDED__
3
4 #include <creaImageIOTreeAttributeMapType.h>
5 #include <creaImageIOTreeLevelDescriptor.h>
6
7
8 namespace creaImageIO
9 {
10
11   namespace tree
12   {
13     
14     /**
15      * \ingroup Tree
16      */
17     
18         ///Descriptor of the structure of a Tree (number of levels, descriptors of each level, ...). 
19           //Any Tree has at least one level (level 0) of name "Root"
20      
21     class Descriptor
22     {
23     public:
24       /// Ctor : creates the mandatory level 0 descriptor called "Root"
25       Descriptor();
26       /// Destructor
27       ~Descriptor();
28
29       /// Loads from a xml description file
30       void LoadXML(const std::string& filename);
31       /// Creates the default descriptor
32       void CreateDefault();
33
34       /// Returns the number of levels of the tree
35       unsigned int GetNumberOfLevels() 
36       { return mLevelDescriptorList.size(); }
37
38       /// Returns the LevelDescriptor of a given level (const ref)
39       const LevelDescriptor& GetLevelDescriptor(int level) const
40       { return mLevelDescriptorList[level]; }
41
42       /// Returns the AttributeDescriptorList of a given level (const ref)
43       const LevelDescriptor::AttributeDescriptorListType& 
44       GetAttributeDescriptorList(int level) const
45       { return mLevelDescriptorList[level].GetAttributeDescriptorList(); }
46   
47       /// Adds a LevelDescriptor at the end of the list
48       void Add(const LevelDescriptor&);
49       
50       /// Adds an AttributeDescriptor to level l
51       void Add(const AttributeDescriptor&, int l);
52       
53       
54       /// Builds the key to value map of all the attributes of the tree
55         void BuildAttributeMap( AttributeMapType& ) const;
56
57       /// The type of LevelDescriptor container
58         typedef std::vector<LevelDescriptor> LevelDescriptorListType;
59  
60       /// Returns the list of tree levels (const)
61         const LevelDescriptorListType& GetLevelDescriptorList() const { return mLevelDescriptorList; }
62
63       /// Clears the Descriptor
64       void Clear();
65
66     private:
67       LevelDescriptorListType mLevelDescriptorList;
68       /// Creates the mandatory level 0 descriptor called "Root"
69       /// (assumes the list is empty)
70       void CreateLevel0Descriptor();
71   
72     };
73     // EO class Descriptor
74     //=====================================================================
75   } // EO namespace tree
76
77 } // EO namespace creaImageIO
78
79 // EOF
80 #endif