equal
deleted
inserted
replaced
6 public: |
6 public: |
7 typedef G Graph; |
7 typedef G Graph; |
8 |
8 |
9 typedef K KeyType; |
9 typedef K KeyType; |
10 |
10 |
|
11 NodeMapBase() : graph(0) {} |
|
12 NodeMapBase(Graph& g) : graph(&g) { |
|
13 graph->node_maps.add(*this); |
|
14 } |
11 |
15 |
12 MapBase() : graph(0) {} |
16 virtual ~NodeMapBase() { |
13 MapBase(Graph& g) : graph(&g) {graph.node_maps.add(*this);} |
17 if (graph) { |
14 |
18 graph.node_maps.erase(*this); |
15 virtual ~MapBase() {graph.node_maps.erase(*this);} |
19 } |
16 |
20 } |
|
21 |
17 protected: |
22 protected: |
18 |
23 |
19 Graph* graph; |
24 Graph* graph; |
20 |
25 |
21 int graph_index; |
26 int graph_index; |
22 |
27 |
|
28 void init() { |
|
29 for (Graph::NodeIt it(g); g.valid(it); g.next(it)) { |
|
30 add(it); |
|
31 } |
|
32 } |
|
33 |
|
34 void destroy() { |
|
35 for (Graph::NodeIt it(g); g.valid(it); g.next(it)) { |
|
36 erase(it); |
|
37 } |
|
38 } |
23 |
39 |
24 virtual void add(const KeyType&) = 0; |
40 virtual void add(const KeyType&) = 0; |
25 virtual void erase(const KeyType&) = 0; |
41 virtual void erase(const KeyType&) = 0; |
26 |
42 |
27 friend class Graph; |
43 friend class Graph; |