54 typedef std::vector<_Value> Container; |
54 typedef std::vector<_Value> Container; |
55 |
55 |
56 public: |
56 public: |
57 |
57 |
58 // The graph type of the map. |
58 // The graph type of the map. |
59 typedef _Graph Graph; |
59 typedef _Graph GraphType; |
60 // The item type of the map. |
60 // The item type of the map. |
61 typedef _Item Item; |
61 typedef _Item Item; |
62 // The reference map tag. |
62 // The reference map tag. |
63 typedef True ReferenceMapTag; |
63 typedef True ReferenceMapTag; |
64 |
64 |
70 // The notifier type. |
70 // The notifier type. |
71 typedef typename ItemSetTraits<_Graph, _Item>::ItemNotifier Notifier; |
71 typedef typename ItemSetTraits<_Graph, _Item>::ItemNotifier Notifier; |
72 |
72 |
73 // The map type. |
73 // The map type. |
74 typedef VectorMap Map; |
74 typedef VectorMap Map; |
75 // The base class of the map. |
|
76 typedef typename Notifier::ObserverBase Parent; |
|
77 |
75 |
78 // The reference type of the map; |
76 // The reference type of the map; |
79 typedef typename Container::reference Reference; |
77 typedef typename Container::reference Reference; |
80 // The const reference type of the map; |
78 // The const reference type of the map; |
81 typedef typename Container::const_reference ConstReference; |
79 typedef typename Container::const_reference ConstReference; |
82 |
80 |
|
81 private: |
|
82 |
|
83 // The base class of the map. |
|
84 typedef typename Notifier::ObserverBase Parent; |
|
85 |
|
86 public: |
83 |
87 |
84 // \brief Constructor to attach the new map into the notifier. |
88 // \brief Constructor to attach the new map into the notifier. |
85 // |
89 // |
86 // It constructs a map and attachs it into the notifier. |
90 // It constructs a map and attachs it into the notifier. |
87 // It adds all the items of the graph to the map. |
91 // It adds all the items of the graph to the map. |
88 VectorMap(const Graph& graph) { |
92 VectorMap(const GraphType& graph) { |
89 Parent::attach(graph.notifier(Item())); |
93 Parent::attach(graph.notifier(Item())); |
90 container.resize(Parent::notifier()->maxId() + 1); |
94 container.resize(Parent::notifier()->maxId() + 1); |
91 } |
95 } |
92 |
96 |
93 // \brief Constructor uses given value to initialize the map. |
97 // \brief Constructor uses given value to initialize the map. |
94 // |
98 // |
95 // It constructs a map uses a given value to initialize the map. |
99 // It constructs a map uses a given value to initialize the map. |
96 // It adds all the items of the graph to the map. |
100 // It adds all the items of the graph to the map. |
97 VectorMap(const Graph& graph, const Value& value) { |
101 VectorMap(const GraphType& graph, const Value& value) { |
98 Parent::attach(graph.notifier(Item())); |
102 Parent::attach(graph.notifier(Item())); |
99 container.resize(Parent::notifier()->maxId() + 1, value); |
103 container.resize(Parent::notifier()->maxId() + 1, value); |
100 } |
104 } |
101 |
105 |
102 private: |
106 private: |