1.1 --- a/src/work/deba/edge_map_base.h Fri Apr 16 08:26:00 2004 +0000
1.2 +++ b/src/work/deba/edge_map_base.h Fri Apr 16 12:13:07 2004 +0000
1.3 @@ -5,20 +5,37 @@
1.4 class EdgeMapBase {
1.5 public:
1.6 typedef G Graph;
1.7 +
1.8 typedef K KeyType;
1.9
1.10 + EdgeMapBase() : graph(0) {}
1.11 + EdgeMapBase(Graph& g) : graph(&g) {
1.12 + graph->edge_maps.add(*this);
1.13 + }
1.14
1.15 - MapBase() : graph(0) {}
1.16 - MapBase(Graph& g) : graph(&g) {graph.edge_maps.add(*this);}
1.17 -
1.18 - virtual ~MapBase() {graph.edge_maps.erase(*this);}
1.19 -
1.20 + virtual ~EdgeMapBase() {
1.21 + if (graph) {
1.22 + graph.edge_maps.erase(*this);
1.23 + }
1.24 + }
1.25 +
1.26 protected:
1.27
1.28 Graph* graph;
1.29
1.30 int graph_index;
1.31
1.32 + void init() {
1.33 + for (Graph::EdgeIt it(g); g.valid(it); g.next(it)) {
1.34 + add(it);
1.35 + }
1.36 + }
1.37 +
1.38 + void destroy() {
1.39 + for (Graph::EdgeIt it(g); g.valid(it); g.next(it)) {
1.40 + erase(it);
1.41 + }
1.42 + }
1.43
1.44 virtual void add(const KeyType&) = 0;
1.45 virtual void erase(const KeyType&) = 0;