diff -r 999eb3cd7b49 -r 8ff3b3e05478 src/work/deba/edge_map_base.h --- a/src/work/deba/edge_map_base.h Fri Apr 16 08:26:00 2004 +0000 +++ b/src/work/deba/edge_map_base.h Fri Apr 16 12:13:07 2004 +0000 @@ -5,20 +5,37 @@ class EdgeMapBase { public: typedef G Graph; + typedef K KeyType; + EdgeMapBase() : graph(0) {} + EdgeMapBase(Graph& g) : graph(&g) { + graph->edge_maps.add(*this); + } - MapBase() : graph(0) {} - MapBase(Graph& g) : graph(&g) {graph.edge_maps.add(*this);} - - virtual ~MapBase() {graph.edge_maps.erase(*this);} - + virtual ~EdgeMapBase() { + if (graph) { + graph.edge_maps.erase(*this); + } + } + protected: Graph* graph; int graph_index; + void init() { + for (Graph::EdgeIt it(g); g.valid(it); g.next(it)) { + add(it); + } + } + + void destroy() { + for (Graph::EdgeIt it(g); g.valid(it); g.next(it)) { + erase(it); + } + } virtual void add(const KeyType&) = 0; virtual void erase(const KeyType&) = 0;