# HG changeset patch # User deba # Date 1082117587 0 # Node ID 8ff3b3e0547843160a181e59e146ae0ad95045ba # Parent 999eb3cd7b49ac52968bae16c5a56ea79be8c87d 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; diff -r 999eb3cd7b49 -r 8ff3b3e05478 src/work/deba/node_map_base.h --- a/src/work/deba/node_map_base.h Fri Apr 16 08:26:00 2004 +0000 +++ b/src/work/deba/node_map_base.h Fri Apr 16 12:13:07 2004 +0000 @@ -8,18 +8,34 @@ typedef K KeyType; + NodeMapBase() : graph(0) {} + NodeMapBase(Graph& g) : graph(&g) { + graph->node_maps.add(*this); + } - MapBase() : graph(0) {} - MapBase(Graph& g) : graph(&g) {graph.node_maps.add(*this);} - - virtual ~MapBase() {graph.node_maps.erase(*this);} - + virtual ~NodeMapBase() { + if (graph) { + graph.node_maps.erase(*this); + } + } + protected: Graph* graph; int graph_index; + void init() { + for (Graph::NodeIt it(g); g.valid(it); g.next(it)) { + add(it); + } + } + + void destroy() { + for (Graph::NodeIt it(g); g.valid(it); g.next(it)) { + erase(it); + } + } virtual void add(const KeyType&) = 0; virtual void erase(const KeyType&) = 0;