equal
deleted
inserted
replaced
|
1 #ifndef PAC_MAP_FACTORY_H |
|
2 #define PAC_MAP_FACTORY_H |
|
3 |
|
4 #include "map_base.h" |
|
5 |
|
6 /** |
|
7 Converter class to use the standard template |
|
8 libary's pair associative containers as a graph map. |
|
9 */ |
|
10 |
|
11 namespace hugo { |
|
12 |
|
13 template <typename G, typename K, typename KIt, template <typename, typename> class PAC> |
|
14 class PacMapFactory { |
|
15 |
|
16 |
|
17 public: |
|
18 |
|
19 typedef G Graph; |
|
20 typedef K Key; |
|
21 typedef KIt KeyIt; |
|
22 |
|
23 template <typename V> |
|
24 class Map : public MapBase<G, K, KIt> { |
|
25 public: |
|
26 typedef V Value; |
|
27 |
|
28 Map() {} |
|
29 |
|
30 Map(Graph& g, MapRegistry<G, K, KIt>& r) |
|
31 : MapBase<G, K, KIt>(g, r) { |
|
32 init(); |
|
33 } |
|
34 |
|
35 virtual ~Map() { |
|
36 destroy(); |
|
37 } |
|
38 |
|
39 |
|
40 V& operator[](const K& key) { |
|
41 return container.find(key)->second; |
|
42 } |
|
43 |
|
44 const V& operator[](const K& key) const { |
|
45 return container.find(key)->second; |
|
46 } |
|
47 |
|
48 const V& get(const K& key) const { |
|
49 return container.find(key)->second; |
|
50 } |
|
51 |
|
52 void set(const K& key, const V& value) { |
|
53 container.find(key)->second = value; |
|
54 } |
|
55 |
|
56 void add(const K& key) { |
|
57 container.insert(key); |
|
58 } |
|
59 |
|
60 void erase(const K& key) { |
|
61 container.erase(key); |
|
62 } |
|
63 |
|
64 private: |
|
65 typedef PAC<K, V> Container; |
|
66 |
|
67 Container container; |
|
68 }; |
|
69 |
|
70 }; |
|
71 } |
|
72 |
|
73 #endif |