14 * express or implied, and with no claim as to its suitability for any |
14 * express or implied, and with no claim as to its suitability for any |
15 * purpose. |
15 * purpose. |
16 * |
16 * |
17 */ |
17 */ |
18 |
18 |
19 #ifndef LEMON_DEFAULT_MAP_H |
19 #ifndef LEMON_BITS_DEFAULT_MAP_H |
20 #define LEMON_DEFAULT_MAP_H |
20 #define LEMON_BITS_DEFAULT_MAP_H |
21 |
21 |
22 |
22 |
23 #include <lemon/bits/array_map.h> |
23 #include <lemon/bits/array_map.h> |
24 #include <lemon/bits/vector_map.h> |
24 #include <lemon/bits/vector_map.h> |
25 #include <lemon/bits/static_map.h> |
|
26 |
25 |
27 ///\ingroup graphbits |
26 ///\ingroup graphbits |
28 ///\file |
27 ///\file |
29 ///\brief Graph maps that construct and destruct |
28 ///\brief Graph maps that construct and destruct their elements dynamically. |
30 ///their elements dynamically. |
|
31 |
29 |
32 namespace lemon { |
30 namespace lemon { |
33 |
31 |
34 |
32 |
35 #ifndef _GLIBCXX_DEBUG |
33 #ifndef _GLIBCXX_DEBUG |
149 struct DefaultMapSelector<_Graph, _Item, _Ptr*> { |
147 struct DefaultMapSelector<_Graph, _Item, _Ptr*> { |
150 typedef VectorMap<_Graph, _Item, _Ptr*> Map; |
148 typedef VectorMap<_Graph, _Item, _Ptr*> Map; |
151 }; |
149 }; |
152 |
150 |
153 /// \e |
151 /// \e |
154 template < |
152 template <typename _Graph, typename _Item, typename _Value> |
155 typename _Graph, |
|
156 typename _Item, |
|
157 typename _Value> |
|
158 class DefaultMap |
153 class DefaultMap |
159 : public DefaultMapSelector<_Graph, _Item, _Value>::Map { |
154 : public DefaultMapSelector<_Graph, _Item, _Value>::Map { |
160 public: |
155 public: |
161 typedef typename DefaultMapSelector<_Graph, _Item, _Value>::Map Parent; |
156 typedef typename DefaultMapSelector<_Graph, _Item, _Value>::Map Parent; |
162 typedef DefaultMap<_Graph, _Item, _Value> Map; |
157 typedef DefaultMap<_Graph, _Item, _Value> Map; |
163 |
158 |
164 typedef typename Parent::Graph Graph; |
159 typedef typename Parent::Graph Graph; |
165 typedef typename Parent::Value Value; |
160 typedef typename Parent::Value Value; |
166 |
161 |
167 DefaultMap(const Graph& _g) : Parent(_g) {} |
162 DefaultMap(const Graph& graph) : Parent(graph) {} |
168 DefaultMap(const Graph& _g, const Value& _v) : Parent(_g, _v) {} |
163 DefaultMap(const Graph& graph, const Value& value) |
|
164 : Parent(graph, value) {} |
169 |
165 |
170 }; |
166 }; |
171 |
167 |
172 } |
168 } |
173 |
169 |